Files
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

544 lines
26 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE ABORT
OBJECT MODULE PLACED IN RABT.OBJ
COMPILER INVOKED BY: :F0: RABT.PLM XREF OPTIMIZE(3) DEBUG
$ title ('CCP/M-86 1.0, Abort a Program - RSP')
$ compact
1 abort:
do;
/* Modified 3/15/83 to force an ATTACH console call */
$include (:f2:copyrt.lit)
=
= /*
= Copyright (C) 1983
= Digital Research
= P.O. Box 579
= Pacific Grove, CA 93950
= */
=
$include (:f2:comlit.lit)
=
2 1 = declare
= lit literally 'literally',
= dcl lit 'declare',
= true lit '0ffh',
= false lit '0',
= no lit 'not',
= boolean lit 'byte',
= forever lit 'while true',
= cr lit '13',
= lf lit '10',
= tab lit '9',
= ctrlc lit '3',
= ff lit '12',
= page$len$offset lit '1ch',
= nopage$mode$offset lit '2Ch',
= sectorlen lit '128';
$include (:f2:mfunc.lit)
=
= /* Concurrent CP/M function numbers */
=
3 1 = dcl m$prtbuf lit '9',
= m$select lit '14',
= m$openf lit '15',
= m$closef lit '16',
= m$deletef lit '19',
= m$readf lit '20',
= m$writef lit '21',
= m$makef lit '22',
= m$getlogin lit '24',
= m$curdsk lit '25',
= m$setdma lit '26',
= m$setatt lit '30',
= m$setusr lit '32',
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 2
= m$readrf lit '33',
= m$writerf lit '34',
= m$resetdrv lit '37',
= m$errmode lit '45',
= m$dirbios lit '50',
= m$makeq lit '134',
= m$openq lit '135',
= m$deleteq lit '136',
= m$readq lit '137',
= m$creadq lit '138',
= m$writeq lit '139',
= m$cwriteq lit '140',
= m$delay lit '141',
= m$dispatch lit '142',
= m$setprior lit '145',
= m$attach lit '146',
= m$detach lit '147',
= m$setcns lit '148',
= m$parse lit '152',
= m$getcns lit '153',
= m$sysdat lit '154',
= m$getpd lit '156',
= m$abort lit '157';
=
= /* Internal calls */
=
4 1 = dcl mi$sleep lit '0212H',
= mi$wakeup lit '0213H';
=
/**** Vax commands for generation:
$ ccpmsetup !Set up environment
$ asm86 rhabt.a86 !Rsp Header ABorT
$ plm86 rabt.plm 'p1' 'p2' 'p3' 'p4' optimize(3) debug !Rsp ABorT
$ link86 rhabt.obj, rabt.obj to rabt.lnk
$ loc86 rabt.lnk od(sm(code,dats,data,stack,const))-
ad(sm(code(0), dats(10000h))) ss(stack(0)) to rabt.
$ h86 rabt
**** Then, on a micro:
A>vax rabt.h86 $fans
A>gencmd rabt data[b1000]
A>ren abort.rsp=rabt.cmd
**** Notes:
The stack is declared in the assemble module, RSPABT.A86.
The const(ants) come last to force hex generation.
****/
5 1 mon1:
procedure (func,info) external;
6 2 declare func byte;
7 2 declare info address;
8 2 end mon1;
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 3
9 1 mon2:
procedure (func,info) byte external;
10 2 declare func byte;
11 2 declare info address;
12 2 end mon2;
13 1 mon3:
procedure (f,a) address external;
14 2 dcl f byte, a address;
15 2 end mon3;
16 1 patch: procedure public; /* dummy area for patching code segments */
17 2 declare i address;
/* first statement is 9 bytes, rest are 5 bytes */
18 2 i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
23 2 i=i+5; i=i+5; i=i+5; i=i+5; i=i+5; /* about 54 bytes */
28 2 end patch;
$include (:f2:proces.lit)
=
= /*
= Proces Literals MP/M-8086 II
= */
=
29 1 = declare pnamsiz literally '8';
=
30 1 = declare pd$hdr literally 'structure
= (link word,thread word,stat byte,prior byte,flag word,
= name (8) byte,uda word,dsk byte,user byte,ldsk byte,luser byte,
= mem word';
=
31 1 = declare pd$structure literally 'pd$hdr,
= dvract word,wait word,org byte,net byte,parent word,
= cns byte,abort byte,conmode word,lst byte,sf3 byte,sf4 byte,sf5 byte,
= reservd (4) byte,pret word,scratch word)';
=
32 1 = declare psrun lit '00',
= pspoll lit '01',
= psdelay lit '02',
= psswap lit '03',
= psterm lit '04',
= pssleep lit '05',
= psdq lit '06',
= psnq lit '07',
= psflagwait lit '08',
= psciowait lit '09';
=
33 1 = declare pf$sys lit '00001h',
= pf$keep lit '00002h',
= pf$kernal lit '00004h',
= pf$pure lit '00008h',
= pf$table lit '00010h',
= pf$resource lit '00020h',
= pf$raw lit '00040h',
= pf$ctlc lit '00080h',
= pf$active lit '00100h',
= pf$tempkeep lit '00200h',
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 4
= pf$ctld lit '00400h',
= pf$childabort lit '00800h',
= pf$noctls lit '01000h';
=
34 1 = declare pcm$11 lit '00001h',
= pcm$ctls lit '00002h',
= pcm$rout lit '00004h',
= pcm$ctlc lit '00008h',
= pcm$ctlo lit '00080h',
= pcm$rsx lit '00300h';
35 1 dcl pd$pointer pointer;
36 1 dcl pd$ptr structure (offset word, segment word) at(@pd$pointer);
37 1 dcl pd based pd$pointer pd$structure;
38 1 dcl rsplink word external;
$include (:f2:qd.lit)
=
= /* Queue Descriptor */
=
39 1 = dcl qnamsiz lit '8';
=
40 1 = dcl qd$structure lit 'structure(
= link word,
= net byte,
= org byte,
= flags word,
= name(qnamsiz) byte,
= msglen word,
= nmsgs word,
= dq word,
= nq word,
= msgcnt word,
= msgout word,
= buffer word)';
=
= /* queue flag values */
=
41 1 = dcl qf$mx lit '001h'; /* Mutual Exclusion */
42 1 = dcl qf$keep lit '002h'; /* NO DELETE */
43 1 = dcl qf$hide lit '004h'; /* Not User writable */
44 1 = dcl qf$rsp lit '008h'; /* rsp queue */
45 1 = dcl qf$table lit '010h'; /* from qd table */
46 1 = dcl qf$rpl lit '020h'; /* rpl queue */
47 1 = dcl qf$dev lit '040h'; /* device queue */
=
= /* Queue Parameter Block */
=
48 1 = dcl qpb$structure lit 'structure(
= flgs byte,
= net byte,
= qaddr word,
= nmsgs word,
= buffptr word,
= name (qnamsiz) byte )';
=
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 5
49 1 dcl abt$qd$buf (131) byte;
50 1 dcl abt$cmd structure(
pd address, tail (129) byte);
51 1 dcl abt$qpb qpb$structure initial(0,0,0,1,.abt$cmd,'ABORT ');
52 1 dcl abt$qd qd$structure initial (
0,0,0,qf$keep + qf$rsp,'ABORT ',131,1,0,0,0,0,.abt$qd$buf);
53 1 dcl fcb (32) byte;
54 1 dcl pfcb structure (
filename address,
fcbadr address) initial (.abt$cmd.tail, .fcb);
55 1 declare abort$pb structure (
pd address,
term address,
cns byte,
net byte,
pname (8) byte) initial (
0,00ffh,0,0,' ');
56 1 dcl i byte;
57 1 dcl console word;
58 1 dcl mpm$86 lit '1130h';
/*
Main Program
*/
59 1 plm$start:
procedure public;
60 2 call mon1(m$makeq,.abt$qd); /* make ABORT queue */
61 2 call mon1(m$openq,.abt$qpb); /* open it */
62 2 pd$ptr.segment = rsplink;
63 2 call mon1(m$setprior,200); /* back to the same as transients */
64 2 do while true;
65 3 call mon1(m$readq,.abt$qpb);
66 3 pd$ptr.offset = abt$cmd.pd; /* set console to same */
67 3 call mon1(m$setcns, pd.cns); /* of who typed ABORT */
68 3 abort$pb.cns = pd.cns;
69 3 pfcb.filename = mon3(m$parse, .pfcb);
/* get name of program to abort */
70 3 call move (8,.fcb(1),.abort$pb.pname);
/* fcb(9)='$'; DEBUG
call mon1(m$prtbuf, .fcb(1)); */
71 3 if pfcb.filename <> 0 then /* console number specified */
72 3 do;
73 4 pfcb.filename = mon3(m$parse, .pfcb);
74 4 i = 1; console = 0;
76 4 do while fcb(i) <> ' ' and i < 4;
77 5 if (fcb(i) := fcb(i) - '0') <= 9 then
78 5 do;
79 6 console = fcb(i) + 10 * console;
80 6 i = i + 1;
81 6 end;
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 6
else
82 5 i = 255; /* non - numeric */
83 5 end;
84 4 if console > 253 or i = 255 then
85 4 do;
86 5 call mon1(m$prtbuf, .(cr,lf, 'Illegal Console, Use 0-253 $'));
87 5 abort$pb.cns = 0ffh;
88 5 end;
else
89 4 abort$pb.cns = low(console);
90 4 end;
91 3 if abort$pb.cns <> 0ffh then
92 3 if mon2(m$abort, .abort$pb) = 0ffh then
93 3 do;
94 4 call mon1(m$prtbuf, .(cr,lf, 'Abort Failed.','$'));
95 4 end;
/* abort first PD found with same name and console */
/* consistent with MP/M-80 II but not MP/M 1.x */
96 3 call mon1(m$attach,0); /* make sure we own the console before */
97 3 call mon1(m$detach, 0); /* calling detach */
98 3 pfcb.filename = .abt$cmd.tail;
99 3 end;
100 2 end plmstart;
101 1 end abort;
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 7
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
13 0000H 2 A. . . . . . . . . WORD PARAMETER 14
1 0002H ABORT. . . . . . . PROCEDURE STACK=0000H
37 0021H 1 ABORT. . . . . . . BYTE MEMBER(PD)
55 0036H 14 ABORTPB. . . . . . STRUCTURE INITIAL 68 70 87 89 91 92
50 00C9H 131 ABTCMD . . . . . . STRUCTURE 51 54 66 98
52 0016H 28 ABTQD. . . . . . . STRUCTURE INITIAL 60
49 0046H 131 ABTQDBUF . . . . . BYTE ARRAY(131) 52
51 0006H 16 ABTQPB . . . . . . STRUCTURE INITIAL 61 65
2 BOOLEAN. . . . . . LITERALLY
52 001AH 2 BUFFER . . . . . . WORD MEMBER(ABTQD)
51 0006H 2 BUFFPTR. . . . . . WORD MEMBER(ABTQPB)
55 0004H 1 CNS. . . . . . . . BYTE MEMBER(ABORTPB) 68 87 89 91
37 0020H 1 CNS. . . . . . . . BYTE MEMBER(PD) 67 68
37 0022H 2 CONMODE. . . . . . WORD MEMBER(PD)
57 0044H 2 CONSOLE. . . . . . WORD 75 79 84 89
2 CR . . . . . . . . LITERALLY 86 94
2 CTRLC. . . . . . . LITERALLY
2 DCL. . . . . . . . LITERALLY
52 0012H 2 DQ . . . . . . . . WORD MEMBER(ABTQD)
37 0012H 1 DSK. . . . . . . . BYTE MEMBER(PD)
37 0018H 2 DVRACT . . . . . . WORD MEMBER(PD)
13 0000H 1 F. . . . . . . . . BYTE PARAMETER 14
2 FALSE. . . . . . . LITERALLY
53 014CH 32 FCB. . . . . . . . BYTE ARRAY(32) 54 70 76 77 79
54 0002H 2 FCBADR . . . . . . WORD MEMBER(PFCB)
2 FF . . . . . . . . LITERALLY
54 0000H 2 FILENAME . . . . . WORD MEMBER(PFCB) 69 71 73 98
37 0006H 2 FLAG . . . . . . . WORD MEMBER(PD)
52 0004H 2 FLAGS. . . . . . . WORD MEMBER(ABTQD)
51 0000H 1 FLGS . . . . . . . BYTE MEMBER(ABTQPB)
2 FOREVER. . . . . . LITERALLY
5 0000H 1 FUNC . . . . . . . BYTE PARAMETER 6
9 0000H 1 FUNC . . . . . . . BYTE PARAMETER 10
17 0000H 2 I. . . . . . . . . WORD 18 19 20 21 22 23 24 25 26 27
56 016CH 1 I. . . . . . . . . BYTE 74 76 77 79 80 82 84
9 0000H 2 INFO . . . . . . . WORD PARAMETER 11
5 0000H 2 INFO . . . . . . . WORD PARAMETER 7
37 0014H 1 LDSK . . . . . . . BYTE MEMBER(PD)
2 LF . . . . . . . . LITERALLY 86 94
52 0000H 2 LINK . . . . . . . WORD MEMBER(ABTQD)
37 0000H 2 LINK . . . . . . . WORD MEMBER(PD)
2 LIT. . . . . . . . LITERALLY 2 3 4 32 33 34 39 40 41 42 43
44 45 46 47 48 58
LOW. . . . . . . . BUILTIN 89
37 0024H 1 LST. . . . . . . . BYTE MEMBER(PD)
37 0015H 1 LUSER. . . . . . . BYTE MEMBER(PD)
3 MABORT . . . . . . LITERALLY 92
3 MATTACH. . . . . . LITERALLY 96
3 MCLOSEF. . . . . . LITERALLY
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 8
3 MCREADQ. . . . . . LITERALLY
3 MCURDSK. . . . . . LITERALLY
3 MCWRITEQ . . . . . LITERALLY
3 MDELAY . . . . . . LITERALLY
3 MDELETEF . . . . . LITERALLY
3 MDELETEQ . . . . . LITERALLY
3 MDETACH. . . . . . LITERALLY 97
3 MDIRBIOS . . . . . LITERALLY
3 MDISPATCH. . . . . LITERALLY
37 0016H 2 MEM. . . . . . . . WORD MEMBER(PD)
3 MERRMODE . . . . . LITERALLY
3 MGETCNS. . . . . . LITERALLY
3 MGETLOGIN. . . . . LITERALLY
3 MGETPD . . . . . . LITERALLY
4 MISLEEP. . . . . . LITERALLY
4 MIWAKEUP . . . . . LITERALLY
3 MMAKEF . . . . . . LITERALLY
3 MMAKEQ . . . . . . LITERALLY 60
5 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(0) STACK=0000H 60 61 63 65 67 86
94 96 97
9 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H 92
13 0000H MON3 . . . . . . . PROCEDURE WORD EXTERNAL(2) STACK=0000H 69 73
3 MOPENF . . . . . . LITERALLY
3 MOPENQ . . . . . . LITERALLY 61
MOVE . . . . . . . BUILTIN 70
3 MPARSE . . . . . . LITERALLY 69 73
58 MPM86. . . . . . . LITERALLY
3 MPRTBUF. . . . . . LITERALLY 86 94
3 MREADF . . . . . . LITERALLY
3 MREADQ . . . . . . LITERALLY 65
3 MREADRF. . . . . . LITERALLY
3 MRESETDRV. . . . . LITERALLY
3 MSELECT. . . . . . LITERALLY
3 MSETATT. . . . . . LITERALLY
3 MSETCNS. . . . . . LITERALLY 67
3 MSETDMA. . . . . . LITERALLY
3 MSETPRIOR. . . . . LITERALLY 63
3 MSETUSR. . . . . . LITERALLY
52 0016H 2 MSGCNT . . . . . . WORD MEMBER(ABTQD)
52 000EH 2 MSGLEN . . . . . . WORD MEMBER(ABTQD)
52 0018H 2 MSGOUT . . . . . . WORD MEMBER(ABTQD)
3 MSYSDAT. . . . . . LITERALLY
3 MWRITEF. . . . . . LITERALLY
3 MWRITEQ. . . . . . LITERALLY
3 MWRITERF . . . . . LITERALLY
52 0006H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(ABTQD)
51 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(ABTQPB)
37 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(PD)
55 0005H 1 NET. . . . . . . . BYTE MEMBER(ABORTPB)
52 0002H 1 NET. . . . . . . . BYTE MEMBER(ABTQD)
51 0001H 1 NET. . . . . . . . BYTE MEMBER(ABTQPB)
37 001DH 1 NET. . . . . . . . BYTE MEMBER(PD)
52 0010H 2 NMSGS. . . . . . . WORD MEMBER(ABTQD)
51 0004H 2 NMSGS. . . . . . . WORD MEMBER(ABTQPB)
2 NO . . . . . . . . LITERALLY
2 NOPAGEMODEOFFSET . LITERALLY
52 0014H 2 NQ . . . . . . . . WORD MEMBER(ABTQD)
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 9
36 0000H 2 OFFSET . . . . . . WORD MEMBER(PDPTR) 66
52 0003H 1 ORG. . . . . . . . BYTE MEMBER(ABTQD)
37 001CH 1 ORG. . . . . . . . BYTE MEMBER(PD)
2 PAGELENOFFSET. . . LITERALLY
37 001EH 2 PARENT . . . . . . WORD MEMBER(PD)
16 0002H 60 PATCH. . . . . . . PROCEDURE PUBLIC STACK=0002H
34 PCM11. . . . . . . LITERALLY
34 PCMCTLC. . . . . . LITERALLY
34 PCMCTLO. . . . . . LITERALLY
34 PCMCTLS. . . . . . LITERALLY
34 PCMROUT. . . . . . LITERALLY
34 PCMRSX . . . . . . LITERALLY
55 0000H 2 PD . . . . . . . . WORD MEMBER(ABORTPB)
50 0000H 2 PD . . . . . . . . WORD MEMBER(ABTCMD) 66
37 0000H 48 PD . . . . . . . . STRUCTURE BASED(PDPOINTER) 67 68
30 PDHDR. . . . . . . LITERALLY 37
35 0002H 4 PDPOINTER. . . . . POINTER 36 37 67 68
36 0002H 4 PDPTR. . . . . . . STRUCTURE AT 62 66
31 PDSTRUCTURE. . . . LITERALLY 37
33 PFACTIVE . . . . . LITERALLY
54 0032H 4 PFCB . . . . . . . STRUCTURE INITIAL 69 71 73 98
33 PFCHILDABORT . . . LITERALLY
33 PFCTLC . . . . . . LITERALLY
33 PFCTLD . . . . . . LITERALLY
33 PFKEEP . . . . . . LITERALLY
33 PFKERNAL . . . . . LITERALLY
33 PFNOCTLS . . . . . LITERALLY
33 PFPURE . . . . . . LITERALLY
33 PFRAW. . . . . . . LITERALLY
33 PFRESOURCE . . . . LITERALLY
33 PFSYS. . . . . . . LITERALLY
33 PFTABLE. . . . . . LITERALLY
33 PFTEMPKEEP . . . . LITERALLY
59 003EH 322 PLMSTART . . . . . PROCEDURE PUBLIC STACK=0008H
55 0006H 8 PNAME. . . . . . . BYTE ARRAY(8) MEMBER(ABORTPB) 70
29 PNAMSIZ. . . . . . LITERALLY
37 002CH 2 PRET . . . . . . . WORD MEMBER(PD)
37 0005H 1 PRIOR. . . . . . . BYTE MEMBER(PD)
32 PSCIOWAIT. . . . . LITERALLY
32 PSDELAY. . . . . . LITERALLY
32 PSDQ . . . . . . . LITERALLY
32 PSFLAGWAIT . . . . LITERALLY
32 PSNQ . . . . . . . LITERALLY
32 PSPOLL . . . . . . LITERALLY
32 PSRUN. . . . . . . LITERALLY
32 PSSLEEP. . . . . . LITERALLY
32 PSSWAP . . . . . . LITERALLY
32 PSTERM . . . . . . LITERALLY
51 0002H 2 QADDR. . . . . . . WORD MEMBER(ABTQPB)
40 QDSTRUCTURE. . . . LITERALLY 52
47 QFDEV. . . . . . . LITERALLY
43 QFHIDE . . . . . . LITERALLY
42 QFKEEP . . . . . . LITERALLY 52
41 QFMX . . . . . . . LITERALLY
46 QFRPL. . . . . . . LITERALLY
44 QFRSP. . . . . . . LITERALLY 52
45 QFTABLE. . . . . . LITERALLY
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 10
39 QNAMSIZ. . . . . . LITERALLY 51 52
48 QPBSTRUCTURE . . . LITERALLY 51
37 0028H 4 RESERVD. . . . . . BYTE ARRAY(4) MEMBER(PD)
38 0000H 2 RSPLINK. . . . . . WORD EXTERNAL(3) 62
37 002EH 2 SCRATCH. . . . . . WORD MEMBER(PD)
2 SECTORLEN. . . . . LITERALLY
36 0002H 2 SEGMENT. . . . . . WORD MEMBER(PDPTR) 62
37 0025H 1 SF3. . . . . . . . BYTE MEMBER(PD)
37 0026H 1 SF4. . . . . . . . BYTE MEMBER(PD)
37 0027H 1 SF5. . . . . . . . BYTE MEMBER(PD)
37 0004H 1 STAT . . . . . . . BYTE MEMBER(PD)
2 TAB. . . . . . . . LITERALLY
50 0002H 129 TAIL . . . . . . . BYTE ARRAY(129) MEMBER(ABTCMD) 54 98
55 0002H 2 TERM . . . . . . . WORD MEMBER(ABORTPB)
37 0002H 2 THREAD . . . . . . WORD MEMBER(PD)
2 TRUE . . . . . . . LITERALLY 64
37 0010H 2 UDA. . . . . . . . WORD MEMBER(PD)
37 0013H 1 USER . . . . . . . BYTE MEMBER(PD)
37 001AH 2 WAIT . . . . . . . WORD MEMBER(PD)
MODULE INFORMATION:
CODE AREA SIZE = 0180H 384D
CONSTANT AREA SIZE = 002EH 46D
VARIABLE AREA SIZE = 016DH 365D
MAXIMUM STACK SIZE = 0008H 8D
304 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION