mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 09:54:20 +00:00
Upload
Digital Research
This commit is contained in:
@@ -0,0 +1,587 @@
|
||||
;*****************************************************
|
||||
;*
|
||||
;* System Data Area
|
||||
;*
|
||||
;*****************************************************
|
||||
|
||||
CSEG
|
||||
org 0ch
|
||||
;dev_ver
|
||||
db 6 ;development system data version
|
||||
;SYSDAT.CON has 16 byte code segment
|
||||
|
||||
DSEG
|
||||
org 0
|
||||
|
||||
;
|
||||
;This data is initialized by GENCCPM
|
||||
;
|
||||
|
||||
;Module Table - contains the FAR CALL addresses
|
||||
; of each module for their initialization
|
||||
; and entry routines.
|
||||
;
|
||||
; +---+---+---+---+---+---+---+---+
|
||||
; | entry | initialize |
|
||||
; +---+---+---+---+---+---+---+---+
|
||||
;
|
||||
; entry init
|
||||
; ----- ----
|
||||
|
||||
module_table equ dword ptr (offset $)
|
||||
supmod equ (offset $)
|
||||
dw 3,0, 0,0 ;SUP
|
||||
|
||||
rtmmod equ (offset $)
|
||||
dw 3,0, 0,0 ;RTM
|
||||
|
||||
memmod equ (offset $)
|
||||
dw 3,0, 0,0 ;MEM
|
||||
|
||||
ciomod equ (offset $)
|
||||
dw 3,0, 0,0 ;CIO
|
||||
|
||||
bdosmod equ (offset $)
|
||||
dw 3,0, 0,0 ;BDOS
|
||||
|
||||
xiosmod equ (offset $)
|
||||
dw 0C03H,0, 0C00H,0 ;XIOS
|
||||
|
||||
netmod equ (offset $)
|
||||
dw 3,0, 0,0 ;NET
|
||||
|
||||
dispatcher equ (offset $)
|
||||
dw 0,0 ;far dispatcher (does IRET)
|
||||
|
||||
rtm_pdisp equ (offset $)
|
||||
dw 0,0 ;far dispatcher (does RETF)
|
||||
|
||||
; location in memory of MP/M-86 or CCP/M-86
|
||||
|
||||
osseg dw 1008h ;1st parag. of MP/M-86 or CCP/M
|
||||
rspseg dw 0 ;segment of first RSP
|
||||
endseg dw 0 ;1st parag. outside of MP/M or CCP/M
|
||||
|
||||
module_map db 03fh ;bit map of modules that exist
|
||||
; in this system. low order bit
|
||||
; corresponds to 1st module in
|
||||
; module table. If bit is on,then
|
||||
; module exists.
|
||||
|
||||
; some answers to GENCCPM questions
|
||||
|
||||
ncns db 4 ;# system console devices
|
||||
nlst db 1 ;# system list devices
|
||||
nccb db 5 ;# character control blocks
|
||||
nflags db 20h ;# flags
|
||||
srchdisk db 1 ;system disk
|
||||
mmp dw 04000h ;Max Memory per process
|
||||
nslaves db 0 ;Number of network requestors
|
||||
dayfile db 0 ;if 0ffh,display command info
|
||||
tempdisk db 1 ;Temporary disk
|
||||
tickspersec db 60 ;Number of ticks per second
|
||||
|
||||
; data lists created by GENCCPM
|
||||
|
||||
free_root dw 0 ;locked unused list
|
||||
ccb dw 0 ;addr. Console Ctrl Blk Table
|
||||
flags dw 0 ;addr. Flag Table
|
||||
mdul dw 020h ;Mem descr. Unused List
|
||||
mfl dw 0 ;Memory Free List
|
||||
pul dw 014h ;Proc. descr. Unused List
|
||||
qul dw 020h ;QCB Unused List
|
||||
;MAU for queue buffer info
|
||||
qmau dw 0 ;link
|
||||
dw 0 ;start segment
|
||||
dw 400h ;length
|
||||
dw 0 ;plist
|
||||
|
||||
;
|
||||
;This data is initialized at Assembly time
|
||||
;
|
||||
|
||||
rlr dw initpd ;Ready List Root
|
||||
dlr dw 0 ;Delay List Root
|
||||
drl dw 0 ;Dispatcher Ready List
|
||||
plr dw 0 ;Poll List Root
|
||||
scl dw 0 ;Shared Code List
|
||||
thrdrt dw initpd ;Process Thread Root
|
||||
qlr dw mxloadqd;Queue List Root
|
||||
mal dw 0 ;Memory Alloc List
|
||||
|
||||
; Version Information
|
||||
|
||||
version dw unknown ;addr. version str in SUP code segment
|
||||
;set by GENCCPM if CCP/M
|
||||
if mpm
|
||||
bvernum dw 01431h ;MPM-86 w/BDOS v3.1
|
||||
osvernum dw 01431h ;MPM-86 V3.1
|
||||
endif
|
||||
|
||||
if ccpm
|
||||
bvernum dw 01431h ;CCP/M w/BDOS 3.1
|
||||
osvernum dw 01421h ;CCP/M V2.1
|
||||
endif
|
||||
|
||||
; Time of Day Structure
|
||||
|
||||
tod rw 0
|
||||
tod_day dw 067EH ;day since 1/1/78 (09 Jul 82)
|
||||
tod_hr db 12h ;hour of day
|
||||
tod_min db 00h ;minute of hour
|
||||
tod_sec db 00h ;second of minute
|
||||
|
||||
; info from XIOS
|
||||
|
||||
ncondev db 0 ;# console devs in XIOS
|
||||
nlstdev db 0 ;# character devs in XIOS
|
||||
nciodev db 0 ;# character i/o devices
|
||||
; supported by XIOS.
|
||||
lcb dw 0 ; list control block address
|
||||
openvec dw 0 ; open file vector
|
||||
lock_max db 20h ; Max Locked Records/process
|
||||
open_max db 20h ; Max Open Files/process
|
||||
owner8087 dw 0 ; no one owns it initially
|
||||
rw 1 ; RESERVED
|
||||
cmod db 0ffh ; BDOS Compatibility
|
||||
ndp8087 rb 1 ; RESERVED
|
||||
err_intercept dw 0,0 ; BDOS does a callf here
|
||||
; to print error msgs,
|
||||
; if second word is <> 0
|
||||
slr dw offset mem_spb ; Sync List Root
|
||||
dw 0,0,0 ; RESERVED
|
||||
db 0 ; RESERVED
|
||||
|
||||
xpcns db 0 ; # physical consoles
|
||||
iofs87 rw 1 ; address of NDP interrupt
|
||||
iseg87 rw 1 ; vector.
|
||||
sysvec87_of rw 1 ; system exception handler's
|
||||
sysvec87_sg rw 1 ; segment and offset.
|
||||
|
||||
splr dw 0 ; suspend list root
|
||||
|
||||
; SYSENT Table - MP/M-86, CCP/M-86 system function information
|
||||
; The supervisor calls the appropriate module
|
||||
; through this table.
|
||||
;
|
||||
; Low Byte High Byte
|
||||
; +----+----+--------+
|
||||
; |function |flgs|mod|
|
||||
; +----+----+--------+
|
||||
;
|
||||
; flgs - 001h - network intercept
|
||||
; if on, the network module is called
|
||||
; first, on return, either the function
|
||||
; is called or it is considered complete
|
||||
; depending on the return.
|
||||
; mod - module number (0-15)
|
||||
; function- function to call within module
|
||||
|
||||
; note: sup function 0 returns not the
|
||||
; implemented error code to the caller,
|
||||
; and sup function 1 returns the illegal
|
||||
; function error code.
|
||||
|
||||
; standard CPM-2 functions
|
||||
|
||||
; func, module
|
||||
|
||||
org ((offset $) + 1) and 0fffeh
|
||||
|
||||
sysent db 0, rtm ; 0-system reset
|
||||
db 0, cio ; 1-conin
|
||||
db 1, cio ; 2-conout
|
||||
db 0, sup ; 3-raw conin/aux in
|
||||
db 0, sup ; 4-raw conout/aux out
|
||||
db 4, cio or net_bit ; 5-list out
|
||||
db 5, cio ; 6-raw conio
|
||||
db 0, sup ; 7-getiobyte
|
||||
db 0, sup ; 8-setiobyte
|
||||
db 6, cio ; 9-conwrite
|
||||
db 7, cio ; 10-conread
|
||||
db 8, cio ; 11-constat
|
||||
db 2, sup or net_bit ; 12-get version
|
||||
db 0, bdos or net_bit ; 13-diskreset
|
||||
db 1, bdos or net_bit ; 14-diskselect
|
||||
db 2, bdos or net_bit ; 15-file open
|
||||
db 3, bdos or net_bit ; 16-file close
|
||||
db 4, bdos or net_bit ; 17-search first
|
||||
db 5, bdos or net_bit ; 18-search next
|
||||
db 6, bdos or net_bit ; 19-file delete
|
||||
db 7, bdos or net_bit ; 20-file read seq
|
||||
db 8, bdos or net_bit ; 21-file write seq
|
||||
db 9, bdos or net_bit ; 22-file make
|
||||
db 10, bdos or net_bit ; 23-file rename
|
||||
db 11, bdos or net_bit ; 24-login vector
|
||||
db 12, bdos ; 25-get def disk
|
||||
db 13, bdos ; 26-set dma
|
||||
db 14, bdos or net_bit ; 27-get alloc vector
|
||||
db 15, bdos or net_bit ; 28-write protect
|
||||
db 16, bdos or net_bit ; 29-get r/0 vector
|
||||
db 17, bdos or net_bit ; 30-set file attr.
|
||||
db 18, bdos or net_bit ; 31-get disk parm block
|
||||
db 19, bdos ; 32-user code
|
||||
db 20, bdos or net_bit ; 33-file read random
|
||||
db 21, bdos or net_bit ; 34-file write random
|
||||
db 22, bdos or net_bit ; 35-file size
|
||||
db 23, bdos or net_bit ; 36-set random record
|
||||
db 24, bdos or net_bit ; 37-reset drive
|
||||
db 25, bdos or net_bit ; 38-access drive
|
||||
db 26, bdos or net_bit ; 39-free drive
|
||||
db 27, bdos or net_bit ; 40-file write random w/zero fill
|
||||
|
||||
;CPM-3 extensions
|
||||
|
||||
db 0, sup ; 41-Test and Write (NOT IMPLEMENTED)
|
||||
; Would be BDOS func # 28
|
||||
db 28, bdos or net_bit ; 42-Lock Record
|
||||
db 29, bdos or net_bit ; 43-Unlock Record
|
||||
db 30, bdos ; 44-Set Multi-sector
|
||||
db 31, bdos or net_bit ; 45-Set Bdos Error Mode
|
||||
db 32, bdos or net_bit ; 46-Get Disk Free Space
|
||||
db 12, sup or net_bit ; 47-Chain to Program
|
||||
; In CP/M-86 BDOS func # 34
|
||||
db 33, bdos ; 48-Flush Buffers
|
||||
db 1, sup ; 49-
|
||||
|
||||
;CPM-86 extensions
|
||||
|
||||
db 3, sup ; 50-call xios
|
||||
db 34, bdos ; 51-set dma base
|
||||
db 35, bdos ; 52-get dma
|
||||
db 0, mem ; 53-get max mem
|
||||
db 1, mem ; 54-get abs max mem
|
||||
db 2, mem ; 55-alloc mem
|
||||
db 3, mem ; 56-alloc abs mem
|
||||
db 4, mem ; 57-free mem
|
||||
db 5, mem ; 58-free all mem
|
||||
db 4, sup or net_bit ; 59-load
|
||||
db 1, sup ; 60-
|
||||
db 1, sup ; 61-
|
||||
db 1, sup ; 62-
|
||||
db 1, sup ; 63-
|
||||
|
||||
;CP/NET functions
|
||||
|
||||
db 64, net or net_bit ; 64-network login
|
||||
db 65, net or net_bit ; 65-network logoff
|
||||
db 66, net or net_bit ; 66-network send msg
|
||||
db 67, net or net_bit ; 67-network rcv msg
|
||||
db 68, net or net_bit ; 68-network status
|
||||
db 69, net or net_bit ; 69-get network config addr
|
||||
db 70, net or net_bit ; 70-set Compatibility attributes
|
||||
db 71, net or net_bit ; 71-get network server config table
|
||||
db 72, net or net_bit ; 72-set network error mode
|
||||
db 73, net or net_bit ; 73-attach network
|
||||
db 74, net or net_bit ; 74-detach network
|
||||
db 75, net or net_bit ; 75-set message buffer size
|
||||
db 76, net or net_bit ; 76-get network time and date
|
||||
db 77, net or net_bit ; 77-get network parameter table
|
||||
db 1, sup ; 78-unused
|
||||
db 1, sup ; 79-unused
|
||||
db 1, sup ; 80-unused
|
||||
|
||||
;CP/M-3 extensions
|
||||
|
||||
db 36, bdos or net_bit ; 98-Reset Alloc Vector
|
||||
db 37, bdos or net_bit ; 99-Truncate File
|
||||
db 38, bdos or net_bit ;100-Set Dir Label
|
||||
db 39, bdos or net_bit ;101-Return Dir Label
|
||||
db 40, bdos or net_bit ;102-Read File XFCB
|
||||
db 41, bdos or net_bit ;103-Write File XFCB
|
||||
db 42, bdos ;104-Set Date and Time
|
||||
db 43, bdos ;105-Get Date and Time
|
||||
db 44, bdos or net_bit ;106-Set Default Password
|
||||
db 13, sup ;107-Return Serial Number
|
||||
db 0, sup ;108-(not implemented)
|
||||
db 25, cio ;109-Get/Set Console Mode
|
||||
db 26, cio ;110-Get/Set Output Delimiter
|
||||
db 27, cio ;111-Print Block
|
||||
db 28, cio or net_bit ;112-List Block
|
||||
db 1, sup ;113-reserved
|
||||
db 1, sup ;114-reserved
|
||||
db 1, sup ;115-reserved
|
||||
db 45, bdos ;116-Set File_Date_Time
|
||||
|
||||
; MP/M functions
|
||||
|
||||
db 6, mem ;128-mem req
|
||||
db 6, mem ;129-(same function as 128)
|
||||
db 7, mem ;130-mem free
|
||||
db 1, rtm ;131-poll device
|
||||
db 2, rtm ;132-flag wait
|
||||
db 3, rtm ;133-flag set
|
||||
db 4, rtm or net_bit ;134-queue make
|
||||
db 5, rtm or net_bit ;135-queue open
|
||||
db 6, rtm or net_bit ;136-queue delete
|
||||
db 7, rtm or net_bit ;137-queue read
|
||||
db 8, rtm or net_bit ;138-cond. queue read
|
||||
db 9, rtm or net_bit ;139-queue write
|
||||
db 10, rtm or net_bit ;140-cond. queue write
|
||||
db 11, rtm ;141-delay
|
||||
db 12, rtm ;142-dispatch
|
||||
db 13, rtm ;143-terminate
|
||||
db 14, rtm or net_bit ;144-create process
|
||||
db 15, rtm ;145-set priority
|
||||
db 9, cio ;146-console attach
|
||||
db 10, cio ;147-console detach
|
||||
db 11, cio ;148-set def console
|
||||
db 12, cio ;149-console assign
|
||||
db 5, sup ;150-CLI
|
||||
db 6, sup ;151-call RPL
|
||||
db 7, sup ;152-parse filename
|
||||
db 13, cio ;153-get def console
|
||||
db 8, sup ;154-sysdat addr
|
||||
db 9, sup ;155-time of day
|
||||
db 16, rtm ;156-get PD addr
|
||||
db 17, rtm ;157-abort process
|
||||
|
||||
; MPM II extensions
|
||||
|
||||
db 15, cio or net_bit ;158-attach list
|
||||
db 16, cio or net_bit ;159-detach list
|
||||
db 17, cio or net_bit ;160-set list dev
|
||||
db 18, cio or net_bit ;161-Cond. Attach list
|
||||
db 19, cio ;162-Cond. Attach Console
|
||||
db 11, sup or net_bit ;163-MP/M Version Number
|
||||
db 20, cio or net_bit ;164-get list dev
|
||||
|
||||
|
||||
; Initialized Queues
|
||||
|
||||
org ((offset $) + 1) and 0fffeh
|
||||
|
||||
mxloadqd dw mxdiskqd
|
||||
db 0,0
|
||||
dw qf_keep+qf_mx
|
||||
db 'MXLoad '
|
||||
dw 0,1,0,0,1,0,0
|
||||
mxloadqpb db 0,0
|
||||
dw mxloadqd,1,0
|
||||
; db 'MXLoad '
|
||||
|
||||
; Data Used by Load Program
|
||||
|
||||
org ((offset $) + 1) and 0fffeh
|
||||
|
||||
lod_uda dw 0
|
||||
lod_lstk dw 0
|
||||
lod_basep dw 0
|
||||
lod_nldt dw 0
|
||||
lod_pd dw 0
|
||||
lod_fcb rs 36
|
||||
lod_indma dw 0
|
||||
lod_nrels db 0
|
||||
lod_chain db 0
|
||||
lod_user db 0
|
||||
lod_disk db 0
|
||||
lod_fifty db 0
|
||||
lod_8080 db 0
|
||||
lod_lbyte db 0
|
||||
lod_fixrec dw 0
|
||||
lod_ndp db 0
|
||||
lod_suspnd db 0
|
||||
lod_fixrec1 dw 0
|
||||
lod_dma rb dskrecl
|
||||
ldtab rb ldtabsiz
|
||||
|
||||
cli_dma_ofst rw 1
|
||||
cli_dma_seg rw 1
|
||||
cli_pflag rw 1
|
||||
cli_chain rb 1
|
||||
cli_term rb 1
|
||||
cli_dma rb dskrecl ;dma buffer
|
||||
|
||||
;copy of user's clicb
|
||||
cli_net rb 1 ;net
|
||||
cli_ppd rw 1 ;parent PD
|
||||
cli_cmdtail rb 129 ;command sent
|
||||
rb 1
|
||||
|
||||
cli_fcb rb fcblen+1 ;internal FCB
|
||||
|
||||
cli_cuspqpb db 0,0 ;QPB of command
|
||||
dw 0,0
|
||||
dw offset cli_ppd
|
||||
db '$$$$$$$$'
|
||||
|
||||
cli_acb db 0,0 ;cns,match
|
||||
dw 0 ;pd
|
||||
db '$$$$$$$$' ;name
|
||||
|
||||
cli_pcb dw offset cli_cmdtail ;parse
|
||||
dw offset cli_fcb ;ctl bk
|
||||
|
||||
cli_pd dw 0 ;pd of load prog
|
||||
cli_err dw 0 ;error return
|
||||
cli_bpage dw 0 ;base page
|
||||
cli_lddsk db 1 ;load disk
|
||||
|
||||
;parent information
|
||||
|
||||
cli_cns db 0 ;pd.p_cns save
|
||||
cli_user db 0 ;pd.p_dsk save
|
||||
cli_dsk db 0 ;pd.p_user save
|
||||
cli_err_mode db 0 ;u_error_mode save
|
||||
cli_dfil db 0 ;dayfile flag
|
||||
|
||||
;
|
||||
;System Initialization Variables
|
||||
;
|
||||
|
||||
initpd dw 0 ;link
|
||||
dw 0 ;thread
|
||||
db ps_run ;stat
|
||||
db 1 ;prior
|
||||
dw pf_sys+pf_kernal;flag
|
||||
db 'Init ' ;name
|
||||
dw unknown ;uda segment
|
||||
db 0 ;disk
|
||||
db 0 ;user
|
||||
db 0,0 ;ldsk,luser
|
||||
dw 0 ;mem
|
||||
dw 0 ;dvract
|
||||
dw 0 ;wait
|
||||
db 0,0 ;org,net
|
||||
dw 0 ;parent
|
||||
db 0 ;cns
|
||||
db 0 ;abort
|
||||
db 0,0 ;cin,cout
|
||||
db 0 ;lst
|
||||
db 0,0,0 ;sf3,4,5
|
||||
rb 4 ;reserved
|
||||
dw 0,0 ;pret,scratch
|
||||
|
||||
|
||||
;User Data Area of Init process
|
||||
;paragraph aligned
|
||||
|
||||
org ((offset $)+0fh) AND 0fff0h
|
||||
inituda rb ulen
|
||||
init_tos rw 0
|
||||
org offset inituda + ud_insys
|
||||
db 1 ;keep the SUP from doing stack
|
||||
org offset init_tos ;switches
|
||||
|
||||
|
||||
; RTM data
|
||||
; is word aligned from init uda
|
||||
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch
|
||||
|
||||
dsptchtos rw 0
|
||||
|
||||
indisp db false ;?currently in dispatch?
|
||||
intflag db 0 ;if 0, interrupts not enabled -
|
||||
;not implemented
|
||||
es_sav dw 0 ;(staying word aligned)
|
||||
bx_sav dw 0
|
||||
ax_sav dw 0
|
||||
|
||||
; MEM Data
|
||||
|
||||
beststart dw 0
|
||||
bestlen dw 0
|
||||
bestsi dw 0
|
||||
bestmau dw 0
|
||||
currmau dw 0
|
||||
currsi dw 0
|
||||
currmpb dw 0,0,0,0,0
|
||||
|
||||
; **3.1M**
|
||||
;
|
||||
; save area and stack for memory manager local stack switch
|
||||
;
|
||||
mem_save_sp dw 0
|
||||
mem_save_ss dw 0
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
dw 0cccch,0cccch,0cccch,0cccch
|
||||
mem_tos rw 0
|
||||
;
|
||||
; **3.1M**
|
||||
;
|
||||
; SYNC Parameter Blocks
|
||||
|
||||
; The MEM ENTRY: point uses the following for
|
||||
; mutual exclusion and recursion.
|
||||
|
||||
mem_cnt db 0 ;how many times a process has recursivly
|
||||
;called the memory manager
|
||||
|
||||
mem_spb dw q_spb ;link Mem Sync Parameter Block
|
||||
dw 0 ;owner
|
||||
dw 0 ;wait
|
||||
dw 0 ;next
|
||||
|
||||
; The queue sub-system in the RTM uses the following
|
||||
; structure for mutual exclusion
|
||||
|
||||
q_spb dw cli_spb ;link Queue Sync Parameter Block
|
||||
dw 0 ;owner
|
||||
dw 0 ;wait
|
||||
dw 0 ;next
|
||||
|
||||
|
||||
; The CLI uses the CLI_SPB for mutual exclusion
|
||||
|
||||
cli_spb dw thrd_spb;link CLI Sync Parameter Block
|
||||
dw 0 ;owner
|
||||
dw 0 ;wait
|
||||
dw 0 ;next
|
||||
|
||||
; When the thread is accessed, the THRD_SPB must be owned
|
||||
; first.
|
||||
|
||||
thrd_spb dw msg_spb ;link Thread Sync Parameter Block
|
||||
dw 0 ;owner
|
||||
dw 0 ;wait
|
||||
dw 0 ;next
|
||||
|
||||
; Currently the order in which the SYNCs must be obtained if
|
||||
; more than one is needed is:
|
||||
|
||||
; CLI
|
||||
; QUEUE ;called by CLI for RSPs
|
||||
; MEM ;called by make queue
|
||||
; THREAD ;used from the MEM module
|
||||
|
||||
; The SYNCs must be released in reverse order
|
||||
; MSG_SPB is used by the BDOS to protect the BDOS error message
|
||||
; buffer. MSG_SPB is in DATA.BDO
|
||||
| ||||