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,2 @@
ABORT status: rsp, ready for QA (worked on MPM) 10/28/82

View File

@@ -0,0 +1,14 @@
$!
$! Assemble, compile, link, locate, and generate hex
$! for ABORT.RSP to run in
$! Concurrent CP/M-86, vers 2.0
$!
$ ccpmsetup
$
$ asm86 rhabt.a86 !Rsp Header ABorT
$ plm86 rabt.plm 'p1' 'p2' 'p3' xref 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
$!

View File

@@ -0,0 +1,70 @@
:020000021000EC
:1000000000000000000000000000000000000000F0
:020000021001EB
:100000000000000000BE030041424F525420202057
:080010000400000000000000E4
:020000021004E8
:1000000000000000000000000000000000000000F0
:1000100000000000000000000000000000000000E0
:1000200000000000000000000000000000000000D0
:06003000000000003A018F
:02000002100AE2
:100000000100CCCCCCCCCCCCCCCCCCCCCCCCCCCCC7
:10001000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC20
:10002000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC10
:10003000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC00
:10004000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCF0
:10005000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCE0
:10006000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD0
:10007000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC0
:10008000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB0
:10009000CCCCCCCCCCCCCCCCCCCC720000000000F6
:020000020000FC
:10000000434F5059524947485420284329203139F9
:1000100038322C204449474954414C2052455345DD
:100020004152434820558BEC8B56048B4E06CDE055
:040030005DC20400A9
:020000020003F9
:020004000010EA
:020000021014D8
:10000600000000000100090241424F525420202006
:020000021015D7
:10000600000000000A0041424F5254202020830085
:0C00160001000000000000000000860156
:020000021017D5
:040002000B028C025F
:020000021017D5
:0E0006000000FF0000002020202020202020ED
:02000002102AC2
:10000E000D0A496C6C6567616C20436F6E736F6C83
:0E001E00652C2055736520302D32353320249B
:02000002102CC0
:10000C000D0A41626F7274204661696C65642E241E
:020000020003F9
:10000600558BECA14001B9050003C1A3400103C112
:10001600A3400103C1A3400103C1A3400103C1A33F
:10002600400103C1A3400103C1A3400103C1A34092
:0C0036000103C1A34001010E40015DC3A5
:020000020007F5
:10000200558BECB08650B8560150E8A6FFB0875029
:10001200B8460150E89CFFA10000A34401B09150F2
:10002200B8C80050E88CFFB08950B8460150E88249
:10003200FFA10902A34201B09450C41E4201268AC4
:100042004720B40050E86BFFC41E4201268A4720B5
:10005200A27A01B09850B8720150E856FFA372011B
:10006200B90800BE8D02BF7C011E07FCF2A4833ECC
:100072007201007503E98C00B09850B8720150E823
:1000820031FFA37201C606AC0201C706840100005B
:100092008A1EAC02B70080BF8C0220B0FF750140FF
:1000A2005080FB04B0FF7201405922C1D0D8732E98
:1000B2008A878C022C3088878C023C097719A184AC
:1000C20001B90A00F7E18A8F8C02B50003C1A3844B
:1000D20001FE06AC02EBB9C606AC02FFEBB2813EF2
:1000E2008401FD007707803EAC02FF7511B0095014
:1000F200B8AE0250E8BCFEC6067A01FFEB06A18448
:1001020001A27A01803E7A01FF7418B09D50B87640
:100112000150E89EFE3CFF750AB00950B8CC02506F
:10012200E890FEB09250B8000050E886FEB09350BE
:10013200B8000050E87CFEC70672010B02E9E7FE38
:020142005DC39B
:00000001FF

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

View File

@@ -0,0 +1,147 @@
$ title ('CCP/M-86 1.0, Abort a Program - RSP')
$ compact
abort:
do;
/* Modified 3/15/83 to force an ATTACH console call */
$include (:f2:copyrt.lit)
$include (:f2:comlit.lit)
$include (:f2:mfunc.lit)
/**** 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.
****/
mon1:
procedure (func,info) external;
declare func byte;
declare info address;
end mon1;
mon2:
procedure (func,info) byte external;
declare func byte;
declare info address;
end mon2;
mon3:
procedure (f,a) address external;
dcl f byte, a address;
end mon3;
patch: procedure public; /* dummy area for patching code segments */
declare i address;
/* first statement is 9 bytes, rest are 5 bytes */
i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
i=i+5; i=i+5; i=i+5; i=i+5; i=i+5; /* about 54 bytes */
end patch;
$include (:f2:proces.lit)
dcl pd$pointer pointer;
dcl pd$ptr structure (offset word, segment word) at(@pd$pointer);
dcl pd based pd$pointer pd$structure;
dcl rsplink word external;
$include (:f2:qd.lit)
dcl abt$qd$buf (131) byte;
dcl abt$cmd structure(
pd address, tail (129) byte);
dcl abt$qpb qpb$structure initial(0,0,0,1,.abt$cmd,'ABORT ');
dcl abt$qd qd$structure initial (
0,0,0,qf$keep + qf$rsp,'ABORT ',131,1,0,0,0,0,.abt$qd$buf);
dcl fcb (32) byte;
dcl pfcb structure (
filename address,
fcbadr address) initial (.abt$cmd.tail, .fcb);
declare abort$pb structure (
pd address,
term address,
cns byte,
net byte,
pname (8) byte) initial (
0,00ffh,0,0,' ');
dcl i byte;
dcl console word;
dcl mpm$86 lit '1130h';
/*
Main Program
*/
plm$start:
procedure public;
call mon1(m$makeq,.abt$qd); /* make ABORT queue */
call mon1(m$openq,.abt$qpb); /* open it */
pd$ptr.segment = rsplink;
call mon1(m$setprior,200); /* back to the same as transients */
do while true;
call mon1(m$readq,.abt$qpb);
pd$ptr.offset = abt$cmd.pd; /* set console to same */
call mon1(m$setcns, pd.cns); /* of who typed ABORT */
abort$pb.cns = pd.cns;
pfcb.filename = mon3(m$parse, .pfcb);
/* get name of program to abort */
call move (8,.fcb(1),.abort$pb.pname);
/* fcb(9)='$'; DEBUG
call mon1(m$prtbuf, .fcb(1)); */
if pfcb.filename <> 0 then /* console number specified */
do;
pfcb.filename = mon3(m$parse, .pfcb);
i = 1; console = 0;
do while fcb(i) <> ' ' and i < 4;
if (fcb(i) := fcb(i) - '0') <= 9 then
do;
console = fcb(i) + 10 * console;
i = i + 1;
end;
else
i = 255; /* non - numeric */
end;
if console > 253 or i = 255 then
do;
call mon1(m$prtbuf, .(cr,lf, 'Illegal Console, Use 0-253 $'));
abort$pb.cns = 0ffh;
end;
else
abort$pb.cns = low(console);
end;
if abort$pb.cns <> 0ffh then
if mon2(m$abort, .abort$pb) = 0ffh then
do;
call mon1(m$prtbuf, .(cr,lf, 'Abort Failed.','$'));
end;
/* abort first PD found with same name and console */
/* consistent with MP/M-80 II but not MP/M 1.x */
call mon1(m$attach,0); /* make sure we own the console before */
call mon1(m$detach, 0); /* calling detach */
pfcb.filename = .abt$cmd.tail;
end;
end plmstart;
end abort;

View File

@@ -0,0 +1,101 @@
; Code and Data Interface for ABORT.RSP
; August 10, 1981
; July 27, 1982 (updated)
; Jan 1983 whf - added reg save to xdos
; Mar 1983 dh - shrunk to resonable size
name rhabt ;Rsp Header ABorT
cgroup group code
dgroup group dats
public xdos,mon1,mon2,mon3,mon4
public rsplink
extrn plmstart:near
assume cs:cgroup,ds:dgroup
dats segment 'DATA'
org 0
rsphdr_len equ 16
pd_len equ 30H
uda_len equ 100H
rsp_top equ 0
rsp_pd equ rsp_top + rsphdr_len
rsp_uda equ rsp_pd + pd_len
rsp_bottom equ rsp_uda + uda_len
org rsp_top
;RSP header
rsplink dw 0 ;becomes system data page paragraph
sdatvar dw 0
ncopies db 0
dw 0,0,0,0, 0
db 0
org rsp_pd
pd dw 0,0 ;link fields
db 0 ;status
db 190 ;priority
dw 3 ;flags - system and keep
db 'ABORT ' ;name
dw rsp_uda/10h ;uda paragraph
db 0,0 ;disk,user
db 0,0 ;ldisk,luser
dw 0 ;puremem - not re-entrant
;rest of pd
org rsp_uda ;start of uda
uda dw 0
dw 0 ;DMA must be explicitly set
dw 0,0,0,0, 0,0,0,0, 0,0,0,0
dw 0,0,0,0, 0,0,0,0, 0,0,0,0
dw offset stk_top
org rsp_uda + 60H
db 1 ;insys = 1, always use UDA stack
db 0
dw 0cccch,0cccch,0cccch,0cccch ;62
dw 0cccch,0cccch,0cccch,0cccch ;6A
dw 0cccch,0cccch,0cccch,0cccch ;72
dw 0cccch,0cccch,0cccch,0cccch ;7A
dw 0cccch,0cccch,0cccch,0cccch ;82
dw 0cccch,0cccch,0cccch,0cccch ;8A
dw 0cccch,0cccch,0cccch,0cccch ;92
dw 0cccch,0cccch,0cccch,0cccch ;9A
dw 0cccch,0cccch,0cccch,0cccch ;A2
dw 0cccch,0cccch,0cccch,0cccch ;AA
dw 0cccch,0cccch,0cccch,0cccch ;B2
dw 0cccch,0cccch,0cccch,0cccch ;BA
dw 0cccch,0cccch,0cccch,0cccch ;C2
dw 0cccch,0cccch,0cccch,0cccch ;CA
dw 0cccch,0cccch,0cccch,0cccch ;D2
dw 0cccch,0cccch,0cccch,0cccch ;DA
dw 0cccch,0cccch,0cccch,0cccch ;E2
dw 0cccch,0cccch,0cccch,0cccch ;EA
dw 0cccch,0cccch,0cccch,0cccch ;F2
stk_top dw plmstart,0,0 ;initial IRET
org rsp_bottom
datsend equ offset $
dats ends
code segment public 'CODE'
org 0
db 'COPYRIGHT (C) 1982,'
db ' DIGITAL RESEARCH '
xdos proc
push bp
mov bp,sp
mov dx,[bp+4]
mov cx,[bp+6]
int 224
pop bp
ret 4
xdos endp
mon1 equ xdos
mon2 equ xdos
mon3 equ xdos
mon4 equ xdos
code ends
end

View File

@@ -0,0 +1,221 @@
MCS-86 MACRO ASSEMBLER RHABT PAGE 1
ISIS-II MCS-86 MACRO ASSEMBLER V2.1 ASSEMBLY OF MODULE RHABT
OBJECT MODULE PLACED IN :F0:RHABT.OBJ
ASSEMBLER INVOKED BY: :F0: RHABT.A86
LOC OBJ LINE SOURCE
1 ; Code and Data Interface for ABORT.RSP
2 ; August 10, 1981
3 ; July 27, 1982 (updated)
4 ; Jan 1983 whf - added reg save to xdos
5 ; Mar 1983 dh - shrunk to resonable size
6
7 name rhabt ;Rsp Header ABorT
8
9 cgroup group code
10 dgroup group dats
11 public xdos,mon1,mon2,mon3,mon4
12 public rsplink
13 extrn plmstart:near
14
15 assume cs:cgroup,ds:dgroup
16
---- 17 dats segment 'DATA'
0000 18 org 0
0010 19 rsphdr_len equ 16
0030 20 pd_len equ 30H
0100 21 uda_len equ 100H
0000 22 rsp_top equ 0
0010 23 rsp_pd equ rsp_top + rsphdr_len
0040 24 rsp_uda equ rsp_pd + pd_len
0140 25 rsp_bottom equ rsp_uda + uda_len
0000 26 org rsp_top
27 ;RSP header
0000 0000 28 rsplink dw 0 ;becomes system data page paragraph
0002 0000 29 sdatvar dw 0
0004 00 30 ncopies db 0
0005 0000 31 dw 0,0,0,0, 0
0007 0000
0009 0000
000B 0000
000D 0000
000F 00 32 db 0
0010 33 org rsp_pd
0010 0000 34 pd dw 0,0 ;link fields
0012 0000
0014 00 35 db 0 ;status
0015 BE 36 db 190 ;priority
0016 0300 37 dw 3 ;flags - system and keep
0018 41424F52542020 38 db 'ABORT ' ;name
20
0020 0400 39 dw rsp_uda/10h ;uda paragraph
0022 00 40 db 0,0 ;disk,user
0023 00
0024 00 41 db 0,0 ;ldisk,luser
0025 00
0026 0000 42 dw 0 ;puremem - not re-entrant
MCS-86 MACRO ASSEMBLER RHABT PAGE 2
LOC OBJ LINE SOURCE
43 ;rest of pd
44
0040 45 org rsp_uda ;start of uda
0040 0000 46 uda dw 0
0042 0000 47 dw 0 ;DMA must be explicitly set
0044 0000 48 dw 0,0,0,0, 0,0,0,0, 0,0,0,0
0046 0000
0048 0000
004A 0000
004C 0000
004E 0000
0050 0000
0052 0000
0054 0000
0056 0000
0058 0000
005A 0000
005C 0000 49 dw 0,0,0,0, 0,0,0,0, 0,0,0,0
005E 0000
0060 0000
0062 0000
0064 0000
0066 0000
0068 0000
006A 0000
006C 0000
006E 0000
0070 0000
0072 0000
0074 3A01 50 dw offset stk_top
00A0 51 org rsp_uda + 60H
00A0 01 52 db 1 ;insys = 1, always use UDA stack
00A1 00 53 db 0
00A2 CCCC 54 dw 0cccch,0cccch,0cccch,0cccch ;62
00A4 CCCC
00A6 CCCC
00A8 CCCC
00AA CCCC 55 dw 0cccch,0cccch,0cccch,0cccch ;6A
00AC CCCC
00AE CCCC
00B0 CCCC
00B2 CCCC 56 dw 0cccch,0cccch,0cccch,0cccch ;72
00B4 CCCC
00B6 CCCC
00B8 CCCC
00BA CCCC 57 dw 0cccch,0cccch,0cccch,0cccch ;7A
00BC CCCC
00BE CCCC
00C0 CCCC
00C2 CCCC 58 dw 0cccch,0cccch,0cccch,0cccch ;82
00C4 CCCC
00C6 CCCC
00C8 CCCC
00CA CCCC 59 dw 0cccch,0cccch,0cccch,0cccch ;8A
00CC CCCC
MCS-86 MACRO ASSEMBLER RHABT PAGE 3
LOC OBJ LINE SOURCE
00CE CCCC
00D0 CCCC
00D2 CCCC 60 dw 0cccch,0cccch,0cccch,0cccch ;92
00D4 CCCC
00D6 CCCC
00D8 CCCC
00DA CCCC 61 dw 0cccch,0cccch,0cccch,0cccch ;9A
00DC CCCC
00DE CCCC
00E0 CCCC
00E2 CCCC 62 dw 0cccch,0cccch,0cccch,0cccch ;A2
00E4 CCCC
00E6 CCCC
00E8 CCCC
00EA CCCC 63 dw 0cccch,0cccch,0cccch,0cccch ;AA
00EC CCCC
00EE CCCC
00F0 CCCC
00F2 CCCC 64 dw 0cccch,0cccch,0cccch,0cccch ;B2
00F4 CCCC
00F6 CCCC
00F8 CCCC
00FA CCCC 65 dw 0cccch,0cccch,0cccch,0cccch ;BA
00FC CCCC
00FE CCCC
0100 CCCC
0102 CCCC 66 dw 0cccch,0cccch,0cccch,0cccch ;C2
0104 CCCC
0106 CCCC
0108 CCCC
010A CCCC 67 dw 0cccch,0cccch,0cccch,0cccch ;CA
010C CCCC
010E CCCC
0110 CCCC
0112 CCCC 68 dw 0cccch,0cccch,0cccch,0cccch ;D2
0114 CCCC
0116 CCCC
0118 CCCC
011A CCCC 69 dw 0cccch,0cccch,0cccch,0cccch ;DA
011C CCCC
011E CCCC
0120 CCCC
0122 CCCC 70 dw 0cccch,0cccch,0cccch,0cccch ;E2
0124 CCCC
0126 CCCC
0128 CCCC
012A CCCC 71 dw 0cccch,0cccch,0cccch,0cccch ;EA
012C CCCC
012E CCCC
0130 CCCC
0132 CCCC 72 dw 0cccch,0cccch,0cccch,0cccch ;F2
0134 CCCC
0136 CCCC
0138 CCCC
013A 0000 E 73 stk_top dw plmstart,0,0 ;initial IRET
MCS-86 MACRO ASSEMBLER RHABT PAGE 4
LOC OBJ LINE SOURCE
013C 0000
013E 0000
74
0140 75 org rsp_bottom
76
0140 77 datsend equ offset $
---- 78 dats ends
79
---- 80 code segment public 'CODE'
0000 81 org 0
82
0000 434F5059524947 83 db 'COPYRIGHT (C) 1982,'
48542028432920
313938322C
0013 20444947495441 84 db ' DIGITAL RESEARCH '
4C205245534541
52434820
85
0025 86 xdos proc
0025 55 87 push bp
0026 8BEC 88 mov bp,sp
0028 8B5604 89 mov dx,[bp+4]
002B 8B4E06 90 mov cx,[bp+6]
002E CDE0 91 int 224
0030 5D 92 pop bp
0031 C20400 93 ret 4
94 xdos endp
95
0025 96 mon1 equ xdos
0025 97 mon2 equ xdos
0025 98 mon3 equ xdos
0025 99 mon4 equ xdos
---- 100 code ends
101 end
ASSEMBLY COMPLETE, NO ERRORS FOUND