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,543 @@
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