mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-27 02:14:19 +00:00
Upload
Digital Research
This commit is contained in:
112
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/03/rlsmx.asm
Normal file
112
MPM OPERATING SYSTEMS/MPM I/MPM I SOURCE/03/rlsmx.asm
Normal file
@@ -0,0 +1,112 @@
|
||||
$title ('MP/M 1.1 Release MX queues Procedure')
|
||||
name rlsmx
|
||||
cseg
|
||||
;release$MX:
|
||||
;do;
|
||||
|
||||
;/*
|
||||
; Copyright (C) 1979, 1980
|
||||
; Digital Research
|
||||
; P.O. Box 579
|
||||
; Pacific Grove, CA 93950
|
||||
|
||||
; Revised:
|
||||
; 23 Jan 80 by Thomas Rolander
|
||||
;*/
|
||||
|
||||
; writeq:
|
||||
extrn writeq
|
||||
; procedure (uqcbadr) byte external;
|
||||
; declare uqcbadr address;
|
||||
; end writeq;
|
||||
|
||||
; declare qlr address external;
|
||||
extrn qlr
|
||||
|
||||
|
||||
;/*
|
||||
; rlsMX:
|
||||
|
||||
; Note- this procedure must be called from within a
|
||||
; critical region.
|
||||
;*/
|
||||
|
||||
; rlsMX:
|
||||
rlsmx:
|
||||
public rlsmx
|
||||
; procedure (rlr$pdadr) public;
|
||||
dseg
|
||||
; declare rls$pdadr address;
|
||||
; declare ret byte;
|
||||
; decrare xqlradr address;
|
||||
xqlradr:
|
||||
ds 2
|
||||
; declare xqlr based xqlradr address;
|
||||
; declare que based xqlradr structure (
|
||||
; cqueue,pdadr address);
|
||||
cseg
|
||||
|
||||
; xqlradr = qlr;
|
||||
LHLD QLR
|
||||
XCHG ; DE = xqlradr
|
||||
; do while xqlradr <> 0;
|
||||
@5:
|
||||
MOV A,D
|
||||
ORA E
|
||||
RZ
|
||||
; if que.name(0) = 'M' then
|
||||
LXI H,2
|
||||
DAD D
|
||||
MOV A,M
|
||||
CPI 4DH
|
||||
JNZ @1
|
||||
; do;
|
||||
; if que.name(1) = 'X' then
|
||||
INX H
|
||||
MOV A,M
|
||||
CPI 58H
|
||||
JNZ @1
|
||||
; do;
|
||||
; if que.msgcnt = 0 then
|
||||
LXI H,16H
|
||||
DAD D
|
||||
MOV A,M
|
||||
INX H
|
||||
ORA M
|
||||
JNZ @1
|
||||
; do;
|
||||
; if que.pdadr = rls$pdadr then
|
||||
INX H
|
||||
MOV A,M
|
||||
CMP C
|
||||
JNZ @1
|
||||
INX H
|
||||
MOV A,M
|
||||
CMP B
|
||||
JNZ @1
|
||||
; do;
|
||||
; ret = writeq (.xqlradr);
|
||||
PUSH B
|
||||
PUSH D
|
||||
xchg
|
||||
shld xqlradr
|
||||
LXI B,XQLRADR
|
||||
CALL WRITEQ
|
||||
POP D
|
||||
POP B
|
||||
; end;
|
||||
; end;
|
||||
; end;
|
||||
; end;
|
||||
@1:
|
||||
; xqlradr = xqlr;
|
||||
XCHG
|
||||
MOV E,M
|
||||
INX H
|
||||
MOV D,M
|
||||
; end;
|
||||
JMP @5
|
||||
; end rlsMX;
|
||||
;end release$MX;
|
||||
END
|
||||
|
||||
Reference in New Issue
Block a user