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

836 lines
42 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 CODEMACRO MODULE 2 10/5/81 PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE CM2
OBJECT MODULE PLACED IN CM2.OBJ
COMPILER INVOKED BY: :F0: CM2.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
$title ('codemacro module 2')
1 cm2:
do;
/*
modified 3/26/81 R. Silberstein
*/
/* This is the module to build new instructions
which is not present in the already existing
system. */
$include (:f1:macro.lit)
= $nolist
$include (:f1:equals.lit)
= $nolist
$include (:f1:struc.lit)
= $nolist
$include (:f1:cmacd.lit)
= $nolist
$include (:f1:cm.lit)
= $nolist
$include (:f1:symb.ext)
= $nolist
$include (:f1:subr1.ext)
= $nolist
$include (:f1:subr2.ext)
= $nolist
$include (:f1:scan.ext)
= $nolist
$include (:f1:files.ext)
= $nolist
$include (:f1:exglob.ext)
= $nolist
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 2
$eject
/* D E C L A R A T I O N F O R "C O D E M A C R O" P A R T
Extended version of ASM86 */
148 1 dcl cm$name(80) byte ,
codemacro$found byte ,
cm$n$pt address ,
cm$n$var based cm$n$pt byte,
cm$n$lg byte ,
par$name(80) byte ,
pmpt address ,
cm$pm$var based pmpt byte,
cm$error byte public ,
cm$body(100) byte ,
cmpt address public ,
cm$b$var based cmpt byte,
cm$w$var based cmpt addr,
cm$counter addr ,
global$cm$error byte public ,
cm$body$full byte ,
ant$par byte ,
cm$list$overflow byte public;
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 3
$eject
/* VARIOUS SUBROUTINES */
149 1 legal$parameter: PROC(lg,ptr,ptr2) byte public;
150 2 dcl (lg,i) byte,
(ptr,ptr2) address,
no based ptr2 byte;
151 2 i=0;
152 2 do no=0 to cm$body(2)-1;
153 3 if parname(i+lg) = 0 and
equal(lg,ptr,.par$name(i)) then return true;
155 3 do while par$name(i:=i+1) <> 0;
156 4 end$while;
157 3 i=i+1;
158 3 end;
159 2 return false;
160 2 end$proc legal$parameter;
161 1 legal$spec$letter: PROC(l) byte;
162 2 dcl (l,i) byte;
163 2 dcl table(8) byte data ('ACDEMRSX');
164 2 do i=0 to last(table);
165 3 if table(i) = l then return i;
167 3 end;
168 2 return i;
169 2 end$proc legal$spec$letter;
170 1 legal$mod$letter: PROC(l) byte;
171 2 dcl (l,i) byte;
172 2 dcl table(4) byte data ('BWDS');
173 2 do i=0 to last(table);
174 3 if table(i) = l and i < 3 then return i;
176 3 if table(i) = l and i = 3 then$do
178 4 if accum(2) = 'B' then return 3;
end$if;
181 3 end;
182 2 return i;
183 2 end$proc legal$mod$letter;
184 1 legal$register: PROC byte;
185 2 declare disp byte;
186 2 if token.type <> reg then return 0;
188 2 disp=0;
189 2 if token.descr=byt then disp=8;
191 2 if token.descr=dwrd then disp=16;
193 2 return token.value + disp + 1;
194 2 end$proc legal$register;
195 1 legal$seg$reg: PROC byte public;
196 2 if token.type <> reg then return 0;
198 2 if token.descr <> dwrd then return 0;
200 2 return token.value + 1;
201 2 end$proc legal$seg$reg;
202 1 put$b: PROC(b) public;
203 2 dcl b byte;
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 4
204 2 cm$counter=cm$counter+1;
205 2 if cm$counter > 99 then$do
207 3 cm$error=true;
208 3 cm$body$full=true;
209 3 return;
210 3 end$if;
211 2 cm$b$var=b;
212 2 cmpt=cmpt+1;
213 2 end$proc put$b;
214 1 put$w: PROC(w) public;
215 2 dcl w addr;
216 2 cm$counter=cm$counter+2;
217 2 if cm$counter > 99 then$do
219 3 cm$error=true;
220 3 cm$body$full=true;
221 3 return;
222 3 end$if;
223 2 cm$w$var=w;
224 2 cmpt=cmpt+2;
225 2 end$proc put$w;
226 1 update$cm$lists: PROC byte;
227 2 dcl listptr address,next based listptr address;
228 2 dcl ptr address;
229 2 ptr=.listptr;
230 2 if findcodemacro(cm$n$lg,.cm$name(0),ptr)
then$do
232 3 do while next <> 0;
233 4 listptr=next;
234 4 end$while;
235 3 else$do
237 3 if not new$cm$name(cm$n$lg,.cm$name(0),ptr)
then return false;
end$if;
240 2 next=freept;
241 2 if not new$cm$body(cm$counter,.cm$body(0))
then return false;
243 2 return true;
244 2 end$proc update$cm$lists;
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 5
$eject
/* level 4 in the syntax-tree of coeemacro building */
245 1 register$rout: PROC (l);
246 2 dcl l byte;
247 2 call put$b(l);
248 2 end$proc register$rout;
249 1 range$rout: PROC;
250 2 put$range: PROC(time);
251 3 dcl time byte;
252 3 if token.type = number then$do
254 4 if time = first then$do
256 5 cm$b$var=cm$b$var+numberrange;
257 5 cmpt=cmpt+1;
258 5 end$if;
259 4 if token.value > 0ffh then$do
261 5 cm$error=true; /* too large number */
262 5 return;
263 5 else$do
265 5 call put$b(token.value);
266 5 end$if;
267 4 else$do
269 4 if time = first then$do
271 5 cm$b$var=cm$b$var+registerrange;
272 5 cmpt=cmpt+1;
273 5 end$if;
274 4 do case legal$register;
275 5 do; /* error, expecting a register spec. */
276 6 cm$error=true;
277 6 return;
278 6 end;
279 5 call register$rout(rax);
280 5 call register$rout(rcx);
281 5 call register$rout(rdx);
282 5 call register$rout(rbx);
283 5 call register$rout(rsp);
284 5 call register$rout(rbp);
285 5 call register$rout(rsi);
286 5 call register$rout(rdi);
287 5 call register$rout(ral);
288 5 call register$rout(rcl);
289 5 call register$rout(rdl);
290 5 call register$rout(rbl);
291 5 call register$rout(rah);
292 5 call register$rout(rch);
293 5 call register$rout(rdh);
294 5 call register$rout(rbh);
295 5 call register$rout(res);
296 5 call register$rout(rcs);
297 5 call register$rout(rss);
298 5 call register$rout(rds);
299 5 end$case;
300 4 end$if;
301 3 call scan;
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 6
302 3 end$proc put$range;
303 2 s$range: PROC;
304 3 cmpt=cmpt-1;
305 3 cm$b$var=cm$b$var+singlerange;
306 3 call put$range(first);
307 3 end$proc s$range;
308 2 d$range: PROC;
309 3 cmpt=cmpt-1;
310 3 cm$b$var=cm$b$var+doublerange;
311 3 call put$range(first);
312 3 if accum(0) <> comma then$do
314 4 cm$error=true;
315 4 return;
316 4 end$if;
317 3 call scan;
318 3 call put$range(second);
319 3 if accum(0) <> rightpar then$do
321 4 cm$error=true;
322 4 return;
323 4 end$if;
end$proc d$range;
/* mainpart of range routine */
325 2 call scan; /* skip left paranthesis */
326 2 if nextch = comma then call d$range;
328 2 else call s$range;
329 2 call scan;
330 2 end$proc range$rout;
331 1 spec$letter$rout: PROC(l);
332 2 dcl l byte;
333 2 call put$b(l);
334 2 end$proc spec$letter$rout;
335 1 mod$letter$rout: PROC(l);
336 2 dcl l byte;
337 2 call put$b(l);
338 2 end$proc mod$letter$rout;
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 7
$eject
/* level 3 in the syntax-tree of codemacro building */
339 1 par$descr$rout: PROC;
340 2 call copy(acclen,.accum(0),.cm$pm$var);
341 2 pmpt=pmpt+acclen;
342 2 cm$pm$var=0; /* end of par.name */
343 2 pmpt=pmpt+1;
344 2 call scan;
345 2 if accum(0) <> colon then$do
/* error, expected colon in parameterdecl */
347 3 cm$error=true;
348 3 end$if;
349 2 call scan;
350 2 do case legal$spec$letter(accum(0));
351 3 call spec$letter$rout(speca);
352 3 call spec$letter$rout(specc);
353 3 call spec$letter$rout(specd);
354 3 call spec$letter$rout(spece);
355 3 call spec$letter$rout(specm);
356 3 call spec$letter$rout(specr);
357 3 call spec$letter$rout(specs);
358 3 call spec$letter$rout(specx);
359 3 do; /* error, expected specifier letter */
360 4 cm$error=true;
361 4 return;
362 4 end;
363 3 end$case;
364 2 do case legal$mod$letter(accum(1));
365 3 call mod$letter$rout(modb);
366 3 call mod$letter$rout(modw);
367 3 call mod$letter$rout(modd);
368 3 call mod$letter$rout(modsb);
369 3 call mod$letter$rout(nomod); /* no modletter */
370 3 end$case;
371 2 call scan;
372 2 if accum(0) = leftpar then call range$rout;
374 2 cm$body(2)=cm$body(2)+1;
375 2 end$proc par$descr$rout;
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 8
$eject
/* level 2 in the syntax-tree of codemacro building */
/* Procedure to initialize temporary storage and pointers
conserning the building of codemacro */
376 1 init$cm$rout: PROC public;
377 2 cm$n$pt=.cm$name(0);
378 2 cmpt=.cm$body(0)+3; /* correcting for the head */
379 2 pmpt=.par$name(0);
380 2 CALL FILL (0, LENGTH (CM$NAME), .CM$NAME);
381 2 CALL FILL (0, LENGTH (CM$BODY), .CM$BODY);
382 2 CALL FILL (0, LENGTH (PAR$NAME), .PAR$NAME);
383 2 ant$par=0;
384 2 cm$counter=3;
385 2 cm$body$full=false;
386 2 cm$list$overflow=false;
387 2 end$proc init$cm$rout;
388 1 name$rout: PROC byte public;
389 2 if token.type <> ident then return false;
391 2 call copy(acclen,.accum(0),.cm$name(0));
392 2 cm$n$lg=acclen;
393 2 call scan;
394 2 return true;
395 2 end$proc name$rout;
396 1 formal$list$rout: PROC public;
397 2 do while token.type = ident;
398 3 call par$descr$rout;
399 3 if accum(0) <> ',' then return; /* end of parameters */
401 3 call scan;
402 3 end$while;
403 2 end$proc formal$list$rout;
404 1 terminate$cm$rout: PROC public;
405 2 if global$cm$error then$do
/* error present in codemacrodef, */
/* no updating of codemacrolist */
407 3 return;
408 3 end$if;
409 2 if not update$cm$lists
then$do
411 3 cm$error=true; /* overflow, no more vacant memory */
412 3 cm$list$overflow=true;
413 3 return;
414 3 end$if;
end$proc terminate$cm$rout;
416 1 end$module cm2;
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 9
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
147 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(59) 340 341 391 392
147 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(60) 178 312 319
340 345 350 364 372 391 399
2 ADDR . . . . . . . LITERALLY 18 19 25 28 31 34 37
40 43 46 49 52 55 58 64 82 85
88 91 143 147 148 215
72 0000H ALPHANUMERIC . . . PROCEDURE BYTE EXTERNAL(20) STACK=0000H
148 0115H 1 ANTPAR . . . . . . BYTE 383
75 0000H ASCIICHAR. . . . . PROCEDURE BYTE EXTERNAL(21) STACK=0000H
45 0000H 2 ASCIIPTR . . . . . WORD PARAMETER 46
202 0004H 1 B. . . . . . . . . BYTE PARAMETER AUTOMATIC 203 211
147 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
8 BASEREGBIT . . . . LITERALLY
8 BASEREGCOUNT . . . LITERALLY
8 BREGBIT. . . . . . LITERALLY
8 BREGCOUNT. . . . . LITERALLY
4 BYT. . . . . . . . LITERALLY 189
69 0000H 1 CH . . . . . . . . BYTE PARAMETER 70
72 0000H 1 CH . . . . . . . . BYTE PARAMETER 73
75 0000H 1 CH . . . . . . . . BYTE PARAMETER 76
63 0000H 1 CH . . . . . . . . BYTE PARAMETER 64
110 0000H 1 CH . . . . . . . . BYTE PARAMETER 111
78 0000H 1 CH . . . . . . . . BYTE PARAMETER 79
113 0000H 1 CH . . . . . . . . BYTE PARAMETER 114
66 0000H 1 CH . . . . . . . . BYTE PARAMETER 67
107 0000H 1 CH . . . . . . . . BYTE PARAMETER 108
147 0000H 2 CIP. . . . . . . . WORD EXTERNAL(51)
136 0000H CLOSEHEX . . . . . PROCEDURE EXTERNAL(46) STACK=0000H
134 0000H CLOSEINCLUDE . . . PROCEDURE EXTERNAL(45) STACK=0000H
138 0000H CLOSEPRINT . . . . PROCEDURE EXTERNAL(47) STACK=0000H
130 0000H CLOSESOURCE. . . . PROCEDURE EXTERNAL(43) STACK=0000H
140 0000H CLOSESYMBOL. . . . PROCEDURE EXTERNAL(48) STACK=0000H
1 0000H CM2. . . . . . . . PROCEDURE STACK=0000H
148 00AFH 100 CMBODY . . . . . . BYTE ARRAY(100) 152 241 374 378 381
148 0114H 1 CMBODYFULL . . . . BYTE 208 220 385
148 0000H 1 CMBVAR . . . . . . BYTE BASED(CMPT) 211 256 271 305 310
148 0006H 2 CMCOUNTER. . . . . WORD 204 205 216 217 241 384
148 00AEH 1 CMERROR. . . . . . BYTE PUBLIC 207 219 261 276 314 321
347 360 411
148 0116H 1 CMLISTOVERFLOW . . BYTE PUBLIC 386 412
148 000CH 80 CMNAME . . . . . . BYTE ARRAY(80) 230 237 377 380 391
148 005DH 1 CMNLG. . . . . . . BYTE 230 237 392
148 0000H 2 CMNPT. . . . . . . WORD 148 377
148 0000H 1 CMNVAR . . . . . . BYTE BASED(CMNPT)
148 0000H 1 CMPMVAR. . . . . . BYTE BASED(PMPT) 340 342
148 0004H 2 CMPT . . . . . . . WORD PUBLIC 148 211 212 223 224 256
257 271 272 304 305 309 310 378
148 0000H 2 CMWVAR . . . . . . WORD BASED(CMPT) 223
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 10
3 CODE . . . . . . . LITERALLY
148 005CH 1 CODEMACROFOUND . . BYTE
8 CODEMACROHEAD. . . LITERALLY
17 COLON. . . . . . . LITERALLY 345
17 COMMA. . . . . . . LITERALLY 312 326
54 0000H COPY . . . . . . . PROCEDURE EXTERNAL(14) STACK=0000H 340 391
2 CR . . . . . . . . LITERALLY
147 0000H 1 CSEGSPEC . . . . . BYTE EXTERNAL(54)
147 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(52)
147 0000H 2 CSEGVALUE. . . . . WORD EXTERNAL(53)
12 CSOVER . . . . . . LITERALLY
147 0000H 2 CURDSEG. . . . . . WORD EXTERNAL(56)
87 0000H 2 D. . . . . . . . . WORD PARAMETER 88
81 0000H 2 D. . . . . . . . . WORD PARAMETER 82
54 0000H 2 D. . . . . . . . . WORD PARAMETER 55
84 0000H 2 D. . . . . . . . . WORD PARAMETER 85
90 0000H 2 D. . . . . . . . . WORD PARAMETER 91
2 DCL. . . . . . . . LITERALLY
90 0000H DECOUT . . . . . . PROCEDURE EXTERNAL(26) STACK=0000H
3 DELETEDSYMB. . . . LITERALLY
147 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN) 189 191 198
33 0000H 2 DEST . . . . . . . WORD PARAMETER 34
142 0000H 1 DEV. . . . . . . . BYTE PARAMETER 143
66 0000H DIGIT. . . . . . . PROCEDURE BYTE EXTERNAL(18) STACK=0000H
185 011AH 1 DISP . . . . . . . BYTE 188 190 192 193
3 DOUBLEDEFINED. . . LITERALLY
16 DOUBLERANGE. . . . LITERALLY 310
308 02DCH 53 DRANGE . . . . . . PROCEDURE STACK=0014H 327
12 DSOVER . . . . . . LITERALLY
147 0000H 1 DSPEC. . . . . . . BYTE EXTERNAL(55)
4 DWRD . . . . . . . LITERALLY 191 198
2 ELSEDO . . . . . . LITERALLY
105 0000H EMPTYLINE. . . . . PROCEDURE BYTE EXTERNAL(32) STACK=0000H
2 ENDCASE. . . . . . LITERALLY
2 ENDDO. . . . . . . LITERALLY
2 ENDFOREVER . . . . LITERALLY
2 ENDIF. . . . . . . LITERALLY 179 238
2 ENDMODULE. . . . . LITERALLY
2 ENDOFFILE. . . . . LITERALLY
19 0000H 2 ENDOFSYMBTAB . . . WORD EXTERNAL(1)
2 ENDPROC. . . . . . LITERALLY 323 414
2 ENDWHILE . . . . . LITERALLY
36 0000H ENTERATTRIBUTES. . PROCEDURE EXTERNAL(8) STACK=0000H
81 0000H EQUAL. . . . . . . PROCEDURE BYTE EXTERNAL(23) STACK=0000H 153
3 ERROR. . . . . . . LITERALLY
12 ESOVER . . . . . . LITERALLY
2 FALSE. . . . . . . LITERALLY 159 238 242 385 386 390
60 0000H 2 FCBADR . . . . . . WORD PARAMETER 61
60 0000H FILEABORT. . . . . PROCEDURE EXTERNAL(16) STACK=0000H
8 FILEISTRUCTURE . . LITERALLY
8 FILEOSTRUCTURE . . LITERALLY
145 0000H FILESETUP. . . . . PROCEDURE BYTE EXTERNAL(50) STACK=0000H
63 0000H FILL . . . . . . . PROCEDURE EXTERNAL(17) STACK=0000H 380 381
382
142 0000H 2 FILNAM . . . . . . WORD PARAMETER 143
142 0000H 2 FILTYP . . . . . . WORD PARAMETER 143
39 0000H FINDCODEMACRO. . . PROCEDURE BYTE EXTERNAL(9) STACK=0000H 230
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 11
30 0000H FINDSYMBOL . . . . PROCEDURE BYTE EXTERNAL(6) STACK=0000H
17 FIRST. . . . . . . LITERALLY 254 269 306 311
2 FOREVER. . . . . . LITERALLY
396 0479H 29 FORMALLISTROUT . . PROCEDURE PUBLIC STACK=0020H
2 FORMFEED . . . . . LITERALLY
18 0000H 2 FREEPT . . . . . . WORD EXTERNAL(0) 240
33 0000H GETATTRIBUTES. . . PROCEDURE EXTERNAL(7) STACK=0000H
148 0113H 1 GLOBALCMERROR. . . BYTE PUBLIC 405
84 0000H HEX1OUT. . . . . . PROCEDURE EXTERNAL(24) STACK=0000H
87 0000H HEX2OUT. . . . . . PROCEDURE EXTERNAL(25) STACK=0000H
150 0117H 1 I. . . . . . . . . BYTE 151 153 155 157
171 0119H 1 I. . . . . . . . . BYTE 173 174 175 176 182
162 0118H 1 I. . . . . . . . . BYTE 164 165 166 168
3 IDENT. . . . . . . LITERALLY 389 397
142 0000H IFILESETUP . . . . PROCEDURE EXTERNAL(49) STACK=0000H
8 INDEXREGBIT. . . . LITERALLY
8 INDEXREGCOUNT. . . LITERALLY
118 0000H ININCLUDEBYTE. . . PROCEDURE BYTE EXTERNAL(37) STACK=0000H
2 INIT . . . . . . . LITERALLY
376 0400H 79 INITCMROUT . . . . PROCEDURE PUBLIC STACK=000AH
116 0000H INSOURCEBYTE . . . PROCEDURE BYTE EXTERNAL(36) STACK=0000H
8 IREGBIT. . . . . . LITERALLY
8 IREGCOUNT. . . . . LITERALLY
170 0004H 1 L. . . . . . . . . BYTE PARAMETER AUTOMATIC 171 174 176
161 0004H 1 L. . . . . . . . . BYTE PARAMETER AUTOMATIC 162 165
335 0004H 1 L. . . . . . . . . BYTE PARAMETER AUTOMATIC 336 337
331 0004H 1 L. . . . . . . . . BYTE PARAMETER AUTOMATIC 332 333
245 0004H 1 L. . . . . . . . . BYTE PARAMETER AUTOMATIC 246 247
3 LAB. . . . . . . . LITERALLY
LAST . . . . . . . BUILTIN 164 173
7 LEFTBRACKET. . . . LITERALLY
17 LEFTPAR. . . . . . LITERALLY 372
170 009AH 76 LEGALMODLETTER . . PROCEDURE BYTE STACK=0004H 364
149 0000H 113 LEGALPARAMETER . . PROCEDURE BYTE PUBLIC STACK=0012H
184 00E6H 55 LEGALREGISTER. . . PROCEDURE BYTE STACK=0002H 274
195 011DH 27 LEGALSEGREG. . . . PROCEDURE BYTE PUBLIC STACK=0002H
161 0071H 41 LEGALSPECLETTER. . PROCEDURE BYTE STACK=0004H 350
LENGTH . . . . . . BUILTIN 380 381 382
147 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
69 0000H LETTER . . . . . . PROCEDURE BYTE EXTERNAL(19) STACK=0000H
2 LF . . . . . . . . LITERALLY
149 0008H 1 LG . . . . . . . . BYTE PARAMETER AUTOMATIC 150 153
45 0000H 1 LG . . . . . . . . BYTE PARAMETER 46
42 0000H 1 LG . . . . . . . . BYTE PARAMETER 43
39 0000H 1 LG . . . . . . . . BYTE PARAMETER 40
30 0000H 1 LG . . . . . . . . BYTE PARAMETER 31
27 0000H 1 LG . . . . . . . . BYTE PARAMETER 28
24 0000H 1 LG . . . . . . . . BYTE PARAMETER 25
227 0008H 2 LISTPTR. . . . . . WORD 227 229 232 233 240
2 LIT. . . . . . . . LITERALLY 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16 17
27 0000H 2 MACDEFPT . . . . . WORD PARAMETER 28
9 MDBF . . . . . . . LITERALLY
9 MDBIT. . . . . . . LITERALLY
9 MDBN . . . . . . . LITERALLY
9 MDDF . . . . . . . LITERALLY
9 MDWF . . . . . . . LITERALLY
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 12
9 MDWN . . . . . . . LITERALLY
9 MENDBIT. . . . . . LITERALLY
9 MENDM. . . . . . . LITERALLY
9 MFORMALBITS. . . . LITERALLY
9 MMODRM1. . . . . . LITERALLY
9 MMODRM2. . . . . . LITERALLY
9 MNOSEGFIX. . . . . LITERALLY
9 MNUMBERBITS. . . . LITERALLY
11 MODB . . . . . . . LITERALLY 365
11 MODD . . . . . . . LITERALLY 367
15 MODLETTERBIT . . . LITERALLY
15 MODLETTERCOUNT . . LITERALLY
335 031EH 13 MODLETTERROUT. . . PROCEDURE STACK=000AH 365 366 367 368
369
11 MODSB. . . . . . . LITERALLY 368
11 MODW . . . . . . . LITERALLY 366
9 MRELB. . . . . . . LITERALLY
9 MRELW. . . . . . . LITERALLY
9 MSEGFIX. . . . . . LITERALLY
90 0000H 2 N. . . . . . . . . WORD PARAMETER 91
87 0000H 2 N. . . . . . . . . WORD PARAMETER 88
84 0000H 1 N. . . . . . . . . BYTE PARAMETER 85
81 0000H 1 N. . . . . . . . . BYTE PARAMETER 82
63 0000H 1 N. . . . . . . . . BYTE PARAMETER 64
54 0000H 1 N. . . . . . . . . BYTE PARAMETER 55
51 0000H 2 N. . . . . . . . . WORD PARAMETER 52
388 044FH 42 NAMEROUT . . . . . PROCEDURE BYTE PUBLIC STACK=000AH
3 NEGLECTED. . . . . LITERALLY
42 0000H NEWCMBODY. . . . . PROCEDURE BYTE EXTERNAL(10) STACK=0000H 241
45 0000H NEWCMNAME. . . . . PROCEDURE BYTE EXTERNAL(11) STACK=0000H 237
27 0000H NEWMACRO . . . . . PROCEDURE BYTE EXTERNAL(5) STACK=0000H
24 0000H NEWSYMBOL. . . . . PROCEDURE BYTE EXTERNAL(4) STACK=0000H
227 0000H 2 NEXT . . . . . . . WORD BASED(LISTPTR) 232 233 240
147 0000H 1 NEXTCH . . . . . . BYTE EXTERNAL(58) 326
4 NIL. . . . . . . . LITERALLY
150 0000H 1 NO . . . . . . . . BYTE BASED(PTR2) 152
11 NOMOD. . . . . . . LITERALLY 369
147 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(61)
8 NOOVERCOUNT. . . . LITERALLY
8 NOOVERRIDEBIT. . . LITERALLY
13 NOPARAND . . . . . LITERALLY
16 NORANGE. . . . . . LITERALLY
3 NUMBER . . . . . . LITERALLY 252
16 NUMBERRANGE. . . . LITERALLY 256
7 OAND . . . . . . . LITERALLY
7 OEQ. . . . . . . . LITERALLY
147 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
7 OGE. . . . . . . . LITERALLY
7 OGT. . . . . . . . LITERALLY
7 OLAST. . . . . . . LITERALLY
7 OLE. . . . . . . . LITERALLY
7 OLENGTH. . . . . . LITERALLY
7 OLT. . . . . . . . LITERALLY
7 OMOD . . . . . . . LITERALLY
7 ONE. . . . . . . . LITERALLY
7 ONOT . . . . . . . LITERALLY
7 OOFFSET. . . . . . LITERALLY
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 13
7 OOR. . . . . . . . LITERALLY
124 0000H OPENHEX. . . . . . PROCEDURE EXTERNAL(40) STACK=0000H
122 0000H OPENINCLUDE. . . . PROCEDURE EXTERNAL(39) STACK=0000H
126 0000H OPENPRINT. . . . . PROCEDURE EXTERNAL(41) STACK=0000H
120 0000H OPENSOURCE . . . . PROCEDURE EXTERNAL(38) STACK=0000H
128 0000H OPENSYMBOL . . . . PROCEDURE EXTERNAL(42) STACK=0000H
147 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(62)
8 OPERANDSTRUC . . . LITERALLY 147
3 OPERATOR . . . . . LITERALLY
7 OPTR . . . . . . . LITERALLY
7 OSEG . . . . . . . LITERALLY
7 OSHL . . . . . . . LITERALLY
7 OSHORT . . . . . . LITERALLY
7 OSHR . . . . . . . LITERALLY
7 OTYPE. . . . . . . LITERALLY
107 0000H OUTHEXBYTE . . . . PROCEDURE EXTERNAL(33) STACK=0000H
110 0000H OUTPRINTBYTE . . . PROCEDURE EXTERNAL(34) STACK=0000H
113 0000H OUTSYMBOLBYTE. . . PROCEDURE EXTERNAL(35) STACK=0000H
57 0000H OUTTEXT. . . . . . PROCEDURE EXTERNAL(15) STACK=0000H
7 OXOR . . . . . . . LITERALLY
339 032BH 213 PARDESCRROUT . . . PROCEDURE STACK=001CH 398
148 005EH 80 PARNAME. . . . . . BYTE ARRAY(80) 153 155 379 382
6 PCODEMACRO . . . . LITERALLY
6 PCSEG. . . . . . . LITERALLY
6 PDB. . . . . . . . LITERALLY
6 PDBIT. . . . . . . LITERALLY
6 PDD. . . . . . . . LITERALLY
6 PDSEG. . . . . . . LITERALLY
6 PDW. . . . . . . . LITERALLY
6 PEJECT . . . . . . LITERALLY
6 PEND . . . . . . . LITERALLY
6 PENDIF . . . . . . LITERALLY
6 PENDM. . . . . . . LITERALLY
6 PEQU . . . . . . . LITERALLY
6 PESEG. . . . . . . LITERALLY
6 PIF. . . . . . . . LITERALLY
6 PIFLIST. . . . . . LITERALLY
6 PINCLUDE . . . . . LITERALLY
6 PLIST. . . . . . . LITERALLY
6 PMODRM . . . . . . LITERALLY
148 0002H 2 PMPT . . . . . . . WORD 148 340 341 342 343 379
6 PNOIFLIST. . . . . LITERALLY
6 PNOLIST. . . . . . LITERALLY
6 PNOSEGFIX. . . . . LITERALLY
6 PORG . . . . . . . LITERALLY
6 PPAGESIZE. . . . . LITERALLY
6 PPAGEWIDTH . . . . LITERALLY
6 PRB. . . . . . . . LITERALLY
13 PREFIXAND. . . . . LITERALLY
14 PREFIXON . . . . . LITERALLY
6 PRELB. . . . . . . LITERALLY
6 PRELW. . . . . . . LITERALLY
2 PROC . . . . . . . LITERALLY 20 22 24 27 30 33 36
39 42 45 48 51 72 75 84 87 90
93 95 97 99 102 105 107 110 113 116
118 120 122 124 126 128 130 132 134 136
138 140 142 145 149 161 170 184 195 202
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 14
214 226 245 249 250 303 308 331 335 339
376 388 396 404
6 PRS. . . . . . . . LITERALLY
6 PRW. . . . . . . . LITERALLY
6 PSEGFIX. . . . . . LITERALLY
3 PSEUDO . . . . . . LITERALLY
6 PSIMFORM . . . . . LITERALLY
6 PSSEG. . . . . . . LITERALLY
63 0000H 2 PT . . . . . . . . WORD PARAMETER 64
6 PTITLE . . . . . . LITERALLY
228 000AH 2 PTR. . . . . . . . WORD 229 230 237
149 0006H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 150 153
42 0000H 2 PTR. . . . . . . . WORD PARAMETER 43
149 0004H 2 PTR2 . . . . . . . WORD PARAMETER AUTOMATIC 150 152
202 0138H 44 PUTB . . . . . . . PROCEDURE PUBLIC STACK=0004H 247 265 333
337
250 021DH 168 PUTRANGE . . . . . PROCEDURE STACK=0010H 306 311 318
214 0164H 47 PUTW . . . . . . . PROCEDURE PUBLIC STACK=0004H
5 RAH. . . . . . . . LITERALLY 291
5 RAL. . . . . . . . LITERALLY 287
16 RANGEAND . . . . . LITERALLY
249 0203H 26 RANGEROUT. . . . . PROCEDURE STACK=0018H 373
15 RANGESPECBIT . . . LITERALLY
15 RANGESPECCOUNT . . LITERALLY
16 RANGETYPEAND . . . LITERALLY
5 RAX. . . . . . . . LITERALLY 279
5 RBH. . . . . . . . LITERALLY 294
5 RBL. . . . . . . . LITERALLY 290
5 RBP. . . . . . . . LITERALLY 284
5 RBX. . . . . . . . LITERALLY 282
5 RCH. . . . . . . . LITERALLY 292
5 RCL. . . . . . . . LITERALLY 288
5 RCS. . . . . . . . LITERALLY 296
5 RCX. . . . . . . . LITERALLY 280
5 RDH. . . . . . . . LITERALLY 293
5 RDI. . . . . . . . LITERALLY 286
5 RDL. . . . . . . . LITERALLY 289
5 RDS. . . . . . . . LITERALLY 298
5 RDX. . . . . . . . LITERALLY 281
2 REENT. . . . . . . LITERALLY
3 REG. . . . . . . . LITERALLY 186 196
16 REGISTERRANGE. . . LITERALLY 271
245 01F6H 13 REGISTERROUT . . . PROCEDURE STACK=000AH 279 280 281 282
283 284 285 286 287 288 289 290 291 292
293 294 295 296 297 298
5 RES. . . . . . . . LITERALLY 295
39 0000H 2 RESULT . . . . . . WORD PARAMETER 40
30 0000H 2 RESULT . . . . . . WORD PARAMETER 31
24 0000H 2 RESULT . . . . . . WORD PARAMETER 25
45 0000H 2 RETURNPTR. . . . . WORD PARAMETER 46
132 0000H REWINDSOURCE . . . PROCEDURE EXTERNAL(44) STACK=0000H
7 RIGHTBRACKET . . . LITERALLY
17 RIGHTPAR . . . . . LITERALLY 319
5 RSI. . . . . . . . LITERALLY 285
5 RSP. . . . . . . . LITERALLY 283
5 RSS. . . . . . . . LITERALLY 297
81 0000H 2 S. . . . . . . . . WORD PARAMETER 82
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 15
54 0000H 2 S. . . . . . . . . WORD PARAMETER 55
95 0000H SCAN . . . . . . . PROCEDURE EXTERNAL(28) STACK=0000H 301 317
325 329 344 349 371 393 401
93 0000H SCANINIT . . . . . PROCEDURE EXTERNAL(27) STACK=0000H
17 SECOND . . . . . . LITERALLY 318
8 SEGMBIT. . . . . . LITERALLY
8 SEGMCOUNT. . . . . LITERALLY
147 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
8 SEGTYPEBIT . . . . LITERALLY
8 SEGTYPECOUNT . . . LITERALLY
147 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
16 SINGLERANGE. . . . LITERALLY 305
97 0000H SKIPRESTOFLINE . . PROCEDURE EXTERNAL(29) STACK=0000H
102 0000H SKIPUNTIL. . . . . PROCEDURE BYTE EXTERNAL(31) STACK=0000H
36 0000H 2 SOURCE . . . . . . WORD PARAMETER 37
2 SPACE. . . . . . . LITERALLY
3 SPEC . . . . . . . LITERALLY
10 SPECA. . . . . . . LITERALLY 351
10 SPECC. . . . . . . LITERALLY 352
10 SPECD. . . . . . . LITERALLY 353
10 SPECE. . . . . . . LITERALLY 354
99 0000H SPECIALTOKEN . . . PROCEDURE BYTE EXTERNAL(30) STACK=0000H
331 0311H 13 SPECLETTERROUT . . PROCEDURE STACK=000AH 351 352 353 354
355 356 357 358
10 SPECM. . . . . . . LITERALLY 355
10 SPECR. . . . . . . LITERALLY 356
10 SPECS. . . . . . . LITERALLY 357
10 SPECX. . . . . . . LITERALLY 358
303 02C5H 23 SRANGE . . . . . . PROCEDURE STACK=0014H 328
12 SSOVER . . . . . . LITERALLY
39 0000H 2 STRADR . . . . . . WORD PARAMETER 40
30 0000H 2 STRADR . . . . . . WORD PARAMETER 31
27 0000H 2 STRADR . . . . . . WORD PARAMETER 28
24 0000H 2 STRADR . . . . . . WORD PARAMETER 25
3 STRING . . . . . . LITERALLY
2 STRUC. . . . . . . LITERALLY 147
147 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
36 0000H 2 SYMBADR. . . . . . WORD PARAMETER 37
33 0000H 2 SYMBADR. . . . . . WORD PARAMETER 34
22 0000H SYMBINIT . . . . . PROCEDURE EXTERNAL(3) STACK=0000H
3 SYMBOL . . . . . . LITERALLY
8 SYMBOLHEAD . . . . LITERALLY
8 SYMBOLSTRUC. . . . LITERALLY 147
20 0000H SYMBTERMINATE. . . PROCEDURE EXTERNAL(2) STACK=0000H
57 0000H 2 T. . . . . . . . . WORD PARAMETER 58
2 TAB. . . . . . . . LITERALLY
172 0008H 4 TABLE. . . . . . . BYTE ARRAY(4) DATA 173 174 176
163 0000H 8 TABLE. . . . . . . BYTE ARRAY(8) DATA 164 165
404 0496H 35 TERMINATECMROUT. . PROCEDURE PUBLIC STACK=000EH
60 0000H 2 TEXTADR. . . . . . WORD PARAMETER 61
2 THENDO . . . . . . LITERALLY 176 205 217 230 252 254 259
269 312 319 345 405 409
250 0004H 1 TIME . . . . . . . BYTE PARAMETER AUTOMATIC 251 254 269
102 0000H 1 TOK. . . . . . . . BYTE PARAMETER 103
99 0000H 1 TOK. . . . . . . . BYTE PARAMETER 100
147 0000H 4 TOKEN. . . . . . . STRUCTURE EXTERNAL(57) 186 189 191 193
196 198 200 252 259 265 389 397
PL/M-86 COMPILER CODEMACRO MODULE 2 10/5/81 PAGE 16
2 TRUE . . . . . . . LITERALLY 154 207 208 219 220 243 261
276 314 321 347 360 394 411 412
147 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN) 186 196 252 389 397
8 TYPEBIT. . . . . . LITERALLY
48 0000H TYPECALC . . . . . PROCEDURE BYTE EXTERNAL(12) STACK=0000H
8 TYPECOUNT. . . . . LITERALLY
3 UDEFSYMB . . . . . LITERALLY
226 0193H 99 UPDATECMLISTS. . . PROCEDURE BYTE STACK=000AH 409
78 0000H UPPER. . . . . . . PROCEDURE BYTE EXTERNAL(22) STACK=0000H
48 0000H 2 VAL. . . . . . . . WORD PARAMETER 49
147 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN) 193 200 259 265
3 VARIABLE . . . . . LITERALLY
214 0004H 2 W. . . . . . . . . WORD PARAMETER AUTOMATIC 215 223
4 WRD. . . . . . . . LITERALLY
51 0000H WRDTEST. . . . . . PROCEDURE BYTE EXTERNAL(13) STACK=0000H
MODULE INFORMATION:
CODE AREA SIZE = 04B9H 1209D
CONSTANT AREA SIZE = 000CH 12D
VARIABLE AREA SIZE = 011BH 283D
MAXIMUM STACK SIZE = 0020H 32D
936 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION