mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-25 09:24:19 +00:00
160 lines
2.4 KiB
NASM
160 lines
2.4 KiB
NASM
title 'MP/M II V2.0 Release Console & List Devices'
|
||
name 'rlsdev'
|
||
dseg
|
||
@@rlsdev:
|
||
public @@rlsdev
|
||
cseg
|
||
;release$devices:
|
||
@rlsdev:
|
||
public @rlsdev
|
||
;do;
|
||
|
||
;$include (copyrt.lit)
|
||
;/*
|
||
; Copyright (C) 1979,1980,1981
|
||
; Digital Research
|
||
; P.O. Box 579
|
||
; Pacific Grove, CA 93950
|
||
;
|
||
; Revised:
|
||
; 14 Sept 81 by Thomas Rolander
|
||
;*/
|
||
;$include (common.lit)
|
||
;$nolist
|
||
;$include (proces.lit)
|
||
;$nolist
|
||
;$include (datapg.ext)
|
||
;$nolist
|
||
;$include (proces.ext)
|
||
;$nolist
|
||
|
||
; declare console$attached (1) address external;
|
||
extrn cnsatt
|
||
|
||
; declare console$queue (1) address external;
|
||
extrn cnsque
|
||
|
||
; declare list$attached (1) address external;
|
||
extrn lstatt
|
||
|
||
; declare list$queue (1) address external;
|
||
extrn lstque
|
||
|
||
; declare drl address external;
|
||
extrn drl
|
||
|
||
; declare sysdat address external;
|
||
extrn sysdat
|
||
|
||
; declare nmbdev literally '16';
|
||
nmbdev equ 16
|
||
|
||
|
||
; exitr:
|
||
extrn exitr
|
||
; procedure external;
|
||
; end exitr;
|
||
|
||
; detach:
|
||
extrn detach
|
||
; procedure (pdadr) external;
|
||
; declare pdadr address;
|
||
; end detach;
|
||
|
||
; detlst:
|
||
extrn detlst
|
||
; procedure (pdadr) external;
|
||
; declare pdadr address;
|
||
; end detlst;
|
||
|
||
dseg
|
||
; declare device byte;
|
||
device: ds 1
|
||
; declare rlsdevsub address;
|
||
rlsdevsub:
|
||
ds 2
|
||
|
||
cseg
|
||
; rlscon:
|
||
rlscon:
|
||
; procedure (pdadr) public;
|
||
public rlscon
|
||
|
||
; *** NOTE *** this procedure assumes that a
|
||
; critical region has been entered
|
||
|
||
lxi d,cnsatt
|
||
lxi h,rlsconsub
|
||
jmp rlsdev
|
||
|
||
; rlslst:
|
||
rlslst:
|
||
; procedure (pdadr) public;
|
||
public rlslst
|
||
|
||
; *** NOTE *** this procedure assumes that a
|
||
; critical region has been entered
|
||
|
||
lxi d,lstatt
|
||
lxi h,rlslstsub
|
||
; jmp rlsdev
|
||
|
||
rlsdev:
|
||
;BC = pdadr
|
||
;DE = attach table address
|
||
;HL = rls subroutine address
|
||
|
||
shld rlsdevsub
|
||
xra a
|
||
|
||
rlsdevloop:
|
||
sta device
|
||
cpi nmbdev
|
||
rz
|
||
ldax d
|
||
inx d
|
||
cmp c
|
||
jnz rlsdevcont
|
||
ldax d
|
||
cmp b
|
||
jnz rlsdevcont
|
||
lxi h,rlsdevcont
|
||
push h
|
||
lhld rlsdevsub
|
||
push h
|
||
lxi h,000eh
|
||
dad b ;HL = .pd.console
|
||
lda device
|
||
ret
|
||
rlsdevcont:
|
||
inx d
|
||
lda device
|
||
inr a
|
||
jmp rlsdevloop
|
||
|
||
rlsconsub:
|
||
push d
|
||
push b
|
||
mov m,a
|
||
call detach
|
||
pop b
|
||
pop d
|
||
ret
|
||
|
||
rlslstsub:
|
||
push d
|
||
push b
|
||
rrc
|
||
rrc
|
||
rrc
|
||
rrc
|
||
mov m,a
|
||
call detlst
|
||
pop b
|
||
pop d
|
||
ret
|
||
|
||
|
||
;end release$devices;
|
||
END
|
||
|