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

837 lines
37 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 ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE ERASE
OBJECT MODULE PLACED IN ERA.OBJ
COMPILER INVOKED BY: :F0: ERA.PLM XREF OPTIMIZE(3) DEBUG
$compact
$title ('ERA: Utility to Erase File for MP/M & CCP/M')
1 erase:
do;
/*
Revised:
19 Jan 80 by Thomas Rolander (MP/M 1.1)
19 July 81 by Doug Huskey (MP/M II )
8 Aug 81 by Danny Horovitz (MP/M-86 )
31 Jan 83 by Bill Fitler (CCP/M-86 )
*/
/* ERA checks if files are open by other users */
$include (:f2:copyrt.lit)
=
= /*
= Copyright (C) 1983
= Digital Research
= P.O. Box 579
= Pacific Grove, CA 93950
= */
=
$include (:f2:vaxcmd.lit)
=
= /**** VAX commands for generation - read the name of this program
= for PROGNAME below.
=
= $ util := PROGNAME
= $ ccpmsetup ! set up environment
= $ assign 'f$directory()' f1: ! use local dir for temp files
= $ plm86 'util'.plm xref 'p1' optimize(3) debug
= $ link86 f2:scd.obj, 'util'.obj to 'util'.lnk
= $ loc86 'util'.lnk od(sm(code,dats,data,stack,const)) -
= ad(sm(code(0),dats(10000h))) ss(stack(+32)) to 'util'.
= $ h86 'util'
=
= ***** Then, on a micro:
= A>vax progname.h86 $fans
= A>gencmd progname data[b1000]
=
= ***** Notes: Stack is increased for interrupts. Const(ants) are last
= to force hex generation.
= ****/
$include (:f2:vermpm.lit)
=
= /* This utility requires MP/M or Concurrent function calls */
=
= /****** commented out for CCP/M-86 :
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 2
= declare Ver$OS literally '11h',
= Ver$Needs$OS literally '''Requires MP/M-86''';
= ******/
=
2 1 = declare Ver$OS literally '14h',
= Ver$Needs$OS literally '''Requires Concurrent CP/M-86''';
=
=
3 1 = declare Ver$Mask literally '0fdh'; /* mask out Is_network bit */
=
4 1 = declare Ver$BDOS literally '30h'; /* minimal BDOS version rqd */
=
5 1 declare
true literally '1',
false literally '0',
forever literally 'while true',
lit literally 'literally',
proc literally 'procedure',
dcl literally 'declare',
addr literally 'address',
cr literally '13',
lf literally '10',
ctrlc literally '3',
ctrlx literally '18h',
bksp literally '8';
$include (:f2:proces.lit)
=
= /*
= Proces Literals MP/M-8086 II
= */
=
6 1 = declare pnamsiz literally '8';
=
7 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';
=
8 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)';
=
9 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';
=
10 1 = declare pf$sys lit '00001h',
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 3
= 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',
= pf$ctld lit '00400h',
= pf$childabort lit '00800h',
= pf$noctls lit '01000h';
=
11 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';
$include (:f2:uda.lit)
=
= /* MP/M-86 II User Data Area format - August 8, 1981 */
=
12 1 = declare uda$structure lit 'structure (
= dparam word,
= dma$ofst word,
= dma$seg word,
= func byte,
= searchl byte,
= searcha word,
= searchabase word,
= dcnt word,
= dblk word,
= error$mode byte,
= mult$cnt byte,
= df$password (8) byte,
= pd$cnt byte)';
=
13 1 dcl stack$siz lit '16';
14 1 dcl int3 lit '0CCCCh';
15 1 dcl plmstack (stack$siz) word public initial(
int3,int3,int3,int3, int3,int3,int3,int3,
int3,int3,int3,int3, int3,int3,int3,int3);
16 1 dcl stack$size word public data(stack$siz + stack$siz);
/**************************************
* *
* B D O S INTERFACE *
* *
**************************************/
17 1 mon1:
procedure (func,info) external;
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 4
18 2 declare func byte;
19 2 declare info address;
20 2 end mon1;
21 1 mon2:
procedure (func,info) byte external;
22 2 declare func byte;
23 2 declare info address;
24 2 end mon2;
25 1 mon3:
procedure (func,info) address external;
26 2 declare func byte;
27 2 declare info address;
28 2 end mon3;
29 1 mon4:
procedure (func,info) pointer external;
30 2 declare func byte;
31 2 declare info address;
32 2 end mon4;
33 1 declare cmdrv byte external; /* command drive */
34 1 declare fcb (1) byte external; /* 1st default fcb */
35 1 declare fcb16 (1) byte external; /* 2nd default fcb */
36 1 declare pass0 address external; /* 1st password ptr */
37 1 declare len0 byte external; /* 1st passwd length */
38 1 declare pass1 address external; /* 2nd password ptr */
39 1 declare len1 byte external; /* 2nd passwd length */
40 1 declare tbuff (1) byte external; /* default dma buffer */
/**************************************
* *
* B D O S Externals *
* *
**************************************/
41 1 read$console:
procedure byte;
42 2 return mon2 (1,0);
43 2 end read$console;
44 1 printchar:
procedure(char);
45 2 declare char byte;
46 2 call mon1(2,char);
47 2 end printchar;
48 1 conin:
procedure byte;
49 2 return mon2(6,0fdh);
50 2 end conin;
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 5
51 1 check$con$stat:
procedure byte;
52 2 return mon2(11,0);
53 2 end check$con$stat;
54 1 print$buf:
procedure (buffer$address);
55 2 declare buffer$address address;
56 2 call mon1 (9,buffer$address);
57 2 end print$buf;
58 1 version: procedure address;
/* returns current cp/m version # */
59 2 return mon3(12,0);
60 2 end version;
61 1 setdma: procedure(dma);
62 2 declare dma address;
63 2 call mon1(26,dma);
64 2 end setdma;
65 1 search:
procedure (fcb$address) byte;
66 2 declare fcb$address address;
67 2 return mon2 (17,fcb$address);
68 2 end search;
69 1 searchn:
procedure byte;
70 2 return mon2 (18,0);
71 2 end searchn;
72 1 delete$file:
procedure (fcb$address) address;
73 2 declare fcb$address address;
74 2 return mon3 (19,fcb$address);
75 2 end delete$file;
76 1 get$user$code:
procedure byte;
77 2 return mon2 (32,0ffh);
78 2 end get$user$code;
/* 0ff => return BDOS errors */
79 1 return$errors:
procedure;
80 2 call mon1 (45,0ffh);
81 2 end return$errors;
82 1 terminate:
procedure;
83 2 call mon1 (143,0);
84 2 end terminate;
85 1 declare
parse$fn structure (
buff$adr address,
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 6
fcb$adr address);
86 1 declare (saveax,savecx) word external; /* reg return vals, set in mon1 */
87 1 parse: procedure;
88 2 declare (retcode,errcode) word;
89 2 call mon1(152,.parse$fn);
90 2 retcode = saveax;
91 2 errcode = savecx;
92 2 if retcode = 0ffffh then /* parse returned an error*/
93 2 do;
94 3 call print$buf(.('Invalid Filespec$'));
95 3 if errcode = 23 then call print$buf(.(' (drive)$'));
97 3 else if errcode = 24 then call print$buf(.(' (filename)$'));
99 3 else if errcode = 25 then call print$buf(.(' (filetype)$'));
101 3 else if errcode = 38 then call print$buf(.(' (password)$'));
call print$buf(.('.',13,10,'$')); call terminate;
105 3 end;
106 2 end parse;
107 1 declare
pd$pointer pointer,
pd based pd$pointer pd$structure;
108 1 declare
uda$pointer pointer,
uda$ptr structure (
offset word,
segment word) at (@uda$pointer),
uda based uda$pointer uda$structure;
109 1 get$uda: procedure;
110 2 pd$pointer = mon4(156,0);
111 2 uda$ptr.segment = pd.uda;
112 2 uda$ptr.offset = 0;
113 2 end get$uda;
/**************************************
* *
* GLOBAL VARIABLES *
* *
**************************************/
114 1 declare xfcb byte initial(0);
115 1 declare successful lit '0FFh';
/**************************************
* *
* S U B R O U T I N E S *
* *
**************************************/
/* upper case character from console */
116 1 crlf: proc;
117 2 call printchar(cr);
118 2 call printchar(lf);
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 7
119 2 end crlf;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* fill string @ s for c bytes with f */
120 1 fill: proc(s,f,c);
121 2 dcl s addr,
(f,c) byte,
a based s byte;
122 2 do while (c:=c-1)<>255;
123 3 a = f;
124 3 s = s+1;
125 3 end;
126 2 end fill;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* error message routine */
127 1 error: proc(code);
128 2 declare
code byte;
129 2 call printchar(' ');
130 2 if code=1 then
131 2 call print$buf(.(cr,lf,'Disk I/O Error.$'));
132 2 if code=2 then
133 2 call print$buf(.(cr,lf,'Drive $'));
134 2 if code = 3 or code = 2 then
135 2 call print$buf(.('Read Only$'));
136 2 if code = 4 then
137 2 call print$buf(.(cr,lf,'Invalid Filespec (drive).$'));
138 2 if code = 5 then
139 2 call print$buf(.('Currently Opened$'));
140 2 if code = 7 then
141 2 call print$buf(.('Password Error$'));
142 2 if code < 3 or code = 4 then
143 2 call terminate;
144 2 end error;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* print file name */
145 1 print$file: procedure(fcbp);
146 2 declare k byte;
147 2 declare typ lit '9'; /* file type */
148 2 declare fnam lit '11'; /* file type */
149 2 declare
fcbp addr,
fcbv based fcbp (32) byte;
150 2 do k = 1 to fnam;
151 3 if k = typ then
152 3 call printchar('.');
153 3 call printchar(fcbv(k) and 7fh);
154 3 end;
155 2 end print$file;
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 8
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* try to delete fcb at fcb$address
return error code if unsuccessful */
156 1 delete:
procedure(fcb$address) byte;
157 2 declare
fcb$address address,
fcbv based fcb$address (32) byte,
error$code address,
code byte;
158 2 if xfcb then
159 2 fcbv(5) = fcbv(5) or 80h;
160 2 call setdma(.fcb16); /* password */
161 2 fcbv(0) = fcb(0); /* drive */
162 2 error$code = delete$file(fcb$address);
163 2 fcbv(5) = fcbv(5) and 7fh; /* reset xfcb bit */
164 2 if low(error$code) = 0FFh then do;
166 3 code = high(error$code);
167 3 if (code=1) or (code=2) or (code=4) then
168 3 call error(code);
169 3 return code;
170 3 end;
171 2 return successful;
172 2 end delete;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* upper case character from console */
173 1 ucase: proc byte;
174 2 dcl c byte;
175 2 if (c:=conin) >= 'a' then
176 2 if c < '{' then
177 2 return(c-20h);
178 2 return c;
179 2 end ucase;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* get password and place at fcb + 16 */
180 1 getpasswd: proc;
181 2 dcl (i,c) byte;
182 2 call crlf;
183 2 call print$buf(.('Password ? ','$'));
184 2 retry:
call fill(.fcb16,' ',8);
185 2 do i = 0 to 7;
186 3 nxtchr:
if (c:=ucase) >= ' ' then
187 3 fcb16(i)=c;
188 3 if c = cr then do;
190 4 call crlf;
191 4 goto exit;
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 9
192 4 end;
193 3 if c = ctrlx then
194 3 goto retry;
195 3 if c = bksp then do;
197 4 if i<1 then
198 4 goto retry;
199 4 else do;
200 5 fcb16(i:=i-1)=' ';
201 5 goto nxtchr;
202 5 end;
203 4 end;
204 3 if c = 3 then
205 3 call terminate;
206 3 end;
207 2 exit:
c = check$con$stat;
208 2 end getpasswd;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* try deleting files one at a time */
209 1 single$file:
procedure;
210 2 declare (code,dcnt,sav$searchl) byte;
211 2 declare (fcba,sav$dcnt) addr;
212 2 file$err: procedure;
213 3 call crlf;
214 3 call print$buf(.('Not erased: $'));
215 3 call print$file(fcba);
216 3 call error(code);
217 3 end file$err;
218 2 call setdma(.tbuff);
219 2 dcnt = search(.fcb);
220 2 do while dcnt <> 0ffh;
221 3 fcba = shl(dcnt,5) + .tbuff;
222 3 sav$dcnt = uda.dcnt;
223 3 sav$searchl = uda.searchl;
224 3 if (code:=delete(fcba)) = 7 then do;
226 4 call file$err;
227 4 call getpasswd;
228 4 code = delete(fcba);
229 4 end;
230 3 if code <> successful then
231 3 call file$err;
232 3 call setdma(.tbuff);
/* restore dcnt and search length of 11 */
233 3 uda.dcnt = sav$dcnt;
234 3 uda.searchl = sav$searchl;
235 3 dcnt = searchn;
236 3 end;
237 2 end single$file;
/**************************************
* *
* M A I N P R O G R A M *
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 10
* *
**************************************/
238 1 declare (i,response,user,code) byte;
239 1 declare ver address;
240 1 declare last$dseg$byte byte
initial (0);
241 1 plm$start: procedure public;
242 2 ver = version;
243 2 if low(ver) < Ver$BDOS or (high(ver) and Ver$Mask) = 0 then do;
245 3 call print$buf (.(cr,lf,Ver$Needs$OS,'$'));
246 3 call mon1(0,0);
247 3 end;
248 2 parse$fn.buff$adr = .tbuff(1);
249 2 parse$fn.fcb$adr = .fcb;
250 2 user = get$user$code;
251 2 call getuda; /* get uda address */
252 2 call return$errors;
253 2 if fcb(17) <> ' ' then
254 2 if fcb(17) = 'X' then
255 2 xfcb = true;
256 2 else do;
257 3 call print$buf (.(
'Invalid Command Option.$'));
258 3 call terminate;
259 3 end;
260 2 i = 0;
261 2 do while fcb(i:=i+1) = '?';
262 3 ;
263 3 end;
264 2 if i > 11 then
265 2 if not xfcb then
266 2 do;
267 3 call print$buf (.(
'Confirm delete all user files (Y/N)?','$'));
268 3 response = read$console;
269 3 if not ((response = 'y') or
(response = 'Y'))
then call terminate;
271 3 end;
272 2 call parse;
273 2 if (code:=delete(.fcb)) <> successful then do;
275 3 if code = 0 then
276 3 call print$buf (.(cr,lf,
'File Not Found.','$'));
277 3 else if code < 3 or code = 4 then
278 3 call error(code); /* fatal errors */
else
279 3 call single$file; /* single file error */
280 3 end;
281 2 call terminate;
282 2 end plm$start;
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 11
283 1 end erase;
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 12
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
121 0000H 1 A. . . . . . . . . BYTE BASED(S) 123
107 0021H 1 ABORT. . . . . . . BYTE MEMBER(PD)
5 ADDR . . . . . . . LITERALLY 121 149 211
5 BKSP . . . . . . . LITERALLY 195
85 0000H 2 BUFFADR. . . . . . WORD MEMBER(PARSEFN) 248
54 0004H 2 BUFFERADDRESS. . . WORD PARAMETER AUTOMATIC 55 56
181 003DH 1 C. . . . . . . . . BYTE 186 187 188 193 195 204 207
120 0004H 1 C. . . . . . . . . BYTE PARAMETER AUTOMATIC 121 122
174 003BH 1 C. . . . . . . . . BYTE 175 176 177 178
44 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 45 46
51 0033H 15 CHECKCONSTAT . . . PROCEDURE BYTE STACK=0008H 207
33 0000H 1 CMDRV. . . . . . . BYTE EXTERNAL(4)
107 0020H 1 CNS. . . . . . . . BYTE MEMBER(PD)
157 003AH 1 CODE . . . . . . . BYTE 166 167 168 169
238 0044H 1 CODE . . . . . . . BYTE 273 275 277 278
127 0004H 1 CODE . . . . . . . BYTE PARAMETER AUTOMATIC 128 130 132 134 136 138 140 142
210 003EH 1 CODE . . . . . . . BYTE 216 224 228 230
48 0024H 15 CONIN. . . . . . . PROCEDURE BYTE STACK=0008H 175
107 0022H 2 CONMODE. . . . . . WORD MEMBER(PD)
5 CR . . . . . . . . LITERALLY 117 131 133 137 188 245 276
116 015AH 17 CRLF . . . . . . . PROCEDURE STACK=000EH 182 190 213
5 CTRLC. . . . . . . LITERALLY
5 CTRLX. . . . . . . LITERALLY 193
108 000EH 2 DBLK . . . . . . . WORD MEMBER(UDA)
5 DCL. . . . . . . . LITERALLY
210 003FH 1 DCNT . . . . . . . BYTE 219 220 221 235
108 000CH 2 DCNT . . . . . . . WORD MEMBER(UDA) 222 233
156 0233H 91 DELETE . . . . . . PROCEDURE BYTE STACK=0016H 224 228 273
72 0090H 16 DELETEFILE . . . . PROCEDURE WORD STACK=000AH 162
108 0012H 8 DFPASSWORD . . . . BYTE ARRAY(8) MEMBER(UDA)
61 0004H 2 DMA. . . . . . . . WORD PARAMETER AUTOMATIC 62 63
108 0002H 2 DMAOFST. . . . . . WORD MEMBER(UDA)
108 0004H 2 DMASEG . . . . . . WORD MEMBER(UDA)
108 0000H 2 DPARAM . . . . . . WORD MEMBER(UDA)
107 0012H 1 DSK. . . . . . . . BYTE MEMBER(PD)
107 0018H 2 DVRACT . . . . . . WORD MEMBER(PD)
1 0002H ERASE. . . . . . . PROCEDURE STACK=0000H
88 0026H 2 ERRCODE. . . . . . WORD 91 95 97 99 101
127 018BH 112 ERROR. . . . . . . PROCEDURE STACK=0010H 168 216 278
157 0030H 2 ERRORCODE. . . . . WORD 162 164 166
108 0010H 1 ERRORMODE. . . . . BYTE MEMBER(UDA)
207 032FH EXIT . . . . . . . LABEL 191
120 0006H 1 F. . . . . . . . . BYTE PARAMETER AUTOMATIC 121 123
5 FALSE. . . . . . . LITERALLY
34 0000H 1 FCB. . . . . . . . BYTE ARRAY(1) EXTERNAL(5) 161 219 249 253 254 261 273
35 0000H 1 FCB16. . . . . . . BYTE ARRAY(1) EXTERNAL(6) 160 184 187 200
211 0032H 2 FCBA . . . . . . . WORD 215 221 224 228
156 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 157 159 161 162 163
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 13
65 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 66 67
72 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 73 74
85 0002H 2 FCBADR . . . . . . WORD MEMBER(PARSEFN) 249
145 0004H 2 FCBP . . . . . . . WORD PARAMETER AUTOMATIC 149 153
149 0000H 32 FCBV . . . . . . . BYTE BASED(FCBP) ARRAY(32) 153
157 0000H 32 FCBV . . . . . . . BYTE BASED(FCBADDRESS) ARRAY(32) 159 161 163
212 03BAH 29 FILEERR. . . . . . PROCEDURE STACK=0014H 226 231
120 016BH 32 FILL . . . . . . . PROCEDURE STACK=0008H 184
107 0006H 2 FLAG . . . . . . . WORD MEMBER(PD)
148 FNAM . . . . . . . LITERALLY 150
5 FOREVER. . . . . . LITERALLY
29 0000H 1 FUNC . . . . . . . BYTE PARAMETER 30
17 0000H 1 FUNC . . . . . . . BYTE PARAMETER 18
108 0006H 1 FUNC . . . . . . . BYTE MEMBER(UDA)
21 0000H 1 FUNC . . . . . . . BYTE PARAMETER 22
25 0000H 1 FUNC . . . . . . . BYTE PARAMETER 26
180 02AEH 137 GETPASSWD. . . . . PROCEDURE STACK=0012H 227
109 0132H 40 GETUDA . . . . . . PROCEDURE STACK=0008H 251
76 00A0H 15 GETUSERCODE. . . . PROCEDURE BYTE STACK=0008H 250
HIGH . . . . . . . BUILTIN 166 243
238 0041H 1 I. . . . . . . . . BYTE 260 261 264
181 003CH 1 I. . . . . . . . . BYTE 185 187 197 200
21 0000H 2 INFO . . . . . . . WORD PARAMETER 23
17 0000H 2 INFO . . . . . . . WORD PARAMETER 19
25 0000H 2 INFO . . . . . . . WORD PARAMETER 27
29 0000H 2 INFO . . . . . . . WORD PARAMETER 31
14 INT3 . . . . . . . LITERALLY 15
146 0039H 1 K. . . . . . . . . BYTE 150 151 153
240 0045H 1 LASTDSEGBYTE . . . BYTE INITIAL
107 0014H 1 LDSK . . . . . . . BYTE MEMBER(PD)
37 0000H 1 LEN0 . . . . . . . BYTE EXTERNAL(8)
39 0000H 1 LEN1 . . . . . . . BYTE EXTERNAL(10)
5 LF . . . . . . . . LITERALLY 118 131 133 137 245 276
107 0000H 2 LINK . . . . . . . WORD MEMBER(PD)
5 LIT. . . . . . . . LITERALLY 9 10 11 12 13 14 115 147 148
LOW. . . . . . . . BUILTIN 164 243
107 0024H 1 LST. . . . . . . . BYTE MEMBER(PD)
107 0015H 1 LUSER. . . . . . . BYTE MEMBER(PD)
107 0016H 2 MEM. . . . . . . . WORD MEMBER(PD)
17 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(0) STACK=0000H 46 56 63 80 83 89
246
21 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H 42 49 52 67 70
77
25 0000H MON3 . . . . . . . PROCEDURE WORD EXTERNAL(2) STACK=0000H 59 74
29 0000H MON4 . . . . . . . PROCEDURE POINTER EXTERNAL(3) STACK=0000H 110
108 0011H 1 MULTCNT. . . . . . BYTE MEMBER(UDA)
107 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(PD)
107 001DH 1 NET. . . . . . . . BYTE MEMBER(PD)
186 02D4H NXTCHR . . . . . . LABEL 201
108 0000H 2 OFFSET . . . . . . WORD MEMBER(UDAPTR) 112
107 001CH 1 ORG. . . . . . . . BYTE MEMBER(PD)
107 001EH 2 PARENT . . . . . . WORD MEMBER(PD)
87 00CDH 101 PARSE. . . . . . . PROCEDURE STACK=000EH 272
85 0020H 4 PARSEFN. . . . . . STRUCTURE 89 248 249
36 0000H 2 PASS0. . . . . . . WORD EXTERNAL(7)
38 0000H 2 PASS1. . . . . . . WORD EXTERNAL(9)
11 PCM11. . . . . . . LITERALLY
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 14
11 PCMCTLC. . . . . . LITERALLY
11 PCMCTLO. . . . . . LITERALLY
11 PCMCTLS. . . . . . LITERALLY
11 PCMROUT. . . . . . LITERALLY
11 PCMRSX . . . . . . LITERALLY
107 0000H 48 PD . . . . . . . . STRUCTURE BASED(PDPOINTER) 111
108 001AH 1 PDCNT. . . . . . . BYTE MEMBER(UDA)
7 PDHDR. . . . . . . LITERALLY 107
107 0028H 4 PDPOINTER. . . . . POINTER 107 110 111
8 PDSTRUCTURE. . . . LITERALLY 107
10 PFACTIVE . . . . . LITERALLY
10 PFCHILDABORT . . . LITERALLY
10 PFCTLC . . . . . . LITERALLY
10 PFCTLD . . . . . . LITERALLY
10 PFKEEP . . . . . . LITERALLY
10 PFKERNAL . . . . . LITERALLY
10 PFNOCTLS . . . . . LITERALLY
10 PFPURE . . . . . . LITERALLY
10 PFRAW. . . . . . . LITERALLY
10 PFRESOURCE . . . . LITERALLY
10 PFSYS. . . . . . . LITERALLY
10 PFTABLE. . . . . . LITERALLY
10 PFTEMPKEEP . . . . LITERALLY
15 0000H 32 PLMSTACK . . . . . WORD ARRAY(16) PUBLIC INITIAL
241 03D7H 246 PLMSTART . . . . . PROCEDURE PUBLIC STACK=001EH
6 PNAMSIZ. . . . . . LITERALLY
107 002CH 2 PRET . . . . . . . WORD MEMBER(PD)
54 0042H 16 PRINTBUF . . . . . PROCEDURE STACK=000AH 94 96 98 100 102 103 131 133
135 137 139 141 183 214 245 257 267 276
44 0011H 19 PRINTCHAR. . . . . PROCEDURE STACK=000AH 117 118 129 152 153
145 01FBH 56 PRINTFILE. . . . . PROCEDURE STACK=0010H 215
107 0005H 1 PRIOR. . . . . . . BYTE MEMBER(PD)
5 PROC . . . . . . . LITERALLY 116 120 127 173 180
9 PSCIOWAIT. . . . . LITERALLY
9 PSDELAY. . . . . . LITERALLY
9 PSDQ . . . . . . . LITERALLY
9 PSFLAGWAIT . . . . LITERALLY
9 PSNQ . . . . . . . LITERALLY
9 PSPOLL . . . . . . LITERALLY
9 PSRUN. . . . . . . LITERALLY
9 PSSLEEP. . . . . . LITERALLY
9 PSSWAP . . . . . . LITERALLY
9 PSTERM . . . . . . LITERALLY
41 0002H 15 READCONSOLE. . . . PROCEDURE BYTE STACK=0008H 268
107 0028H 4 RESERVD. . . . . . BYTE ARRAY(4) MEMBER(PD)
238 0042H 1 RESPONSE . . . . . BYTE 268 269
88 0024H 2 RETCODE. . . . . . WORD 90 92
184 02BBH RETRY. . . . . . . LABEL 194 198
79 00AFH 15 RETURNERRORS . . . PROCEDURE STACK=0008H 252
120 0008H 2 S. . . . . . . . . WORD PARAMETER AUTOMATIC 121 123 124
211 0034H 2 SAVDCNT. . . . . . WORD 222 233
86 0000H 2 SAVEAX . . . . . . WORD EXTERNAL(12) 90
86 0000H 2 SAVECX . . . . . . WORD EXTERNAL(13) 91
210 0040H 1 SAVSEARCHL . . . . BYTE 223 234
107 002EH 2 SCRATCH. . . . . . WORD MEMBER(PD)
65 0071H 16 SEARCH . . . . . . PROCEDURE BYTE STACK=000AH 219
108 0008H 2 SEARCHA. . . . . . WORD MEMBER(UDA)
PL/M-86 COMPILER ERA: UTILITY TO ERASE FILE FOR MP/M & CCP/M PAGE 15
108 000AH 2 SEARCHABASE. . . . WORD MEMBER(UDA)
108 0007H 1 SEARCHL. . . . . . BYTE MEMBER(UDA) 223 234
69 0081H 15 SEARCHN. . . . . . PROCEDURE BYTE STACK=0008H 235
108 0002H 2 SEGMENT. . . . . . WORD MEMBER(UDAPTR) 111
61 0061H 16 SETDMA . . . . . . PROCEDURE STACK=000AH 160 218 232
107 0025H 1 SF3. . . . . . . . BYTE MEMBER(PD)
107 0026H 1 SF4. . . . . . . . BYTE MEMBER(PD)
107 0027H 1 SF5. . . . . . . . BYTE MEMBER(PD)
SHL. . . . . . . . BUILTIN 221
209 0337H 131 SINGLEFILE . . . . PROCEDURE STACK=001AH 279
13 STACKSIZ . . . . . LITERALLY 15 16
16 0000H 2 STACKSIZE. . . . . WORD PUBLIC DATA
107 0004H 1 STAT . . . . . . . BYTE MEMBER(PD)
115 SUCCESSFUL . . . . LITERALLY 171 230 273
40 0000H 1 TBUFF. . . . . . . BYTE ARRAY(1) EXTERNAL(11) 218 221 232 248
82 00BEH 15 TERMINATE. . . . . PROCEDURE STACK=0008H 104 143 205 258 270 281
107 0002H 2 THREAD . . . . . . WORD MEMBER(PD)
5 TRUE . . . . . . . LITERALLY 255
147 TYP. . . . . . . . LITERALLY 151
173 028EH 32 UCASE. . . . . . . PROCEDURE BYTE STACK=000CH 186
108 0000H 27 UDA. . . . . . . . STRUCTURE BASED(UDAPOINTER) 222 223 233 234
107 0010H 2 UDA. . . . . . . . WORD MEMBER(PD) 111
108 002CH 4 UDAPOINTER . . . . POINTER 108 222 223 233 234
108 002CH 4 UDAPTR . . . . . . STRUCTURE AT 111 112
12 UDASTRUCTURE . . . LITERALLY 108
238 0043H 1 USER . . . . . . . BYTE 250
107 0013H 1 USER . . . . . . . BYTE MEMBER(PD)
239 0036H 2 VER. . . . . . . . WORD 242 243
4 VERBDOS. . . . . . LITERALLY 243
3 VERMASK. . . . . . LITERALLY 243
2 VERNEEDSOS . . . . LITERALLY 245
2 VEROS. . . . . . . LITERALLY
58 0052H 15 VERSION. . . . . . PROCEDURE WORD STACK=0008H 242
107 001AH 2 WAIT . . . . . . . WORD MEMBER(PD)
114 0038H 1 XFCB . . . . . . . BYTE INITIAL 158 255 265
MODULE INFORMATION:
CODE AREA SIZE = 04CDH 1229D
CONSTANT AREA SIZE = 012BH 299D
VARIABLE AREA SIZE = 0046H 70D
MAXIMUM STACK SIZE = 001EH 30D
566 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION