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

1451 lines
67 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 HELP UTILITY VERSION 1.1 PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE HELP
OBJECT MODULE PLACED IN HELP.OBJ
COMPILER INVOKED BY: :F0: HELP.PLM XREF OPTIMIZE(3) DEBUG
$title ('Help Utility Version 1.1')
1 help:
do;
/*
Copyright (C) 1983
Digital Research
P.O. 579
Pacific Grove, CA 93950
Revised:
13 Feb 83 whf: fix paging bug
28 Jan 83 by Bill Fitler: add in Bruce's changes to date
07 Oct 82 by Bruce Skidmore
*/
$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.
= ****/
2 1 declare plmstart label public;
/**********************************************
Interface Procedures
**********************************************/
3 1 mon1:
procedure (func,info) external;
4 2 declare func byte;
5 2 declare info address;
6 2 end mon1;
7 1 mon2:
procedure (func,info) byte external;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 2
8 2 declare func byte;
9 2 declare info address;
10 2 end mon2;
11 1 mon3:
procedure (func,info) address external;
12 2 declare func byte;
13 2 declare info address;
14 2 end mon3;
/**********************************************
Global Variables
**********************************************/
15 1 declare (list$mode,nopage$mode,create$mode,extract$mode,page$mode) byte;
16 1 declare (offset,eod) byte;
17 1 declare fcb (13) byte external;
18 1 declare fcb2 (36) byte;
19 1 declare maxb address external;
20 1 declare fcb16 (1) byte external;
21 1 declare tbuff (128) byte external;
22 1 declare control$z literally '1AH';
23 1 declare cr literally '0DH';
24 1 declare lf literally '0AH';
25 1 declare tab literally '09H';
26 1 declare slash literally '''/''';
27 1 declare true literally '0FFH';
28 1 declare false literally '00H';
29 1 declare (cnt,index) byte;
30 1 declare sub(12) byte;
31 1 declare com(11) structure(
name(15) byte);
32 1 declare sysbuff(8) structure(
subject(12) byte,
record address,
rec$offset byte,
level byte) at (.memory);
33 1 declare name(12) byte;
34 1 declare level byte;
35 1 declare gindex address;
36 1 declare tcnt byte;
37 1 declare version address;
38 1 declare page$len byte;
39 1 declare clear$screen (26) byte initial (cr,lf,lf,lf,lf,lf,lf,
lf,lf,lf,lf,lf,lf,
lf,lf,lf,lf,lf,lf,
lf,lf,lf,lf,lf,lf,'$');
/**************************************
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 3
* *
* B D O S Externals *
* *
**************************************/
40 1 read$console:
procedure byte;
41 2 return mon2 (1,0);
42 2 end read$console;
43 1 write$console:
procedure (char);
44 2 declare char byte;
45 2 call mon1 (2,char);
46 2 end write$console;
47 1 print$console$buf:
procedure (buff$adr);
48 2 declare buff$adr address;
49 2 call mon1 (9,buff$adr);
50 2 end print$console$buf;
51 1 read$console$buff:
procedure (buff$adr);
52 2 declare buff$adr address;
53 2 call mon1(10,buff$adr);
54 2 end read$console$buff;
55 1 direct$con$io:
procedure(func) byte;
56 2 declare func byte;
57 2 return mon2(6,func);
58 2 end direct$con$io;
59 1 get$version:
procedure address;
60 2 return mon3(12,0);
61 2 end get$version;
62 1 delete$file:
procedure (fcb$address);
63 2 declare fcb$address address;
64 2 call mon1(19,fcb$address);
65 2 end delete$file;
66 1 open$file:
procedure (fcb$address) byte;
67 2 declare fcb$address address;
68 2 declare fcb based fcb$address (1) byte;
69 2 fcb(12) = 0; /* EX = 0 */
70 2 fcb(32) = 0; /* CR = 0 */
71 2 return mon2 (15,fcb$address);
72 2 end open$file;
73 1 close$file:
procedure (fcb$address) byte;
74 2 declare fcb$address address;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 4
75 2 return mon2 (16,fcb$address);
76 2 end close$file;
77 1 read$record:
procedure (fcb$address) byte;
78 2 declare fcb$address address;
79 2 return mon2 (20,fcb$address);
80 2 end read$record;
81 1 write$record:
procedure (fcb$address) byte;
82 2 declare fcb$address address;
83 2 return mon2(21,fcb$address);
84 2 end write$record;
85 1 make$file:
procedure (fcb$address) byte;
86 2 declare fcb$address address;
87 2 declare fcb based fcb$address (1) byte;
88 2 fcb(12) = 0; /* EX = 0 */
89 2 fcb(32) = 0; /* CR = 0 */
90 2 return mon2(22,fcb$address);
91 2 end make$file;
92 1 read$rand:
procedure (fcb$address) byte;
93 2 declare fcb$address address;
94 2 return mon2(33,fcb$address);
95 2 end read$rand;
96 1 set$dma:
procedure (dma$address);
97 2 declare dma$address address;
98 2 call mon1(26,dma$address);
99 2 end set$dma;
100 1 set$rand$rec:
procedure (fcb$address);
101 2 declare fcb$address address;
102 2 call mon1(36,fcb$address);
103 2 end set$rand$rec;
104 1 set$user:
procedure (usernum);
105 2 declare usernum byte;
106 2 call mon1(32,usernum);
107 2 end set$user;
108 1 declare cmdrv byte external; /* declared in assembler interface */
109 1 get$sysdrive:
procedure byte;
110 2 if (high(get$version) and 0FDH) <> 14H then /* CCP/M-86 ? */
111 2 return 0; /* no: sysdrive defaults to A */
112 2 return cmdrv; /* yes: sysdrive is drive we loaded from */
113 2 end get$sysdrive;
114 1 terminate:
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 5
procedure;
115 2 call mon1 (0,0);
116 2 end terminate;
/*********************************************
Error Procedure
Displays error messages and
terminates if required.
*********************************************/
117 1 error:
procedure(term$code,err$msg$adr);
118 2 declare term$code byte;
119 2 declare err$msg$adr address;
120 2 call print$console$buf(.(cr,lf,'ERROR: $'));
121 2 call print$console$buf(err$msg$adr);
122 2 call print$console$buf(.(cr,lf,'$'));
123 2 if term$code then
124 2 call terminate;
125 2 end error;
/*********************************************
Move Procedure
Moves specified number of bytes
from the Source address to the
Destination address.
*********************************************/
126 1 movef:
procedure (mvcnt,source$addr,dest$addr);
127 2 declare (source$addr,dest$addr) address;
128 2 declare mvcnt byte;
129 2 call move(mvcnt,source$addr,dest$addr);
130 2 return;
131 2 end movef;
/*********************************************
Compare Function
Compares 12 byte strings
Results: 0 - string1 = string2
1 - string1 < string2
2 - string1 > string2
*********************************************/
132 1 compare:
procedure(str1$addr,str2$addr) byte;
133 2 declare (str1$addr,str2$addr) address;
134 2 declare string1 based str1$addr (12) byte;
135 2 declare string2 based str2$addr (12) byte;
136 2 declare (result,i) byte;
137 2 result,
i = 0;
138 2 do while ((i < 12) and (string1(i) <> ' '));
139 3 if string1(i) <> string2(i) then
140 3 do;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 6
141 4 if string1(i) < string2(i) then
142 4 do;
143 5 result = 1;
144 5 end;
else
145 4 do;
146 5 result = 2;
147 5 end;
148 4 i = 11;
149 4 end;
150 3 i = i + 1;
151 3 end;
152 2 return result;
153 2 end compare;
/*********************************************
Increment Procedure
Increments through a record.
*********************************************/
154 1 inc:
procedure (inci) byte;
155 2 declare inci byte;
156 2 inci = inci + 1;
157 2 if inci > 127 then
158 2 do;
159 3 if read$record(.fcb) = 0 then
160 3 do;
161 4 inci = 0;
162 4 end;
else
163 3 do;
164 4 eod = true;
165 4 inci = 0;
166 4 end;
167 3 end;
168 2 return inci;
169 2 end inc;
/**************************************
Page$check Procedure
Halts display after page$len lines
**************************************/
170 1 page$check:
procedure(line$cnt$addr) byte;
171 2 declare line$cnt$addr address;
172 2 declare line$cnt based line$cnt$addr byte;
173 2 declare quit byte;
174 2 quit = 0;
175 2 if (not nopage$mode) and (page$mode) then
176 2 do;
177 3 if (line$cnt:=line$cnt+1) > page$len then
178 3 do;
179 4 call print$console$buf(.(cr,lf,'Press RETURN to continue $'));
180 4 line$cnt = 0;
181 4 do while (line$cnt = 0);
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 7
182 5 line$cnt = direct$con$io(0FDH);
183 5 end;
184 4 call print$console$buf(.(cr,' ',
cr,'$'));
185 4 if line$cnt = 3 /* control c */ then
186 4 do;
187 5 line$cnt = close$file(.fcb);
188 5 call terminate;
189 5 end;
else
190 4 do;
191 5 if line$cnt <> cr then
192 5 do;
193 6 quit = true;
194 6 end;
195 5 line$cnt = 0;
196 5 end;
197 4 end;
else
198 3 do;
199 4 call write$console(lf);
200 4 end;
201 3 end;
else
202 2 do;
203 3 line$cnt = 0;
204 3 call write$console(lf);
205 3 end;
206 2 return quit;
207 2 end page$check;
/*******************************************
Init Procedure
Reads the index into memory
*******************************************/
208 1 init:
procedure;
209 2 declare (buf$size,max$buf,init$i) address;
210 2 declare end$index byte;
211 2 buf$size = maxb - .memory;
212 2 max$buf = buf$size;
213 2 end$index = 0;
214 2 init$i = 7;
215 2 do while (not end$index) and (max$buf > 127);
216 3 call set$dma(.sysbuff(init$i-7).subject);
217 3 if read$record(.fcb) <> 0 then
218 3 do;
219 4 init$i = close$file(.fcb);
220 4 call error(true,.('Reading HELP.HLP index.$'));
221 4 end;
222 3 if sysbuff(init$i).subject(0) = '$' then end$index = true;
224 3 if not end$index then
225 3 do;
226 4 max$buf = max$buf - 128;
227 4 init$i = init$i + 8;
228 4 end;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 8
229 3 end;
230 2 call set$dma(.tbuff);
231 2 if (max$buf < 128) and (not end$index) then
232 2 do;
233 3 init$i = close$file(.fcb);
234 3 call error(true,.('Too many entries in Index Table.',
' Not enough memory.$'));
235 3 end;
236 2 end init;
/*******************************************
Parse Procedure
Parses the command tail
*******************************************/
237 1 parse:
procedure byte;
238 2 declare (index,begin,cnt,i,stop,bracket) byte;
239 2 index = 0;
240 2 if tbuff(0) <> 0 then
241 2 do;
242 3 do index = 1 to tbuff(0);
243 4 if tbuff(index) = tab then tbuff(index) = ' ';
245 4 else if tbuff(index) = ',' then tbuff(index) = ' ';
end;
248 3 index = 1;
249 3 do while(index < tbuff(0)) and (tbuff(index) = ' ');
250 4 index = index + 1;
251 4 end;
252 3 if tbuff(index) = '.' then
253 3 do;
254 4 begin = level;
255 4 tbuff(index) = ' ';
256 4 end;
else
257 3 begin = 0;
258 3 do index = begin to 10;
259 4 call movef(15,.(' ',cr,'$'),.com(index).name);
260 4 end;
261 3 index = begin;
262 3 cnt = 1;
263 3 stop,
bracket = 0;
264 3 do while (tbuff(cnt) <> 0) and (not stop);
265 4 if (tbuff(cnt) <> 20H) then
266 4 do;
267 5 i = 0;
268 5 do while (((tbuff(cnt) <> 20H) and (tbuff(cnt) <> '[')) and
(tbuff(cnt) <> 0)) and ((i < 12) and (index < 11));
269 6 if (tbuff(cnt) > 60H) and (tbuff(cnt) < 7BH) then
270 6 do;
271 7 com(index).name(i) = tbuff(cnt) - 20H;
272 7 end;
else
273 6 do;
274 7 com(index).name(i) = tbuff(cnt);
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 9
275 7 end;
276 6 cnt = cnt + 1;
277 6 i = i + 1;
278 6 end;
279 5 index = index + 1;
280 5 if (bracket or (index > 10)) then
281 5 do;
282 6 stop = true;
283 6 end;
else
284 5 if tbuff(cnt) = '[' then
285 5 do;
286 6 if com(index-1).name(0) = ' ' then index = index - 1;
288 6 com(index).name(0) = '[';
289 6 cnt = cnt + 1;
290 6 index = index + 1;
291 6 bracket = true;
292 6 end;
end;
else
294 4 do;
295 5 cnt = cnt + 1;
296 5 end;
297 4 end;
298 3 end;
299 2 list$mode,
nopage$mode,
create$mode,
extract$mode = false;
300 2 if index > 0 then
301 2 do;
302 3 i = 0;
303 3 do while (i < 10);
304 4 if com(i).name(0) = '[' then
305 4 do;
306 5 if (com(i+1).name(0) = 'C') then
307 5 do;
308 6 create$mode = true;
309 6 index = index - 2;
310 6 end;
311 5 else if (com(i+1).name(0) = 'E') then
312 5 do;
313 6 extract$mode = true;
314 6 index = index - 2;
315 6 end;
316 5 else if (com(i+1).name(0) = 'N') then
317 5 do;
318 6 nopage$mode =true;
319 6 index = index - 2;
320 6 end;
321 5 else if (com(i+1).name(0) = 'L') then
322 5 do;
323 6 list$mode = true;
324 6 nopage$mode = true;
325 6 index = index - 2;
326 6 end;
327 5 else if (com(i+1).name(0) <> ' ') then
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 10
328 5 do;
329 6 index = index - 2;
330 6 end;
else
331 5 do;
332 6 index = index - 1;
333 6 end;
334 5 i = 10;
335 5 end;
336 4 i = i + 1;
337 4 end;
338 3 end;
339 2 return index;
340 2 end parse;
/******************************************
Create$index Procedure
Creates HELP.HLP from HELP.DAT
******************************************/
341 1 create$index:
procedure;
342 2 declare (cnt, i, rec$cnt) byte;
343 2 declare (index,count,count2,max$buf,save$size) address;
344 2 declare fcb3(36) byte;
345 2 call print$console$buf(.(cr,lf,'Creating HELP.HLP....$'));
346 2 do i = 0 to 7;
347 3 call movef(12,.('$ '),.sysbuff(i).subject);
348 3 end;
349 2 rec$cnt,
index = 0;
350 2 save$size = maxb - .memory;
351 2 max$buf = save$size;
352 2 call movef(13,.(0,'HELP DAT',0),.fcb);
353 2 if open$file(.fcb) = 0FFH then
354 2 do;
355 3 call error(true,.('HELP.DAT not on current drive.$'));
356 3 end;
357 2 eod = 0;
358 2 do while (not eod) and (read$record(.fcb) = 0);
359 3 i = 0;
360 3 do while(i < 128) and (not eod);
361 4 if tbuff(i) = control$z then
362 4 do;
363 5 eod = true;
364 5 end;
else
365 4 do;
366 5 if tbuff(i) = slash then
367 5 do;
368 6 cnt = 0;
369 6 do while(not eod) and (tbuff(i) = slash);
370 7 i = inc(i);
371 7 cnt = cnt + 1;
372 7 end;
373 6 if (cnt = 3) and (not eod) then
374 6 do;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 11
375 7 sysbuff(index).level = tbuff(i) - '0';
376 7 i = inc(i);
377 7 cnt = 0;
378 7 do while ((cnt < 12) and (not eod)) and (tbuff(i) <> cr);
379 8 if (tbuff(i) > 60H) and (tbuff(i) < 7BH) then
380 8 do;
381 9 sysbuff(index).subject(cnt) = tbuff(i) - 20H;
382 9 end;
else
383 8 do;
384 9 sysbuff(index).subject(cnt) = tbuff(i);
385 9 end;
386 8 i = inc(i);
387 8 cnt = cnt + 1;
388 8 end;
389 7 if (not eod) then
390 7 do;
391 8 call set$rand$rec(.fcb);
392 8 call movef(1,.fcb(33),.sysbuff(index).record);
393 8 call movef(1,.fcb(34),.sysbuff(index).record+1);
394 8 sysbuff(index).record = sysbuff(index).record - 0001H;
395 8 sysbuff(index).rec$offset = i;
396 8 index = index + 1;
397 8 if ((index mod 8) = 0) then
398 8 do;
399 9 rec$cnt = rec$cnt + 1;
400 9 max$buf = max$buf - 128;
401 9 if (max$buf < 128) and (not eod) then
402 9 do;
403 10 cnt = close$file(.fcb);
404 10 call error(true,
.('Too many entries in Index Table.',
' Not enough memory.$'));
405 10 end;
else
406 9 do count = index to index + 7;
407 10 call movef(12,.('$ '),
.sysbuff(count).subject);
408 10 end;
409 9 end;
410 8 end;
411 7 end;
412 6 end;
else
413 5 do;
414 6 i = inc(i);
415 6 end;
416 5 end;
417 4 end;
418 3 end;
419 2 call set$dma(.sysbuff);
420 2 rec$cnt = rec$cnt + 1;
/********************************
create HELP.HLP
********************************/
421 2 call movef(13,.(0,'HELP HLP',0),.fcb3);
422 2 call delete$file(.fcb3);
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 12
423 2 if make$file(.fcb3) = 0FFH then
424 2 do;
425 3 cnt = close$file(.fcb2);
426 3 call delete$file(.fcb2);
427 3 cnt = close$file(.fcb);
428 3 call error(true,.('Unable to Make HELP.HLP.$'));
429 3 end;
430 2 call movef(4,.(0,0,0,0),.fcb2+32);
431 2 cnt = read$rand(.fcb2);
432 2 do count = 0 to index - 1;
433 3 sysbuff(count).record = sysbuff(count).record + rec$cnt;
434 3 end;
435 2 do count = 0 to rec$cnt - 1;
436 3 call set$dma(.memory(shl(count,7)));
437 3 if write$record(.fcb3) <> 0 then
438 3 do;
439 4 cnt = close$file(.fcb3);
440 4 call delete$file(.fcb3);
441 4 cnt = close$file(.fcb2);
442 4 call delete$file(.fcb2);
443 4 cnt = close$file(.fcb);
444 4 call error(true,.('Writing file HELP.HLP.$'));
445 4 end;
446 3 end;
447 2 call movef(4,.(0,0,0,0),.fcb+32);
448 2 cnt = read$rand(.fcb);
449 2 eod = 0;
450 2 do while (not eod);
451 3 count = 0;
452 3 max$buf = save$size;
453 3 do while (not eod) and (max$buf > 127);
454 4 call set$dma(.memory(shl(count,7)));
455 4 if read$record(.fcb) <> 0 then
456 4 do;
457 5 eod = true;
458 5 end;
else
459 4 do;
460 5 max$buf = max$buf - 128;
461 5 count = count + 1;
462 5 end;
463 4 end;
464 3 do count2 = 0 to count-1;
465 4 call set$dma(.memory(shl(count2,7)));
466 4 if write$record(.fcb3) <> 0 then
467 4 do;
468 5 i = close$file(.fcb3);
469 5 call delete$file(.fcb3);
470 5 i = close$file(.fcb);
471 5 call error(true,.('Writing file HELP.HLP.$'));
472 5 end;
473 4 end;
474 3 end;
475 2 if close$file(.fcb) = 0FFH then
476 2 do;
477 3 cnt = close$file(.fcb3);
478 3 call error(true,.('Closing file HELP.DAT.$'));
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 13
479 3 end;
480 2 if close$file(.fcb3) = 0FFH then
481 2 do;
482 3 call error(true,.(false,'Closing file HELP.HLP.$'));
483 3 end;
484 2 call print$console$buf(.('HELP.HLP created',cr,lf,'$'));
485 2 end create$index;
/********************************************
Extract$file Procedure
Creates HELP.DAT from HELP.HLP
********************************************/
486 1 extract$file:
procedure;
487 2 declare (end$index,i) byte;
488 2 declare (count,count2,max$buf,save$size) address;
489 2 call print$console$buf(.(cr,lf,'Extracting data....$'));
490 2 call movef(13,.(0,'HELP HLP',0),.fcb);
491 2 if open$file(.fcb) = 0FFH then
492 2 do;
493 3 call error(true,.('Unable to find file HELP.HLP.$'));
494 3 end;
495 2 call movef(13,.(0,'HELP DAT',0),.fcb2);
496 2 call delete$file(.fcb2);
497 2 if make$file(.fcb2) = 0FFH then
498 2 do;
499 3 i = close$file(.fcb);
500 3 call error(true,.('Unable to Make HELP.DAT.$'));
501 3 end;
502 2 call set$dma(.sysbuff);
503 2 end$index = 0;
504 2 do while ((i := read$record(.fcb)) = 0) and (not end$index);
505 3 if sysbuff(7).subject(0) = '$' then end$index = true;
507 3 end;
508 2 eod = 0;
509 2 if i <> 0 then eod = true;
511 2 i = write$record(.fcb2);
512 2 save$size = maxb - .memory;
513 2 do while (not eod);
514 3 count = 0;
515 3 max$buf = save$size;
516 3 do while (not eod) and (max$buf > 127);
517 4 call set$dma(.memory(shl(count,7)));
518 4 if read$record(.fcb) <> 0 then
519 4 do;
520 5 eod = true;
521 5 end;
else
522 4 do;
523 5 max$buf = max$buf - 128;
524 5 count = count + 1;
525 5 end;
526 4 end;
527 3 do count2 = 0 to count-1;
528 4 call set$dma(.memory(shl(count2,7)));
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 14
529 4 if write$record(.fcb2) <> 0 then
530 4 do;
531 5 i = close$file(.fcb2);
532 5 call delete$file(.fcb2);
533 5 i = close$file(.fcb);
534 5 call error(true,.('Writing file HELP.DAT.$'));
535 5 end;
536 4 end;
537 3 end;
538 2 if close$file(.fcb) = 0FFH then
539 2 do;
540 3 call error(false,.('Unable to Close HELP.HLP.$'));
541 3 end;
542 2 if close$file(.fcb2) = 0FFH then
543 2 do;
544 3 call delete$file(.fcb2);
545 3 call error(true,.('Unable to Close HELP.DAT.$'));
546 3 end;
547 2 call print$console$buf(.('Extraction complete',cr,lf,lf,
'HELP.DAT created',cr,lf,'$'));
548 2 end extract$file;
/***********************************************
Display$ind Procedure
Displays the avialable topics
***********************************************/
549 1 display$ind:
procedure;
550 2 declare (disp$level,i,eod,written) byte;
551 2 declare (offset,index,count) address;
552 2 declare name (14) byte;
553 2 offset,
written,
eod = 0;
554 2 disp$level = level + 1;
555 2 if disp$level < 10 then
556 2 do;
557 3 if level = 0 then
558 3 do;
559 4 offset = 0;
560 4 end;
else
561 3 do;
562 4 offset = gindex;
563 4 end;
564 3 count = 0;
565 3 end;
else
566 2 do;
567 3 eod = true;
568 3 end;
569 2 index = offset;
570 2 offset = 0;
571 2 do while (not eod);
572 3 if sysbuff(index).subject(0) = '$' then
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 15
573 3 do;
574 4 eod = true;
575 4 end;
else
576 3 do;
577 4 if sysbuff(index).level = disp$level then
578 4 do;
579 5 if not written then
580 5 do;
581 6 written = true;
582 6 i = page$check(.tcnt);
583 6 if disp$level = 1 then
584 6 do;
585 7 call print$console$buf(.(cr,'Topics available:$'));
586 7 end;
else
587 6 do;
588 7 call print$console$buf(.(cr,'Additional topics ',
'available:$'));
589 7 end;
590 6 i = page$check(.tcnt);
591 6 call print$console$buf(.(cr,'$'));
592 6 end;
593 5 if (count mod 6) = 0 then
594 5 do;
595 6 i = page$check(.tcnt);
596 6 call write$console(cr);
597 6 end;
598 5 do i = 0 to 13;
599 6 name(i) = ' ';
600 6 end;
601 5 name(13) = '$';
602 5 call movef(12,.sysbuff(index).subject,.name);
603 5 call print$console$buf(.name);
604 5 count = count + 1;
605 5 end;
else
606 4 do;
607 5 if sysbuff(index).level < disp$level then eod = true;
609 5 end;
610 4 index = index + 1;
611 4 end;
612 3 end;
613 2 if written then
614 2 do;
615 3 i = page$check(.tcnt);
616 3 call print$console$buf(.(cr,lf,'$'));
617 3 end;
618 2 call set$dma(.tbuff);
619 2 end display$ind;
/*********************************************
Search$file Procedure
Searches the index table for the key
*********************************************/
620 1 search$file:
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 16
procedure byte;
621 2 declare (eod, error, cnt, found, saved, save$level) byte;
622 2 declare index address;
623 2 eod,
error,
found,
saved,
index = 0;
624 2 do while(not eod) and (not error);
625 3 if sysbuff(index).subject(0) <> '$' then
626 3 do;
627 4 if sysbuff(index).level = level + 1 then
628 4 do;
629 5 cnt = compare(.com(level).name,.sysbuff(index).subject);
630 5 if cnt = 0 then
631 5 do;
632 6 call movef(12,.sysbuff(index).subject,.com(level).name);
633 6 level = level + 1;
634 6 if (not saved) then
635 6 do;
636 7 save$level = level;
637 7 saved = true;
638 7 end;
639 6 if ((level > 8) or (com(level).name(0) = ' '))
or (com(level).name(0) = '[') then
640 6 do;
641 7 found = true;
642 7 eod = true;
643 7 end;
else
644 6 do;
645 7 index = index + 1;
646 7 found = 0;
647 7 end;
648 6 end;
else
649 5 do;
650 6 index = index + 1;
651 6 end;
652 5 end;
else
653 4 do;
654 5 if saved then
655 5 do;
656 6 if save$level < sysbuff(index).level then
657 6 do;
658 7 index = index + 1;
659 7 end;
else
660 6 do;
661 7 error = true;
662 7 end;
663 6 end;
else
664 5 do;
665 6 index = index + 1;
666 6 end;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 17
667 5 end;
668 4 end;
else
669 3 do;
670 4 error = true;
671 4 end;
672 3 end;
673 2 if found then
674 2 do;
675 3 gindex = index + 1;
676 3 call movef(1,.sysbuff(index).record,.fcb(33));
677 3 call movef(1,.sysbuff(index).record+1,.fcb(34));
678 3 fcb(35) = 0;
679 3 offset = sysbuff(index).rec$offset;
680 3 level = sysbuff(index).level;
681 3 end;
682 2 return error;
683 2 end search$file;
/**************************************
Token Display Procedure
Displays the Parsed Tokens
**************************************/
684 1 display$tokens:
procedure (no$tokens);
685 2 declare (token$cnt1, token$cnt2, no$tokens) byte;
686 2 token$cnt1 = 0;
687 2 do while (token$cnt1 < no$tokens) and (not eod);
688 3 eod = page$check(.tcnt);
689 3 if (not eod) then
690 3 do;
691 4 do token$cnt2 = 0 to token$cnt1;
692 5 call print$console$buf(.(' $'));
693 5 end;
694 4 call print$console$buf(.com(token$cnt1).name);
695 4 token$cnt1 = token$cnt1 + 1;
696 4 end;
697 3 end;
698 2 end display$tokens;
/**************************************
Print Procedure
Displays the Help text
**************************************/
699 1 print:
procedure;
700 2 declare (i,ii,char,eod2) byte;
701 2 declare temp(3) byte;
702 2 call write$console(cr);
703 2 call display$tokens(level);
704 2 if (not eod) then eod = page$check(.tcnt);
706 2 if (not eod) then
707 2 do;
708 3 if read$rand(.fcb) <> 0 then
709 3 do;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 18
710 4 offset =close$file(.fcb);
711 4 call error(true,.('Reading file HELP.HLP.$'));
712 4 end;
else
713 3 do;
714 4 eod2 = 0;
715 4 do while ((not eod2) and (not eod)) and (read$record (.fcb) = 0);
716 5 i = offset - 1;
717 5 do while (((i:=i+1) <= 127) and (not eod2));
718 6 if (char := tbuff(i)) = control$z then eod = true;
720 6 ii = 0;
721 6 do while((not eod2) and (not eod)) and
((ii < 3) and (tbuff(i) = slash));
722 7 ii = ii + 1;
723 7 i = inc(i);
724 7 temp(ii-1) = tbuff(i);
725 7 end;
726 6 if ii = 3 then eod2 = true; else temp(ii) = '$';
729 6 if ((not eod) and (not eod2)) then
730 6 do;
731 7 if (char = lf) and (not nopage$mode) then
732 7 do;
733 8 eod = page$check(.tcnt);
734 8 end;
else
735 7 do;
736 8 call write$console (char);
737 8 end;
738 7 if ii > 0 then call print$console$buf(.temp);
740 7 ii = 0;
741 7 end;
742 6 end;
743 5 offset = 0;
744 5 end;
745 4 end;
746 3 end;
747 2 eod = 0;
748 2 end print;
/**************************************
Prompt Procedure
Prompts for input from the user
***************************************/
749 1 prompt:
procedure byte;
750 2 declare temp byte;
751 2 call movef(1,.(128),.tbuff-1);
752 2 temp = page$check(.tcnt);
753 2 call print$console$buf(.(cr,'HELP> $'));
754 2 call read$console$buff(.tbuff-1);
755 2 tbuff(tbuff(0)+1) = 0;
756 2 tcnt = -1;
757 2 temp = parse;
758 2 if (temp <> 0) and (not list$mode)
then call print$console$buf(.clear$screen);
760 2 return temp;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 19
761 2 end prompt;
/**************************************
Main Program
**************************************/
762 1 declare oret byte;
763 1 declare last$dseg$byte byte
initial (0);
764 1 plmstart:
do;
765 2 eod,
tcnt = 0;
766 2 version = get$version;
/******** CP/M 3
if (high(version) = 1) or (low(version) < 30h) then
do;
call error(true,.('Requires CP/M Version 3$'));
end;
page$len = mon2(49,.(1ch,0,));
if mon2(49,.(2ch,0)) = 0 then
page$mode = true;
else
page$mode = false;
*********/
767 2 page$len = 22;
768 2 page$mode = true;
769 2 cnt = parse;
770 2 if create$mode then
771 2 do;
772 3 call create$index;
773 3 end;
else
774 2 if extract$mode then
775 2 do;
776 3 call extract$file;
777 3 end;
else
778 2 do;
779 3 call movef(13,.(0,'HELP ',0A0H,' HLP',0),.fcb); /* open read/only */
780 3 oret = open$file (.fcb);
781 3 if oret = 0FFH then
782 3 do;
783 4 fcb(0) = get$sysdrive;
784 4 call set$user(0); /* try user 0 */
785 4 oret = open$file (.fcb); /* on system drive */
786 4 end;
787 3 if oret <> 0FFH then
788 3 do;
789 4 call init;
790 4 if (not list$mode) then
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 20
791 4 call print$console$buf(.clear$screen);
792 4 if cnt = 0 then
793 4 do;
794 5 level = 0;
795 5 call print$console$buf(.(cr,lf,'HELP UTILITY V1.1',cr,lf,lf,
'At "HELP>" enter ',
'topic {,subtopic}...',cr,lf,lf,
'EXAMPLE: HELP> DIR EXAMPLES',
cr,lf,'$'));
796 5 tcnt = 2;
797 5 call display$ind;
798 5 cnt = prompt; /* Prompt for user input */
799 5 end;
800 4 do while cnt <> 0; /* If user didn't hit a return do */
801 5 level = 0;
802 5 if compare(.com(0).name,.('? ')) = 0 then
803 5 do;
804 6 ; /* NULL COMMAND */
805 6 end;
else
806 5 if search$file <> 0FFH then
807 5 do;
808 6 call print;
809 6 if compare(.com(0).name,.('HELP ')) = 0 then
810 6 do;
811 7 level = 0;
812 7 end;
813 6 end;
else
814 5 do;
815 6 eod = page$check(.tcnt);
816 6 call write$console(cr);
817 6 if (not eod) then
818 6 do;
819 7 eod = page$check(.tcnt);
820 7 if (not eod) then
821 7 do;
822 8 call print$console$buf(.('Topic:$'));
823 8 eod = page$check(.tcnt);
824 8 call write$console(cr);
825 8 call display$tokens(cnt);
826 8 eod = page$check(.tcnt);
827 8 call write$console(cr);
828 8 eod = page$check(.tcnt);
829 8 call write$console(cr);
830 8 call print$console$buf(.('Not found$'));
831 8 eod = page$check(.tcnt);
832 8 call write$console(cr);
833 8 end;
834 7 end;
835 6 level = 0;
836 6 end;
837 5 if (not eod) then call display$ind;
839 5 cnt = prompt; /* Prompt for user input */
840 5 end;
841 4 offset = close$file(.fcb);
842 4 end;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 21
else
843 3 do;
844 4 call error(false,.('No HELP.HLP file on the default drive.$'));
845 4 end;
846 3 end;
847 2 end;
848 1 call terminate;
849 1 end help;
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 22
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
238 0130H 1 BEGIN. . . . . . . BYTE 254 257 258 261
238 0134H 1 BRACKET. . . . . . BYTE 263 280 291
51 0004H 2 BUFFADR. . . . . . WORD PARAMETER AUTOMATIC 52 53
47 0004H 2 BUFFADR. . . . . . WORD PARAMETER AUTOMATIC 48 49
209 0004H 2 BUFSIZE. . . . . . WORD 211 212
700 017AH 1 CHAR . . . . . . . BYTE 718 731 736
43 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 44 45
39 0111H 26 CLEARSCREEN. . . . BYTE ARRAY(26) INITIAL 759 791
73 023EH 16 CLOSEFILE. . . . . PROCEDURE BYTE STACK=000AH 187 219 233 403 425 427 439
441 443 468 470 475 477 480 499 531 533 538 542 710 841
108 0000H 1 CMDRV. . . . . . . BYTE EXTERNAL(7) 112
621 0172H 1 CNT. . . . . . . . BYTE 629 630
342 0135H 1 CNT. . . . . . . . BYTE 368 371 373 377 378 381 384 387 403 425 427 431
439 441 443 448 477
29 004FH 1 CNT. . . . . . . . BYTE 769 792 798 800 825 839
238 0131H 1 CNT. . . . . . . . BYTE 262 264 265 268 269 271 274 276 284 289 295
31 005DH 165 COM. . . . . . . . STRUCTURE ARRAY(11) 259 271 274 286 288 304 306 311 316
321 327 629 632 639 694 802 809
132 032BH 93 COMPARE. . . . . . PROCEDURE BYTE STACK=0008H 629 802 809
22 CONTROLZ . . . . . LITERALLY 361 718
551 0020H 2 COUNT. . . . . . . WORD 564 593 604
343 000CH 2 COUNT. . . . . . . WORD 406 407 432 433 435 436 451 454 461 464
488 0014H 2 COUNT. . . . . . . WORD 514 517 524 527
488 0016H 2 COUNT2 . . . . . . WORD 527 528
343 000EH 2 COUNT2 . . . . . . WORD 464 465
23 CR . . . . . . . . LITERALLY 39 120 122 179 184 191 259 345 378 484 489
547 585 588 591 596 616 702 753 795 816 824 827 829 832
341 079DH 1183 CREATEINDEX. . . . PROCEDURE STACK=0016H 772
15 0026H 1 CREATEMODE . . . . BYTE 299 308 770
62 0215H 16 DELETEFILE . . . . PROCEDURE STACK=000AH 422 426 440 442 469 496 532 544
126 0004H 2 DESTADDR . . . . . WORD PARAMETER AUTOMATIC 127 129
55 01F3H 19 DIRECTCONIO. . . . PROCEDURE BYTE STACK=000AH 182
549 0DE8H 359 DISPLAYIND . . . . PROCEDURE STACK=0014H 797 838
684 10BCH 104 DISPLAYTOKENS. . . PROCEDURE STACK=0016H 703 825
550 015EH 1 DISPLEVEL. . . . . BYTE 554 555 577 583 607
96 0004H 2 DMAADDRESS . . . . WORD PARAMETER AUTOMATIC 97 98
487 015CH 1 ENDINDEX . . . . . BYTE 503 504 506
210 012EH 1 ENDINDEX . . . . . BYTE 213 215 223 224 231
16 002AH 1 EOD. . . . . . . . BYTE 164 357 358 360 363 369 373 378 389 401 449 450
453 457 508 510 513 516 520 687 688 689 704 705 706 715
719 721 729 733 747 765 815 817 819 820 823 826 828 831
837
550 0160H 1 EOD. . . . . . . . BYTE 553 567 571 574 608
621 0170H 1 EOD. . . . . . . . BYTE 623 624 642
700 017BH 1 EOD2 . . . . . . . BYTE 714 715 717 721 727 729
117 0004H 2 ERRMSGADR. . . . . WORD PARAMETER AUTOMATIC 119 121
621 0171H 1 ERROR. . . . . . . BYTE 623 624 661 670 682
117 02EFH 37 ERROR. . . . . . . PROCEDURE STACK=0012H 220 234 355 404 428 444 471 478
482 493 500 534 540 545 711 844
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 23
486 0C3CH 428 EXTRACTFILE. . . . PROCEDURE STACK=0016H 776
15 0027H 1 EXTRACTMODE. . . . BYTE 299 313 774
28 FALSE. . . . . . . LITERALLY 299 482 540 844
17 0000H 13 FCB. . . . . . . . BYTE ARRAY(13) EXTERNAL(3) 159 187 217 219 233 352 353
358 391 392 393 403 427 443 447 448 455 470 475 490 491
499 504 518 533 538 676 677 678 708 710 715 779 780 783
785 841
68 0000H 1 FCB. . . . . . . . BYTE BASED(FCBADDRESS) ARRAY(1) 69 70
87 0000H 1 FCB. . . . . . . . BYTE BASED(FCBADDRESS) ARRAY(1) 88 89
20 0000H 1 FCB16. . . . . . . BYTE ARRAY(1) EXTERNAL(5)
18 002BH 36 FCB2 . . . . . . . BYTE ARRAY(36) 425 426 430 431 441 442 495 496 497 511
529 531 532 542 544
344 0138H 36 FCB3 . . . . . . . BYTE ARRAY(36) 421 422 423 437 439 440 466 468 469 477
480
77 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 78 79
73 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 74 75
66 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 67 68 69 70 71
62 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 63 64
85 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 86 87 88 89 90
100 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 101 102
92 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 93 94
81 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 82 83
621 0173H 1 FOUND. . . . . . . BYTE 623 641 646 673
55 0004H 1 FUNC . . . . . . . BYTE PARAMETER AUTOMATIC 56 57
11 0000H 1 FUNC . . . . . . . BYTE PARAMETER 12
7 0000H 1 FUNC . . . . . . . BYTE PARAMETER 8
3 0000H 1 FUNC . . . . . . . BYTE PARAMETER 4
109 02CAH 23 GETSYSDRIVE. . . . PROCEDURE BYTE STACK=000CH 783
59 0206H 15 GETVERSION . . . . PROCEDURE WORD STACK=0008H 110 766
35 0000H 2 GINDEX . . . . . . WORD 562 675
1 0002H 431 HELP . . . . . . . PROCEDURE STACK=001CH
HIGH . . . . . . . BUILTIN 110
700 0178H 1 I. . . . . . . . . BYTE 716 717 718 721 723 724
136 012CH 1 I. . . . . . . . . BYTE 137 138 139 141 148 150
550 015FH 1 I. . . . . . . . . BYTE 582 590 595 598 599 615
342 0136H 1 I. . . . . . . . . BYTE 346 347 359 360 361 366 369 370 375 376 378 379
381 384 386 395 414 468 470
238 0132H 1 I. . . . . . . . . BYTE 267 268 271 274 277 302 303 304 306 311 316 321
327 334 336
487 015DH 1 I. . . . . . . . . BYTE 499 504 509 511 531 533
700 0179H 1 II . . . . . . . . BYTE 720 721 722 724 726 728 738 740
154 0388H 42 INC. . . . . . . . PROCEDURE BYTE STACK=0010H 370 376 386 414 723
154 0004H 1 INCI . . . . . . . BYTE PARAMETER AUTOMATIC 155 156 157 161 165 168
622 0022H 2 INDEX. . . . . . . WORD 623 625 627 629 632 645 650 656 658 665 675 676
677 679 680
551 001EH 2 INDEX. . . . . . . WORD 569 572 577 602 607 610
29 0050H 1 INDEX. . . . . . . BYTE
343 000AH 2 INDEX. . . . . . . WORD 349 375 381 384 392 393 394 395 396 397 406 432
238 012FH 1 INDEX. . . . . . . BYTE 239 242 243 244 245 246 248 249 250 252 255 258
259 261 268 271 274 279 280 286 287 288 290 300 309 314
319 325 329 332 339
11 0000H 2 INFO . . . . . . . WORD PARAMETER 13
7 0000H 2 INFO . . . . . . . WORD PARAMETER 9
3 0000H 2 INFO . . . . . . . WORD PARAMETER 5
208 0440H 194 INIT . . . . . . . PROCEDURE STACK=0016H 789
209 0008H 2 INITI. . . . . . . WORD 214 216 219 222 227 233
763 0181H 1 LASTDSEGBYTE . . . BYTE INITIAL
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 24
34 010EH 1 LEVEL. . . . . . . BYTE 254 554 557 627 629 632 633 636 639 680 703 794
801 811 835
32 000FH 1 LEVEL. . . . . . . BYTE MEMBER(SYSBUFF) 375 577 607 627 656 680
24 LF . . . . . . . . LITERALLY 39 120 122 179 199 204 345 484 489 547 616
731 795
172 0000H 1 LINECNT. . . . . . BYTE BASED(LINECNTADDR) 177 180 181 182 185 187 191 195
203
170 0004H 2 LINECNTADDR. . . . WORD PARAMETER AUTOMATIC 171 172 177 180 181 182 185 187
191 195 203
15 0024H 1 LISTMODE . . . . . BYTE 299 323 758 790
85 026EH 25 MAKEFILE . . . . . PROCEDURE BYTE STACK=000AH 423 497
19 0000H 2 MAXB . . . . . . . WORD EXTERNAL(4) 211 350 512
488 0018H 2 MAXBUF . . . . . . WORD 515 516 523
343 0010H 2 MAXBUF . . . . . . WORD 351 400 401 452 453 460
209 0006H 2 MAXBUF . . . . . . WORD 212 215 226 231
0000H MEMORY . . . . . . BYTE ARRAY(0) 32 211 350 436 454 465 512 517 528
3 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(0) STACK=0000H 45 49 53 64 98 102
106 115
7 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H 41 57 71 75 79
83 90 94
11 0000H MON3 . . . . . . . PROCEDURE WORD EXTERNAL(2) STACK=0000H 60
MOVE . . . . . . . BUILTIN 129
126 0314H 23 MOVEF. . . . . . . PROCEDURE STACK=000AH 259 347 352 392 393 407 421 430
447 490 495 602 632 676 677 751 779
126 0008H 1 MVCNT. . . . . . . BYTE PARAMETER AUTOMATIC 128 129
33 0102H 12 NAME . . . . . . . BYTE ARRAY(12)
552 0162H 14 NAME . . . . . . . BYTE ARRAY(14) 599 601 602 603
31 0000H 15 NAME . . . . . . . BYTE ARRAY(15) MEMBER(COM) 259 271 274 286 288 304 306
311 316 321 327 629 632 639 694 802 809
15 0025H 1 NOPAGEMODE . . . . BYTE 175 299 318 324 731
684 0004H 1 NOTOKENS . . . . . BYTE PARAMETER AUTOMATIC 685 687
551 001CH 2 OFFSET . . . . . . WORD 553 559 562 569 570
16 0029H 1 OFFSET . . . . . . BYTE 679 710 716 743 841
66 0225H 25 OPENFILE . . . . . PROCEDURE BYTE STACK=000AH 353 491 780 785
762 0180H 1 ORET . . . . . . . BYTE 780 781 785 787
170 03B2H 142 PAGECHECK. . . . . PROCEDURE BYTE STACK=0010H 582 590 595 615 688 705 733
752 815 819 823 826 828 831
38 0110H 1 PAGELEN. . . . . . BYTE 177 767
15 0028H 1 PAGEMODE . . . . . BYTE 175 768
237 0502H 667 PARSE. . . . . . . PROCEDURE BYTE STACK=000EH 757 769
2 0010H PLMSTART . . . . . LABEL PUBLIC 764
699 1124H 382 PRINT. . . . . . . PROCEDURE STACK=001AH 808
47 01D3H 16 PRINTCONSOLEBUF. . PROCEDURE STACK=000AH 120 121 122 179 184 345 484 489
547 585 588 591 603 616 692 694 739 753 759 791 795 822
830
749 12A2H 93 PROMPT . . . . . . PROCEDURE BYTE STACK=0014H 798 839
173 012DH 1 QUIT . . . . . . . BYTE 174 193 206
40 01B1H 15 READCONSOLE. . . . PROCEDURE BYTE STACK=0008H
51 01E3H 16 READCONSOLEBUFF. . PROCEDURE STACK=000AH 754
92 0287H 16 READRAND . . . . . PROCEDURE BYTE STACK=000AH 431 448 708
77 024EH 16 READRECORD . . . . PROCEDURE BYTE STACK=000AH 159 217 358 455 504 518 715
342 0137H 1 RECCNT . . . . . . BYTE 349 399 420 433 435
32 000EH 1 RECOFFSET. . . . . BYTE MEMBER(SYSBUFF) 395 679
32 000CH 2 RECORD . . . . . . WORD MEMBER(SYSBUFF) 392 393 394 433 676 677
136 012BH 1 RESULT . . . . . . BYTE 137 143 146 152
621 0174H 1 SAVED. . . . . . . BYTE 623 634 637 654
621 0175H 1 SAVELEVEL. . . . . BYTE 636 656
PL/M-86 COMPILER HELP UTILITY VERSION 1.1 PAGE 25
488 001AH 2 SAVESIZE . . . . . WORD 512 515
343 0012H 2 SAVESIZE . . . . . WORD 350 351 452
620 0F4FH 365 SEARCHFILE . . . . PROCEDURE BYTE STACK=000EH 806
96 0297H 16 SETDMA . . . . . . PROCEDURE STACK=000AH 216 230 419 436 454 465 502 517
528 618
100 02A7H 16 SETRANDREC . . . . PROCEDURE STACK=000AH 391
104 02B7H 19 SETUSER. . . . . . PROCEDURE STACK=000AH 784
SHL. . . . . . . . BUILTIN 436 454 465 517 528
26 SLASH. . . . . . . LITERALLY 366 369 721
126 0006H 2 SOURCEADDR . . . . WORD PARAMETER AUTOMATIC 127 129
238 0133H 1 STOP . . . . . . . BYTE 263 264 282
132 0006H 2 STR1ADDR . . . . . WORD PARAMETER AUTOMATIC 133 134 138 139 141
132 0004H 2 STR2ADDR . . . . . WORD PARAMETER AUTOMATIC 133 135 139 141
134 0000H 12 STRING1. . . . . . BYTE BASED(STR1ADDR) ARRAY(12) 138 139 141
135 0000H 12 STRING2. . . . . . BYTE BASED(STR2ADDR) ARRAY(12) 139 141
30 0051H 12 SUB. . . . . . . . BYTE ARRAY(12)
32 0000H 12 SUBJECT. . . . . . BYTE ARRAY(12) MEMBER(SYSBUFF) 216 222 347 381 384 407 505
572 602 625 629 632
32 0000H 128 SYSBUFF. . . . . . STRUCTURE ARRAY(8) AT 216 222 347 375 381 384 392 393
394 395 407 419 433 502 505 572 577 602 607 625 627 629
632 656 676 677 679 680
25 TAB. . . . . . . . LITERALLY 243
21 0000H 128 TBUFF. . . . . . . BYTE ARRAY(128) EXTERNAL(6) 230 240 242 243 244 245 246
249 252 255 264 265 268 269 271 274 284 361 366 369 375
378 379 381 384 618 718 721 724 751 754 755
36 010FH 1 TCNT . . . . . . . BYTE 582 590 595 615 688 705 733 752 756 765 796 815
819 823 826 828 831
750 017FH 1 TEMP . . . . . . . BYTE 752 757 758 760
701 017CH 3 TEMP . . . . . . . BYTE ARRAY(3) 724 728 739
117 0006H 1 TERMCODE . . . . . BYTE PARAMETER AUTOMATIC 118 123
114 02E1H 14 TERMINATE. . . . . PROCEDURE STACK=0008H 124 188 848
685 0176H 1 TOKENCNT1. . . . . BYTE 686 687 691 694 695
685 0177H 1 TOKENCNT2. . . . . BYTE 691
27 TRUE . . . . . . . LITERALLY 164 193 220 223 234 282 291 308 313 318 323
324 355 363 404 428 444 457 471 478 482 493 500 506 510
520 534 545 567 574 581 608 637 641 642 661 670 711 719
727 768
104 0004H 1 USERNUM. . . . . . BYTE PARAMETER AUTOMATIC 105 106
37 0002H 2 VERSION. . . . . . WORD 766
43 01C0H 19 WRITECONSOLE . . . PROCEDURE STACK=000AH 199 204 596 702 736 816 824 827
829 832
81 025EH 16 WRITERECORD. . . . PROCEDURE BYTE STACK=000AH 437 466 511 529
550 0161H 1 WRITTEN. . . . . . BYTE 553 579 581 613
MODULE INFORMATION:
CODE AREA SIZE = 12FFH 4863D
CONSTANT AREA SIZE = 03C3H 963D
VARIABLE AREA SIZE = 0182H 386D
MAXIMUM STACK SIZE = 001CH 28D
1142 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION