Digital Research
This commit is contained in:
2020-11-06 18:50:37 +01:00
parent 621ed8ccaf
commit 31738079c4
8481 changed files with 1888323 additions and 0 deletions

View File

@@ -0,0 +1,203 @@
$title ('MP/M 1.0 Abort Process')
name abort
cseg
;abort:
;do;
;$include (copyrt.lit)
;/*
; Copyright (C) 1979
; Digital Research
; P.O. Box 579
; Pacific Grove, CA 93950
;*/
;$include (common.lit)
;$nolist
;$include (proces.lit)
;$nolist
;$include (queue.lit)
;$nolist
;$include (xdos.lit)
;$nolist
;$include (datapg.ext)
;$nolist
;$include (xdos.ext)
;$nolist
;$include (bdos.ext)
;$nolist
; declare rlr address external;
extrn rlr
; nfxdos:
; procedure (func,info) external;
extrn nfxdos
; declare func byte;
; declare info address;
; end nfxdos;
; xdos:
; procedure (func,info) byte external;
extrn xdos
; declare func byte;
; declare info address;
; end xdos;
; printb:
; procedure (bufferadr) external;
extrn printb
; declare bufferadr address;
; end printb;
; declare rlrpd based rlr process$descriptor;
;/*
dseg
; Abort Process Data Segment
;*/
; declare abort$pd process$descriptor public
; initial (0,rtr$status,20,.abort$stk+28,
; 'ABORT ',0,0ffh,0);
abortpd:
public abortpd
dw 0 ; pl
db 0 ; status
db 20 ; priority
dw abortstk+38 ; stkptr
db 'ABORT ' ; name
db $-$ ; console
db 0ffh ; memseg (system)
dw $-$ ; b
dw $-$ ; thread
ds 10
; declare abort$stk (20) address
; initial (restarts,.abort);
abortstk:
dw 0c7c7h,0c7c7h,0c7c7h
dw 0c7c7h,0c7c7h,0c7c7h
dw 0c7c7h,0c7c7h,0c7c7h
db 'FACBEDLHxiyifacbedlh'
dw abort
; declare abort$lqcb structure (
; lqueue,
; buf (12) byte )
; initial (0,'ABORT ',10,1);
abortlqcb:
dw $-$ ; ql
db 'ABORT ' ; name
dw 10 ; msglen
dw 1 ; nmbmsgs
dw $-$ ; dqph
dw $-$ ; nqph
dw $-$ ; mh
dw $-$ ; mt
dw $-$ ; bh
ds 12 ; buf (12) byte
; declare abort$uqcb userqcbhead public
; initial (.abort$lqcb,.apcb.param);
abortuqcb:
dw abortlqcb ; pointer
dw param ; msgadr
; declare abort$parameter$control$block structure (
apcb:
; pdadr address,
pdadr: dw 0
; param address,
param: ds 2
; pname (8) byte ) initial (0);
pname: ds 8
; declare console byte at (.apcb.param(1));
console equ param+1
cseg
abortfail:
db 'Abort failed.'
db '$'
;/*
; abort:
; The purpose of the abort process is to abort
; the specified process.
; Entry Conditions:
; None
; Exit Conditions:
; None
;*/
; abort:
abort:
; procedure public;
public abort
; declare i byte;
; call nfxdos (make$queue,.abort$lqcb);
LXI D,ABORTLQCB
MVI C,86H
; do forever;
@4:
CALL NFXDOS
; call nfxdos (read$queue,.abort$uqcb);
LXI D,ABORTUQCB
MVI C,89H
CALL NFXDOS
; rlrpd.console = console;
LXI B,0EH
LHLD RLR
DAD B
LDA CONSOLE
MOV M,A
; i = 0;
MVI C,8
LXI H,PNAME
; do while i <> 8;
@6:
; if field(i) = 0 then
MOV A,M
ORA A
JNZ @1
; do while i <> 8;
@8:
; field(i) = ' ';
MVI M,20H
; i = i + 1;
INX H
DCR C
JNZ @8
JMP @7
; end;
@1:
; else i = i + 1;
INX H
DCR C
JNZ @6
; end;
@7:
; /* parameters to XDOS abort process are terminate
; system or non-sytem process & release memory segment */
; apcb.param = 00ffh;
lxi h,00ffh
shld param
; if xdos (abort$process,.apcb) = 255 then
LXI D,apcb
MVI C,9dH
CALL XDOS
INR L
; do;
; call printb (.('Abort failed.','$'));
LXI B,abortfail
CZ PRINTB
; end;
; call nfxdos (detach,0);
MVI C,93H
; end; /* forever */
JMP @4
; end abort;
;end abort;
END