Digital Research
This commit is contained in:
2020-11-06 18:50:37 +01:00
parent 621ed8ccaf
commit 31738079c4
8481 changed files with 1888323 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
Here is the source for the BDOS of MP/M v1.1. This is disassembled code, but is commented pretty well.

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
mac b:$1 $$+s

View File

@@ -0,0 +1 @@
mac b:$1 $$pzsz

Binary file not shown.

View File

@@ -0,0 +1 @@
isdd

View File

@@ -0,0 +1 @@
mac b:as0com $$+s

View File

@@ -0,0 +1 @@
isdd

View File

@@ -0,0 +1 @@
era b:*.spr

View File

@@ -0,0 +1 @@
era b:*.lst

Binary file not shown.

View File

@@ -0,0 +1 @@
isdd

Binary file not shown.

View File

@@ -0,0 +1 @@
mac b:ddt1asm $$+s

View File

@@ -0,0 +1 @@
isdd

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
era b:*.lst

Binary file not shown.

View File

@@ -0,0 +1 @@
isdd

Binary file not shown.

View File

@@ -0,0 +1 @@
pip lst:=common.lit[p]

Binary file not shown.

View File

@@ -0,0 +1 @@
mac b:$1 $$pp+s

View File

@@ -0,0 +1 @@
mac b:$1 $$pzsz

View File

@@ -0,0 +1 @@
mac b:$1 $$pzsz

View File

@@ -0,0 +1 @@
isdd

View File

@@ -0,0 +1 @@
isdd

Binary file not shown.

View File

@@ -0,0 +1 @@
era b:*.lst

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
isdd

View File

@@ -0,0 +1 @@
isdd

View File

@@ -0,0 +1 @@
isdd

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
mac b:xios $$pp+s

View File

@@ -0,0 +1 @@
era b:*.lst

View File

@@ -0,0 +1 @@
era b:*.lst

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,31 @@
mac b:$1 $$+s
pip lst:=b:$1.prn[lt8]
era b:$1.prn
era b:$1.hx0
ren b:$1.hx0=b:$1.hex
mac b:$1 $$+rpzsz
pip b:$1.hex=b:$1.hx0,b:$1.hex
genmod b:$1.hex b:$1.spr
era b:*.hex
era b:*.hx0
mac b:$1 $$+s
pip lst:=b:$1.prn[lt8]
era b:$1.prn
era b:$1.hx0
ren b:$1.hx0=b:$1.hex
mac b:$1 $$+rpzsz
pip b:$1.hex=b:$1.hx0,b:$1.hex
genmod b:$1.hex b:$1.spr
era b:*.hex
era b:*.hx0
mac b:$1 $$+s
pip lst:=b:$1.prn[lt8]
era b:$1.prn
era b:$1.hx0
ren b:$1.hx0=b:$1.hex
mac b:$1 $$+rpzsz
pip b:$1.hex=b:$1.hx0,b:$1.hex
genmod b:$1.hex b:$1.spr
era b:*.hex
era b:*.hx0


View File

@@ -0,0 +1,86 @@
$nolist
/*
Bdos Externals
*/
mon1:
procedure (func,info) external;
declare func byte;
declare info address;
end mon1;
mon2:
procedure (func,info) byte external;
declare func byte;
declare info address;
end mon2;
nfxdos:
procedure (func,info) external;
declare func byte;
declare info address;
end nfxdos;
open:
procedure (fcb$adr) byte external;
declare fcb$adr address;
end open;
close:
procedure (fcb$adr) external;
declare fcb$adr address;
end close;
readbf:
procedure (fcb$adr) byte external;
declare fcb$adr address;
end readbf;
init:
procedure external;
end init;
set$dma:
procedure (dma$adr) external;
declare dma$adr address;
end set$dma;
lo:
procedure (char) external;
declare char byte;
end lo;
co:
procedure (char) external;
declare char byte;
end co;
ci:
procedure byte external;
end ci;
rawci:
procedure byte external;
end rawci;
rawlst:
procedure (string$adr) external;
declare string$adr address;
end rawlst;
print$b:
procedure (bufferadr) external;
declare bufferadr address;
end print$b;
read$bu:
procedure (bufferadr) external;
declare bufferadr address;
end read$bu;
crlf:
procedure external;
end crlf;
$list


View File

@@ -0,0 +1,43 @@
$nolist
/*
Bdosi Externals
*/
xbdos:
procedure (func,info) address external;
declare func byte;
declare info address;
end xbdos;
endp:
procedure external;
end endp;
xios$pl:
procedure (device) byte external;
declare device byte;
end xios$pl;
xios$ms:
procedure (memsegadr) external;
declare memsegadr address;
end xios$ms;
str$clk:
procedure external;
end str$clk;
stp$clk:
procedure external;
end stp$clk;
maxcns:
procedure byte external;
end maxcns;
syinit:
procedure external;
end syinit;
$list


View File

@@ -0,0 +1,30 @@
$nolist
/*
Common Literals
*/
declare true literally '0FFFFH';
declare false literally '0';
declare forever literally 'while true';
declare boolean literally 'byte';
declare enter$region literally
'disable';
exitr:
procedure external;
end exitr;
declare exit$region literally
'call exitr';
declare restarts literally
'0C7C7H,0C7C7H,0C7C7H,0C7C7H,
0C7C7H,0C7C7H,0C7C7H,0C7C7H,
0C7C7H,0C7C7H,0C7C7H,0C7C7H,
0C7C7H,0C7C7H,0C7C7H,0C7C7H,
0C7C7H,0C7C7H,0C7C7H,0C7C7H,
0C7C7H,0C7C7H,0C7C7H';
$list


Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,9 @@
/*
Copyright (C) 1979
Digital Research
P.O. Box 579
Pacific Grove, CA 93950
*/


View File

@@ -0,0 +1,9 @@
/*
Copyright (C) 1979, 1980
Digital Research
P.O. Box 579
Pacific Grove, CA 93950
*/


Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,55 @@
$nolist
/*
Data Page Externals
*/
declare datapg (1) byte external;
declare tod structure (
day address,
hr byte,
min byte,
sec byte ) external;
declare rlr address external;
declare dlr address external;
declare drl address external;
declare plr address external;
declare slr address external;
declare qlr address external;
declare thrdrt address external;
declare nmb$cns byte external;
declare console$attached (1) address external;
declare console$queue (1) address external;
declare sys$flag (1) address external;
declare sysfla (1) address external;
declare nmb$segs byte external;
declare mem$seg$tbl (1) structure (
base byte,
size byte,
attrib byte,
bank byte ) external;
declare memseg (1) structure (
base byte,
size byte,
attrib byte,
bank byte ) external;
declare pdtbl (1) process$descriptor external;
declare stktbl (1) structure (loc (24) address) external;
$list


View File

@@ -0,0 +1,251 @@
; CP/M 2.0 disk re-definition library
;
; Copyright (c) 1979
; Digital Research
; Box 579
; Pacific Grove, CA
; 93950
;
; CP/M logical disk drives are defined using the
; macros given below, where the sequence of calls
; is:
;
; disks n
; diskdef parameter-list-0
; diskdef parameter-list-1
; ...
; diskdef parameter-list-n
; endef
;
; where n is the number of logical disk drives attached
; to the CP/M system, and parameter-list-i defines the
; characteristics of the ith drive (i=0,1,...,n-1)
;
; each parameter-list-i takes the form
; dn,fsc,lsc,[skf],bls,dks,dir,cks,ofs,[0]
; where
; dn is the disk number 0,1,...,n-1
; fsc is the first sector number (usually 0 or 1)
; lsc is the last sector number on a track
; skf is optional "skew factor" for sector translate
; bls is the data block size (1024,2048,...,16384)
; dks is the disk size in bls increments (word)
; dir is the number of directory elements (word)
; cks is the number of dir elements to checksum
; ofs is the number of tracks to skip (word)
; [0] is an optional 0 which forces 16K/directory entry
;
; for convenience, the form
; dn,dm
; defines disk dn as having the same characteristics as
; a previously defined disk dm.
;
; a standard four drive CP/M system is defined by
; disks 4
; diskdef 0,1,26,6,1024,243,64,64,2
; dsk set 0
; rept 3
; dsk set dsk+1
; diskdef %dsk,0
; endm
; endef
;
; the value of "begdat" at the end of assembly defines the
; beginning of the uninitialize ram area above the bios,
; while the value of "enddat" defines the next location
; following the end of the data area. the size of this
; area is given by the value of "datsiz" at the end of the
; assembly. note that the allocation vector will be quite
; large if a large disk size is defined with a small block
; size.
;
dskhdr macro dn
;; define a single disk header list
dpe&dn: dw xlt&dn,0000h ;translate table
dw 0000h,0000h ;scratch area
dw dirbuf,dpb&dn ;dir buff,parm block
dw csv&dn,alv&dn ;check, alloc vectors
endm
;
disks macro nd
;; define nd disks
ndisks set nd ;;for later reference
dpbase equ $ ;base of disk parameter blocks
;; generate the nd elements
dsknxt set 0
rept nd
dskhdr %dsknxt
dsknxt set dsknxt+1
endm
endm
;
dpbhdr macro dn
dpb&dn equ $ ;disk parm block
endm
;
ddb macro data,comment
;; define a db statement
db data comment
endm
;
ddw macro data,comment
;; define a dw statement
dw data comment
endm
;
gcd macro m,n
;; greatest common divisor of m,n
;; produces value gcdn as result
;; (used in sector translate table generation)
gcdm set m ;;variable for m
gcdn set n ;;variable for n
gcdr set 0 ;;variable for r
rept 65535
gcdx set gcdm/gcdn
gcdr set gcdm - gcdx*gcdn
if gcdr = 0
exitm
endif
gcdm set gcdn
gcdn set gcdr
endm
endm
;
diskdef macro dn,fsc,lsc,skf,bls,dks,dir,cks,ofs,k16
;; generate the set statements for later tables
if nul lsc
;; current disk dn same as previous fsc
dpb&dn equ dpb&fsc ;equivalent parameters
als&dn equ als&fsc ;same allocation vector size
css&dn equ css&fsc ;same checksum vector size
xlt&dn equ xlt&fsc ;same translate table
else
secmax set lsc-(fsc) ;;sectors 0...secmax
sectors set secmax+1;;number of sectors
als&dn set (dks)/8 ;;size of allocation vector
if ((dks) mod 8) ne 0
als&dn set als&dn+1
endif
css&dn set (cks)/4 ;;number of checksum elements
;; generate the block shift value
blkval set bls/128 ;;number of sectors/block
blkshf set 0 ;;counts right 0's in blkval
blkmsk set 0 ;;fills with 1's from right
rept 16 ;;once for each bit position
if blkval=1
exitm
endif
;; otherwise, high order 1 not found yet
blkshf set blkshf+1
blkmsk set (blkmsk shl 1) or 1
blkval set blkval/2
endm
;; generate the extent mask byte
blkval set bls/1024 ;;number of kilobytes/block
extmsk set 0 ;;fill from right with 1's
rept 16
if blkval=1
exitm
endif
;; otherwise more to shift
extmsk set (extmsk shl 1) or 1
blkval set blkval/2
endm
;; may be double byte allocation
if (dks) > 256
extmsk set (extmsk shr 1)
endif
;; may be optional [0] in last position
if not nul k16
extmsk set k16
endif
;; now generate directory reservation bit vector
dirrem set dir ;;# remaining to process
dirbks set bls/32 ;;number of entries per block
dirblk set 0 ;;fill with 1's on each loop
rept 16
if dirrem=0
exitm
endif
;; not complete, iterate once again
;; shift right and add 1 high order bit
dirblk set (dirblk shr 1) or 8000h
if dirrem > dirbks
dirrem set dirrem-dirbks
else
dirrem set 0
endif
endm
dpbhdr dn ;;generate equ $
ddw %sectors,<;sec per track>
ddb %blkshf,<;block shift>
ddb %blkmsk,<;block mask>
ddb %extmsk,<;extnt mask>
ddw %(dks)-1,<;disk size-1>
ddw %(dir)-1,<;directory max>
ddb %dirblk shr 8,<;alloc0>
ddb %dirblk and 0ffh,<;alloc1>
ddw %(cks)/4,<;check size>
ddw %ofs,<;offset>
;; generate the translate table, if requested
if nul skf
xlt&dn equ 0 ;no xlate table
else
if skf = 0
xlt&dn equ 0 ;no xlate table
else
;; generate the translate table
nxtsec set 0 ;;next sector to fill
nxtbas set 0 ;;moves by one on overflow
gcd %sectors,skf
;; gcdn = gcd(sectors,skew)
neltst set sectors/gcdn
;; neltst is number of elements to generate
;; before we overlap previous elements
nelts set neltst ;;counter
xlt&dn equ $ ;translate table
rept sectors ;;once for each sector
if sectors < 256
ddb %nxtsec+(fsc)
else
ddw %nxtsec+(fsc)
endif
nxtsec set nxtsec+(skf)
if nxtsec >= sectors
nxtsec set nxtsec-sectors
endif
nelts set nelts-1
if nelts = 0
nxtbas set nxtbas+1
nxtsec set nxtbas
nelts set neltst
endif
endm
endif ;;end of nul fac test
endif ;;end of nul bls test
endm
;
defds macro lab,space
lab: ds space
endm
;
lds macro lb,dn,val
defds lb&dn,%val&dn
endm
;
endef macro
;; generate the necessary ram data areas
begdat equ $
dirbuf: ds 128 ;directory access buffer
dsknxt set 0
rept ndisks ;;once for each disk
lds alv,%dsknxt,als
lds csv,%dsknxt,css
dsknxt set dsknxt+1
endm
enddat equ $
datsiz equ $-begdat
force: db 0 ;force out last byte in hex file
endm
;


View File

@@ -0,0 +1,22 @@
$nolist
declare
ostod literally '0000h',
osrlr literally '0005h',
osdlr literally '0007h',
osdrl literally '0009h',
osplr literally '000bh',
osslr literally '000dh',
osqlr literally '000fh',
osthrdrt literally '0011h',
osnmbcns literally '0013h',
oscnsatt literally '0014h',
oscnsque literally '0034h',
osnmbflags literally '0054h',
ossysfla literally '0055h',
osnmbsegs literally '0095h',
osmsegtbl literally '0096h',
ospdtbl literally '00b6h';
$list


Binary file not shown.

View File

@@ -0,0 +1,17 @@
$nolist
/*
FCB Literals
*/
declare fcb$descriptor literally
'structure (et byte,
fn (8) byte,
ft (3) byte,
ex byte,
nu address,
rc byte,
dm (16) byte,
nr byte )';
$list


View File

@@ -0,0 +1,19 @@
$nolist
/*
Flag Externals
*/
declare flag$wait literally 'flgwt';
flag$wait:
procedure (flagnmb) byte external;
declare flagnmb byte;
end flag$wait;
declare flag$set literally 'flgset';
flag$set:
procedure (flagnmb) byte external;
declare flagnmb byte;
end flag$set;
$list


View File

@@ -0,0 +1,9 @@
$nolist
/*
Flag Literals
*/
declare nmbflags literally '16';
$list


Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,28 @@
$nolist
/*
Memmgr Externals
*/
declare user$process literally 'userpr';
user$process:
procedure (pdadr) byte external;
declare pdadr address;
end user$process;
abs$rq:
procedure (mdadr) byte external;
declare mdadr address;
end abs$rq;
rel$rq:
procedure (mdadr) byte external;
declare mdadr address;
end rel$rq;
mem$fr:
procedure (mdadr) external;
declare mdadr address;
end mem$fr;
$list


View File

@@ -0,0 +1,15 @@
$nolist
/*
Memmgr Literals
*/
declare allocated literally '80H';
declare memory$descriptor literally
'structure (base byte,
size byte,
attrib byte,
bank byte)';
$list


Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,27 @@
$nolist
/*
Proces Externals
*/
declare rlrpd based rlr process$descriptor;
declare thread$root literally 'thrdrt';
declare drlpd based drl process$descriptor;
declare dsptch$param literally 'dparam';
declare dsptch$param address external;
declare dispatch literally 'dispat';
dispatch:
procedure external;
end dispatch;
declare insert$process literally 'inspr';
insert$process:
procedure (pdladr,pdadr) external;
declare (pdladr,pdadr) address;
end insert$process;
$list


Some files were not shown because too many files have changed in this diff Show More