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

974 lines
51 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 SDIR - DISPLAY FILES PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE DISPLAY
OBJECT MODULE PLACED IN DISP
COMPILER INVOKED BY: :F0: DISP.PLM DEBUG OBJECT(DISP) OPTIMIZE(3) XREF
$title ('SDIR - Display Files')
1 display:
do;
/* Display Module for SDIR */
$include(comlit.lit)
=
2 1 = declare
= lit literally 'literally',
= dcl lit 'declare',
= true lit '0ffh',
= false lit '0',
= 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(mon.plm)
=
= /* definitions for assembly interface module */
3 1 = declare
= fcb (33) byte external, /* default file control block */
= maxb address external, /* top of memory */
= buff(128)byte external; /* default buffer */
=
4 1 = mon1: procedure(f,a) external;
5 2 = declare f byte, a address;
6 2 = end mon1;
=
7 1 = mon2: procedure(f,a) byte external;
8 2 = declare f byte, a address;
9 2 = end mon2;
=
10 1 = mon3: procedure(f,a) address external;
11 2 = declare f byte, a address;
12 2 = end mon3;
=
13 1 dcl (cur$drv, cur$usr) byte external;
14 1 dcl (os,bdos) byte external;
$include(vers.lit)
15 1 = declare
= bdos20 lit '20h',
= bdos22 lit '22h',
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 2
= bdos30 lit '30h',
= mpm lit '01h',
= cpm86 lit '10h',
= mpm86 lit '11h',
= ccpm86 lit '14h';
16 1 dcl used$de address external; /* number of used directory entries */
17 1 dcl date$opt boolean external; /* date option flag */
18 1 dcl display$attributes boolean external; /* attributes display flag */
19 1 dcl sorted boolean external;
20 1 dcl filesfound address external;
$include (search.lit)
=
21 1 = declare /* what kind of file user wants to find */
= find$structure lit 'structure (
= dir byte,
= sys byte,
= ro byte,
= rw byte,
= pass byte,
= xfcb byte,
= nonxfcb byte,
= exclude byte)';
=
22 1 = declare
= max$search$files literally '10';
=
23 1 = declare
= search$structure lit 'structure(
= drv byte,
= name(8) byte,
= type(3) byte,
= anyfile boolean)'; /* match on any drive if true */
=
24 1 dcl find find$structure external;
25 1 dcl format byte external, /* format is one of the following */
page$len address external, /* page size before printing new headers */
message boolean external, /* print titles and msg when no file found */
formfeeds boolean external; /* use form feeds to separate headers */
$include(format.lit)
=
26 1 = dcl form$short lit '0', /* format values for SDIR */
= form$size lit '1',
= form$full lit '2';
=
27 1 dcl file$displayed boolean public initial (false);
/* true if we ever display a file, from any drive or user */
/* used by main.plm for file not found message */
28 1 dcl dir$label byte external;
$include(fcb.lit)
=
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 3
29 1 = declare
= f$drvusr lit '0', /* drive/user byte */
= f$name lit '1', /* file name */
= f$namelen lit '8', /* file name length */
= f$type lit '9', /* file type field */
= f$typelen lit '3', /* type length */
= f$rw lit '9', /* high bit is R/W attribute */
= f$dirsys lit '10', /* high bit is dir/sys attribute */
= f$arc lit '11', /* high bit is archive attribute */
= f$ex lit '12', /* extent */
= f$s1 lit '13', /* module byte */
= f$rc lit '15', /* record count */
= f$diskmap lit '16', /* file disk map */
= diskmaplen lit '16', /* disk map length */
= f$drvusr2 lit '16', /* fcb2 */
= f$name2 lit '17',
= f$type2 lit '25',
= f$cr lit '32', /* current record */
= f$rrec lit '33', /* random record */
= f$rreco lit '35'; /* " " overflow */
=
$include(xfcb.lit)
=
30 1 = declare /* XFCB */
= xfcb$type lit '10h', /* identifier on disk */
= xf$passmode lit '12', /* pass word protection mode */
= xf$pass lit '16', /* XFCB password */
= passlen lit '8', /* password length */
= xf$create lit '24', /* creation/access time stamp */
= xf$update lit '28'; /* update time stamp */
=
31 1 = declare /* directory label: special case of XFCB */
= dirlabeltype lit '20h', /* identifier on disk */
= dl$password lit '128', /* masks on data byte */
= dl$access lit '64',
= dl$update lit '32',
= dl$makexfcb lit '16',
= dl$exists lit '1';
=
32 1 = declare /* password mode of xfcb */
= pm$read lit '80h',
= pm$write lit '40h',
= pm$delete lit '20h';
=
33 1 dcl
buf$fcb$adr address external, /* index into directory buffer */
buf$fcb based buf$fcb$adr (32) byte,
/* fcb template for dir */
(f$i$adr,last$f$i$adr,first$f$i$adr) address external,
cur$file address; /* number of file currently */
/* being displayed */
$include(finfo.lit)
=
= /* file info record for SDIR - note if this structure changes in size */
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 4
= /* the multXX: routine in the sort.plm module must also change */
=
34 1 = declare
= f$info$structure lit 'structure(
= usr byte, name (8) byte, type (3) byte, onekblocks address,
= kbytes address, recs$lword address, recs$hbyte byte,
= hash$link address, x$i$adr address)';
35 1 = declare
= x$info$structure lit 'structure (
= create (4) byte,
= update (4) byte,
= passmode byte)';
=
/* structure of file info */
36 1 dcl file$info based f$i$adr f$info$structure;
37 1 dcl x$i$adr address external,
xfcb$info based x$i$adr x$info$structure;
38 1 dcl f$i$indices$base address external, /* if sorted then f$i$indices */
f$i$indices based f$i$indices$base (1) address; /* are here */
/* -------- Routines in util.plm -------- */
39 1 printchar: procedure (char) external;
40 2 dcl char byte;
41 2 end printchar;
42 1 print: procedure (string$adr) external; /* BDOS call # 9 */
43 2 dcl string$adr address;
44 2 end print;
45 1 printb: procedure external;
46 2 end printb;
47 1 crlf: procedure external;
48 2 end crlf;
49 1 printfn: procedure(fname$adr) external;
50 2 dcl fname$adr address;
51 2 end printfn;
52 1 pdecimal: procedure(v,prec,zerosup) external;
/* print value val, field size = (log10 prec) + 1 */
/* with leading zero suppression if zerosup = true */
53 2 declare v address, /* value to print */
prec address, /* precision */
zerosup boolean; /* zero suppression flag */
54 2 end pdecimal;
55 1 p3byte: procedure(byte3adr,prec)external;
/* print 3 byte value with 0 suppression */
56 2 dcl (byte3adr,prec) address; /* assume high order bit is < 10 */
57 2 end p3byte;
58 1 add3byte: procedure (byte3$adr,word$amt) external;
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 5
59 2 dcl (byte3$adr, word$amt) address;
60 2 end add3byte; /* add word to 3 byte structure */
61 1 add3byte3: procedure (byte3$adr,byte3) external;
62 2 dcl (byte3$adr, byte3) address;
63 2 end add3byte3; /* add 3 byte quantity to 3 byte total */
64 1 shr3byte: procedure (byte3$adr) external;
65 2 dcl byte3$adr address;
66 2 end shr3byte;
/* -------- Routines in search.plm -------- */
67 1 search$first: procedure(fcb$adr) byte external;
68 2 dcl fcb$adr address;
69 2 end search$first;
70 1 search$next: procedure byte external;
71 2 end search$next;
/*break: procedure external;
end break;*/
72 1 match: procedure boolean external;
73 2 dcl fcb$adr address;
74 2 end match;
/* -------- Other external routines -------- */
75 1 display$time$stamp: procedure (ts$adr) external; /* in dts.plm */
76 2 dcl ts$adr address;
77 2 end display$time$stamp;
78 1 terminate: procedure external; /* in main.plm */
79 2 end terminate;
80 1 mult23: procedure(index) address external; /* in sort.plm */
81 2 dcl index address;
82 2 end mult23;
/* -------- From dpb86.plm or dpb80.plm -------- */
$include(dpb.lit)
=
= /* indices into disk parameter block, used as parameters to dpb procedure */
=
83 1 = dcl spt$w lit '0',
= blkshf$b lit '2',
= blkmsk$b lit '3',
= extmsk$b lit '4',
= blkmax$w lit '5',
= dirmax$w lit '7',
= dirblk$w lit '9',
= chksiz lit '11',
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 6
= offset$w lit '13';
=
84 1 dpb$byte: procedure (dpb$index) byte external;
85 2 dcl dpb$index byte;
86 2 end dpb$byte;
87 1 dpb$word: procedure (dpb$index) address external;
88 2 dcl dpb$index byte;
89 2 end dpb$word;
/* -------- routines and data structures local to this module -------- */
90 1 direct$console$io: procedure byte;
91 2 return mon2(6,0ffh); /* ff to stay downward compatable */
92 2 end direct$console$io;
93 1 wait$keypress: procedure;
94 2 declare char byte;
95 2 char = direct$console$io;
96 2 do while char = 0;
97 3 char = direct$console$io;
98 3 end;
99 2 if char = ctrlc then
100 2 call terminate;
101 2 end wait$keypress;
102 1 declare global$line$count byte initial(1);
103 1 dcl total$kbytes structure ( /* grand total k bytes of files matched */
lword address,
hbyte byte),
total$recs structure ( /* grand total records of files matched */
lword address,
hbyte byte),
total$1k$blocks structure( /* how many 1k blocks are allocated */
lword address,
hbyte byte);
104 1 add$totals: procedure;
105 2 call add3byte(.total$kbytes,file$info.kbytes);
106 2 call add3byte3(.total$recs,.file$info.recs$lword); /* records in file */
107 2 call add3byte(.total$1k$blocks,file$info.onekblocks);
108 2 end add$totals;
109 1 dcl files$per$line byte;
110 1 dcl cur$line address;
111 1 dcl hdr (*) byte data (' Name Bytes Recs Attributes $');
112 1 dcl hdr$bars (*) byte data ('------------ ------ ------ ------------$');
113 1 dcl hdr$pu (*) byte data (' Prot Update $');
114 1 dcl hdr$xfcb$bars (*) byte data (' ------ -------------- --------------$');
115 1 dcl hdr$access (*) byte data (' Access $');
116 1 dcl hdr$create (*) byte data (' Create $');
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 7
/* example date 04/02/55 00:34 */
117 1 display$file$info: procedure;
/* print filename.typ */
118 2 call printfn(.file$info.name(0));
119 2 call printb;
120 2 call pdecimal(file$info.kbytes,10000,true);
121 2 call printchar('k'); /* up to 32 Meg - Bytes */
/* or 32,000k */
122 2 call printb;
123 2 call p3byte(.file$info.recs$lword,1); /* records */
124 2 call printb;
125 2 if rol(file$info.name(f$dirsys-1),1) then /* Type */
126 2 call print(.('Sys$'));
127 2 else call print(.('Dir$'));
128 2 call printb;
129 2 if rol(file$info.name(f$rw-1),1) then
130 2 call print(.('RO$'));
131 2 else call print(.('RW$'));
132 2 call printb;
133 2 if not display$attributes then do;
135 3 if rol(file$info.name(f$arc-1),1) then
136 3 call print(.('Arcv $'));
else
137 3 call print(.(' $'));
138 3 end;
139 2 else do;
140 3 if rol(file$info.name(f$arc-1),1) then /* arc bit was on in all */
141 3 call print$char('A'); /* dir entries */
142 3 else call printb;
143 3 if rol(file$info.name(0),1) then
144 3 call print$char('1');
145 3 else call printb;
146 3 if rol(file$info.name(1),1) then
147 3 call print$char('2');
148 3 else call printb;
149 3 if rol(file$info.name(2),1) then
150 3 call print$char('3');
151 3 else call printb;
152 3 if rol(file$info.name(3),1) then
153 3 call print$char('4');
154 3 else call printb;
155 3 end;
156 2 end display$file$info;
157 1 display$xfcb$info: procedure;
158 2 if file$info.x$i$adr <> 0 then
159 2 do;
160 3 call printb;
161 3 x$i$adr = file$info.x$i$adr;
162 3 if (xfcb$info.passmode and pm$read) <> 0 then
163 3 call print(.('Read $'));
164 3 else if (xfcb$info.passmode and pm$write) <> 0 then
165 3 call print(.('Write $'));
166 3 else if (xfcb$info.passmode and pm$delete) <> 0 then
167 3 call print(.('Delete$'));
else
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 8
168 3 call print(.('None $'));
169 3 call printb;
170 3 if (xfcb$info.update(0) <> 0 or xfcb$info.update(1) <> 0) then
171 3 call display$timestamp(.xfcb$info.update);
172 3 else call print(.(' $'));
173 3 call printb; call printb;
175 3 if (xfcb$info.create(0) <> 0 or xfcb$info.create(1) <> 0) then
176 3 call display$timestamp(.xfcb$info.create(0));
/* Create/Access */
177 3 end;
178 2 end display$xfcb$info;
179 1 dcl first$title boolean initial (true);
180 1 display$title: procedure;
181 2 if formfeeds then
182 2 call print$char(ff);
183 2 else if not first$title then
184 2 call crlf;
call print(.('Directory For Drive $'));
186 2 call printchar('A'+ cur$drv); call printchar(':');
188 2 if bdos >= bdos20 then
189 2 do;
190 3 call print(.(' User $'));
191 3 call pdecimal(cur$usr,10,true);
192 3 end;
193 2 call crlf;
194 2 cur$line = 2;
195 2 first$title = false;
196 2 end display$title;
197 1 short$display: procedure (fname$adr);
198 2 dcl fname$adr address;
199 2 if cur$file mod files$per$line = 0 then
200 2 do;
201 3 if cur$line mod page$len = 0 then
202 3 do;
203 4 call crlf;
204 4 call display$title;
205 4 call crlf;
206 4 end;
else
207 3 call crlf;
208 3 cur$line = cur$line + 1;
209 3 call printchar(cur$drv + 'A');
210 3 end;
211 2 else call printb;
212 2 call print(.(': $'));
213 2 call printfn(fname$adr);
214 2 cur$file = cur$file + 1;
215 2 end short$display;
216 1 test$att: procedure(char,off,on) boolean;
217 2 dcl (char,off,on) byte;
218 2 if (80h and char) <> 80h and off then
219 2 return(true);
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 9
220 2 if (80h and char) = 80h and on then
221 2 return(true);
222 2 return(false);
223 2 end test$att;
224 1 right$attributes: procedure(name$adr) boolean;
225 2 dcl name$adr address,
name based name$adr (1) byte;
226 2 return
test$att(name(f$rw-1),find.rw,find.ro) and
test$att(name(f$dirsys-1),find.dir,find.sys);
227 2 end right$attributes;
228 1 short$dir: procedure; /* looks like "DIR" command */
229 2 dcl dcnt byte;
230 2 fcb(f$drvusr) = '?';
231 2 files$per$line = 4;
232 2 dcnt = search$first(.fcb);
233 2 do while dcnt <> 0ffh;
234 3 buf$fcb$adr = shl(dcnt and 11b,5)+.buff; /* dcnt mod 4 * 32 */
235 3 if (buf$fcb(f$drvusr) and 0f0h) = 0 and
buf$fcb(f$ex) = 0 and
buf$fcb(f$ex)<= dpb$byte(extmsk$b) then /* no dir labels, xfcbs */
236 3 if match then
237 3 if right$attributes(.buf$fcb(f$name)) then
238 3 call short$display(.buf$fcb(f$name));
239 3 dcnt = search$next;
240 3 end;
241 2 end short$dir;
242 1 dcl (last$plus$one,index) address;
243 1 getnxt$file$info: procedure; /* set f$i$adr to base file$info on file */
244 2 dcl right$usr boolean; /* to be displayed, f$i$adr = 0ffffh if end */
245 2 right$usr = false;
246 2 if sorted then
247 2 do; index = index + 1;
249 3 f$i$adr = mult23(f$i$indices(index));
250 3 do while file$info.usr <> cur$usr and index <> filesfound;
251 4 index = index + 1;
252 4 f$i$adr = mult23(f$i$indices(index));
253 4 end;
254 3 if index = files$found then
255 3 f$i$adr = last$plus$one; /* no more files */
256 3 end;
else /* not sorted display in order found in directory */
257 2 do; /* use last$plus$one to avoid wrap around problems */
258 3 f$i$adr = f$i$adr + size(file$info);
259 3 do while file$info.usr <> cur$usr and f$i$adr <> last$plus$one;
260 4 f$i$adr = f$i$adr + size(file$info);
261 4 end;
262 3 end;
263 2 end getnxt$file$info;
264 1 size$display: procedure;
265 2 if (format and form$size) <> 0 then
266 2 files$per$line = 3;
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 10
267 2 else files$per$line = 4;
268 2 do while f$i$adr <> last$plus$one;
269 3 if ((file$info.x$i$adr <> 0 and find.xfcb) or
file$info.x$i$adr = 0 and find.nonxfcb) and
right$attributes(.file$info.name(0)) then
270 3 do;
271 4 call add$totals;
272 4 call short$display(.file$info.name(0));
273 4 call pdecimal(file$info.kbytes,10000,true);
274 4 call print(.('k$'));
275 4 end;
276 3 call getnxt$file$info;
277 3 end;
278 2 end size$display;
279 1 display$no$dirlabel: procedure;
280 2 files$per$line = 2;
281 2 do while f$i$adr <> last$plus$one; /* Do all valid files */
282 3 if ((file$info.x$i$adr <> 0 and find.xfcb) or
(file$info.x$i$adr = 0 and find.nonxfcb)) and
right$attributes(.file$info.name(0)) then
283 3 do;
284 4 if cur$file mod files$per$line <> 0 then call printb;
286 4 else do; /* need a new line */
287 5 if cur$line mod page$len <> 0 then do; /* just crlf */
289 6 call crlf;
290 6 cur$line = cur$line + 1;
291 6 end;
292 5 else do; /* print header */
293 6 call crlf;
294 6 call display$title; call crlf;
296 6 call print(.hdr); call printb; call print(.hdr);
299 6 call crlf;
300 6 call print(.hdr$bars); call printb; call print(.hdr$bars);
303 6 call crlf;
304 6 cur$line = cur$line + 3;
305 6 end;
306 5 end;
307 4 call display$file$info;
308 4 cur$file = cur$file + 1;
309 4 call add$totals;
310 4 end;
311 3 call getnxt$file$info;
312 3 end;/* do loop */
313 2 end display$no$dirlabel;
314 1 display$with$dirlabel: procedure;
315 2 files$per$line = 1;
316 2 do while f$i$adr <> last$plus$one; /* Display the file info */
317 3 if ((file$info.x$i$adr <> 0 and find.xfcb) or
(file$info.x$i$adr = 0 and find.nonxfcb)) and
right$attributes(.file$info.name(0)) then
318 3 do;
319 4 if cur$line mod page$len = 0 then do; /* display the header */
321 5 call crlf;
322 5 call display$title; call crlf;
324 5 call print(.hdr); call print(.hdr$pu);
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 11
326 5 if (dirlabel and dl$access) <> 0 then
327 5 call print(.hdr$access);
328 5 else call print(.hdr$create);
329 5 call crlf;
330 5 call print(.hdr$bars); call print(.hdr$xfcb$bars);
332 5 cur$line = cur$line + 2;
333 5 end; /* header display */
334 4 call crlf;
335 4 call display$file$info; /* display non bdos 3.0 file info */
336 4 call display$xfcb$info;
337 4 cur$file = cur$file+1; cur$line = cur$line+1;
339 4 call add$totals;
340 4 end;
341 3 call getnxt$file$info;
342 3 end;
343 2 end display$with$dirlabel;
344 1 display$files: procedure public; /* MODULE ENTRY POINT */
/* display the collected data */
345 2 cur$line, cur$file = 0; /* force titles and new line */
346 2 totalkbytes.lword, totalkbytes.hbyte, totalrecs.lword, totalrecs.hbyte =0;
347 2 total$1k$blocks.lword, total$1k$blocks.hbyte = 0;
348 2 f$i$adr = first$f$i$adr - size(file$info); /* initial if no sort */
349 2 last$plus$one = last$f$i$adr + size(file$info);
350 2 index = 0ffffh; /* initial if sorted */
351 2 call getnxt$file$info; /* base file info record */
352 2 if format > 2 then
353 2 do;
354 3 call print(.('Illegal Format Value$'));
355 3 call terminate; /* default could be patched - watch it */
356 3 end;
357 2 do case format; /* format = */
358 3 call short$dir; /* form$short */
359 3 call size$display; /* form$size */
/* form = full */
360 3 if date$opt then do;
362 4 if ((( dir$label and dl$exists) <> 0 ) and
((( dir$label and dl$access) <> 0 ) or
(( dir$label and dl$update) <> 0 ) or
(( dir$label and dl$makexfcb) <> 0 ))) then
363 4 call display$with$dirlabel; /* Timestamping is active! */
364 4 else do;
365 5 call print(.('Date and Time Stamping Inactive$'));
366 5 call terminate;
367 5 end;
368 4 end;
369 3 else do; /* No date option; Regular Full display */
370 4 if (dir$label and dl$exists) <> 0 then
371 4 call display$with$dirlabel;
else
372 4 call display$no$dirlabel;
373 4 end;
374 3 end; /* end of case */
375 2 if format <> form$short and cur$file > 0 then /* print totals */
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 12
376 2 do;
377 3 if cur$line + 4 > page$len and formfeeds then
378 3 do;
379 4 call printchar(cr);
380 4 call printchar(ff); /* need a new page ? */
381 4 end;
else
382 3 do;
383 4 call crlf;
384 4 call crlf;
385 4 end;
386 3 call print(.( 'Total Bytes = $'));
387 3 call p3byte(.total$kbytes,1); /* 6 digit max */
388 3 call printchar('k');
389 3 call print(.(' Total Records = $'));
390 3 call p3byte(.total$recs,10); /* 7 digit max */
391 3 call print(.(' Files Found = $'));
392 3 call pdecimal(cur$file,1000,true); /* 4 digit max */
393 3 call print(.(cr,lf,'Total 1k Blocks = $'));
394 3 call p3byte(.total$1k$blocks,1); /* 6 digit max */
395 3 call print(.(' Used/Max Dir Entries For Drive $'));
396 3 call print$char('A' + cur$drv);
397 3 call print$char(':'); call printb;
399 3 call pdecimal(used$de,1000,true);
400 3 call print$char('/');
401 3 call pdecimal(dpb$word(dirmax$w) + 1,1000,true);
402 3 end;
403 2 if cur$file = 0 then
404 2 do;
405 3 if message then
406 3 do; call crlf;
408 4 call display$title;
409 4 call print(.('File Not Found.',cr,lf,'$'));
410 4 end;
411 3 end;
412 2 else do;
413 3 file$displayed = true;
414 3 if not formfeeds then
415 3 call crlf;
416 3 end;
417 2 end display$files;
418 1 end display;
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 13
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
7 0000H 2 A. . . . . . . . . . WORD PARAMETER 8
4 0000H 2 A. . . . . . . . . . WORD PARAMETER 5
10 0000H 2 A. . . . . . . . . . WORD PARAMETER 11
58 0000H ADD3BYTE . . . . . . PROCEDURE EXTERNAL(34) STACK=0000H 105 107
61 0000H ADD3BYTE3. . . . . . PROCEDURE EXTERNAL(35) STACK=0000H 106
104 002BH 48 ADDTOTALS. . . . . . PROCEDURE STACK=0008H 271 309 339
14 0000H 1 BDOS . . . . . . . . BYTE EXTERNAL(9) 188
15 BDOS20 . . . . . . . LITERALLY 188
15 BDOS22 . . . . . . . LITERALLY
15 BDOS30 . . . . . . . LITERALLY
83 BLKMAXW. . . . . . . LITERALLY
83 BLKMSKB. . . . . . . LITERALLY
83 BLKSHFB. . . . . . . LITERALLY
2 BOOLEAN. . . . . . . LITERALLY 17 18 19 25 27 53 72 179 216 224 244
3 0000H 128 BUFF . . . . . . . . BYTE ARRAY(128) EXTERNAL(2) 234
33 0000H 32 BUFFCB . . . . . . . BYTE BASED(BUFFCBADR) ARRAY(32) 235 237 238
33 0000H 2 BUFFCBADR. . . . . . WORD EXTERNAL(21) 33 234 235 237 238
61 0000H 2 BYTE3. . . . . . . . WORD PARAMETER 62
64 0000H 2 BYTE3ADR . . . . . . WORD PARAMETER 65
55 0000H 2 BYTE3ADR . . . . . . WORD PARAMETER 56
58 0000H 2 BYTE3ADR . . . . . . WORD PARAMETER 59
61 0000H 2 BYTE3ADR . . . . . . WORD PARAMETER 62
15 CCPM86 . . . . . . . LITERALLY
94 000BH 1 CHAR . . . . . . . . BYTE 95 96 97 99
39 0000H 1 CHAR . . . . . . . . BYTE PARAMETER 40
216 0008H 1 CHAR . . . . . . . . BYTE PARAMETER AUTOMATIC 217 218 220
83 CHKSIZ . . . . . . . LITERALLY
15 CPM86. . . . . . . . LITERALLY
2 CR . . . . . . . . . LITERALLY 379 393 409
37 0000H 4 CREATE . . . . . . . BYTE ARRAY(4) MEMBER(XFCBINFO) 175 176
47 0000H CRLF . . . . . . . . PROCEDURE EXTERNAL(30) STACK=0000H 184 193 203 205 207 289
293 295 299 303 321 323 329 334 383 384 407 415
2 CTRLC. . . . . . . . LITERALLY 99
13 0000H 1 CURDRV . . . . . . . BYTE EXTERNAL(6) 186 209 396
33 0000H 2 CURFILE. . . . . . . WORD 199 214 284 308 337 345 375 392 403
110 0004H 2 CURLINE. . . . . . . WORD 194 201 208 287 290 304 319 332 338 345 377
13 0000H 1 CURUSR . . . . . . . BYTE EXTERNAL(7) 191 250 259
17 0000H 1 DATEOPT. . . . . . . BYTE EXTERNAL(11) 360
2 DCL. . . . . . . . . LITERALLY
229 0018H 1 DCNT . . . . . . . . BYTE 232 233 234 239
24 0000H 1 DIR. . . . . . . . . BYTE MEMBER(FIND) 226
83 DIRBLKW. . . . . . . LITERALLY
90 0000H 15 DIRECTCONSOLEIO. . . PROCEDURE BYTE STACK=0008H 95 97
28 0000H 1 DIRLABEL . . . . . . BYTE EXTERNAL(20) 326 362 370
31 DIRLABELTYPE . . . . LITERALLY
83 DIRMAXW. . . . . . . LITERALLY 401
29 DISKMAPLEN . . . . . LITERALLY
1 0000H DISPLAY. . . . . . . PROCEDURE STACK=0000H
18 0000H 1 DISPLAYATTRIBUTES. . BYTE EXTERNAL(12) 133
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 14
117 005BH 287 DISPLAYFILEINFO. . . PROCEDURE STACK=000AH 307 335
344 0611H 443 DISPLAYFILES . . . . PROCEDURE PUBLIC STACK=001AH
279 04B0H 182 DISPLAYNODIRLABEL. . PROCEDURE STACK=0016H 372
75 0000H DISPLAYTIMESTAMP . . PROCEDURE EXTERNAL(40) STACK=0000H 171 176
180 020EH 98 DISPLAYTITLE . . . . PROCEDURE STACK=000AH 204 294 322 408
314 0566H 171 DISPLAYWITHDIRLABEL. PROCEDURE STACK=0016H 363 371
157 017AH 148 DISPLAYXFCBINFO. . . PROCEDURE STACK=0006H 336
31 DLACCESS . . . . . . LITERALLY 326 362
31 DLEXISTS . . . . . . LITERALLY 362 370
31 DLMAKEXFCB . . . . . LITERALLY 362
31 DLPASSWORD . . . . . LITERALLY
31 DLUPDATE . . . . . . LITERALLY 362
84 0000H DPBBYTE. . . . . . . PROCEDURE BYTE EXTERNAL(43) STACK=0000H 235
84 0000H 1 DPBINDEX . . . . . . BYTE PARAMETER 85
87 0000H 1 DPBINDEX . . . . . . BYTE PARAMETER 88
87 0000H DPBWORD. . . . . . . PROCEDURE WORD EXTERNAL(44) STACK=0000H 401
24 0007H 1 EXCLUDE. . . . . . . BYTE MEMBER(FIND)
83 EXTMSKB. . . . . . . LITERALLY 235
10 0000H 1 F. . . . . . . . . . BYTE PARAMETER 11
4 0000H 1 F. . . . . . . . . . BYTE PARAMETER 5
7 0000H 1 F. . . . . . . . . . BYTE PARAMETER 8
2 FALSE. . . . . . . . LITERALLY 27 195 222 245
29 FARC . . . . . . . . LITERALLY 135 140
3 0000H 33 FCB. . . . . . . . . BYTE ARRAY(33) EXTERNAL(0) 230 232
73 0002H 2 FCBADR . . . . . . . WORD
67 0000H 2 FCBADR . . . . . . . WORD PARAMETER 68
29 FCR. . . . . . . . . LITERALLY
29 FDIRSYS. . . . . . . LITERALLY 125 226
29 FDISKMAP . . . . . . LITERALLY
29 FDRVUSR. . . . . . . LITERALLY 230 235
29 FDRVUSR2 . . . . . . LITERALLY
29 FEX. . . . . . . . . LITERALLY 235
2 FF . . . . . . . . . LITERALLY 182 380
33 0000H 2 FIADR. . . . . . . . WORD EXTERNAL(22) 36 105 106 107 118 120 123 125 129
135 140 143 146 149 152 158 161 249 250 252 255 258 259
260 268 269 272 273 281 282 316 317 348
38 0000H 2 FIINDICES. . . . . . WORD BASED(FIINDICESBASE) ARRAY(1) 249 252
38 0000H 2 FIINDICESBASE. . . . WORD EXTERNAL(26) 38 249 252
27 000AH 1 FILEDISPLAYED. . . . BYTE PUBLIC INITIAL 413
36 0000H 23 FILEINFO . . . . . . STRUCTURE BASED(FIADR) 105 106 107 118 120 123 125 129
135 140 143 146 149 152 158 161 250 258 259 260 269 272
273 282 317 348 349
20 0000H 2 FILESFOUND . . . . . WORD EXTERNAL(14) 250 254
109 0016H 1 FILESPERLINE . . . . BYTE 199 231 266 267 280 284 315
24 0000H 8 FIND . . . . . . . . STRUCTURE EXTERNAL(15) 226 269 282 317
21 FINDSTRUCTURE. . . . LITERALLY 24
34 FINFOSTRUCTURE . . . LITERALLY 36
33 0000H 2 FIRSTFIADR . . . . . WORD EXTERNAL(24) 348
179 0017H 1 FIRSTTITLE . . . . . BYTE INITIAL 183 195
29 FNAME. . . . . . . . LITERALLY 237 238
29 FNAME2 . . . . . . . LITERALLY
49 0000H 2 FNAMEADR . . . . . . WORD PARAMETER 50
197 0004H 2 FNAMEADR . . . . . . WORD PARAMETER AUTOMATIC 198 213
29 FNAMELEN . . . . . . LITERALLY
2 FOREVER. . . . . . . LITERALLY
25 0000H 1 FORMAT . . . . . . . BYTE EXTERNAL(16) 265 352 357 375
25 0000H 1 FORMFEEDS. . . . . . BYTE EXTERNAL(19) 181 377 414
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 15
26 FORMFULL . . . . . . LITERALLY
26 FORMSHORT. . . . . . LITERALLY 375
26 FORMSIZE . . . . . . LITERALLY 265
29 FRC. . . . . . . . . LITERALLY
29 FRREC. . . . . . . . LITERALLY
29 FRRECO . . . . . . . LITERALLY
29 FRW. . . . . . . . . LITERALLY 129 226
29 FS1. . . . . . . . . LITERALLY
29 FTYPE. . . . . . . . LITERALLY
29 FTYPE2 . . . . . . . LITERALLY
29 FTYPELEN . . . . . . LITERALLY
243 03A9H 141 GETNXTFILEINFO . . . PROCEDURE STACK=0006H 276 311 341 351
102 000CH 1 GLOBALLINECOUNT. . . BYTE INITIAL
36 0013H 2 HASHLINK . . . . . . WORD MEMBER(FILEINFO)
103 0002H 1 HBYTE. . . . . . . . BYTE MEMBER(TOTAL1KBLOCKS) 347
103 0002H 1 HBYTE. . . . . . . . BYTE MEMBER(TOTALKBYTES) 346
103 0002H 1 HBYTE. . . . . . . . BYTE MEMBER(TOTALRECS) 346
111 0000H 40 HDR. . . . . . . . . BYTE ARRAY(40) DATA 296 298 324
115 008EH 17 HDRACCESS. . . . . . BYTE ARRAY(17) DATA 327
112 0028H 40 HDRBARS. . . . . . . BYTE ARRAY(40) DATA 300 302 330
116 009FH 17 HDRCREATE. . . . . . BYTE ARRAY(17) DATA 328
113 0050H 23 HDRPU. . . . . . . . BYTE ARRAY(23) DATA 325
114 0067H 39 HDRXFCBBARS. . . . . BYTE ARRAY(39) DATA 331
80 0000H 2 INDEX. . . . . . . . WORD PARAMETER 81
242 0008H 2 INDEX. . . . . . . . WORD 248 249 250 251 252 254 350
36 000EH 2 KBYTES . . . . . . . WORD MEMBER(FILEINFO) 105 120 273
33 0000H 2 LASTFIADR. . . . . . WORD EXTERNAL(23) 349
242 0006H 2 LASTPLUSONE. . . . . WORD 255 259 268 281 316 349
2 LF . . . . . . . . . LITERALLY 393 409
2 LIT. . . . . . . . . LITERALLY 2 15 21 23 26 29 30 31 32 34 35
83
103 0000H 2 LWORD. . . . . . . . WORD MEMBER(TOTAL1KBLOCKS) 347
103 0000H 2 LWORD. . . . . . . . WORD MEMBER(TOTALRECS) 346
103 0000H 2 LWORD. . . . . . . . WORD MEMBER(TOTALKBYTES) 346
72 0000H MATCH. . . . . . . . PROCEDURE BYTE EXTERNAL(39) STACK=0000H 236
3 0000H 2 MAXB . . . . . . . . WORD EXTERNAL(1)
22 MAXSEARCHFILES . . . LITERALLY
25 0000H 1 MESSAGE. . . . . . . BYTE EXTERNAL(18) 405
4 0000H MON1 . . . . . . . . PROCEDURE EXTERNAL(3) STACK=0000H
7 0000H MON2 . . . . . . . . PROCEDURE BYTE EXTERNAL(4) STACK=0000H 91
10 0000H MON3 . . . . . . . . PROCEDURE WORD EXTERNAL(5) STACK=0000H
15 MPM. . . . . . . . . LITERALLY
15 MPM86. . . . . . . . LITERALLY
80 0000H MULT23 . . . . . . . PROCEDURE WORD EXTERNAL(42) STACK=0000H 249 252
36 0001H 8 NAME . . . . . . . . BYTE ARRAY(8) MEMBER(FILEINFO) 118 125 129 135 140 143 146
149 152 269 272 282 317
225 0000H 1 NAME . . . . . . . . BYTE BASED(NAMEADR) ARRAY(1) 226
224 0004H 2 NAMEADR. . . . . . . WORD PARAMETER AUTOMATIC 225 226
24 0006H 1 NONXFCB. . . . . . . BYTE MEMBER(FIND) 269 282 317
2 NOPAGEMODEOFFSET . . LITERALLY
216 0006H 1 OFF. . . . . . . . . BYTE PARAMETER AUTOMATIC 217 218
83 OFFSETW. . . . . . . LITERALLY
216 0004H 1 ON . . . . . . . . . BYTE PARAMETER AUTOMATIC 217 220
36 000CH 2 ONEKBLOCKS . . . . . WORD MEMBER(FILEINFO) 107
14 0000H 1 OS . . . . . . . . . BYTE EXTERNAL(8)
55 0000H P3BYTE . . . . . . . PROCEDURE EXTERNAL(33) STACK=0000H 123 387 390 394
25 0000H 2 PAGELEN. . . . . . . WORD EXTERNAL(17) 201 287 319 377
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 16
2 PAGELENOFFSET. . . . LITERALLY
24 0004H 1 PASS . . . . . . . . BYTE MEMBER(FIND)
30 PASSLEN. . . . . . . LITERALLY
37 0008H 1 PASSMODE . . . . . . BYTE MEMBER(XFCBINFO) 162 164 166
52 0000H PDECIMAL . . . . . . PROCEDURE EXTERNAL(32) STACK=0000H 120 191 273 392 399 401
32 PMDELETE . . . . . . LITERALLY 166
32 PMREAD . . . . . . . LITERALLY 162
32 PMWRITE. . . . . . . LITERALLY 164
55 0000H 2 PREC . . . . . . . . WORD PARAMETER 56
52 0000H 2 PREC . . . . . . . . WORD PARAMETER 53
42 0000H PRINT. . . . . . . . PROCEDURE EXTERNAL(28) STACK=0000H 126 127 130 131 136 137
163 165 167 168 172 185 190 212 274 296 298 300 302 324
325 327 328 330 331 354 365 386 389 391 393 395 409
45 0000H PRINTB . . . . . . . PROCEDURE EXTERNAL(29) STACK=0000H 119 122 124 128 132 142
145 148 151 154 160 169 173 174 211 285 297 301 398
39 0000H PRINTCHAR. . . . . . PROCEDURE EXTERNAL(27) STACK=0000H 121 141 144 147 150 153
182 186 187 209 379 380 388 396 397 400
49 0000H PRINTFN. . . . . . . PROCEDURE EXTERNAL(31) STACK=0000H 118 213
36 0012H 1 RECSHBYTE. . . . . . BYTE MEMBER(FILEINFO)
36 0010H 2 RECSLWORD. . . . . . WORD MEMBER(FILEINFO) 106 123
224 02EEH 49 RIGHTATTRIBUTES. . . PROCEDURE BYTE STACK=0010H 237 269 282 317
244 0019H 1 RIGHTUSR . . . . . . BYTE 245
24 0002H 1 RO . . . . . . . . . BYTE MEMBER(FIND) 226
ROL. . . . . . . . . BUILTIN 125 129 135 140 143 146 149 152
24 0003H 1 RW . . . . . . . . . BYTE MEMBER(FIND) 226
67 0000H SEARCHFIRST. . . . . PROCEDURE BYTE EXTERNAL(37) STACK=0000H 232
70 0000H SEARCHNEXT . . . . . PROCEDURE BYTE EXTERNAL(38) STACK=0000H 239
23 SEARCHSTRUCTURE. . . LITERALLY
2 SECTORLEN. . . . . . LITERALLY
SHL. . . . . . . . . BUILTIN 234
228 031FH 138 SHORTDIR . . . . . . PROCEDURE STACK=0014H 358
197 0270H 81 SHORTDISPLAY . . . . PROCEDURE STACK=0010H 238 272
64 0000H SHR3BYTE . . . . . . PROCEDURE EXTERNAL(36) STACK=0000H
SIZE . . . . . . . . BUILTIN 258 260 348 349
264 0436H 122 SIZEDISPLAY. . . . . PROCEDURE STACK=0016H 359
19 0000H 1 SORTED . . . . . . . BYTE EXTERNAL(13) 246
83 SPTW . . . . . . . . LITERALLY
42 0000H 2 STRINGADR. . . . . . WORD PARAMETER 43
24 0001H 1 SYS. . . . . . . . . BYTE MEMBER(FIND) 226
2 TAB. . . . . . . . . LITERALLY
78 0000H TERMINATE. . . . . . PROCEDURE EXTERNAL(41) STACK=0000H 100 355 366
216 02C1H 45 TESTATT. . . . . . . PROCEDURE BYTE STACK=0008H 226
103 0013H 3 TOTAL1KBLOCKS. . . . STRUCTURE 107 347 394
103 000DH 3 TOTALKBYTES. . . . . STRUCTURE 105 346 387
103 0010H 3 TOTALRECS. . . . . . STRUCTURE 106 346 390
2 TRUE . . . . . . . . LITERALLY 120 179 191 219 221 273 392 399 401 413
75 0000H 2 TSADR. . . . . . . . WORD PARAMETER 76
36 0009H 3 TYPE . . . . . . . . BYTE ARRAY(3) MEMBER(FILEINFO)
37 0004H 4 UPDATE . . . . . . . BYTE ARRAY(4) MEMBER(XFCBINFO) 170 171
16 0000H 2 USEDDE . . . . . . . WORD EXTERNAL(10) 399
36 0000H 1 USR. . . . . . . . . BYTE MEMBER(FILEINFO) 250 259
52 0000H 2 V. . . . . . . . . . WORD PARAMETER 53
93 000FH 28 WAITKEYPRESS . . . . PROCEDURE STACK=000CH
58 0000H 2 WORDAMT. . . . . . . WORD PARAMETER 59
24 0005H 1 XFCB . . . . . . . . BYTE MEMBER(FIND) 269 282 317
37 0000H 9 XFCBINFO . . . . . . STRUCTURE BASED(XIADR) 162 164 166 170 171 175 176
30 XFCBTYPE . . . . . . LITERALLY
PL/M-86 COMPILER SDIR - DISPLAY FILES PAGE 17
30 XFCREATE . . . . . . LITERALLY
30 XFPASS . . . . . . . LITERALLY
30 XFPASSMODE . . . . . LITERALLY
30 XFUPDATE . . . . . . LITERALLY
37 0000H 2 XIADR. . . . . . . . WORD EXTERNAL(25) 37 161 162 164 166 170 171 175 176
36 0015H 2 XIADR. . . . . . . . WORD MEMBER(FILEINFO) 158 161 269 282 317
35 XINFOSTRUCTURE . . . LITERALLY 37
52 0000H 1 ZEROSUP. . . . . . . BYTE PARAMETER 53
MODULE INFORMATION:
CODE AREA SIZE = 07CCH 1996D
CONSTANT AREA SIZE = 01CDH 461D
VARIABLE AREA SIZE = 001AH 26D
MAXIMUM STACK SIZE = 001AH 26D
667 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION