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,218 @@
title 'MP/M II V2.0 Abort Resident System Process'
name 'abort'
cseg
;abort:
;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 (queue.lit)
;$nolist
;$include (mon2.lit)
;$nolist
;$include (datapg.ext)
;$nolist
;$include (mon2.ext)
;$nolist
;$include (bdos.ext)
;$nolist
; declare rlrpd based rlr process$descriptor;
;/*
; Abort Process Data Segment
;*/
; declare os address;
os: dw $-$
; declare abort$pd process$descriptor
; initial (0,rtr$status,20,.abort$entrypt,
; 'ABORT ',' '+80h,0,0ffh,0);
abortpd:
dw 0 ; pl
db 0 ; status
db 20 ; priority
dw abortentrypt ; stkptr
db 'ABORT ',' '+80h ; name
db $-$ ; console
db 0ffh ; memseg (system)
dw $-$ ; b
dw $-$ ; thread
dw $-$ ; disk set DMA
db $-$ ; disk select / user code
dw $-$ ; dcnt
db $-$ ; searchl
dw $-$ ; searcha
dw $-$ ; drvact
ds 20 ; registers
ds 2 ; scratch
apcb:
abtpd: dw 0
abortmsg:
param:
dskslct: ds 1
console: ds 1
pname: ds 8
abtcns: ds 1
ds 1 ;filler for 12 byte message
; declare abort$stk (15) address
; initial (restarts,.abort);
abortstk:
dw 0c7c7h,0c7c7h,0c7c7h
dw 0c7c7h,0c7c7h,0c7c7h
dw 0c7c7h,0c7c7h,0c7c7h
dw 0c7c7h,0c7c7h,0c7c7h
dw 0c7c7h,0c7c7h
abortentrypt:
dw abort
; declare abort$lqcb structure (
; lqueue,
; buf (14) byte )
; initial (0,'ABORT ',12,1);
abortlqcb:
dw $-$ ; ql
db 'ABORT ' ; name
dw 12 ; msglen
dw 1 ; nmbmsgs
dw $-$ ; dqph
dw $-$ ; nqph
dw $-$ ; mh
dw $-$ ; mt
dw $-$ ; bh
ds 2 ; link
ds 12 ; buf (12) byte
; declare abort$uqcb userqcbhead
; initial (.abort$lqcb,.dskslct);
abortuqcb:
dw abortlqcb ; pointer
dw abortmsg ; msgadr
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;
; declare i byte;
; call mon1 (make$queue,.abort$lqcb);
LXI D,ABORTLQCB
MVI C,86H
; do forever;
@4:
CALL MON1
; call mon1 (read$queue,.abort$uqcb);
LXI D,ABORTUQCB
MVI C,89H
CALL MON1
; abortpd.console = console;
LDA CONSOLE
sta abortpd+0eh
push psw ;save abtcns
lxi h,pname
mvi c,10
namefill:
mov a,m
ora a
jz spacefill
cpi ' '
jz cnspcfd
inx h
dcr c
jnz namefill
jmp @7
cnspcfd:
inx h
mov a,m
pop d
push psw
dcx h
spacefill:
mvi m,' '
inx h
dcr c
jnz spacefill
@7:
pop psw
ani 0fh
sta abtcns
; /* parameters to MON2 abort process are terminate
; system or non-sytem process & release memory segment */
; apcb.param = 00ffh;
lxi h,00ffh
shld param
; if mon2 (abort$process,.apcb) = 255 then
LXI D,apcb
MVI C,9dH
CALL MON2
INR L
; do;
; call mon1 (9,.('Abort failed.','$'));
mvi c,9
LXI d,abortfail
cz mon1
; end;
@9:
; call mon1 (detlst,0);
mvi c,9fh
call mon1
; call mon1 (detach,0);
MVI C,93H
; end; /* forever */
JMP @4
; end abort;
; mon1:
mon1:
; procedure (func,info) external;
; declare func byte;
; declare info address;
; end mon1;
; mon2:
mon2:
; procedure (func,info) byte external;
; declare func byte;
; declare info address;
; end mon2;
lhld os
pchl
;end abort;
END