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

917 lines
41 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 REN: RENAME FILE PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE REN
OBJECT MODULE PLACED IN REN.OBJ
COMPILER INVOKED BY: :F0: REN.PLM XREF OPTIMIZE(3) DEBUG
$compact
$title ('REN: Rename File')
1 ren:
do;
/*
Revised:
19 Jan 80 by Thomas Rolander
31 July 81 by Doug Huskey
6 Aug 81 by Danny Horovitz
23 Jun 82 by Bill Fitler
*/
$include (:f1:copyrt.lit)
=
= /*
= Copyright (C) 1983
= Digital Research
= P.O. Box 579
= Pacific Grove, CA 93950
= */
=
$include (:f1: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 (:f1:vermpm.lit)
=
= /* This utility requires MP/M or Concurrent function calls */
=
= /****** commented out for CCP/M-86 :
= declare Ver$OS literally '11h',
PL/M-86 COMPILER REN: RENAME FILE PAGE 2
= 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 '0FFh',
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 (:f1: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',
= pf$keep lit '00002h',
PL/M-86 COMPILER REN: RENAME FILE PAGE 3
= 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 (:f1: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)';
=
/**************************************
* *
* B D O S INTERFACE *
* *
**************************************/
13 1 mon1:
procedure (func,info) external;
14 2 declare func byte;
15 2 declare info address;
16 2 end mon1;
17 1 mon2:
procedure (func,info) byte external;
18 2 declare func byte;
19 2 declare info address;
PL/M-86 COMPILER REN: RENAME FILE PAGE 4
20 2 end mon2;
21 1 mon3:
procedure (func,info) address external;
22 2 declare func byte;
23 2 declare info address;
24 2 end mon3;
25 1 mon4:
procedure (func,info) pointer external;
26 2 declare func byte;
27 2 declare info address;
28 2 end mon4;
29 1 declare cmdrv byte external; /* command drive */
30 1 declare fcb (1) byte external; /* 1st default fcb */
31 1 declare fcb16 (1) byte external; /* 2nd default fcb */
32 1 declare pass0 address external; /* 1st password ptr */
33 1 declare len0 byte external; /* 1st passwd length */
34 1 declare pass1 address external; /* 2nd password ptr */
35 1 declare len1 byte external; /* 2nd passwd length */
36 1 declare tbuff (1) byte external; /* default dma buffer */
/**************************************
* *
* B D O S Externals *
* *
**************************************/
37 1 read$console:
procedure byte;
38 2 return mon2 (1,0);
39 2 end read$console;
40 1 conin:
procedure byte;
41 2 return mon2(6,0fdh);
42 2 end conin;
43 1 printchar:
procedure (char);
44 2 declare char byte;
45 2 call mon1 (2,char);
46 2 end printchar;
47 1 check$con$stat:
procedure byte;
48 2 return mon2(11,0);
49 2 end check$con$stat;
50 1 print$buf:
procedure (buffer$address);
51 2 declare buffer$address address;
52 2 call mon1 (9,buffer$address);
PL/M-86 COMPILER REN: RENAME FILE PAGE 5
53 2 end print$buf;
54 1 version: procedure address;
/* returns current cp/m version # */
55 2 return mon3(12,0);
56 2 end version;
57 1 search$first:
procedure (fcb$address) byte;
58 2 declare fcb$address address;
59 2 return mon2 (17,fcb$address);
60 2 end search$first;
61 1 search$next:
procedure byte;
62 2 return mon2 (18,0);
63 2 end search$next;
64 1 delete$file:
procedure (fcb$address);
65 2 declare fcb$address address;
66 2 call mon1 (19,fcb$address);
67 2 end delete$file;
68 1 rename$file:
procedure (fcb$address) address;
69 2 declare fcb$address address;
70 2 return mon3 (23,fcb$address);
71 2 end rename$file;
72 1 setdma: procedure(dma);
73 2 declare dma address;
74 2 call mon1(26,dma);
75 2 end setdma;
/* 0ff => return BDOS errors */
76 1 return$errors:
procedure(mode);
77 2 declare mode byte;
78 2 call mon1 (45,mode);
79 2 end return$errors;
80 1 terminate:
procedure;
81 2 call mon1 (143,0);
82 2 end terminate;
83 1 declare
parse$fn structure (
buff$adr address,
fcb$adr address);
84 1 parse: procedure address;
85 2 return mon3(152,.parse$fn);
86 2 end parse;
87 1 declare
PL/M-86 COMPILER REN: RENAME FILE PAGE 6
pd$pointer pointer,
pd based pd$pointer pd$structure;
88 1 declare
uda$pointer pointer,
uda$ptr structure (
offset word,
segment word) at (@uda$pointer),
uda based uda$pointer uda$structure;
89 1 get$uda: procedure;
90 2 pd$pointer = mon4(156,0);
91 2 uda$ptr.segment = pd.uda;
92 2 uda$ptr.offset = 0;
93 2 end get$uda;
/**************************************
* *
* GLOBAL VARIABLES *
* *
**************************************/
/* Note: there are three fcbs used by
this program:
1) new$fcb: the new file name
(this can be a wildcard if it
has the same pattern of question
marks as the old file name)
Any question marks are replaced
with the corresponding filename
character in the old$fcb before
doing the rename function.
2) cur$fcb: the file to be renamed
specified in the rename command.
(any question marks must correspond
to question marks in new$fcb).
3) old$fcb: a fcb in the directory
matching the cur$fcb and used in
the bdos rename function. This
cannot contain any question marks.
*/
94 1 declare successful lit '0FFh';
95 1 declare failed (*) byte data(cr,lf,'Not renamed: $'),
read$only (*) byte data(cr,lf,'Drive Read Only$'),
bad$wildcard (*) byte data('Invalid Wildcard$');
96 1 declare passwd (8) byte;
97 1 declare
new$fcb$adr address, /* new name */
new$fcb based new$fcb$adr (32) byte;
98 1 declare cur$fcb (33) byte; /* current fcb (old name) */
/**************************************
* *
PL/M-86 COMPILER REN: RENAME FILE PAGE 7
* S U B R O U T I N E S *
* *
**************************************/
/* upper case character from console */
99 1 crlf: proc;
100 2 call printchar(cr);
101 2 call printchar(lf);
102 2 end crlf;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* fill string @ s for c bytes with f */
103 1 fill: proc(s,f,c);
104 2 dcl s addr,
(f,c) byte,
a based s byte;
105 2 do while (c:=c-1)<>255;
106 3 a = f;
107 3 s = s+1;
108 3 end;
109 2 end fill;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* error message routine */
110 1 error: proc(code);
111 2 declare
code byte;
112 2 if code = 0 then do;
114 3 call print$buf(.('No such file to rename$'));
115 3 call terminate;
116 3 end;
117 2 if code=1 then do;
119 3 call print$buf(.(cr,lf,'BDOS Bad Sector$'));
120 3 call terminate;
121 3 end;
122 2 if code=2 then do;
124 3 call print$buf(.read$only);
125 3 call terminate;
126 3 end;
127 2 if code = 3 then
128 2 call print$buf(.read$only(8));
129 2 if code = 5 then
130 2 call print$buf(.('Currently Opened$'));
131 2 if code = 7 then
132 2 call print$buf(.('Password Error$'));
133 2 if code = 8 then
134 2 call print$buf(.('already exists$'));
135 2 if code = 9 then do;
137 3 call print$buf(.bad$wildcard);
138 3 call terminate;
139 3 end;
140 2 end error;
PL/M-86 COMPILER REN: RENAME FILE PAGE 8
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* print file name */
141 1 print$file: procedure(fcbp);
142 2 declare k byte;
143 2 declare typ lit '9'; /* file type */
144 2 declare fnam lit '11'; /* file type */
145 2 declare
fcbp addr,
fcbv based fcbp (32) byte;
146 2 do k = 1 to fnam;
147 3 if k = typ then
148 3 call printchar('.');
149 3 call printchar(fcbv(k) and 7fh);
150 3 end;
151 2 end print$file;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* try to rename fcb at old$fcb$adr to name at new$fcb$adr
return error code if unsuccessful */
152 1 rename:
procedure(old$fcb$adr) byte;
153 2 declare
old$fcb$adr address,
old$fcb based old$fcb$adr (32) byte,
error$code address,
code byte;
154 2 call move (16,new$fcb$adr,old$fcb$adr+16);
155 2 call setdma(.passwd); /* password */
156 2 call return$errors(0FFh); /* return bdos errors */
157 2 error$code = rename$file (old$fcb$adr);
158 2 call return$errors(0); /* normal error mode */
159 2 if low(error$code) = 0FFh then do;
161 3 code = high(error$code);
162 3 if code < 3 then
163 3 call error(code);
164 3 return code;
165 3 end;
166 2 return successful;
167 2 end rename;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* upper case character from console */
168 1 ucase: proc(c) byte;
169 2 dcl c byte;
170 2 if c >= 'a' then
171 2 if c < '{' then
172 2 return(c-20h);
173 2 return c;
174 2 end ucase;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
PL/M-86 COMPILER REN: RENAME FILE PAGE 9
/* get password and place at fcb + 16 */
175 1 getpasswd: proc;
176 2 dcl (i,c) byte;
177 2 call crlf;
178 2 call print$buf(.('Password ? ','$'));
179 2 retry:
call fill(.passwd,' ',8);
180 2 do i = 0 to 7;
181 3 nxtchr:
if (c:=ucase(conin)) >= ' ' then
182 3 passwd(i)=c;
183 3 if c = cr then do;
185 4 call crlf;
186 4 goto exit;
187 4 end;
188 3 if c = ctrlx then
189 3 goto retry;
190 3 if c = bksp then do;
192 4 if i<1 then
193 4 goto retry;
194 4 else do;
195 5 passwd(i:=i-1)=' ';
196 5 goto nxtchr;
197 5 end;
198 4 end;
199 3 if c = ctrlc then
200 3 call terminate;
201 3 end;
202 2 exit:
c = check$con$stat;
203 2 end getpasswd;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* check for wildcard in rename command */
204 1 wildcard: proc byte;
205 2 dcl (i,wild) byte;
206 2 wild = false;
207 2 do i=1 to 11;
208 3 if cur$fcb(i) = '?' then
209 3 if new$fcb(i) <> '?' then do;
211 4 call print$buf(.failed);
212 4 call print$buf(.bad$wildcard);
213 4 call terminate;
214 4 end;
else
215 3 wild = true;
216 3 end;
217 2 return wild;
218 2 end wildcard;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
PL/M-86 COMPILER REN: RENAME FILE PAGE 10
/* set up new name for rename function */
219 1 set$new$fcb: proc(old$fcb$adr);
220 2 dcl old$fcb$adr address,
old$fcb based old$fcb$adr (32) byte;
221 2 dcl i byte;
222 2 old$fcb(0) = cur$fcb(0); /* set up drive */
223 2 do i=1 to 11;
224 3 if cur$fcb(i) = '?' then
225 3 new$fcb(i) = old$fcb(i);
226 3 end;
227 2 end set$new$fcb;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* try deleting files one at a time */
228 1 single$file:
procedure;
229 2 declare (code,dcnt,savsearchl) byte;
230 2 declare (old$fcb$adr,savdcnt,savsearcha) addr;
231 2 declare old$fcb based old$fcb$adr (32) byte;
232 2 file$err: procedure(fcba);
233 3 dcl fcba address;
234 3 call print$buf(.failed);
235 3 call print$file(fcba);
236 3 call printchar(' ');
237 3 call error(code);
238 3 end file$err;
239 2 call setdma(.tbuff);
240 2 if (dcnt:=search$first(.cur$fcb)) = 0ffh then
241 2 call error(0);
242 2 do while dcnt <> 0ffh;
243 3 old$fcb$adr = shl(dcnt,5) + .tbuff;
244 3 savdcnt = uda.dcnt;
245 3 savsearcha = uda.searcha;
246 3 savsearchl = uda.searchl;
247 3 call set$new$fcb(old$fcb$adr);
248 3 if (code:=rename(old$fcb$adr)) = 8 then do;
250 4 call file$err(new$fcb$adr);
251 4 call print$buf(.(', delete (Y/N)?$'));
252 4 if ucase(read$console) = 'Y' then do;
254 5 call delete$file(new$fcb$adr);
255 5 code = rename(old$fcb$adr);
256 5 end;
else
257 4 go to next;
258 4 end;
259 3 if code = 7 then do;
261 4 call file$err(old$fcb$adr);
262 4 call getpasswd;
263 4 code = rename(old$fcb$adr);
264 4 end;
265 3 if code <> successful then
266 3 call file$err(old$fcb$adr);
PL/M-86 COMPILER REN: RENAME FILE PAGE 11
267 3 else do;
268 4 call crlf;
269 4 call print$file(new$fcb$adr);
270 4 call printchar('=');
271 4 call print$file(old$fcb$adr);
272 4 end;
273 3 next:
call setdma(.tbuff);
274 3 uda.dcnt = savdcnt;
275 3 uda.searcha = savsearcha;
276 3 uda.searchl = savsearchl;
277 3 dcnt = search$next;
278 3 end;
279 2 end single$file;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* invalid rename command */
280 1 bad$entry: proc;
281 2 call print$buf(.failed);
282 2 call print$buf(.('Invalid File','$'));
283 2 call terminate;
284 2 end bad$entry;
/**************************************
* *
* M A I N P R O G R A M *
* *
**************************************/
285 1 declare ver address;
286 1 declare last$dseg$byte byte
initial (0);
287 1 plm$start:
procedure public;
288 2 ver = version;
289 2 if low(ver) < Ver$BDOS or (high(ver) and Ver$Mask) = 0 then
290 2 call print$buf (.(Ver$Needs$OS,'$'));
291 2 else do;
292 3 call get$uda;
293 3 parse$fn.buff$adr = .tbuff(1);
294 3 new$fcb$adr, parse$fn.fcb$adr = .fcb;
295 3 if (parse$fn.fcb$adr:=parse) <> 0FFFFh then do; /* old file */
297 4 parse$fn.buff$adr = parse$fn.fcb$adr + 1; /* skip delim */
298 4 parse$fn.fcb$adr = .cur$fcb;
299 4 parse$fn.fcb$adr = parse; /* new file */
300 4 call move (8,.cur$fcb+16,.passwd); /* password */
301 4 end;
302 3 if parse$fn.fcb$adr = 0ffffh then
303 3 call bad$entry;
304 3 if fcb(0) <> 0 then
305 3 if cur$fcb(0) <> 0 then do;
307 4 if fcb(0) <> cur$fcb(0) then
PL/M-86 COMPILER REN: RENAME FILE PAGE 12
308 4 call bad$entry;
309 4 end;
else
310 3 cur$fcb(0) = new$fcb(0); /* set drive */
311 3 if wildcard then
312 3 call singlefile;
313 3 else if rename(.cur$fcb) <> successful then
314 3 call singlefile;
end;
316 2 call mon1(0,0);
317 2 end plm$start;
318 1 end ren;
PL/M-86 COMPILER REN: RENAME FILE PAGE 13
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
104 0000H 1 A. . . . . . . . . BYTE BASED(S) 106
87 0021H 1 ABORT. . . . . . . BYTE MEMBER(PD)
5 ADDR . . . . . . . LITERALLY 104 145 230
280 048DH 22 BADENTRY . . . . . PROCEDURE STACK=000EH 303 308
95 0022H 17 BADWILDCARD. . . . BYTE ARRAY(17) DATA 137 212
5 BKSP . . . . . . . LITERALLY 190
83 0000H 2 BUFFADR. . . . . . WORD MEMBER(PARSEFN) 293 297
50 0004H 2 BUFFERADDRESS. . . WORD PARAMETER AUTOMATIC 51 52
168 0004H 1 C. . . . . . . . . BYTE PARAMETER AUTOMATIC 169 170 171 172 173
103 0004H 1 C. . . . . . . . . BYTE PARAMETER AUTOMATIC 104 105
176 0044H 1 C. . . . . . . . . BYTE 181 182 183 188 190 199 202
43 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 44 45
47 0033H 15 CHECKCONSTAT . . . PROCEDURE BYTE STACK=0008H 202
29 0000H 1 CMDRV. . . . . . . BYTE EXTERNAL(4)
87 0020H 1 CNS. . . . . . . . BYTE MEMBER(PD)
229 0048H 1 CODE . . . . . . . BYTE 237 248 255 259 263 265
153 0042H 1 CODE . . . . . . . BYTE 161 162 163 164
110 0004H 1 CODE . . . . . . . BYTE PARAMETER AUTOMATIC 111 112 117 122 127 129 131 133
135
40 0011H 15 CONIN. . . . . . . PROCEDURE BYTE STACK=0008H 181
87 0022H 2 CONMODE. . . . . . WORD MEMBER(PD)
5 CR . . . . . . . . LITERALLY 95 100 119 183
99 0109H 17 CRLF . . . . . . . PROCEDURE STACK=000EH 177 185 268
5 CTRLC. . . . . . . LITERALLY 199
5 CTRLX. . . . . . . LITERALLY 188
98 0020H 33 CURFCB . . . . . . BYTE ARRAY(33) 208 222 224 240 298 300 305 307 310 313
88 000EH 2 DBLK . . . . . . . WORD MEMBER(UDA)
5 DCL. . . . . . . . LITERALLY
229 0049H 1 DCNT . . . . . . . BYTE 240 242 243 277
88 000CH 2 DCNT . . . . . . . WORD MEMBER(UDA) 244 274
64 0080H 16 DELETEFILE . . . . PROCEDURE STACK=000AH 254
88 0012H 8 DFPASSWORD . . . . BYTE ARRAY(8) MEMBER(UDA)
72 0004H 2 DMA. . . . . . . . WORD PARAMETER AUTOMATIC 73 74
88 0002H 2 DMAOFST. . . . . . WORD MEMBER(UDA)
88 0004H 2 DMASEG . . . . . . WORD MEMBER(UDA)
88 0000H 2 DPARAM . . . . . . WORD MEMBER(UDA)
87 0012H 1 DSK. . . . . . . . BYTE MEMBER(PD)
87 0018H 2 DVRACT . . . . . . WORD MEMBER(PD)
110 013AH 123 ERROR. . . . . . . PROCEDURE STACK=0010H 163 237 241
153 000EH 2 ERRORCODE. . . . . WORD 157 159 161
88 0010H 1 ERRORMODE. . . . . BYTE MEMBER(UDA)
202 02DEH EXIT . . . . . . . LABEL 186
103 0006H 1 F. . . . . . . . . BYTE PARAMETER AUTOMATIC 104 106
95 0000H 16 FAILED . . . . . . BYTE ARRAY(16) DATA 211 234 281
5 FALSE. . . . . . . LITERALLY 206
30 0000H 1 FCB. . . . . . . . BYTE ARRAY(1) EXTERNAL(5) 294 304 307
31 0000H 1 FCB16. . . . . . . BYTE ARRAY(1) EXTERNAL(6)
232 0004H 2 FCBA . . . . . . . WORD PARAMETER AUTOMATIC 233 235
68 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 69 70
PL/M-86 COMPILER REN: RENAME FILE PAGE 14
64 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 65 66
57 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 58 59
83 0002H 2 FCBADR . . . . . . WORD MEMBER(PARSEFN) 294 295 297 298 299 302
141 0004H 2 FCBP . . . . . . . WORD PARAMETER AUTOMATIC 145 149
145 0000H 32 FCBV . . . . . . . BYTE BASED(FCBP) ARRAY(32) 149
232 046CH 33 FILEERR. . . . . . PROCEDURE STACK=0016H 250 261 266
103 011AH 32 FILL . . . . . . . PROCEDURE STACK=0008H 179
87 0006H 2 FLAG . . . . . . . WORD MEMBER(PD)
144 FNAM . . . . . . . LITERALLY 146
5 FOREVER. . . . . . LITERALLY
17 0000H 1 FUNC . . . . . . . BYTE PARAMETER 18
13 0000H 1 FUNC . . . . . . . BYTE PARAMETER 14
25 0000H 1 FUNC . . . . . . . BYTE PARAMETER 26
88 0006H 1 FUNC . . . . . . . BYTE MEMBER(UDA)
21 0000H 1 FUNC . . . . . . . BYTE PARAMETER 22
175 0259H 141 GETPASSWD. . . . . PROCEDURE STACK=0012H 262
89 00E1H 40 GETUDA . . . . . . PROCEDURE STACK=0008H 292
HIGH . . . . . . . BUILTIN 161 289
176 0043H 1 I. . . . . . . . . BYTE 180 182 192 195
205 0045H 1 I. . . . . . . . . BYTE 207 208 209
221 0047H 1 I. . . . . . . . . BYTE 223 224 225
13 0000H 2 INFO . . . . . . . WORD PARAMETER 15
25 0000H 2 INFO . . . . . . . WORD PARAMETER 27
17 0000H 2 INFO . . . . . . . WORD PARAMETER 19
21 0000H 2 INFO . . . . . . . WORD PARAMETER 23
142 0041H 1 K. . . . . . . . . BYTE 146 147 149
286 004BH 1 LASTDSEGBYTE . . . BYTE INITIAL
87 0014H 1 LDSK . . . . . . . BYTE MEMBER(PD)
33 0000H 1 LEN0 . . . . . . . BYTE EXTERNAL(8)
35 0000H 1 LEN1 . . . . . . . BYTE EXTERNAL(10)
5 LF . . . . . . . . LITERALLY 95 101 119
87 0000H 2 LINK . . . . . . . WORD MEMBER(PD)
5 LIT. . . . . . . . LITERALLY 9 10 11 12 94 143 144
LOW. . . . . . . . BUILTIN 159 289
87 0024H 1 LST. . . . . . . . BYTE MEMBER(PD)
87 0015H 1 LUSER. . . . . . . BYTE MEMBER(PD)
87 0016H 2 MEM. . . . . . . . WORD MEMBER(PD)
76 0004H 1 MODE . . . . . . . BYTE PARAMETER AUTOMATIC 77 78
13 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(0) STACK=0000H 45 52 66 74 78 81
316
17 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H 38 41 48 59 62
21 0000H MON3 . . . . . . . PROCEDURE WORD EXTERNAL(2) STACK=0000H 55 70 85
25 0000H MON4 . . . . . . . PROCEDURE POINTER EXTERNAL(3) STACK=0000H 90
MOVE . . . . . . . BUILTIN 154 300
88 0011H 1 MULTCNT. . . . . . BYTE MEMBER(UDA)
87 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(PD)
87 001DH 1 NET. . . . . . . . BYTE MEMBER(PD)
97 0000H 32 NEWFCB . . . . . . BYTE BASED(NEWFCBADR) ARRAY(32) 209 225 310
97 000CH 2 NEWFCBADR. . . . . WORD 97 154 209 225 250 254 269 294 310
273 0441H NEXT . . . . . . . LABEL 257
181 027FH NXTCHR . . . . . . LABEL 196
88 0000H 2 OFFSET . . . . . . WORD MEMBER(UDAPTR) 92
231 0000H 32 OLDFCB . . . . . . BYTE BASED(OLDFCBADR) ARRAY(32)
153 0000H 32 OLDFCB . . . . . . BYTE BASED(OLDFCBADR) ARRAY(32)
220 0000H 32 OLDFCB . . . . . . BYTE BASED(OLDFCBADR) ARRAY(32) 222 225
230 0010H 2 OLDFCBADR. . . . . WORD 231 243 247 248 255 261 263 266 271
219 0004H 2 OLDFCBADR. . . . . WORD PARAMETER AUTOMATIC 220 222 225
PL/M-86 COMPILER REN: RENAME FILE PAGE 15
152 0004H 2 OLDFCBADR. . . . . WORD PARAMETER AUTOMATIC 153 154 157
87 001CH 1 ORG. . . . . . . . BYTE MEMBER(PD)
87 001EH 2 PARENT . . . . . . WORD MEMBER(PD)
84 00D2H 15 PARSE. . . . . . . PROCEDURE WORD STACK=0008H 295 299
83 0000H 4 PARSEFN. . . . . . STRUCTURE 85 293 294 295 297 298 299 302
32 0000H 2 PASS0. . . . . . . WORD EXTERNAL(7)
34 0000H 2 PASS1. . . . . . . WORD EXTERNAL(9)
96 0018H 8 PASSWD . . . . . . BYTE ARRAY(8) 155 179 182 195 300
11 PCM11. . . . . . . LITERALLY
11 PCMCTLC. . . . . . LITERALLY
11 PCMCTLO. . . . . . LITERALLY
11 PCMCTLS. . . . . . LITERALLY
11 PCMROUT. . . . . . LITERALLY
11 PCMRSX . . . . . . LITERALLY
87 0000H 48 PD . . . . . . . . STRUCTURE BASED(PDPOINTER) 91
88 001AH 1 PDCNT. . . . . . . BYTE MEMBER(UDA)
7 PDHDR. . . . . . . LITERALLY 87
87 0004H 4 PDPOINTER. . . . . POINTER 87 90 91
8 PDSTRUCTURE. . . . LITERALLY 87
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
287 04A3H 179 PLMSTART . . . . . PROCEDURE PUBLIC STACK=001EH
6 PNAMSIZ. . . . . . LITERALLY
87 002CH 2 PRET . . . . . . . WORD MEMBER(PD)
50 0042H 16 PRINTBUF . . . . . PROCEDURE STACK=000AH 114 119 124 128 130 132 134 137
178 211 212 234 251 281 282 290
43 0020H 19 PRINTCHAR. . . . . PROCEDURE STACK=000AH 100 101 148 149 236 270
141 01B5H 56 PRINTFILE. . . . . PROCEDURE STACK=0010H 235 269 271
87 0005H 1 PRIOR. . . . . . . BYTE MEMBER(PD)
5 PROC . . . . . . . LITERALLY 99 103 110 168 175 204 219 280
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
37 0002H 15 READCONSOLE. . . . PROCEDURE BYTE STACK=0008H 252
95 0010H 18 READONLY . . . . . BYTE ARRAY(18) DATA 124 128
1 0002H REN. . . . . . . . PROCEDURE STACK=0000H
152 01EDH 83 RENAME . . . . . . PROCEDURE BYTE STACK=0016H 248 255 263 313
68 0090H 16 RENAMEFILE . . . . PROCEDURE WORD STACK=000AH 157
87 0028H 4 RESERVD. . . . . . BYTE ARRAY(4) MEMBER(PD)
PL/M-86 COMPILER REN: RENAME FILE PAGE 16
179 0266H RETRY. . . . . . . LABEL 189 193
76 00B0H 19 RETURNERRORS . . . PROCEDURE STACK=000AH 156 158
103 0008H 2 S. . . . . . . . . WORD PARAMETER AUTOMATIC 104 106 107
230 0012H 2 SAVDCNT. . . . . . WORD 244 274
230 0014H 2 SAVSEARCHA . . . . WORD 245 275
229 004AH 1 SAVSEARCHL . . . . BYTE 246 276
87 002EH 2 SCRATCH. . . . . . WORD MEMBER(PD)
88 0008H 2 SEARCHA. . . . . . WORD MEMBER(UDA) 245 275
88 000AH 2 SEARCHABASE. . . . WORD MEMBER(UDA)
57 0061H 16 SEARCHFIRST. . . . PROCEDURE BYTE STACK=000AH 240
88 0007H 1 SEARCHL. . . . . . BYTE MEMBER(UDA) 246 276
61 0071H 15 SEARCHNEXT . . . . PROCEDURE BYTE STACK=0008H 277
88 0002H 2 SEGMENT. . . . . . WORD MEMBER(UDAPTR) 91
72 00A0H 16 SETDMA . . . . . . PROCEDURE STACK=000AH 155 239 273
219 0333H 57 SETNEWFCB. . . . . PROCEDURE STACK=0004H 247
87 0025H 1 SF3. . . . . . . . BYTE MEMBER(PD)
87 0026H 1 SF4. . . . . . . . BYTE MEMBER(PD)
87 0027H 1 SF5. . . . . . . . BYTE MEMBER(PD)
SHL. . . . . . . . BUILTIN 243
228 036CH 256 SINGLEFILE . . . . PROCEDURE STACK=001AH 312 314
87 0004H 1 STAT . . . . . . . BYTE MEMBER(PD)
94 SUCCESSFUL . . . . LITERALLY 166 265 313
36 0000H 1 TBUFF. . . . . . . BYTE ARRAY(1) EXTERNAL(11) 239 243 273 293
80 00C3H 15 TERMINATE. . . . . PROCEDURE STACK=0008H 115 120 125 138 200 213 283
87 0002H 2 THREAD . . . . . . WORD MEMBER(PD)
5 TRUE . . . . . . . LITERALLY 215
143 TYP. . . . . . . . LITERALLY 147
168 0240H 25 UCASE. . . . . . . PROCEDURE BYTE STACK=0004H 181 252
88 0000H 27 UDA. . . . . . . . STRUCTURE BASED(UDAPOINTER) 244 245 246 274 275 276
87 0010H 2 UDA. . . . . . . . WORD MEMBER(PD) 91
88 0008H 4 UDAPOINTER . . . . POINTER 88 244 245 246 274 275 276
88 0008H 4 UDAPTR . . . . . . STRUCTURE AT 91 92
12 UDASTRUCTURE . . . LITERALLY 88
87 0013H 1 USER . . . . . . . BYTE MEMBER(PD)
285 0016H 2 VER. . . . . . . . WORD 288 289
4 VERBDOS. . . . . . LITERALLY 289
3 VERMASK. . . . . . LITERALLY 289
2 VERNEEDSOS . . . . LITERALLY 290
2 VEROS. . . . . . . LITERALLY
54 0052H 15 VERSION. . . . . . PROCEDURE WORD STACK=0008H 288
87 001AH 2 WAIT . . . . . . . WORD MEMBER(PD)
205 0046H 1 WILD . . . . . . . BYTE 206 215 217
204 02E6H 77 WILDCARD . . . . . PROCEDURE BYTE STACK=000EH 311
MODULE INFORMATION:
CODE AREA SIZE = 0556H 1366D
CONSTANT AREA SIZE = 00D0H 208D
VARIABLE AREA SIZE = 004CH 76D
MAXIMUM STACK SIZE = 001EH 30D
635 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION