mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-25 01:14:21 +00:00
132 lines
5.2 KiB
Plaintext
132 lines
5.2 KiB
Plaintext
;******************* BDOS data area ********************
|
||
;
|
||
;
|
||
; 8086 variables that must recide in code segment
|
||
;
|
||
cseg $
|
||
;
|
||
axsave dw 0 ; register saves
|
||
SS_save dw 0
|
||
SP_save dw 0
|
||
;
|
||
; Variables in data segment:
|
||
;
|
||
dseg cpmsegment
|
||
org bdosoffset+bdoscodesize
|
||
;
|
||
; byte I/O variables:
|
||
;
|
||
compcol db 0 ;true if computing column position
|
||
strtcol db 0 ;starting column position after read
|
||
column db 0 ;column position
|
||
listcp db 0 ;listing toggle
|
||
kbchar db 0 ;initial key char = 00
|
||
;
|
||
; common values shared between bdosi and bdos
|
||
;
|
||
usrcode db 0 ;current user number
|
||
curdsk db 0 ;current disk number
|
||
info dw 0 ;information address
|
||
aret dw 0 ;address value to return
|
||
lret EQU byte ptr aret ;low(aret)
|
||
;
|
||
; data areas for file system:
|
||
;
|
||
; initialized data
|
||
;
|
||
efcb db empty ;0e5=available dir entry
|
||
rodsk dw 0 ;read only disk vector
|
||
dlog dw 0 ;logged-in disks
|
||
dmaad dw 0 ;dma address
|
||
;
|
||
; curtrka - alloca are set upon disk select
|
||
; (data must be adjacent, do not insert variables)
|
||
; (address of translate vector, not used)
|
||
;
|
||
cdrmaxa dw 0 ;pointer to cur dir max value
|
||
curtrka dw 0 ;current track address
|
||
curreca dw 0 ;current record address
|
||
buffa dw 0 ;pointer to directory dma address
|
||
dpbaddr dw 0 ;current disk parameter block address
|
||
checka dw 0 ;current checksum vector address
|
||
alloca dw 0 ;current allocation vector address
|
||
addlist EQU 8 ;"$-buffa" = address list size
|
||
;
|
||
; sectpt - offset obtained from disk parm block at dpbaddr
|
||
; (data must be adjacent, do not insert variables)
|
||
sectpt dw 0 ;sectors per track
|
||
blkshf db 0 ;block shift factor
|
||
blkmsk db 0 ;block mask
|
||
extmsk db 0 ;extent mask
|
||
maxall dw 0 ;maximum allocation number
|
||
dirmax dw 0 ;largest directory number
|
||
dirblk dw 0 ;reserved allocation bits for direct.
|
||
chksiz dw 0 ;size of checksum vector
|
||
offsetv dw 0 ;offset tracks at beginning
|
||
endlist rs 0 ;end of list
|
||
dpblist equ (offset endlist)-(offset sectpt) ;size
|
||
;
|
||
; local variables
|
||
tranv dw 0 ;address of translate vector
|
||
fcbcopied db 0 ;set true if copy$fcb called
|
||
rmf db 0 ;read mode flag for open$reel
|
||
dirloc db 0 ;directory flag in rename, etc.
|
||
seqio db 0 ;1 if sequential i/o
|
||
linfo db 0 ;low(info)
|
||
dminx db 0 ;local for diskwrite
|
||
srchl db 0 ;search length
|
||
srcha dw 0 ;search address
|
||
tinfo dw 0 ;temp for info in "make"
|
||
single db 0 ;set true if single byte
|
||
;allocation map
|
||
resel db 0 ;reselection flag
|
||
olddsk db 0 ;disk on entry to bdos
|
||
fcbdsk db 0 ;disk named in fcb
|
||
rcount db 0 ;record count in current fcb
|
||
extval db 0 ;extent number and extmsk
|
||
vrecord dw 0 ;current virtual record
|
||
lvrecord equ byte ptr vrecord ;low (vrecord)
|
||
arecord dw 0 ;current actual record
|
||
ablock dw 0 ;current actual block# * blkmsk
|
||
;
|
||
; local variables for directory access
|
||
dptr db 0 ;directory pointer 0,1,2,3
|
||
dcnt dw 0 ;directory counter 0,1,...,dirmax
|
||
ldcnt equ byte ptr dcnt ;low(dcnt)
|
||
drec dw 0 ;directory record 0,1,...,dirmax/4
|
||
;
|
||
; Special 8086 variables:
|
||
;
|
||
ioloc db 0 ;iobyte
|
||
dmabase dw 0 ;segment base for disk I/O
|
||
infosave dw 0 ;save for FCB address
|
||
parametersegment dw 0 ;user parameter segment
|
||
parcopfl db 0 ;true if parameter block copied
|
||
parlg db 0 ;length of parameter block
|
||
nallocmem db 0 ;no. of allocated memory segments
|
||
ncrmem db 0 ;no. of available memory segments
|
||
crmem dw 0,0 ;memory table (16 elements)
|
||
dw 0,0,0,0,0,0
|
||
dw 0,0,0,0,0,0,0,0
|
||
dw 0,0,0,0,0,0,0,0
|
||
dw 0,0,0,0,0,0,0,0
|
||
;
|
||
;
|
||
; error messages
|
||
;
|
||
dskmsg db 'Bdos Err On '
|
||
dskerr db ' : $' ;filled in by errflg
|
||
permsg db 'Bad Sector$'
|
||
selmsg db 'Select$'
|
||
rofmsg db 'File '
|
||
rodmsg db 'R/O$'
|
||
;
|
||
; Local buffer area:
|
||
;
|
||
loc_par_area rb 258 ;local user parameter (FCB,...)
|
||
stackarea rw ssize ;stack size
|
||
endstack rb 0 ;top of stack
|
||
;
|
||
;******************** end BDOS data area *******************
|
||
end
|
||
|