mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 16:34:07 +00:00
398 lines
7.6 KiB
Plaintext
398 lines
7.6 KiB
Plaintext
|
||
include equates.a86
|
||
include system.a86
|
||
dseg
|
||
extrn rlr:word
|
||
extrn login_vector:word
|
||
extrn readonly_vector:word
|
||
extrn date_days:word
|
||
extrn date_secs:byte
|
||
extrn bdos_8087_inuse:word
|
||
extrn cio_flags:word
|
||
extrn ccp_dseg:word
|
||
extrn sysvar_131:byte
|
||
extrn sysvar_132:byte
|
||
extrn search_path:byte
|
||
extrn proc_count:byte
|
||
extrn time_slice:byte
|
||
extrn page_mode:byte
|
||
extrn temp_drive:byte
|
||
extrn max_x:byte
|
||
extrn max_y:byte
|
||
extrn bdos_ver:word
|
||
extrn boot_drive:byte
|
||
cseg
|
||
|
||
public misc_init
|
||
public misc_main
|
||
|
||
|
||
db 'COPYRIGHT(C)1983,DIGITAL RESEARCH'
|
||
db '(11/16/83)'
|
||
|
||
sernumber:
|
||
include serial.a86
|
||
|
||
misc_init: ; DATA XREF: dseg:0016o
|
||
retn
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
misc_functions dw offset P_RSX_default ; DATA XREF: bdos:2317o
|
||
dw offset S_BDOSVER
|
||
dw offset DRV_LOGINVEC
|
||
dw offset DRV_GET
|
||
dw offset F_DMAOFF
|
||
dw offset DRV_ROVEC
|
||
dw offset F_USERNUM
|
||
dw offset F_MULTISEC
|
||
dw offset F_ERRMODE
|
||
dw offset S_SYSVAR
|
||
dw offset F_DMASEG
|
||
dw offset F_DMAGET
|
||
dw offset T_SET
|
||
dw offset T_GET
|
||
dw offset S_SERIAL
|
||
dw offset P_CODE
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
misc_main: ; DATA XREF: dseg:0014o
|
||
jmp cs:misc_functions[si]
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
P_RSX_default: ; DATA XREF: bdos:22EFo
|
||
mov bx, 0FFFFh
|
||
mov cx, 2
|
||
retn
|
||
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
S_BDOSVER: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:22F1o
|
||
mov bx, bdos_ver
|
||
retn
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
S_SYSVAR: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:2301o
|
||
mov si, dx ; Caller SCBPB
|
||
mov dx, ds ; Our DS
|
||
push ds
|
||
push es
|
||
mov ds, es:userDS ; Caller DS
|
||
mov di, offset public_sysvars
|
||
xor bx, bx
|
||
mov bl, [si]
|
||
cmp bl, 6
|
||
jb sysvar_valid
|
||
sub bl, 80h
|
||
jb sysvar_invalid
|
||
mov di, offset private_sysvars
|
||
cmp bl, 0Eh
|
||
jb sysvar_valid
|
||
|
||
sysvar_invalid: ; CODE XREF: S_SYSVAR+1Aj S_SYSVAR+4Fj
|
||
; ...
|
||
mov bx, 0FFFFh
|
||
jmps s_sysvar_ret
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
sysvar_valid: ; CODE XREF: S_SYSVAR+15j S_SYSVAR+22j
|
||
shl bx, 1
|
||
shl bx, 1
|
||
mov cx, cs:[bx+di]
|
||
test ch, 80h ; Process variable?
|
||
jz not_proc_var
|
||
mov dx, es
|
||
|
||
not_proc_var: ; CODE XREF: S_SYSVAR+33j
|
||
mov di, cs:2[bx+di]
|
||
test byte ptr 1[si], 0FFh
|
||
lea si, 2[si]
|
||
jnz sysvar_set
|
||
xchg si, di
|
||
push ds
|
||
pop es
|
||
|
||
mov ds, dx
|
||
|
||
jmps sysvar_access
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
|
||
sysvar_set: ; CODE XREF: S_SYSVAR+42j
|
||
test ch, 40h ; Read-only?
|
||
jnz sysvar_invalid
|
||
cmp es:proc_background, 0
|
||
jz sysvar_is_fg
|
||
test ch, 20h ; Owned by FG process?
|
||
jnz sysvar_invalid
|
||
|
||
sysvar_is_fg: ; CODE XREF: S_SYSVAR+57j
|
||
mov es, dx
|
||
|
||
sysvar_access: ; CODE XREF: S_SYSVAR+4Aj
|
||
test ch, 10h ; Volatile?
|
||
jz sysvar_nocli
|
||
cli
|
||
|
||
sysvar_nocli: ; CODE XREF: S_SYSVAR+63j
|
||
xor ch, ch
|
||
rep movsb
|
||
sti
|
||
xor bx, bx
|
||
|
||
s_sysvar_ret: ; CODE XREF: S_SYSVAR+27j
|
||
pop es
|
||
pop ds
|
||
|
||
retn
|
||
|
||
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
public_sysvars dw 2001h ; DATA XREF: S_SYSVAR+Bo
|
||
dw offset max_x
|
||
dw 2001h
|
||
dw offset max_y
|
||
dw 2001h
|
||
dw offset page_mode
|
||
dw 6001h
|
||
dw offset xios_bh_ticks
|
||
dw 2001h
|
||
dw offset temp_drive
|
||
dw 1005h
|
||
dw offset date_days
|
||
private_sysvars dw 2001h ; DATA XREF: S_SYSVAR+1Co
|
||
dw offset xios_bh_8087
|
||
dw 0E001h
|
||
dw offset proc_pid
|
||
dw 801Ah
|
||
dw offset proc_drive
|
||
dw 2001h
|
||
dw offset sysvar_131
|
||
dw 20FFh
|
||
dw offset sysvar_132
|
||
dw 3002h
|
||
dw offset ccp_dseg
|
||
dw 20FFh
|
||
dw offset boot_drive
|
||
dw 3004h
|
||
dw offset search_path
|
||
dw 0E001h
|
||
dw offset proc_background
|
||
dw 6001h
|
||
dw offset proc_count
|
||
dw 2001h
|
||
dw offset time_slice
|
||
dw 6002h ; BUG? this is 2002h in PCP/M 2.04e
|
||
dw offset cio_flags
|
||
dw 6001h
|
||
dw offset bdos_8087_inuse
|
||
dw 9004h
|
||
dw offset proc_onblock
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
S_SERIAL: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:230Bo
|
||
push es
|
||
mov es, es:userDS
|
||
mov di, dx
|
||
mov si, offset sernumber+10
|
||
mov cx, 3
|
||
db 0F3h, 2Eh ;REP CS:
|
||
movsw
|
||
pop es
|
||
mov bx, cx
|
||
retn
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
P_CODE: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:230Do
|
||
inc dx
|
||
jz p_code_get
|
||
dec dx
|
||
mov es:proc_errcode, dx
|
||
|
||
p_code_get: ; CODE XREF: P_CODE+1j
|
||
mov bx, es:proc_errcode
|
||
retn
|
||
;
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
DRV_LOGINVEC: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:22F3o
|
||
mov bx, login_vector
|
||
ret
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
DRV_GET: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:22F5o
|
||
mov bl, es:proc_drive
|
||
retn
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
F_DMAOFF: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:22F7o
|
||
mov es:word ptr proc_dma, dx
|
||
retn
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
DRV_ROVEC: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:22F9o
|
||
mov bx, readonly_vector
|
||
ret
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
F_USERNUM: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:22FBo
|
||
mov al, dl
|
||
cmp al, 0FFh
|
||
jnz f_setuid
|
||
mov bl, es:proc_uid
|
||
retn
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
f_setuid: ; CODE XREF: F_USERNUM+4j
|
||
and al, 0Fh
|
||
mov es:proc_uid, al
|
||
retn
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
F_MULTISEC: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:22FDo
|
||
xor bx, bx
|
||
or dl, dl
|
||
jz f_bad_multisec
|
||
cmp dl, 81h
|
||
jnb f_bad_multisec
|
||
mov es:proc_multisec, dl
|
||
retn
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
f_bad_multisec: ; CODE XREF: F_MULTISEC+4j
|
||
; F_MULTISEC+9j
|
||
dec bx
|
||
retn
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
F_ERRMODE: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:22FFo
|
||
mov es:proc_errmode, dl
|
||
retn
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
F_DMASEG: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:2303o
|
||
mov es:word ptr proc_dma+2, dx
|
||
retn
|
||
|
||
|
||
|
||
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
; S u b r o u t i n e
|
||
|
||
F_DMAGET: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:2305o
|
||
mov ax, es:word ptr proc_dma+2
|
||
mov es:userES, ax
|
||
mov bx, es:word ptr proc_dma
|
||
retn
|
||
|
||
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
T_SET: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:2307o
|
||
mov si, dx
|
||
mov di, offset date_days
|
||
pushf
|
||
cli
|
||
push es
|
||
push ds
|
||
mov ds, es:userDS
|
||
pop es
|
||
|
||
movsw
|
||
movsw
|
||
push es
|
||
pop ds
|
||
pop es
|
||
|
||
mov date_secs, 0
|
||
popf
|
||
retn
|
||
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
|
||
|
||
T_GET: ; CODE XREF: bdos:2317u
|
||
; DATA XREF: bdos:2309o
|
||
mov di, dx
|
||
mov si, offset date_days
|
||
push es
|
||
mov es, es:userDS
|
||
pushf
|
||
cli
|
||
movsw
|
||
movsw
|
||
mov bl, date_secs
|
||
popf
|
||
pop es
|
||
retn
|
||
|
||
end
|
||
|