mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 09:54:20 +00:00
Upload
Digital Research
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
Concurrent CP/M-86 version 2.0 Source Listings Account
|
||||
|
||||
July 5, 1983 Bill Fitler
|
||||
|
||||
This account contains the source for CCPM-86 version 2.0. All of the
|
||||
utilities and RSPs have their own directories. Other directories include:
|
||||
|
||||
KERN.DIR - containing SUP, RTM, MEM, CIO and SYSDAT.
|
||||
BDOS.DIR - just the BDOS...
|
||||
XIOS.DIR - just the XIOS...
|
||||
LOADER.DIR - BOOT, LBDOS, LOAD, TCOPY
|
||||
|
||||
In addition, there are the following files and directories:
|
||||
|
||||
COMMON.DIR - a directory containing common literal and equates.
|
||||
COMMANDS.DIR - account-wide command files, plus Tables of Contents.
|
||||
PATCHES.DOC - all CCPM-86 patches are documented in this document.
|
||||
|
||||
These directories are NOT available for distribution outside of DRI:
|
||||
VAXTOOLS.DIR - PLM86 compilers, etc. used in compiling the modules.
|
||||
SERIALIZ.DIR - serialization utilities
|
||||
|
||||
What's missing?
|
||||
- PATCHES.DOC has not been updated for a while.
|
||||
- Some of the 0READ.ME files contain working status, which can be
|
||||
ignored.
|
||||
- Documentation TEX files are not included.
|
||||
- Some of the kernel listings have been removed.
|
||||
- GENCCPM needs the C86 compiler, which is not included.
|
||||
- This is NOT a working account, which means that not all of the
|
||||
compile pathnames have been tested (it was transferred from another
|
||||
account). Caveat programmor.
|
||||
@@ -0,0 +1,2 @@
|
||||
ABORT status: rsp, ready for QA (worked on MPM) 10/28/82
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
$!
|
||||
$! Assemble, compile, link, locate, and generate hex
|
||||
$! for ABORT.RSP to run in
|
||||
$! Concurrent CP/M-86, vers 2.0
|
||||
$!
|
||||
$ ccpmsetup
|
||||
$
|
||||
$ asm86 rhabt.a86 !Rsp Header ABorT
|
||||
$ plm86 rabt.plm 'p1' 'p2' 'p3' xref optimize(3) debug !Rsp ABorT
|
||||
$ link86 rhabt.obj, rabt.obj to rabt.lnk
|
||||
$ loc86 rabt.lnk od(sm(code,dats,data,stack,const))-
|
||||
ad(sm(code(0), dats(10000h))) ss(stack(0)) to rabt.
|
||||
$ h86 rabt
|
||||
$!
|
||||
@@ -0,0 +1,70 @@
|
||||
:020000021000EC
|
||||
:1000000000000000000000000000000000000000F0
|
||||
:020000021001EB
|
||||
:100000000000000000BE030041424F525420202057
|
||||
:080010000400000000000000E4
|
||||
:020000021004E8
|
||||
:1000000000000000000000000000000000000000F0
|
||||
:1000100000000000000000000000000000000000E0
|
||||
:1000200000000000000000000000000000000000D0
|
||||
:06003000000000003A018F
|
||||
:02000002100AE2
|
||||
:100000000100CCCCCCCCCCCCCCCCCCCCCCCCCCCCC7
|
||||
:10001000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC20
|
||||
:10002000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC10
|
||||
:10003000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC00
|
||||
:10004000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCF0
|
||||
:10005000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCE0
|
||||
:10006000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD0
|
||||
:10007000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC0
|
||||
:10008000CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCB0
|
||||
:10009000CCCCCCCCCCCCCCCCCCCC720000000000F6
|
||||
:020000020000FC
|
||||
:10000000434F5059524947485420284329203139F9
|
||||
:1000100038322C204449474954414C2052455345DD
|
||||
:100020004152434820558BEC8B56048B4E06CDE055
|
||||
:040030005DC20400A9
|
||||
:020000020003F9
|
||||
:020004000010EA
|
||||
:020000021014D8
|
||||
:10000600000000000100090241424F525420202006
|
||||
:020000021015D7
|
||||
:10000600000000000A0041424F5254202020830085
|
||||
:0C00160001000000000000000000860156
|
||||
:020000021017D5
|
||||
:040002000B028C025F
|
||||
:020000021017D5
|
||||
:0E0006000000FF0000002020202020202020ED
|
||||
:02000002102AC2
|
||||
:10000E000D0A496C6C6567616C20436F6E736F6C83
|
||||
:0E001E00652C2055736520302D32353320249B
|
||||
:02000002102CC0
|
||||
:10000C000D0A41626F7274204661696C65642E241E
|
||||
:020000020003F9
|
||||
:10000600558BECA14001B9050003C1A3400103C112
|
||||
:10001600A3400103C1A3400103C1A3400103C1A33F
|
||||
:10002600400103C1A3400103C1A3400103C1A34092
|
||||
:0C0036000103C1A34001010E40015DC3A5
|
||||
:020000020007F5
|
||||
:10000200558BECB08650B8560150E8A6FFB0875029
|
||||
:10001200B8460150E89CFFA10000A34401B09150F2
|
||||
:10002200B8C80050E88CFFB08950B8460150E88249
|
||||
:10003200FFA10902A34201B09450C41E4201268AC4
|
||||
:100042004720B40050E86BFFC41E4201268A4720B5
|
||||
:10005200A27A01B09850B8720150E856FFA372011B
|
||||
:10006200B90800BE8D02BF7C011E07FCF2A4833ECC
|
||||
:100072007201007503E98C00B09850B8720150E823
|
||||
:1000820031FFA37201C606AC0201C706840100005B
|
||||
:100092008A1EAC02B70080BF8C0220B0FF750140FF
|
||||
:1000A2005080FB04B0FF7201405922C1D0D8732E98
|
||||
:1000B2008A878C022C3088878C023C097719A184AC
|
||||
:1000C20001B90A00F7E18A8F8C02B50003C1A3844B
|
||||
:1000D20001FE06AC02EBB9C606AC02FFEBB2813EF2
|
||||
:1000E2008401FD007707803EAC02FF7511B0095014
|
||||
:1000F200B8AE0250E8BCFEC6067A01FFEB06A18448
|
||||
:1001020001A27A01803E7A01FF7418B09D50B87640
|
||||
:100112000150E89EFE3CFF750AB00950B8CC02506F
|
||||
:10012200E890FEB09250B8000050E886FEB09350BE
|
||||
:10013200B8000050E87CFEC70672010B02E9E7FE38
|
||||
:020142005DC39B
|
||||
:00000001FF
|
||||
@@ -0,0 +1,543 @@
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE ABORT
|
||||
OBJECT MODULE PLACED IN RABT.OBJ
|
||||
COMPILER INVOKED BY: :F0: RABT.PLM XREF OPTIMIZE(3) DEBUG
|
||||
|
||||
|
||||
|
||||
$ title ('CCP/M-86 1.0, Abort a Program - RSP')
|
||||
$ compact
|
||||
1 abort:
|
||||
do;
|
||||
|
||||
/* Modified 3/15/83 to force an ATTACH console call */
|
||||
|
||||
$include (:f2:copyrt.lit)
|
||||
=
|
||||
= /*
|
||||
= Copyright (C) 1983
|
||||
= Digital Research
|
||||
= P.O. Box 579
|
||||
= Pacific Grove, CA 93950
|
||||
= */
|
||||
=
|
||||
$include (:f2:comlit.lit)
|
||||
=
|
||||
2 1 = declare
|
||||
= lit literally 'literally',
|
||||
= dcl lit 'declare',
|
||||
= true lit '0ffh',
|
||||
= false lit '0',
|
||||
= no lit 'not',
|
||||
= 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 (:f2:mfunc.lit)
|
||||
=
|
||||
= /* Concurrent CP/M function numbers */
|
||||
=
|
||||
3 1 = dcl m$prtbuf lit '9',
|
||||
= m$select lit '14',
|
||||
= m$openf lit '15',
|
||||
= m$closef lit '16',
|
||||
= m$deletef lit '19',
|
||||
= m$readf lit '20',
|
||||
= m$writef lit '21',
|
||||
= m$makef lit '22',
|
||||
= m$getlogin lit '24',
|
||||
= m$curdsk lit '25',
|
||||
= m$setdma lit '26',
|
||||
= m$setatt lit '30',
|
||||
= m$setusr lit '32',
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 2
|
||||
|
||||
|
||||
= m$readrf lit '33',
|
||||
= m$writerf lit '34',
|
||||
= m$resetdrv lit '37',
|
||||
= m$errmode lit '45',
|
||||
= m$dirbios lit '50',
|
||||
= m$makeq lit '134',
|
||||
= m$openq lit '135',
|
||||
= m$deleteq lit '136',
|
||||
= m$readq lit '137',
|
||||
= m$creadq lit '138',
|
||||
= m$writeq lit '139',
|
||||
= m$cwriteq lit '140',
|
||||
= m$delay lit '141',
|
||||
= m$dispatch lit '142',
|
||||
= m$setprior lit '145',
|
||||
= m$attach lit '146',
|
||||
= m$detach lit '147',
|
||||
= m$setcns lit '148',
|
||||
= m$parse lit '152',
|
||||
= m$getcns lit '153',
|
||||
= m$sysdat lit '154',
|
||||
= m$getpd lit '156',
|
||||
= m$abort lit '157';
|
||||
=
|
||||
= /* Internal calls */
|
||||
=
|
||||
4 1 = dcl mi$sleep lit '0212H',
|
||||
= mi$wakeup lit '0213H';
|
||||
=
|
||||
|
||||
/**** Vax commands for generation:
|
||||
|
||||
$ ccpmsetup !Set up environment
|
||||
$ asm86 rhabt.a86 !Rsp Header ABorT
|
||||
$ plm86 rabt.plm 'p1' 'p2' 'p3' 'p4' optimize(3) debug !Rsp ABorT
|
||||
$ link86 rhabt.obj, rabt.obj to rabt.lnk
|
||||
$ loc86 rabt.lnk od(sm(code,dats,data,stack,const))-
|
||||
ad(sm(code(0), dats(10000h))) ss(stack(0)) to rabt.
|
||||
$ h86 rabt
|
||||
|
||||
**** Then, on a micro:
|
||||
A>vax rabt.h86 $fans
|
||||
A>gencmd rabt data[b1000]
|
||||
A>ren abort.rsp=rabt.cmd
|
||||
|
||||
**** Notes:
|
||||
The stack is declared in the assemble module, RSPABT.A86.
|
||||
The const(ants) come last to force hex generation.
|
||||
****/
|
||||
|
||||
|
||||
5 1 mon1:
|
||||
procedure (func,info) external;
|
||||
6 2 declare func byte;
|
||||
7 2 declare info address;
|
||||
8 2 end mon1;
|
||||
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 3
|
||||
|
||||
|
||||
9 1 mon2:
|
||||
procedure (func,info) byte external;
|
||||
10 2 declare func byte;
|
||||
11 2 declare info address;
|
||||
12 2 end mon2;
|
||||
|
||||
13 1 mon3:
|
||||
procedure (f,a) address external;
|
||||
14 2 dcl f byte, a address;
|
||||
15 2 end mon3;
|
||||
|
||||
16 1 patch: procedure public; /* dummy area for patching code segments */
|
||||
17 2 declare i address;
|
||||
/* first statement is 9 bytes, rest are 5 bytes */
|
||||
18 2 i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
|
||||
23 2 i=i+5; i=i+5; i=i+5; i=i+5; i=i+5; /* about 54 bytes */
|
||||
28 2 end patch;
|
||||
|
||||
$include (:f2:proces.lit)
|
||||
=
|
||||
= /*
|
||||
= Proces Literals MP/M-8086 II
|
||||
= */
|
||||
=
|
||||
29 1 = declare pnamsiz literally '8';
|
||||
=
|
||||
30 1 = declare pd$hdr literally 'structure
|
||||
= (link word,thread word,stat byte,prior byte,flag word,
|
||||
= name (8) byte,uda word,dsk byte,user byte,ldsk byte,luser byte,
|
||||
= mem word';
|
||||
=
|
||||
31 1 = declare pd$structure literally 'pd$hdr,
|
||||
= dvract word,wait word,org byte,net byte,parent word,
|
||||
= cns byte,abort byte,conmode word,lst byte,sf3 byte,sf4 byte,sf5 byte,
|
||||
= reservd (4) byte,pret word,scratch word)';
|
||||
=
|
||||
32 1 = declare psrun lit '00',
|
||||
= pspoll lit '01',
|
||||
= psdelay lit '02',
|
||||
= psswap lit '03',
|
||||
= psterm lit '04',
|
||||
= pssleep lit '05',
|
||||
= psdq lit '06',
|
||||
= psnq lit '07',
|
||||
= psflagwait lit '08',
|
||||
= psciowait lit '09';
|
||||
=
|
||||
33 1 = declare pf$sys lit '00001h',
|
||||
= pf$keep lit '00002h',
|
||||
= pf$kernal lit '00004h',
|
||||
= pf$pure lit '00008h',
|
||||
= pf$table lit '00010h',
|
||||
= pf$resource lit '00020h',
|
||||
= pf$raw lit '00040h',
|
||||
= pf$ctlc lit '00080h',
|
||||
= pf$active lit '00100h',
|
||||
= pf$tempkeep lit '00200h',
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 4
|
||||
|
||||
|
||||
= pf$ctld lit '00400h',
|
||||
= pf$childabort lit '00800h',
|
||||
= pf$noctls lit '01000h';
|
||||
=
|
||||
34 1 = declare pcm$11 lit '00001h',
|
||||
= pcm$ctls lit '00002h',
|
||||
= pcm$rout lit '00004h',
|
||||
= pcm$ctlc lit '00008h',
|
||||
= pcm$ctlo lit '00080h',
|
||||
= pcm$rsx lit '00300h';
|
||||
|
||||
35 1 dcl pd$pointer pointer;
|
||||
36 1 dcl pd$ptr structure (offset word, segment word) at(@pd$pointer);
|
||||
37 1 dcl pd based pd$pointer pd$structure;
|
||||
|
||||
38 1 dcl rsplink word external;
|
||||
|
||||
$include (:f2:qd.lit)
|
||||
=
|
||||
= /* Queue Descriptor */
|
||||
=
|
||||
39 1 = dcl qnamsiz lit '8';
|
||||
=
|
||||
40 1 = dcl qd$structure lit 'structure(
|
||||
= link word,
|
||||
= net byte,
|
||||
= org byte,
|
||||
= flags word,
|
||||
= name(qnamsiz) byte,
|
||||
= msglen word,
|
||||
= nmsgs word,
|
||||
= dq word,
|
||||
= nq word,
|
||||
= msgcnt word,
|
||||
= msgout word,
|
||||
= buffer word)';
|
||||
=
|
||||
= /* queue flag values */
|
||||
=
|
||||
41 1 = dcl qf$mx lit '001h'; /* Mutual Exclusion */
|
||||
42 1 = dcl qf$keep lit '002h'; /* NO DELETE */
|
||||
43 1 = dcl qf$hide lit '004h'; /* Not User writable */
|
||||
44 1 = dcl qf$rsp lit '008h'; /* rsp queue */
|
||||
45 1 = dcl qf$table lit '010h'; /* from qd table */
|
||||
46 1 = dcl qf$rpl lit '020h'; /* rpl queue */
|
||||
47 1 = dcl qf$dev lit '040h'; /* device queue */
|
||||
=
|
||||
= /* Queue Parameter Block */
|
||||
=
|
||||
48 1 = dcl qpb$structure lit 'structure(
|
||||
= flgs byte,
|
||||
= net byte,
|
||||
= qaddr word,
|
||||
= nmsgs word,
|
||||
= buffptr word,
|
||||
= name (qnamsiz) byte )';
|
||||
=
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 5
|
||||
|
||||
|
||||
|
||||
49 1 dcl abt$qd$buf (131) byte;
|
||||
50 1 dcl abt$cmd structure(
|
||||
pd address, tail (129) byte);
|
||||
51 1 dcl abt$qpb qpb$structure initial(0,0,0,1,.abt$cmd,'ABORT ');
|
||||
52 1 dcl abt$qd qd$structure initial (
|
||||
0,0,0,qf$keep + qf$rsp,'ABORT ',131,1,0,0,0,0,.abt$qd$buf);
|
||||
|
||||
53 1 dcl fcb (32) byte;
|
||||
54 1 dcl pfcb structure (
|
||||
filename address,
|
||||
fcbadr address) initial (.abt$cmd.tail, .fcb);
|
||||
|
||||
55 1 declare abort$pb structure (
|
||||
pd address,
|
||||
term address,
|
||||
cns byte,
|
||||
net byte,
|
||||
pname (8) byte) initial (
|
||||
0,00ffh,0,0,' ');
|
||||
|
||||
56 1 dcl i byte;
|
||||
57 1 dcl console word;
|
||||
58 1 dcl mpm$86 lit '1130h';
|
||||
|
||||
/*
|
||||
Main Program
|
||||
*/
|
||||
|
||||
59 1 plm$start:
|
||||
procedure public;
|
||||
|
||||
60 2 call mon1(m$makeq,.abt$qd); /* make ABORT queue */
|
||||
61 2 call mon1(m$openq,.abt$qpb); /* open it */
|
||||
62 2 pd$ptr.segment = rsplink;
|
||||
63 2 call mon1(m$setprior,200); /* back to the same as transients */
|
||||
|
||||
64 2 do while true;
|
||||
65 3 call mon1(m$readq,.abt$qpb);
|
||||
66 3 pd$ptr.offset = abt$cmd.pd; /* set console to same */
|
||||
67 3 call mon1(m$setcns, pd.cns); /* of who typed ABORT */
|
||||
68 3 abort$pb.cns = pd.cns;
|
||||
69 3 pfcb.filename = mon3(m$parse, .pfcb);
|
||||
/* get name of program to abort */
|
||||
70 3 call move (8,.fcb(1),.abort$pb.pname);
|
||||
/* fcb(9)='$'; DEBUG
|
||||
call mon1(m$prtbuf, .fcb(1)); */
|
||||
71 3 if pfcb.filename <> 0 then /* console number specified */
|
||||
72 3 do;
|
||||
73 4 pfcb.filename = mon3(m$parse, .pfcb);
|
||||
74 4 i = 1; console = 0;
|
||||
76 4 do while fcb(i) <> ' ' and i < 4;
|
||||
77 5 if (fcb(i) := fcb(i) - '0') <= 9 then
|
||||
78 5 do;
|
||||
79 6 console = fcb(i) + 10 * console;
|
||||
80 6 i = i + 1;
|
||||
81 6 end;
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 6
|
||||
|
||||
|
||||
else
|
||||
82 5 i = 255; /* non - numeric */
|
||||
83 5 end;
|
||||
84 4 if console > 253 or i = 255 then
|
||||
85 4 do;
|
||||
86 5 call mon1(m$prtbuf, .(cr,lf, 'Illegal Console, Use 0-253 $'));
|
||||
87 5 abort$pb.cns = 0ffh;
|
||||
88 5 end;
|
||||
else
|
||||
89 4 abort$pb.cns = low(console);
|
||||
90 4 end;
|
||||
|
||||
91 3 if abort$pb.cns <> 0ffh then
|
||||
92 3 if mon2(m$abort, .abort$pb) = 0ffh then
|
||||
93 3 do;
|
||||
94 4 call mon1(m$prtbuf, .(cr,lf, 'Abort Failed.','$'));
|
||||
95 4 end;
|
||||
/* abort first PD found with same name and console */
|
||||
/* consistent with MP/M-80 II but not MP/M 1.x */
|
||||
96 3 call mon1(m$attach,0); /* make sure we own the console before */
|
||||
97 3 call mon1(m$detach, 0); /* calling detach */
|
||||
98 3 pfcb.filename = .abt$cmd.tail;
|
||||
99 3 end;
|
||||
100 2 end plmstart;
|
||||
101 1 end abort;
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 7
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
13 0000H 2 A. . . . . . . . . WORD PARAMETER 14
|
||||
1 0002H ABORT. . . . . . . PROCEDURE STACK=0000H
|
||||
37 0021H 1 ABORT. . . . . . . BYTE MEMBER(PD)
|
||||
55 0036H 14 ABORTPB. . . . . . STRUCTURE INITIAL 68 70 87 89 91 92
|
||||
50 00C9H 131 ABTCMD . . . . . . STRUCTURE 51 54 66 98
|
||||
52 0016H 28 ABTQD. . . . . . . STRUCTURE INITIAL 60
|
||||
49 0046H 131 ABTQDBUF . . . . . BYTE ARRAY(131) 52
|
||||
51 0006H 16 ABTQPB . . . . . . STRUCTURE INITIAL 61 65
|
||||
2 BOOLEAN. . . . . . LITERALLY
|
||||
52 001AH 2 BUFFER . . . . . . WORD MEMBER(ABTQD)
|
||||
51 0006H 2 BUFFPTR. . . . . . WORD MEMBER(ABTQPB)
|
||||
55 0004H 1 CNS. . . . . . . . BYTE MEMBER(ABORTPB) 68 87 89 91
|
||||
37 0020H 1 CNS. . . . . . . . BYTE MEMBER(PD) 67 68
|
||||
37 0022H 2 CONMODE. . . . . . WORD MEMBER(PD)
|
||||
57 0044H 2 CONSOLE. . . . . . WORD 75 79 84 89
|
||||
2 CR . . . . . . . . LITERALLY 86 94
|
||||
2 CTRLC. . . . . . . LITERALLY
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
52 0012H 2 DQ . . . . . . . . WORD MEMBER(ABTQD)
|
||||
37 0012H 1 DSK. . . . . . . . BYTE MEMBER(PD)
|
||||
37 0018H 2 DVRACT . . . . . . WORD MEMBER(PD)
|
||||
13 0000H 1 F. . . . . . . . . BYTE PARAMETER 14
|
||||
2 FALSE. . . . . . . LITERALLY
|
||||
53 014CH 32 FCB. . . . . . . . BYTE ARRAY(32) 54 70 76 77 79
|
||||
54 0002H 2 FCBADR . . . . . . WORD MEMBER(PFCB)
|
||||
2 FF . . . . . . . . LITERALLY
|
||||
54 0000H 2 FILENAME . . . . . WORD MEMBER(PFCB) 69 71 73 98
|
||||
37 0006H 2 FLAG . . . . . . . WORD MEMBER(PD)
|
||||
52 0004H 2 FLAGS. . . . . . . WORD MEMBER(ABTQD)
|
||||
51 0000H 1 FLGS . . . . . . . BYTE MEMBER(ABTQPB)
|
||||
2 FOREVER. . . . . . LITERALLY
|
||||
5 0000H 1 FUNC . . . . . . . BYTE PARAMETER 6
|
||||
9 0000H 1 FUNC . . . . . . . BYTE PARAMETER 10
|
||||
17 0000H 2 I. . . . . . . . . WORD 18 19 20 21 22 23 24 25 26 27
|
||||
56 016CH 1 I. . . . . . . . . BYTE 74 76 77 79 80 82 84
|
||||
9 0000H 2 INFO . . . . . . . WORD PARAMETER 11
|
||||
5 0000H 2 INFO . . . . . . . WORD PARAMETER 7
|
||||
37 0014H 1 LDSK . . . . . . . BYTE MEMBER(PD)
|
||||
2 LF . . . . . . . . LITERALLY 86 94
|
||||
52 0000H 2 LINK . . . . . . . WORD MEMBER(ABTQD)
|
||||
37 0000H 2 LINK . . . . . . . WORD MEMBER(PD)
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4 32 33 34 39 40 41 42 43
|
||||
44 45 46 47 48 58
|
||||
LOW. . . . . . . . BUILTIN 89
|
||||
37 0024H 1 LST. . . . . . . . BYTE MEMBER(PD)
|
||||
37 0015H 1 LUSER. . . . . . . BYTE MEMBER(PD)
|
||||
3 MABORT . . . . . . LITERALLY 92
|
||||
3 MATTACH. . . . . . LITERALLY 96
|
||||
3 MCLOSEF. . . . . . LITERALLY
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 8
|
||||
|
||||
|
||||
3 MCREADQ. . . . . . LITERALLY
|
||||
3 MCURDSK. . . . . . LITERALLY
|
||||
3 MCWRITEQ . . . . . LITERALLY
|
||||
3 MDELAY . . . . . . LITERALLY
|
||||
3 MDELETEF . . . . . LITERALLY
|
||||
3 MDELETEQ . . . . . LITERALLY
|
||||
3 MDETACH. . . . . . LITERALLY 97
|
||||
3 MDIRBIOS . . . . . LITERALLY
|
||||
3 MDISPATCH. . . . . LITERALLY
|
||||
37 0016H 2 MEM. . . . . . . . WORD MEMBER(PD)
|
||||
3 MERRMODE . . . . . LITERALLY
|
||||
3 MGETCNS. . . . . . LITERALLY
|
||||
3 MGETLOGIN. . . . . LITERALLY
|
||||
3 MGETPD . . . . . . LITERALLY
|
||||
4 MISLEEP. . . . . . LITERALLY
|
||||
4 MIWAKEUP . . . . . LITERALLY
|
||||
3 MMAKEF . . . . . . LITERALLY
|
||||
3 MMAKEQ . . . . . . LITERALLY 60
|
||||
5 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(0) STACK=0000H 60 61 63 65 67 86
|
||||
94 96 97
|
||||
9 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H 92
|
||||
13 0000H MON3 . . . . . . . PROCEDURE WORD EXTERNAL(2) STACK=0000H 69 73
|
||||
3 MOPENF . . . . . . LITERALLY
|
||||
3 MOPENQ . . . . . . LITERALLY 61
|
||||
MOVE . . . . . . . BUILTIN 70
|
||||
3 MPARSE . . . . . . LITERALLY 69 73
|
||||
58 MPM86. . . . . . . LITERALLY
|
||||
3 MPRTBUF. . . . . . LITERALLY 86 94
|
||||
3 MREADF . . . . . . LITERALLY
|
||||
3 MREADQ . . . . . . LITERALLY 65
|
||||
3 MREADRF. . . . . . LITERALLY
|
||||
3 MRESETDRV. . . . . LITERALLY
|
||||
3 MSELECT. . . . . . LITERALLY
|
||||
3 MSETATT. . . . . . LITERALLY
|
||||
3 MSETCNS. . . . . . LITERALLY 67
|
||||
3 MSETDMA. . . . . . LITERALLY
|
||||
3 MSETPRIOR. . . . . LITERALLY 63
|
||||
3 MSETUSR. . . . . . LITERALLY
|
||||
52 0016H 2 MSGCNT . . . . . . WORD MEMBER(ABTQD)
|
||||
52 000EH 2 MSGLEN . . . . . . WORD MEMBER(ABTQD)
|
||||
52 0018H 2 MSGOUT . . . . . . WORD MEMBER(ABTQD)
|
||||
3 MSYSDAT. . . . . . LITERALLY
|
||||
3 MWRITEF. . . . . . LITERALLY
|
||||
3 MWRITEQ. . . . . . LITERALLY
|
||||
3 MWRITERF . . . . . LITERALLY
|
||||
52 0006H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(ABTQD)
|
||||
51 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(ABTQPB)
|
||||
37 0008H 8 NAME . . . . . . . BYTE ARRAY(8) MEMBER(PD)
|
||||
55 0005H 1 NET. . . . . . . . BYTE MEMBER(ABORTPB)
|
||||
52 0002H 1 NET. . . . . . . . BYTE MEMBER(ABTQD)
|
||||
51 0001H 1 NET. . . . . . . . BYTE MEMBER(ABTQPB)
|
||||
37 001DH 1 NET. . . . . . . . BYTE MEMBER(PD)
|
||||
52 0010H 2 NMSGS. . . . . . . WORD MEMBER(ABTQD)
|
||||
51 0004H 2 NMSGS. . . . . . . WORD MEMBER(ABTQPB)
|
||||
2 NO . . . . . . . . LITERALLY
|
||||
2 NOPAGEMODEOFFSET . LITERALLY
|
||||
52 0014H 2 NQ . . . . . . . . WORD MEMBER(ABTQD)
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 9
|
||||
|
||||
|
||||
36 0000H 2 OFFSET . . . . . . WORD MEMBER(PDPTR) 66
|
||||
52 0003H 1 ORG. . . . . . . . BYTE MEMBER(ABTQD)
|
||||
37 001CH 1 ORG. . . . . . . . BYTE MEMBER(PD)
|
||||
2 PAGELENOFFSET. . . LITERALLY
|
||||
37 001EH 2 PARENT . . . . . . WORD MEMBER(PD)
|
||||
16 0002H 60 PATCH. . . . . . . PROCEDURE PUBLIC STACK=0002H
|
||||
34 PCM11. . . . . . . LITERALLY
|
||||
34 PCMCTLC. . . . . . LITERALLY
|
||||
34 PCMCTLO. . . . . . LITERALLY
|
||||
34 PCMCTLS. . . . . . LITERALLY
|
||||
34 PCMROUT. . . . . . LITERALLY
|
||||
34 PCMRSX . . . . . . LITERALLY
|
||||
55 0000H 2 PD . . . . . . . . WORD MEMBER(ABORTPB)
|
||||
50 0000H 2 PD . . . . . . . . WORD MEMBER(ABTCMD) 66
|
||||
37 0000H 48 PD . . . . . . . . STRUCTURE BASED(PDPOINTER) 67 68
|
||||
30 PDHDR. . . . . . . LITERALLY 37
|
||||
35 0002H 4 PDPOINTER. . . . . POINTER 36 37 67 68
|
||||
36 0002H 4 PDPTR. . . . . . . STRUCTURE AT 62 66
|
||||
31 PDSTRUCTURE. . . . LITERALLY 37
|
||||
33 PFACTIVE . . . . . LITERALLY
|
||||
54 0032H 4 PFCB . . . . . . . STRUCTURE INITIAL 69 71 73 98
|
||||
33 PFCHILDABORT . . . LITERALLY
|
||||
33 PFCTLC . . . . . . LITERALLY
|
||||
33 PFCTLD . . . . . . LITERALLY
|
||||
33 PFKEEP . . . . . . LITERALLY
|
||||
33 PFKERNAL . . . . . LITERALLY
|
||||
33 PFNOCTLS . . . . . LITERALLY
|
||||
33 PFPURE . . . . . . LITERALLY
|
||||
33 PFRAW. . . . . . . LITERALLY
|
||||
33 PFRESOURCE . . . . LITERALLY
|
||||
33 PFSYS. . . . . . . LITERALLY
|
||||
33 PFTABLE. . . . . . LITERALLY
|
||||
33 PFTEMPKEEP . . . . LITERALLY
|
||||
59 003EH 322 PLMSTART . . . . . PROCEDURE PUBLIC STACK=0008H
|
||||
55 0006H 8 PNAME. . . . . . . BYTE ARRAY(8) MEMBER(ABORTPB) 70
|
||||
29 PNAMSIZ. . . . . . LITERALLY
|
||||
37 002CH 2 PRET . . . . . . . WORD MEMBER(PD)
|
||||
37 0005H 1 PRIOR. . . . . . . BYTE MEMBER(PD)
|
||||
32 PSCIOWAIT. . . . . LITERALLY
|
||||
32 PSDELAY. . . . . . LITERALLY
|
||||
32 PSDQ . . . . . . . LITERALLY
|
||||
32 PSFLAGWAIT . . . . LITERALLY
|
||||
32 PSNQ . . . . . . . LITERALLY
|
||||
32 PSPOLL . . . . . . LITERALLY
|
||||
32 PSRUN. . . . . . . LITERALLY
|
||||
32 PSSLEEP. . . . . . LITERALLY
|
||||
32 PSSWAP . . . . . . LITERALLY
|
||||
32 PSTERM . . . . . . LITERALLY
|
||||
51 0002H 2 QADDR. . . . . . . WORD MEMBER(ABTQPB)
|
||||
40 QDSTRUCTURE. . . . LITERALLY 52
|
||||
47 QFDEV. . . . . . . LITERALLY
|
||||
43 QFHIDE . . . . . . LITERALLY
|
||||
42 QFKEEP . . . . . . LITERALLY 52
|
||||
41 QFMX . . . . . . . LITERALLY
|
||||
46 QFRPL. . . . . . . LITERALLY
|
||||
44 QFRSP. . . . . . . LITERALLY 52
|
||||
45 QFTABLE. . . . . . LITERALLY
|
||||
PL/M-86 COMPILER CCP/M-86 1.0, ABORT A PROGRAM - RSP PAGE 10
|
||||
|
||||
|
||||
39 QNAMSIZ. . . . . . LITERALLY 51 52
|
||||
48 QPBSTRUCTURE . . . LITERALLY 51
|
||||
37 0028H 4 RESERVD. . . . . . BYTE ARRAY(4) MEMBER(PD)
|
||||
38 0000H 2 RSPLINK. . . . . . WORD EXTERNAL(3) 62
|
||||
37 002EH 2 SCRATCH. . . . . . WORD MEMBER(PD)
|
||||
2 SECTORLEN. . . . . LITERALLY
|
||||
36 0002H 2 SEGMENT. . . . . . WORD MEMBER(PDPTR) 62
|
||||
37 0025H 1 SF3. . . . . . . . BYTE MEMBER(PD)
|
||||
37 0026H 1 SF4. . . . . . . . BYTE MEMBER(PD)
|
||||
37 0027H 1 SF5. . . . . . . . BYTE MEMBER(PD)
|
||||
37 0004H 1 STAT . . . . . . . BYTE MEMBER(PD)
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
50 0002H 129 TAIL . . . . . . . BYTE ARRAY(129) MEMBER(ABTCMD) 54 98
|
||||
55 0002H 2 TERM . . . . . . . WORD MEMBER(ABORTPB)
|
||||
37 0002H 2 THREAD . . . . . . WORD MEMBER(PD)
|
||||
2 TRUE . . . . . . . LITERALLY 64
|
||||
37 0010H 2 UDA. . . . . . . . WORD MEMBER(PD)
|
||||
37 0013H 1 USER . . . . . . . BYTE MEMBER(PD)
|
||||
37 001AH 2 WAIT . . . . . . . WORD MEMBER(PD)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0180H 384D
|
||||
CONSTANT AREA SIZE = 002EH 46D
|
||||
VARIABLE AREA SIZE = 016DH 365D
|
||||
MAXIMUM STACK SIZE = 0008H 8D
|
||||
304 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,147 @@
|
||||
$ title ('CCP/M-86 1.0, Abort a Program - RSP')
|
||||
$ compact
|
||||
abort:
|
||||
do;
|
||||
|
||||
/* Modified 3/15/83 to force an ATTACH console call */
|
||||
|
||||
$include (:f2:copyrt.lit)
|
||||
$include (:f2:comlit.lit)
|
||||
$include (:f2:mfunc.lit)
|
||||
|
||||
/**** Vax commands for generation:
|
||||
|
||||
$ ccpmsetup !Set up environment
|
||||
$ asm86 rhabt.a86 !Rsp Header ABorT
|
||||
$ plm86 rabt.plm 'p1' 'p2' 'p3' 'p4' optimize(3) debug !Rsp ABorT
|
||||
$ link86 rhabt.obj, rabt.obj to rabt.lnk
|
||||
$ loc86 rabt.lnk od(sm(code,dats,data,stack,const))-
|
||||
ad(sm(code(0), dats(10000h))) ss(stack(0)) to rabt.
|
||||
$ h86 rabt
|
||||
|
||||
**** Then, on a micro:
|
||||
A>vax rabt.h86 $fans
|
||||
A>gencmd rabt data[b1000]
|
||||
A>ren abort.rsp=rabt.cmd
|
||||
|
||||
**** Notes:
|
||||
The stack is declared in the assemble module, RSPABT.A86.
|
||||
The const(ants) come last to force hex generation.
|
||||
****/
|
||||
|
||||
|
||||
mon1:
|
||||
procedure (func,info) external;
|
||||
declare func byte;
|
||||
declare info address;
|
||||
end mon1;
|
||||
|
||||
mon2:
|
||||
procedure (func,info) byte external;
|
||||
declare func byte;
|
||||
declare info address;
|
||||
end mon2;
|
||||
|
||||
mon3:
|
||||
procedure (f,a) address external;
|
||||
dcl f byte, a address;
|
||||
end mon3;
|
||||
|
||||
patch: procedure public; /* dummy area for patching code segments */
|
||||
declare i address;
|
||||
/* first statement is 9 bytes, rest are 5 bytes */
|
||||
i=i+5; i=i+5; i=i+5; i=i+5; i=i+5;
|
||||
i=i+5; i=i+5; i=i+5; i=i+5; i=i+5; /* about 54 bytes */
|
||||
end patch;
|
||||
|
||||
$include (:f2:proces.lit)
|
||||
|
||||
dcl pd$pointer pointer;
|
||||
dcl pd$ptr structure (offset word, segment word) at(@pd$pointer);
|
||||
dcl pd based pd$pointer pd$structure;
|
||||
|
||||
dcl rsplink word external;
|
||||
|
||||
$include (:f2:qd.lit)
|
||||
|
||||
dcl abt$qd$buf (131) byte;
|
||||
dcl abt$cmd structure(
|
||||
pd address, tail (129) byte);
|
||||
dcl abt$qpb qpb$structure initial(0,0,0,1,.abt$cmd,'ABORT ');
|
||||
dcl abt$qd qd$structure initial (
|
||||
0,0,0,qf$keep + qf$rsp,'ABORT ',131,1,0,0,0,0,.abt$qd$buf);
|
||||
|
||||
dcl fcb (32) byte;
|
||||
dcl pfcb structure (
|
||||
filename address,
|
||||
fcbadr address) initial (.abt$cmd.tail, .fcb);
|
||||
|
||||
declare abort$pb structure (
|
||||
pd address,
|
||||
term address,
|
||||
cns byte,
|
||||
net byte,
|
||||
pname (8) byte) initial (
|
||||
0,00ffh,0,0,' ');
|
||||
|
||||
dcl i byte;
|
||||
dcl console word;
|
||||
dcl mpm$86 lit '1130h';
|
||||
|
||||
/*
|
||||
Main Program
|
||||
*/
|
||||
|
||||
plm$start:
|
||||
procedure public;
|
||||
|
||||
call mon1(m$makeq,.abt$qd); /* make ABORT queue */
|
||||
call mon1(m$openq,.abt$qpb); /* open it */
|
||||
pd$ptr.segment = rsplink;
|
||||
call mon1(m$setprior,200); /* back to the same as transients */
|
||||
|
||||
do while true;
|
||||
call mon1(m$readq,.abt$qpb);
|
||||
pd$ptr.offset = abt$cmd.pd; /* set console to same */
|
||||
call mon1(m$setcns, pd.cns); /* of who typed ABORT */
|
||||
abort$pb.cns = pd.cns;
|
||||
pfcb.filename = mon3(m$parse, .pfcb);
|
||||
/* get name of program to abort */
|
||||
call move (8,.fcb(1),.abort$pb.pname);
|
||||
/* fcb(9)='$'; DEBUG
|
||||
call mon1(m$prtbuf, .fcb(1)); */
|
||||
if pfcb.filename <> 0 then /* console number specified */
|
||||
do;
|
||||
pfcb.filename = mon3(m$parse, .pfcb);
|
||||
i = 1; console = 0;
|
||||
do while fcb(i) <> ' ' and i < 4;
|
||||
if (fcb(i) := fcb(i) - '0') <= 9 then
|
||||
do;
|
||||
console = fcb(i) + 10 * console;
|
||||
i = i + 1;
|
||||
end;
|
||||
else
|
||||
i = 255; /* non - numeric */
|
||||
end;
|
||||
if console > 253 or i = 255 then
|
||||
do;
|
||||
call mon1(m$prtbuf, .(cr,lf, 'Illegal Console, Use 0-253 $'));
|
||||
abort$pb.cns = 0ffh;
|
||||
end;
|
||||
else
|
||||
abort$pb.cns = low(console);
|
||||
end;
|
||||
|
||||
if abort$pb.cns <> 0ffh then
|
||||
if mon2(m$abort, .abort$pb) = 0ffh then
|
||||
do;
|
||||
call mon1(m$prtbuf, .(cr,lf, 'Abort Failed.','$'));
|
||||
end;
|
||||
/* abort first PD found with same name and console */
|
||||
/* consistent with MP/M-80 II but not MP/M 1.x */
|
||||
call mon1(m$attach,0); /* make sure we own the console before */
|
||||
call mon1(m$detach, 0); /* calling detach */
|
||||
pfcb.filename = .abt$cmd.tail;
|
||||
end;
|
||||
end plmstart;
|
||||
end abort;
|
||||
@@ -0,0 +1,101 @@
|
||||
; Code and Data Interface for ABORT.RSP
|
||||
; August 10, 1981
|
||||
; July 27, 1982 (updated)
|
||||
; Jan 1983 whf - added reg save to xdos
|
||||
; Mar 1983 dh - shrunk to resonable size
|
||||
|
||||
name rhabt ;Rsp Header ABorT
|
||||
|
||||
cgroup group code
|
||||
dgroup group dats
|
||||
public xdos,mon1,mon2,mon3,mon4
|
||||
public rsplink
|
||||
extrn plmstart:near
|
||||
|
||||
assume cs:cgroup,ds:dgroup
|
||||
|
||||
dats segment 'DATA'
|
||||
org 0
|
||||
rsphdr_len equ 16
|
||||
pd_len equ 30H
|
||||
uda_len equ 100H
|
||||
rsp_top equ 0
|
||||
rsp_pd equ rsp_top + rsphdr_len
|
||||
rsp_uda equ rsp_pd + pd_len
|
||||
rsp_bottom equ rsp_uda + uda_len
|
||||
org rsp_top
|
||||
;RSP header
|
||||
rsplink dw 0 ;becomes system data page paragraph
|
||||
sdatvar dw 0
|
||||
ncopies db 0
|
||||
dw 0,0,0,0, 0
|
||||
db 0
|
||||
org rsp_pd
|
||||
pd dw 0,0 ;link fields
|
||||
db 0 ;status
|
||||
db 190 ;priority
|
||||
dw 3 ;flags - system and keep
|
||||
db 'ABORT ' ;name
|
||||
dw rsp_uda/10h ;uda paragraph
|
||||
db 0,0 ;disk,user
|
||||
db 0,0 ;ldisk,luser
|
||||
dw 0 ;puremem - not re-entrant
|
||||
;rest of pd
|
||||
|
||||
org rsp_uda ;start of uda
|
||||
uda dw 0
|
||||
dw 0 ;DMA must be explicitly set
|
||||
dw 0,0,0,0, 0,0,0,0, 0,0,0,0
|
||||
dw 0,0,0,0, 0,0,0,0, 0,0,0,0
|
||||
dw offset stk_top
|
||||
org rsp_uda + 60H
|
||||
db 1 ;insys = 1, always use UDA stack
|
||||
db 0
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;62
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;6A
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;72
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;7A
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;82
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;8A
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;92
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;9A
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;A2
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;AA
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;B2
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;BA
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;C2
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;CA
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;D2
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;DA
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;E2
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;EA
|
||||
dw 0cccch,0cccch,0cccch,0cccch ;F2
|
||||
stk_top dw plmstart,0,0 ;initial IRET
|
||||
|
||||
org rsp_bottom
|
||||
|
||||
datsend equ offset $
|
||||
dats ends
|
||||
|
||||
code segment public 'CODE'
|
||||
org 0
|
||||
|
||||
db 'COPYRIGHT (C) 1982,'
|
||||
db ' DIGITAL RESEARCH '
|
||||
|
||||
xdos proc
|
||||
push bp
|
||||
mov bp,sp
|
||||
mov dx,[bp+4]
|
||||
mov cx,[bp+6]
|
||||
int 224
|
||||
pop bp
|
||||
ret 4
|
||||
xdos endp
|
||||
|
||||
mon1 equ xdos
|
||||
mon2 equ xdos
|
||||
mon3 equ xdos
|
||||
mon4 equ xdos
|
||||
code ends
|
||||
end
|
||||
@@ -0,0 +1,221 @@
|
||||
MCS-86 MACRO ASSEMBLER RHABT PAGE 1
|
||||
|
||||
|
||||
ISIS-II MCS-86 MACRO ASSEMBLER V2.1 ASSEMBLY OF MODULE RHABT
|
||||
OBJECT MODULE PLACED IN :F0:RHABT.OBJ
|
||||
ASSEMBLER INVOKED BY: :F0: RHABT.A86
|
||||
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
1 ; Code and Data Interface for ABORT.RSP
|
||||
2 ; August 10, 1981
|
||||
3 ; July 27, 1982 (updated)
|
||||
4 ; Jan 1983 whf - added reg save to xdos
|
||||
5 ; Mar 1983 dh - shrunk to resonable size
|
||||
6
|
||||
7 name rhabt ;Rsp Header ABorT
|
||||
8
|
||||
9 cgroup group code
|
||||
10 dgroup group dats
|
||||
11 public xdos,mon1,mon2,mon3,mon4
|
||||
12 public rsplink
|
||||
13 extrn plmstart:near
|
||||
14
|
||||
15 assume cs:cgroup,ds:dgroup
|
||||
16
|
||||
---- 17 dats segment 'DATA'
|
||||
0000 18 org 0
|
||||
0010 19 rsphdr_len equ 16
|
||||
0030 20 pd_len equ 30H
|
||||
0100 21 uda_len equ 100H
|
||||
0000 22 rsp_top equ 0
|
||||
0010 23 rsp_pd equ rsp_top + rsphdr_len
|
||||
0040 24 rsp_uda equ rsp_pd + pd_len
|
||||
0140 25 rsp_bottom equ rsp_uda + uda_len
|
||||
0000 26 org rsp_top
|
||||
27 ;RSP header
|
||||
0000 0000 28 rsplink dw 0 ;becomes system data page paragraph
|
||||
0002 0000 29 sdatvar dw 0
|
||||
0004 00 30 ncopies db 0
|
||||
0005 0000 31 dw 0,0,0,0, 0
|
||||
0007 0000
|
||||
0009 0000
|
||||
000B 0000
|
||||
000D 0000
|
||||
000F 00 32 db 0
|
||||
0010 33 org rsp_pd
|
||||
0010 0000 34 pd dw 0,0 ;link fields
|
||||
0012 0000
|
||||
0014 00 35 db 0 ;status
|
||||
0015 BE 36 db 190 ;priority
|
||||
0016 0300 37 dw 3 ;flags - system and keep
|
||||
0018 41424F52542020 38 db 'ABORT ' ;name
|
||||
20
|
||||
0020 0400 39 dw rsp_uda/10h ;uda paragraph
|
||||
0022 00 40 db 0,0 ;disk,user
|
||||
0023 00
|
||||
0024 00 41 db 0,0 ;ldisk,luser
|
||||
0025 00
|
||||
0026 0000 42 dw 0 ;puremem - not re-entrant
|
||||
MCS-86 MACRO ASSEMBLER RHABT PAGE 2
|
||||
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
43 ;rest of pd
|
||||
44
|
||||
0040 45 org rsp_uda ;start of uda
|
||||
0040 0000 46 uda dw 0
|
||||
0042 0000 47 dw 0 ;DMA must be explicitly set
|
||||
0044 0000 48 dw 0,0,0,0, 0,0,0,0, 0,0,0,0
|
||||
0046 0000
|
||||
0048 0000
|
||||
004A 0000
|
||||
004C 0000
|
||||
004E 0000
|
||||
0050 0000
|
||||
0052 0000
|
||||
0054 0000
|
||||
0056 0000
|
||||
0058 0000
|
||||
005A 0000
|
||||
005C 0000 49 dw 0,0,0,0, 0,0,0,0, 0,0,0,0
|
||||
005E 0000
|
||||
0060 0000
|
||||
0062 0000
|
||||
0064 0000
|
||||
0066 0000
|
||||
0068 0000
|
||||
006A 0000
|
||||
006C 0000
|
||||
006E 0000
|
||||
0070 0000
|
||||
0072 0000
|
||||
0074 3A01 50 dw offset stk_top
|
||||
00A0 51 org rsp_uda + 60H
|
||||
00A0 01 52 db 1 ;insys = 1, always use UDA stack
|
||||
00A1 00 53 db 0
|
||||
00A2 CCCC 54 dw 0cccch,0cccch,0cccch,0cccch ;62
|
||||
00A4 CCCC
|
||||
00A6 CCCC
|
||||
00A8 CCCC
|
||||
00AA CCCC 55 dw 0cccch,0cccch,0cccch,0cccch ;6A
|
||||
00AC CCCC
|
||||
00AE CCCC
|
||||
00B0 CCCC
|
||||
00B2 CCCC 56 dw 0cccch,0cccch,0cccch,0cccch ;72
|
||||
00B4 CCCC
|
||||
00B6 CCCC
|
||||
00B8 CCCC
|
||||
00BA CCCC 57 dw 0cccch,0cccch,0cccch,0cccch ;7A
|
||||
00BC CCCC
|
||||
00BE CCCC
|
||||
00C0 CCCC
|
||||
00C2 CCCC 58 dw 0cccch,0cccch,0cccch,0cccch ;82
|
||||
00C4 CCCC
|
||||
00C6 CCCC
|
||||
00C8 CCCC
|
||||
00CA CCCC 59 dw 0cccch,0cccch,0cccch,0cccch ;8A
|
||||
00CC CCCC
|
||||
MCS-86 MACRO ASSEMBLER RHABT PAGE 3
|
||||
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
00CE CCCC
|
||||
00D0 CCCC
|
||||
00D2 CCCC 60 dw 0cccch,0cccch,0cccch,0cccch ;92
|
||||
00D4 CCCC
|
||||
00D6 CCCC
|
||||
00D8 CCCC
|
||||
00DA CCCC 61 dw 0cccch,0cccch,0cccch,0cccch ;9A
|
||||
00DC CCCC
|
||||
00DE CCCC
|
||||
00E0 CCCC
|
||||
00E2 CCCC 62 dw 0cccch,0cccch,0cccch,0cccch ;A2
|
||||
00E4 CCCC
|
||||
00E6 CCCC
|
||||
00E8 CCCC
|
||||
00EA CCCC 63 dw 0cccch,0cccch,0cccch,0cccch ;AA
|
||||
00EC CCCC
|
||||
00EE CCCC
|
||||
00F0 CCCC
|
||||
00F2 CCCC 64 dw 0cccch,0cccch,0cccch,0cccch ;B2
|
||||
00F4 CCCC
|
||||
00F6 CCCC
|
||||
00F8 CCCC
|
||||
00FA CCCC 65 dw 0cccch,0cccch,0cccch,0cccch ;BA
|
||||
00FC CCCC
|
||||
00FE CCCC
|
||||
0100 CCCC
|
||||
0102 CCCC 66 dw 0cccch,0cccch,0cccch,0cccch ;C2
|
||||
0104 CCCC
|
||||
0106 CCCC
|
||||
0108 CCCC
|
||||
010A CCCC 67 dw 0cccch,0cccch,0cccch,0cccch ;CA
|
||||
010C CCCC
|
||||
010E CCCC
|
||||
0110 CCCC
|
||||
0112 CCCC 68 dw 0cccch,0cccch,0cccch,0cccch ;D2
|
||||
0114 CCCC
|
||||
0116 CCCC
|
||||
0118 CCCC
|
||||
011A CCCC 69 dw 0cccch,0cccch,0cccch,0cccch ;DA
|
||||
011C CCCC
|
||||
011E CCCC
|
||||
0120 CCCC
|
||||
0122 CCCC 70 dw 0cccch,0cccch,0cccch,0cccch ;E2
|
||||
0124 CCCC
|
||||
0126 CCCC
|
||||
0128 CCCC
|
||||
012A CCCC 71 dw 0cccch,0cccch,0cccch,0cccch ;EA
|
||||
012C CCCC
|
||||
012E CCCC
|
||||
0130 CCCC
|
||||
0132 CCCC 72 dw 0cccch,0cccch,0cccch,0cccch ;F2
|
||||
0134 CCCC
|
||||
0136 CCCC
|
||||
0138 CCCC
|
||||
013A 0000 E 73 stk_top dw plmstart,0,0 ;initial IRET
|
||||
MCS-86 MACRO ASSEMBLER RHABT PAGE 4
|
||||
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
013C 0000
|
||||
013E 0000
|
||||
74
|
||||
0140 75 org rsp_bottom
|
||||
76
|
||||
0140 77 datsend equ offset $
|
||||
---- 78 dats ends
|
||||
79
|
||||
---- 80 code segment public 'CODE'
|
||||
0000 81 org 0
|
||||
82
|
||||
0000 434F5059524947 83 db 'COPYRIGHT (C) 1982,'
|
||||
48542028432920
|
||||
313938322C
|
||||
0013 20444947495441 84 db ' DIGITAL RESEARCH '
|
||||
4C205245534541
|
||||
52434820
|
||||
85
|
||||
0025 86 xdos proc
|
||||
0025 55 87 push bp
|
||||
0026 8BEC 88 mov bp,sp
|
||||
0028 8B5604 89 mov dx,[bp+4]
|
||||
002B 8B4E06 90 mov cx,[bp+6]
|
||||
002E CDE0 91 int 224
|
||||
0030 5D 92 pop bp
|
||||
0031 C20400 93 ret 4
|
||||
94 xdos endp
|
||||
95
|
||||
0025 96 mon1 equ xdos
|
||||
0025 97 mon2 equ xdos
|
||||
0025 98 mon3 equ xdos
|
||||
0025 99 mon4 equ xdos
|
||||
---- 100 code ends
|
||||
101 end
|
||||
|
||||
ASSEMBLY COMPLETE, NO ERRORS FOUND
|
||||
@@ -0,0 +1,7 @@
|
||||
ASM86 status: used old version, ready for QA 10/25/82
|
||||
ASM86 notes
|
||||
10/20/82
|
||||
I got the ASM86.H86 file from [CCPMPC.VAX.ASM86]: source files are still
|
||||
in that account.
|
||||
Used: gcd asm86 data[b4ad,m44e,xfff]
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,5 @@
|
||||
--3X[zP
|
||||
&6Si COPYRIGHT (C) DIGITAL RESEARCH, 1981 10/01/81 XZYPM`C-z.<6l{<6lhA8BPh h[vPPXs
|
||||
8bPhuhbhh&F2 21~@"21<4 CQc'khkh$kh'k\afhhE v3vPPXs,hqPXsFvF21kdFy3h_?0PhhPhkK
|
||||
217Qc'Hhdkhkkhwky9>CEhI{tUlh*hkhthY]CUlhhr
|
||||
h]CUlhevPPXr-h'8V
|
||||
@@ -0,0 +1,66 @@
|
||||
$ !
|
||||
$ ! Compile, link, locate and generate hex files containing
|
||||
$ ! ASM86 for
|
||||
$ ! Concurrent CP/M-86: vers IBM PC 1.0
|
||||
$ ! uses old PL/M-86 compiler
|
||||
$ !
|
||||
$ set verify
|
||||
$ assign 'f$directory()' f1 ! force TMP files to local dir
|
||||
$ oldplm86 mainp.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 cmac1.plm debug optimize(2) 'p1'
|
||||
$ oldplm86 cmac2.plm debug optimize(2) 'p1'
|
||||
$ oldplm86 cmac3.plm debug optimize(2) 'p1'
|
||||
$ oldplm86 cmac4.plm debug optimize(2) 'p1'
|
||||
$ oldplm86 cmac5.plm debug optimize(2) 'p1'
|
||||
$ oldplm86 mnem1.plm debug optimize(2) 'p1'
|
||||
$ oldplm86 mnem2.plm debug optimize(2) 'p1'
|
||||
$ oldplm86 mnem3.plm debug optimize(2) 'p1'
|
||||
$ oldplm86 mnem4.plm debug optimize(2) 'p1'
|
||||
$ oldplm86 symb.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 io.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 subr1.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 subr2.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 files.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 scan.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 print.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 predef.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 ermod.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 text.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 outp.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 expr.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 brexpr.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 pseud1.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 pseud2.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 cmsubr.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 instr.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 dline.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 global.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 cm.plm debug optimize(2) 'p1' xref
|
||||
$ oldplm86 cm2.plm debug optimize(2) 'p1' xref
|
||||
$ oldasm86 c86lnk.asm debug
|
||||
$ oldlink86 cmac1.obj,cmac2.obj,cmac3.obj,cmac4.obj,cmac5.obj to f11.mod
|
||||
$ oldlink86 mnem1.obj,mnem2.obj,mnem3.obj,mnem4.obj,symb.obj to f12.mod
|
||||
$ oldlink86 io.obj,subr1.obj,subr2.obj,files.obj,scan.obj to f13.mod
|
||||
$ oldlink86 print.obj,predef.obj,ermod.obj,text.obj,outp.obj to f14.mod
|
||||
$ oldlink86 expr.obj,brexpr.obj,pseud1.obj,pseud2.obj,cmsubr.obj to f15.mod
|
||||
$ oldlink86 instr.obj,dline.obj,global.obj,cm.obj,cm2.obj to f16.mod
|
||||
$ oldlink86 f11.mod,f12.mod,f13.mod to f21.mod
|
||||
$ oldlink86 f14.mod,f15.mod,f16.mod to f22.mod
|
||||
$ oldlink86 c86lnk.obj,mainp.obj,f21.mod,f22.mod to asm86.mod
|
||||
$ oldloc86 asm86.mod nopublics ad(sm(code(0))) od(sm(code,const,stack))
|
||||
$ oldh86 asm86
|
||||
$ assign [ccpmpc.vax.common] f1
|
||||
$ ren asm86.mp1 asm86.111
|
||||
$ del *.mp1;*
|
||||
$ ren asm86.111 asm86.mp1
|
||||
$ pclean
|
||||
! on micro under cp/m or mp/m
|
||||
!
|
||||
! determine BBB and MMM from asm86.mp2 file
|
||||
! BBB = start of const segment / 16
|
||||
! MMM = (start of memory segment - start of const segment)/ 16 + 100h
|
||||
! (4K for sysmbol table)
|
||||
!
|
||||
! gencmd asm86 data[bBBB,mMMM,xfff]
|
||||
! which turns out to be:
|
||||
! gencmd asm86 data[4ad, m44e, xfff]
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,68 @@
|
||||
|
||||
|
||||
File: m:ermod.plm CROSS REFERENCE Page 1
|
||||
|
||||
|
||||
**** CROSS REFERENCE *****
|
||||
"ERRORS" 22
|
||||
' ' 81
|
||||
' ** NEAR: "' 80
|
||||
'"' 127
|
||||
'** ERROR NO:' 79
|
||||
'DOUBLE DEFINED LABEL' 43
|
||||
'DOUBLE DEFINED SYMBOL - ' 56
|
||||
'DOUBLE DEFINED VARIABLE' 42
|
||||
'ERROR IN CODEMACROBUILDING' 65
|
||||
'ERROR MESSAGE MODULE' 1
|
||||
'FILE NAME SYNTAX ERROR' 59
|
||||
'GARBAGE AT END OF LINE - IGNORED' 45
|
||||
'ILLEGAL "IF" OPERAND - "IF" IGNORED' 52
|
||||
'ILLEGAL EXPRESSION ELEMENT' 61
|
||||
'ILLEGAL FIRST ITEM' 39
|
||||
'ILLEGAL INSTRUCTION OPERANDS' 47
|
||||
'ILLEGAL PSEUDO INSTRUCTION' 41
|
||||
'ILLEGAL PSEUDO OPERAND' 50
|
||||
'INSTRUCTION NOT IN CODE SEGMENT' 58
|
||||
'LABEL OUT OF RANGE' 63
|
||||
'MISSING INSTRUCTION' 48
|
||||
'MISSING PSEUDO INSTRUCTION' 40
|
||||
'MISSING SEGMENT INFORMATION IN OPERAND' 64
|
||||
'MISSING TYPE INFORMATION IN OPERAND(S)' 62
|
||||
'NEGLECTED' 55
|
||||
'NESTED "IF" ILLEGAL - "IF" IGNORED' 51
|
||||
'NESTED INCLUDE NOT ALLOWED' 60
|
||||
'NO MATCHING "IF" FOR "ENDIF"' 53
|
||||
'OPERAND(S) MISMATCH INSTRUCTION' 46
|
||||
'SYMBOL ILLEGALLY FORWARD REFERENCED - ' 54
|
||||
'TREATED AS UNDEFINED' 57
|
||||
'UNDEFINED ELEMENT OF EXPRESSION' 49
|
||||
'UNDEFINED INSTRUCTION' 44
|
||||
**** end cross reference ***
|
||||
|
||||
|
||||
File: m:text.plm CROSS REFERENCE Page 1
|
||||
|
||||
|
||||
**** CROSS REFERENCE *****
|
||||
"no" 16
|
||||
"yes" 16
|
||||
' PAGE' 26
|
||||
' USER BREAK. OK(Y/N)? ' 39
|
||||
'. USE FACTOR: ' 29
|
||||
'CANNOT CLOSE' 37
|
||||
'CP/M 8086 ASSEMBLER VER 1.1' 30
|
||||
'CP/M ASM86 1.1 SOURCE: ' 25
|
||||
'DIRECTORY FULL' 36
|
||||
'DISK FULL' 35
|
||||
'DISK READ ERROR' 34
|
||||
'END OF ASSEMBLY. ' 27
|
||||
'END OF PASS 1' 40
|
||||
'END OF PASS 2' 41
|
||||
'N' 19
|
||||
'NO FILE' 33
|
||||
'NUMBER OF ERRORS: ' 28
|
||||
'PARAMETER ERROR' 32
|
||||
'SYMBOL TABLE OVERFLOW' 38
|
||||
'TEXT MODULE' 1
|
||||
'Y' 18
|
||||
**** end cross reference ***
|
||||
@@ -0,0 +1,55 @@
|
||||
$ set def [frank.mpm86.asm86]
|
||||
$ plm86 mainp.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 cmac1.plm debug optimize(2) 'p1'
|
||||
$ plm86 cmac2.plm debug optimize(2) 'p1'
|
||||
$ plm86 cmac3.plm debug optimize(2) 'p1'
|
||||
$ plm86 cmac4.plm debug optimize(2) 'p1'
|
||||
$ plm86 cmac5.plm debug optimize(2) 'p1'
|
||||
$ plm86 mnem1.plm debug optimize(2) 'p1'
|
||||
$ plm86 mnem2.plm debug optimize(2) 'p1'
|
||||
$ plm86 mnem3.plm debug optimize(2) 'p1'
|
||||
$ plm86 mnem4.plm debug optimize(2) 'p1'
|
||||
$ plm86 symb.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 io.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 subr1.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 subr2.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 files.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 scan.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 print.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 predef.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 ermod.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 text.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 outp.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 expr.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 brexpr.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 pseud1.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 pseud2.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 cmsubr.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 instr.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 dline.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 global.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 cm.plm debug optimize(2) 'p1' xref
|
||||
$ plm86 cm2.plm debug optimize(2) 'p1' xref
|
||||
$ asm86 c86lnk.asm debug
|
||||
$ link86 cmac1.obj,cmac2.obj,cmac3.obj,cmac4.obj,cmac5.obj to f11.mod
|
||||
$ link86 mnem1.obj,mnem2.obj,mnem3.obj,mnem4.obj,symb.obj to f12.mod
|
||||
$ link86 io.obj,subr1.obj,subr2.obj,files.obj,scan.obj to f13.mod
|
||||
$ link86 print.obj,predef.obj,ermod.obj,text.obj,outp.obj to f14.mod
|
||||
$ link86 expr.obj,brexpr.obj,pseud1.obj,pseud2.obj,cmsubr.obj to f15.mod
|
||||
$ link86 instr.obj,dline.obj,global.obj,cm.obj,cm2.obj to f16.mod
|
||||
$ link86 f11.mod,f12.mod,f13.mod to f21.mod
|
||||
$ link86 f14.mod,f15.mod,f16.mod to f22.mod
|
||||
$ link86 c86lnk.obj,mainp.obj,f21.mod,f22.mod,plm86.lib to asm86.mod
|
||||
$ loc86 asm86.mod nopublics ad(sm(code(0))) od(sm(code,const,stack))
|
||||
$ h86 asm86
|
||||
! on micro under cp/m or mp/m
|
||||
!
|
||||
! determine BBB and MMM from asm86.mp2 file
|
||||
! BBB = start of const segment / 16
|
||||
! MMM = (start of memory segment - start of const segment)/ 16 + 100h
|
||||
! (4K for sysmbol table)
|
||||
!
|
||||
! gencmd asm86 data[bBBB,mMMM,xfff]
|
||||
! which turns out to be:
|
||||
! gencmd asm86 data[4ad, m44e, xfff]
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
/*********** "BNF"-expression syntax ************/
|
||||
/*
|
||||
E::= E xor A !! E or A !! A
|
||||
A::= A and N !! N
|
||||
N::= not N !! R
|
||||
R::= P eq P !! P lt P !! P le P !! P gt P !! P ge P !! P ne P !! P
|
||||
P::= P + T !! P - T !! T
|
||||
T::= T * M !! T / M !! T mod M !! T shl M !! T shr M !! M
|
||||
M::= - M !! + M !! S
|
||||
S::= <over>: F !! F
|
||||
F::= F ptr B !! seg B !! offset B !! type B !!
|
||||
length B !! last B !! B
|
||||
B::= ( E ) !! [ bracket-expression ] !! I
|
||||
I::= varaible !! . number !! number !! label !! string
|
||||
<over>::= segment register
|
||||
(stringlength < 3)
|
||||
|
||||
*/
|
||||
@@ -0,0 +1,5 @@
|
||||
--3X[zP
|
||||
&6Si COPYRIGHT (C) DIGITAL RESEARCH, 1981 10/01/81 XZYPM`C-z.<6l{<6lhA8BPh h[vPPXs
|
||||
8bPhuhbhh&F2 21~@"21<4 CQc'khkh$kh'k\afhhE v3vPPXs,hqPXsFvF21kdFy3h_?0PhhPhkK
|
||||
217Qc'Hhdkhkkhwky9>CEhI{tUlh*hkhthY]CUlhhr
|
||||
h]CUlhevPPXr-h'8V
|
||||
@@ -0,0 +1,263 @@
|
||||
PL/M-86 COMPILER BRACKET EXPRESSION 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE BREXPR
|
||||
OBJECT MODULE PLACED IN BREXPR.OBJ
|
||||
COMPILER INVOKED BY: :F0: BREXPR.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title ('BRACKET EXPRESSION')
|
||||
1 brexpr:
|
||||
|
||||
/*
|
||||
|
||||
modified 4/13/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
do;
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:brexpr.x86)
|
||||
= $nolist
|
||||
$include (:f1:ermod.ext)
|
||||
= $nolist
|
||||
$include (:f1:exglob.ext)
|
||||
= $nolist
|
||||
PL/M-86 COMPILER BRACKET EXPRESSION 10/5/81 PAGE 2
|
||||
|
||||
|
||||
$eject
|
||||
|
||||
/* compute index expression within brackets */
|
||||
|
||||
17 1 bracketexpr: proc(pt) byte public;
|
||||
18 2 dcl pt address,oper based pt operandstruc,
|
||||
(firsttype,firstreg,lasttype,lastreg) byte,
|
||||
baseregi lit '0',indexregi lit'1';
|
||||
|
||||
19 2 regtyp: proc(pt1,pt2) byte;
|
||||
20 3 dcl (pt1,pt2) address,(typ based pt1,regi based pt2) byte;
|
||||
21 3 if (token.type=reg) and (token.descr=wrd) then$do
|
||||
23 4 typ=baseregi;
|
||||
24 4 regi=token.value;
|
||||
25 4 if (regi=rbp) or (regi=rbx) then return true;
|
||||
27 4 typ=indexregi;
|
||||
28 4 if (regi=rsi) or (regi=rdi) then return true;
|
||||
end$if;
|
||||
31 3 return false;
|
||||
32 3 end regtyp;
|
||||
|
||||
33 2 setoperflags: proc (pt1,pt2);
|
||||
34 3 dcl (pt1,pt2) address,(typ based pt1,regi based pt2) byte;
|
||||
35 3 if typ=indexregi then$do
|
||||
37 4 oper.sflag=oper.sflag or iregbit;
|
||||
38 4 IF REGI = RDI THEN OPER.BASEINDEX = OPER.BASEINDEX OR INDEXREGBIT;
|
||||
else$do
|
||||
42 4 oper.sflag=oper.sflag or bregbit;
|
||||
43 4 IF REGI = RBP THEN OPER.BASEINDEX = OPER.BASEINDEX OR BASEREGBIT;
|
||||
end$if;
|
||||
46 3 end setoperflags;
|
||||
|
||||
47 2 if not regtyp(.firsttype,.firstreg) then return false;
|
||||
49 2 call setoperflags(.firsttype,.firstreg);
|
||||
50 2 call scan;
|
||||
51 2 if specialtoken('+') then$do
|
||||
53 3 call scan;
|
||||
54 3 if not regtyp(.lasttype,.lastreg) then return false;
|
||||
56 3 if firsttype=lasttype then return false;
|
||||
58 3 call setoperflags(.lasttype,.lastreg);
|
||||
59 3 call scan;
|
||||
60 3 end$if;
|
||||
61 2 if not specialtoken(rightbracket) then return false;
|
||||
63 2 call scan;
|
||||
64 2 if (oper.sflag and segmbit) = 0 then$do
|
||||
66 3 if oper.stype=number then$do
|
||||
68 4 oper.baseindex=oper.baseindex or nooverridebit;
|
||||
69 4 end$if;
|
||||
end$if;
|
||||
71 2 oper.stype=variable;
|
||||
72 2 return true;
|
||||
73 2 end bracketexpr;
|
||||
|
||||
74 1 end$module brexpr;
|
||||
PL/M-86 COMPILER BRACKET EXPRESSION 10/5/81 PAGE 3
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
16 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(11)
|
||||
16 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(12)
|
||||
2 ADDR . . . . . . . LITERALLY 16 18
|
||||
16 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
|
||||
18 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPER) 39 44 68
|
||||
7 BASEREGBIT . . . . LITERALLY 44
|
||||
7 BASEREGCOUNT . . . LITERALLY
|
||||
18 BASEREGI . . . . . LITERALLY 23
|
||||
17 0000H 148 BRACKETEXPR. . . . PROCEDURE BYTE PUBLIC STACK=000AH
|
||||
7 BREGBIT. . . . . . LITERALLY 42
|
||||
7 BREGCOUNT. . . . . LITERALLY
|
||||
1 0000H BREXPR . . . . . . PROCEDURE STACK=0000H
|
||||
4 BYT. . . . . . . . LITERALLY
|
||||
16 0000H 2 CIP. . . . . . . . WORD EXTERNAL(3)
|
||||
3 CODE . . . . . . . LITERALLY
|
||||
2 CR . . . . . . . . LITERALLY
|
||||
16 0000H 1 CSEGSPEC . . . . . BYTE EXTERNAL(6)
|
||||
16 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(4)
|
||||
16 0000H 2 CSEGVALUE. . . . . WORD EXTERNAL(5)
|
||||
16 0000H 2 CURDSEG. . . . . . WORD EXTERNAL(8)
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
3 DELETEDSYMB. . . . LITERALLY
|
||||
16 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN) 21
|
||||
3 DOUBLEDEFINED. . . LITERALLY
|
||||
16 0000H 1 DSPEC. . . . . . . BYTE EXTERNAL(7)
|
||||
4 DWRD . . . . . . . LITERALLY
|
||||
2 ELSEDO . . . . . . LITERALLY 39
|
||||
2 ENDCASE. . . . . . LITERALLY
|
||||
2 ENDDO. . . . . . . LITERALLY
|
||||
2 ENDFOREVER . . . . LITERALLY
|
||||
2 ENDIF. . . . . . . LITERALLY 29 44 69
|
||||
2 ENDMODULE. . . . . LITERALLY
|
||||
2 ENDOFFILE. . . . . LITERALLY
|
||||
2 ENDPROC. . . . . . LITERALLY
|
||||
2 ENDWHILE . . . . . LITERALLY
|
||||
13 0000H ERRMSG . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H
|
||||
13 0000H 1 ERRNO. . . . . . . BYTE PARAMETER 14
|
||||
2 FALSE. . . . . . . LITERALLY 31 48 55 57 62
|
||||
18 0003H 1 FIRSTREG . . . . . BYTE 47 49
|
||||
18 0002H 1 FIRSTTYPE. . . . . BYTE 47 49 56
|
||||
2 FOREVER. . . . . . LITERALLY
|
||||
2 FORMFEED . . . . . LITERALLY
|
||||
3 IDENT. . . . . . . LITERALLY
|
||||
7 INDEXREGBIT. . . . LITERALLY 39
|
||||
7 INDEXREGCOUNT. . . LITERALLY
|
||||
18 INDEXREGI. . . . . LITERALLY 27 35
|
||||
2 INIT . . . . . . . LITERALLY
|
||||
7 IREGBIT. . . . . . LITERALLY 37
|
||||
7 IREGCOUNT. . . . . LITERALLY
|
||||
PL/M-86 COMPILER BRACKET EXPRESSION 10/5/81 PAGE 4
|
||||
|
||||
|
||||
3 LAB. . . . . . . . LITERALLY
|
||||
18 0005H 1 LASTREG. . . . . . BYTE 54 58
|
||||
18 0004H 1 LASTTYPE . . . . . BYTE 54 56 58
|
||||
6 LEFTBRACKET. . . . LITERALLY
|
||||
16 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
|
||||
18 0000H 2 LENGTH . . . . . . WORD MEMBER(OPER)
|
||||
2 LF . . . . . . . . LITERALLY
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4 5 6 7 18
|
||||
|
||||
3 NEGLECTED. . . . . LITERALLY
|
||||
16 0000H 1 NEXTCH . . . . . . BYTE EXTERNAL(10)
|
||||
4 NIL. . . . . . . . LITERALLY
|
||||
16 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(13)
|
||||
7 NOOVERCOUNT. . . . LITERALLY
|
||||
7 NOOVERRIDEBIT. . . LITERALLY 68
|
||||
3 NUMBER . . . . . . LITERALLY 66
|
||||
6 OAND . . . . . . . LITERALLY
|
||||
6 OEQ. . . . . . . . LITERALLY
|
||||
16 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
|
||||
18 0006H 2 OFFSET . . . . . . WORD MEMBER(OPER)
|
||||
6 OGE. . . . . . . . LITERALLY
|
||||
6 OGT. . . . . . . . LITERALLY
|
||||
6 OLAST. . . . . . . LITERALLY
|
||||
6 OLE. . . . . . . . LITERALLY
|
||||
6 OLENGTH. . . . . . LITERALLY
|
||||
6 OLT. . . . . . . . LITERALLY
|
||||
6 OMOD . . . . . . . LITERALLY
|
||||
6 ONE. . . . . . . . LITERALLY
|
||||
6 ONOT . . . . . . . LITERALLY
|
||||
6 OOFFSET. . . . . . LITERALLY
|
||||
6 OOR. . . . . . . . LITERALLY
|
||||
18 0000H 9 OPER . . . . . . . STRUCTURE BASED(PT) 37 39 42 44 64
|
||||
66 68 71
|
||||
16 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(14)
|
||||
7 OPERANDSTRUC . . . LITERALLY 16 18
|
||||
3 OPERATOR . . . . . LITERALLY
|
||||
6 OPTR . . . . . . . LITERALLY
|
||||
6 OSEG . . . . . . . LITERALLY
|
||||
6 OSHL . . . . . . . LITERALLY
|
||||
6 OSHORT . . . . . . LITERALLY
|
||||
6 OSHR . . . . . . . LITERALLY
|
||||
6 OTYPE. . . . . . . LITERALLY
|
||||
6 OXOR . . . . . . . LITERALLY
|
||||
2 PROC . . . . . . . LITERALLY 8 10 13 17 19 33
|
||||
3 PSEUDO . . . . . . LITERALLY
|
||||
17 0000H 2 PT . . . . . . . . WORD PARAMETER 18 37 39 42 44 64
|
||||
66 68 71
|
||||
19 0006H 2 PT1. . . . . . . . WORD PARAMETER AUTOMATIC 20 23 27
|
||||
33 0006H 2 PT1. . . . . . . . WORD PARAMETER AUTOMATIC 34 35
|
||||
33 0004H 2 PT2. . . . . . . . WORD PARAMETER AUTOMATIC 34 38 43
|
||||
19 0004H 2 PT2. . . . . . . . WORD PARAMETER AUTOMATIC 20 24 25 28
|
||||
|
||||
5 RBP. . . . . . . . LITERALLY 25 43
|
||||
5 RBX. . . . . . . . LITERALLY 25
|
||||
5 RCS. . . . . . . . LITERALLY
|
||||
5 RDI. . . . . . . . LITERALLY 28 38
|
||||
5 RDS. . . . . . . . LITERALLY
|
||||
PL/M-86 COMPILER BRACKET EXPRESSION 10/5/81 PAGE 5
|
||||
|
||||
|
||||
2 REENT. . . . . . . LITERALLY
|
||||
3 REG. . . . . . . . LITERALLY 21
|
||||
20 0000H 1 REGI . . . . . . . BYTE BASED(PT2) 24 25 28
|
||||
34 0000H 1 REGI . . . . . . . BYTE BASED(PT2) 38 43
|
||||
19 0094H 73 REGTYP . . . . . . PROCEDURE BYTE STACK=0006H 47 54
|
||||
5 RES. . . . . . . . LITERALLY
|
||||
6 RIGHTBRACKET . . . LITERALLY 61
|
||||
5 RSI. . . . . . . . LITERALLY 28
|
||||
5 RSS. . . . . . . . LITERALLY
|
||||
8 0000H SCAN . . . . . . . PROCEDURE EXTERNAL(0) STACK=0000H 50 53
|
||||
59 63
|
||||
7 SEGMBIT. . . . . . LITERALLY 64
|
||||
7 SEGMCOUNT. . . . . LITERALLY
|
||||
18 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPER)
|
||||
16 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
|
||||
7 SEGTYPEBIT . . . . LITERALLY
|
||||
7 SEGTYPECOUNT . . . LITERALLY
|
||||
33 00DDH 65 SETOPERFLAGS . . . PROCEDURE STACK=0006H 49 58
|
||||
18 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPER) 37 42 64
|
||||
16 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
2 SPACE. . . . . . . LITERALLY
|
||||
3 SPEC . . . . . . . LITERALLY
|
||||
10 0000H SPECIALTOKEN . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H 51
|
||||
61
|
||||
3 STRING . . . . . . LITERALLY
|
||||
2 STRUC. . . . . . . LITERALLY 16 18
|
||||
18 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPER) 66 71
|
||||
16 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
3 SYMBOL . . . . . . LITERALLY
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
2 THENDO . . . . . . LITERALLY 21 35 51 64 66
|
||||
10 0000H 1 TOK. . . . . . . . BYTE PARAMETER 11
|
||||
16 0000H 4 TOKEN. . . . . . . STRUCTURE EXTERNAL(9) 21 24
|
||||
2 TRUE . . . . . . . LITERALLY 26 29 72
|
||||
34 0000H 1 TYP. . . . . . . . BYTE BASED(PT1) 35
|
||||
20 0000H 1 TYP. . . . . . . . BYTE BASED(PT1) 23 27
|
||||
16 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN) 21
|
||||
7 TYPEBIT. . . . . . LITERALLY
|
||||
7 TYPECOUNT. . . . . LITERALLY
|
||||
3 UDEFSYMB . . . . . LITERALLY
|
||||
16 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN) 24
|
||||
3 VARIABLE . . . . . LITERALLY 71
|
||||
4 WRD. . . . . . . . LITERALLY 21
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 011EH 286D
|
||||
CONSTANT AREA SIZE = 0000H 0D
|
||||
VARIABLE AREA SIZE = 0006H 6D
|
||||
MAXIMUM STACK SIZE = 000AH 10D
|
||||
254 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,68 @@
|
||||
$title ('BRACKET EXPRESSION')
|
||||
brexpr:
|
||||
|
||||
/*
|
||||
|
||||
modified 4/13/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
do;
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:brexpr.x86)
|
||||
$include (:f1:ermod.ext)
|
||||
$include (:f1:exglob.ext)
|
||||
$eject
|
||||
|
||||
/* compute index expression within brackets */
|
||||
|
||||
bracketexpr: proc(pt) byte public;
|
||||
dcl pt address,oper based pt operandstruc,
|
||||
(firsttype,firstreg,lasttype,lastreg) byte,
|
||||
baseregi lit '0',indexregi lit'1';
|
||||
|
||||
regtyp: proc(pt1,pt2) byte;
|
||||
dcl (pt1,pt2) address,(typ based pt1,regi based pt2) byte;
|
||||
if (token.type=reg) and (token.descr=wrd) then$do
|
||||
typ=baseregi;
|
||||
regi=token.value;
|
||||
if (regi=rbp) or (regi=rbx) then return true;
|
||||
typ=indexregi;
|
||||
if (regi=rsi) or (regi=rdi) then return true;
|
||||
end$if;
|
||||
return false;
|
||||
end regtyp;
|
||||
|
||||
setoperflags: proc (pt1,pt2);
|
||||
dcl (pt1,pt2) address,(typ based pt1,regi based pt2) byte;
|
||||
if typ=indexregi then$do
|
||||
oper.sflag=oper.sflag or iregbit;
|
||||
IF REGI = RDI THEN OPER.BASEINDEX = OPER.BASEINDEX OR INDEXREGBIT;
|
||||
else$do
|
||||
oper.sflag=oper.sflag or bregbit;
|
||||
IF REGI = RBP THEN OPER.BASEINDEX = OPER.BASEINDEX OR BASEREGBIT;
|
||||
end$if;
|
||||
end setoperflags;
|
||||
|
||||
if not regtyp(.firsttype,.firstreg) then return false;
|
||||
call setoperflags(.firsttype,.firstreg);
|
||||
call scan;
|
||||
if specialtoken('+') then$do
|
||||
call scan;
|
||||
if not regtyp(.lasttype,.lastreg) then return false;
|
||||
if firsttype=lasttype then return false;
|
||||
call setoperflags(.lasttype,.lastreg);
|
||||
call scan;
|
||||
end$if;
|
||||
if not specialtoken(rightbracket) then return false;
|
||||
call scan;
|
||||
if (oper.sflag and segmbit) = 0 then$do
|
||||
if oper.stype=number then$do
|
||||
oper.baseindex=oper.baseindex or nooverridebit;
|
||||
end$if;
|
||||
end$if;
|
||||
oper.stype=variable;
|
||||
return true;
|
||||
end bracketexpr;
|
||||
|
||||
end$module brexpr;
|
||||
@@ -0,0 +1,124 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 4/13/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* Symbol types : */
|
||||
|
||||
dcl
|
||||
reg lit '0', /* register */
|
||||
pseudo lit '1', /* pseudo instruction */
|
||||
code lit '2', /* instruction */
|
||||
string lit '3', /* character string */
|
||||
spec lit '4', /* special character */
|
||||
number lit '5', /* 8 or 16 bit number */
|
||||
variable lit '6',
|
||||
lab lit '7', /* label */
|
||||
operator lit '8', /* operator in expressions */
|
||||
doubledefined lit '0f9h', /* doubled defined symbol */
|
||||
neglected lit '0fah', /* neglected symb.,never to be def. */
|
||||
ident lit '0fbh', /* identificator, scanner output */
|
||||
udefsymb lit '0fdh', /* undefined symbol */
|
||||
symbol lit '0feh', /* variable,label or undef. symb. */
|
||||
deletedsymb lit '0ffh'; /* deleted symbol (not used */
|
||||
|
||||
|
||||
/* Symbol description values */
|
||||
|
||||
dcl
|
||||
nil lit '0', /* no specification */
|
||||
byt lit '1', /* symbol is 8-bit type */
|
||||
wrd lit '2', /* symbol is 16 bit type */
|
||||
dwrd lit '4'; /* symbol is 2*16 bit type
|
||||
or a segment register */
|
||||
|
||||
/* Register values : */
|
||||
|
||||
dcl
|
||||
rbx lit '3',
|
||||
rbp lit '5',
|
||||
rsi lit '6',
|
||||
rdi lit '7',
|
||||
|
||||
res lit '0', /* segment registers */
|
||||
rcs lit '1',
|
||||
rss lit '2',
|
||||
rds lit '3';
|
||||
|
||||
/* Symbolic operators */
|
||||
|
||||
dcl
|
||||
oshort lit '0', /* 8-bit value of expression */
|
||||
oor lit '1', /* logical OR */
|
||||
oxor lit '2', /* logical XOR */
|
||||
oand lit '3', /* logical AND */
|
||||
onot lit '4', /* logical NOT */
|
||||
oeq lit '5', /* equal */
|
||||
ogt lit '6', /* greater */
|
||||
oge lit '7', /* greater or equal */
|
||||
olt lit '8', /* less */
|
||||
ole lit '9', /* less or equal */
|
||||
one lit '10', /* not equal */
|
||||
omod lit '11', /* arithmetic MOD */
|
||||
oshl lit '12', /* shift left */
|
||||
oshr lit '13', /* shift rigth */
|
||||
optr lit '14', /* take type of 1. op, value of 2. */
|
||||
ooffset lit '15', /* offset value of operand */
|
||||
oseg lit '16', /* segment value of operand */
|
||||
otype lit '17', /* type value of operand */
|
||||
olength lit '18', /* length attribute of variables */
|
||||
olast lit '19', /* length - 1 */
|
||||
leftbracket lit '''[''',
|
||||
rightbracket lit ''']''';
|
||||
|
||||
dcl
|
||||
|
||||
operandstruc lit 'struc(
|
||||
length addr,
|
||||
stype byte,
|
||||
sflag byte,
|
||||
segment addr,
|
||||
offset addr,
|
||||
baseindex byte)',
|
||||
|
||||
|
||||
/* define bits of SFLAG of structures above */
|
||||
|
||||
type$bit lit '7h', /* bit 0-2 */
|
||||
segtypebit lit '18h', /* bit 3-4 */
|
||||
segmbit lit '20h', /* bit 5 */
|
||||
iregbit lit '40h', /* bit 6 */
|
||||
bregbit lit '80h', /* bit 7 */
|
||||
|
||||
/* left-shift counters */
|
||||
typecount lit '0',
|
||||
segtypecount lit '3',
|
||||
segmcount lit '5',
|
||||
iregcount lit '6',
|
||||
bregcount lit '7',
|
||||
|
||||
/* define bits of BASEINDEX byte of structures above */
|
||||
|
||||
indexregbit lit '01h', /* bit 0 */
|
||||
baseregbit lit '02h', /* bit 1 */
|
||||
nooverridebit lit '40h', /* bit 6 */
|
||||
|
||||
/* left shift counters */
|
||||
|
||||
indexregcount lit '0',
|
||||
baseregcount lit '1',
|
||||
noovercount lit '6';
|
||||
|
||||
scan: proc external;
|
||||
end scan;
|
||||
|
||||
specialtoken: proc (tok) byte external;
|
||||
dcl tok byte;
|
||||
end specialtoken;
|
||||
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,77 @@
|
||||
;
|
||||
extrn asm86:near
|
||||
cgroup group code
|
||||
dgroup group const,data,stack,memory
|
||||
|
||||
assume cs:cgroup,ds:dgroup
|
||||
|
||||
data segment public 'DATA'
|
||||
data ends
|
||||
|
||||
;
|
||||
stack segment word stack 'STACK'
|
||||
stack_base label byte
|
||||
stack ends
|
||||
;
|
||||
|
||||
memory segment memory 'MEMORY'
|
||||
memory ends
|
||||
|
||||
const segment public 'CONST'
|
||||
|
||||
public fcb,fcb16,tbuff,endbuf
|
||||
|
||||
org 6
|
||||
endbuf equ $
|
||||
org 5ch
|
||||
fcb equ $
|
||||
org 6ch
|
||||
fcb16 equ $
|
||||
org 80h
|
||||
tbuff equ $
|
||||
org 100h
|
||||
|
||||
const ends
|
||||
|
||||
code segment public 'CODE'
|
||||
|
||||
public mon1,mon2
|
||||
|
||||
start: mov ax,ds
|
||||
pushf
|
||||
pop bx
|
||||
cli
|
||||
mov ss,ax
|
||||
lea sp,stack_base
|
||||
push bx
|
||||
popf
|
||||
jmp asm86
|
||||
|
||||
copyright db ' COPYRIGHT (C) DIGITAL RESEARCH, 1981 '
|
||||
|
||||
public patch
|
||||
patch:
|
||||
db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
|
||||
date db ' 10/01/81 '
|
||||
|
||||
bdos:
|
||||
pop ax ; return address
|
||||
pop dx
|
||||
pop cx
|
||||
push ax
|
||||
int 224
|
||||
ret
|
||||
|
||||
mon1 equ bdos
|
||||
mon2 equ bdos
|
||||
code ends
|
||||
|
||||
end
|
||||
@@ -0,0 +1,161 @@
|
||||
MCS-86 MACRO ASSEMBLER C86LNK PAGE 1
|
||||
|
||||
|
||||
ISIS-II MCS-86 MACRO ASSEMBLER V2.1 ASSEMBLY OF MODULE C86LNK
|
||||
OBJECT MODULE PLACED IN :F0:C86LNK.OBJ
|
||||
ASSEMBLER INVOKED BY: :F0: C86LNK.ASM DEBUG
|
||||
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
1 ;
|
||||
2 extrn asm86:near
|
||||
3 cgroup group code
|
||||
4 dgroup group const,data,stack,memory
|
||||
5
|
||||
6 assume cs:cgroup,ds:dgroup
|
||||
7
|
||||
---- 8 data segment public 'DATA'
|
||||
---- 9 data ends
|
||||
10
|
||||
11 ;
|
||||
---- 12 stack segment word stack 'STACK'
|
||||
0000 13 stack_base label byte
|
||||
---- 14 stack ends
|
||||
15 ;
|
||||
16
|
||||
---- 17 memory segment memory 'MEMORY'
|
||||
---- 18 memory ends
|
||||
19
|
||||
---- 20 const segment public 'CONST'
|
||||
21
|
||||
22 public fcb,fcb16,tbuff,endbuf
|
||||
23
|
||||
0006 24 org 6
|
||||
0006 25 endbuf equ $
|
||||
005C 26 org 5ch
|
||||
005C 27 fcb equ $
|
||||
006C 28 org 6ch
|
||||
006C 29 fcb16 equ $
|
||||
0080 30 org 80h
|
||||
0080 31 tbuff equ $
|
||||
0100 32 org 100h
|
||||
33
|
||||
---- 34 const ends
|
||||
35
|
||||
---- 36 code segment public 'CODE'
|
||||
37
|
||||
38 public mon1,mon2
|
||||
39
|
||||
0000 8CD8 40 start: mov ax,ds
|
||||
0002 9C 41 pushf
|
||||
0003 5B 42 pop bx
|
||||
0004 FA 43 cli
|
||||
0005 8ED0 44 mov ss,ax
|
||||
0007 8D260000 R 45 lea sp,stack_base
|
||||
000B 53 46 push bx
|
||||
000C 9D 47 popf
|
||||
000D E90000 E 48 jmp asm86
|
||||
49
|
||||
0010 20434F50595249 50 copyright db ' COPYRIGHT (C) DIGITAL RESEARCH, 1981 '
|
||||
MCS-86 MACRO ASSEMBLER C86LNK PAGE 2
|
||||
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
47485420284329
|
||||
20444947495441
|
||||
4C205245534541
|
||||
5243482C203139
|
||||
383120
|
||||
51
|
||||
52 public patch
|
||||
0036 53 patch:
|
||||
0036 90 54 db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
0037 90
|
||||
0038 90
|
||||
0039 90
|
||||
003A 90
|
||||
003B 90
|
||||
003C 90
|
||||
003D 90
|
||||
003E 90 55 db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
003F 90
|
||||
0040 90
|
||||
0041 90
|
||||
0042 90
|
||||
0043 90
|
||||
0044 90
|
||||
0045 90
|
||||
0046 90 56 db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
0047 90
|
||||
0048 90
|
||||
0049 90
|
||||
004A 90
|
||||
004B 90
|
||||
004C 90
|
||||
004D 90
|
||||
004E 90 57 db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
004F 90
|
||||
0050 90
|
||||
0051 90
|
||||
0052 90
|
||||
0053 90
|
||||
0054 90
|
||||
0055 90
|
||||
0056 90 58 db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
0057 90
|
||||
0058 90
|
||||
0059 90
|
||||
005A 90
|
||||
005B 90
|
||||
005C 90
|
||||
005D 90
|
||||
005E 90 59 db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
005F 90
|
||||
0060 90
|
||||
0061 90
|
||||
0062 90
|
||||
0063 90
|
||||
0064 90
|
||||
MCS-86 MACRO ASSEMBLER C86LNK PAGE 3
|
||||
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
0065 90
|
||||
0066 90 60 db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
0067 90
|
||||
0068 90
|
||||
0069 90
|
||||
006A 90
|
||||
006B 90
|
||||
006C 90
|
||||
006D 90
|
||||
006E 90 61 db 90h,90h,90h,90h,90h,90h,90h,90h
|
||||
006F 90
|
||||
0070 90
|
||||
0071 90
|
||||
0072 90
|
||||
0073 90
|
||||
0074 90
|
||||
0075 90
|
||||
62
|
||||
0076 2031302F30312F 63 date db ' 10/01/81 '
|
||||
383120
|
||||
64
|
||||
0080 65 bdos:
|
||||
0080 58 66 pop ax ; return address
|
||||
0081 5A 67 pop dx
|
||||
0082 59 68 pop cx
|
||||
0083 50 69 push ax
|
||||
0084 CDE0 70 int 224
|
||||
0086 C3 71 ret
|
||||
72
|
||||
0080 73 mon1 equ bdos
|
||||
0080 74 mon2 equ bdos
|
||||
---- 75 code ends
|
||||
76
|
||||
77 end
|
||||
|
||||
ASSEMBLY COMPLETE, NO ERRORS FOUND
|
||||
@@ -0,0 +1,36 @@
|
||||
$nolist
|
||||
|
||||
codemacro$rout: PROC external;
|
||||
end$proc codemacro$rout;
|
||||
|
||||
db$cm$rout: PROC external;
|
||||
end$proc db$cm$rout;
|
||||
|
||||
dw$cm$rout: PROC external;
|
||||
end$proc dw$cm$rout;
|
||||
|
||||
dd$cm$rout: PROC external;
|
||||
end$proc dd$cm$rout;
|
||||
|
||||
segfix$cm$rout: PROC external;
|
||||
end$proc segfix$cm$rout;
|
||||
|
||||
nosegfix$cm$rout: PROC external;
|
||||
end$proc nosegfix$cm$rout;
|
||||
|
||||
modrm$cm$rout: PROC external;
|
||||
end$proc modrm$cm$rout;
|
||||
|
||||
relb$cm$rout: PROC external;
|
||||
end$proc relb$cm$rout;
|
||||
|
||||
relw$cm$rout: PROC external;
|
||||
end$proc relw$cm$rout;
|
||||
|
||||
dbit$cm$rout: PROC external;
|
||||
end$proc dbit$cm$rout;
|
||||
|
||||
end$cm$rout: PROC external;
|
||||
end$proc end$cm$rout;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,15 @@
|
||||
$nolist
|
||||
|
||||
|
||||
/* 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 */
|
||||
|
||||
dcl comma lit ''',''',
|
||||
colon lit ''':''',
|
||||
first lit '0',
|
||||
second lit '1',
|
||||
leftpar lit '''(''',
|
||||
rightpar lit ''')''';
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,820 @@
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE CM1
|
||||
OBJECT MODULE PLACED IN CM.OBJ
|
||||
COMPILER INVOKED BY: :F0: CM.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title ('codemacro module 1')
|
||||
1 cm1:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 7/24/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:ermod.lit)
|
||||
= $nolist
|
||||
$include (:f1:scan.ext)
|
||||
= $nolist
|
||||
$include (:f1:ermod.ext)
|
||||
= $nolist
|
||||
$include (:f1:cm2.ext)
|
||||
= $nolist
|
||||
$include (:f1:cm.lit)
|
||||
= $nolist
|
||||
$include (:f1:global.ext)
|
||||
= $nolist
|
||||
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 2
|
||||
|
||||
|
||||
$eject
|
||||
|
||||
/* Subroutines: */
|
||||
|
||||
59 1 more$left$on$line: PROC byte;
|
||||
60 2 if accum(0) <> cr then return true;
|
||||
62 2 else return false;
|
||||
63 2 end$proc more$left$on$line;
|
||||
|
||||
64 1 modrm$rout: PROC;
|
||||
65 2 dcl nopar byte;
|
||||
66 2 if token.type = number then$do
|
||||
68 3 call put$b(mmodrm1);
|
||||
69 3 if token.value > 7 then$do
|
||||
71 4 cm$error=true; /* legal values are 0,1,.. .,7 */
|
||||
72 4 return;
|
||||
73 4 else$do
|
||||
75 4 call put$b(token.value);
|
||||
76 4 end$if;
|
||||
77 3 else$do
|
||||
79 3 if token.type = ident then$do
|
||||
81 4 if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
83 5 call put$b(mmodrm2);
|
||||
84 5 call put$b(nopar);
|
||||
85 5 else$do /* error, parameter mismatch */
|
||||
87 5 cm$error=true;
|
||||
88 5 return;
|
||||
89 5 end$if;
|
||||
90 4 else$do /* error, expected parameter */
|
||||
92 4 cm$error=true;
|
||||
93 4 return;
|
||||
94 4 end$if;
|
||||
95 3 end$if;
|
||||
96 2 call scan;
|
||||
97 2 if accum(0) <> comma then$do
|
||||
/* error, expected comma */
|
||||
99 3 cm$error=true;
|
||||
100 3 return;
|
||||
101 3 end$if;
|
||||
102 2 call scan;
|
||||
103 2 if token.type = ident then$do
|
||||
105 3 if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
107 4 call put$b(nopar);
|
||||
108 4 call scan;
|
||||
109 4 return;
|
||||
110 4 else$do /* error, parameter mismatch */
|
||||
112 4 cm$error=true;
|
||||
113 4 return;
|
||||
114 4 end$if;
|
||||
115 3 else$do /* error, expected parameter */
|
||||
117 3 cm$error=true;
|
||||
118 3 return;
|
||||
119 3 end$if;
|
||||
120 2 end$proc modrm$rout;
|
||||
|
||||
121 1 db$dw$common$rout: PROC(directive);
|
||||
122 2 dcl (directive,nopar) byte;
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 3
|
||||
|
||||
|
||||
123 2 if token.type = number then$do
|
||||
125 3 call put$b(directive);
|
||||
126 3 if directive = mdwn then$do
|
||||
128 4 call put$w(token.value);
|
||||
129 4 else$do
|
||||
131 4 if token.value > 0ffh then cm$error=true;
|
||||
133 4 else call put$b(token.value);
|
||||
134 4 end$if;
|
||||
135 3 call scan;
|
||||
136 3 return;
|
||||
137 3 else$do
|
||||
139 3 if token.type = ident then$do
|
||||
141 4 if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
143 5 call put$b(directive+1);
|
||||
144 5 call put$b(nopar);
|
||||
145 5 call scan;
|
||||
146 5 return;
|
||||
147 5 else$do /* error, parameter mismatch */
|
||||
149 5 cm$error=true;
|
||||
150 5 return;
|
||||
151 5 end$if;
|
||||
152 4 else$do /* error, expected parameter */
|
||||
154 4 cm$error=true;
|
||||
155 4 return;
|
||||
156 4 end$if;
|
||||
157 3 end$if;
|
||||
158 2 end$proc db$dw$common$rout;
|
||||
|
||||
159 1 d$s$rb$rw$rout: PROC(directive);
|
||||
160 2 dcl (directive,nopar) byte;
|
||||
161 2 if token.type = ident then$do
|
||||
163 3 if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
165 4 call put$b(directive);
|
||||
166 4 call put$b(nopar);
|
||||
167 4 call scan;
|
||||
168 4 return;
|
||||
169 4 else$do /* error, parameter mismatch */
|
||||
171 4 cm$error=true;
|
||||
172 4 return;
|
||||
173 4 end$if;
|
||||
174 3 else$do /* error, expected parameter */
|
||||
176 3 cm$error=true;
|
||||
177 3 return;
|
||||
178 3 end$if;
|
||||
179 2 end$proc d$s$rb$rw$rout;
|
||||
|
||||
180 1 nosegfix$rout: PROC;
|
||||
181 2 dcl nopar byte;
|
||||
182 2 call put$b(mnosegfix);
|
||||
183 2 do case legal$seg$reg;
|
||||
184 3 do; /* error, no segment register specified */
|
||||
185 4 cm$error=true;
|
||||
186 4 return;
|
||||
187 4 end;
|
||||
188 3 call put$b(res);
|
||||
189 3 call put$b(rcs);
|
||||
190 3 call put$b(rss);
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 4
|
||||
|
||||
|
||||
191 3 call put$b(rds);
|
||||
192 3 end$case;
|
||||
193 2 call scan;
|
||||
194 2 if accum(0) <> comma then$do
|
||||
/* error, expected comma */
|
||||
196 3 cm$error=true;
|
||||
197 3 return;
|
||||
198 3 end$if;
|
||||
199 2 call scan; /* skip comma */
|
||||
200 2 if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
202 3 call put$b(nopar);
|
||||
203 3 call scan;
|
||||
204 3 else$do
|
||||
206 3 cm$error=true;
|
||||
207 3 return;
|
||||
208 3 end$if;
|
||||
209 2 end$proc nosegfix$rout;
|
||||
|
||||
210 1 dbit$rout: PROC;
|
||||
211 2 call put$b(mdbit);
|
||||
212 2 end$proc dbit$rout;
|
||||
|
||||
213 1 field$descr$rout: PROC;
|
||||
214 2 dcl nopar byte,cm$b$var based cmpt byte;
|
||||
215 2 do forever;
|
||||
216 3 if token.type <> number or token.value > 0fh then$do
|
||||
/* error, expected numberdef. */
|
||||
218 4 cm$error=true;
|
||||
219 4 return;
|
||||
220 4 end$if;
|
||||
221 3 call put$b(mnumberbits);
|
||||
222 3 call put$b(token.value);
|
||||
223 3 call scan;
|
||||
224 3 if accum(0) <> leftpar then$do
|
||||
/* error, expected left paranthesis */
|
||||
226 4 cm$error=true;
|
||||
227 4 return;
|
||||
228 4 end$if;
|
||||
229 3 call scan; /* skip left paranthesis */
|
||||
230 3 if token.type = ident then$do
|
||||
232 4 if not legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
/* error, parameter mismatch */
|
||||
234 5 cm$error=true;
|
||||
235 5 return;
|
||||
236 5 end$if;
|
||||
237 4 cmpt=cmpt-2;
|
||||
238 4 cm$b$var=cm$b$var-1; /* it was a parameter, not a number */
|
||||
239 4 cmpt=cmpt+2;
|
||||
240 4 call put$b(nopar);
|
||||
241 4 call scan;
|
||||
242 4 if accum(0) <> leftpar then$do
|
||||
/* error, expected left paranthesis */
|
||||
244 5 cm$error=true;
|
||||
245 5 return;
|
||||
246 5 end$if;
|
||||
247 4 call scan; /* skip left paranthesis */
|
||||
248 4 end$if;
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 5
|
||||
|
||||
|
||||
249 3 if token.type <> number or token.value > 0ffh then$do
|
||||
/* error, expected numberdef.(byte) or parameter */
|
||||
251 4 cm$error=true;
|
||||
252 4 return;
|
||||
253 4 end$if;
|
||||
254 3 call put$b(token.value);
|
||||
255 3 call scan;
|
||||
256 3 if accum(0) <> rightpar then$do
|
||||
/* error,expected right paranthesis */
|
||||
258 4 cm$error=true;
|
||||
259 4 return;
|
||||
260 4 end$if;
|
||||
261 3 call scan; /* skip right paranthesis */
|
||||
262 3 cmpt=cmpt-4;
|
||||
263 3 if cm$b$var = mformalbits and
|
||||
accum(0) = rightpar then call scan;
|
||||
265 3 cmpt=cmpt+4;
|
||||
266 3 if accum(0) <> comma then return;
|
||||
268 3 call scan;
|
||||
269 3 end$forever;
|
||||
270 2 end$proc field$descr$rout;
|
||||
|
||||
271 1 enddbit$rout: PROC;
|
||||
272 2 call put$b(mendbit);
|
||||
273 2 end$proc enddbit$rout;
|
||||
|
||||
274 1 endm$rout: PROC;
|
||||
275 2 call put$b(mendm);
|
||||
276 2 end$proc endm$rout;
|
||||
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 6
|
||||
|
||||
|
||||
$eject
|
||||
|
||||
/* level 1 in the syntax-tree of codemacrobuilding */
|
||||
|
||||
277 1 COMMON$CM$ROUT: PROC (TYPE);
|
||||
278 2 DECLARE TYPE BYTE;
|
||||
279 2 if pass = 1 then$do
|
||||
281 3 call skip$rest$of$line;
|
||||
282 3 return;
|
||||
283 3 end$if;
|
||||
284 2 cm$error=false;
|
||||
285 2 if not codemacro$flag then$do
|
||||
/* error, codemacro directive outside codemacrobodydef. */
|
||||
287 3 cm$error=true;
|
||||
288 3 end$if;
|
||||
289 2 DO CASE TYPE;
|
||||
290 3 call db$dw$common$rout(mdbn);
|
||||
291 3 call db$dw$common$rout(mdwn);
|
||||
292 3 call d$s$rb$rw$rout(mddf);
|
||||
293 3 call d$s$rb$rw$rout(msegfix);
|
||||
294 3 call nosegfix$rout;
|
||||
295 3 call modrm$rout;
|
||||
296 3 call d$s$rb$rw$rout(mrelb);
|
||||
297 3 call d$s$rb$rw$rout(mrelw);
|
||||
298 3 DO;
|
||||
299 4 call dbit$rout;
|
||||
300 4 call field$descr$rout;
|
||||
301 4 call enddbit$rout;
|
||||
302 4 END;
|
||||
303 3 END$CASE;
|
||||
304 2 if cm$error or more$left$on$line then$do
|
||||
/* error */
|
||||
306 3 global$cm$error=true;
|
||||
307 3 call errmsg(codemacroerr);
|
||||
308 3 end$if;
|
||||
309 2 call skip$rest$of$line;
|
||||
310 2 END COMMON$CM$ROUT;
|
||||
|
||||
311 1 codemacro$rout: PROC public;
|
||||
312 2 if pass = 1 then$do
|
||||
314 3 codemacro$flag=true;
|
||||
315 3 call skip$rest$of$line;
|
||||
316 3 return;
|
||||
317 3 end$if;
|
||||
318 2 cm$error=false;
|
||||
319 2 global$cm$error=false;
|
||||
320 2 if codemacro$flag then$do
|
||||
/* error, nested codemacrodefinition */
|
||||
322 3 cm$error=true;
|
||||
323 3 end$if;
|
||||
324 2 call init$cm$rout; /* clearing all temp. working storages */
|
||||
325 2 codemacro$flag=true;
|
||||
326 2 if not name$rout then$do
|
||||
/* error, expected codemacroname */
|
||||
328 3 cm$error=true;
|
||||
329 3 end$if;
|
||||
330 2 call formal$list$rout;
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 7
|
||||
|
||||
|
||||
331 2 if cm$error or more$left$on$line$ then$do
|
||||
/* error */
|
||||
333 3 global$cm$error=true;
|
||||
334 3 call errmsg(codemacroerr);
|
||||
335 3 end$if;
|
||||
336 2 call skip$rest$of$line;
|
||||
337 2 end$proc codemacro$rout;
|
||||
|
||||
338 1 db$cm$rout: PROC public;
|
||||
339 2 CALL COMMON$CM$ROUT (0);
|
||||
340 2 end$proc db$cm$rout;
|
||||
|
||||
341 1 dw$cm$rout: PROC public;
|
||||
342 2 CALL COMMON$CM$ROUT (1);
|
||||
343 2 end$proc dw$cm$rout;
|
||||
|
||||
344 1 dd$cm$rout: PROC public;
|
||||
345 2 CALL COMMON$CM$ROUT (2);
|
||||
346 2 end$proc dd$cm$rout;
|
||||
|
||||
347 1 segfix$cm$rout: PROC public;
|
||||
348 2 CALL COMMON$CM$ROUT (3);
|
||||
349 2 end$proc segfix$cm$rout;
|
||||
|
||||
350 1 nosegfix$cm$rout: PROC public;
|
||||
351 2 CALL COMMON$CM$ROUT (4);
|
||||
352 2 end$proc nosegfix$cm$rout;
|
||||
|
||||
353 1 modrm$cm$rout: PROC public;
|
||||
354 2 CALL COMMON$CM$ROUT (5);
|
||||
355 2 end$proc modrm$cm$rout;
|
||||
|
||||
356 1 relb$cm$rout: PROC public;
|
||||
357 2 CALL COMMON$CM$ROUT (6);
|
||||
358 2 end$proc relb$cm$rout;
|
||||
|
||||
359 1 relw$cm$rout: PROC public;
|
||||
360 2 CALL COMMON$CM$ROUT (7);
|
||||
361 2 end$proc relw$cm$rout;
|
||||
|
||||
362 1 dbit$cm$rout: PROC public;
|
||||
363 2 CALL COMMON$CM$ROUT (8);
|
||||
364 2 end$proc dbit$cm$rout;
|
||||
|
||||
365 1 end$cm$rout: PROC public;
|
||||
366 2 if pass = 1 then$do
|
||||
368 3 call skip$rest$of$line;
|
||||
369 3 codemacro$flag=false;
|
||||
370 3 return;
|
||||
371 3 end$if;
|
||||
372 2 cm$error=false;
|
||||
373 2 if not codemacro$flag then$do
|
||||
/* error, terminating a not yet started codemacro */
|
||||
375 3 cm$error=true;
|
||||
376 3 end$if;
|
||||
377 2 call endm$rout;
|
||||
378 2 if pass = 0 then call terminate$cm$rout;
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 8
|
||||
|
||||
|
||||
380 2 if cm$error or more$left$on$line or cm$list$overflow then$do
|
||||
/* error */
|
||||
382 3 call errmsg(codemacroerr);
|
||||
383 3 end$if;
|
||||
384 2 call skip$rest$of$line;
|
||||
385 2 global$cm$error=false;
|
||||
386 2 codemacro$flag=false;
|
||||
387 2 end$proc end$cm$rout;
|
||||
|
||||
388 1 end$module cm1;
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 9
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
56 0000H 4 ABSADDR. . . . . . BYTE ARRAY(4) EXTERNAL(51)
|
||||
56 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(55) 81 105 141 163 200
|
||||
232
|
||||
56 0000H 1 ACCLENSAVE . . . . BYTE EXTERNAL(58)
|
||||
56 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(56) 60 81 97
|
||||
105 141 163 194 200 224 232 242 256 263
|
||||
266
|
||||
56 0000H 80 ACCUMSAVE. . . . . BYTE ARRAY(80) EXTERNAL(57)
|
||||
2 ADDR . . . . . . . LITERALLY 56
|
||||
49 0000H 1 B. . . . . . . . . BYTE PARAMETER 50
|
||||
56 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
|
||||
56 0008H 1 BASEINDEX. . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
8 BASEREGBIT . . . . LITERALLY
|
||||
8 BASEREGCOUNT . . . LITERALLY
|
||||
8 BREGBIT. . . . . . LITERALLY
|
||||
8 BREGCOUNT. . . . . LITERALLY
|
||||
4 BYT. . . . . . . . LITERALLY
|
||||
56 0000H 2 CIP. . . . . . . . WORD EXTERNAL(20)
|
||||
1 0000H CM1. . . . . . . . PROCEDURE STACK=0000H
|
||||
214 0000H 1 CMBVAR . . . . . . BYTE BASED(CMPT) 238 263
|
||||
35 0000H 1 CMERROR. . . . . . BYTE EXTERNAL(7) 71 87 92 99 112
|
||||
117 132 149 154 171 176 185 196 206 218
|
||||
226 234 244 251 258 284 287 304 318 322
|
||||
328 331 372 375 380
|
||||
35 0000H 1 CMLISTOVERFLOW . . BYTE EXTERNAL(9) 380
|
||||
35 0000H 2 CMPT . . . . . . . WORD EXTERNAL(10) 214 237 238 239 262
|
||||
263 265
|
||||
3 CODE . . . . . . . LITERALLY
|
||||
17 CODEMACROERR . . . LITERALLY 307 334 382
|
||||
56 0000H 1 CODEMACROFLAG. . . BYTE EXTERNAL(77) 285 314 320 325 369
|
||||
373 386
|
||||
8 CODEMACROHEAD. . . LITERALLY
|
||||
56 0000H 2 CODEMACROPTR . . . WORD EXTERNAL(72)
|
||||
311 0313H 91 CODEMACROROUT. . . PROCEDURE PUBLIC STACK=0006H
|
||||
55 COLON. . . . . . . LITERALLY
|
||||
55 COMMA. . . . . . . LITERALLY 97 194 266
|
||||
277 0286H 141 COMMONCMROUT . . . PROCEDURE STACK=0012H 339 342 345 348
|
||||
351 354 357 360 363
|
||||
2 CR . . . . . . . . LITERALLY 60
|
||||
56 0000H 2 CSCIP. . . . . . . WORD EXTERNAL(25)
|
||||
56 0000H 1 CSEGSPEC . . . . . BYTE EXTERNAL(23)
|
||||
56 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(21)
|
||||
56 0000H 2 CSEGVALUE. . . . . WORD EXTERNAL(22)
|
||||
12 CSOVER . . . . . . LITERALLY
|
||||
56 0000H 1 CSPEC. . . . . . . BYTE EXTERNAL(32)
|
||||
56 0000H 2 CURCSEG. . . . . . WORD EXTERNAL(28)
|
||||
56 0000H 2 CURDSEG. . . . . . WORD EXTERNAL(29)
|
||||
56 0000H 2 CURESEG. . . . . . WORD EXTERNAL(31)
|
||||
56 0000H 9 CURRENTSYMBOL. . . STRUCTURE EXTERNAL(68)
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 10
|
||||
|
||||
|
||||
56 0000H 2 CURSSEG. . . . . . WORD EXTERNAL(30)
|
||||
338 036EH 11 DBCMROUT . . . . . PROCEDURE PUBLIC STACK=0016H
|
||||
121 0092H 108 DBDWCOMMONROUT . . PROCEDURE STACK=000CH 290 291
|
||||
362 03C6H 11 DBITCMROUT . . . . PROCEDURE PUBLIC STACK=0016H
|
||||
210 019EH 11 DBITROUT . . . . . PROCEDURE STACK=0006H 299
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
344 0384H 11 DDCMROUT . . . . . PROCEDURE PUBLIC STACK=0016H
|
||||
56 0000H 1 DEFAULTDRIVE . . . BYTE EXTERNAL(75)
|
||||
3 DELETEDSYMB. . . . LITERALLY
|
||||
56 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN)
|
||||
121 0004H 1 DIRECTIVE. . . . . BYTE PARAMETER AUTOMATIC 122 125 126 143
|
||||
159 0004H 1 DIRECTIVE. . . . . BYTE PARAMETER AUTOMATIC 160 165
|
||||
3 DOUBLEDEFINED. . . LITERALLY
|
||||
17 DOUBLEDEFLAB . . . LITERALLY
|
||||
17 DOUBLEDEFSYMB. . . LITERALLY
|
||||
17 DOUBLEDEFVAR . . . LITERALLY
|
||||
16 DOUBLERANGE. . . . LITERALLY
|
||||
56 0000H 2 DSCIP. . . . . . . WORD EXTERNAL(27)
|
||||
12 DSOVER . . . . . . LITERALLY
|
||||
56 0000H 1 DSPEC. . . . . . . BYTE EXTERNAL(33)
|
||||
159 00FEH 56 DSRBRWROUT . . . . PROCEDURE STACK=000CH 292 293 296 297
|
||||
341 0379H 11 DWCMROUT . . . . . PROCEDURE PUBLIC STACK=0016H
|
||||
4 DWRD . . . . . . . LITERALLY
|
||||
2 ELSEDO . . . . . . LITERALLY
|
||||
30 0000H EMPTYLINE. . . . . PROCEDURE BYTE EXTERNAL(5) STACK=0000H
|
||||
2 ENDCASE. . . . . . LITERALLY
|
||||
365 03D1H 83 ENDCMROUT. . . . . PROCEDURE PUBLIC STACK=000AH
|
||||
271 0270H 11 ENDDBITROUT. . . . PROCEDURE STACK=0006H 301
|
||||
2 ENDDO. . . . . . . LITERALLY
|
||||
2 ENDFOREVER . . . . LITERALLY
|
||||
2 ENDIF. . . . . . . LITERALLY
|
||||
2 ENDMODULE. . . . . LITERALLY
|
||||
274 027BH 11 ENDMROUT . . . . . PROCEDURE STACK=0006H 377
|
||||
2 ENDOFFILE. . . . . LITERALLY
|
||||
17 ENDOFLINEERR . . . LITERALLY
|
||||
2 ENDPROC. . . . . . LITERALLY
|
||||
2 ENDWHILE . . . . . LITERALLY
|
||||
56 0000H 1 EOFSET . . . . . . BYTE EXTERNAL(59)
|
||||
32 0000H ERRMSG . . . . . . PROCEDURE EXTERNAL(6) STACK=0000H 307 334
|
||||
382
|
||||
32 0000H 1 ERRNO. . . . . . . BYTE PARAMETER 33
|
||||
3 ERROR. . . . . . . LITERALLY
|
||||
56 0000H 1 ERRORPRINTED . . . BYTE EXTERNAL(62)
|
||||
56 0000H 2 ERRORS . . . . . . WORD EXTERNAL(52)
|
||||
56 0000H 2 ESCIP. . . . . . . WORD EXTERNAL(24)
|
||||
12 ESOVER . . . . . . LITERALLY
|
||||
56 0000H 1 ESPEC. . . . . . . BYTE EXTERNAL(35)
|
||||
2 FALSE. . . . . . . LITERALLY 62 284 318 319 369 372 385
|
||||
386
|
||||
213 01A9H 199 FIELDDESCRROUT . . PROCEDURE STACK=000AH 300
|
||||
8 FILEISTRUCTURE . . LITERALLY
|
||||
8 FILEOSTRUCTURE . . LITERALLY
|
||||
17 FILESYNTERR. . . . LITERALLY
|
||||
55 FIRST. . . . . . . LITERALLY
|
||||
17 FIRSTITEM. . . . . LITERALLY
|
||||
56 0000H 2 FIRSTMACROPTR. . . WORD EXTERNAL(63)
|
||||
2 FOREVER. . . . . . LITERALLY 215
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 11
|
||||
|
||||
|
||||
40 0000H FORMALLISTROUT . . PROCEDURE EXTERNAL(13) STACK=0000H 330
|
||||
2 FORMFEED . . . . . LITERALLY
|
||||
56 0000H 1 FULLSYMBTAB. . . . BYTE EXTERNAL(65)
|
||||
35 0000H 1 GLOBALCMERROR. . . BYTE EXTERNAL(8) 306 319 333 385
|
||||
57 0000H GLOBALINIT . . . . PROCEDURE EXTERNAL(78) STACK=0000H
|
||||
56 0000H 5 HELP . . . . . . . BYTE ARRAY(5) EXTERNAL(73)
|
||||
56 0000H 1 I. . . . . . . . . BYTE EXTERNAL(74)
|
||||
3 IDENT. . . . . . . LITERALLY 79 103 139 161 230
|
||||
56 0000H 1 IFLEVEL. . . . . . BYTE EXTERNAL(67)
|
||||
56 0000H 1 IFLIST . . . . . . BYTE EXTERNAL(38)
|
||||
17 IFPARERR . . . . . LITERALLY
|
||||
17 ILLEGALMACRO . . . LITERALLY
|
||||
17 ILLEGALPSEUDO. . . LITERALLY
|
||||
17 ILLEXPRELEM. . . . LITERALLY
|
||||
17 ILLIOPER . . . . . LITERALLY
|
||||
56 0000H 1 INCLUDEDEFAULT . . BYTE EXTERNAL(76)
|
||||
56 0000H 1 INCLUDEON. . . . . BYTE EXTERNAL(66)
|
||||
8 INDEXREGBIT. . . . LITERALLY
|
||||
8 INDEXREGCOUNT. . . LITERALLY
|
||||
2 INIT . . . . . . . LITERALLY
|
||||
36 0000H INITCMROUT . . . . PROCEDURE EXTERNAL(11) STACK=0000H 324
|
||||
17 INSTRERR . . . . . LITERALLY
|
||||
56 0000H 1 INTELHEXON . . . . BYTE EXTERNAL(60)
|
||||
8 IREGBIT. . . . . . LITERALLY
|
||||
8 IREGCOUNT. . . . . LITERALLY
|
||||
3 LAB. . . . . . . . LITERALLY
|
||||
17 LABOUTOFRANGE. . . LITERALLY
|
||||
7 LEFTBRACKET. . . . LITERALLY
|
||||
55 LEFTPAR. . . . . . LITERALLY 224 242
|
||||
44 0000H LEGALPARAMETER . . PROCEDURE BYTE EXTERNAL(15) STACK=0000H 81
|
||||
105 141 163 200 232
|
||||
47 0000H LEGALSEGREG. . . . PROCEDURE BYTE EXTERNAL(16) STACK=0000H 183
|
||||
56 0000H 2 LENGTH . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
56 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
|
||||
2 LF . . . . . . . . LITERALLY
|
||||
44 0000H 1 LG . . . . . . . . BYTE PARAMETER 45
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4 5 6 7 8
|
||||
9 10 11 12 13 14 15 16 17 55
|
||||
|
||||
56 0000H 2 MACROPTR . . . . . WORD EXTERNAL(64)
|
||||
56 0000H 1 MAXCOL . . . . . . BYTE EXTERNAL(39)
|
||||
9 MDBF . . . . . . . LITERALLY
|
||||
9 MDBIT. . . . . . . LITERALLY 211
|
||||
9 MDBN . . . . . . . LITERALLY 290
|
||||
9 MDDF . . . . . . . LITERALLY 292
|
||||
9 MDWF . . . . . . . LITERALLY
|
||||
9 MDWN . . . . . . . LITERALLY 126 291
|
||||
9 MENDBIT. . . . . . LITERALLY 272
|
||||
9 MENDM. . . . . . . LITERALLY 275
|
||||
9 MFORMALBITS. . . . LITERALLY 263
|
||||
17 MISSIFERR. . . . . LITERALLY
|
||||
17 MISSINGPSEUDO. . . LITERALLY
|
||||
17 MISSINSTR. . . . . LITERALLY
|
||||
17 MISSSEGMINFO . . . LITERALLY
|
||||
17 MISSTYPEINFO . . . LITERALLY
|
||||
9 MMODRM1. . . . . . LITERALLY 68
|
||||
9 MMODRM2. . . . . . LITERALLY 83
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 12
|
||||
|
||||
|
||||
9 MNOSEGFIX. . . . . LITERALLY 182
|
||||
9 MNUMBERBITS. . . . LITERALLY 221
|
||||
11 MODB . . . . . . . LITERALLY
|
||||
11 MODD . . . . . . . LITERALLY
|
||||
15 MODLETTERBIT . . . LITERALLY
|
||||
15 MODLETTERCOUNT . . LITERALLY
|
||||
353 03A5H 11 MODRMCMROUT. . . . PROCEDURE PUBLIC STACK=0016H
|
||||
64 0012H 128 MODRMROUT. . . . . PROCEDURE STACK=000AH 295
|
||||
11 MODSB. . . . . . . LITERALLY
|
||||
11 MODW . . . . . . . LITERALLY
|
||||
59 0000H 18 MORELEFTONLINE . . PROCEDURE BYTE STACK=0002H 304 331 380
|
||||
9 MRELB. . . . . . . LITERALLY 296
|
||||
9 MRELW. . . . . . . LITERALLY 297
|
||||
9 MSEGFIX. . . . . . LITERALLY 293
|
||||
38 0000H NAMEROUT . . . . . PROCEDURE BYTE EXTERNAL(12) STACK=0000H 326
|
||||
3 NEGLECTED. . . . . LITERALLY
|
||||
17 NEGLECTERR . . . . LITERALLY
|
||||
17 NESTEDIFERR. . . . LITERALLY
|
||||
17 NESTEDINCLUDEERR . LITERALLY
|
||||
56 0000H 1 NEXTCH . . . . . . BYTE EXTERNAL(54)
|
||||
4 NIL. . . . . . . . LITERALLY
|
||||
56 0000H 1 NOERROR. . . . . . BYTE EXTERNAL(61)
|
||||
11 NOMOD. . . . . . . LITERALLY
|
||||
56 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(70)
|
||||
8 NOOVERCOUNT. . . . LITERALLY
|
||||
8 NOOVERRIDEBIT. . . LITERALLY
|
||||
214 0004H 1 NOPAR. . . . . . . BYTE 232 240
|
||||
181 0003H 1 NOPAR. . . . . . . BYTE 200 202
|
||||
160 0002H 1 NOPAR. . . . . . . BYTE 163 166
|
||||
122 0001H 1 NOPAR. . . . . . . BYTE 141 144
|
||||
65 0000H 1 NOPAR. . . . . . . BYTE 81 84 105 107
|
||||
13 NOPARAND . . . . . LITERALLY
|
||||
16 NORANGE. . . . . . LITERALLY
|
||||
350 039AH 11 NOSEGFIXCMROUT . . PROCEDURE PUBLIC STACK=0016H
|
||||
180 0136H 104 NOSEGFIXROUT . . . PROCEDURE STACK=000AH 294
|
||||
3 NUMBER . . . . . . LITERALLY 66 123 216 249
|
||||
16 NUMBERRANGE. . . . LITERALLY
|
||||
7 OAND . . . . . . . LITERALLY
|
||||
7 OEQ. . . . . . . . LITERALLY
|
||||
56 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
|
||||
56 0006H 2 OFFSET . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
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
|
||||
7 OOR. . . . . . . . LITERALLY
|
||||
56 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(71)
|
||||
8 OPERANDSTRUC . . . LITERALLY 56
|
||||
3 OPERATOR . . . . . LITERALLY
|
||||
17 OPMISMATCH . . . . LITERALLY
|
||||
7 OPTR . . . . . . . LITERALLY
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 13
|
||||
|
||||
|
||||
7 OSEG . . . . . . . LITERALLY
|
||||
7 OSHL . . . . . . . LITERALLY
|
||||
7 OSHORT . . . . . . LITERALLY
|
||||
7 OSHR . . . . . . . LITERALLY
|
||||
7 OTYPE. . . . . . . LITERALLY
|
||||
7 OXOR . . . . . . . LITERALLY
|
||||
56 0000H 1 PAGESIZE . . . . . BYTE EXTERNAL(45)
|
||||
56 0000H 1 PASS . . . . . . . BYTE EXTERNAL(19) 279 312 366 378
|
||||
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
|
||||
6 PNOIFLIST. . . . . LITERALLY
|
||||
6 PNOLIST. . . . . . LITERALLY
|
||||
6 PNOSEGFIX. . . . . LITERALLY
|
||||
6 PORG . . . . . . . LITERALLY
|
||||
6 PPAGESIZE. . . . . LITERALLY
|
||||
6 PPAGEWIDTH . . . . LITERALLY
|
||||
6 PRB. . . . . . . . LITERALLY
|
||||
56 0000H 240 PREFIX . . . . . . BYTE ARRAY(240) EXTERNAL(49)
|
||||
13 PREFIXAND. . . . . LITERALLY
|
||||
14 PREFIXON . . . . . LITERALLY
|
||||
56 0000H 1 PREFIXPTR. . . . . BYTE EXTERNAL(50)
|
||||
6 PRELB. . . . . . . LITERALLY
|
||||
6 PRELW. . . . . . . LITERALLY
|
||||
56 0000H 1 PRINTDEVICE. . . . BYTE EXTERNAL(42)
|
||||
56 0000H 1 PRINTON. . . . . . BYTE EXTERNAL(36)
|
||||
56 0000H 1 PRINTSWITCHOFF . . BYTE EXTERNAL(37)
|
||||
2 PROC . . . . . . . LITERALLY 18 20 22 24 27 30 32
|
||||
36 38 40 42 44 47 49 52 59 64
|
||||
121 159 180 210 213 271 274 277 311 338
|
||||
341 344 347 350 353 356 359 362 365
|
||||
6 PRS. . . . . . . . LITERALLY
|
||||
6 PRW. . . . . . . . LITERALLY
|
||||
6 PSEGFIX. . . . . . LITERALLY
|
||||
3 PSEUDO . . . . . . LITERALLY
|
||||
17 PSEUDOOPERR. . . . LITERALLY
|
||||
6 PSIMFORM . . . . . LITERALLY
|
||||
6 PSSEG. . . . . . . LITERALLY
|
||||
6 PTITLE . . . . . . LITERALLY
|
||||
44 0000H 2 PTR. . . . . . . . WORD PARAMETER 45
|
||||
44 0000H 2 PTR2 . . . . . . . WORD PARAMETER 45
|
||||
49 0000H PUTB . . . . . . . PROCEDURE EXTERNAL(17) STACK=0000H 68 75
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 14
|
||||
|
||||
|
||||
83 84 107 125 133 143 144 165 166 182
|
||||
188 189 190 191 202 211 221 222 240 254
|
||||
272 275
|
||||
52 0000H PUTW . . . . . . . PROCEDURE EXTERNAL(18) STACK=0000H 128
|
||||
5 RAH. . . . . . . . LITERALLY
|
||||
5 RAL. . . . . . . . LITERALLY
|
||||
16 RANGEAND . . . . . LITERALLY
|
||||
15 RANGESPECBIT . . . LITERALLY
|
||||
15 RANGESPECCOUNT . . LITERALLY
|
||||
16 RANGETYPEAND . . . LITERALLY
|
||||
5 RAX. . . . . . . . LITERALLY
|
||||
5 RBH. . . . . . . . LITERALLY
|
||||
5 RBL. . . . . . . . LITERALLY
|
||||
5 RBP. . . . . . . . LITERALLY
|
||||
5 RBX. . . . . . . . LITERALLY
|
||||
5 RCH. . . . . . . . LITERALLY
|
||||
5 RCL. . . . . . . . LITERALLY
|
||||
5 RCS. . . . . . . . LITERALLY 189
|
||||
5 RCX. . . . . . . . LITERALLY
|
||||
5 RDH. . . . . . . . LITERALLY
|
||||
5 RDI. . . . . . . . LITERALLY
|
||||
5 RDL. . . . . . . . LITERALLY
|
||||
5 RDS. . . . . . . . LITERALLY 191
|
||||
5 RDX. . . . . . . . LITERALLY
|
||||
2 REENT. . . . . . . LITERALLY
|
||||
3 REG. . . . . . . . LITERALLY
|
||||
16 REGISTERRANGE. . . LITERALLY
|
||||
356 03B0H 11 RELBCMROUT . . . . PROCEDURE PUBLIC STACK=0016H
|
||||
359 03BBH 11 RELWCMROUT . . . . PROCEDURE PUBLIC STACK=0016H
|
||||
5 RES. . . . . . . . LITERALLY 188
|
||||
7 RIGHTBRACKET . . . LITERALLY
|
||||
55 RIGHTPAR . . . . . LITERALLY 256 263
|
||||
5 RSI. . . . . . . . LITERALLY
|
||||
5 RSP. . . . . . . . LITERALLY
|
||||
5 RSS. . . . . . . . LITERALLY 190
|
||||
56 0000H 12 SAVESOURCE . . . . BYTE ARRAY(12) EXTERNAL(41)
|
||||
20 0000H SCAN . . . . . . . PROCEDURE EXTERNAL(1) STACK=0000H 96 102
|
||||
108 135 145 167 193 199 203 223 229 241
|
||||
247 255 261 264 268
|
||||
18 0000H SCANINIT . . . . . PROCEDURE EXTERNAL(0) STACK=0000H
|
||||
55 SECOND . . . . . . LITERALLY
|
||||
347 038FH 11 SEGFIXCMROUT . . . PROCEDURE PUBLIC STACK=0016H
|
||||
8 SEGMBIT. . . . . . LITERALLY
|
||||
8 SEGMCOUNT. . . . . LITERALLY
|
||||
56 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
|
||||
56 0004H 2 SEGMENT. . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
8 SEGTYPEBIT . . . . LITERALLY
|
||||
8 SEGTYPECOUNT . . . LITERALLY
|
||||
56 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
56 0003H 1 SFLAG. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
56 0000H 1 SIMFORM. . . . . . BYTE EXTERNAL(46)
|
||||
16 SINGLERANGE. . . . LITERALLY
|
||||
22 0000H SKIPRESTOFLINE . . PROCEDURE EXTERNAL(2) STACK=0000H 281 309
|
||||
315 336 368 384
|
||||
27 0000H SKIPUNTIL. . . . . PROCEDURE BYTE EXTERNAL(4) STACK=0000H
|
||||
56 0000H 80 SOURCEBUF. . . . . BYTE ARRAY(80) EXTERNAL(47)
|
||||
56 0000H 12 SOURCENAME . . . . BYTE ARRAY(12) EXTERNAL(40)
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 15
|
||||
|
||||
|
||||
56 0000H 1 SOURCEPTR. . . . . BYTE EXTERNAL(48)
|
||||
2 SPACE. . . . . . . LITERALLY
|
||||
3 SPEC . . . . . . . LITERALLY
|
||||
10 SPECA. . . . . . . LITERALLY
|
||||
10 SPECC. . . . . . . LITERALLY
|
||||
10 SPECD. . . . . . . LITERALLY
|
||||
10 SPECE. . . . . . . LITERALLY
|
||||
24 0000H SPECIALTOKEN . . . PROCEDURE BYTE EXTERNAL(3) STACK=0000H
|
||||
10 SPECM. . . . . . . LITERALLY
|
||||
10 SPECR. . . . . . . LITERALLY
|
||||
10 SPECS. . . . . . . LITERALLY
|
||||
10 SPECX. . . . . . . LITERALLY
|
||||
56 0000H 2 SSCIP. . . . . . . WORD EXTERNAL(26)
|
||||
12 SSOVER . . . . . . LITERALLY
|
||||
56 0000H 1 SSPEC. . . . . . . BYTE EXTERNAL(34)
|
||||
3 STRING . . . . . . LITERALLY
|
||||
2 STRUC. . . . . . . LITERALLY 56
|
||||
56 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
56 0002H 1 STYPE. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
3 SYMBOL . . . . . . LITERALLY
|
||||
56 0000H 1 SYMBOLDEVICE . . . BYTE EXTERNAL(43)
|
||||
8 SYMBOLHEAD . . . . LITERALLY
|
||||
8 SYMBOLSTRUC. . . . LITERALLY 56
|
||||
56 0000H 2 SYMBTABADR . . . . WORD EXTERNAL(69)
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
42 0000H TERMINATECMROUT. . PROCEDURE EXTERNAL(14) STACK=0000H 379
|
||||
2 THENDO . . . . . . LITERALLY 66 69 79 81 97 103 105
|
||||
123 126 139 141 161 163 194 200 216 224
|
||||
230 232 242 249 256 279 285 304 312 320
|
||||
326 331 366 373 380
|
||||
56 0000H 30 TITLE. . . . . . . BYTE ARRAY(30) EXTERNAL(44)
|
||||
27 0000H 1 TOK. . . . . . . . BYTE PARAMETER 28
|
||||
24 0000H 1 TOK. . . . . . . . BYTE PARAMETER 25
|
||||
56 0000H 4 TOKEN. . . . . . . STRUCTURE EXTERNAL(53) 66 69 75 79
|
||||
103 123 128 131 133 139 161 216 222 230
|
||||
249 254
|
||||
2 TRUE . . . . . . . LITERALLY 61 71 87 92 99 112 117
|
||||
132 149 154 171 176 185 196 206 215 218
|
||||
226 234 244 251 258 287 306 314 322 325
|
||||
328 333 375
|
||||
277 0004H 1 TYPE . . . . . . . BYTE PARAMETER AUTOMATIC 278 289
|
||||
56 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN) 66 79 103 123 139
|
||||
161 216 230 249
|
||||
8 TYPEBIT. . . . . . LITERALLY
|
||||
8 TYPECOUNT. . . . . LITERALLY
|
||||
3 UDEFSYMB . . . . . LITERALLY
|
||||
17 UDEFSYMBOL . . . . LITERALLY
|
||||
56 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN) 69 75 128 131 133
|
||||
216 222 249 254
|
||||
3 VARIABLE . . . . . LITERALLY
|
||||
52 0000H 2 W. . . . . . . . . WORD PARAMETER 53
|
||||
4 WRD. . . . . . . . LITERALLY
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
PL/M-86 COMPILER CODEMACRO MODULE 1 10/5/81 PAGE 16
|
||||
|
||||
|
||||
CODE AREA SIZE = 0424H 1060D
|
||||
CONSTANT AREA SIZE = 0000H 0D
|
||||
VARIABLE AREA SIZE = 0005H 5D
|
||||
MAXIMUM STACK SIZE = 0016H 22D
|
||||
936 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,350 @@
|
||||
$title ('codemacro module 1')
|
||||
cm1:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 7/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/* This is the module to build new instructions
|
||||
which is not present in the already existing
|
||||
system. */
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:struc.lit)
|
||||
$include (:f1:cmacd.lit)
|
||||
$include (:f1:ermod.lit)
|
||||
$include (:f1:scan.ext)
|
||||
$include (:f1:ermod.ext)
|
||||
$include (:f1:cm2.ext)
|
||||
$include (:f1:cm.lit)
|
||||
$include (:f1:global.ext)
|
||||
|
||||
$eject
|
||||
|
||||
/* Subroutines: */
|
||||
|
||||
more$left$on$line: PROC byte;
|
||||
if accum(0) <> cr then return true;
|
||||
else return false;
|
||||
end$proc more$left$on$line;
|
||||
|
||||
modrm$rout: PROC;
|
||||
dcl nopar byte;
|
||||
if token.type = number then$do
|
||||
call put$b(mmodrm1);
|
||||
if token.value > 7 then$do
|
||||
cm$error=true; /* legal values are 0,1,.. .,7 */
|
||||
return;
|
||||
else$do
|
||||
call put$b(token.value);
|
||||
end$if;
|
||||
else$do
|
||||
if token.type = ident then$do
|
||||
if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
call put$b(mmodrm2);
|
||||
call put$b(nopar);
|
||||
else$do /* error, parameter mismatch */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
else$do /* error, expected parameter */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
end$if;
|
||||
call scan;
|
||||
if accum(0) <> comma then$do
|
||||
/* error, expected comma */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
call scan;
|
||||
if token.type = ident then$do
|
||||
if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
call put$b(nopar);
|
||||
call scan;
|
||||
return;
|
||||
else$do /* error, parameter mismatch */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
else$do /* error, expected parameter */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
end$proc modrm$rout;
|
||||
|
||||
db$dw$common$rout: PROC(directive);
|
||||
dcl (directive,nopar) byte;
|
||||
if token.type = number then$do
|
||||
call put$b(directive);
|
||||
if directive = mdwn then$do
|
||||
call put$w(token.value);
|
||||
else$do
|
||||
if token.value > 0ffh then cm$error=true;
|
||||
else call put$b(token.value);
|
||||
end$if;
|
||||
call scan;
|
||||
return;
|
||||
else$do
|
||||
if token.type = ident then$do
|
||||
if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
call put$b(directive+1);
|
||||
call put$b(nopar);
|
||||
call scan;
|
||||
return;
|
||||
else$do /* error, parameter mismatch */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
else$do /* error, expected parameter */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
end$if;
|
||||
end$proc db$dw$common$rout;
|
||||
|
||||
d$s$rb$rw$rout: PROC(directive);
|
||||
dcl (directive,nopar) byte;
|
||||
if token.type = ident then$do
|
||||
if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
call put$b(directive);
|
||||
call put$b(nopar);
|
||||
call scan;
|
||||
return;
|
||||
else$do /* error, parameter mismatch */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
else$do /* error, expected parameter */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
end$proc d$s$rb$rw$rout;
|
||||
|
||||
nosegfix$rout: PROC;
|
||||
dcl nopar byte;
|
||||
call put$b(mnosegfix);
|
||||
do case legal$seg$reg;
|
||||
do; /* error, no segment register specified */
|
||||
cm$error=true;
|
||||
return;
|
||||
end;
|
||||
call put$b(res);
|
||||
call put$b(rcs);
|
||||
call put$b(rss);
|
||||
call put$b(rds);
|
||||
end$case;
|
||||
call scan;
|
||||
if accum(0) <> comma then$do
|
||||
/* error, expected comma */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
call scan; /* skip comma */
|
||||
if legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
call put$b(nopar);
|
||||
call scan;
|
||||
else$do
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
end$proc nosegfix$rout;
|
||||
|
||||
dbit$rout: PROC;
|
||||
call put$b(mdbit);
|
||||
end$proc dbit$rout;
|
||||
|
||||
field$descr$rout: PROC;
|
||||
dcl nopar byte,cm$b$var based cmpt byte;
|
||||
do forever;
|
||||
if token.type <> number or token.value > 0fh then$do
|
||||
/* error, expected numberdef. */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
call put$b(mnumberbits);
|
||||
call put$b(token.value);
|
||||
call scan;
|
||||
if accum(0) <> leftpar then$do
|
||||
/* error, expected left paranthesis */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
call scan; /* skip left paranthesis */
|
||||
if token.type = ident then$do
|
||||
if not legal$parameter(acclen,.accum(0),.nopar) then$do
|
||||
/* error, parameter mismatch */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
cmpt=cmpt-2;
|
||||
cm$b$var=cm$b$var-1; /* it was a parameter, not a number */
|
||||
cmpt=cmpt+2;
|
||||
call put$b(nopar);
|
||||
call scan;
|
||||
if accum(0) <> leftpar then$do
|
||||
/* error, expected left paranthesis */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
call scan; /* skip left paranthesis */
|
||||
end$if;
|
||||
if token.type <> number or token.value > 0ffh then$do
|
||||
/* error, expected numberdef.(byte) or parameter */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
call put$b(token.value);
|
||||
call scan;
|
||||
if accum(0) <> rightpar then$do
|
||||
/* error,expected right paranthesis */
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
call scan; /* skip right paranthesis */
|
||||
cmpt=cmpt-4;
|
||||
if cm$b$var = mformalbits and
|
||||
accum(0) = rightpar then call scan;
|
||||
cmpt=cmpt+4;
|
||||
if accum(0) <> comma then return;
|
||||
call scan;
|
||||
end$forever;
|
||||
end$proc field$descr$rout;
|
||||
|
||||
enddbit$rout: PROC;
|
||||
call put$b(mendbit);
|
||||
end$proc enddbit$rout;
|
||||
|
||||
endm$rout: PROC;
|
||||
call put$b(mendm);
|
||||
end$proc endm$rout;
|
||||
|
||||
$eject
|
||||
|
||||
/* level 1 in the syntax-tree of codemacrobuilding */
|
||||
|
||||
COMMON$CM$ROUT: PROC (TYPE);
|
||||
DECLARE TYPE BYTE;
|
||||
if pass = 1 then$do
|
||||
call skip$rest$of$line;
|
||||
return;
|
||||
end$if;
|
||||
cm$error=false;
|
||||
if not codemacro$flag then$do
|
||||
/* error, codemacro directive outside codemacrobodydef. */
|
||||
cm$error=true;
|
||||
end$if;
|
||||
DO CASE TYPE;
|
||||
call db$dw$common$rout(mdbn);
|
||||
call db$dw$common$rout(mdwn);
|
||||
call d$s$rb$rw$rout(mddf);
|
||||
call d$s$rb$rw$rout(msegfix);
|
||||
call nosegfix$rout;
|
||||
call modrm$rout;
|
||||
call d$s$rb$rw$rout(mrelb);
|
||||
call d$s$rb$rw$rout(mrelw);
|
||||
DO;
|
||||
call dbit$rout;
|
||||
call field$descr$rout;
|
||||
call enddbit$rout;
|
||||
END;
|
||||
END$CASE;
|
||||
if cm$error or more$left$on$line then$do
|
||||
/* error */
|
||||
global$cm$error=true;
|
||||
call errmsg(codemacroerr);
|
||||
end$if;
|
||||
call skip$rest$of$line;
|
||||
END COMMON$CM$ROUT;
|
||||
|
||||
codemacro$rout: PROC public;
|
||||
if pass = 1 then$do
|
||||
codemacro$flag=true;
|
||||
call skip$rest$of$line;
|
||||
return;
|
||||
end$if;
|
||||
cm$error=false;
|
||||
global$cm$error=false;
|
||||
if codemacro$flag then$do
|
||||
/* error, nested codemacrodefinition */
|
||||
cm$error=true;
|
||||
end$if;
|
||||
call init$cm$rout; /* clearing all temp. working storages */
|
||||
codemacro$flag=true;
|
||||
if not name$rout then$do
|
||||
/* error, expected codemacroname */
|
||||
cm$error=true;
|
||||
end$if;
|
||||
call formal$list$rout;
|
||||
if cm$error or more$left$on$line$ then$do
|
||||
/* error */
|
||||
global$cm$error=true;
|
||||
call errmsg(codemacroerr);
|
||||
end$if;
|
||||
call skip$rest$of$line;
|
||||
end$proc codemacro$rout;
|
||||
|
||||
db$cm$rout: PROC public;
|
||||
CALL COMMON$CM$ROUT (0);
|
||||
end$proc db$cm$rout;
|
||||
|
||||
dw$cm$rout: PROC public;
|
||||
CALL COMMON$CM$ROUT (1);
|
||||
end$proc dw$cm$rout;
|
||||
|
||||
dd$cm$rout: PROC public;
|
||||
CALL COMMON$CM$ROUT (2);
|
||||
end$proc dd$cm$rout;
|
||||
|
||||
segfix$cm$rout: PROC public;
|
||||
CALL COMMON$CM$ROUT (3);
|
||||
end$proc segfix$cm$rout;
|
||||
|
||||
nosegfix$cm$rout: PROC public;
|
||||
CALL COMMON$CM$ROUT (4);
|
||||
end$proc nosegfix$cm$rout;
|
||||
|
||||
modrm$cm$rout: PROC public;
|
||||
CALL COMMON$CM$ROUT (5);
|
||||
end$proc modrm$cm$rout;
|
||||
|
||||
relb$cm$rout: PROC public;
|
||||
CALL COMMON$CM$ROUT (6);
|
||||
end$proc relb$cm$rout;
|
||||
|
||||
relw$cm$rout: PROC public;
|
||||
CALL COMMON$CM$ROUT (7);
|
||||
end$proc relw$cm$rout;
|
||||
|
||||
dbit$cm$rout: PROC public;
|
||||
CALL COMMON$CM$ROUT (8);
|
||||
end$proc dbit$cm$rout;
|
||||
|
||||
end$cm$rout: PROC public;
|
||||
if pass = 1 then$do
|
||||
call skip$rest$of$line;
|
||||
codemacro$flag=false;
|
||||
return;
|
||||
end$if;
|
||||
cm$error=false;
|
||||
if not codemacro$flag then$do
|
||||
/* error, terminating a not yet started codemacro */
|
||||
cm$error=true;
|
||||
end$if;
|
||||
call endm$rout;
|
||||
if pass = 0 then call terminate$cm$rout;
|
||||
if cm$error or more$left$on$line or cm$list$overflow then$do
|
||||
/* error */
|
||||
call errmsg(codemacroerr);
|
||||
end$if;
|
||||
call skip$rest$of$line;
|
||||
global$cm$error=false;
|
||||
codemacro$flag=false;
|
||||
end$proc end$cm$rout;
|
||||
|
||||
end$module cm1;
|
||||
@@ -0,0 +1,46 @@
|
||||
$nolist
|
||||
|
||||
/* 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 */
|
||||
|
||||
dcl cm$error byte external,
|
||||
global$cm$error byte external,
|
||||
cm$list$overflow byte external,
|
||||
cmpt address external;
|
||||
|
||||
|
||||
/* level 2 in the syntax-tree of codemacro building */
|
||||
|
||||
/* Procedure to initialize temporary storage and pointers
|
||||
conserning the building of codemacro */
|
||||
|
||||
init$cm$rout: PROC external;
|
||||
end$proc init$cm$rout;
|
||||
|
||||
name$rout: PROC byte external;
|
||||
end$proc name$rout;
|
||||
|
||||
formal$list$rout: PROC external;
|
||||
end$proc formal$list$rout;
|
||||
|
||||
terminate$cm$rout: PROC external;
|
||||
end$proc terminate$cm$rout;
|
||||
|
||||
legal$parameter: PROC(lg,ptr,ptr2) byte external;
|
||||
dcl lg byte,
|
||||
(ptr,ptr2) address;
|
||||
end$proc legal$parameter;
|
||||
|
||||
legal$seg$reg: PROC byte external;
|
||||
end$proc legal$seg$reg;
|
||||
|
||||
put$b: PROC(b) external;
|
||||
dcl b byte;
|
||||
end$proc put$b;
|
||||
|
||||
put$w: PROC(w) external;
|
||||
dcl w address;
|
||||
end$proc put$w;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,835 @@
|
||||
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
|
||||
@@ -0,0 +1,343 @@
|
||||
$title ('codemacro module 2')
|
||||
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)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:struc.lit)
|
||||
$include (:f1:cmacd.lit)
|
||||
$include (:f1:cm.lit)
|
||||
$include (:f1:symb.ext)
|
||||
$include (:f1:subr1.ext)
|
||||
$include (:f1:subr2.ext)
|
||||
$include (:f1:scan.ext)
|
||||
$include (:f1:files.ext)
|
||||
$include (:f1:exglob.ext)
|
||||
|
||||
$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 */
|
||||
|
||||
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;
|
||||
|
||||
$eject
|
||||
|
||||
/* VARIOUS SUBROUTINES */
|
||||
|
||||
legal$parameter: PROC(lg,ptr,ptr2) byte public;
|
||||
dcl (lg,i) byte,
|
||||
(ptr,ptr2) address,
|
||||
no based ptr2 byte;
|
||||
i=0;
|
||||
do no=0 to cm$body(2)-1;
|
||||
if parname(i+lg) = 0 and
|
||||
equal(lg,ptr,.par$name(i)) then return true;
|
||||
do while par$name(i:=i+1) <> 0;
|
||||
end$while;
|
||||
i=i+1;
|
||||
end;
|
||||
return false;
|
||||
end$proc legal$parameter;
|
||||
|
||||
legal$spec$letter: PROC(l) byte;
|
||||
dcl (l,i) byte;
|
||||
dcl table(8) byte data ('ACDEMRSX');
|
||||
do i=0 to last(table);
|
||||
if table(i) = l then return i;
|
||||
end;
|
||||
return i;
|
||||
end$proc legal$spec$letter;
|
||||
|
||||
legal$mod$letter: PROC(l) byte;
|
||||
dcl (l,i) byte;
|
||||
dcl table(4) byte data ('BWDS');
|
||||
do i=0 to last(table);
|
||||
if table(i) = l and i < 3 then return i;
|
||||
if table(i) = l and i = 3 then$do
|
||||
if accum(2) = 'B' then return 3;
|
||||
end$if;
|
||||
end;
|
||||
return i;
|
||||
end$proc legal$mod$letter;
|
||||
|
||||
legal$register: PROC byte;
|
||||
declare disp byte;
|
||||
if token.type <> reg then return 0;
|
||||
disp=0;
|
||||
if token.descr=byt then disp=8;
|
||||
if token.descr=dwrd then disp=16;
|
||||
return token.value + disp + 1;
|
||||
end$proc legal$register;
|
||||
|
||||
legal$seg$reg: PROC byte public;
|
||||
if token.type <> reg then return 0;
|
||||
if token.descr <> dwrd then return 0;
|
||||
return token.value + 1;
|
||||
end$proc legal$seg$reg;
|
||||
|
||||
put$b: PROC(b) public;
|
||||
dcl b byte;
|
||||
cm$counter=cm$counter+1;
|
||||
if cm$counter > 99 then$do
|
||||
cm$error=true;
|
||||
cm$body$full=true;
|
||||
return;
|
||||
end$if;
|
||||
cm$b$var=b;
|
||||
cmpt=cmpt+1;
|
||||
end$proc put$b;
|
||||
|
||||
put$w: PROC(w) public;
|
||||
dcl w addr;
|
||||
cm$counter=cm$counter+2;
|
||||
if cm$counter > 99 then$do
|
||||
cm$error=true;
|
||||
cm$body$full=true;
|
||||
return;
|
||||
end$if;
|
||||
cm$w$var=w;
|
||||
cmpt=cmpt+2;
|
||||
end$proc put$w;
|
||||
|
||||
update$cm$lists: PROC byte;
|
||||
dcl listptr address,next based listptr address;
|
||||
dcl ptr address;
|
||||
ptr=.listptr;
|
||||
if findcodemacro(cm$n$lg,.cm$name(0),ptr)
|
||||
then$do
|
||||
do while next <> 0;
|
||||
listptr=next;
|
||||
end$while;
|
||||
else$do
|
||||
if not new$cm$name(cm$n$lg,.cm$name(0),ptr)
|
||||
then return false;
|
||||
end$if;
|
||||
next=freept;
|
||||
if not new$cm$body(cm$counter,.cm$body(0))
|
||||
then return false;
|
||||
return true;
|
||||
end$proc update$cm$lists;
|
||||
|
||||
$eject
|
||||
|
||||
/* level 4 in the syntax-tree of coeemacro building */
|
||||
|
||||
register$rout: PROC (l);
|
||||
dcl l byte;
|
||||
call put$b(l);
|
||||
end$proc register$rout;
|
||||
|
||||
range$rout: PROC;
|
||||
|
||||
put$range: PROC(time);
|
||||
dcl time byte;
|
||||
if token.type = number then$do
|
||||
if time = first then$do
|
||||
cm$b$var=cm$b$var+numberrange;
|
||||
cmpt=cmpt+1;
|
||||
end$if;
|
||||
if token.value > 0ffh then$do
|
||||
cm$error=true; /* too large number */
|
||||
return;
|
||||
else$do
|
||||
call put$b(token.value);
|
||||
end$if;
|
||||
else$do
|
||||
if time = first then$do
|
||||
cm$b$var=cm$b$var+registerrange;
|
||||
cmpt=cmpt+1;
|
||||
end$if;
|
||||
do case legal$register;
|
||||
do; /* error, expecting a register spec. */
|
||||
cm$error=true;
|
||||
return;
|
||||
end;
|
||||
call register$rout(rax);
|
||||
call register$rout(rcx);
|
||||
call register$rout(rdx);
|
||||
call register$rout(rbx);
|
||||
call register$rout(rsp);
|
||||
call register$rout(rbp);
|
||||
call register$rout(rsi);
|
||||
call register$rout(rdi);
|
||||
call register$rout(ral);
|
||||
call register$rout(rcl);
|
||||
call register$rout(rdl);
|
||||
call register$rout(rbl);
|
||||
call register$rout(rah);
|
||||
call register$rout(rch);
|
||||
call register$rout(rdh);
|
||||
call register$rout(rbh);
|
||||
call register$rout(res);
|
||||
call register$rout(rcs);
|
||||
call register$rout(rss);
|
||||
call register$rout(rds);
|
||||
end$case;
|
||||
end$if;
|
||||
call scan;
|
||||
end$proc put$range;
|
||||
|
||||
|
||||
s$range: PROC;
|
||||
cmpt=cmpt-1;
|
||||
cm$b$var=cm$b$var+singlerange;
|
||||
call put$range(first);
|
||||
end$proc s$range;
|
||||
|
||||
|
||||
d$range: PROC;
|
||||
cmpt=cmpt-1;
|
||||
cm$b$var=cm$b$var+doublerange;
|
||||
call put$range(first);
|
||||
if accum(0) <> comma then$do
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
call scan;
|
||||
call put$range(second);
|
||||
if accum(0) <> rightpar then$do
|
||||
cm$error=true;
|
||||
return;
|
||||
end$if;
|
||||
end$proc d$range;
|
||||
|
||||
/* mainpart of range routine */
|
||||
|
||||
call scan; /* skip left paranthesis */
|
||||
if nextch = comma then call d$range;
|
||||
else call s$range;
|
||||
call scan;
|
||||
end$proc range$rout;
|
||||
|
||||
spec$letter$rout: PROC(l);
|
||||
dcl l byte;
|
||||
call put$b(l);
|
||||
end$proc spec$letter$rout;
|
||||
|
||||
mod$letter$rout: PROC(l);
|
||||
dcl l byte;
|
||||
call put$b(l);
|
||||
end$proc mod$letter$rout;
|
||||
|
||||
$eject
|
||||
|
||||
/* level 3 in the syntax-tree of codemacro building */
|
||||
|
||||
par$descr$rout: PROC;
|
||||
call copy(acclen,.accum(0),.cm$pm$var);
|
||||
pmpt=pmpt+acclen;
|
||||
cm$pm$var=0; /* end of par.name */
|
||||
pmpt=pmpt+1;
|
||||
call scan;
|
||||
if accum(0) <> colon then$do
|
||||
/* error, expected colon in parameterdecl */
|
||||
cm$error=true;
|
||||
end$if;
|
||||
call scan;
|
||||
do case legal$spec$letter(accum(0));
|
||||
call spec$letter$rout(speca);
|
||||
call spec$letter$rout(specc);
|
||||
call spec$letter$rout(specd);
|
||||
call spec$letter$rout(spece);
|
||||
call spec$letter$rout(specm);
|
||||
call spec$letter$rout(specr);
|
||||
call spec$letter$rout(specs);
|
||||
call spec$letter$rout(specx);
|
||||
do; /* error, expected specifier letter */
|
||||
cm$error=true;
|
||||
return;
|
||||
end;
|
||||
end$case;
|
||||
|
||||
do case legal$mod$letter(accum(1));
|
||||
call mod$letter$rout(modb);
|
||||
call mod$letter$rout(modw);
|
||||
call mod$letter$rout(modd);
|
||||
call mod$letter$rout(modsb);
|
||||
call mod$letter$rout(nomod); /* no modletter */
|
||||
end$case;
|
||||
call scan;
|
||||
if accum(0) = leftpar then call range$rout;
|
||||
cm$body(2)=cm$body(2)+1;
|
||||
end$proc par$descr$rout;
|
||||
|
||||
$eject
|
||||
|
||||
/* level 2 in the syntax-tree of codemacro building */
|
||||
|
||||
/* Procedure to initialize temporary storage and pointers
|
||||
conserning the building of codemacro */
|
||||
init$cm$rout: PROC public;
|
||||
cm$n$pt=.cm$name(0);
|
||||
cmpt=.cm$body(0)+3; /* correcting for the head */
|
||||
pmpt=.par$name(0);
|
||||
CALL FILL (0, LENGTH (CM$NAME), .CM$NAME);
|
||||
CALL FILL (0, LENGTH (CM$BODY), .CM$BODY);
|
||||
CALL FILL (0, LENGTH (PAR$NAME), .PAR$NAME);
|
||||
ant$par=0;
|
||||
cm$counter=3;
|
||||
cm$body$full=false;
|
||||
cm$list$overflow=false;
|
||||
end$proc init$cm$rout;
|
||||
|
||||
name$rout: PROC byte public;
|
||||
if token.type <> ident then return false;
|
||||
call copy(acclen,.accum(0),.cm$name(0));
|
||||
cm$n$lg=acclen;
|
||||
call scan;
|
||||
return true;
|
||||
end$proc name$rout;
|
||||
|
||||
formal$list$rout: PROC public;
|
||||
do while token.type = ident;
|
||||
call par$descr$rout;
|
||||
if accum(0) <> ',' then return; /* end of parameters */
|
||||
call scan;
|
||||
end$while;
|
||||
end$proc formal$list$rout;
|
||||
|
||||
terminate$cm$rout: PROC public;
|
||||
if global$cm$error then$do
|
||||
/* error present in codemacrodef, */
|
||||
/* no updating of codemacrolist */
|
||||
return;
|
||||
end$if;
|
||||
if not update$cm$lists
|
||||
then$do
|
||||
cm$error=true; /* overflow, no more vacant memory */
|
||||
cm$list$overflow=true;
|
||||
return;
|
||||
end$if;
|
||||
end$proc terminate$cm$rout;
|
||||
|
||||
|
||||
end$module cm2;
|
||||
@@ -0,0 +1,43 @@
|
||||
$nolist
|
||||
|
||||
/* Literals used in codemacro specification : */
|
||||
|
||||
dcl
|
||||
divisor lit '0',
|
||||
mplier lit '0',
|
||||
place lit '0',
|
||||
itype lit '0',
|
||||
si$ptr lit '0',
|
||||
di$ptr lit '1',
|
||||
port lit '1',
|
||||
adr lit '0',
|
||||
dst lit '0',
|
||||
src lit '1',
|
||||
opcode lit '0';
|
||||
|
||||
/* Literals to simplify table punching: */
|
||||
|
||||
dcl
|
||||
cmachead lit 'struc (next address,nopar byte',
|
||||
cmac2struc lit 'cmachead,body(2) byte)',
|
||||
cmac3struc lit 'cmachead,body(3) byte)',
|
||||
cmac4struc lit 'cmachead,body(4) byte)',
|
||||
cmac5struc lit 'cmachead,body(5) byte)',
|
||||
cmac6struc lit 'cmachead,body(6) byte)',
|
||||
cmac7struc lit 'cmachead,body(7) byte)',
|
||||
cmac8struc lit 'cmachead,body(8) byte)',
|
||||
cmac9struc lit 'cmachead,body(9) byte)',
|
||||
cmac10struc lit 'cmachead,body(10) byte)',
|
||||
cmac11struc lit 'cmachead,body(11) byte)',
|
||||
cmac12struc lit 'cmachead,body(12) byte)',
|
||||
cmac13struc lit 'cmachead,body(13) byte)',
|
||||
cmac14struc lit 'cmachead,body(14) byte)',
|
||||
cmac15struc lit 'cmachead,body(15) byte)',
|
||||
cmac16struc lit 'cmachead,body(16) byte)',
|
||||
cmac17struc lit 'cmachead,body(17) byte)',
|
||||
cmac18struc lit 'cmachead,body(18) byte)',
|
||||
cmac19struc lit 'cmachead,body(19) byte)',
|
||||
cmac20struc lit 'cmachead,body(20) byte)',
|
||||
cmac21struc lit 'cmachead,body(21) byte)';
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,576 @@
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE CMAC1
|
||||
OBJECT MODULE PLACED IN CMAC1.OBJ
|
||||
COMPILER INVOKED BY: :F0: CMAC1.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100)
|
||||
|
||||
|
||||
|
||||
$title ('CODEMACRO DEFINITIONS - PART 1')
|
||||
1 cmac1:
|
||||
do;
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmacd.lit)
|
||||
= $nolist
|
||||
$include (:f1:equals.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmac.lit)
|
||||
= $nolist
|
||||
|
||||
/* Code-macro table: */
|
||||
|
||||
18 1 dcl
|
||||
|
||||
/* AAA */
|
||||
aaa1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,37h, /* DB 37H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AAD */
|
||||
aad1 cmac4struc public data(
|
||||
nil,0,
|
||||
mdwn,0d5h,0ah, /* DW 0AD5H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AAM */
|
||||
aam1 cmac4struc public data(
|
||||
nil,0,
|
||||
mdwn,0d4h,0ah, /* DW 0AD4H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AAS */
|
||||
aas1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,3fh, /* DB 3FH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Eb,src:Db */
|
||||
adc1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 2
|
||||
|
||||
|
||||
|
||||
/* ADC dst:Ew,src:Db */
|
||||
adc2 cmac14struc data(
|
||||
.adc1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Ew,src:Dsb */
|
||||
adc3 cmac14struc data(
|
||||
.adc2,2,
|
||||
specE,modw,
|
||||
specD,modsb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Ew,src:Dw */
|
||||
adc4 cmac14struc data(
|
||||
.adc3,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Ab,src:Db */
|
||||
adc5 cmac9struc data(
|
||||
.adc4,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,14h, /* DB 14H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Aw,src:Db */
|
||||
adc6 cmac9struc data(
|
||||
.adc5,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,15h, /* DB 15H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Aw,src:Dw */
|
||||
adc7 cmac9struc data(
|
||||
.adc6,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 3
|
||||
|
||||
|
||||
mdbn,15h, /* DB 15H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Eb,src:Rb */
|
||||
adc8 cmac12struc data(
|
||||
.adc7,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,10h, /* DB 10H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Ew,src:Rw */
|
||||
adc9 cmac12struc data(
|
||||
.adc8,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,11h, /* DB 11H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Rb,src:Eb */
|
||||
adc10 cmac12struc data(
|
||||
.adc9,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,12h, /* DB 12H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Rw,src:Ew */
|
||||
adc11 cmac12struc public data(
|
||||
.adc10,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,13h, /* DB 13H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Eb,src:Db */
|
||||
add1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ew,src:Db */
|
||||
add2 cmac14struc data(
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 4
|
||||
|
||||
|
||||
.add1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ew,src:Dsb */
|
||||
add3 cmac14struc data(
|
||||
.add2,2,
|
||||
specE,modw,
|
||||
specD,modsb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ew,src:Dw */
|
||||
add4 cmac14struc data(
|
||||
.add3,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ab,src:Db */
|
||||
add5 cmac9struc data(
|
||||
.add4,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,04h, /* DB 04H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Aw,src:Db */
|
||||
add6 cmac9struc data(
|
||||
.add5,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,05h, /* DB 05H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Aw,src:Dw */
|
||||
add7 cmac9struc data(
|
||||
.add6,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
mdbn,05h, /* DB 05H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 5
|
||||
|
||||
|
||||
|
||||
/* ADD dst:Eb,src:Rb */
|
||||
add8 cmac12struc data(
|
||||
.add7,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0, /* DB 00H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ew,src:Rw */
|
||||
add9 cmac12struc data(
|
||||
.add8,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,1, /* DB 01H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Rb,src:Eb */
|
||||
add10 cmac12struc data(
|
||||
.add9,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,2, /* DB 02H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Rw,src:Ew */
|
||||
add11 cmac12struc public data(
|
||||
.add10,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,3, /* DB 03H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Eb,src:Db */
|
||||
and1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Ew,src:Db */
|
||||
and2 cmac14struc data(
|
||||
.and1,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 6
|
||||
|
||||
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Ew,src:Dw */
|
||||
and3 cmac14struc data(
|
||||
.and2,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Ab,src:Db */
|
||||
and4 cmac9struc data(
|
||||
.and3,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,24h, /* DB 24H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Aw,src:Db */
|
||||
and5 cmac9struc data(
|
||||
.and4,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,25h, /* DB 25H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Aw,src:Dw */
|
||||
and6 cmac9struc data(
|
||||
.and5,2,
|
||||
specA,modw,specD,modw,
|
||||
mdbn,25h, /* DB 25H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Eb,src:Rb */
|
||||
and7 cmac12struc data(
|
||||
.and6,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,20h, /* DB 20H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Ew,src:Rw */
|
||||
and8 cmac12struc data(
|
||||
.and7,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,21h, /* DB 21H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm),
|
||||
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 7
|
||||
|
||||
|
||||
/* AND dst:Rb,src:Eb */
|
||||
and9 cmac12struc data(
|
||||
.and8,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,22h, /* DB 22H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Rw,src:Ew */
|
||||
and10 cmac12struc public data(
|
||||
.and9,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,23h, /* DB 23H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALL adr:Ew */
|
||||
call1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modw,
|
||||
msegfix,adr, /* SEGFIX adr */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,2,adr, /* MODRM 2,adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALL adr:Cb */
|
||||
call2 cmac7struc data(
|
||||
.call1,1,
|
||||
specC,modb,
|
||||
mdbn,0e8h, /* DB 0E8H */
|
||||
mrelw,adr, /* RELW adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALL adr:Cw */
|
||||
call3 cmac7struc public data(
|
||||
.call2,1,
|
||||
specC,modw,
|
||||
mdbn,0e8h, /* DB 0E8H */
|
||||
mrelw,adr, /* RELW adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALLF adr:Ed */
|
||||
callf1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modd,
|
||||
msegfix,adr, /* SEGFIX adr */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,3,adr, /* MODRM 3,adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALLF adr:Cd */
|
||||
callf2 cmac7struc public data(
|
||||
.callf1,1,
|
||||
specC,modd,
|
||||
mdbn,9ah, /* DB 9AH */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 8
|
||||
|
||||
|
||||
mddf,adr, /* DD adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CBW */
|
||||
cbw1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,98h, /* DB 98H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CLC */
|
||||
clc1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0f8h, /* DB 0F8H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CLD */
|
||||
cld1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0fch, /* DB 0FCH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CLI */
|
||||
cli1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0fah, /* DB 0FAH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMC */
|
||||
cmc1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0f5h, /* DB 0F5H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Eb,src:Db */
|
||||
cmp1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ew,src:Db */
|
||||
cmp2 cmac14struc data(
|
||||
.cmp1,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ew,src:Dsb */
|
||||
cmp3 cmac14struc data(
|
||||
.cmp2,2,
|
||||
specE,modw,specD,modsb,
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 9
|
||||
|
||||
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ew,src:Dw */
|
||||
cmp4 cmac14struc data(
|
||||
.cmp3,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ab,src:Db */
|
||||
cmp5 cmac9struc data(
|
||||
.cmp4,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,3ch, /* DB 3CH */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Aw,src:Db */
|
||||
cmp6 cmac9struc data(
|
||||
.cmp5,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,3dh, /* DB 3DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Aw,src:Dw */
|
||||
cmp7 cmac9struc data(
|
||||
.cmp6,2,
|
||||
specA,modw,specD,modw,
|
||||
mdbn,3dh, /* DB 3DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Eb,src:Rb */
|
||||
cmp8 cmac12struc data(
|
||||
.cmp7,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,38h, /* DB 38H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ew,src:Rw */
|
||||
cmp9 cmac12struc data(
|
||||
.cmp8,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,39h, /* DB 39H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 1 10/5/81 PAGE 10
|
||||
|
||||
|
||||
|
||||
/* CMP dst:Rb,src:Eb */
|
||||
cmp10 cmac12struc data(
|
||||
.cmp9,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,3ah, /* DB 3AH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Rw,src:Ew */
|
||||
cmp11 cmac12struc public data(
|
||||
.cmp10,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,3bh, /* DB 3BH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm); /* ENDM */
|
||||
|
||||
19 1 end$module cmac1;
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0000H 0D
|
||||
CONSTANT AREA SIZE = 02EFH 751D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0000H 0D
|
||||
826 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,523 @@
|
||||
$title ('CODEMACRO DEFINITIONS - PART 1')
|
||||
cmac1:
|
||||
do;
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:cmacd.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:cmac.lit)
|
||||
|
||||
/* Code-macro table: */
|
||||
|
||||
dcl
|
||||
|
||||
/* AAA */
|
||||
aaa1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,37h, /* DB 37H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AAD */
|
||||
aad1 cmac4struc public data(
|
||||
nil,0,
|
||||
mdwn,0d5h,0ah, /* DW 0AD5H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AAM */
|
||||
aam1 cmac4struc public data(
|
||||
nil,0,
|
||||
mdwn,0d4h,0ah, /* DW 0AD4H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AAS */
|
||||
aas1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,3fh, /* DB 3FH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Eb,src:Db */
|
||||
adc1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Ew,src:Db */
|
||||
adc2 cmac14struc data(
|
||||
.adc1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Ew,src:Dsb */
|
||||
adc3 cmac14struc data(
|
||||
.adc2,2,
|
||||
specE,modw,
|
||||
specD,modsb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Ew,src:Dw */
|
||||
adc4 cmac14struc data(
|
||||
.adc3,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Ab,src:Db */
|
||||
adc5 cmac9struc data(
|
||||
.adc4,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,14h, /* DB 14H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Aw,src:Db */
|
||||
adc6 cmac9struc data(
|
||||
.adc5,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,15h, /* DB 15H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Aw,src:Dw */
|
||||
adc7 cmac9struc data(
|
||||
.adc6,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
mdbn,15h, /* DB 15H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Eb,src:Rb */
|
||||
adc8 cmac12struc data(
|
||||
.adc7,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,10h, /* DB 10H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Ew,src:Rw */
|
||||
adc9 cmac12struc data(
|
||||
.adc8,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,11h, /* DB 11H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Rb,src:Eb */
|
||||
adc10 cmac12struc data(
|
||||
.adc9,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,12h, /* DB 12H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADC dst:Rw,src:Ew */
|
||||
adc11 cmac12struc public data(
|
||||
.adc10,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,13h, /* DB 13H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Eb,src:Db */
|
||||
add1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ew,src:Db */
|
||||
add2 cmac14struc data(
|
||||
.add1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ew,src:Dsb */
|
||||
add3 cmac14struc data(
|
||||
.add2,2,
|
||||
specE,modw,
|
||||
specD,modsb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ew,src:Dw */
|
||||
add4 cmac14struc data(
|
||||
.add3,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ab,src:Db */
|
||||
add5 cmac9struc data(
|
||||
.add4,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,04h, /* DB 04H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Aw,src:Db */
|
||||
add6 cmac9struc data(
|
||||
.add5,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,05h, /* DB 05H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Aw,src:Dw */
|
||||
add7 cmac9struc data(
|
||||
.add6,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
mdbn,05h, /* DB 05H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Eb,src:Rb */
|
||||
add8 cmac12struc data(
|
||||
.add7,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0, /* DB 00H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Ew,src:Rw */
|
||||
add9 cmac12struc data(
|
||||
.add8,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,1, /* DB 01H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Rb,src:Eb */
|
||||
add10 cmac12struc data(
|
||||
.add9,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,2, /* DB 02H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ADD dst:Rw,src:Ew */
|
||||
add11 cmac12struc public data(
|
||||
.add10,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,3, /* DB 03H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Eb,src:Db */
|
||||
and1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Ew,src:Db */
|
||||
and2 cmac14struc data(
|
||||
.and1,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Ew,src:Dw */
|
||||
and3 cmac14struc data(
|
||||
.and2,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Ab,src:Db */
|
||||
and4 cmac9struc data(
|
||||
.and3,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,24h, /* DB 24H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Aw,src:Db */
|
||||
and5 cmac9struc data(
|
||||
.and4,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,25h, /* DB 25H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Aw,src:Dw */
|
||||
and6 cmac9struc data(
|
||||
.and5,2,
|
||||
specA,modw,specD,modw,
|
||||
mdbn,25h, /* DB 25H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Eb,src:Rb */
|
||||
and7 cmac12struc data(
|
||||
.and6,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,20h, /* DB 20H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Ew,src:Rw */
|
||||
and8 cmac12struc data(
|
||||
.and7,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,21h, /* DB 21H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm),
|
||||
|
||||
/* AND dst:Rb,src:Eb */
|
||||
and9 cmac12struc data(
|
||||
.and8,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,22h, /* DB 22H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* AND dst:Rw,src:Ew */
|
||||
and10 cmac12struc public data(
|
||||
.and9,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,23h, /* DB 23H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALL adr:Ew */
|
||||
call1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modw,
|
||||
msegfix,adr, /* SEGFIX adr */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,2,adr, /* MODRM 2,adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALL adr:Cb */
|
||||
call2 cmac7struc data(
|
||||
.call1,1,
|
||||
specC,modb,
|
||||
mdbn,0e8h, /* DB 0E8H */
|
||||
mrelw,adr, /* RELW adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALL adr:Cw */
|
||||
call3 cmac7struc public data(
|
||||
.call2,1,
|
||||
specC,modw,
|
||||
mdbn,0e8h, /* DB 0E8H */
|
||||
mrelw,adr, /* RELW adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALLF adr:Ed */
|
||||
callf1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modd,
|
||||
msegfix,adr, /* SEGFIX adr */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,3,adr, /* MODRM 3,adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CALLF adr:Cd */
|
||||
callf2 cmac7struc public data(
|
||||
.callf1,1,
|
||||
specC,modd,
|
||||
mdbn,9ah, /* DB 9AH */
|
||||
mddf,adr, /* DD adr */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CBW */
|
||||
cbw1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,98h, /* DB 98H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CLC */
|
||||
clc1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0f8h, /* DB 0F8H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CLD */
|
||||
cld1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0fch, /* DB 0FCH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CLI */
|
||||
cli1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0fah, /* DB 0FAH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMC */
|
||||
cmc1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0f5h, /* DB 0F5H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Eb,src:Db */
|
||||
cmp1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ew,src:Db */
|
||||
cmp2 cmac14struc data(
|
||||
.cmp1,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ew,src:Dsb */
|
||||
cmp3 cmac14struc data(
|
||||
.cmp2,2,
|
||||
specE,modw,specD,modsb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ew,src:Dw */
|
||||
cmp4 cmac14struc data(
|
||||
.cmp3,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ab,src:Db */
|
||||
cmp5 cmac9struc data(
|
||||
.cmp4,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,3ch, /* DB 3CH */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Aw,src:Db */
|
||||
cmp6 cmac9struc data(
|
||||
.cmp5,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,3dh, /* DB 3DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Aw,src:Dw */
|
||||
cmp7 cmac9struc data(
|
||||
.cmp6,2,
|
||||
specA,modw,specD,modw,
|
||||
mdbn,3dh, /* DB 3DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Eb,src:Rb */
|
||||
cmp8 cmac12struc data(
|
||||
.cmp7,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,38h, /* DB 38H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Ew,src:Rw */
|
||||
cmp9 cmac12struc data(
|
||||
.cmp8,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,39h, /* DB 39H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Rb,src:Eb */
|
||||
cmp10 cmac12struc data(
|
||||
.cmp9,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,3ah, /* DB 3AH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMP dst:Rw,src:Ew */
|
||||
cmp11 cmac12struc public data(
|
||||
.cmp10,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,3bh, /* DB 3BH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm); /* ENDM */
|
||||
|
||||
end$module cmac1;
|
||||
@@ -0,0 +1,604 @@
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE CMAC2
|
||||
OBJECT MODULE PLACED IN CMAC2.OBJ
|
||||
COMPILER INVOKED BY: :F0: CMAC2.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100)
|
||||
|
||||
|
||||
|
||||
$title ('CODEMACRO DEFINITIONS - PART 2')
|
||||
1 cmac2:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmacd.lit)
|
||||
= $nolist
|
||||
$include (:f1:equals.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmac.lit)
|
||||
= $nolist
|
||||
|
||||
18 1 dcl
|
||||
|
||||
/* CMPS dst:Eb,src:Eb */
|
||||
cmps1 cmac12struc data(
|
||||
nil,2,
|
||||
specE,modb,specE,modb,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0a6h, /* DB 0A6H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMPS dst:Ew,src:Ew */
|
||||
cmps2 cmac12struc public data(
|
||||
.cmps1,2,
|
||||
specE,modw,specE,modw,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0a7h, /* DB 0A7H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMPSB */
|
||||
CMPSB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0A6H,
|
||||
MENDM),
|
||||
|
||||
/* CMPSW */
|
||||
CMPSW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0A7H,
|
||||
MENDM),
|
||||
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 2
|
||||
|
||||
|
||||
/* CWD */
|
||||
cwd1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,99h, /* DB 99H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DAA */
|
||||
daa1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,27h, /* DB 27H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DAS */
|
||||
das1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,2fh, /* DB 2FH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DEC dst:Eb */
|
||||
dec1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0feh, /* DB 0FEH */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DEC dst:Ew */
|
||||
dec2 cmac10struc data(
|
||||
.dec1,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DEC dst:Rw */
|
||||
dec3 cmac12struc public data(
|
||||
.dec2,1,
|
||||
specR,modw,
|
||||
mdbit, /* DBIT 5(9H),3(dst) */
|
||||
mnumberbits,5,9h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm),
|
||||
|
||||
/* DIV divisor:Eb */
|
||||
div1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,divisor, /* SEGFIX divisor */
|
||||
mdbn,0f6h, /* DB 6FH */
|
||||
mmodrm1,6,divisor, /* MODRM divisor */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DIV divisor:Ew */
|
||||
div2 cmac10struc public data(
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 3
|
||||
|
||||
|
||||
.div1,1,
|
||||
specE,modw,
|
||||
msegfix,divisor, /* SEGFIX divisor */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,6,divisor, /* MODRM 6,divisor */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ESC opcode:Db(0,63),src:Eb */
|
||||
esc1 cmac21struc data(
|
||||
nil,2,
|
||||
specD,modb+doublerange+numberrange,0,63,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbit, /* DBIT 5(1BH),3(opcode(3)) */
|
||||
mnumberbits,5,1bh,
|
||||
mformalbits,3,opcode,3,
|
||||
mendbit,
|
||||
mmodrm2,opcode,src, /* MODRM opcode,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ESC opcode:Db(0,63),src:Ew */
|
||||
esc2 cmac21struc data(
|
||||
.esc1,2,
|
||||
specD,modb+doublerange+numberrange,0,63,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbit, /* DBIT 5(1BH),3(opcode(3)) */
|
||||
mnumberbits,5,1bh,
|
||||
mformalbits,3,opcode,3,
|
||||
mendbit,
|
||||
mmodrm2,opcode,src, /* MODRM opcode,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ESC opcode:Db(0,63),src:Ed */
|
||||
esc3 cmac21struc public data(
|
||||
.esc2,2,
|
||||
specD,modb+doublerange+numberrange,0,63,
|
||||
specE,modd,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbit, /* DBIT 5(1BH),3(opcode(3)) */
|
||||
mnumberbits,5,1bh,
|
||||
mformalbits,3,opcode,3,
|
||||
mendbit,
|
||||
mmodrm2,opcode,src, /* MODRM opcode,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* HLT */
|
||||
hlt1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0f4h, /* DB 0F4H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IDIV divisor:Eb */
|
||||
idiv1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,divisor, /* SEGFIX divisor */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 4
|
||||
|
||||
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,7,divisor, /* MODRM 7,divisor */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IDIV divisor:Ew */
|
||||
idiv2 cmac10struc public data(
|
||||
.idiv1,1,
|
||||
specE,modw,
|
||||
msegfix,divisor, /* SEGFIX divisor */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,7,divisor, /* MODRM 7,divisor */
|
||||
mendm),
|
||||
|
||||
/* IMUL mplier:Eb */
|
||||
imul1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,mplier, /* SEGFIX mplier */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,5,mplier, /* MODRM 5,mplier */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IMUL mplier:Ew */
|
||||
imul2 cmac10struc public data(
|
||||
.imul1,1,
|
||||
specE,modw,
|
||||
msegfix,mplier, /* SEGFIX mplier */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,5,mplier, /* MODRM 5,mplier */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IN dst:Ab,port:Db */
|
||||
in1 cmac9struc data(
|
||||
nil,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,0e4h, /* DB 0E4H */
|
||||
mdbf,port, /* DB port */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IN dst:Aw,port:Db */
|
||||
in2 cmac9struc data(
|
||||
.in1,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,0e5h, /* DB 0E5H */
|
||||
mdbf,port, /* DB port */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IN dst:Ab,port:Rw(DX) */
|
||||
in3 cmac8struc data(
|
||||
.in2,2,
|
||||
specA,modb,
|
||||
specR,modw+singlerange+register$range,rdx,
|
||||
mdbn,0ech, /* DB 0ECH */
|
||||
mendm),
|
||||
|
||||
/* IN dst:Aw,port:Rw(DX) */
|
||||
in4 cmac8struc public data(
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 5
|
||||
|
||||
|
||||
.in3,2,
|
||||
specA,modw,
|
||||
specR,modw+singlerange+register$range,rdx,
|
||||
mdbn,0edh, /* DB 0EDH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INC dst:Eb */
|
||||
inc1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0feh, /* DB 0FEH */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INC dst:Ew */
|
||||
inc2 cmac10struc data(
|
||||
.inc1,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INC dst:Rw */
|
||||
inc3 cmac12struc public data(
|
||||
.inc2,1,
|
||||
specR,modw,
|
||||
mdbit, /* DBIT 5(08H),3(dst(0)) */
|
||||
mnumberbits,5,08h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INT itype:Db */
|
||||
int1 cmac7struc data(
|
||||
nil,1,
|
||||
specD,modb,
|
||||
mdbn,0cdh, /* DB 0CDH */
|
||||
mdbf,itype, /* DB itype */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INT itype:Db(3) */
|
||||
int2 cmac6struc public data(
|
||||
.int1,1,
|
||||
specD,modb+singlerange,3,
|
||||
mdbn,0cch, /* DB 0CCH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INTO */
|
||||
into1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0ceh, /* DB 0CEH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
|
||||
/* IRET */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 6
|
||||
|
||||
|
||||
iret1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0cfh, /* DB 0CFH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JA place:Cb */
|
||||
ja1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,77h, /* DB 77H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JAE place:Cb */
|
||||
jae1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,73h, /* DB 73H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JB place:Cb */
|
||||
jb1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,72h, /* DB 72H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JBE place:Cb */
|
||||
jbe1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,76h, /* DB 76H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JCXZ place:Cb */
|
||||
jcxz1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0e3h, /* DB 0E3H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JE place:Cb */
|
||||
je1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,74h, /* DB 74H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JG place:Cb */
|
||||
jg1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 7
|
||||
|
||||
|
||||
mdbn,7fh, /* DB 7FH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JGE place:Cb */
|
||||
jge1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7dh, /* DB 7DH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JL place:Cb */
|
||||
jl1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7ch, /* DB 7CH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JLE place:Cb */
|
||||
jle1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7eh, /* DB 7EH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMP place:Ew */
|
||||
jmp1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modw,
|
||||
msegfix,place, /* SEGFIX place */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,4,place, /* MODRM 4,place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMP place:Cw */
|
||||
jmp2 cmac7struc public data(
|
||||
.jmp1,1,
|
||||
specC,modw,
|
||||
mdbn,0e9h, /* DB 0E9H */
|
||||
mrelw,place, /* RELW place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMPF place:Md */
|
||||
jmpf1 cmac10struc data(
|
||||
nil,1,
|
||||
specM,modd,
|
||||
msegfix,place, /* SEGFIX place */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,5,place, /* MODRM 5,place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMPF place:Cd */
|
||||
jmpf2 cmac7struc public data(
|
||||
.jmpf1,1,
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 8
|
||||
|
||||
|
||||
specC,modd,
|
||||
mdbn,0eah, /* DB 0EAH */
|
||||
mddf,place, /* DD place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMPS place:Cb */
|
||||
jmps1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0ebh, /* DB 0EBH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JNE place:Cb */
|
||||
jne1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,75h, /* DB 75H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JNO place:Cb */
|
||||
jno1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,71h, /* DB 71H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JNP place:Cb */
|
||||
jnp1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7bh, /* DB 7BH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JNS place:Cb */
|
||||
jns1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,79h, /* DB 79H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JO place:Cb */
|
||||
jo1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,70h, /* DB 70H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JP place:Cb */
|
||||
jp1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 9
|
||||
|
||||
|
||||
mdbn,7ah, /* DB 7AH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JS place:Cb */
|
||||
js1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,78h, /* DB 78H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LAHF */
|
||||
lahf1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9fh, /* DB 9FH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LDS dst:Rw,src:Ed */
|
||||
lds1 cmac12struc public data(
|
||||
nil,2,
|
||||
specR,modw,specE,modd,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0c5h, /* DB 0C5H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LES dst:Rw,src:Ed */
|
||||
les1 cmac12struc public data(
|
||||
nil,2,
|
||||
specR,modw,specE,modd,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0c4h, /* DB 0C4H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LEA dst:Rw,src:M */
|
||||
lea1 cmac10struc public data(
|
||||
nil,2,
|
||||
specR,modw,specM,nomod,
|
||||
mdbn,8dh, /* DB 8DH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LOCK prefx */
|
||||
lock1 cmac3struc public data(
|
||||
nil,0+prefix$on,
|
||||
mdbn,0f0h, /* DB 0F0H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LODS SI$ptr:Eb */
|
||||
lods1 cmac7struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,si$ptr, /* SEGFIX SI$ptr */
|
||||
mdbn,0ach, /* DB 0ACH */
|
||||
mendm), /* ENDM */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 10
|
||||
|
||||
|
||||
|
||||
/* LODS SI$ptr:Ew */
|
||||
lods2 cmac7struc public data(
|
||||
.lods1,1,
|
||||
specE,modw,
|
||||
msegfix,si$ptr, /* SEGFIX SI$ptr */
|
||||
mdbn,0adh, /* DB 0AdH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LODSB */
|
||||
LODSB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0ACH,
|
||||
MENDM),
|
||||
|
||||
/* LODSW */
|
||||
LODSW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0ADH,
|
||||
MENDM),
|
||||
|
||||
/* LOOP place:Cb */
|
||||
loop1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0e2h, /* DB 0E2H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LOOPE place:Cb */
|
||||
loope1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0e1h, /* DB 0E1H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LOOPNE place:Cb */
|
||||
loopne1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0e0h, /* DB 0E0H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm); /* ENDM */
|
||||
|
||||
19 1 end$module cmac2;
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0000H 0D
|
||||
CONSTANT AREA SIZE = 02CEH 718D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0000H 0D
|
||||
852 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 2 10/5/81 PAGE 11
|
||||
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,549 @@
|
||||
$title ('CODEMACRO DEFINITIONS - PART 2')
|
||||
cmac2:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:cmacd.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:cmac.lit)
|
||||
|
||||
dcl
|
||||
|
||||
/* CMPS dst:Eb,src:Eb */
|
||||
cmps1 cmac12struc data(
|
||||
nil,2,
|
||||
specE,modb,specE,modb,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0a6h, /* DB 0A6H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMPS dst:Ew,src:Ew */
|
||||
cmps2 cmac12struc public data(
|
||||
.cmps1,2,
|
||||
specE,modw,specE,modw,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0a7h, /* DB 0A7H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* CMPSB */
|
||||
CMPSB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0A6H,
|
||||
MENDM),
|
||||
|
||||
/* CMPSW */
|
||||
CMPSW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0A7H,
|
||||
MENDM),
|
||||
|
||||
/* CWD */
|
||||
cwd1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,99h, /* DB 99H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DAA */
|
||||
daa1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,27h, /* DB 27H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DAS */
|
||||
das1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,2fh, /* DB 2FH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DEC dst:Eb */
|
||||
dec1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0feh, /* DB 0FEH */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DEC dst:Ew */
|
||||
dec2 cmac10struc data(
|
||||
.dec1,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DEC dst:Rw */
|
||||
dec3 cmac12struc public data(
|
||||
.dec2,1,
|
||||
specR,modw,
|
||||
mdbit, /* DBIT 5(9H),3(dst) */
|
||||
mnumberbits,5,9h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm),
|
||||
|
||||
/* DIV divisor:Eb */
|
||||
div1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,divisor, /* SEGFIX divisor */
|
||||
mdbn,0f6h, /* DB 6FH */
|
||||
mmodrm1,6,divisor, /* MODRM divisor */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* DIV divisor:Ew */
|
||||
div2 cmac10struc public data(
|
||||
.div1,1,
|
||||
specE,modw,
|
||||
msegfix,divisor, /* SEGFIX divisor */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,6,divisor, /* MODRM 6,divisor */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ESC opcode:Db(0,63),src:Eb */
|
||||
esc1 cmac21struc data(
|
||||
nil,2,
|
||||
specD,modb+doublerange+numberrange,0,63,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbit, /* DBIT 5(1BH),3(opcode(3)) */
|
||||
mnumberbits,5,1bh,
|
||||
mformalbits,3,opcode,3,
|
||||
mendbit,
|
||||
mmodrm2,opcode,src, /* MODRM opcode,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ESC opcode:Db(0,63),src:Ew */
|
||||
esc2 cmac21struc data(
|
||||
.esc1,2,
|
||||
specD,modb+doublerange+numberrange,0,63,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbit, /* DBIT 5(1BH),3(opcode(3)) */
|
||||
mnumberbits,5,1bh,
|
||||
mformalbits,3,opcode,3,
|
||||
mendbit,
|
||||
mmodrm2,opcode,src, /* MODRM opcode,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ESC opcode:Db(0,63),src:Ed */
|
||||
esc3 cmac21struc public data(
|
||||
.esc2,2,
|
||||
specD,modb+doublerange+numberrange,0,63,
|
||||
specE,modd,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbit, /* DBIT 5(1BH),3(opcode(3)) */
|
||||
mnumberbits,5,1bh,
|
||||
mformalbits,3,opcode,3,
|
||||
mendbit,
|
||||
mmodrm2,opcode,src, /* MODRM opcode,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* HLT */
|
||||
hlt1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0f4h, /* DB 0F4H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IDIV divisor:Eb */
|
||||
idiv1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,divisor, /* SEGFIX divisor */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,7,divisor, /* MODRM 7,divisor */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IDIV divisor:Ew */
|
||||
idiv2 cmac10struc public data(
|
||||
.idiv1,1,
|
||||
specE,modw,
|
||||
msegfix,divisor, /* SEGFIX divisor */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,7,divisor, /* MODRM 7,divisor */
|
||||
mendm),
|
||||
|
||||
/* IMUL mplier:Eb */
|
||||
imul1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,mplier, /* SEGFIX mplier */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,5,mplier, /* MODRM 5,mplier */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IMUL mplier:Ew */
|
||||
imul2 cmac10struc public data(
|
||||
.imul1,1,
|
||||
specE,modw,
|
||||
msegfix,mplier, /* SEGFIX mplier */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,5,mplier, /* MODRM 5,mplier */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IN dst:Ab,port:Db */
|
||||
in1 cmac9struc data(
|
||||
nil,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,0e4h, /* DB 0E4H */
|
||||
mdbf,port, /* DB port */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IN dst:Aw,port:Db */
|
||||
in2 cmac9struc data(
|
||||
.in1,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,0e5h, /* DB 0E5H */
|
||||
mdbf,port, /* DB port */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* IN dst:Ab,port:Rw(DX) */
|
||||
in3 cmac8struc data(
|
||||
.in2,2,
|
||||
specA,modb,
|
||||
specR,modw+singlerange+register$range,rdx,
|
||||
mdbn,0ech, /* DB 0ECH */
|
||||
mendm),
|
||||
|
||||
/* IN dst:Aw,port:Rw(DX) */
|
||||
in4 cmac8struc public data(
|
||||
.in3,2,
|
||||
specA,modw,
|
||||
specR,modw+singlerange+register$range,rdx,
|
||||
mdbn,0edh, /* DB 0EDH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INC dst:Eb */
|
||||
inc1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0feh, /* DB 0FEH */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INC dst:Ew */
|
||||
inc2 cmac10struc data(
|
||||
.inc1,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INC dst:Rw */
|
||||
inc3 cmac12struc public data(
|
||||
.inc2,1,
|
||||
specR,modw,
|
||||
mdbit, /* DBIT 5(08H),3(dst(0)) */
|
||||
mnumberbits,5,08h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INT itype:Db */
|
||||
int1 cmac7struc data(
|
||||
nil,1,
|
||||
specD,modb,
|
||||
mdbn,0cdh, /* DB 0CDH */
|
||||
mdbf,itype, /* DB itype */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INT itype:Db(3) */
|
||||
int2 cmac6struc public data(
|
||||
.int1,1,
|
||||
specD,modb+singlerange,3,
|
||||
mdbn,0cch, /* DB 0CCH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* INTO */
|
||||
into1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0ceh, /* DB 0CEH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
|
||||
/* IRET */
|
||||
iret1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0cfh, /* DB 0CFH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JA place:Cb */
|
||||
ja1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,77h, /* DB 77H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JAE place:Cb */
|
||||
jae1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,73h, /* DB 73H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JB place:Cb */
|
||||
jb1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,72h, /* DB 72H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JBE place:Cb */
|
||||
jbe1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,76h, /* DB 76H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JCXZ place:Cb */
|
||||
jcxz1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0e3h, /* DB 0E3H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JE place:Cb */
|
||||
je1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,74h, /* DB 74H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JG place:Cb */
|
||||
jg1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7fh, /* DB 7FH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JGE place:Cb */
|
||||
jge1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7dh, /* DB 7DH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JL place:Cb */
|
||||
jl1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7ch, /* DB 7CH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JLE place:Cb */
|
||||
jle1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7eh, /* DB 7EH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMP place:Ew */
|
||||
jmp1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modw,
|
||||
msegfix,place, /* SEGFIX place */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,4,place, /* MODRM 4,place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMP place:Cw */
|
||||
jmp2 cmac7struc public data(
|
||||
.jmp1,1,
|
||||
specC,modw,
|
||||
mdbn,0e9h, /* DB 0E9H */
|
||||
mrelw,place, /* RELW place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMPF place:Md */
|
||||
jmpf1 cmac10struc data(
|
||||
nil,1,
|
||||
specM,modd,
|
||||
msegfix,place, /* SEGFIX place */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,5,place, /* MODRM 5,place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMPF place:Cd */
|
||||
jmpf2 cmac7struc public data(
|
||||
.jmpf1,1,
|
||||
specC,modd,
|
||||
mdbn,0eah, /* DB 0EAH */
|
||||
mddf,place, /* DD place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JMPS place:Cb */
|
||||
jmps1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0ebh, /* DB 0EBH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JNE place:Cb */
|
||||
jne1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,75h, /* DB 75H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JNO place:Cb */
|
||||
jno1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,71h, /* DB 71H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JNP place:Cb */
|
||||
jnp1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7bh, /* DB 7BH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JNS place:Cb */
|
||||
jns1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,79h, /* DB 79H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JO place:Cb */
|
||||
jo1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,70h, /* DB 70H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JP place:Cb */
|
||||
jp1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,7ah, /* DB 7AH */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* JS place:Cb */
|
||||
js1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,78h, /* DB 78H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LAHF */
|
||||
lahf1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9fh, /* DB 9FH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LDS dst:Rw,src:Ed */
|
||||
lds1 cmac12struc public data(
|
||||
nil,2,
|
||||
specR,modw,specE,modd,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0c5h, /* DB 0C5H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LES dst:Rw,src:Ed */
|
||||
les1 cmac12struc public data(
|
||||
nil,2,
|
||||
specR,modw,specE,modd,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0c4h, /* DB 0C4H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LEA dst:Rw,src:M */
|
||||
lea1 cmac10struc public data(
|
||||
nil,2,
|
||||
specR,modw,specM,nomod,
|
||||
mdbn,8dh, /* DB 8DH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LOCK prefx */
|
||||
lock1 cmac3struc public data(
|
||||
nil,0+prefix$on,
|
||||
mdbn,0f0h, /* DB 0F0H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LODS SI$ptr:Eb */
|
||||
lods1 cmac7struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,si$ptr, /* SEGFIX SI$ptr */
|
||||
mdbn,0ach, /* DB 0ACH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LODS SI$ptr:Ew */
|
||||
lods2 cmac7struc public data(
|
||||
.lods1,1,
|
||||
specE,modw,
|
||||
msegfix,si$ptr, /* SEGFIX SI$ptr */
|
||||
mdbn,0adh, /* DB 0AdH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LODSB */
|
||||
LODSB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0ACH,
|
||||
MENDM),
|
||||
|
||||
/* LODSW */
|
||||
LODSW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0ADH,
|
||||
MENDM),
|
||||
|
||||
/* LOOP place:Cb */
|
||||
loop1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0e2h, /* DB 0E2H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LOOPE place:Cb */
|
||||
loope1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0e1h, /* DB 0E1H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* LOOPNE place:Cb */
|
||||
loopne1 cmac7struc public data(
|
||||
nil,1,
|
||||
specC,modb,
|
||||
mdbn,0e0h, /* DB 0E0H */
|
||||
mrelb,place, /* RELB place */
|
||||
mendm); /* ENDM */
|
||||
|
||||
end$module cmac2;
|
||||
@@ -0,0 +1,527 @@
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 3 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE CMAC3
|
||||
OBJECT MODULE PLACED IN CMAC3.OBJ
|
||||
COMPILER INVOKED BY: :F0: CMAC3.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100)
|
||||
|
||||
|
||||
|
||||
$title ('CODEMACRO DEFINITIONS - PART 3')
|
||||
1 cmac3:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmacd.lit)
|
||||
= $nolist
|
||||
$include (:f1:equals.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmac.lit)
|
||||
= $nolist
|
||||
|
||||
18 1 dcl
|
||||
|
||||
/* MOV dst:Eb,src:Db */
|
||||
mov1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0c6h, /* DB 0C6h */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ew,src:Db */
|
||||
mov2 cmac14struc data(
|
||||
.mov1,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0c7h, /* DB 0C7h */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ew,src:Dw */
|
||||
mov3 cmac14struc data(
|
||||
.mov2,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0c7h, /* DB 0C7h */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 3 10/5/81 PAGE 2
|
||||
|
||||
|
||||
/* MOV dst:Rb,src:Db */
|
||||
mov4 cmac16struc data(
|
||||
.mov3,2,
|
||||
specR,modb,specD,modb,
|
||||
mdbit, /* DBIT 5(10110B),3(dst(0)) */
|
||||
mnumberbits,5,16h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Rw,src:Db */
|
||||
mov5 cmac16struc data(
|
||||
.mov4,2,
|
||||
specR,modw,specD,modb,
|
||||
mdbit, /* DBIT 5(10111B),3(dst(0)) */
|
||||
mnumberbits,5,17h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Rw,src:Dw */
|
||||
mov6 cmac16struc data(
|
||||
.mov5,2,
|
||||
specR,modw,specD,modw,
|
||||
mdbit, /* DBIT 5(10111B),3(dst(0)) */
|
||||
mnumberbits,5,17h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Eb,src:Rb */
|
||||
mov7 cmac12struc data(
|
||||
.mov6,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,88h, /* DB 88H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ew,src:Rw */
|
||||
mov8 cmac12struc data(
|
||||
.mov7,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,89h, /* DB 89H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Rb,src:Eb */
|
||||
mov9 cmac12struc data(
|
||||
.mov8,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,8ah, /* DB 8AH */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 3 10/5/81 PAGE 3
|
||||
|
||||
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Rw,src:Ew */
|
||||
mov10 cmac12struc data(
|
||||
.mov9,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,8bh, /* DB 8BH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ew,src:S */
|
||||
mov11 cmac12struc data(
|
||||
.mov10,2,
|
||||
specE,modw,specS,nomod,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,8ch, /* DB 8CH */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Sd(ES),src:Ew */
|
||||
mov12 cmac13struc data(
|
||||
.mov11,2,
|
||||
specS,modd+singlerange+registerrange,res,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,8eh, /* DB 8EH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Sd(SS,DS),src:Ew */
|
||||
mov13 cmac14struc data(
|
||||
.mov12,2,
|
||||
specS,modd+doublerange+registerrange,rss,rds,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,8eh, /* DB 8EH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ab,src:Xb */
|
||||
mov14 cmac11struc data(
|
||||
.mov13,2,
|
||||
specA,modb,specX,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0a0h, /* DB 0A0H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Aw,src:Xw */
|
||||
mov15 cmac11struc data(
|
||||
.mov14,2,
|
||||
specA,modw,specX,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0a1h, /* DB 0A1H */
|
||||
mdwf,src, /* DW src */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 3 10/5/81 PAGE 4
|
||||
|
||||
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Xb,src:Ab */
|
||||
mov16 cmac11struc data(
|
||||
.mov15,2,
|
||||
specX,modb,specA,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0a2h, /* DB 0A2H */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Xw,src:Aw */
|
||||
mov17 cmac11struc public data(
|
||||
.mov16,2,
|
||||
specX,modw,specA,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0a3h, /* DB 0A3H */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOVS SI$ptr:Eb,DI$ptr:Eb */
|
||||
movs1 cmac12struc data(
|
||||
nil,2,
|
||||
specE,modb,specE,modb,
|
||||
mnosegfix,res,si$ptr, /* NOSEGFIX ES,SI$ptr */
|
||||
msegfix,di$ptr, /* SEGFIX DI$ptr */
|
||||
mdbn,0a4h, /* DB 0A4H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOVS SI$ptr:Ew,DI$ptr:Ew */
|
||||
movs2 cmac12struc public data(
|
||||
.movs1,2,
|
||||
specE,modw,specE,modw,
|
||||
mnosegfix,res,si$ptr, /* NOSEGFIX ES,SI$ptr */
|
||||
msegfix,di$ptr, /* SEGFIX DI$ptr */
|
||||
mdbn,0a5h, /* DB 0A5H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOVSB */
|
||||
MOVSB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0A4H,
|
||||
MENDM),
|
||||
|
||||
/* MOVSW */
|
||||
MOVSW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0A5H,
|
||||
MENDM),
|
||||
|
||||
/* MUL mplier:Eb */
|
||||
mul1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,mplier, /* SEGFIX mplier */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,4,mplier, /* MODRM 4,mplier */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 3 10/5/81 PAGE 5
|
||||
|
||||
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MUL mplier:Ew */
|
||||
mul2 cmac10struc public data(
|
||||
.mul1,1,
|
||||
specE,modw,
|
||||
msegfix,mplier, /* SEGFIX mplier */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,4,mplier, /* MODRM 4,mplier */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NEG dst:Eb */
|
||||
neg1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NEG dst:Ew */
|
||||
neg2 cmac10struc public data(
|
||||
.neg1,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NOP */
|
||||
nop1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,90h, /* DB 90H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NOT dst:Eb */
|
||||
not1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NOT dst:Ew */
|
||||
not2 cmac10struc public data(
|
||||
.not1,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Eb,src:Db */
|
||||
or1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,specD,modb,
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 3 10/5/81 PAGE 6
|
||||
|
||||
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80h */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Ew,src:Dw */
|
||||
or2 cmac14struc data(
|
||||
.or1,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Ew,src:Db */
|
||||
or3 cmac14struc data(
|
||||
.or2,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Ab,src:Db */
|
||||
or4 cmac9struc data(
|
||||
.or3,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,0ch, /* DB 0CH */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Aw,src:Db */
|
||||
or5 cmac9struc data(
|
||||
.or4,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,0dh, /* DB 0DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Aw,src:Dw */
|
||||
or6 cmac9struc data(
|
||||
.or5,2,
|
||||
specA,modw,specD,modw,
|
||||
mdbn,0dh, /* DB 0DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Eb,src:Rb */
|
||||
or7 cmac12struc data(
|
||||
.or6,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,08h, /* DB 08h */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 3 10/5/81 PAGE 7
|
||||
|
||||
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Ew,src:Rw */
|
||||
or8 cmac12struc data(
|
||||
.or7,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,09h, /* DB 09h */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Rb,src:Eb */
|
||||
or9 cmac12struc data(
|
||||
.or8,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0ah, /* DB 0Ah */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Rw,src:Ew */
|
||||
or10 cmac12struc public data(
|
||||
.or9,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0bh, /* DB 0Bh */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OUT dst:Db,src:Ab */
|
||||
out1 cmac9struc data(
|
||||
nil,2,
|
||||
specD,modb,specA,modb,
|
||||
mdbn,0e6h, /* DB 0E6H */
|
||||
mdbf,dst, /* DB dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OUT dst:Db,src:Aw */
|
||||
out2 cmac9struc data(
|
||||
.out1,2,
|
||||
specD,modb,specA,modw,
|
||||
mdbn,0e7h, /* DB 0E7H */
|
||||
mdbf,dst, /* DB dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OUT dst:Rw(DX),src:Ab */
|
||||
out3 cmac8struc data(
|
||||
.out2,2,
|
||||
specR,modw+singlerange+registerrange,rdx,
|
||||
specA,modb,
|
||||
mdbn,0eeh, /* DB 0EEH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OUT dst:Rw(DX),src:Aw */
|
||||
out4 cmac8struc public data(
|
||||
.out3,2,
|
||||
specR,modw+singlerange+registerrange,rdx,
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 3 10/5/81 PAGE 8
|
||||
|
||||
|
||||
specA,modw,
|
||||
mdbn,0efh, /* DB 0EFH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POP dst:Ew */
|
||||
pop1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,8fh, /* DB 8FH */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POP dst:Sd(ES) */
|
||||
pop2 cmac16struc data(
|
||||
.pop1,1,
|
||||
specS,modd+singlerange+registerrange,res,
|
||||
mdbit, /* DBIT 3(0),2(dst(0)),3(7) */
|
||||
mnumberbits,3,0,
|
||||
mformalbits,2,dst,0,
|
||||
mnumberbits,3,7,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POP dst:Sd(SS,DS) */
|
||||
pop3 cmac17struc data(
|
||||
.pop2,1,
|
||||
specS,modd+doublerange+registerrange,rss,rds,
|
||||
mdbit, /* DBIT 3(0),2(dst(0)),3(7) */
|
||||
mnumberbits,3,0,
|
||||
mformalbits,2,dst,0,
|
||||
mnumberbits,3,7,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POP dst:Rw */
|
||||
pop4 cmac12struc public data(
|
||||
.pop3,1,
|
||||
specR,modw,
|
||||
mdbit, /* DBIT 5(01011B),3(dst(0)) */
|
||||
mnumberbits,5,0bh,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POPF */
|
||||
popf1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9dh, /* DB 9DH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* PUSH dst:Ew */
|
||||
push1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 3 10/5/81 PAGE 9
|
||||
|
||||
|
||||
mmodrm1,6,dst, /* MODRM 6,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* PUSH dst:Sd */
|
||||
push2 cmac15struc data(
|
||||
.push1,1,
|
||||
specS,modd,
|
||||
mdbit, /* DBIT 3(0),2(dst(0)),3(6) */
|
||||
mnumberbits,3,0,
|
||||
mformalbits,2,dst,0,
|
||||
mnumberbits,3,6,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* PUSH dst:Rw */
|
||||
push3 cmac12struc public data(
|
||||
.push2,1,
|
||||
specR,modw,
|
||||
mdbit, /* DBIT 5(01010B),3(dst(0)) */
|
||||
mnumberbits,5,0ah,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* PUSHF */
|
||||
pushf1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9ch, /* DB 9CH */
|
||||
mendm); /* ENDM */
|
||||
|
||||
19 1 end$module cmac3;
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0000H 0D
|
||||
CONSTANT AREA SIZE = 02CCH 716D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0000H 0D
|
||||
780 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,477 @@
|
||||
$title ('CODEMACRO DEFINITIONS - PART 3')
|
||||
cmac3:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:cmacd.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:cmac.lit)
|
||||
|
||||
dcl
|
||||
|
||||
/* MOV dst:Eb,src:Db */
|
||||
mov1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0c6h, /* DB 0C6h */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ew,src:Db */
|
||||
mov2 cmac14struc data(
|
||||
.mov1,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0c7h, /* DB 0C7h */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ew,src:Dw */
|
||||
mov3 cmac14struc data(
|
||||
.mov2,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0c7h, /* DB 0C7h */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Rb,src:Db */
|
||||
mov4 cmac16struc data(
|
||||
.mov3,2,
|
||||
specR,modb,specD,modb,
|
||||
mdbit, /* DBIT 5(10110B),3(dst(0)) */
|
||||
mnumberbits,5,16h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Rw,src:Db */
|
||||
mov5 cmac16struc data(
|
||||
.mov4,2,
|
||||
specR,modw,specD,modb,
|
||||
mdbit, /* DBIT 5(10111B),3(dst(0)) */
|
||||
mnumberbits,5,17h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Rw,src:Dw */
|
||||
mov6 cmac16struc data(
|
||||
.mov5,2,
|
||||
specR,modw,specD,modw,
|
||||
mdbit, /* DBIT 5(10111B),3(dst(0)) */
|
||||
mnumberbits,5,17h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Eb,src:Rb */
|
||||
mov7 cmac12struc data(
|
||||
.mov6,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,88h, /* DB 88H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ew,src:Rw */
|
||||
mov8 cmac12struc data(
|
||||
.mov7,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,89h, /* DB 89H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Rb,src:Eb */
|
||||
mov9 cmac12struc data(
|
||||
.mov8,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,8ah, /* DB 8AH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Rw,src:Ew */
|
||||
mov10 cmac12struc data(
|
||||
.mov9,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,8bh, /* DB 8BH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ew,src:S */
|
||||
mov11 cmac12struc data(
|
||||
.mov10,2,
|
||||
specE,modw,specS,nomod,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,8ch, /* DB 8CH */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Sd(ES),src:Ew */
|
||||
mov12 cmac13struc data(
|
||||
.mov11,2,
|
||||
specS,modd+singlerange+registerrange,res,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,8eh, /* DB 8EH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Sd(SS,DS),src:Ew */
|
||||
mov13 cmac14struc data(
|
||||
.mov12,2,
|
||||
specS,modd+doublerange+registerrange,rss,rds,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,8eh, /* DB 8EH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Ab,src:Xb */
|
||||
mov14 cmac11struc data(
|
||||
.mov13,2,
|
||||
specA,modb,specX,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0a0h, /* DB 0A0H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Aw,src:Xw */
|
||||
mov15 cmac11struc data(
|
||||
.mov14,2,
|
||||
specA,modw,specX,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0a1h, /* DB 0A1H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Xb,src:Ab */
|
||||
mov16 cmac11struc data(
|
||||
.mov15,2,
|
||||
specX,modb,specA,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0a2h, /* DB 0A2H */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOV dst:Xw,src:Aw */
|
||||
mov17 cmac11struc public data(
|
||||
.mov16,2,
|
||||
specX,modw,specA,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0a3h, /* DB 0A3H */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOVS SI$ptr:Eb,DI$ptr:Eb */
|
||||
movs1 cmac12struc data(
|
||||
nil,2,
|
||||
specE,modb,specE,modb,
|
||||
mnosegfix,res,si$ptr, /* NOSEGFIX ES,SI$ptr */
|
||||
msegfix,di$ptr, /* SEGFIX DI$ptr */
|
||||
mdbn,0a4h, /* DB 0A4H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOVS SI$ptr:Ew,DI$ptr:Ew */
|
||||
movs2 cmac12struc public data(
|
||||
.movs1,2,
|
||||
specE,modw,specE,modw,
|
||||
mnosegfix,res,si$ptr, /* NOSEGFIX ES,SI$ptr */
|
||||
msegfix,di$ptr, /* SEGFIX DI$ptr */
|
||||
mdbn,0a5h, /* DB 0A5H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MOVSB */
|
||||
MOVSB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0A4H,
|
||||
MENDM),
|
||||
|
||||
/* MOVSW */
|
||||
MOVSW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0A5H,
|
||||
MENDM),
|
||||
|
||||
/* MUL mplier:Eb */
|
||||
mul1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,mplier, /* SEGFIX mplier */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,4,mplier, /* MODRM 4,mplier */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* MUL mplier:Ew */
|
||||
mul2 cmac10struc public data(
|
||||
.mul1,1,
|
||||
specE,modw,
|
||||
msegfix,mplier, /* SEGFIX mplier */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,4,mplier, /* MODRM 4,mplier */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NEG dst:Eb */
|
||||
neg1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NEG dst:Ew */
|
||||
neg2 cmac10struc public data(
|
||||
.neg1,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NOP */
|
||||
nop1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,90h, /* DB 90H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NOT dst:Eb */
|
||||
not1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* NOT dst:Ew */
|
||||
not2 cmac10struc public data(
|
||||
.not1,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Eb,src:Db */
|
||||
or1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80h */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Ew,src:Dw */
|
||||
or2 cmac14struc data(
|
||||
.or1,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Ew,src:Db */
|
||||
or3 cmac14struc data(
|
||||
.or2,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Ab,src:Db */
|
||||
or4 cmac9struc data(
|
||||
.or3,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,0ch, /* DB 0CH */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Aw,src:Db */
|
||||
or5 cmac9struc data(
|
||||
.or4,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,0dh, /* DB 0DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Aw,src:Dw */
|
||||
or6 cmac9struc data(
|
||||
.or5,2,
|
||||
specA,modw,specD,modw,
|
||||
mdbn,0dh, /* DB 0DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Eb,src:Rb */
|
||||
or7 cmac12struc data(
|
||||
.or6,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,08h, /* DB 08h */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Ew,src:Rw */
|
||||
or8 cmac12struc data(
|
||||
.or7,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,09h, /* DB 09h */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Rb,src:Eb */
|
||||
or9 cmac12struc data(
|
||||
.or8,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0ah, /* DB 0Ah */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OR dst:Rw,src:Ew */
|
||||
or10 cmac12struc public data(
|
||||
.or9,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,0bh, /* DB 0Bh */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OUT dst:Db,src:Ab */
|
||||
out1 cmac9struc data(
|
||||
nil,2,
|
||||
specD,modb,specA,modb,
|
||||
mdbn,0e6h, /* DB 0E6H */
|
||||
mdbf,dst, /* DB dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OUT dst:Db,src:Aw */
|
||||
out2 cmac9struc data(
|
||||
.out1,2,
|
||||
specD,modb,specA,modw,
|
||||
mdbn,0e7h, /* DB 0E7H */
|
||||
mdbf,dst, /* DB dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OUT dst:Rw(DX),src:Ab */
|
||||
out3 cmac8struc data(
|
||||
.out2,2,
|
||||
specR,modw+singlerange+registerrange,rdx,
|
||||
specA,modb,
|
||||
mdbn,0eeh, /* DB 0EEH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* OUT dst:Rw(DX),src:Aw */
|
||||
out4 cmac8struc public data(
|
||||
.out3,2,
|
||||
specR,modw+singlerange+registerrange,rdx,
|
||||
specA,modw,
|
||||
mdbn,0efh, /* DB 0EFH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POP dst:Ew */
|
||||
pop1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,8fh, /* DB 8FH */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POP dst:Sd(ES) */
|
||||
pop2 cmac16struc data(
|
||||
.pop1,1,
|
||||
specS,modd+singlerange+registerrange,res,
|
||||
mdbit, /* DBIT 3(0),2(dst(0)),3(7) */
|
||||
mnumberbits,3,0,
|
||||
mformalbits,2,dst,0,
|
||||
mnumberbits,3,7,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POP dst:Sd(SS,DS) */
|
||||
pop3 cmac17struc data(
|
||||
.pop2,1,
|
||||
specS,modd+doublerange+registerrange,rss,rds,
|
||||
mdbit, /* DBIT 3(0),2(dst(0)),3(7) */
|
||||
mnumberbits,3,0,
|
||||
mformalbits,2,dst,0,
|
||||
mnumberbits,3,7,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POP dst:Rw */
|
||||
pop4 cmac12struc public data(
|
||||
.pop3,1,
|
||||
specR,modw,
|
||||
mdbit, /* DBIT 5(01011B),3(dst(0)) */
|
||||
mnumberbits,5,0bh,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* POPF */
|
||||
popf1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9dh, /* DB 9DH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* PUSH dst:Ew */
|
||||
push1 cmac10struc data(
|
||||
nil,1,
|
||||
specE,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0ffh, /* DB 0FFH */
|
||||
mmodrm1,6,dst, /* MODRM 6,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* PUSH dst:Sd */
|
||||
push2 cmac15struc data(
|
||||
.push1,1,
|
||||
specS,modd,
|
||||
mdbit, /* DBIT 3(0),2(dst(0)),3(6) */
|
||||
mnumberbits,3,0,
|
||||
mformalbits,2,dst,0,
|
||||
mnumberbits,3,6,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* PUSH dst:Rw */
|
||||
push3 cmac12struc public data(
|
||||
.push2,1,
|
||||
specR,modw,
|
||||
mdbit, /* DBIT 5(01010B),3(dst(0)) */
|
||||
mnumberbits,5,0ah,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* PUSHF */
|
||||
pushf1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9ch, /* DB 9CH */
|
||||
mendm); /* ENDM */
|
||||
|
||||
end$module cmac3;
|
||||
@@ -0,0 +1,558 @@
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE CMAC4
|
||||
OBJECT MODULE PLACED IN CMAC4.OBJ
|
||||
COMPILER INVOKED BY: :F0: CMAC4.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100)
|
||||
|
||||
|
||||
|
||||
$title ('CODEMACRO DEFINITIONS - PART 4')
|
||||
1 cmac4:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmacd.lit)
|
||||
= $nolist
|
||||
$include (:f1:equals.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmac.lit)
|
||||
= $nolist
|
||||
|
||||
18 1 dcl
|
||||
|
||||
/* RCL dst:Eb,count:Db(1) */
|
||||
rcl1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCL dst:Ew,count:Db(1) */
|
||||
rcl2 cmac13struc data(
|
||||
.rcl1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCL dst:Eb,count:Rb(CL) */
|
||||
rcl3 cmac13struc data(
|
||||
.rcl2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 2
|
||||
|
||||
|
||||
/* RCL dst:Ew,count:Rb(CL) */
|
||||
rcl4 cmac13struc public data(
|
||||
.rcl3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCR dst:Eb,count:Db(1) */
|
||||
rcr1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCR dst:Ew,count:Db(1) */
|
||||
rcr2 cmac13struc data(
|
||||
.rcr1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCR dst:Eb,count:Rb(CL) */
|
||||
rcr3 cmac13struc data(
|
||||
.rcr2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCR dst:Ew,count:Rb(CL) */
|
||||
rcr4 cmac13struc public data(
|
||||
.rcr3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* REP PREFX */
|
||||
rep1 cmac3struc public data(
|
||||
nil,0+prefix$on,
|
||||
mdbn,0f3h, /* DB 0F3H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* REPE PREFX */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 3
|
||||
|
||||
|
||||
repe1 cmac3struc public data(
|
||||
nil,0+prefix$on,
|
||||
mdbn,0f3h, /* DB 0F3H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* REPNE PREFX */
|
||||
repne1 cmac3struc public data(
|
||||
nil,0+prefix$on,
|
||||
mdbn,0f2h, /* DB 0F2H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RET dst:Db */
|
||||
ret1 cmac7struc data(
|
||||
nil,1,
|
||||
specD,modb,
|
||||
mdbn,0c2h, /* DB 0C2H */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RET dst:Dw */
|
||||
ret2 cmac7struc data(
|
||||
.ret1,1,
|
||||
specD,modw,
|
||||
mdbn,0c2h, /* DB 0C2H */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RET */
|
||||
ret3 cmac3struc public data(
|
||||
.ret2,0,
|
||||
mdbn,0c3h, /* DB 0C3H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RETF dst:Db */
|
||||
retf1 cmac7struc data(
|
||||
nil,1,
|
||||
specD,modb,
|
||||
mdbn,0cah, /* DB 0CAH */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RETF dst:Dw */
|
||||
retf2 cmac7struc data(
|
||||
.retf1,1,
|
||||
specD,modw,
|
||||
mdbn,0cah, /* DB 0CAH */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RETF */
|
||||
retf3 cmac3struc public data(
|
||||
.retf2,0,
|
||||
mdbn,0cbh, /* DB 0C3H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROL dst:Eb,count:Db(1) */
|
||||
rol1 cmac13struc data(
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 4
|
||||
|
||||
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROL dst:Ew,count:Db(1) */
|
||||
rol2 cmac13struc data(
|
||||
.rol1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROL dst:Eb,count:Rb(CL) */
|
||||
rol3 cmac13struc data(
|
||||
.rol2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROL dst:Ew,count:Rb(CL) */
|
||||
rol4 cmac13struc public data(
|
||||
.rol3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROR dst:Eb,count:Db(1) */
|
||||
ror1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROR dst:Ew,count:Db(1) */
|
||||
ror2 cmac13struc data(
|
||||
.ror1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 5
|
||||
|
||||
|
||||
|
||||
/* ROR dst:Eb,count:Rb(CL) */
|
||||
ror3 cmac13struc data(
|
||||
.ror2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROR dst:Ew,count:Rb(CL) */
|
||||
ror4 cmac13struc public data(
|
||||
.ror3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAHF */
|
||||
sahf1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9eh, /* DB 9EH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAL dst:Eb,count:Db(1) */
|
||||
sal1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAL dst:Ew,count:Db(1) */
|
||||
sal2 cmac13struc data(
|
||||
.sal1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAL dst:Eb,count:Rb(CL) */
|
||||
sal3 cmac13struc data(
|
||||
.sal2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 6
|
||||
|
||||
|
||||
/* SAL dst:Ew,count:Rb(CL) */
|
||||
sal4 cmac13struc public data(
|
||||
.sal3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAR dst:Eb,count:Db(1) */
|
||||
sar1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAR dst:Ew,count:Db(1) */
|
||||
sar2 cmac13struc data(
|
||||
.sar1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAR dst:Eb,count:Rb(CL) */
|
||||
sar3 cmac13struc data(
|
||||
.sar2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAR dst:Ew,count:Rb(CL) */
|
||||
sar4 cmac13struc public data(
|
||||
.sar3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Eb,src:Db */
|
||||
sbb1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 7
|
||||
|
||||
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ew,src:Db */
|
||||
sbb2 cmac14struc data(
|
||||
.sbb1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ew,src:Dsb */
|
||||
sbb3 cmac14struc data(
|
||||
.sbb2,2,
|
||||
specE,modw,
|
||||
specD,modsb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ew,src:Dw */
|
||||
sbb4 cmac14struc data(
|
||||
.sbb3,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ab,src:Db */
|
||||
sbb5 cmac9struc data(
|
||||
.sbb4,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,1ch, /* DB 1CH */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Aw,src:Db */
|
||||
sbb6 cmac9struc data(
|
||||
.sbb5,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,1dh, /* DB 1DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Aw,src:Dw */
|
||||
sbb7 cmac9struc data(
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 8
|
||||
|
||||
|
||||
.sbb6,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
mdbn,1dh, /* DB 1DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Eb,src:Rb */
|
||||
sbb8 cmac12struc data(
|
||||
.sbb7,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,18h, /* DB 18H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ew,src:Rw */
|
||||
sbb9 cmac12struc data(
|
||||
.sbb8,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,19h, /* DB 19H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Rb,src:Eb */
|
||||
sbb10 cmac12struc data(
|
||||
.sbb9,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,1ah, /* DB 1AH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Rw,src:Ew */
|
||||
sbb11 cmac12struc public data(
|
||||
.sbb10,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,1bh, /* DB 1BH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SCAS dst:Eb */
|
||||
scas1 cmac8struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
mdbn,0aeh, /* DB 0AEH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SCAS dst:Ew */
|
||||
scas2 cmac8struc public data(
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 9
|
||||
|
||||
|
||||
.scas1,1,
|
||||
specE,modw,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
mdbn,0afh, /* DB 0AFH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SCASB */
|
||||
SCASB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0AEH,
|
||||
MENDM),
|
||||
|
||||
/* SCASW */
|
||||
SCASW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0AFH,
|
||||
MENDM),
|
||||
|
||||
/* SHR dst:Eb,count:Db(1) */
|
||||
shr1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SHR dst:Ew,count:Db(1) */
|
||||
shr2 cmac13struc data(
|
||||
.shr1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SHR dst:Eb,count:Rb(CL) */
|
||||
shr3 cmac13struc data(
|
||||
.shr2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SHR dst:Ew,count:Rb(CL) */
|
||||
shr4 cmac13struc public data(
|
||||
.shr3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mendm); /* ENDM */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 4 10/5/81 PAGE 10
|
||||
|
||||
|
||||
|
||||
19 1 end$module cmac4;
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0000H 0D
|
||||
CONSTANT AREA SIZE = 02D2H 722D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0000H 0D
|
||||
808 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,505 @@
|
||||
$title ('CODEMACRO DEFINITIONS - PART 4')
|
||||
cmac4:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:cmacd.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:cmac.lit)
|
||||
|
||||
dcl
|
||||
|
||||
/* RCL dst:Eb,count:Db(1) */
|
||||
rcl1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCL dst:Ew,count:Db(1) */
|
||||
rcl2 cmac13struc data(
|
||||
.rcl1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCL dst:Eb,count:Rb(CL) */
|
||||
rcl3 cmac13struc data(
|
||||
.rcl2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCL dst:Ew,count:Rb(CL) */
|
||||
rcl4 cmac13struc public data(
|
||||
.rcl3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,2,dst, /* MODRM 2,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCR dst:Eb,count:Db(1) */
|
||||
rcr1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCR dst:Ew,count:Db(1) */
|
||||
rcr2 cmac13struc data(
|
||||
.rcr1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCR dst:Eb,count:Rb(CL) */
|
||||
rcr3 cmac13struc data(
|
||||
.rcr2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RCR dst:Ew,count:Rb(CL) */
|
||||
rcr4 cmac13struc public data(
|
||||
.rcr3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* REP PREFX */
|
||||
rep1 cmac3struc public data(
|
||||
nil,0+prefix$on,
|
||||
mdbn,0f3h, /* DB 0F3H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* REPE PREFX */
|
||||
repe1 cmac3struc public data(
|
||||
nil,0+prefix$on,
|
||||
mdbn,0f3h, /* DB 0F3H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* REPNE PREFX */
|
||||
repne1 cmac3struc public data(
|
||||
nil,0+prefix$on,
|
||||
mdbn,0f2h, /* DB 0F2H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RET dst:Db */
|
||||
ret1 cmac7struc data(
|
||||
nil,1,
|
||||
specD,modb,
|
||||
mdbn,0c2h, /* DB 0C2H */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RET dst:Dw */
|
||||
ret2 cmac7struc data(
|
||||
.ret1,1,
|
||||
specD,modw,
|
||||
mdbn,0c2h, /* DB 0C2H */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RET */
|
||||
ret3 cmac3struc public data(
|
||||
.ret2,0,
|
||||
mdbn,0c3h, /* DB 0C3H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RETF dst:Db */
|
||||
retf1 cmac7struc data(
|
||||
nil,1,
|
||||
specD,modb,
|
||||
mdbn,0cah, /* DB 0CAH */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RETF dst:Dw */
|
||||
retf2 cmac7struc data(
|
||||
.retf1,1,
|
||||
specD,modw,
|
||||
mdbn,0cah, /* DB 0CAH */
|
||||
mdwf,dst, /* DW dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* RETF */
|
||||
retf3 cmac3struc public data(
|
||||
.retf2,0,
|
||||
mdbn,0cbh, /* DB 0C3H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROL dst:Eb,count:Db(1) */
|
||||
rol1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROL dst:Ew,count:Db(1) */
|
||||
rol2 cmac13struc data(
|
||||
.rol1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROL dst:Eb,count:Rb(CL) */
|
||||
rol3 cmac13struc data(
|
||||
.rol2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROL dst:Ew,count:Rb(CL) */
|
||||
rol4 cmac13struc public data(
|
||||
.rol3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROR dst:Eb,count:Db(1) */
|
||||
ror1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROR dst:Ew,count:Db(1) */
|
||||
ror2 cmac13struc data(
|
||||
.ror1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROR dst:Eb,count:Rb(CL) */
|
||||
ror3 cmac13struc data(
|
||||
.ror2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* ROR dst:Ew,count:Rb(CL) */
|
||||
ror4 cmac13struc public data(
|
||||
.ror3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,1,dst, /* MODRM 1,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAHF */
|
||||
sahf1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9eh, /* DB 9EH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAL dst:Eb,count:Db(1) */
|
||||
sal1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAL dst:Ew,count:Db(1) */
|
||||
sal2 cmac13struc data(
|
||||
.sal1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAL dst:Eb,count:Rb(CL) */
|
||||
sal3 cmac13struc data(
|
||||
.sal2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAL dst:Ew,count:Rb(CL) */
|
||||
sal4 cmac13struc public data(
|
||||
.sal3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,4,dst, /* MODRM 4,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAR dst:Eb,count:Db(1) */
|
||||
sar1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAR dst:Ew,count:Db(1) */
|
||||
sar2 cmac13struc data(
|
||||
.sar1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAR dst:Eb,count:Rb(CL) */
|
||||
sar3 cmac13struc data(
|
||||
.sar2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SAR dst:Ew,count:Rb(CL) */
|
||||
sar4 cmac13struc public data(
|
||||
.sar3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,7,dst, /* MODRM 7,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Eb,src:Db */
|
||||
sbb1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ew,src:Db */
|
||||
sbb2 cmac14struc data(
|
||||
.sbb1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ew,src:Dsb */
|
||||
sbb3 cmac14struc data(
|
||||
.sbb2,2,
|
||||
specE,modw,
|
||||
specD,modsb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ew,src:Dw */
|
||||
sbb4 cmac14struc data(
|
||||
.sbb3,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,3,dst, /* MODRM 3,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ab,src:Db */
|
||||
sbb5 cmac9struc data(
|
||||
.sbb4,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,1ch, /* DB 1CH */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Aw,src:Db */
|
||||
sbb6 cmac9struc data(
|
||||
.sbb5,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,1dh, /* DB 1DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Aw,src:Dw */
|
||||
sbb7 cmac9struc data(
|
||||
.sbb6,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
mdbn,1dh, /* DB 1DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Eb,src:Rb */
|
||||
sbb8 cmac12struc data(
|
||||
.sbb7,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,18h, /* DB 18H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Ew,src:Rw */
|
||||
sbb9 cmac12struc data(
|
||||
.sbb8,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,19h, /* DB 19H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Rb,src:Eb */
|
||||
sbb10 cmac12struc data(
|
||||
.sbb9,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,1ah, /* DB 1AH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SBB dst:Rw,src:Ew */
|
||||
sbb11 cmac12struc public data(
|
||||
.sbb10,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,1bh, /* DB 1BH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SCAS dst:Eb */
|
||||
scas1 cmac8struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
mdbn,0aeh, /* DB 0AEH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SCAS dst:Ew */
|
||||
scas2 cmac8struc public data(
|
||||
.scas1,1,
|
||||
specE,modw,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
mdbn,0afh, /* DB 0AFH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SCASB */
|
||||
SCASB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0AEH,
|
||||
MENDM),
|
||||
|
||||
/* SCASW */
|
||||
SCASW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0AFH,
|
||||
MENDM),
|
||||
|
||||
/* SHR dst:Eb,count:Db(1) */
|
||||
shr1 cmac13struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d0h, /* DB 0D0H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SHR dst:Ew,count:Db(1) */
|
||||
shr2 cmac13struc data(
|
||||
.shr1,2,
|
||||
specE,modw,
|
||||
specD,modb+singlerange+number$range,1,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d1h, /* DB 0D1H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SHR dst:Eb,count:Rb(CL) */
|
||||
shr3 cmac13struc data(
|
||||
.shr2,2,
|
||||
specE,modb,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d2h, /* DB 0D2H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SHR dst:Ew,count:Rb(CL) */
|
||||
shr4 cmac13struc public data(
|
||||
.shr3,2,
|
||||
specE,modw,
|
||||
specR,modb+singlerange+register$range,rcl,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d3h, /* DB 0D3H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mendm); /* ENDM */
|
||||
|
||||
end$module cmac4;
|
||||
@@ -0,0 +1,490 @@
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 5 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE CMAC5
|
||||
OBJECT MODULE PLACED IN CMAC5.OBJ
|
||||
COMPILER INVOKED BY: :F0: CMAC5.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100)
|
||||
|
||||
|
||||
|
||||
$title ('CODEMACRO DEFINITIONS - PART 5')
|
||||
1 cmac5:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmacd.lit)
|
||||
= $nolist
|
||||
$include (:f1:equals.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmac.lit)
|
||||
= $nolist
|
||||
|
||||
18 1 dcl
|
||||
|
||||
/* STC */
|
||||
stc1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0f9h, /* DB 0F9H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STD */
|
||||
std1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0fdh, /* DB 0FDH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STI */
|
||||
sti1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0fbh, /* DB 0FBH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STOS dst:Eb */
|
||||
stos1 cmac8struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
mdbn,0aah, /* DB 0AAH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STOS dst:Ew */
|
||||
stos2 cmac8struc public data(
|
||||
.stos1,1,
|
||||
specE,modw,
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 5 10/5/81 PAGE 2
|
||||
|
||||
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
mdbn,0abh, /* DB 0ABH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STOSB */
|
||||
STOSB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0AAH,
|
||||
MENDM),
|
||||
|
||||
/* STOSW */
|
||||
STOSW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0ABH,
|
||||
MENDM),
|
||||
|
||||
/* SUB dst:Eb,src:Db */
|
||||
sub1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ew,src:Db */
|
||||
sub2 cmac14struc data(
|
||||
.sub1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ew,src:Dsb */
|
||||
sub3 cmac14struc data(
|
||||
.sub2,2,
|
||||
specE,modw,
|
||||
specD,modsb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ew,src:Dw */
|
||||
sub4 cmac14struc data(
|
||||
.sub3,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 5 10/5/81 PAGE 3
|
||||
|
||||
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ab,src:Db */
|
||||
sub5 cmac9struc data(
|
||||
.sub4,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,2ch, /* DB 2CH */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Aw,src:Db */
|
||||
sub6 cmac9struc data(
|
||||
.sub5,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,2dh, /* DB 2DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Aw,src:Dw */
|
||||
sub7 cmac9struc data(
|
||||
.sub6,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
mdbn,2dh, /* DB 2DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Eb,src:Rb */
|
||||
sub8 cmac12struc data(
|
||||
.sub7,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,28h, /* DB 28H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ew,src:Rw */
|
||||
sub9 cmac12struc data(
|
||||
.sub8,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,29h, /* DB 29H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Rb,src:Eb */
|
||||
sub10 cmac12struc data(
|
||||
.sub9,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,2ah, /* DB 2AH */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 5 10/5/81 PAGE 4
|
||||
|
||||
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Rw,src:Ew */
|
||||
sub11 cmac12struc public data(
|
||||
.sub10,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,2bh, /* DB 2BH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Eb,src:Db */
|
||||
test1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Ew,src:Db */
|
||||
test2 cmac14struc data(
|
||||
.test1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Ew,src:Dw */
|
||||
test3 cmac14struc data(
|
||||
.test2,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Ab,src:Db */
|
||||
test4 cmac9struc data(
|
||||
.test3,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,0a8h, /* DB 0A8H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Aw,src:Db */
|
||||
test5 cmac9struc data(
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 5 10/5/81 PAGE 5
|
||||
|
||||
|
||||
.test4,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,0a9h, /* DB 0A9H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Aw,src:Dw */
|
||||
test6 cmac9struc data(
|
||||
.test5,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
mdbn,0a9h, /* DB 0A9H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Eb,src:Rb */
|
||||
test7 cmac12struc data(
|
||||
.test6,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,84h, /* DB 84H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Ew,src:Rw */
|
||||
test8 cmac12struc data(
|
||||
.test7,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,85h, /* DB 85H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Rb,src:Eb */
|
||||
test9 cmac12struc data(
|
||||
.test8,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,84h, /* DB 84H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Rw,src:Ew */
|
||||
test10 cmac12struc public data(
|
||||
.test9,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,85h, /* DB 85H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* WAIT */
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 5 10/5/81 PAGE 6
|
||||
|
||||
|
||||
wait1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9bh, /* DB 9BH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Eb,src:Rb */
|
||||
xchg1 cmac12struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,86h, /* DB 86H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Ew,src:Rw */
|
||||
xchg2 cmac12struc data(
|
||||
.xchg1,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,87h, /* DB 87H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Rb,src:Eb */
|
||||
xchg3 cmac12struc data(
|
||||
.xchg2,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,86h, /* DB 86H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Rw,src:Ew */
|
||||
xchg4 cmac12struc data(
|
||||
.xchg3,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,87h, /* DB 87H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Rw,src:Aw */
|
||||
xchg5 cmac14struc data(
|
||||
.xchg4,2,
|
||||
specR,modw,specA,modw,
|
||||
mdbit, /* DBIT 5(10010B),3(dst(0)) */
|
||||
mnumberbits,5,12h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Aw,src:Rw */
|
||||
xchg6 cmac14struc public data(
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 5 10/5/81 PAGE 7
|
||||
|
||||
|
||||
.xchg5,2,
|
||||
specA,modw,specR,modw,
|
||||
mdbit, /* DBIT 5(10010B),3(dst(0)) */
|
||||
mnumberbits,5,12h,
|
||||
mformalbits,3,src,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XLAT dst:E */
|
||||
xlat1 cmac7struc public data(
|
||||
nil,1,
|
||||
specE,nomod,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d7h, /* DB 0D7H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Eb,src:Db */
|
||||
xor1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,6,dst, /* MODRM 6,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Ew,src:Db */
|
||||
xor2 cmac14struc data(
|
||||
.xor1,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,6,dst, /* MODRM 6,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Ew,src:Dw */
|
||||
xor3 cmac14struc data(
|
||||
.xor2,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,6,dst, /* MODRM 6,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Ab,src:Db */
|
||||
xor4 cmac9struc data(
|
||||
.xor3,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,34h, /* DB 34H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Aw,src:Db */
|
||||
xor5 cmac9struc data(
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 5 10/5/81 PAGE 8
|
||||
|
||||
|
||||
.xor4,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,35h, /* DB 35H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Aw,src:Dw */
|
||||
xor6 cmac9struc data(
|
||||
.xor5,2,
|
||||
specA,modw,specD,modw,
|
||||
mdbn,35h, /* DB 35H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Eb,src:Rb */
|
||||
xor7 cmac12struc data(
|
||||
.xor6,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,30h, /* DB 30H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Ew,src:Rw */
|
||||
xor8 cmac12struc data(
|
||||
.xor7,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,31h, /* DB 31H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm),
|
||||
|
||||
/* XOR dst:Rb,src:Eb */
|
||||
xor9 cmac12struc data(
|
||||
.xor8,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,32h, /* DB 32H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Rw,src:Ew */
|
||||
xor10 cmac12struc public data(
|
||||
.xor9,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,33h, /* DB 33H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm); /* ENDM */
|
||||
|
||||
19 1 end$module cmac5;
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0000H 0D
|
||||
PL/M-86 COMPILER CODEMACRO DEFINITIONS - PART 5 10/5/81 PAGE 9
|
||||
|
||||
|
||||
CONSTANT AREA SIZE = 026CH 620D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0000H 0D
|
||||
743 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,440 @@
|
||||
$title ('CODEMACRO DEFINITIONS - PART 5')
|
||||
cmac5:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:cmacd.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:cmac.lit)
|
||||
|
||||
dcl
|
||||
|
||||
/* STC */
|
||||
stc1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0f9h, /* DB 0F9H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STD */
|
||||
std1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0fdh, /* DB 0FDH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STI */
|
||||
sti1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,0fbh, /* DB 0FBH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STOS dst:Eb */
|
||||
stos1 cmac8struc data(
|
||||
nil,1,
|
||||
specE,modb,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
mdbn,0aah, /* DB 0AAH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STOS dst:Ew */
|
||||
stos2 cmac8struc public data(
|
||||
.stos1,1,
|
||||
specE,modw,
|
||||
mnosegfix,res,dst, /* NOSEGFIX ES,dst */
|
||||
mdbn,0abh, /* DB 0ABH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* STOSB */
|
||||
STOSB1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0AAH,
|
||||
MENDM),
|
||||
|
||||
/* STOSW */
|
||||
STOSW1 CMAC3STRUC PUBLIC DATA(
|
||||
NIL,0,
|
||||
MDBN,0ABH,
|
||||
MENDM),
|
||||
|
||||
/* SUB dst:Eb,src:Db */
|
||||
sub1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ew,src:Db */
|
||||
sub2 cmac14struc data(
|
||||
.sub1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ew,src:Dsb */
|
||||
sub3 cmac14struc data(
|
||||
.sub2,2,
|
||||
specE,modw,
|
||||
specD,modsb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,83h, /* DB 83H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ew,src:Dw */
|
||||
sub4 cmac14struc data(
|
||||
.sub3,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,5,dst, /* MODRM 5,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ab,src:Db */
|
||||
sub5 cmac9struc data(
|
||||
.sub4,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,2ch, /* DB 2CH */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Aw,src:Db */
|
||||
sub6 cmac9struc data(
|
||||
.sub5,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,2dh, /* DB 2DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Aw,src:Dw */
|
||||
sub7 cmac9struc data(
|
||||
.sub6,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
mdbn,2dh, /* DB 2DH */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Eb,src:Rb */
|
||||
sub8 cmac12struc data(
|
||||
.sub7,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,28h, /* DB 28H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Ew,src:Rw */
|
||||
sub9 cmac12struc data(
|
||||
.sub8,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,29h, /* DB 29H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Rb,src:Eb */
|
||||
sub10 cmac12struc data(
|
||||
.sub9,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,2ah, /* DB 2AH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* SUB dst:Rw,src:Ew */
|
||||
sub11 cmac12struc public data(
|
||||
.sub10,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,2bh, /* DB 2BH */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Eb,src:Db */
|
||||
test1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f6h, /* DB 0F6H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Ew,src:Db */
|
||||
test2 cmac14struc data(
|
||||
.test1,2,
|
||||
specE,modw,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Ew,src:Dw */
|
||||
test3 cmac14struc data(
|
||||
.test2,2,
|
||||
specE,modw,
|
||||
specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0f7h, /* DB 0F7H */
|
||||
mmodrm1,0,dst, /* MODRM 0,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Ab,src:Db */
|
||||
test4 cmac9struc data(
|
||||
.test3,2,
|
||||
specA,modb,
|
||||
specD,modb,
|
||||
mdbn,0a8h, /* DB 0A8H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Aw,src:Db */
|
||||
test5 cmac9struc data(
|
||||
.test4,2,
|
||||
specA,modw,
|
||||
specD,modb,
|
||||
mdbn,0a9h, /* DB 0A9H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Aw,src:Dw */
|
||||
test6 cmac9struc data(
|
||||
.test5,2,
|
||||
specA,modw,
|
||||
specD,modw,
|
||||
mdbn,0a9h, /* DB 0A9H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Eb,src:Rb */
|
||||
test7 cmac12struc data(
|
||||
.test6,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,84h, /* DB 84H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Ew,src:Rw */
|
||||
test8 cmac12struc data(
|
||||
.test7,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,85h, /* DB 85H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Rb,src:Eb */
|
||||
test9 cmac12struc data(
|
||||
.test8,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,84h, /* DB 84H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* TEST dst:Rw,src:Ew */
|
||||
test10 cmac12struc public data(
|
||||
.test9,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,85h, /* DB 85H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* WAIT */
|
||||
wait1 cmac3struc public data(
|
||||
nil,0,
|
||||
mdbn,9bh, /* DB 9BH */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Eb,src:Rb */
|
||||
xchg1 cmac12struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,86h, /* DB 86H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Ew,src:Rw */
|
||||
xchg2 cmac12struc data(
|
||||
.xchg1,2,
|
||||
specE,modw,
|
||||
specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,87h, /* DB 87H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Rb,src:Eb */
|
||||
xchg3 cmac12struc data(
|
||||
.xchg2,2,
|
||||
specR,modb,
|
||||
specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,86h, /* DB 86H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Rw,src:Ew */
|
||||
xchg4 cmac12struc data(
|
||||
.xchg3,2,
|
||||
specR,modw,
|
||||
specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,87h, /* DB 87H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Rw,src:Aw */
|
||||
xchg5 cmac14struc data(
|
||||
.xchg4,2,
|
||||
specR,modw,specA,modw,
|
||||
mdbit, /* DBIT 5(10010B),3(dst(0)) */
|
||||
mnumberbits,5,12h,
|
||||
mformalbits,3,dst,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XCHG dst:Aw,src:Rw */
|
||||
xchg6 cmac14struc public data(
|
||||
.xchg5,2,
|
||||
specA,modw,specR,modw,
|
||||
mdbit, /* DBIT 5(10010B),3(dst(0)) */
|
||||
mnumberbits,5,12h,
|
||||
mformalbits,3,src,0,
|
||||
mendbit,
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XLAT dst:E */
|
||||
xlat1 cmac7struc public data(
|
||||
nil,1,
|
||||
specE,nomod,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,0d7h, /* DB 0D7H */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Eb,src:Db */
|
||||
xor1 cmac14struc data(
|
||||
nil,2,
|
||||
specE,modb,
|
||||
specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,80h, /* DB 80H */
|
||||
mmodrm1,6,dst, /* MODRM 6,dst */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Ew,src:Db */
|
||||
xor2 cmac14struc data(
|
||||
.xor1,2,
|
||||
specE,modw,specD,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,6,dst, /* MODRM 6,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Ew,src:Dw */
|
||||
xor3 cmac14struc data(
|
||||
.xor2,2,
|
||||
specE,modw,specD,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,81h, /* DB 81H */
|
||||
mmodrm1,6,dst, /* MODRM 6,dst */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Ab,src:Db */
|
||||
xor4 cmac9struc data(
|
||||
.xor3,2,
|
||||
specA,modb,specD,modb,
|
||||
mdbn,34h, /* DB 34H */
|
||||
mdbf,src, /* DB src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Aw,src:Db */
|
||||
xor5 cmac9struc data(
|
||||
.xor4,2,
|
||||
specA,modw,specD,modb,
|
||||
mdbn,35h, /* DB 35H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Aw,src:Dw */
|
||||
xor6 cmac9struc data(
|
||||
.xor5,2,
|
||||
specA,modw,specD,modw,
|
||||
mdbn,35h, /* DB 35H */
|
||||
mdwf,src, /* DW src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Eb,src:Rb */
|
||||
xor7 cmac12struc data(
|
||||
.xor6,2,
|
||||
specE,modb,specR,modb,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,30h, /* DB 30H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Ew,src:Rw */
|
||||
xor8 cmac12struc data(
|
||||
.xor7,2,
|
||||
specE,modw,specR,modw,
|
||||
msegfix,dst, /* SEGFIX dst */
|
||||
mdbn,31h, /* DB 31H */
|
||||
mmodrm2,src,dst, /* MODRM src,dst */
|
||||
mendm),
|
||||
|
||||
/* XOR dst:Rb,src:Eb */
|
||||
xor9 cmac12struc data(
|
||||
.xor8,2,
|
||||
specR,modb,specE,modb,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,32h, /* DB 32H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm), /* ENDM */
|
||||
|
||||
/* XOR dst:Rw,src:Ew */
|
||||
xor10 cmac12struc public data(
|
||||
.xor9,2,
|
||||
specR,modw,specE,modw,
|
||||
msegfix,src, /* SEGFIX src */
|
||||
mdbn,33h, /* DB 33H */
|
||||
mmodrm2,dst,src, /* MODRM dst,src */
|
||||
mendm); /* ENDM */
|
||||
|
||||
end$module cmac5;
|
||||
@@ -0,0 +1,95 @@
|
||||
$nolist
|
||||
$eject
|
||||
|
||||
/* Here are the definitions for the */
|
||||
/* codemacro instructions of the */
|
||||
/* ASM86 assembler */
|
||||
|
||||
|
||||
/* Commands within codemacros: */
|
||||
|
||||
declare
|
||||
mdbn lit '0', /* DB with number */
|
||||
mdbf lit '1', /* DB with formal parameter */
|
||||
mdwn lit '2', /* DW with numbers */
|
||||
mdwf lit '3', /* DW with formal parameter */
|
||||
mddf lit '4', /* DD with formal parameter */
|
||||
mdbit lit '5', /* DBIT */
|
||||
mendm lit '6', /* ENDM */
|
||||
mrelb lit '7', /* RELB */
|
||||
mrelw lit '8', /* RELW */
|
||||
mendbit lit '9', /* ENDBIT */
|
||||
mmodrm1 lit '10', /* MODRM with 1 formal parameter */
|
||||
mmodrm2 lit '11', /* MODRM with 2 formal parmeters */
|
||||
msegfix lit '12', /* SEGFIX */
|
||||
mnosegfix lit '13', /* NOSEGFIX */
|
||||
mformalbits lit '14', /* define bits from formal par. */
|
||||
mnumberbits lit '15'; /* define bits from number */
|
||||
|
||||
|
||||
/* Specifier letters: */
|
||||
|
||||
declare
|
||||
specA lit '0', /* accumulator, AX or AL */
|
||||
specC lit '1', /* code, address expression */
|
||||
specD lit '2', /* data, number used as immediate data */
|
||||
specE lit '3', /* effective address, either a memory
|
||||
address (specM) or register (specR) */
|
||||
specM lit '4', /* memory address, variable (with or without
|
||||
indexing) or [register expression] */
|
||||
specR lit '5', /* general register only (not segment) */
|
||||
specS lit '6', /* segment register */
|
||||
specX lit '7'; /* simple variable name without indexing */
|
||||
|
||||
|
||||
/* Modifier letters: */
|
||||
|
||||
declare
|
||||
nomod lit '0',
|
||||
modb lit '1', /* byte expression */
|
||||
modw lit '2', /* word expression */
|
||||
modsb lit '3', /* byte in range (-128,127) */
|
||||
modd lit '4'; /* 2-word expression */
|
||||
|
||||
/* Segment override bytes: */
|
||||
dcl
|
||||
ESover lit '26h',
|
||||
CSover lit '2eh',
|
||||
SSover lit '36h',
|
||||
DSover lit '3eh';
|
||||
|
||||
|
||||
/* "AND"-masks for codemaco head flag */
|
||||
|
||||
declare
|
||||
nopar$and lit '0fh', /* no of parameters, bit 0-3 */
|
||||
prefix$and lit '10h'; /* prefix flag, bit 4 */
|
||||
|
||||
|
||||
/* "OR"-masks for codemacro head flag */
|
||||
|
||||
declare
|
||||
prefix$on lit '10h'; /* PREFIX on flag */
|
||||
|
||||
|
||||
/* "AND"-masks for modifier-letter/range spec. byte */
|
||||
|
||||
declare
|
||||
modletter$bit lit '07h', /* bits 0-2 */
|
||||
range$spec$bit lit '0f8h', /* bits 3-7 */
|
||||
modlettercount lit '0', /* bit position counters */
|
||||
rangespeccount lit '3';
|
||||
|
||||
|
||||
/* "OR"-masks for range-specifier bits */
|
||||
|
||||
declare
|
||||
norange lit '0', /* no range specfier (bits 3-4) */
|
||||
singlerange lit '08h', /* single range */
|
||||
doublerange lit '10h', /* double range */
|
||||
rangeand lit '18h',
|
||||
number$range lit '0', /* bit 5 */
|
||||
register$range lit '20h',
|
||||
rangetypeand lit '20h';
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,117 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
declare
|
||||
aaa1 byte external,
|
||||
aad1 byte external,
|
||||
aam1 byte external,
|
||||
aas1 byte external,
|
||||
adc11 byte external,
|
||||
add11 byte external,
|
||||
and10 byte external,
|
||||
call3 byte external,
|
||||
callf2 byte external,
|
||||
cbw1 byte external,
|
||||
clc1 byte external,
|
||||
cld1 byte external,
|
||||
cli1 byte external,
|
||||
cmc1 byte external,
|
||||
cmp11 byte external,
|
||||
cmps2 byte external,
|
||||
CMPSB1 BYTE EXTERNAL,
|
||||
CMPSW1 BYTE EXTERNAL,
|
||||
cwd1 byte external,
|
||||
daa1 byte external,
|
||||
das1 byte external,
|
||||
dec3 byte external,
|
||||
div2 byte external,
|
||||
esc3 byte external,
|
||||
hlt1 byte external,
|
||||
idiv2 byte external,
|
||||
imul2 byte external,
|
||||
in4 byte external,
|
||||
inc3 byte external,
|
||||
int2 byte external,
|
||||
into1 byte external,
|
||||
iret1 byte external,
|
||||
ja1 byte external,
|
||||
jae1 byte external,
|
||||
jb1 byte external,
|
||||
jbe1 byte external,
|
||||
jcxz1 byte external,
|
||||
je1 byte external,
|
||||
jg1 byte external,
|
||||
jge1 byte external,
|
||||
jl1 byte external,
|
||||
jle1 byte external,
|
||||
jmp2 byte external,
|
||||
jmpf2 byte external,
|
||||
jmps1 byte external,
|
||||
jne1 byte external,
|
||||
jno1 byte external,
|
||||
jnp1 byte external,
|
||||
jns1 byte external,
|
||||
jo1 byte external,
|
||||
jp1 byte external,
|
||||
js1 byte external,
|
||||
lahf1 byte external,
|
||||
lds1 byte external,
|
||||
les1 byte external,
|
||||
lea1 byte external,
|
||||
lock1 byte external,
|
||||
lods2 byte external,
|
||||
LODSB1 BYTE EXTERNAL,
|
||||
LODSW1 BYTE EXTERNAL,
|
||||
loop1 byte external,
|
||||
loope1 byte external,
|
||||
loopne1 byte external,
|
||||
mov17 byte external,
|
||||
movs2 byte external,
|
||||
MOVSB1 BYTE EXTERNAL,
|
||||
MOVSW1 BYTE EXTERNAL,
|
||||
mul2 byte external,
|
||||
neg2 byte external,
|
||||
nop1 byte external,
|
||||
not2 byte external,
|
||||
or10 byte external,
|
||||
out4 byte external,
|
||||
pop4 byte external,
|
||||
popf1 byte external,
|
||||
push3 byte external,
|
||||
pushf1 byte external,
|
||||
rcl4 byte external,
|
||||
rcr4 byte external,
|
||||
rep1 byte external,
|
||||
repe1 byte external,
|
||||
repne1 byte external,
|
||||
ret3 byte external,
|
||||
retf3 byte external,
|
||||
rol4 byte external,
|
||||
ror4 byte external,
|
||||
sahf1 byte external,
|
||||
sal4 byte external,
|
||||
sar4 byte external,
|
||||
sbb11 byte external,
|
||||
scas2 byte external,
|
||||
SCASB1 BYTE EXTERNAL,
|
||||
SCASW1 BYTE EXTERNAL,
|
||||
shr4 byte external,
|
||||
stc1 byte external,
|
||||
std1 byte external,
|
||||
sti1 byte external,
|
||||
stos2 byte external,
|
||||
STOSB1 BYTE EXTERNAL,
|
||||
STOSW1 BYTE EXTERNAL,
|
||||
sub11 byte external,
|
||||
test10 byte external,
|
||||
wait1 byte external,
|
||||
xchg6 byte external,
|
||||
xlat1 byte external,
|
||||
xor10 byte external;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,56 @@
|
||||
$nolist
|
||||
|
||||
clearcmindex: proc external;
|
||||
end clearcmindex;
|
||||
|
||||
emit: proc external; /* emit codebytes for an instruction */
|
||||
end emit;
|
||||
|
||||
emitdummies: proc external; /* emit dummy (NO-OPs) bytes if error */
|
||||
end emitdummies;
|
||||
|
||||
commandtype: proc(comno,lg,pt) byte external;
|
||||
dcl (comno,lg) byte,pt address;
|
||||
end commandtype;
|
||||
|
||||
mDBNrout: proc external;
|
||||
end mDBNrout;
|
||||
|
||||
mDBFrout: proc external;
|
||||
end mDBFrout;
|
||||
|
||||
mDWNrout: proc external;
|
||||
end mDWNrout;
|
||||
|
||||
mDWFrout: proc external;
|
||||
end mDWFrout;
|
||||
|
||||
mDDFrout: proc external;
|
||||
end mDDFrout;
|
||||
|
||||
mRELBrout: proc external;
|
||||
end mRELBrout;
|
||||
|
||||
mRELWrout: proc external;
|
||||
end mRELWrout;
|
||||
|
||||
mNOSEGFIXrout: proc external;
|
||||
end mNOSEGFIXrout;
|
||||
|
||||
mSEGFIXrout: proc external;
|
||||
end mSEGFIXrout;
|
||||
|
||||
mMODRM1rout: proc external;
|
||||
end mMODRM1rout;
|
||||
|
||||
mMODRM2rout: proc external;
|
||||
end mMODRM2rout;
|
||||
|
||||
mDBITrout: proc external;
|
||||
end mDBITrout;
|
||||
|
||||
/* test if operands match instruction */
|
||||
searchformatch: proc byte external;
|
||||
end searchformatch;
|
||||
|
||||
$list
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,452 @@
|
||||
$title ('CODEMACRO SUBROUTINE MODULE')
|
||||
cmsubr:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 4/7/81 R. Silberstein
|
||||
modified 4/13/81 R. Silberstein
|
||||
modified 5/5/81 R. Silberstein
|
||||
modified 9/2/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This is the module to
|
||||
|
||||
1) test if a set of operands matches a given instruction
|
||||
|
||||
and
|
||||
|
||||
2) produce output code for matched instruction
|
||||
|
||||
The module interfaces the CODEOUTPUT module to
|
||||
physically send code bytes to the HEX output file.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:cmacd.lit)
|
||||
$include (:f1:outp.lit)
|
||||
$include (:f1:scan.ext)
|
||||
$include (:f1:subr1.ext)
|
||||
$INCLUDE (:F1:SUBR2.EXT)
|
||||
$include (:f1:outp.ext)
|
||||
$include (:f1:ermod.ext)
|
||||
$include (:f1:cmsubr.x86)
|
||||
$eject
|
||||
dcl /* global variables */
|
||||
bytevar based macroptr byte, /* variables within codemacros */
|
||||
addrvar based macroptr addr,
|
||||
emitbyte(80) byte, /* buffer of output codebytes */
|
||||
emitindex byte, /* index of "emitbyte" */
|
||||
bitcomtab(2) byte data /* legal commands within "DBIT" */
|
||||
(mnumberbits,mformalbits);
|
||||
$eject
|
||||
|
||||
/********** MICHELLANEOUS SUBROUTINES: **********/
|
||||
|
||||
clearcmindex: proc public;
|
||||
emitindex=0;
|
||||
end clearcmindex;
|
||||
|
||||
emit: proc public; /* emit codebytes for an instruction */
|
||||
dcl i byte;
|
||||
i=0ffh;
|
||||
do while (i:=i+1) < emitindex;
|
||||
call emitcodebyte(emitbyte(i),CSdata);
|
||||
end$while;
|
||||
end emit;
|
||||
|
||||
emitdummies: proc public; /* emit dummy (NO-OP-) bytes if error */
|
||||
dcl (i,j) byte,nodum(4) byte data(2,5,6,8);
|
||||
j=nooper;
|
||||
if j>3 then j=3;
|
||||
i=0ffh;
|
||||
do while (i:=i+1) < nodum(j);
|
||||
call emitcodebyte(90h,CSdata); /* 90H = NOP */
|
||||
end$while;
|
||||
end emitdummies;
|
||||
|
||||
emitsinglebyte: proc(ch); /* fill local emitbuffer with a new byte */
|
||||
dcl ch byte;
|
||||
if noerror then$do
|
||||
emitbyte(emitindex)=ch;
|
||||
emitindex=emitindex+1;
|
||||
end$if;
|
||||
end emitsinglebyte;
|
||||
|
||||
emitsingleword: proc (var); /* fill 2 new bytes into emitbuffer */
|
||||
dcl var addr, byt1 byte at(.var), byt2 byte at(.var+1);
|
||||
call emitsinglebyte(byt1);
|
||||
call emitsinglebyte(byt2);
|
||||
end emitsingleword;
|
||||
|
||||
incrmacroptr: proc;
|
||||
macroptr=macroptr+1;
|
||||
end incrmacroptr;
|
||||
|
||||
getoperadr: proc address;
|
||||
dcl pt address;
|
||||
pt=.operands(bytevar);
|
||||
call incrmacroptr;
|
||||
return pt;
|
||||
end getoperadr;
|
||||
|
||||
/* recognize codemacro command type */
|
||||
commandtype: proc(comno,lg,pt) byte public;
|
||||
dcl (comno,lg,i) byte,pt address,ch based pt(1) byte;
|
||||
i=0ffh;
|
||||
do while (i:=i+1) < lg;
|
||||
if comno=ch(i) then$do call incrmacroptr; return i; end$if;
|
||||
end$while;
|
||||
return lg;
|
||||
end commandtype;
|
||||
$eject
|
||||
|
||||
/******* CODEMACRO COMMAND SUBROUTINES: ********/
|
||||
|
||||
|
||||
mDBNrout: proc public;
|
||||
call emitsinglebyte(bytevar);
|
||||
call incrmacroptr;
|
||||
end mDBNrout;
|
||||
|
||||
mDBFrout: proc public;
|
||||
dcl pt address,opr based pt operandstruc;
|
||||
pt=getoperadr;
|
||||
call emitsinglebyte(opr.offset);
|
||||
end mDBFrout;
|
||||
|
||||
mDWNrout: proc public;
|
||||
call emitsingleword(addrvar);
|
||||
call incrmacroptr;
|
||||
call incrmacroptr;
|
||||
end mDWNrout;
|
||||
|
||||
mDWFrout: proc public;
|
||||
dcl pt address,opr based pt operandstruc;
|
||||
pt=getoperadr;
|
||||
call emitsingleword(opr.offset);
|
||||
end mDWFrout;
|
||||
|
||||
mDDFrout: proc public;
|
||||
dcl pt address,opr based pt operandstruc;
|
||||
pt=getoperadr;
|
||||
if (opr.sflag and segmbit) = 0 then call errmsg(misssegminfo);
|
||||
call emitsingleword(opr.offset);
|
||||
call emitsingleword(opr.segment);
|
||||
end mDDFrout;
|
||||
|
||||
mRELBrout: proc public;
|
||||
dcl pt address,opr based pt operandstruc,displ addr;
|
||||
pt=getoperadr;
|
||||
displ=opr.offset-cip-2;
|
||||
if (opr.segment <> csegvalue) or (typecalc(displ)=wrd) then$do
|
||||
call errmsg(laboutofrange);
|
||||
end$if;
|
||||
call emitsinglebyte(displ);
|
||||
IF ABSADDR (0) = SPACE THEN$DO
|
||||
CALL HEX2OUT (OPR.OFFSET, .ABSADDR);
|
||||
END$IF;
|
||||
end mRELBrout;
|
||||
|
||||
mRELWrout: proc public;
|
||||
dcl pt address,opr based pt operandstruc;
|
||||
pt=getoperadr;
|
||||
if opr.segment <> csegvalue then call errmsg(laboutofrange);
|
||||
call emitsingleword(opr.offset-cip-3);
|
||||
IF ABSADDR (0) = SPACE THEN$DO
|
||||
CALL HEX2OUT (OPR.OFFSET, .ABSADDR);
|
||||
END$IF;
|
||||
end mRELWrout;
|
||||
|
||||
mNOSEGFIXrout: proc public;
|
||||
dcl (segr,flag,segt) byte,pt address,opr based pt operandstruc;
|
||||
segr=bytevar;
|
||||
call incrmacroptr;
|
||||
pt=getoperadr;
|
||||
if (opr.baseindex and nooverridebit) = 0 then$do
|
||||
flag=opr.sflag;
|
||||
segt=shr(flag,segtypecount) and 3;
|
||||
noerror=(segt=segr);
|
||||
end$if;
|
||||
end mNOSEGFIXrout;
|
||||
|
||||
mSEGFIXrout: proc public;
|
||||
dcl pt address,opr based pt operandstruc,(segr,override,sflag) byte;
|
||||
DSovertest: proc byte;
|
||||
segr=shr(opr.baseindex,baseregcount) and 1;
|
||||
return (((sflag and bregbit) <> 0) and (segr=1)); /* 1 = BP */
|
||||
end DSovertest;
|
||||
|
||||
pt=getoperadr;
|
||||
sflag=opr.sflag;
|
||||
if (opr.baseindex and nooverridebit) = 0 then$do
|
||||
segr=shr(sflag,segtypecount) and 3;
|
||||
do case segr;
|
||||
do; override=true; segr=ESover; end; /* ES */
|
||||
do; override=true; segr=CSover; end; /* CS */
|
||||
do; override=not DSovertest; segr=SSover; end; /* SS */
|
||||
do; override=DSovertest; segr=DSover; end; /* DS */
|
||||
end$case;
|
||||
if override then call emitsinglebyte(segr);
|
||||
end$if;
|
||||
end mSEGFIXrout;
|
||||
|
||||
MODRM: proc (regfield,pt);
|
||||
dcl pt address,opr based pt operandstruc,
|
||||
(regfield,modfield,rmfield,dispflag,stype,sflag,segr) byte,
|
||||
BASEIND BYTE,
|
||||
offset addr,
|
||||
displow byte at(.offset),disphigh byte at (.offset+1);
|
||||
|
||||
disptype: proc byte;
|
||||
if segr=rcs then return 2; /* disp always 2 for variable in CS */
|
||||
if offset = 0 then return 0;
|
||||
return typecalc(offset);
|
||||
end disptype;
|
||||
|
||||
indextype: proc byte;
|
||||
if (sflag and iregbit) <> 0 then$do
|
||||
if (sflag and bregbit) <> 0 then return 0;
|
||||
return 1;
|
||||
end$if;
|
||||
return 2;
|
||||
end indextype;
|
||||
|
||||
offset=opr.offset; /* pick up operand attributes */
|
||||
stype=opr.stype;
|
||||
sflag=opr.sflag;
|
||||
segr=shr(sflag,segtypecount) and 3;
|
||||
BASEIND = OPR.BASEINDEX AND (BASEREGBIT OR INDEXREGBIT);
|
||||
|
||||
if stype=reg then$do
|
||||
rmfield=offset;
|
||||
modfield=11b;
|
||||
dispflag=0;
|
||||
else$do
|
||||
if (sflag and (iregbit or bregbit)) = 0 then$do
|
||||
rmfield=110b;
|
||||
modfield=0;
|
||||
dispflag=2;
|
||||
else$do
|
||||
dispflag=disptype; /* get no of DISP bytes */
|
||||
modfield=dispflag;
|
||||
do case indextype;
|
||||
|
||||
/* both base- and index-reg */
|
||||
RMFIELD = BASEIND AND (INDEXREGBIT OR BASEREGBIT);
|
||||
|
||||
/* index reg only */
|
||||
RMFIELD = 100B OR (BASEIND AND INDEXREGBIT);
|
||||
|
||||
do; /* base reg only */
|
||||
IF (BASEIND AND BASEREGBIT) > 0 THEN$DO
|
||||
rmfield=110b;
|
||||
/* mod=00 and r/m=110B is a special case */
|
||||
if dispflag=0 then$do
|
||||
dispflag,modfield=1;
|
||||
end$if;
|
||||
else$do
|
||||
rmfield=111b;
|
||||
end$if;
|
||||
end;
|
||||
end$case;
|
||||
end$if;
|
||||
end$if;
|
||||
regfield=shl(regfield,3) and 38h;
|
||||
modfield=shl(modfield,6) and 0c0h;
|
||||
call emitsinglebyte(regfield or modfield or rmfield);
|
||||
if dispflag > 0 then$do
|
||||
call emitsinglebyte(displow);
|
||||
if dispflag=2 then call emitsinglebyte(disphigh);
|
||||
end$if;
|
||||
end MODRM;
|
||||
|
||||
mMODRM1rout: proc public;
|
||||
dcl regfield byte;
|
||||
regfield=bytevar;
|
||||
call incrmacroptr;
|
||||
call MODRM(regfield,getoperadr);
|
||||
end mMODRM1rout;
|
||||
|
||||
mMODRM2rout: proc public;
|
||||
dcl regfield byte,pt address,opr based pt operandstruc;
|
||||
pt=getoperadr;
|
||||
regfield=opr.offset;
|
||||
call MODRM(regfield,getoperadr);
|
||||
end mMODRM2rout;
|
||||
|
||||
mDBITrout: proc public;
|
||||
dcl (result,crbit) byte,bittab(8) byte data(1,2,4,8,16,32,64,128);
|
||||
|
||||
join: proc(numb,nobit,noshift);
|
||||
dcl (numb,nobit,noshift) byte;
|
||||
if noshift > 0 then numb=shr(numb,noshift);
|
||||
if nobit < 8 then numb=shl(numb,8-nobit);
|
||||
do while (crbit <> 0ffh) and (nobit > 0);
|
||||
if (numb and 80h) <> 0 then result=result or bittab(crbit);
|
||||
crbit=crbit-1;
|
||||
nobit=nobit-1;
|
||||
numb=shl(numb,1);
|
||||
end$while;
|
||||
end join;
|
||||
|
||||
NUMBERBITSrout: proc;
|
||||
dcl nobit byte;
|
||||
nobit=bytevar;
|
||||
call incrmacroptr;
|
||||
call join(bytevar,nobit,0);
|
||||
call incrmacroptr;
|
||||
end NUMBERBITSrout;
|
||||
|
||||
FORMBITSrout: proc;
|
||||
dcl (nobit,numb) byte,pt address,opr based pt operandstruc;
|
||||
nobit=bytevar;
|
||||
call incrmacroptr;
|
||||
pt=getoperadr;
|
||||
numb=opr.offset;
|
||||
call join(numb,nobit,bytevar);
|
||||
call incrmacroptr;
|
||||
end FORMBITSrout;
|
||||
|
||||
result=0;
|
||||
crbit=7; /* current bit position */
|
||||
do while bytevar <> mendbit; /* do until ENDBIT command */
|
||||
do case commandtype(bytevar,length(bitcomtab),.bitcomtab);
|
||||
call NUMBERBITSrout;
|
||||
call FORMBITSrout;
|
||||
do; end;
|
||||
end$case;
|
||||
end$while;
|
||||
call incrmacroptr; /* skip ENDBIT command */
|
||||
call emitsinglebyte(result);
|
||||
end mDBITrout;
|
||||
|
||||
$eject
|
||||
|
||||
/********* ROUTINES TO MATCH OPERANDS TO INSTRUCTION ********/
|
||||
|
||||
/* test user operand against codemacro parameter */
|
||||
matchsingleop: proc(opno) byte;
|
||||
dcl (match,specletter,modletter,range,rangetype) byte,
|
||||
(rangev1,rangev2,opno) byte,
|
||||
pt address, oper based pt operandstruc;
|
||||
|
||||
|
||||
rangetest: proc byte; /* perform rangetest */
|
||||
dcl opervalue byte;
|
||||
rangev1=bytevar;
|
||||
call incrmacroptr;
|
||||
if range=doublerange then$do
|
||||
rangev2=bytevar;
|
||||
call incrmacroptr;
|
||||
end$if;
|
||||
opervalue=oper.offset;
|
||||
if range=doublerange then$do
|
||||
return ((opervalue>=rangev1) and (opervalue<=rangev2));
|
||||
else$do
|
||||
return (opervalue=rangev1);
|
||||
end$if;
|
||||
end rangetest;
|
||||
|
||||
modlettertest: proc byte;
|
||||
dcl numb addr,(styp,modbyt) byte;
|
||||
styp=oper.stype;
|
||||
if styp=lab then return true;
|
||||
modbyt=oper.sflag and typebit;
|
||||
if styp = reg then return (modbyt=modletter);
|
||||
if styp = variable then
|
||||
return ((modbyt=nomod) or (modbyt=modletter));
|
||||
if styp=number then$do
|
||||
numb=oper.offset;
|
||||
do case modletter-1;
|
||||
return not wrdtest(numb); /* BYTE */
|
||||
return wrdtest(numb); /* WORD */
|
||||
return (typecalc(numb)=byt); /* signed BYTE */
|
||||
return false; /* DWORD */
|
||||
end$case;
|
||||
end$if;
|
||||
return false;
|
||||
end modlettertest;
|
||||
|
||||
speclettertest: proc byte;
|
||||
dcl (opertype,locvalue,loctype) byte;
|
||||
memtest: proc byte;
|
||||
return (opertype=variable);
|
||||
end memtest;
|
||||
|
||||
opertype=oper.stype;
|
||||
locvalue=oper.offset;
|
||||
loctype=oper.sflag and typebit;
|
||||
do case specletter;
|
||||
/* A - accumulator (AX or AL) */
|
||||
return ((opertype=reg) and (locvalue=rax));
|
||||
/* C - code reference,i.e. label */
|
||||
return (opertype=lab);
|
||||
/* D - immediate data */
|
||||
return (opertype=number);
|
||||
/* E - effective address, i.e. memory address or register */
|
||||
return (memtest or (opertype=reg));
|
||||
/* M - memory address */
|
||||
return memtest;
|
||||
/* R - register except segment register */
|
||||
return ((opertype=reg) and (loctype <> dwrd));
|
||||
/* S - segment register */
|
||||
return ((opertype=reg) and (loctype = dwrd));
|
||||
/* X - memory address without indexing */
|
||||
return ((opertype=variable) and
|
||||
((oper.sflag and (iregbit or bregbit))=0));
|
||||
end$case;
|
||||
end speclettertest;
|
||||
|
||||
specletter=bytevar; /* pick up codemacro attributes */
|
||||
call incrmacroptr;
|
||||
modletter=bytevar and modletter$bit;
|
||||
range=bytevar and range$and;
|
||||
rangetype=bytevar and rangetype$and;
|
||||
call incrmacroptr;
|
||||
pt=.operands(opno); /* address of current user operand */
|
||||
|
||||
match=true;
|
||||
if range <> norange then match=rangetest;
|
||||
if modletter <> 0 then match=match and modlettertest;
|
||||
if match then match=speclettertest;
|
||||
return match;
|
||||
end matchsingleop;
|
||||
|
||||
/* test if operands match a specific codemacro */
|
||||
matchingops: proc byte;
|
||||
dcl savept address,(nopara,match,parno) byte;
|
||||
savept=macroptr;
|
||||
call incrmacroptr; /* macroptr=macroptr+2 */
|
||||
call incrmacroptr;
|
||||
nopara=bytevar; /* pick up no of parameters */
|
||||
call incrmacroptr; /* advance to first formal */
|
||||
if (nopara and prefix$on) <> 0 then return true; /* PREFIX */
|
||||
if nopara <> nooper then$do
|
||||
match=false;
|
||||
else$do
|
||||
match=true;
|
||||
parno=0ffh;
|
||||
do while (parno:=parno+1) < nopara;
|
||||
match=match and matchsingleop(parno);
|
||||
end$while;
|
||||
end$if;
|
||||
if not match then macroptr=savept;
|
||||
return match;
|
||||
end matchingops;
|
||||
|
||||
/* test if operands match instruction */
|
||||
searchformatch: proc byte public;
|
||||
dcl next based macroptr address;
|
||||
macroptr=firstmacroptr;
|
||||
do forever;
|
||||
if matchingops then return true;
|
||||
if next=0 then return false;
|
||||
macroptr=next;
|
||||
end$forever;
|
||||
end searchformatch;
|
||||
|
||||
end$module cmsubr;
|
||||
@@ -0,0 +1,73 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 4/13/81 R. Silberstein
|
||||
modified 9/2/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/* Error numbers: */
|
||||
|
||||
dcl
|
||||
laboutofrange lit '22', /* label out of range */
|
||||
misssegminfo lit '23'; /* missing segment info in operand */
|
||||
|
||||
/* Structures: */
|
||||
|
||||
dcl
|
||||
|
||||
symbolstruc lit 'struc(
|
||||
length addr,
|
||||
stype byte,
|
||||
sflag byte,
|
||||
segment addr,
|
||||
offset addr,
|
||||
baseindex byte)',
|
||||
|
||||
operandstruc lit 'symbolstruc';
|
||||
|
||||
|
||||
/* define bits of SFLAG of structures above */
|
||||
|
||||
dcl
|
||||
type$bit lit '7h', /* bit 0-2 */
|
||||
segtypebit lit '18h', /* bit 3-4 */
|
||||
segmbit lit '20h', /* bit 5 */
|
||||
iregbit lit '40h', /* bit 6 */
|
||||
bregbit lit '80h', /* bit 7 */
|
||||
|
||||
/* left-shift counters */
|
||||
typecount lit '0',
|
||||
segtypecount lit '3',
|
||||
segmcount lit '5',
|
||||
iregcount lit '6',
|
||||
bregcount lit '7',
|
||||
|
||||
/* define bits of BASEINDEX byte of structures above */
|
||||
|
||||
indexregbit lit '01h', /* bit 0 */
|
||||
baseregbit lit '02h', /* bit 1 */
|
||||
nooverridebit lit '40h', /* bit 6 */
|
||||
|
||||
/* left shift counters */
|
||||
|
||||
indexregcount lit '0',
|
||||
baseregcount lit '1',
|
||||
noovercount lit '6';
|
||||
|
||||
/* Mischellaneous global variables: */
|
||||
|
||||
dcl
|
||||
ABSADDR (4) BYTE EXTERNAL, /* ABSOLUTE ADDRESS FIELD */
|
||||
cip addr external, /* current instruction pointer */
|
||||
csegvalue addr external, /* current segment value */
|
||||
noerror byte external, /* errorflag in codemacro decoding */
|
||||
firstmacroptr address external, /* pointer at first codemacro */
|
||||
macroptr address external, /* current pointer within macros */
|
||||
fullsymbtab byte external, /* full if symboltable is full */
|
||||
nooper byte external, /* no of instruction operands */
|
||||
operands(4) operandstruc /* instruction operands,max 4 */
|
||||
external;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,11 @@
|
||||
$nolist
|
||||
|
||||
/* Special file devices if not diskfile : */
|
||||
|
||||
dcl
|
||||
null lit '''Z''-''A''', /* file devices */
|
||||
printer lit '''Y''-''A''',
|
||||
console lit '''X''-''A''',
|
||||
validdisk lit '''P''-''A''';
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,6 @@
|
||||
$nolist
|
||||
|
||||
decodeline: proc external;
|
||||
end decodeline;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,855 @@
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE DECODEL
|
||||
OBJECT MODULE PLACED IN DLINE.OBJ
|
||||
COMPILER INVOKED BY: :F0: DLINE.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title ('DECODE LINE MODULE')
|
||||
1 decodel:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 3/26/81 R. Silberstein
|
||||
modified 3/30/81 R. Silberstein
|
||||
modified 4/9/81 R. Silberstein
|
||||
modified 4/10/81 R. Silberstein
|
||||
modified 7/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
This is the module to decode each logical sourceline.
|
||||
The module takes care of all symbol definitions, and
|
||||
activates the PSEUDO-module and the INSTRUCTION-module
|
||||
to perform the assembly of the current non-empty source-
|
||||
line.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:struc.lit)
|
||||
= $nolist
|
||||
$include (:f1:equals.lit)
|
||||
= $nolist
|
||||
$include (:f1:ermod.lit)
|
||||
= $nolist
|
||||
$include (:f1:subr1.ext)
|
||||
= $nolist
|
||||
$include (:f1:subr2.ext)
|
||||
= $nolist
|
||||
$include (:f1:scan.ext)
|
||||
= $nolist
|
||||
$include (:f1:print.ext)
|
||||
= $nolist
|
||||
$include (:f1:instr.ext)
|
||||
= $nolist
|
||||
$include (:f1:pseud1.ext)
|
||||
= $nolist
|
||||
$include (:f1:pseud2.ext)
|
||||
= $nolist
|
||||
$include (:f1:ermod.ext)
|
||||
= $nolist
|
||||
$include (:f1:symb.ext)
|
||||
= $nolist
|
||||
$include (:f1:exglob.ext)
|
||||
= $nolist
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 2
|
||||
|
||||
|
||||
$include (:f1:dline.x86)
|
||||
= $nolist
|
||||
$include (:f1:cm.ext)
|
||||
= $nolist
|
||||
|
||||
|
||||
|
||||
|
||||
193 1 saveaccum: proc;
|
||||
194 2 acclensave=acclen;
|
||||
195 2 call copy(acclen,.accum(0),.accumsave(0));
|
||||
196 2 end saveaccum;
|
||||
|
||||
|
||||
197 1 exchangeaccum: proc;
|
||||
198 2 dcl locacclen byte,locaccum(80) byte;
|
||||
199 2 locacclen=acclensave;
|
||||
200 2 call copy(acclensave,.accumsave(0),.locaccum(0));
|
||||
201 2 call saveaccum;
|
||||
202 2 acclen=locacclen;
|
||||
203 2 call copy(locacclen,.locaccum(0),.accum(0));
|
||||
204 2 end exchangeaccum;
|
||||
|
||||
205 1 clearsymbol: proc;
|
||||
206 2 CALL FILL (0, .CURRENTSYMBOL.BASEINDEX-.CURRENTSYMBOL+1, .CURRENTSYMBOL);
|
||||
207 2 end clearsymbol;
|
||||
|
||||
|
||||
|
||||
208 1 pseudotype: proc(lg,ptr) byte;
|
||||
209 2 dcl (lg,i,lvalue) byte,ptr address,pstable based ptr (1) byte;
|
||||
210 2 if token.type <> pseudo then return lg+1;
|
||||
212 2 i=0ffh;
|
||||
213 2 do while (i:=i+1) < lg;
|
||||
214 3 lvalue=token.value;
|
||||
215 3 if lvalue=pstable(i) then$do
|
||||
217 4 call scan; /* skip found pseudo */
|
||||
218 4 return i;
|
||||
219 4 end$if;
|
||||
end$while;
|
||||
221 2 return i;
|
||||
222 2 end pseudotype;
|
||||
|
||||
|
||||
/* test if symbol if double defined or "neglected" symbol */
|
||||
|
||||
223 1 not$doub$negl: proc(errno) byte;
|
||||
224 2 dcl (errno,errfl) byte;
|
||||
225 2 if pass = 0 then$do
|
||||
227 3 if findsymbol(acclensave,.accumsave,.symbtabadr) then$do
|
||||
229 4 call getattributes(symbtabadr,.currentsymbol);
|
||||
230 4 if currentsymbol.stype <> neglected then$do
|
||||
232 5 currentsymbol.stype=doubledefined;
|
||||
233 5 call enterattributes(symbtabadr,.currentsymbol);
|
||||
234 5 end$if;
|
||||
235 4 return false;
|
||||
236 4 end$if;
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 3
|
||||
|
||||
|
||||
else$do
|
||||
/* pass 1 and pass 2 */
|
||||
|
||||
239 3 if not findsymbol(acclensave,.accumsave,.symbtabadr) then
|
||||
240 3 return false;
|
||||
241 3 call getattributes(symbtabadr,.currentsymbol);
|
||||
242 3 errfl=true;
|
||||
243 3 if currentsymbol.stype=neglected then$do
|
||||
245 4 errno=neglecterr;
|
||||
246 4 else$do
|
||||
248 4 if currentsymbol.stype<>doubledefined then errfl=false;
|
||||
end$if;
|
||||
251 3 if errfl then$do
|
||||
253 4 call exchangeaccum;
|
||||
254 4 call errmsg(errno);
|
||||
255 4 call exchangeaccum;
|
||||
256 4 return false;
|
||||
257 4 end$if;
|
||||
end$if;
|
||||
259 2 return true;
|
||||
260 2 end not$doub$negl;
|
||||
|
||||
261 1 newsym: proc byte; /* enter new symbol into table */
|
||||
262 2 if pass=0 then$do
|
||||
264 3 if not newsymbol(acclensave,.accumsave,.symbtabadr) then$do
|
||||
266 4 fullsymbtab=true;
|
||||
267 4 return false;
|
||||
268 4 end$if;
|
||||
end$if;
|
||||
270 2 return true;
|
||||
271 2 end newsym;
|
||||
|
||||
/* set up symbol attributes for label,DB,DW,DD,RS */
|
||||
|
||||
272 1 setupattr: proc (styp,sfla);
|
||||
273 2 dcl (styp,sfla,segtyp) byte;
|
||||
274 2 segtyp=shl(csegtype,segtypecount) and segtypebit;
|
||||
275 2 currentsymbol.stype=styp;
|
||||
276 2 if csegspec then sfla=sfla or segmbit;
|
||||
278 2 currentsymbol.sflag=sfla or segtyp;
|
||||
279 2 currentsymbol.segment=csegvalue;
|
||||
280 2 currentsymbol.offset=cip;
|
||||
281 2 end setupattr;
|
||||
|
||||
282 1 entatr: proc; /* enter attributes of current symbol into table */
|
||||
283 2 if pass <> 2 then$do
|
||||
285 3 call enter$attributes(symbtabadr,.currentsymbol);
|
||||
286 3 end$if;
|
||||
287 2 end entatr;
|
||||
|
||||
/* decode instruction */
|
||||
288 1 decodeinstr: proc;
|
||||
289 2 if csegtype <> rcs then$do
|
||||
291 3 call errmsg(instrerr);
|
||||
292 3 call skip$rest$of$line;
|
||||
293 3 else$do
|
||||
295 3 CALL LISTCIP;
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 4
|
||||
|
||||
|
||||
296 3 call instruction; /* decode instruction */
|
||||
297 3 end$if;
|
||||
298 2 end decodeinstr;
|
||||
|
||||
|
||||
299 1 labinstruction: proc; /* scan labelled instruction */
|
||||
300 2 dcl symb based codemacroptr symbolstruc;
|
||||
|
||||
301 2 call saveaccum;
|
||||
/* enter label into symbol table */
|
||||
302 2 if not$doub$negl(doubledeflab) then$do
|
||||
304 3 if newsym then$do
|
||||
306 4 call setupattr(lab,wrd);
|
||||
307 4 call entatr;
|
||||
308 4 end$if;
|
||||
end$if;
|
||||
310 2 call scan; /* skip ":" */
|
||||
311 2 call scan; /* allow empty instruction */
|
||||
312 2 if emptyline then$do
|
||||
314 3 call skip$rest$of$line;
|
||||
315 3 else$do
|
||||
317 3 if findcodemacro(acclen,.accum(0),.codemacroptr) then$do
|
||||
319 4 call scan; /* skip codemacro */
|
||||
320 4 call decode$instr;
|
||||
321 4 else$do
|
||||
323 4 call errmsg(illegalmacro);
|
||||
324 4 end$if;
|
||||
325 3 end$if;
|
||||
326 2 end labinstruction;
|
||||
|
||||
|
||||
|
||||
327 1 no$ident$pseudo: proc; /* branch to correct pseudo routine */
|
||||
328 2 dcl ptable(*) byte data( /* define legal unnamed pseudos */
|
||||
pif,pendif,pinclude,pcseg,pdseg,psseg,peseg,porg,pdb,
|
||||
pdw,pdd,prb,prs,prw,pend,ppagesize,ppagewidth,
|
||||
ptitle,peject,psimform,pcodemacro,plist,pnolist,PIFLIST,PNOIFLIST,
|
||||
psegfix,pnosegfix,pmodrm,prelb,prelw,pdbit,pendm);
|
||||
|
||||
329 2 do case pseudotype(length(ptable),.ptable); /* branch */
|
||||
330 3 call IFrout;
|
||||
331 3 call ENDIFrout;
|
||||
332 3 call INCLUDErout;
|
||||
333 3 call CSEGrout;
|
||||
334 3 call DSEGrout;
|
||||
335 3 call SSEGrout;
|
||||
336 3 call ESEGrout;
|
||||
337 3 call ORGrout;
|
||||
338 3 if codemacro$flag then call db$cm$rout;
|
||||
340 3 else call DBrout;
|
||||
341 3 if codemacro$flag then call dw$cm$rout;
|
||||
343 3 else call DWrout;
|
||||
344 3 if codemacro$flag then call dd$cm$rout;
|
||||
346 3 else call DDrout;
|
||||
347 3 call RSrout(byt); /* RB */
|
||||
348 3 call RSrout(byt); /* RS */
|
||||
349 3 call RSrout(wrd); /* RW */
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 5
|
||||
|
||||
|
||||
350 3 call ENDrout;
|
||||
351 3 call PAGESIZErout;
|
||||
352 3 call PAGEWIDTHrout;
|
||||
353 3 call TITLErout;
|
||||
354 3 call EJECTrout;
|
||||
355 3 call SIMFORMrout;
|
||||
356 3 call CODEMACROrout;
|
||||
357 3 call LISTrout;
|
||||
358 3 call NOLISTrout;
|
||||
359 3 CALL IFLISTROUT;
|
||||
360 3 CALL NOIFLISTROUT;
|
||||
361 3 call segfix$cm$rout; /* cm */
|
||||
362 3 call nosegfix$cm$rout; /* cm */
|
||||
363 3 call modrm$cm$rout; /* cm */
|
||||
364 3 call relb$cm$rout; /* cm */
|
||||
365 3 call relw$cm$rout; /* cm */
|
||||
366 3 call dbit$cm$rout; /* cm */
|
||||
367 3 call end$cm$rout; /* cm */
|
||||
368 3 do; /* error, illegal pseudo */
|
||||
369 4 call errmsg(illegalpseudo);
|
||||
370 4 call skip$rest$of$line;
|
||||
371 4 end;
|
||||
372 3 end$case;
|
||||
373 2 end no$ident$pseudo;
|
||||
|
||||
|
||||
374 1 identpseudo: proc(normal); /* scan a named pseudo instruction */
|
||||
375 2 dcl (noerr,normal) byte,symb based codemacroptr symbolstruc;
|
||||
|
||||
376 2 entervar: proc(typ);
|
||||
377 3 dcl typ byte;
|
||||
378 3 noerr=false;
|
||||
379 3 if not$doub$negl(doubledefvar) then$do
|
||||
381 4 if newsym then$do
|
||||
383 5 call setupattr(variable,typ);
|
||||
384 5 noerr=true;
|
||||
385 5 end$if;
|
||||
end$if;
|
||||
387 3 end entervar;
|
||||
|
||||
388 2 enter: proc;
|
||||
389 3 if noerr then call entatr;
|
||||
391 3 end enter;
|
||||
|
||||
/* legal pseudos: DB,DW,DD,RB,RS,RW,EQU */
|
||||
392 2 dcl pseudotable(7) byte data(pdb,pdw,pdd,prb,prs,prw,pequ);
|
||||
|
||||
393 2 call clearsymbol; /* clear attributes of current symbol */
|
||||
394 2 if normal then$do /* unormal if EQU with instruction parameter */
|
||||
396 3 call saveaccum;
|
||||
397 3 call scan; /* scan actual pseudo */
|
||||
398 3 end$if;
|
||||
399 2 do case pseudotype(length(pseudotable),.pseudotable);
|
||||
400 3 do; /* DB */
|
||||
401 4 call entervar(byt);
|
||||
402 4 call DBrout;
|
||||
403 4 call enter;
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 6
|
||||
|
||||
|
||||
404 4 end;
|
||||
|
||||
405 3 do; /* DW */
|
||||
406 4 call entervar(wrd);
|
||||
407 4 call DWrout;
|
||||
408 4 call enter;
|
||||
409 4 end;
|
||||
|
||||
410 3 do; /* DD */
|
||||
411 4 call entervar(dwrd);
|
||||
412 4 call DDrout;
|
||||
413 4 call enter;
|
||||
414 4 end;
|
||||
|
||||
415 3 do; /* RB */
|
||||
416 4 call entervar(byt);
|
||||
417 4 call RSrout(byt);
|
||||
418 4 call enter;
|
||||
419 4 end;
|
||||
|
||||
420 3 do; /* RS */
|
||||
421 4 call entervar(byt);
|
||||
422 4 call RSrout(byt);
|
||||
423 4 call enter;
|
||||
424 4 end;
|
||||
|
||||
425 3 do; /* RW */
|
||||
426 4 call entervar(wrd);
|
||||
427 4 call RSrout(wrd);
|
||||
428 4 call enter;
|
||||
429 4 end;
|
||||
|
||||
430 3 do; /* EQU */
|
||||
431 4 if not$doub$negl(doubledefsymb) then$do
|
||||
433 5 if newsym then$do
|
||||
435 6 call EQUrout;
|
||||
436 6 else$do
|
||||
438 6 call skip$rest$of$line;
|
||||
439 6 end$if;
|
||||
440 5 else$do
|
||||
442 5 call skip$rest$of$line;
|
||||
443 5 end$if;
|
||||
444 4 end;
|
||||
|
||||
445 3 do; /* illegal pseudo instruction */
|
||||
446 4 call errmsg(illegalpseudo);
|
||||
447 4 call skip$rest$of$line;
|
||||
448 4 end;
|
||||
|
||||
449 3 do; /* missing pseudo instruction */
|
||||
450 4 call errmsg(missingpseudo);
|
||||
451 4 call skip$rest$of$line;
|
||||
452 4 end;
|
||||
453 3 end$case;
|
||||
454 2 end identpseudo;
|
||||
|
||||
455 1 decodeline: proc public;
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 7
|
||||
|
||||
|
||||
456 2 first$item$type: proc byte;
|
||||
457 3 dcl typ byte;
|
||||
458 3 typ=token.type;
|
||||
459 3 if typ=pseudo then return 3;
|
||||
461 3 if typ=ident and nextch=':' then return 2;
|
||||
463 3 if (typ=ident) or (typ=operator) then$do
|
||||
465 4 if findcodemacro(acclen,.accum(0),.codemacroptr) then$do
|
||||
467 5 call saveaccum;
|
||||
468 5 call scan; /* skip found codemacro */
|
||||
469 5 typ=token.value;
|
||||
470 5 if (token.type=pseudo) and (typ=pequ) then return 5;
|
||||
472 5 return 4;
|
||||
473 5 end$if;
|
||||
end$if;
|
||||
475 3 if typ <> ident then return 0; /* error */
|
||||
477 3 return 1;
|
||||
478 3 end first$item$type;
|
||||
|
||||
479 2 if accum(0) <> cr then$do /* skip blank lines */
|
||||
481 3 do case first$item$type;
|
||||
482 4 do; /* error,skip rest of line */
|
||||
483 5 call errmsg(first$item); /* error handler */
|
||||
484 5 call skip$rest$of$line;
|
||||
485 5 end;
|
||||
486 4 call ident$pseudo(true); /* named pseudo instruction */
|
||||
487 4 call lab$instruction; /* label (followed by instruction) */
|
||||
488 4 call no$ident$pseudo; /* pseudo instruction */
|
||||
489 4 call decodeinstr; /* code instruction */
|
||||
490 4 call identpseudo(false); /* EQU with instruction parameter */
|
||||
491 4 end$case;
|
||||
492 3 end$if;
|
||||
493 2 end decodeline;
|
||||
|
||||
494 1 end$module decodel;
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 8
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
169 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(74) 194 195 202 317 465
|
||||
170 0000H 1 ACCLENSAVE . . . . BYTE EXTERNAL(82) 194 199 200 227 239
|
||||
264
|
||||
169 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(75) 195 203 317
|
||||
465 479
|
||||
170 0000H 80 ACCUMSAVE. . . . . BYTE ARRAY(80) EXTERNAL(81) 195 200 227
|
||||
239 264
|
||||
2 ADDR . . . . . . . LITERALLY 11 14 17 20 26 44 47
|
||||
50 53 139 140 146 149 152 155 158 161
|
||||
164 167 169 170 300 375
|
||||
34 0000H ALPHANUMERIC . . . PROCEDURE BYTE EXTERNAL(8) STACK=0000H
|
||||
37 0000H ASCIICHAR. . . . . PROCEDURE BYTE EXTERNAL(9) STACK=0000H
|
||||
166 0000H 2 ASCIIPTR . . . . . WORD PARAMETER 167
|
||||
300 0008H 1 BASEINDEX. . . . . BYTE MEMBER(SYMB)
|
||||
170 0008H 1 BASEINDEX. . . . . BYTE MEMBER(CURRENTSYMBOL) 206
|
||||
169 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
|
||||
375 0008H 1 BASEINDEX. . . . . BYTE MEMBER(SYMB)
|
||||
3 BASEREGBIT . . . . LITERALLY
|
||||
3 BASEREGCOUNT . . . LITERALLY
|
||||
3 BREGBIT. . . . . . LITERALLY
|
||||
3 BREGCOUNT. . . . . LITERALLY
|
||||
5 BYT. . . . . . . . LITERALLY 347 348 401 416 417 421 422
|
||||
31 0000H 1 CH . . . . . . . . BYTE PARAMETER 32
|
||||
28 0000H 1 CH . . . . . . . . BYTE PARAMETER 29
|
||||
34 0000H 1 CH . . . . . . . . BYTE PARAMETER 35
|
||||
37 0000H 1 CH . . . . . . . . BYTE PARAMETER 38
|
||||
25 0000H 1 CH . . . . . . . . BYTE PARAMETER 26
|
||||
69 0000H 1 CH . . . . . . . . BYTE PARAMETER 70
|
||||
40 0000H 1 CH . . . . . . . . BYTE PARAMETER 41
|
||||
169 0000H 2 CIP. . . . . . . . WORD EXTERNAL(66) 280
|
||||
205 0043H 19 CLEARSYMBOL. . . . PROCEDURE STACK=000AH 393
|
||||
4 CODE . . . . . . . LITERALLY
|
||||
9 CODEMACROERR . . . LITERALLY
|
||||
170 0000H 1 CODEMACROFLAG. . . BYTE EXTERNAL(87) 338 341 344
|
||||
3 CODEMACROHEAD. . . LITERALLY
|
||||
170 0000H 2 CODEMACROPTR . . . WORD EXTERNAL(86) 300 317 375 465
|
||||
171 0000H CODEMACROROUT. . . PROCEDURE EXTERNAL(88) STACK=0000H 356
|
||||
16 0000H COPY . . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H 195 200
|
||||
203
|
||||
2 CR . . . . . . . . LITERALLY 479
|
||||
98 0000H CSEGROUT . . . . . PROCEDURE EXTERNAL(34) STACK=0000H 333
|
||||
169 0000H 1 CSEGSPEC . . . . . BYTE EXTERNAL(69) 276
|
||||
169 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(67) 274 289
|
||||
169 0000H 2 CSEGVALUE. . . . . WORD EXTERNAL(68) 279
|
||||
169 0000H 2 CURDSEG. . . . . . WORD EXTERNAL(71)
|
||||
170 0000H 9 CURRENTSYMBOL. . . STRUCTURE EXTERNAL(84) 206 229 230 232
|
||||
233 241 243 248 275 278 279 280 285
|
||||
16 0000H 2 D. . . . . . . . . WORD PARAMETER 17
|
||||
52 0000H 2 D. . . . . . . . . WORD PARAMETER 53
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 9
|
||||
|
||||
|
||||
49 0000H 2 D. . . . . . . . . WORD PARAMETER 50
|
||||
46 0000H 2 D. . . . . . . . . WORD PARAMETER 47
|
||||
43 0000H 2 D. . . . . . . . . WORD PARAMETER 44
|
||||
173 0000H DBCMROUT . . . . . PROCEDURE EXTERNAL(89) STACK=0000H 339
|
||||
189 0000H DBITCMROUT . . . . PROCEDURE EXTERNAL(97) STACK=0000H 366
|
||||
89 0000H DBROUT . . . . . . PROCEDURE EXTERNAL(30) STACK=0000H 340 402
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
177 0000H DDCMROUT . . . . . PROCEDURE EXTERNAL(91) STACK=0000H 345
|
||||
93 0000H DDROUT . . . . . . PROCEDURE EXTERNAL(32) STACK=0000H 346 412
|
||||
288 01B2H 29 DECODEINSTR. . . . PROCEDURE STACK=0006H 320 489
|
||||
1 0000H DECODEL. . . . . . PROCEDURE STACK=0000H
|
||||
455 0432H 76 DECODELINE . . . . PROCEDURE PUBLIC STACK=0024H
|
||||
52 0000H DECOUT . . . . . . PROCEDURE EXTERNAL(14) STACK=0000H
|
||||
4 DELETEDSYMB. . . . LITERALLY
|
||||
169 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN)
|
||||
154 0000H 2 DEST . . . . . . . WORD PARAMETER 155
|
||||
28 0000H DIGIT. . . . . . . PROCEDURE BYTE EXTERNAL(6) STACK=0000H
|
||||
4 DOUBLEDEFINED. . . LITERALLY 232 248
|
||||
9 DOUBLEDEFLAB . . . LITERALLY 302
|
||||
9 DOUBLEDEFSYMB. . . LITERALLY 431
|
||||
9 DOUBLEDEFVAR . . . LITERALLY 379
|
||||
100 0000H DSEGROUT . . . . . PROCEDURE EXTERNAL(35) STACK=0000H 334
|
||||
169 0000H 1 DSPEC. . . . . . . BYTE EXTERNAL(70)
|
||||
175 0000H DWCMROUT . . . . . PROCEDURE EXTERNAL(90) STACK=0000H 342
|
||||
5 DWRD . . . . . . . LITERALLY 411
|
||||
91 0000H DWROUT . . . . . . PROCEDURE EXTERNAL(31) STACK=0000H 343 407
|
||||
83 0000H EJECT. . . . . . . PROCEDURE EXTERNAL(27) STACK=0000H
|
||||
124 0000H EJECTROUT. . . . . PROCEDURE EXTERNAL(47) STACK=0000H 354
|
||||
2 ELSEDO . . . . . . LITERALLY 236
|
||||
67 0000H EMPTYLINE. . . . . PROCEDURE BYTE EXTERNAL(20) STACK=0000H 312
|
||||
2 ENDCASE. . . . . . LITERALLY
|
||||
191 0000H ENDCMROUT. . . . . PROCEDURE EXTERNAL(98) STACK=0000H 367
|
||||
2 ENDDO. . . . . . . LITERALLY
|
||||
2 ENDFOREVER . . . . LITERALLY
|
||||
2 ENDIF. . . . . . . LITERALLY 249 257 268 308 385 473
|
||||
112 0000H ENDIFROUT. . . . . PROCEDURE EXTERNAL(41) STACK=0000H 331
|
||||
2 ENDMODULE. . . . . LITERALLY
|
||||
2 ENDOFFILE. . . . . LITERALLY
|
||||
9 ENDOFLINEERR . . . LITERALLY
|
||||
140 0000H 2 ENDOFSYMBTAB . . . WORD EXTERNAL(55)
|
||||
2 ENDPROC. . . . . . LITERALLY
|
||||
116 0000H ENDROUT. . . . . . PROCEDURE EXTERNAL(43) STACK=0000H 350
|
||||
2 ENDWHILE . . . . . LITERALLY 219
|
||||
282 019BH 23 ENTATR . . . . . . PROCEDURE STACK=0008H 307 390
|
||||
388 0423H 15 ENTER. . . . . . . PROCEDURE STACK=000CH 403 408 413 418
|
||||
423 428
|
||||
157 0000H ENTERATTRIBUTES. . PROCEDURE EXTERNAL(62) STACK=0000H 233 285
|
||||
376 03F8H 43 ENTERVAR . . . . . PROCEDURE STACK=001AH 401 406 411 416
|
||||
421 426
|
||||
43 0000H EQUAL. . . . . . . PROCEDURE BYTE EXTERNAL(11) STACK=0000H
|
||||
108 0000H EQUROUT. . . . . . PROCEDURE EXTERNAL(39) STACK=0000H 435
|
||||
224 0053H 1 ERRFL. . . . . . . BYTE 242 249 251
|
||||
136 0000H ERRMSG . . . . . . PROCEDURE EXTERNAL(53) STACK=0000H 254 291
|
||||
323 369 446 450 483
|
||||
136 0000H 1 ERRNO. . . . . . . BYTE PARAMETER 137
|
||||
223 0004H 1 ERRNO. . . . . . . BYTE PARAMETER AUTOMATIC 224 245 254
|
||||
4 ERROR. . . . . . . LITERALLY
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 10
|
||||
|
||||
|
||||
104 0000H ESEGROUT . . . . . PROCEDURE EXTERNAL(37) STACK=0000H 336
|
||||
197 0017H 44 EXCHANGEACCUM. . . PROCEDURE STACK=000EH 253 255
|
||||
2 FALSE. . . . . . . LITERALLY 235 240 249 256 267 378 490
|
||||
22 0000H 2 FCBADR . . . . . . WORD PARAMETER 23
|
||||
22 0000H FILEABORT. . . . . PROCEDURE EXTERNAL(4) STACK=0000H
|
||||
3 FILEISTRUCTURE . . LITERALLY
|
||||
3 FILEOSTRUCTURE . . LITERALLY
|
||||
9 FILESYNTERR. . . . LITERALLY
|
||||
25 0000H FILL . . . . . . . PROCEDURE EXTERNAL(5) STACK=0000H 206
|
||||
160 0000H FINDCODEMACRO. . . PROCEDURE BYTE EXTERNAL(63) STACK=0000H 317
|
||||
465
|
||||
151 0000H FINDSYMBOL . . . . PROCEDURE BYTE EXTERNAL(60) STACK=0000H 227
|
||||
239
|
||||
9 FIRSTITEM. . . . . LITERALLY 483
|
||||
456 047EH 117 FIRSTITEMTYPE. . . PROCEDURE BYTE STACK=000EH 481
|
||||
2 FOREVER. . . . . . LITERALLY
|
||||
2 FORMFEED . . . . . LITERALLY
|
||||
139 0000H 2 FREEPT . . . . . . WORD EXTERNAL(54)
|
||||
170 0000H 1 FULLSYMBTAB. . . . BYTE EXTERNAL(83) 266
|
||||
154 0000H GETATTRIBUTES. . . PROCEDURE EXTERNAL(61) STACK=0000H 229 241
|
||||
46 0000H HEX1OUT. . . . . . PROCEDURE EXTERNAL(12) STACK=0000H
|
||||
49 0000H HEX2OUT. . . . . . PROCEDURE EXTERNAL(13) STACK=0000H
|
||||
209 0051H 1 I. . . . . . . . . BYTE 212 213 215 218 221
|
||||
4 IDENT. . . . . . . LITERALLY 461 463 475
|
||||
374 034DH 171 IDENTPSEUDO. . . . PROCEDURE STACK=0020H 486 490
|
||||
132 0000H IFLISTROUT . . . . PROCEDURE EXTERNAL(51) STACK=0000H 359
|
||||
9 IFPARERR . . . . . LITERALLY
|
||||
110 0000H IFROUT . . . . . . PROCEDURE EXTERNAL(40) STACK=0000H 330
|
||||
9 ILLEGALMACRO . . . LITERALLY 323
|
||||
9 ILLEGALPSEUDO. . . LITERALLY 369 446
|
||||
9 ILLEXPRELEM. . . . LITERALLY
|
||||
9 ILLIOPER . . . . . LITERALLY
|
||||
114 0000H INCLUDEROUT. . . . PROCEDURE EXTERNAL(42) STACK=0000H 332
|
||||
3 INDEXREGBIT. . . . LITERALLY
|
||||
3 INDEXREGCOUNT. . . LITERALLY
|
||||
2 INIT . . . . . . . LITERALLY
|
||||
9 INSTRERR . . . . . LITERALLY 291
|
||||
85 0000H INSTRUCTION. . . . PROCEDURE EXTERNAL(28) STACK=0000H 296
|
||||
3 IREGBIT. . . . . . LITERALLY
|
||||
3 IREGCOUNT. . . . . LITERALLY
|
||||
4 LAB. . . . . . . . LITERALLY 306
|
||||
299 01CFH 88 LABINSTRUCTION . . PROCEDURE STACK=0018H 487
|
||||
9 LABOUTOFRANGE. . . LITERALLY
|
||||
8 LEFTBRACKET. . . . LITERALLY
|
||||
LENGTH . . . . . . BUILTIN 329 399
|
||||
169 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
|
||||
300 0000H 2 LENGTH . . . . . . WORD MEMBER(SYMB)
|
||||
170 0000H 2 LENGTH . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
375 0000H 2 LENGTH . . . . . . WORD MEMBER(SYMB)
|
||||
31 0000H LETTER . . . . . . PROCEDURE BYTE EXTERNAL(7) STACK=0000H
|
||||
2 LF . . . . . . . . LITERALLY
|
||||
208 0006H 1 LG . . . . . . . . BYTE PARAMETER AUTOMATIC 209 211 213
|
||||
160 0000H 1 LG . . . . . . . . BYTE PARAMETER 161
|
||||
151 0000H 1 LG . . . . . . . . BYTE PARAMETER 152
|
||||
148 0000H 1 LG . . . . . . . . BYTE PARAMETER 149
|
||||
163 0000H 1 LG . . . . . . . . BYTE PARAMETER 164
|
||||
145 0000H 1 LG . . . . . . . . BYTE PARAMETER 146
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 11
|
||||
|
||||
|
||||
166 0000H 1 LG . . . . . . . . BYTE PARAMETER 167
|
||||
87 0000H LISTCIP. . . . . . PROCEDURE EXTERNAL(29) STACK=0000H 295
|
||||
128 0000H LISTROUT . . . . . PROCEDURE EXTERNAL(49) STACK=0000H 357
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4 5 6 7 8
|
||||
9
|
||||
198 0000H 1 LOCACCLEN. . . . . BYTE 199 202 203
|
||||
198 0001H 80 LOCACCUM . . . . . BYTE ARRAY(80) 200 203
|
||||
209 0052H 1 LVALUE . . . . . . BYTE 214 215
|
||||
148 0000H 2 MACDEFPT . . . . . WORD PARAMETER 149
|
||||
9 MISSIFERR. . . . . LITERALLY
|
||||
9 MISSINGPSEUDO. . . LITERALLY 450
|
||||
9 MISSINSTR. . . . . LITERALLY
|
||||
9 MISSSEGMINFO . . . LITERALLY
|
||||
9 MISSTYPEINFO . . . LITERALLY
|
||||
183 0000H MODRMCMROUT. . . . PROCEDURE EXTERNAL(94) STACK=0000H 363
|
||||
25 0000H 1 N. . . . . . . . . BYTE PARAMETER 26
|
||||
16 0000H 1 N. . . . . . . . . BYTE PARAMETER 17
|
||||
13 0000H 2 N. . . . . . . . . WORD PARAMETER 14
|
||||
52 0000H 2 N. . . . . . . . . WORD PARAMETER 53
|
||||
49 0000H 2 N. . . . . . . . . WORD PARAMETER 50
|
||||
46 0000H 1 N. . . . . . . . . BYTE PARAMETER 47
|
||||
43 0000H 1 N. . . . . . . . . BYTE PARAMETER 44
|
||||
4 NEGLECTED. . . . . LITERALLY 230 243
|
||||
9 NEGLECTERR . . . . LITERALLY 245
|
||||
9 NESTEDIFERR. . . . LITERALLY
|
||||
9 NESTEDINCLUDEERR . LITERALLY
|
||||
163 0000H NEWCMBODY. . . . . PROCEDURE BYTE EXTERNAL(64) STACK=0000H
|
||||
166 0000H NEWCMNAME. . . . . PROCEDURE BYTE EXTERNAL(65) STACK=0000H
|
||||
148 0000H NEWMACRO . . . . . PROCEDURE BYTE EXTERNAL(59) STACK=0000H
|
||||
261 0136H 44 NEWSYM . . . . . . PROCEDURE BYTE STACK=000AH 304 381 433
|
||||
145 0000H NEWSYMBOL. . . . . PROCEDURE BYTE EXTERNAL(58) STACK=0000H 264
|
||||
169 0000H 1 NEXTCH . . . . . . BYTE EXTERNAL(73) 461
|
||||
5 NIL. . . . . . . . LITERALLY
|
||||
375 0055H 1 NOERR. . . . . . . BYTE 378 384 389
|
||||
327 0227H 294 NOIDENTPSEUDO. . . PROCEDURE STACK=000CH 488
|
||||
134 0000H NOIFLISTROUT . . . PROCEDURE EXTERNAL(52) STACK=0000H 360
|
||||
130 0000H NOLISTROUT . . . . PROCEDURE EXTERNAL(50) STACK=0000H 358
|
||||
169 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(76)
|
||||
3 NOOVERCOUNT. . . . LITERALLY
|
||||
3 NOOVERRIDEBIT. . . LITERALLY
|
||||
374 0004H 1 NORMAL . . . . . . BYTE PARAMETER AUTOMATIC 375 394
|
||||
181 0000H NOSEGFIXCMROUT . . PROCEDURE EXTERNAL(93) STACK=0000H 362
|
||||
223 009AH 156 NOTDOUBNEGL. . . . PROCEDURE BYTE STACK=0014H 302 379 431
|
||||
4 NUMBER . . . . . . LITERALLY
|
||||
8 OAND . . . . . . . LITERALLY
|
||||
8 OEQ. . . . . . . . LITERALLY
|
||||
375 0006H 2 OFFSET . . . . . . WORD MEMBER(SYMB)
|
||||
170 0006H 2 OFFSET . . . . . . WORD MEMBER(CURRENTSYMBOL) 280
|
||||
169 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
|
||||
300 0006H 2 OFFSET . . . . . . WORD MEMBER(SYMB)
|
||||
8 OGE. . . . . . . . LITERALLY
|
||||
8 OGT. . . . . . . . LITERALLY
|
||||
8 OLAST. . . . . . . LITERALLY
|
||||
8 OLE. . . . . . . . LITERALLY
|
||||
8 OLENGTH. . . . . . LITERALLY
|
||||
8 OLT. . . . . . . . LITERALLY
|
||||
8 OMOD . . . . . . . LITERALLY
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 12
|
||||
|
||||
|
||||
8 ONE. . . . . . . . LITERALLY
|
||||
8 ONOT . . . . . . . LITERALLY
|
||||
8 OOFFSET. . . . . . LITERALLY
|
||||
8 OOR. . . . . . . . LITERALLY
|
||||
169 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(77)
|
||||
3 OPERANDSTRUC . . . LITERALLY 169
|
||||
4 OPERATOR . . . . . LITERALLY 463
|
||||
9 OPMISMATCH . . . . LITERALLY
|
||||
8 OPTR . . . . . . . LITERALLY
|
||||
106 0000H ORGROUT. . . . . . PROCEDURE EXTERNAL(38) STACK=0000H 337
|
||||
8 OSEG . . . . . . . LITERALLY
|
||||
8 OSHL . . . . . . . LITERALLY
|
||||
8 OSHORT . . . . . . LITERALLY
|
||||
8 OSHR . . . . . . . LITERALLY
|
||||
8 OTYPE. . . . . . . LITERALLY
|
||||
19 0000H OUTTEXT. . . . . . PROCEDURE EXTERNAL(3) STACK=0000H
|
||||
8 OXOR . . . . . . . LITERALLY
|
||||
118 0000H PAGESIZEROUT . . . PROCEDURE EXTERNAL(44) STACK=0000H 351
|
||||
120 0000H PAGEWIDTHROUT. . . PROCEDURE EXTERNAL(45) STACK=0000H 352
|
||||
170 0000H 1 PASS . . . . . . . BYTE EXTERNAL(78) 225 262 283
|
||||
7 PCODEMACRO . . . . LITERALLY 328
|
||||
7 PCSEG. . . . . . . LITERALLY 328
|
||||
7 PDB. . . . . . . . LITERALLY 328 392
|
||||
7 PDBIT. . . . . . . LITERALLY 328
|
||||
7 PDD. . . . . . . . LITERALLY 328 392
|
||||
7 PDSEG. . . . . . . LITERALLY 328
|
||||
7 PDW. . . . . . . . LITERALLY 328 392
|
||||
7 PEJECT . . . . . . LITERALLY 328
|
||||
7 PEND . . . . . . . LITERALLY 328
|
||||
7 PENDIF . . . . . . LITERALLY 328
|
||||
7 PENDM. . . . . . . LITERALLY 328
|
||||
7 PEQU . . . . . . . LITERALLY 392 470
|
||||
7 PESEG. . . . . . . LITERALLY 328
|
||||
7 PIF. . . . . . . . LITERALLY 328
|
||||
7 PIFLIST. . . . . . LITERALLY 328
|
||||
7 PINCLUDE . . . . . LITERALLY 328
|
||||
7 PLIST. . . . . . . LITERALLY 328
|
||||
7 PMODRM . . . . . . LITERALLY 328
|
||||
7 PNOIFLIST. . . . . LITERALLY 328
|
||||
7 PNOLIST. . . . . . LITERALLY 328
|
||||
7 PNOSEGFIX. . . . . LITERALLY 328
|
||||
7 PORG . . . . . . . LITERALLY 328
|
||||
7 PPAGESIZE. . . . . LITERALLY 328
|
||||
7 PPAGEWIDTH . . . . LITERALLY 328
|
||||
7 PRB. . . . . . . . LITERALLY 328 392
|
||||
170 0000H 240 PREFIX . . . . . . BYTE ARRAY(240) EXTERNAL(79)
|
||||
170 0000H 1 PREFIXPTR. . . . . BYTE EXTERNAL(80)
|
||||
7 PRELB. . . . . . . LITERALLY 328
|
||||
7 PRELW. . . . . . . LITERALLY 328
|
||||
72 0000H PRINTCRLF. . . . . PROCEDURE EXTERNAL(22) STACK=0000H
|
||||
78 0000H PRINTINIT. . . . . PROCEDURE EXTERNAL(25) STACK=0000H
|
||||
74 0000H PRINTNEWPAGE . . . PROCEDURE EXTERNAL(23) STACK=0000H
|
||||
69 0000H PRINTSINGLEBYTE. . PROCEDURE EXTERNAL(21) STACK=0000H
|
||||
76 0000H PRINTSOURCELINE. . PROCEDURE EXTERNAL(24) STACK=0000H
|
||||
80 0000H PRINTTERMINATE . . PROCEDURE EXTERNAL(26) STACK=0000H
|
||||
2 PROC . . . . . . . LITERALLY 10 13 34 37 46 49 52
|
||||
55 57 59 61 64 67 69 72 74 76
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 13
|
||||
|
||||
|
||||
78 80 83 85 89 91 93 95 98 100
|
||||
102 104 106 108 110 112 114 116 118 120
|
||||
122 124 126 128 130 132 134 136 141 143
|
||||
145 148 151 154 157 160 163 166 171 173
|
||||
175 177 179 181 183 185 187 189 191 193
|
||||
197 205 208 223 261 272 282 288 299 327
|
||||
374 376 388 455 456
|
||||
7 PRS. . . . . . . . LITERALLY 328 392
|
||||
7 PRW. . . . . . . . LITERALLY 328 392
|
||||
7 PSEGFIX. . . . . . LITERALLY 328
|
||||
4 PSEUDO . . . . . . LITERALLY 210 459 470
|
||||
9 PSEUDOOPERR. . . . LITERALLY
|
||||
392 0020H 7 PSEUDOTABLE. . . . BYTE ARRAY(7) DATA 399
|
||||
208 0056H 68 PSEUDOTYPE . . . . PROCEDURE BYTE STACK=0008H 329 399
|
||||
7 PSIMFORM . . . . . LITERALLY 328
|
||||
7 PSSEG. . . . . . . LITERALLY 328
|
||||
209 0000H 1 PSTABLE. . . . . . BYTE BASED(PTR) ARRAY(1) 215
|
||||
25 0000H 2 PT . . . . . . . . WORD PARAMETER 26
|
||||
328 0000H 32 PTABLE . . . . . . BYTE ARRAY(32) DATA 329
|
||||
7 PTITLE . . . . . . LITERALLY 328
|
||||
208 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 209 215
|
||||
163 0000H 2 PTR. . . . . . . . WORD PARAMETER 164
|
||||
6 RAH. . . . . . . . LITERALLY
|
||||
6 RAL. . . . . . . . LITERALLY
|
||||
6 RAX. . . . . . . . LITERALLY
|
||||
6 RBH. . . . . . . . LITERALLY
|
||||
6 RBL. . . . . . . . LITERALLY
|
||||
6 RBP. . . . . . . . LITERALLY
|
||||
6 RBX. . . . . . . . LITERALLY
|
||||
6 RCH. . . . . . . . LITERALLY
|
||||
6 RCL. . . . . . . . LITERALLY
|
||||
6 RCS. . . . . . . . LITERALLY 289
|
||||
6 RCX. . . . . . . . LITERALLY
|
||||
6 RDH. . . . . . . . LITERALLY
|
||||
6 RDI. . . . . . . . LITERALLY
|
||||
6 RDL. . . . . . . . LITERALLY
|
||||
6 RDS. . . . . . . . LITERALLY
|
||||
6 RDX. . . . . . . . LITERALLY
|
||||
2 REENT. . . . . . . LITERALLY
|
||||
4 REG. . . . . . . . LITERALLY
|
||||
185 0000H RELBCMROUT . . . . PROCEDURE EXTERNAL(95) STACK=0000H 364
|
||||
187 0000H RELWCMROUT . . . . PROCEDURE EXTERNAL(96) STACK=0000H 365
|
||||
6 RES. . . . . . . . LITERALLY
|
||||
160 0000H 2 RESULT . . . . . . WORD PARAMETER 161
|
||||
151 0000H 2 RESULT . . . . . . WORD PARAMETER 152
|
||||
145 0000H 2 RESULT . . . . . . WORD PARAMETER 146
|
||||
166 0000H 2 RETURNPTR. . . . . WORD PARAMETER 167
|
||||
8 RIGHTBRACKET . . . LITERALLY
|
||||
6 RSI. . . . . . . . LITERALLY
|
||||
6 RSP. . . . . . . . LITERALLY
|
||||
95 0000H RSROUT . . . . . . PROCEDURE EXTERNAL(33) STACK=0000H 347 348
|
||||
349 417 422 427
|
||||
6 RSS. . . . . . . . LITERALLY
|
||||
16 0000H 2 S. . . . . . . . . WORD PARAMETER 17
|
||||
43 0000H 2 S. . . . . . . . . WORD PARAMETER 44
|
||||
193 0000H 23 SAVEACCUM. . . . . PROCEDURE STACK=000AH 201 301 396 467
|
||||
57 0000H SCAN . . . . . . . PROCEDURE EXTERNAL(16) STACK=0000H 217 310
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 14
|
||||
|
||||
|
||||
311 319 397 468
|
||||
55 0000H SCANINIT . . . . . PROCEDURE EXTERNAL(15) STACK=0000H
|
||||
179 0000H SEGFIXCMROUT . . . PROCEDURE EXTERNAL(92) STACK=0000H 361
|
||||
3 SEGMBIT. . . . . . LITERALLY 277
|
||||
3 SEGMCOUNT. . . . . LITERALLY
|
||||
375 0004H 2 SEGMENT. . . . . . WORD MEMBER(SYMB)
|
||||
300 0004H 2 SEGMENT. . . . . . WORD MEMBER(SYMB)
|
||||
170 0004H 2 SEGMENT. . . . . . WORD MEMBER(CURRENTSYMBOL) 279
|
||||
169 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
|
||||
273 0054H 1 SEGTYP . . . . . . BYTE 274 278
|
||||
3 SEGTYPEBIT . . . . LITERALLY 274
|
||||
3 SEGTYPECOUNT . . . LITERALLY 274
|
||||
272 0162H 57 SETUPATTR. . . . . PROCEDURE STACK=0006H 306 383
|
||||
272 0004H 1 SFLA . . . . . . . BYTE PARAMETER AUTOMATIC 273 277 278
|
||||
375 0003H 1 SFLAG. . . . . . . BYTE MEMBER(SYMB)
|
||||
300 0003H 1 SFLAG. . . . . . . BYTE MEMBER(SYMB)
|
||||
170 0003H 1 SFLAG. . . . . . . BYTE MEMBER(CURRENTSYMBOL) 278
|
||||
169 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
SHL. . . . . . . . BUILTIN 274
|
||||
126 0000H SIMFORMROUT. . . . PROCEDURE EXTERNAL(48) STACK=0000H 355
|
||||
59 0000H SKIPRESTOFLINE . . PROCEDURE EXTERNAL(17) STACK=0000H 292 314
|
||||
370 438 442 447 451 484
|
||||
64 0000H SKIPUNTIL. . . . . PROCEDURE BYTE EXTERNAL(19) STACK=0000H
|
||||
157 0000H 2 SOURCE . . . . . . WORD PARAMETER 158
|
||||
2 SPACE. . . . . . . LITERALLY
|
||||
4 SPEC . . . . . . . LITERALLY
|
||||
61 0000H SPECIALTOKEN . . . PROCEDURE BYTE EXTERNAL(18) STACK=0000H
|
||||
102 0000H SSEGROUT . . . . . PROCEDURE EXTERNAL(36) STACK=0000H 335
|
||||
160 0000H 2 STRADR . . . . . . WORD PARAMETER 161
|
||||
151 0000H 2 STRADR . . . . . . WORD PARAMETER 152
|
||||
148 0000H 2 STRADR . . . . . . WORD PARAMETER 149
|
||||
145 0000H 2 STRADR . . . . . . WORD PARAMETER 146
|
||||
4 STRING . . . . . . LITERALLY
|
||||
2 STRUC. . . . . . . LITERALLY 169 170 300 375
|
||||
272 0006H 1 STYP . . . . . . . BYTE PARAMETER AUTOMATIC 273 275
|
||||
375 0002H 1 STYPE. . . . . . . BYTE MEMBER(SYMB)
|
||||
300 0002H 1 STYPE. . . . . . . BYTE MEMBER(SYMB)
|
||||
170 0002H 1 STYPE. . . . . . . BYTE MEMBER(CURRENTSYMBOL) 230 232 243
|
||||
248 275
|
||||
169 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
375 0000H 9 SYMB . . . . . . . STRUCTURE BASED(CODEMACROPTR)
|
||||
300 0000H 9 SYMB . . . . . . . STRUCTURE BASED(CODEMACROPTR)
|
||||
157 0000H 2 SYMBADR. . . . . . WORD PARAMETER 158
|
||||
154 0000H 2 SYMBADR. . . . . . WORD PARAMETER 155
|
||||
143 0000H SYMBINIT . . . . . PROCEDURE EXTERNAL(57) STACK=0000H
|
||||
4 SYMBOL . . . . . . LITERALLY
|
||||
3 SYMBOLHEAD . . . . LITERALLY
|
||||
3 SYMBOLSTRUC. . . . LITERALLY 169 170 300 375
|
||||
170 0000H 2 SYMBTABADR . . . . WORD EXTERNAL(85) 227 229 233 239 241
|
||||
264 285
|
||||
141 0000H SYMBTERMINATE. . . PROCEDURE EXTERNAL(56) STACK=0000H
|
||||
19 0000H 2 T. . . . . . . . . WORD PARAMETER 20
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
22 0000H 2 TEXTADR. . . . . . WORD PARAMETER 23
|
||||
2 THENDO . . . . . . LITERALLY 215 225 227 230 243 251 262
|
||||
264 283 289 302 304 312 317 379 381 394
|
||||
431 433 463 465 479
|
||||
PL/M-86 COMPILER DECODE LINE MODULE 10/5/81 PAGE 15
|
||||
|
||||
|
||||
122 0000H TITLEROUT. . . . . PROCEDURE EXTERNAL(46) STACK=0000H 353
|
||||
64 0000H 1 TOK. . . . . . . . BYTE PARAMETER 65
|
||||
61 0000H 1 TOK. . . . . . . . BYTE PARAMETER 62
|
||||
169 0000H 4 TOKEN. . . . . . . STRUCTURE EXTERNAL(72) 210 214 458 469
|
||||
470
|
||||
2 TRUE . . . . . . . LITERALLY 242 259 266 270 384 486
|
||||
457 0056H 1 TYP. . . . . . . . BYTE 458 459 461 463 469 470 475
|
||||
376 0004H 1 TYP. . . . . . . . BYTE PARAMETER AUTOMATIC 377 383
|
||||
95 0000H 1 TYP. . . . . . . . BYTE PARAMETER 96
|
||||
169 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN) 210 458 470
|
||||
3 TYPEBIT. . . . . . LITERALLY
|
||||
10 0000H TYPECALC . . . . . PROCEDURE BYTE EXTERNAL(0) STACK=0000H
|
||||
3 TYPECOUNT. . . . . LITERALLY
|
||||
4 UDEFSYMB . . . . . LITERALLY
|
||||
9 UDEFSYMBOL . . . . LITERALLY
|
||||
40 0000H UPPER. . . . . . . PROCEDURE BYTE EXTERNAL(10) STACK=0000H
|
||||
80 0000H 1 USEFACT. . . . . . BYTE PARAMETER 81
|
||||
10 0000H 2 VAL. . . . . . . . WORD PARAMETER 11
|
||||
169 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN) 214 469
|
||||
4 VARIABLE . . . . . LITERALLY 383
|
||||
5 WRD. . . . . . . . LITERALLY 306 349 406 426 427
|
||||
13 0000H WRDTEST. . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 04F3H 1267D
|
||||
CONSTANT AREA SIZE = 0027H 39D
|
||||
VARIABLE AREA SIZE = 0057H 87D
|
||||
MAXIMUM STACK SIZE = 0024H 36D
|
||||
1005 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,354 @@
|
||||
$title ('DECODE LINE MODULE')
|
||||
decodel:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 3/26/81 R. Silberstein
|
||||
modified 3/30/81 R. Silberstein
|
||||
modified 4/9/81 R. Silberstein
|
||||
modified 4/10/81 R. Silberstein
|
||||
modified 7/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
This is the module to decode each logical sourceline.
|
||||
The module takes care of all symbol definitions, and
|
||||
activates the PSEUDO-module and the INSTRUCTION-module
|
||||
to perform the assembly of the current non-empty source-
|
||||
line.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:struc.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:ermod.lit)
|
||||
$include (:f1:subr1.ext)
|
||||
$include (:f1:subr2.ext)
|
||||
$include (:f1:scan.ext)
|
||||
$include (:f1:print.ext)
|
||||
$include (:f1:instr.ext)
|
||||
$include (:f1:pseud1.ext)
|
||||
$include (:f1:pseud2.ext)
|
||||
$include (:f1:ermod.ext)
|
||||
$include (:f1:symb.ext)
|
||||
$include (:f1:exglob.ext)
|
||||
$include (:f1:dline.x86)
|
||||
$include (:f1:cm.ext)
|
||||
|
||||
|
||||
|
||||
|
||||
saveaccum: proc;
|
||||
acclensave=acclen;
|
||||
call copy(acclen,.accum(0),.accumsave(0));
|
||||
end saveaccum;
|
||||
|
||||
|
||||
exchangeaccum: proc;
|
||||
dcl locacclen byte,locaccum(80) byte;
|
||||
locacclen=acclensave;
|
||||
call copy(acclensave,.accumsave(0),.locaccum(0));
|
||||
call saveaccum;
|
||||
acclen=locacclen;
|
||||
call copy(locacclen,.locaccum(0),.accum(0));
|
||||
end exchangeaccum;
|
||||
|
||||
clearsymbol: proc;
|
||||
CALL FILL (0, .CURRENTSYMBOL.BASEINDEX-.CURRENTSYMBOL+1, .CURRENTSYMBOL);
|
||||
end clearsymbol;
|
||||
|
||||
|
||||
|
||||
pseudotype: proc(lg,ptr) byte;
|
||||
dcl (lg,i,lvalue) byte,ptr address,pstable based ptr (1) byte;
|
||||
if token.type <> pseudo then return lg+1;
|
||||
i=0ffh;
|
||||
do while (i:=i+1) < lg;
|
||||
lvalue=token.value;
|
||||
if lvalue=pstable(i) then$do
|
||||
call scan; /* skip found pseudo */
|
||||
return i;
|
||||
end$if;
|
||||
end$while;
|
||||
return i;
|
||||
end pseudotype;
|
||||
|
||||
|
||||
/* test if symbol if double defined or "neglected" symbol */
|
||||
|
||||
not$doub$negl: proc(errno) byte;
|
||||
dcl (errno,errfl) byte;
|
||||
if pass = 0 then$do
|
||||
if findsymbol(acclensave,.accumsave,.symbtabadr) then$do
|
||||
call getattributes(symbtabadr,.currentsymbol);
|
||||
if currentsymbol.stype <> neglected then$do
|
||||
currentsymbol.stype=doubledefined;
|
||||
call enterattributes(symbtabadr,.currentsymbol);
|
||||
end$if;
|
||||
return false;
|
||||
end$if;
|
||||
else$do
|
||||
/* pass 1 and pass 2 */
|
||||
|
||||
if not findsymbol(acclensave,.accumsave,.symbtabadr) then
|
||||
return false;
|
||||
call getattributes(symbtabadr,.currentsymbol);
|
||||
errfl=true;
|
||||
if currentsymbol.stype=neglected then$do
|
||||
errno=neglecterr;
|
||||
else$do
|
||||
if currentsymbol.stype<>doubledefined then errfl=false;
|
||||
end$if;
|
||||
if errfl then$do
|
||||
call exchangeaccum;
|
||||
call errmsg(errno);
|
||||
call exchangeaccum;
|
||||
return false;
|
||||
end$if;
|
||||
end$if;
|
||||
return true;
|
||||
end not$doub$negl;
|
||||
|
||||
newsym: proc byte; /* enter new symbol into table */
|
||||
if pass=0 then$do
|
||||
if not newsymbol(acclensave,.accumsave,.symbtabadr) then$do
|
||||
fullsymbtab=true;
|
||||
return false;
|
||||
end$if;
|
||||
end$if;
|
||||
return true;
|
||||
end newsym;
|
||||
|
||||
/* set up symbol attributes for label,DB,DW,DD,RS */
|
||||
|
||||
setupattr: proc (styp,sfla);
|
||||
dcl (styp,sfla,segtyp) byte;
|
||||
segtyp=shl(csegtype,segtypecount) and segtypebit;
|
||||
currentsymbol.stype=styp;
|
||||
if csegspec then sfla=sfla or segmbit;
|
||||
currentsymbol.sflag=sfla or segtyp;
|
||||
currentsymbol.segment=csegvalue;
|
||||
currentsymbol.offset=cip;
|
||||
end setupattr;
|
||||
|
||||
entatr: proc; /* enter attributes of current symbol into table */
|
||||
if pass <> 2 then$do
|
||||
call enter$attributes(symbtabadr,.currentsymbol);
|
||||
end$if;
|
||||
end entatr;
|
||||
|
||||
/* decode instruction */
|
||||
decodeinstr: proc;
|
||||
if csegtype <> rcs then$do
|
||||
call errmsg(instrerr);
|
||||
call skip$rest$of$line;
|
||||
else$do
|
||||
CALL LISTCIP;
|
||||
call instruction; /* decode instruction */
|
||||
end$if;
|
||||
end decodeinstr;
|
||||
|
||||
|
||||
labinstruction: proc; /* scan labelled instruction */
|
||||
dcl symb based codemacroptr symbolstruc;
|
||||
|
||||
call saveaccum;
|
||||
/* enter label into symbol table */
|
||||
if not$doub$negl(doubledeflab) then$do
|
||||
if newsym then$do
|
||||
call setupattr(lab,wrd);
|
||||
call entatr;
|
||||
end$if;
|
||||
end$if;
|
||||
call scan; /* skip ":" */
|
||||
call scan; /* allow empty instruction */
|
||||
if emptyline then$do
|
||||
call skip$rest$of$line;
|
||||
else$do
|
||||
if findcodemacro(acclen,.accum(0),.codemacroptr) then$do
|
||||
call scan; /* skip codemacro */
|
||||
call decode$instr;
|
||||
else$do
|
||||
call errmsg(illegalmacro);
|
||||
end$if;
|
||||
end$if;
|
||||
end labinstruction;
|
||||
|
||||
|
||||
|
||||
no$ident$pseudo: proc; /* branch to correct pseudo routine */
|
||||
dcl ptable(*) byte data( /* define legal unnamed pseudos */
|
||||
pif,pendif,pinclude,pcseg,pdseg,psseg,peseg,porg,pdb,
|
||||
pdw,pdd,prb,prs,prw,pend,ppagesize,ppagewidth,
|
||||
ptitle,peject,psimform,pcodemacro,plist,pnolist,PIFLIST,PNOIFLIST,
|
||||
psegfix,pnosegfix,pmodrm,prelb,prelw,pdbit,pendm);
|
||||
|
||||
do case pseudotype(length(ptable),.ptable); /* branch */
|
||||
call IFrout;
|
||||
call ENDIFrout;
|
||||
call INCLUDErout;
|
||||
call CSEGrout;
|
||||
call DSEGrout;
|
||||
call SSEGrout;
|
||||
call ESEGrout;
|
||||
call ORGrout;
|
||||
if codemacro$flag then call db$cm$rout;
|
||||
else call DBrout;
|
||||
if codemacro$flag then call dw$cm$rout;
|
||||
else call DWrout;
|
||||
if codemacro$flag then call dd$cm$rout;
|
||||
else call DDrout;
|
||||
call RSrout(byt); /* RB */
|
||||
call RSrout(byt); /* RS */
|
||||
call RSrout(wrd); /* RW */
|
||||
call ENDrout;
|
||||
call PAGESIZErout;
|
||||
call PAGEWIDTHrout;
|
||||
call TITLErout;
|
||||
call EJECTrout;
|
||||
call SIMFORMrout;
|
||||
call CODEMACROrout;
|
||||
call LISTrout;
|
||||
call NOLISTrout;
|
||||
CALL IFLISTROUT;
|
||||
CALL NOIFLISTROUT;
|
||||
call segfix$cm$rout; /* cm */
|
||||
call nosegfix$cm$rout; /* cm */
|
||||
call modrm$cm$rout; /* cm */
|
||||
call relb$cm$rout; /* cm */
|
||||
call relw$cm$rout; /* cm */
|
||||
call dbit$cm$rout; /* cm */
|
||||
call end$cm$rout; /* cm */
|
||||
do; /* error, illegal pseudo */
|
||||
call errmsg(illegalpseudo);
|
||||
call skip$rest$of$line;
|
||||
end;
|
||||
end$case;
|
||||
end no$ident$pseudo;
|
||||
|
||||
|
||||
identpseudo: proc(normal); /* scan a named pseudo instruction */
|
||||
dcl (noerr,normal) byte,symb based codemacroptr symbolstruc;
|
||||
|
||||
entervar: proc(typ);
|
||||
dcl typ byte;
|
||||
noerr=false;
|
||||
if not$doub$negl(doubledefvar) then$do
|
||||
if newsym then$do
|
||||
call setupattr(variable,typ);
|
||||
noerr=true;
|
||||
end$if;
|
||||
end$if;
|
||||
end entervar;
|
||||
|
||||
enter: proc;
|
||||
if noerr then call entatr;
|
||||
end enter;
|
||||
|
||||
/* legal pseudos: DB,DW,DD,RB,RS,RW,EQU */
|
||||
dcl pseudotable(7) byte data(pdb,pdw,pdd,prb,prs,prw,pequ);
|
||||
|
||||
call clearsymbol; /* clear attributes of current symbol */
|
||||
if normal then$do /* unormal if EQU with instruction parameter */
|
||||
call saveaccum;
|
||||
call scan; /* scan actual pseudo */
|
||||
end$if;
|
||||
do case pseudotype(length(pseudotable),.pseudotable);
|
||||
do; /* DB */
|
||||
call entervar(byt);
|
||||
call DBrout;
|
||||
call enter;
|
||||
end;
|
||||
|
||||
do; /* DW */
|
||||
call entervar(wrd);
|
||||
call DWrout;
|
||||
call enter;
|
||||
end;
|
||||
|
||||
do; /* DD */
|
||||
call entervar(dwrd);
|
||||
call DDrout;
|
||||
call enter;
|
||||
end;
|
||||
|
||||
do; /* RB */
|
||||
call entervar(byt);
|
||||
call RSrout(byt);
|
||||
call enter;
|
||||
end;
|
||||
|
||||
do; /* RS */
|
||||
call entervar(byt);
|
||||
call RSrout(byt);
|
||||
call enter;
|
||||
end;
|
||||
|
||||
do; /* RW */
|
||||
call entervar(wrd);
|
||||
call RSrout(wrd);
|
||||
call enter;
|
||||
end;
|
||||
|
||||
do; /* EQU */
|
||||
if not$doub$negl(doubledefsymb) then$do
|
||||
if newsym then$do
|
||||
call EQUrout;
|
||||
else$do
|
||||
call skip$rest$of$line;
|
||||
end$if;
|
||||
else$do
|
||||
call skip$rest$of$line;
|
||||
end$if;
|
||||
end;
|
||||
|
||||
do; /* illegal pseudo instruction */
|
||||
call errmsg(illegalpseudo);
|
||||
call skip$rest$of$line;
|
||||
end;
|
||||
|
||||
do; /* missing pseudo instruction */
|
||||
call errmsg(missingpseudo);
|
||||
call skip$rest$of$line;
|
||||
end;
|
||||
end$case;
|
||||
end identpseudo;
|
||||
|
||||
decodeline: proc public;
|
||||
first$item$type: proc byte;
|
||||
dcl typ byte;
|
||||
typ=token.type;
|
||||
if typ=pseudo then return 3;
|
||||
if typ=ident and nextch=':' then return 2;
|
||||
if (typ=ident) or (typ=operator) then$do
|
||||
if findcodemacro(acclen,.accum(0),.codemacroptr) then$do
|
||||
call saveaccum;
|
||||
call scan; /* skip found codemacro */
|
||||
typ=token.value;
|
||||
if (token.type=pseudo) and (typ=pequ) then return 5;
|
||||
return 4;
|
||||
end$if;
|
||||
end$if;
|
||||
if typ <> ident then return 0; /* error */
|
||||
return 1;
|
||||
end first$item$type;
|
||||
|
||||
if accum(0) <> cr then$do /* skip blank lines */
|
||||
do case first$item$type;
|
||||
do; /* error,skip rest of line */
|
||||
call errmsg(first$item); /* error handler */
|
||||
call skip$rest$of$line;
|
||||
end;
|
||||
call ident$pseudo(true); /* named pseudo instruction */
|
||||
call lab$instruction; /* label (followed by instruction) */
|
||||
call no$ident$pseudo; /* pseudo instruction */
|
||||
call decodeinstr; /* code instruction */
|
||||
call identpseudo(false); /* EQU with instruction parameter */
|
||||
end$case;
|
||||
end$if;
|
||||
end decodeline;
|
||||
|
||||
end$module decodel;
|
||||
@@ -0,0 +1,23 @@
|
||||
$nolist
|
||||
|
||||
|
||||
dcl
|
||||
pass byte external, /* current pass no, 1,2,3 */
|
||||
|
||||
prefix (240) byte external, /* prefix to source line */
|
||||
prefixptr byte external, /* pointer to prefix buffer */
|
||||
|
||||
accumsave(80) byte external,
|
||||
acclensave byte external,
|
||||
|
||||
/* Mischellaneous variables: */
|
||||
|
||||
fullsymbtab byte external, /* full if symboltable is full */
|
||||
currentsymbol symbolstruc /* current scanned symbol */
|
||||
external,
|
||||
symbtabadr address external, /* pointer at symbol in table */
|
||||
codemacroptr address external, /* pointer to found codemacro */
|
||||
codemacro$flag byte external; /* true if building a codemacro */
|
||||
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,131 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 7/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/* Symbol types : */
|
||||
|
||||
dcl
|
||||
reg lit '0', /* register */
|
||||
pseudo lit '1', /* pseudo instruction */
|
||||
code lit '2', /* instruction */
|
||||
string lit '3', /* character string */
|
||||
spec lit '4', /* special character */
|
||||
number lit '5', /* 8 or 16 bit number */
|
||||
variable lit '6',
|
||||
lab lit '7', /* label */
|
||||
operator lit '8', /* operator in expressions */
|
||||
doubledefined lit '0f9h', /* doubled defined symbol */
|
||||
neglected lit '0fah', /* neglected symb., never to be def. */
|
||||
ident lit '0fbh', /* identificator, scanner output */
|
||||
error lit '0fch', /* error, scanner output */
|
||||
udefsymb lit '0fdh', /* undefined symbol */
|
||||
symbol lit '0feh', /* variable,label or undefined symb. */
|
||||
deletedsymb lit '0ffh'; /* deleted symbol (not used */
|
||||
|
||||
|
||||
/* Symbol description values */
|
||||
|
||||
dcl
|
||||
nil lit '0', /* no specification */
|
||||
byt lit '1', /* symbol is 8-bit type */
|
||||
wrd lit '2', /* symbol is 16 bit type */
|
||||
dwrd lit '4'; /* symbol is 2*16 bit type
|
||||
or a segment register */
|
||||
|
||||
/* Register values : */
|
||||
|
||||
dcl
|
||||
rax lit '0', /* 16 bit registers */
|
||||
rcx lit '1',
|
||||
rdx lit '2',
|
||||
rbx lit '3',
|
||||
rsp lit '4',
|
||||
rbp lit '5',
|
||||
rsi lit '6',
|
||||
rdi lit '7',
|
||||
|
||||
ral lit '0', /* 8 bit registers */
|
||||
rcl lit '1',
|
||||
rdl lit '2',
|
||||
rbl lit '3',
|
||||
rah lit '4',
|
||||
rch lit '5',
|
||||
rdh lit '6',
|
||||
rbh lit '7',
|
||||
|
||||
res lit '0', /* segment registers */
|
||||
rcs lit '1',
|
||||
rss lit '2',
|
||||
rds lit '3';
|
||||
|
||||
|
||||
|
||||
/* Pseudo instructions: */
|
||||
|
||||
dcl
|
||||
pdb lit '0',
|
||||
pdd lit '1',
|
||||
pdw lit '2',
|
||||
pif lit '3',
|
||||
prs lit '4',
|
||||
pend lit '5',
|
||||
pequ lit '6',
|
||||
porg lit '7',
|
||||
pcseg lit '8',
|
||||
pdbit lit '9',
|
||||
pdseg lit '10',
|
||||
pendm lit '11',
|
||||
peseg lit '12',
|
||||
prelb lit '13',
|
||||
prelw lit '14',
|
||||
psseg lit '15',
|
||||
pendif lit '16',
|
||||
pmodrm lit '17',
|
||||
ptitle lit '18',
|
||||
psegfix lit '19',
|
||||
pinclude lit '20',
|
||||
peject lit '21',
|
||||
psimform lit '22',
|
||||
pnosegfix lit '23',
|
||||
ppagesize lit '24',
|
||||
pcodemacro lit '25',
|
||||
ppagewidth lit '26',
|
||||
plist lit '27',
|
||||
pnolist lit '28',
|
||||
prb lit '29', /* added in vers. 2.0 */
|
||||
prw lit '30',
|
||||
PIFLIST LIT '31',
|
||||
PNOIFLIST LIT '32';
|
||||
|
||||
|
||||
/* Symbolic operators */
|
||||
|
||||
dcl
|
||||
oshort lit '0', /* 8-bit value of expression */
|
||||
oor lit '1', /* logical OR */
|
||||
oxor lit '2', /* logical XOR */
|
||||
oand lit '3', /* logical AND */
|
||||
onot lit '4', /* logical NOT */
|
||||
oeq lit '5', /* equal */
|
||||
ogt lit '6', /* greater */
|
||||
oge lit '7', /* greater or equal */
|
||||
olt lit '8', /* less */
|
||||
ole lit '9', /* less or equal */
|
||||
one lit '10', /* not equal */
|
||||
omod lit '11', /* arithmetic MOD */
|
||||
oshl lit '12', /* shift left */
|
||||
oshr lit '13', /* shift rigth */
|
||||
optr lit '14', /* take type of 1. op, value of 2. */
|
||||
ooffset lit '15', /* offset value of operand */
|
||||
oseg lit '16', /* segment value of operand */
|
||||
otype lit '17', /* type value of operand */
|
||||
olength lit '18', /* length attribute of variables */
|
||||
olast lit '19', /* length - 1 */
|
||||
leftbracket lit '''[''',
|
||||
rightbracket lit ''']''';
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,7 @@
|
||||
$nolist
|
||||
|
||||
errmsg: proc(errno) external;
|
||||
dcl errno byte;
|
||||
end errmsg;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,43 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 4/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This is all assembler error numbers.
|
||||
For each error number there is a
|
||||
corresponding error TEXT. The texts are
|
||||
defined in the module ERMOD.PLM.
|
||||
*/
|
||||
|
||||
dcl
|
||||
firstitem lit '0', /* error in first item */
|
||||
missingpseudo lit '1',
|
||||
illegalpseudo lit '2',
|
||||
doubledefvar lit '3', /* doubled defined errors: */
|
||||
doubledeflab lit '4',
|
||||
illegalmacro lit '5', /* illegal instruction name */
|
||||
end$of$line$err lit '6', /* garabage at end of line */
|
||||
opmismatch lit '7', /* operands mismatch instruction */
|
||||
illioper lit '8', /* illegal instruction operand */
|
||||
missinstr lit '9', /* missing instruction */
|
||||
udefsymbol lit '10', /* undefined element of expression */
|
||||
pseudooperr lit '11', /* illegal pseudo operand */
|
||||
nestediferr lit '12', /* nested IF illegal - ignored */
|
||||
ifparerr lit '13', /* illegal IF operand - IF ignored */
|
||||
missiferr lit '14', /* no matching "IF" for "ENDIF" */
|
||||
neglecterr lit '15', /* neglected symbol */
|
||||
doubledefsymb lit '16', /* doubled defined symbol */
|
||||
instrerr lit '17', /* instruction not in code segm. */
|
||||
filesynterr lit '18', /* file name syntax error */
|
||||
nestedincludeerr lit '19', /* nested INCLUDE not legal */
|
||||
illexprelem lit '20', /* illegal expression element */
|
||||
misstypeinfo lit '21', /* missing type info in operands */
|
||||
laboutofrange lit '22', /* label out of range */
|
||||
misssegminfo lit '23', /* missing segment info in operand */
|
||||
codemacroerr lit '24'; /* error in codemacrobuilding */
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,451 @@
|
||||
PL/M-86 COMPILER ERROR MESSAGE MODULE 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE ERRORM
|
||||
OBJECT MODULE PLACED IN ERMOD.OBJ
|
||||
COMPILER INVOKED BY: :F0: ERMOD.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title ('ERROR MESSAGE MODULE')
|
||||
1 errorm:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 3/30/81 R. Silberstein
|
||||
modified 4/7/81 R. Silberstein
|
||||
modified 4/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This is the module to perform error message
|
||||
printout to the print file. The interface from
|
||||
other modules goes through the subroutine
|
||||
|
||||
ERRMSG ( errornumber )
|
||||
|
||||
This routine also increments the global variable
|
||||
"ERRORS" which contains the accumulated number
|
||||
of errors throughout the assembly.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:struc.lit)
|
||||
= $nolist
|
||||
$include (:f1:ermod.lit)
|
||||
= $nolist
|
||||
$include (:f1:subr1.ext)
|
||||
= $nolist
|
||||
$include (:f1:subr2.ext)
|
||||
= $nolist
|
||||
$include (:f1:print.ext)
|
||||
= $nolist
|
||||
$include (:f1:global.ext)
|
||||
= $nolist
|
||||
|
||||
|
||||
/* Error messages : */
|
||||
|
||||
69 1 dcl
|
||||
nulltext(1) byte data (0), /* dummy text */
|
||||
tex00(*) byte data ('ILLEGAL FIRST ITEM',0),
|
||||
tex01(*) byte data ('MISSING PSEUDO INSTRUCTION',0),
|
||||
tex02(*) byte data ('ILLEGAL PSEUDO INSTRUCTION',0),
|
||||
tex03(*) byte data ('DOUBLE DEFINED VARIABLE',0),
|
||||
tex04(*) byte data ('DOUBLE DEFINED LABEL',0),
|
||||
tex05(*) byte data ('UNDEFINED INSTRUCTION',0),
|
||||
PL/M-86 COMPILER ERROR MESSAGE MODULE 10/5/81 PAGE 2
|
||||
|
||||
|
||||
tex06(*) byte data ('GARBAGE AT END OF LINE - IGNORED',0),
|
||||
tex07(*) byte data ('OPERAND(S) MISMATCH INSTRUCTION',0),
|
||||
tex08(*) byte data ('ILLEGAL INSTRUCTION OPERANDS',0),
|
||||
tex09(*) byte data ('MISSING INSTRUCTION',0),
|
||||
tex10(*) byte data ('UNDEFINED ELEMENT OF EXPRESSION',0),
|
||||
tex11(*) byte data ('ILLEGAL PSEUDO OPERAND',0),
|
||||
tex12(*) byte data ('NESTED "IF" ILLEGAL - "IF" IGNORED',0),
|
||||
tex13(*) byte data ('ILLEGAL "IF" OPERAND - "IF" IGNORED',0),
|
||||
tex14(*) byte data ('NO MATCHING "IF" FOR "ENDIF"',0),
|
||||
tex15(*) byte data ('SYMBOL ILLEGALLY FORWARD REFERENCED - ',
|
||||
'NEGLECTED',0),
|
||||
tex16(*) byte data ('DOUBLE DEFINED SYMBOL - ',
|
||||
'TREATED AS UNDEFINED',0),
|
||||
tex17(*) byte data ('INSTRUCTION NOT IN CODE SEGMENT',0),
|
||||
tex18(*) byte data ('FILE NAME SYNTAX ERROR',0),
|
||||
tex19(*) byte data ('NESTED INCLUDE NOT ALLOWED',0),
|
||||
tex20(*) byte data ('ILLEGAL EXPRESSION ELEMENT',0),
|
||||
tex21(*) byte data ('MISSING TYPE INFORMATION IN OPERAND(S)',0),
|
||||
tex22(*) byte data ('LABEL OUT OF RANGE',0),
|
||||
tex23(*) byte data ('MISSING SEGMENT INFORMATION IN OPERAND',0),
|
||||
tex24(*) byte data ('ERROR IN CODEMACROBUILDING',0),
|
||||
|
||||
/* Error-message pointer table: */
|
||||
|
||||
texttab(*) address data (.tex00,.tex01,.tex02,.tex03,.tex04,
|
||||
.tex05,.tex06,.tex07,.tex08,
|
||||
.tex09,.tex10,.tex11,.tex12,.tex13,
|
||||
.tex14,.tex15,.tex16,.tex17,.tex18,
|
||||
.tex19,.tex20,.tex21,.tex22,.tex23,
|
||||
.tex24,.nulltext);
|
||||
|
||||
/* Additional text strings: */
|
||||
|
||||
70 1 dcl
|
||||
errnotext(*) byte data ('** ERROR NO:',0),
|
||||
neartext(*) byte data (' ** NEAR: "',0),
|
||||
spacetext(*) byte data (' ',0);
|
||||
|
||||
/* Table of defined error numbers: */
|
||||
|
||||
71 1 dcl
|
||||
errtab (*) byte data (firstitem,missingpseudo,
|
||||
illegalpseudo,doubledefvar,doubledeflab,
|
||||
illegalmacro,end$of$line$err,opmismatch,
|
||||
illioper,missinstr,udefsymbol,
|
||||
pseudooperr,nestediferr,ifparerr,
|
||||
missiferr,neglecterr,doubledefsymb,
|
||||
instrerr,filesynterr,
|
||||
nestedincludeerr,illexprelem,misstypeinfo,
|
||||
laboutofrange,misssegminfo,codemacroerr);
|
||||
|
||||
/* Subroutines: */
|
||||
|
||||
72 1 printtext: proc(txt);
|
||||
73 2 dcl txt address,ch based txt (1) byte,i byte;
|
||||
74 2 i=0ffh;
|
||||
75 2 do while ch(i:=i+1) <> 0;
|
||||
PL/M-86 COMPILER ERROR MESSAGE MODULE 10/5/81 PAGE 3
|
||||
|
||||
|
||||
76 3 call printsinglebyte(ch(i));
|
||||
77 3 end$while;
|
||||
78 2 end printtext;
|
||||
|
||||
79 1 locerrmsg: proc(erno);
|
||||
80 2 dcl t address,help(5) byte,(helpstop,erno,i) byte;
|
||||
|
||||
81 2 errortype: proc byte;
|
||||
82 3 i=0ffh;
|
||||
83 3 do while (i:=i+1) < length(errtab);
|
||||
84 4 if erno = errtab(i) then return i;
|
||||
end$while;
|
||||
87 3 return length(errtab);
|
||||
88 3 end errortype;
|
||||
|
||||
89 2 helpstop,accum(acclen)=0;
|
||||
90 2 call decout(erno,.help(0));
|
||||
|
||||
91 2 t=texttab(errortype); /* pick up correct error text */
|
||||
|
||||
92 2 call printtext(.errnotext); /* print error message line */
|
||||
93 2 call printtext(.help(2));
|
||||
94 2 if accum(0) <> cr then$do
|
||||
96 3 call printtext(.neartext);
|
||||
97 3 call printtext(.accum(0)); /* (print current token) */
|
||||
98 3 CALL PRINTSINGLEBYTE ('"');
|
||||
99 3 end$if;
|
||||
100 2 call printtext(.spacetext);
|
||||
101 2 call printtext(t);
|
||||
102 2 call printcrlf;
|
||||
103 2 end locerrmsg;
|
||||
|
||||
/* Public routine: */
|
||||
|
||||
104 1 errmsg: proc(erno) public;
|
||||
105 2 dcl erno byte;
|
||||
106 2 if print$on OR PRINTSWITCHOFF then$do
|
||||
108 3 if not errorprinted then$do
|
||||
110 4 errorprinted=true;
|
||||
111 4 call locerrmsg(erno);
|
||||
112 4 errors=errors+1;
|
||||
113 4 end$if;
|
||||
end$if;
|
||||
115 2 end errmsg;
|
||||
|
||||
116 1 end$module errorm;
|
||||
PL/M-86 COMPILER ERROR MESSAGE MODULE 10/5/81 PAGE 4
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
66 0000H 4 ABSADDR. . . . . . BYTE ARRAY(4) EXTERNAL(54)
|
||||
66 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(58) 89
|
||||
66 0000H 1 ACCLENSAVE . . . . BYTE EXTERNAL(61)
|
||||
66 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(59) 89 94 97
|
||||
66 0000H 80 ACCUMSAVE. . . . . BYTE ARRAY(80) EXTERNAL(60)
|
||||
2 ADDR . . . . . . . LITERALLY 6 9 12 15 21 39 42
|
||||
45 48 66
|
||||
29 0000H ALPHANUMERIC . . . PROCEDURE BYTE EXTERNAL(8) STACK=0000H
|
||||
32 0000H ASCIICHAR. . . . . PROCEDURE BYTE EXTERNAL(9) STACK=0000H
|
||||
66 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
|
||||
66 0008H 1 BASEINDEX. . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
3 BASEREGBIT . . . . LITERALLY
|
||||
3 BASEREGCOUNT . . . LITERALLY
|
||||
3 BREGBIT. . . . . . LITERALLY
|
||||
3 BREGCOUNT. . . . . LITERALLY
|
||||
23 0000H 1 CH . . . . . . . . BYTE PARAMETER 24
|
||||
32 0000H 1 CH . . . . . . . . BYTE PARAMETER 33
|
||||
26 0000H 1 CH . . . . . . . . BYTE PARAMETER 27
|
||||
35 0000H 1 CH . . . . . . . . BYTE PARAMETER 36
|
||||
20 0000H 1 CH . . . . . . . . BYTE PARAMETER 21
|
||||
73 0000H 1 CH . . . . . . . . BYTE BASED(TXT) ARRAY(1) 75 76
|
||||
50 0000H 1 CH . . . . . . . . BYTE PARAMETER 51
|
||||
29 0000H 1 CH . . . . . . . . BYTE PARAMETER 30
|
||||
66 0000H 2 CIP. . . . . . . . WORD EXTERNAL(23)
|
||||
4 CODEMACROERR . . . LITERALLY 71
|
||||
66 0000H 1 CODEMACROFLAG. . . BYTE EXTERNAL(80)
|
||||
3 CODEMACROHEAD. . . LITERALLY
|
||||
66 0000H 2 CODEMACROPTR . . . WORD EXTERNAL(75)
|
||||
11 0000H COPY . . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H
|
||||
2 CR . . . . . . . . LITERALLY 94
|
||||
66 0000H 2 CSCIP. . . . . . . WORD EXTERNAL(28)
|
||||
66 0000H 1 CSEGSPEC . . . . . BYTE EXTERNAL(26)
|
||||
66 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(24)
|
||||
66 0000H 2 CSEGVALUE. . . . . WORD EXTERNAL(25)
|
||||
66 0000H 1 CSPEC. . . . . . . BYTE EXTERNAL(35)
|
||||
66 0000H 2 CURCSEG. . . . . . WORD EXTERNAL(31)
|
||||
66 0000H 2 CURDSEG. . . . . . WORD EXTERNAL(32)
|
||||
66 0000H 2 CURESEG. . . . . . WORD EXTERNAL(34)
|
||||
66 0000H 9 CURRENTSYMBOL. . . STRUCTURE EXTERNAL(71)
|
||||
66 0000H 2 CURSSEG. . . . . . WORD EXTERNAL(33)
|
||||
47 0000H 2 D. . . . . . . . . WORD PARAMETER 48
|
||||
38 0000H 2 D. . . . . . . . . WORD PARAMETER 39
|
||||
41 0000H 2 D. . . . . . . . . WORD PARAMETER 42
|
||||
11 0000H 2 D. . . . . . . . . WORD PARAMETER 12
|
||||
44 0000H 2 D. . . . . . . . . WORD PARAMETER 45
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
47 0000H DECOUT . . . . . . PROCEDURE EXTERNAL(14) STACK=0000H 90
|
||||
66 0000H 1 DEFAULTDRIVE . . . BYTE EXTERNAL(78)
|
||||
66 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN)
|
||||
PL/M-86 COMPILER ERROR MESSAGE MODULE 10/5/81 PAGE 5
|
||||
|
||||
|
||||
23 0000H DIGIT. . . . . . . PROCEDURE BYTE EXTERNAL(6) STACK=0000H
|
||||
4 DOUBLEDEFLAB . . . LITERALLY 71
|
||||
4 DOUBLEDEFSYMB. . . LITERALLY 71
|
||||
4 DOUBLEDEFVAR . . . LITERALLY 71
|
||||
66 0000H 2 DSCIP. . . . . . . WORD EXTERNAL(30)
|
||||
66 0000H 1 DSPEC. . . . . . . BYTE EXTERNAL(36)
|
||||
64 0000H EJECT. . . . . . . PROCEDURE EXTERNAL(21) STACK=0000H
|
||||
2 ELSEDO . . . . . . LITERALLY
|
||||
2 ENDCASE. . . . . . LITERALLY
|
||||
2 ENDDO. . . . . . . LITERALLY
|
||||
2 ENDFOREVER . . . . LITERALLY
|
||||
2 ENDIF. . . . . . . LITERALLY 113
|
||||
2 ENDMODULE. . . . . LITERALLY
|
||||
2 ENDOFFILE. . . . . LITERALLY
|
||||
4 ENDOFLINEERR . . . LITERALLY 71
|
||||
2 ENDPROC. . . . . . LITERALLY
|
||||
2 ENDWHILE . . . . . LITERALLY 85
|
||||
66 0000H 1 EOFSET . . . . . . BYTE EXTERNAL(62)
|
||||
38 0000H EQUAL. . . . . . . PROCEDURE BYTE EXTERNAL(11) STACK=0000H
|
||||
79 0000H 1 ERNO . . . . . . . BYTE PARAMETER 80 84 90
|
||||
104 0004H 1 ERNO . . . . . . . BYTE PARAMETER AUTOMATIC 105 111
|
||||
104 00C1H 42 ERRMSG . . . . . . PROCEDURE PUBLIC STACK=0012H
|
||||
70 0314H 13 ERRNOTEXT. . . . . BYTE ARRAY(13) DATA 92
|
||||
1 0000H ERRORM . . . . . . PROCEDURE STACK=0000H
|
||||
66 0000H 1 ERRORPRINTED . . . BYTE EXTERNAL(65) 108 110
|
||||
66 0000H 2 ERRORS . . . . . . WORD EXTERNAL(55) 112
|
||||
81 0099H 40 ERRORTYPE. . . . . PROCEDURE BYTE STACK=0002H 91
|
||||
71 0332H 25 ERRTAB . . . . . . BYTE ARRAY(25) DATA 83 84 87
|
||||
66 0000H 2 ESCIP. . . . . . . WORD EXTERNAL(27)
|
||||
66 0000H 1 ESPEC. . . . . . . BYTE EXTERNAL(38)
|
||||
2 FALSE. . . . . . . LITERALLY
|
||||
17 0000H 2 FCBADR . . . . . . WORD PARAMETER 18
|
||||
17 0000H FILEABORT. . . . . PROCEDURE EXTERNAL(4) STACK=0000H
|
||||
3 FILEISTRUCTURE . . LITERALLY
|
||||
3 FILEOSTRUCTURE . . LITERALLY
|
||||
4 FILESYNTERR. . . . LITERALLY 71
|
||||
20 0000H FILL . . . . . . . PROCEDURE EXTERNAL(5) STACK=0000H
|
||||
4 FIRSTITEM. . . . . LITERALLY 71
|
||||
66 0000H 2 FIRSTMACROPTR. . . WORD EXTERNAL(66)
|
||||
2 FOREVER. . . . . . LITERALLY
|
||||
2 FORMFEED . . . . . LITERALLY
|
||||
66 0000H 1 FULLSYMBTAB. . . . BYTE EXTERNAL(68)
|
||||
67 0000H GLOBALINIT . . . . PROCEDURE EXTERNAL(81) STACK=0000H
|
||||
66 0000H 5 HELP . . . . . . . BYTE ARRAY(5) EXTERNAL(76)
|
||||
80 0005H 5 HELP . . . . . . . BYTE ARRAY(5) 90 93
|
||||
80 000AH 1 HELPSTOP . . . . . BYTE 89
|
||||
41 0000H HEX1OUT. . . . . . PROCEDURE EXTERNAL(12) STACK=0000H
|
||||
44 0000H HEX2OUT. . . . . . PROCEDURE EXTERNAL(13) STACK=0000H
|
||||
66 0000H 1 I. . . . . . . . . BYTE EXTERNAL(77)
|
||||
80 000BH 1 I. . . . . . . . . BYTE 82 83 84 85
|
||||
73 0004H 1 I. . . . . . . . . BYTE 74 75 76
|
||||
66 0000H 1 IFLEVEL. . . . . . BYTE EXTERNAL(70)
|
||||
66 0000H 1 IFLIST . . . . . . BYTE EXTERNAL(41)
|
||||
4 IFPARERR . . . . . LITERALLY 71
|
||||
4 ILLEGALMACRO . . . LITERALLY 71
|
||||
4 ILLEGALPSEUDO. . . LITERALLY 71
|
||||
4 ILLEXPRELEM. . . . LITERALLY 71
|
||||
PL/M-86 COMPILER ERROR MESSAGE MODULE 10/5/81 PAGE 6
|
||||
|
||||
|
||||
4 ILLIOPER . . . . . LITERALLY 71
|
||||
66 0000H 1 INCLUDEDEFAULT . . BYTE EXTERNAL(79)
|
||||
66 0000H 1 INCLUDEON. . . . . BYTE EXTERNAL(69)
|
||||
3 INDEXREGBIT. . . . LITERALLY
|
||||
3 INDEXREGCOUNT. . . LITERALLY
|
||||
2 INIT . . . . . . . LITERALLY
|
||||
4 INSTRERR . . . . . LITERALLY 71
|
||||
66 0000H 1 INTELHEXON . . . . BYTE EXTERNAL(63)
|
||||
3 IREGBIT. . . . . . LITERALLY
|
||||
3 IREGCOUNT. . . . . LITERALLY
|
||||
4 LABOUTOFRANGE. . . LITERALLY 71
|
||||
66 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
|
||||
66 0000H 2 LENGTH . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
LENGTH . . . . . . BUILTIN 83 87
|
||||
26 0000H LETTER . . . . . . PROCEDURE BYTE EXTERNAL(7) STACK=0000H
|
||||
2 LF . . . . . . . . LITERALLY
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4
|
||||
79 0027H 114 LOCERRMSG. . . . . PROCEDURE STACK=000CH 111
|
||||
66 0000H 2 MACROPTR . . . . . WORD EXTERNAL(67)
|
||||
66 0000H 1 MAXCOL . . . . . . BYTE EXTERNAL(42)
|
||||
4 MISSIFERR. . . . . LITERALLY 71
|
||||
4 MISSINGPSEUDO. . . LITERALLY 71
|
||||
4 MISSINSTR. . . . . LITERALLY 71
|
||||
4 MISSSEGMINFO . . . LITERALLY 71
|
||||
4 MISSTYPEINFO . . . LITERALLY 71
|
||||
47 0000H 2 N. . . . . . . . . WORD PARAMETER 48
|
||||
44 0000H 2 N. . . . . . . . . WORD PARAMETER 45
|
||||
41 0000H 1 N. . . . . . . . . BYTE PARAMETER 42
|
||||
38 0000H 1 N. . . . . . . . . BYTE PARAMETER 39
|
||||
20 0000H 1 N. . . . . . . . . BYTE PARAMETER 21
|
||||
11 0000H 1 N. . . . . . . . . BYTE PARAMETER 12
|
||||
8 0000H 2 N. . . . . . . . . WORD PARAMETER 9
|
||||
70 0321H 13 NEARTEXT . . . . . BYTE ARRAY(13) DATA 96
|
||||
4 NEGLECTERR . . . . LITERALLY 71
|
||||
4 NESTEDIFERR. . . . LITERALLY 71
|
||||
4 NESTEDINCLUDEERR . LITERALLY 71
|
||||
66 0000H 1 NEXTCH . . . . . . BYTE EXTERNAL(57)
|
||||
66 0000H 1 NOERROR. . . . . . BYTE EXTERNAL(64)
|
||||
66 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(73)
|
||||
3 NOOVERCOUNT. . . . LITERALLY
|
||||
3 NOOVERRIDEBIT. . . LITERALLY
|
||||
69 0034H 1 NULLTEXT . . . . . BYTE ARRAY(1) DATA 69
|
||||
66 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
|
||||
66 0006H 2 OFFSET . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
66 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(74)
|
||||
3 OPERANDSTRUC . . . LITERALLY 66
|
||||
4 OPMISMATCH . . . . LITERALLY 71
|
||||
14 0000H OUTTEXT. . . . . . PROCEDURE EXTERNAL(3) STACK=0000H
|
||||
66 0000H 1 PAGESIZE . . . . . BYTE EXTERNAL(48)
|
||||
66 0000H 1 PASS . . . . . . . BYTE EXTERNAL(22)
|
||||
66 0000H 240 PREFIX . . . . . . BYTE ARRAY(240) EXTERNAL(52)
|
||||
66 0000H 1 PREFIXPTR. . . . . BYTE EXTERNAL(53)
|
||||
53 0000H PRINTCRLF. . . . . PROCEDURE EXTERNAL(16) STACK=0000H 102
|
||||
66 0000H 1 PRINTDEVICE. . . . BYTE EXTERNAL(45)
|
||||
59 0000H PRINTINIT. . . . . PROCEDURE EXTERNAL(19) STACK=0000H
|
||||
55 0000H PRINTNEWPAGE . . . PROCEDURE EXTERNAL(17) STACK=0000H
|
||||
66 0000H 1 PRINTON. . . . . . BYTE EXTERNAL(39) 106
|
||||
PL/M-86 COMPILER ERROR MESSAGE MODULE 10/5/81 PAGE 7
|
||||
|
||||
|
||||
50 0000H PRINTSINGLEBYTE. . PROCEDURE EXTERNAL(15) STACK=0000H 76 98
|
||||
57 0000H PRINTSOURCELINE. . PROCEDURE EXTERNAL(18) STACK=0000H
|
||||
66 0000H 1 PRINTSWITCHOFF . . BYTE EXTERNAL(40) 106
|
||||
61 0000H PRINTTERMINATE . . PROCEDURE EXTERNAL(20) STACK=0000H
|
||||
72 0000H 39 PRINTTEXT. . . . . PROCEDURE STACK=0008H 92 93 96 97
|
||||
100 101
|
||||
2 PROC . . . . . . . LITERALLY 5 8 29 32 41 44 47
|
||||
50 53 55 57 59 61 64 72 79 81
|
||||
104
|
||||
4 PSEUDOOPERR. . . . LITERALLY 71
|
||||
20 0000H 2 PT . . . . . . . . WORD PARAMETER 21
|
||||
2 REENT. . . . . . . LITERALLY
|
||||
38 0000H 2 S. . . . . . . . . WORD PARAMETER 39
|
||||
11 0000H 2 S. . . . . . . . . WORD PARAMETER 12
|
||||
66 0000H 12 SAVESOURCE . . . . BYTE ARRAY(12) EXTERNAL(44)
|
||||
3 SEGMBIT. . . . . . LITERALLY
|
||||
3 SEGMCOUNT. . . . . LITERALLY
|
||||
66 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
|
||||
66 0004H 2 SEGMENT. . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
3 SEGTYPEBIT . . . . LITERALLY
|
||||
3 SEGTYPECOUNT . . . LITERALLY
|
||||
66 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
66 0003H 1 SFLAG. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
66 0000H 1 SIMFORM. . . . . . BYTE EXTERNAL(49)
|
||||
66 0000H 80 SOURCEBUF. . . . . BYTE ARRAY(80) EXTERNAL(50)
|
||||
66 0000H 12 SOURCENAME . . . . BYTE ARRAY(12) EXTERNAL(43)
|
||||
66 0000H 1 SOURCEPTR. . . . . BYTE EXTERNAL(51)
|
||||
2 SPACE. . . . . . . LITERALLY
|
||||
70 032EH 4 SPACETEXT. . . . . BYTE ARRAY(4) DATA 100
|
||||
66 0000H 2 SSCIP. . . . . . . WORD EXTERNAL(29)
|
||||
66 0000H 1 SSPEC. . . . . . . BYTE EXTERNAL(37)
|
||||
2 STRUC. . . . . . . LITERALLY 66
|
||||
66 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
66 0002H 1 STYPE. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
66 0000H 1 SYMBOLDEVICE . . . BYTE EXTERNAL(46)
|
||||
3 SYMBOLHEAD . . . . LITERALLY
|
||||
3 SYMBOLSTRUC. . . . LITERALLY 66
|
||||
66 0000H 2 SYMBTABADR . . . . WORD EXTERNAL(72)
|
||||
80 0002H 2 T. . . . . . . . . WORD 91 101
|
||||
14 0000H 2 T. . . . . . . . . WORD PARAMETER 15
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
69 0035H 19 TEX00. . . . . . . BYTE ARRAY(19) DATA 69
|
||||
69 0048H 27 TEX01. . . . . . . BYTE ARRAY(27) DATA 69
|
||||
69 0063H 27 TEX02. . . . . . . BYTE ARRAY(27) DATA 69
|
||||
69 007EH 24 TEX03. . . . . . . BYTE ARRAY(24) DATA 69
|
||||
69 0096H 21 TEX04. . . . . . . BYTE ARRAY(21) DATA 69
|
||||
69 00ABH 22 TEX05. . . . . . . BYTE ARRAY(22) DATA 69
|
||||
69 00C1H 33 TEX06. . . . . . . BYTE ARRAY(33) DATA 69
|
||||
69 00E2H 32 TEX07. . . . . . . BYTE ARRAY(32) DATA 69
|
||||
69 0102H 29 TEX08. . . . . . . BYTE ARRAY(29) DATA 69
|
||||
69 011FH 20 TEX09. . . . . . . BYTE ARRAY(20) DATA 69
|
||||
69 0133H 32 TEX10. . . . . . . BYTE ARRAY(32) DATA 69
|
||||
69 0153H 23 TEX11. . . . . . . BYTE ARRAY(23) DATA 69
|
||||
69 016AH 35 TEX12. . . . . . . BYTE ARRAY(35) DATA 69
|
||||
69 018DH 36 TEX13. . . . . . . BYTE ARRAY(36) DATA 69
|
||||
69 01B1H 29 TEX14. . . . . . . BYTE ARRAY(29) DATA 69
|
||||
69 01CEH 48 TEX15. . . . . . . BYTE ARRAY(48) DATA 69
|
||||
PL/M-86 COMPILER ERROR MESSAGE MODULE 10/5/81 PAGE 8
|
||||
|
||||
|
||||
69 01FEH 45 TEX16. . . . . . . BYTE ARRAY(45) DATA 69
|
||||
69 022BH 32 TEX17. . . . . . . BYTE ARRAY(32) DATA 69
|
||||
69 024BH 23 TEX18. . . . . . . BYTE ARRAY(23) DATA 69
|
||||
69 0262H 27 TEX19. . . . . . . BYTE ARRAY(27) DATA 69
|
||||
69 027DH 27 TEX20. . . . . . . BYTE ARRAY(27) DATA 69
|
||||
69 0298H 39 TEX21. . . . . . . BYTE ARRAY(39) DATA 69
|
||||
69 02BFH 19 TEX22. . . . . . . BYTE ARRAY(19) DATA 69
|
||||
69 02D2H 39 TEX23. . . . . . . BYTE ARRAY(39) DATA 69
|
||||
69 02F9H 27 TEX24. . . . . . . BYTE ARRAY(27) DATA 69
|
||||
17 0000H 2 TEXTADR. . . . . . WORD PARAMETER 18
|
||||
69 0000H 52 TEXTTAB. . . . . . WORD ARRAY(26) DATA 91
|
||||
2 THENDO . . . . . . LITERALLY 94 106 108
|
||||
66 0000H 30 TITLE. . . . . . . BYTE ARRAY(30) EXTERNAL(47)
|
||||
66 0000H 4 TOKEN. . . . . . . STRUCTURE EXTERNAL(56)
|
||||
2 TRUE . . . . . . . LITERALLY 110
|
||||
72 0004H 2 TXT. . . . . . . . WORD PARAMETER AUTOMATIC 73 75 76
|
||||
66 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN)
|
||||
3 TYPEBIT. . . . . . LITERALLY
|
||||
5 0000H TYPECALC . . . . . PROCEDURE BYTE EXTERNAL(0) STACK=0000H
|
||||
3 TYPECOUNT. . . . . LITERALLY
|
||||
4 UDEFSYMBOL . . . . LITERALLY 71
|
||||
35 0000H UPPER. . . . . . . PROCEDURE BYTE EXTERNAL(10) STACK=0000H
|
||||
61 0000H 1 USEFACT. . . . . . BYTE PARAMETER 62
|
||||
5 0000H 2 VAL. . . . . . . . WORD PARAMETER 6
|
||||
66 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN)
|
||||
8 0000H WRDTEST. . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 00EBH 235D
|
||||
CONSTANT AREA SIZE = 034BH 843D
|
||||
VARIABLE AREA SIZE = 000CH 12D
|
||||
MAXIMUM STACK SIZE = 0012H 18D
|
||||
523 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,147 @@
|
||||
$title ('ERROR MESSAGE MODULE')
|
||||
errorm:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 3/30/81 R. Silberstein
|
||||
modified 4/7/81 R. Silberstein
|
||||
modified 4/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This is the module to perform error message
|
||||
printout to the print file. The interface from
|
||||
other modules goes through the subroutine
|
||||
|
||||
ERRMSG ( errornumber )
|
||||
|
||||
This routine also increments the global variable
|
||||
"ERRORS" which contains the accumulated number
|
||||
of errors throughout the assembly.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:struc.lit)
|
||||
$include (:f1:ermod.lit)
|
||||
$include (:f1:subr1.ext)
|
||||
$include (:f1:subr2.ext)
|
||||
$include (:f1:print.ext)
|
||||
$include (:f1:global.ext)
|
||||
|
||||
|
||||
/* Error messages : */
|
||||
|
||||
dcl
|
||||
nulltext(1) byte data (0), /* dummy text */
|
||||
tex00(*) byte data ('ILLEGAL FIRST ITEM',0),
|
||||
tex01(*) byte data ('MISSING PSEUDO INSTRUCTION',0),
|
||||
tex02(*) byte data ('ILLEGAL PSEUDO INSTRUCTION',0),
|
||||
tex03(*) byte data ('DOUBLE DEFINED VARIABLE',0),
|
||||
tex04(*) byte data ('DOUBLE DEFINED LABEL',0),
|
||||
tex05(*) byte data ('UNDEFINED INSTRUCTION',0),
|
||||
tex06(*) byte data ('GARBAGE AT END OF LINE - IGNORED',0),
|
||||
tex07(*) byte data ('OPERAND(S) MISMATCH INSTRUCTION',0),
|
||||
tex08(*) byte data ('ILLEGAL INSTRUCTION OPERANDS',0),
|
||||
tex09(*) byte data ('MISSING INSTRUCTION',0),
|
||||
tex10(*) byte data ('UNDEFINED ELEMENT OF EXPRESSION',0),
|
||||
tex11(*) byte data ('ILLEGAL PSEUDO OPERAND',0),
|
||||
tex12(*) byte data ('NESTED "IF" ILLEGAL - "IF" IGNORED',0),
|
||||
tex13(*) byte data ('ILLEGAL "IF" OPERAND - "IF" IGNORED',0),
|
||||
tex14(*) byte data ('NO MATCHING "IF" FOR "ENDIF"',0),
|
||||
tex15(*) byte data ('SYMBOL ILLEGALLY FORWARD REFERENCED - ',
|
||||
'NEGLECTED',0),
|
||||
tex16(*) byte data ('DOUBLE DEFINED SYMBOL - ',
|
||||
'TREATED AS UNDEFINED',0),
|
||||
tex17(*) byte data ('INSTRUCTION NOT IN CODE SEGMENT',0),
|
||||
tex18(*) byte data ('FILE NAME SYNTAX ERROR',0),
|
||||
tex19(*) byte data ('NESTED INCLUDE NOT ALLOWED',0),
|
||||
tex20(*) byte data ('ILLEGAL EXPRESSION ELEMENT',0),
|
||||
tex21(*) byte data ('MISSING TYPE INFORMATION IN OPERAND(S)',0),
|
||||
tex22(*) byte data ('LABEL OUT OF RANGE',0),
|
||||
tex23(*) byte data ('MISSING SEGMENT INFORMATION IN OPERAND',0),
|
||||
tex24(*) byte data ('ERROR IN CODEMACROBUILDING',0),
|
||||
|
||||
/* Error-message pointer table: */
|
||||
|
||||
texttab(*) address data (.tex00,.tex01,.tex02,.tex03,.tex04,
|
||||
.tex05,.tex06,.tex07,.tex08,
|
||||
.tex09,.tex10,.tex11,.tex12,.tex13,
|
||||
.tex14,.tex15,.tex16,.tex17,.tex18,
|
||||
.tex19,.tex20,.tex21,.tex22,.tex23,
|
||||
.tex24,.nulltext);
|
||||
|
||||
/* Additional text strings: */
|
||||
|
||||
dcl
|
||||
errnotext(*) byte data ('** ERROR NO:',0),
|
||||
neartext(*) byte data (' ** NEAR: "',0),
|
||||
spacetext(*) byte data (' ',0);
|
||||
|
||||
/* Table of defined error numbers: */
|
||||
|
||||
dcl
|
||||
errtab (*) byte data (firstitem,missingpseudo,
|
||||
illegalpseudo,doubledefvar,doubledeflab,
|
||||
illegalmacro,end$of$line$err,opmismatch,
|
||||
illioper,missinstr,udefsymbol,
|
||||
pseudooperr,nestediferr,ifparerr,
|
||||
missiferr,neglecterr,doubledefsymb,
|
||||
instrerr,filesynterr,
|
||||
nestedincludeerr,illexprelem,misstypeinfo,
|
||||
laboutofrange,misssegminfo,codemacroerr);
|
||||
|
||||
/* Subroutines: */
|
||||
|
||||
printtext: proc(txt);
|
||||
dcl txt address,ch based txt (1) byte,i byte;
|
||||
i=0ffh;
|
||||
do while ch(i:=i+1) <> 0;
|
||||
call printsinglebyte(ch(i));
|
||||
end$while;
|
||||
end printtext;
|
||||
|
||||
locerrmsg: proc(erno);
|
||||
dcl t address,help(5) byte,(helpstop,erno,i) byte;
|
||||
|
||||
errortype: proc byte;
|
||||
i=0ffh;
|
||||
do while (i:=i+1) < length(errtab);
|
||||
if erno = errtab(i) then return i;
|
||||
end$while;
|
||||
return length(errtab);
|
||||
end errortype;
|
||||
|
||||
helpstop,accum(acclen)=0;
|
||||
call decout(erno,.help(0));
|
||||
|
||||
t=texttab(errortype); /* pick up correct error text */
|
||||
|
||||
call printtext(.errnotext); /* print error message line */
|
||||
call printtext(.help(2));
|
||||
if accum(0) <> cr then$do
|
||||
call printtext(.neartext);
|
||||
call printtext(.accum(0)); /* (print current token) */
|
||||
CALL PRINTSINGLEBYTE ('"');
|
||||
end$if;
|
||||
call printtext(.spacetext);
|
||||
call printtext(t);
|
||||
call printcrlf;
|
||||
end locerrmsg;
|
||||
|
||||
/* Public routine: */
|
||||
|
||||
errmsg: proc(erno) public;
|
||||
dcl erno byte;
|
||||
if print$on OR PRINTSWITCHOFF then$do
|
||||
if not errorprinted then$do
|
||||
errorprinted=true;
|
||||
call locerrmsg(erno);
|
||||
errors=errors+1;
|
||||
end$if;
|
||||
end$if;
|
||||
end errmsg;
|
||||
|
||||
end$module errorm;
|
||||
@@ -0,0 +1,21 @@
|
||||
$nolist
|
||||
|
||||
dcl
|
||||
cip addr external, /* current instruction pointer */
|
||||
csegtype byte external, /* current segment type, code,data */
|
||||
csegvalue addr external, /* current segment value */
|
||||
csegspec byte external, /* true if segment value specified */
|
||||
dspec byte external,
|
||||
curdseg addr external, /* current data segment value */
|
||||
token struc( /* actual token scanned */
|
||||
type byte,
|
||||
descr byte,
|
||||
value addr) external, /* token value */
|
||||
nextch byte external, /* next input character */
|
||||
acclen byte external, /* accumulator length */
|
||||
accum(80) byte external, /* actual token scanned */
|
||||
nooper byte external, /* no of instruction operands */
|
||||
operands(4) operandstruc /* instruction operands,max 4 */
|
||||
external;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,23 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 8/19/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
operand: proc byte external;
|
||||
end operand;
|
||||
|
||||
NOFORWARDOPER: PROC BYTE EXTERNAL;
|
||||
END NOFORWARDOPER;
|
||||
|
||||
expression: proc(pt) byte external;
|
||||
dcl pt address;
|
||||
end expression;
|
||||
|
||||
noforwardexpr: proc(pt) byte external;
|
||||
dcl pt address;
|
||||
end noforwardexpr;
|
||||
|
||||
$list
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,515 @@
|
||||
$title ('EXPRESSION MODULE')
|
||||
expres:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 4/8/81 R. Silberstein
|
||||
modified 4/24/81 R. Silberstein
|
||||
modified 8/19/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This is the module to evaluate expressions and
|
||||
instruction operands. The entry subroutines are:
|
||||
|
||||
EXPRESSION (resultfield) byte
|
||||
OPERAND byte
|
||||
|
||||
The expression subroutine evaluates a numeric or
|
||||
memory expression. The "operand" routine evalates
|
||||
a single instruction operand. Both routines return
|
||||
FALSE if an error is found,otherwise true.
|
||||
*/
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:expr.x86)
|
||||
$include (:f1:ermod.ext)
|
||||
$include (:f1:exglob.ext)
|
||||
$INCLUDE (:F1:SUBR2.EXT)
|
||||
$eject
|
||||
/************** global variables: ************/
|
||||
|
||||
dcl
|
||||
maxlev lit '5', /* max no of nested parenthesis */
|
||||
parlevel byte, /* current no of parenthesis level */
|
||||
stck(600) byte, /* local stack within module */
|
||||
savestack addr, /* save of initial entry stack */
|
||||
expresserr byte, /* error flag */
|
||||
noforward byte, /* true if undefined symbols to be neglected */
|
||||
bracketlegal byte, /* true if bracket expression is legal */
|
||||
udefflag byte; /* true if an udefined element found */
|
||||
$eject
|
||||
$include (:f1:bnf.tex)
|
||||
$eject
|
||||
/************ michellaneous subroutines: ***********/
|
||||
|
||||
exprexit: proc (dummy);
|
||||
dcl dummy byte;
|
||||
stackptr=savestack;
|
||||
end exprexit;
|
||||
|
||||
errorexit: proc; /* return if wrong syntax */
|
||||
dcl dummy byte at (.udefflag);
|
||||
expresserr=false;
|
||||
call exprexit(dummy);
|
||||
end errorexit;
|
||||
|
||||
clearoperand: proc(p);
|
||||
dcl p address,oper based p operandstruc;
|
||||
CALL FILL (0, .OPER.BASEINDEX - .OPER + 1, P);
|
||||
OPER.BASEINDEX = NOOVERRIDEBIT;
|
||||
end clearoperand;
|
||||
|
||||
/* routine to test if current token is member of a given
|
||||
set of special characters.
|
||||
Entry parameters: base = exitvalue if token is 1. member of set
|
||||
numbel = no of elements in set
|
||||
pt = pointer to list of elements
|
||||
Exit value: routine= 0ffh if token not member of list
|
||||
routine= base+i if token is element i,
|
||||
token is skipped */
|
||||
|
||||
specmember: proc (base,numbel,pt) byte;
|
||||
dcl (base,numbel,i) byte,pt address,list based pt (1) byte;
|
||||
i=0ffh;
|
||||
do while (i:=i+1) < numbel;
|
||||
if specialtoken(list(i)) then$do call scan; return base+i; end$if;
|
||||
end$while;
|
||||
return 0ffh;
|
||||
end specmember;
|
||||
|
||||
/* Routine to test if current token is member of a given set of
|
||||
operators.
|
||||
Entry/exit : see "specmember" header */
|
||||
|
||||
opmember: proc(base,numbel,pt) byte;
|
||||
dcl (base,numbel,i,byteval) byte,pt address,list based pt (1) byte;
|
||||
if token.type = operator then$do
|
||||
i=0ffh;
|
||||
do while (i:=i+1) < numbel;
|
||||
byteval=token.value;
|
||||
if byteval=list(i) then$do call scan; return base+i; end$if;
|
||||
end$while;
|
||||
end$if;
|
||||
return 0ffh;
|
||||
end opmember;
|
||||
|
||||
/* test if both operands are numbers, if not, error */
|
||||
|
||||
numbtest: proc (ptl,ptr);
|
||||
dcl (ptl,ptr) address,(left based ptl,rigth based ptr) operandstruc;
|
||||
if (left.stype <> number) or (rigth.stype <> number) then
|
||||
call errorexit;
|
||||
end numbtest;
|
||||
|
||||
/* find resulting symbol type as result of an addition or a
|
||||
subtraction, test if illegal types */
|
||||
typefind: proc (ptl,ptr);
|
||||
dcl (ptl,ptr) address,stype byte,
|
||||
(left based ptl,rigth based ptr) operandstruc;
|
||||
dcl err lit '07fh',
|
||||
crosstab(9) byte data(number,variable,lab,variable,err,err,
|
||||
lab,err,err);
|
||||
typeno: proc(typ) byte;
|
||||
dcl typ byte;
|
||||
if typ=number then return 0;
|
||||
if typ=variable then return 1;
|
||||
if typ=lab then return 2;
|
||||
call errorexit; /* illegal member of expression */
|
||||
end typeno;
|
||||
|
||||
stype=crosstab(typeno(left.stype)*3+typeno(rigth.stype));
|
||||
if stype=err then call errorexit;
|
||||
left.length=left.length+rigth.length;
|
||||
left.stype=stype;
|
||||
end typefind;
|
||||
|
||||
/* take care of segment specification in front of variables
|
||||
syntax: <over>: variable, <over>=ES/SS/DS/CS */
|
||||
segover: proc(pt) byte;
|
||||
dcl pt address,segreg based pt byte;
|
||||
if (token.type=reg) and (token.descr=dwrd) then$do
|
||||
if nextch=':' then$do
|
||||
segreg=token.value;
|
||||
segreg=(shl(segreg,segtypecount) and segtypebit) or segmbit;
|
||||
call scan; /* skip segment register */
|
||||
call scan; /* skip : */
|
||||
return 0;
|
||||
end$if;
|
||||
end$if;
|
||||
return 0ffh;
|
||||
end segover;
|
||||
|
||||
/* create a number operator */
|
||||
createnumber: proc(p,n);
|
||||
dcl p address,n addr,oper based p operandstruc;
|
||||
call clearoperand(.oper);
|
||||
oper.stype=number;
|
||||
oper.offset=n;
|
||||
end createnumber;
|
||||
|
||||
/* get current identificator, perform symboltable lookup
|
||||
set undefined-symbol-flag if symbol not defined,
|
||||
treat undefined symbols as numbers */
|
||||
|
||||
finditem: proc (pt);
|
||||
dcl pt address,left based pt operandstruc,symbptr address,i byte;
|
||||
if token.type <> ident then$do
|
||||
call clearoperand(.left);
|
||||
left.stype=token.type;
|
||||
left.sflag=token.descr;
|
||||
left.offset=token.value;
|
||||
else$do
|
||||
if findsymbol(acclen,.accum(0),.symbptr) then$do
|
||||
call getattributes(symbptr,.left);
|
||||
i=left.stype;
|
||||
if (i=neglected) or (i=doubledefined) or (i=udefsymb) then$do
|
||||
udefflag=true;
|
||||
left.stype=number;
|
||||
expresserr=false;
|
||||
call errmsg(udefsymbol);
|
||||
end$if;
|
||||
else$do
|
||||
|
||||
/* symbol undefined - test if it is to be "neglected" */
|
||||
expresserr=false;
|
||||
if noforward then$do
|
||||
if not newsymbol(acclen,.accum,.symbptr) then$do
|
||||
call errorexit;
|
||||
end$if;
|
||||
left.stype=neglected;
|
||||
call enterattributes(symbptr,.left);
|
||||
end$if;
|
||||
|
||||
call errmsg(udefsymbol);
|
||||
udefflag=true;
|
||||
end$if;
|
||||
end$if;
|
||||
call scan;
|
||||
end finditem;
|
||||
|
||||
/* recognize the different symboltypes for the II (identicator)
|
||||
subroutine */
|
||||
symtyp: proc(pt) byte;
|
||||
dcl pt address, left based pt operandstruc,i byte;
|
||||
if specialtoken('$') then return 0;
|
||||
if specialtoken('.') then return 1;
|
||||
if token.type=string then$do
|
||||
if (acclen > 0) and (acclen < 3 ) then return 2;
|
||||
return 4; /* error */
|
||||
end$if;
|
||||
call finditem(.left);
|
||||
i=left.stype;
|
||||
if (i=pseudo) or (i=operator) or (i=spec) then return 4; /* error */
|
||||
return 3;
|
||||
end symtyp;
|
||||
$eject
|
||||
|
||||
/********** subroutines for each "NON-TERMINAL" **********/
|
||||
/********** in "BNF" syntax **********/
|
||||
|
||||
II: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc,
|
||||
doublebyt addr at (.accum(0)),saveb byte;
|
||||
do case symtyp(.left);
|
||||
|
||||
do; /* $ */
|
||||
left.stype=lab;
|
||||
left.sflag=wrd;
|
||||
left.offset=cip;
|
||||
if csegspec then$do /* pick up current segment specification */
|
||||
left.sflag=shl(csegtype,segtypecount) or segmbit or wrd;
|
||||
left.segment=csegvalue;
|
||||
end$if;
|
||||
call scan; /* skip $ */
|
||||
end;
|
||||
|
||||
do; /* . number */
|
||||
call scan; /* skip . */
|
||||
call finditem(.left);
|
||||
if left.stype <> number then call errorexit;
|
||||
left.stype=variable;
|
||||
left.segment=curdseg;
|
||||
left.sflag=shl(rds,segtypecount) and segtypebit;
|
||||
if dspec then left.sflag=left.sflag or segmbit;
|
||||
end;
|
||||
|
||||
do; /* string */
|
||||
if acclen=1 then$do
|
||||
call createnumber(.left,accum(0));
|
||||
else$do
|
||||
saveb=accum(0);
|
||||
accum(0)=accum(1);
|
||||
accum(1)=saveb;
|
||||
call createnumber(.left,doublebyt);
|
||||
end$if;
|
||||
call scan; /* skip string */
|
||||
end;
|
||||
|
||||
do; end; /* number,label,variable,register */
|
||||
call errorexit;
|
||||
end$case;
|
||||
end II;
|
||||
|
||||
BB: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc;
|
||||
if specialtoken('(') then$do
|
||||
if (parlevel:=parlevel+1) > maxlev-1 then call errorexit;
|
||||
call scan;
|
||||
call EE(.left);
|
||||
if not specialtoken(')') then call errorexit;
|
||||
parlevel=parlevel-1;
|
||||
call scan;
|
||||
return;
|
||||
end$if;
|
||||
if specialtoken(leftbracket) then$do
|
||||
if not bracketlegal then call errorexit;
|
||||
bracketlegal=false;
|
||||
call scan; /* skip leftbracket */
|
||||
call clearoperand(.left);
|
||||
left.stype=number;
|
||||
if not bracketexpr(.left) then call errorexit;
|
||||
return;
|
||||
end$if;
|
||||
call II(.left);
|
||||
end BB;
|
||||
|
||||
FF: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc,rigth operandstruc,
|
||||
opertyp byte,val addr;
|
||||
if (opertyp:=opmember(0,5,.(oseg,ooffset,otype,olength,olast)))
|
||||
<> 0ffh then$do
|
||||
call BB(.left);
|
||||
do case opertyp;
|
||||
|
||||
do; /* SEG */
|
||||
if (left.sflag and segmbit) = 0 then call errorexit;
|
||||
call createnumber(.left,left.segment);
|
||||
end;
|
||||
|
||||
do; /* OFFSET */
|
||||
call createnumber(.left,left.offset);
|
||||
end;
|
||||
|
||||
do; /* TYPE */
|
||||
call createnumber(.left,left.sflag and typebit);
|
||||
end;
|
||||
|
||||
do; /* LENGTH */
|
||||
call createnumber(.left,left.length);
|
||||
end;
|
||||
|
||||
do; /* LAST */
|
||||
if (val:=left.length) = 0 then val=1;
|
||||
call createnumber(.left,val-1);
|
||||
end;
|
||||
|
||||
end$case;
|
||||
else$do
|
||||
call BB(.left);
|
||||
do while opmember(0,1,.(optr)) <> 0ffh;
|
||||
call BB(.rigth);
|
||||
left.stype=rigth.stype;
|
||||
left.segment=rigth.segment;
|
||||
left.offset=rigth.offset;
|
||||
left.baseindex=rigth.baseindex;
|
||||
left.sflag=(left.sflag and typebit) or (rigth.sflag and
|
||||
(not typebit));
|
||||
end$while;
|
||||
end$if;
|
||||
end FF;
|
||||
|
||||
SS: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc,segreg byte;
|
||||
if segover(.segreg) <> 0ffh then$do
|
||||
call FF(.left);
|
||||
left.sflag=(left.sflag and (not segtypebit)) or segreg;
|
||||
left.baseindex=left.baseindex and (not nooverridebit);
|
||||
else$do
|
||||
call FF(.left);
|
||||
end$if;
|
||||
end SS;
|
||||
|
||||
MM: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc,opertyp byte;
|
||||
if (opertyp:=specmember(0,2,.('+-'))) <> 0ffh then$do
|
||||
call MM(.left);
|
||||
call numbtest(.left,.left);
|
||||
if opertyp=1 then$do
|
||||
left.offset=-left.offset;
|
||||
end$if;
|
||||
else$do
|
||||
call SS(.left);
|
||||
end$if;
|
||||
end MM;
|
||||
|
||||
TT: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc,rigth operandstruc,
|
||||
opertyp byte,(leftval,rigthval) addr;
|
||||
call MM(.left);
|
||||
do while (opertyp:=specmember(0,2,.('*/')) and
|
||||
opmember(2,3,.(omod,oshl,oshr))) <> 0ffh;
|
||||
call MM(.rigth);
|
||||
call numbtest(.left,.rigth);
|
||||
leftval=left.offset;
|
||||
rigthval=rigth.offset;
|
||||
do case opertyp;
|
||||
leftval=leftval*rigthval;
|
||||
leftval=leftval/rigthval;
|
||||
leftval=leftval mod rigthval;
|
||||
if rigthval>0 and rigthval<16 then leftval=shl(leftval,rigthval);
|
||||
if rigthval>0 and rigthval<16 then leftval=shr(leftval,rigthval);
|
||||
end$case;
|
||||
left.offset=leftval;
|
||||
end$while;
|
||||
end TT;
|
||||
|
||||
PP: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc,rigth operandstruc,
|
||||
opertyp byte;
|
||||
call TT(.left);
|
||||
do while (opertyp:=specmember(0,2,.('+-'))) <> 0ffh;
|
||||
call TT(.rigth);
|
||||
call typefind(.left,.rigth);
|
||||
if opertyp=0 then$do
|
||||
left.offset=left.offset+rigth.offset;
|
||||
else$do
|
||||
left.offset=left.offset-rigth.offset;
|
||||
end$if;
|
||||
end$while;
|
||||
end PP;
|
||||
|
||||
RR: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc,rigth operandstruc,
|
||||
opertyp byte,(leftval,rigthval) addr;
|
||||
call PP(.left);
|
||||
if (opertyp:=opmember(0,6,.(oeq,olt,ole,ogt,oge,one))) <> 0ffh
|
||||
then$do
|
||||
call PP(.rigth);
|
||||
call numbtest(.left,.rigth);
|
||||
leftval=left.offset;
|
||||
rigthval=rigth.offset;
|
||||
do case opertyp;
|
||||
leftval = (leftval = rigthval);
|
||||
leftval = (leftval < rigthval);
|
||||
leftval = (leftval <= rigthval);
|
||||
leftval = (leftval > rigthval);
|
||||
leftval = (leftval >= rigthval);
|
||||
leftval = (leftval <> rigthval);
|
||||
end$case;
|
||||
IF LEFTVAL = 0FFH THEN LEFTVAL = 0FFFFH;
|
||||
left.offset=leftval;
|
||||
end$if;
|
||||
end RR;
|
||||
|
||||
NN: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc;
|
||||
if opmember(0,1,.(onot)) <> 0ffh then$do
|
||||
call NN(.left);
|
||||
call numbtest(.left,.left);
|
||||
left.offset=not left.offset;
|
||||
else$do
|
||||
call RR(.left);
|
||||
end$if;
|
||||
end NN;
|
||||
|
||||
AA: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc,rigth operandstruc;
|
||||
call NN(.left);
|
||||
do while opmember(0,1,.(oand)) <> 0ffh;
|
||||
call NN(.rigth);
|
||||
call numbtest(.left,.rigth);
|
||||
left.offset=left.offset and rigth.offset;
|
||||
end$while;
|
||||
end AA;
|
||||
|
||||
EE: proc (pt) reentrant;
|
||||
dcl pt address,left based pt operandstruc,right operandstruc,
|
||||
opertype byte;
|
||||
|
||||
call AA(.left);
|
||||
do while (opertype:=opmember(0,2,.(oor,oxor))) <> 0ffh;
|
||||
call AA(.right);
|
||||
call numbtest(.left,.right);
|
||||
if opertype=0 then$do
|
||||
left.offset=left.offset or right.offset;
|
||||
else$do
|
||||
left.offset=left.offset xor right.offset;
|
||||
end$if;
|
||||
end$while;
|
||||
end EE;
|
||||
|
||||
$eject
|
||||
/*************** MAIN SUBROUTINES ***************/
|
||||
|
||||
realexpress: proc(pt);
|
||||
dcl pt address,oper based pt operandstruc,
|
||||
dummy byte at(.udefflag);
|
||||
savestack=stackptr; /* use local stack for reentrant routines */
|
||||
stackptr=.stck(length(stck));
|
||||
call EE(.oper);
|
||||
call exprexit(dummy);
|
||||
end realexpress;
|
||||
|
||||
express: proc(pt) byte;
|
||||
dcl pt address,oper based pt operandstruc;
|
||||
expresserr=true;
|
||||
udefflag=false;
|
||||
parlevel=0;
|
||||
call realexpress(.oper);
|
||||
if udefflag then$do
|
||||
oper.stype=number;
|
||||
oper.sflag=byt;
|
||||
oper.offset=0;
|
||||
end$if;
|
||||
return expresserr;
|
||||
end express;
|
||||
|
||||
/* normal expression */
|
||||
|
||||
expression: proc (pt) byte public;
|
||||
dcl pt address;
|
||||
noforward=false;
|
||||
bracketlegal=false;
|
||||
return express(pt);
|
||||
end expression;
|
||||
|
||||
/* special expression - mark all undefined symbols as "neglected" */
|
||||
|
||||
noforwardexpr: proc(pt) byte public;
|
||||
dcl pt address;
|
||||
noforward=true;
|
||||
bracketlegal=false;
|
||||
return express(pt);
|
||||
end noforwardexpr;
|
||||
|
||||
OPERND: PROC BYTE;
|
||||
dcl exitvalue byte,pt address,oper based pt operandstruc;
|
||||
|
||||
pt=.operands(nooper);
|
||||
exitvalue=true;
|
||||
bracketlegal=true;
|
||||
exitvalue=express(pt);
|
||||
if specialtoken(leftbracket) then$do
|
||||
if bracketlegal then$do
|
||||
call scan;
|
||||
exitvalue=exitvalue and bracketexpr(pt);
|
||||
else$do
|
||||
exitvalue=false;
|
||||
end$if;
|
||||
end$if;
|
||||
return exitvalue;
|
||||
END OPERND;
|
||||
|
||||
OPERAND: PROC BYTE PUBLIC;
|
||||
NOFORWARD = FALSE;
|
||||
RETURN OPERND;
|
||||
END OPERAND;
|
||||
|
||||
NOFORWARDOPER: PROC BYTE PUBLIC;
|
||||
NOFORWARD = TRUE;
|
||||
RETURN OPERND;
|
||||
END NOFORWARDOPER;
|
||||
|
||||
end$module expres;
|
||||
@@ -0,0 +1,146 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 4/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/* Symbol types : */
|
||||
|
||||
dcl
|
||||
reg lit '0', /* register */
|
||||
pseudo lit '1', /* pseudo instruction */
|
||||
code lit '2', /* instruction */
|
||||
string lit '3', /* character string */
|
||||
spec lit '4', /* special character */
|
||||
number lit '5', /* 8 or 16 bit number */
|
||||
variable lit '6',
|
||||
lab lit '7', /* label */
|
||||
operator lit '8', /* operator in expressions */
|
||||
doubledefined lit '0f9h', /* doubled defined symbol */
|
||||
neglected lit '0fah', /* neglected symb.,never to be def. */
|
||||
ident lit '0fbh', /* identificator, scanner output */
|
||||
udefsymb lit '0fdh', /* undefined symbol */
|
||||
symbol lit '0feh', /* variable,label or undef. symb. */
|
||||
deletedsymb lit '0ffh'; /* deleted symbol (not used */
|
||||
|
||||
|
||||
/* Symbol description values */
|
||||
|
||||
dcl
|
||||
nil lit '0', /* no specification */
|
||||
byt lit '1', /* symbol is 8-bit type */
|
||||
wrd lit '2', /* symbol is 16 bit type */
|
||||
dwrd lit '4'; /* symbol is 2*16 bit type
|
||||
or a segment register */
|
||||
|
||||
/* Register values : */
|
||||
|
||||
dcl
|
||||
rbx lit '3',
|
||||
rbp lit '5',
|
||||
rsi lit '6',
|
||||
rdi lit '7',
|
||||
|
||||
res lit '0', /* segment registers */
|
||||
rcs lit '1',
|
||||
rss lit '2',
|
||||
rds lit '3';
|
||||
|
||||
/* Symbolic operators */
|
||||
|
||||
dcl
|
||||
oshort lit '0', /* 8-bit value of expression */
|
||||
oor lit '1', /* logical OR */
|
||||
oxor lit '2', /* logical XOR */
|
||||
oand lit '3', /* logical AND */
|
||||
onot lit '4', /* logical NOT */
|
||||
oeq lit '5', /* equal */
|
||||
ogt lit '6', /* greater */
|
||||
oge lit '7', /* greater or equal */
|
||||
olt lit '8', /* less */
|
||||
ole lit '9', /* less or equal */
|
||||
one lit '10', /* not equal */
|
||||
omod lit '11', /* arithmetic MOD */
|
||||
oshl lit '12', /* shift left */
|
||||
oshr lit '13', /* shift rigth */
|
||||
optr lit '14', /* take type of 1. op, value of 2. */
|
||||
ooffset lit '15', /* offset value of operand */
|
||||
oseg lit '16', /* segment value of operand */
|
||||
otype lit '17', /* type value of operand */
|
||||
olength lit '18', /* length attribute of variables */
|
||||
olast lit '19', /* length - 1 */
|
||||
leftbracket lit '''[''',
|
||||
rightbracket lit ''']''';
|
||||
|
||||
dcl
|
||||
|
||||
operandstruc lit 'struc(
|
||||
length addr,
|
||||
stype byte,
|
||||
sflag byte,
|
||||
segment addr,
|
||||
offset addr,
|
||||
baseindex byte)',
|
||||
|
||||
|
||||
/* define bits of SFLAG of structures above */
|
||||
|
||||
type$bit lit '7h', /* bit 0-2 */
|
||||
segtypebit lit '18h', /* bit 3-4 */
|
||||
segmbit lit '20h', /* bit 5 */
|
||||
iregbit lit '40h', /* bit 6 */
|
||||
bregbit lit '80h', /* bit 7 */
|
||||
|
||||
/* left-shift counters */
|
||||
typecount lit '0',
|
||||
segtypecount lit '3',
|
||||
segmcount lit '5',
|
||||
iregcount lit '6',
|
||||
bregcount lit '7',
|
||||
|
||||
/* define bits of BASEINDEX byte of structures above */
|
||||
|
||||
indexregbit lit '7', /* bit 0-2 */
|
||||
baseregbit lit '38h', /* bit 3-5 */
|
||||
nooverridebit lit '40h', /* bit 6 */
|
||||
|
||||
/* left shift counters */
|
||||
|
||||
indexregcount lit '0',
|
||||
baseregcount lit '3',
|
||||
noovercount lit '6';
|
||||
|
||||
|
||||
dcl
|
||||
udefsymbol lit '10'; /* undefined elem. of expression */
|
||||
|
||||
newsymbol: proc(lg,stradr,result) byte external;
|
||||
dcl lg byte,(stradr,result) addr;
|
||||
end newsymbol;
|
||||
|
||||
findsymbol: proc(lg,stradr,result) byte external;
|
||||
dcl lg byte,(stradr,result) addr;
|
||||
end findsymbol;
|
||||
|
||||
getattributes: proc(symbadr,dest) external;
|
||||
dcl (symbadr,dest) addr;
|
||||
end getattributes;
|
||||
|
||||
enterattributes: proc(symbadr,source) external;
|
||||
dcl (symbadr,source) addr;
|
||||
end enterattributes;
|
||||
|
||||
scan: proc external;
|
||||
end scan;
|
||||
|
||||
specialtoken: proc (tok) byte external;
|
||||
dcl tok byte;
|
||||
end specialtoken;
|
||||
|
||||
bracketexpr: proc (pt) byte external;
|
||||
dcl pt address;
|
||||
end bracketexpr;
|
||||
|
||||
$list
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,70 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
outhexbyte: proc(ch) external;
|
||||
dcl ch byte;
|
||||
end outhexbyte;
|
||||
|
||||
outprintbyte: proc(ch) external;
|
||||
dcl ch byte;
|
||||
end outprintbyte;
|
||||
|
||||
outsymbolbyte: proc(ch) external;
|
||||
dcl ch byte;
|
||||
end outsymbolbyte;
|
||||
|
||||
insourcebyte: proc byte external;
|
||||
end insourcebyte;
|
||||
|
||||
inincludebyte: proc byte external;
|
||||
end inincludebyte;
|
||||
|
||||
opensource: proc external;
|
||||
end opensource;
|
||||
|
||||
openinclude: proc external;
|
||||
end openinclude;
|
||||
|
||||
openhex: proc external;
|
||||
end openhex;
|
||||
|
||||
openprint: proc external;
|
||||
end openprint;
|
||||
|
||||
opensymbol: proc external;
|
||||
end opensymbol;
|
||||
|
||||
close$source: proc external;
|
||||
end close$source;
|
||||
|
||||
rewindsource: proc external;
|
||||
end rewindsource;
|
||||
|
||||
close$include: proc external;
|
||||
end close$include;
|
||||
|
||||
closehex: proc external;
|
||||
end closehex;
|
||||
|
||||
closeprint: proc external;
|
||||
end closeprint;
|
||||
|
||||
closesymbol: proc external;
|
||||
end closesymbol;
|
||||
|
||||
|
||||
i$file$setup: proc(dev,filnam,filtyp) external;
|
||||
dcl dev byte,(filnam,filtyp) addr;
|
||||
end i$file$setup;
|
||||
|
||||
|
||||
filesetup: proc byte external;
|
||||
end filesetup;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,982 @@
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE FILE
|
||||
OBJECT MODULE PLACED IN FILES.OBJ
|
||||
COMPILER INVOKED BY: :F0: FILES.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title('FILE AND I/O MODULE')
|
||||
1 file:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 3/26/81 R. Silberstein
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 3/30/81 R. Silberstein
|
||||
modified 4/7/81 R. Silberstein
|
||||
modified 4/16/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
modified 9/14/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This is the modules to perform BYTE i/o to
|
||||
the following 5 logical devices:
|
||||
|
||||
source - file
|
||||
include - file
|
||||
hex - file
|
||||
symbol - file
|
||||
print - file
|
||||
|
||||
Each of the logical files may be assigned to the
|
||||
following physical devices :
|
||||
|
||||
null (not legal for source and include file)
|
||||
console
|
||||
printer (not legal for source and include file)
|
||||
disk
|
||||
|
||||
The module defines the following set
|
||||
of public subroutines:
|
||||
|
||||
INSOURCEBYTE - read 1 byte from source file
|
||||
ININCLUDEBYTE - read 1 byte from include file
|
||||
OUTHEXBYTE (ch) - write 1 byte to hex file
|
||||
OUTSYMBOLBYTE (ch) - write 1 byte to symbol file
|
||||
OUTPRINTBYTE (ch) - write 1 byte to print file
|
||||
|
||||
OPENSOURCE - open source file
|
||||
OPENINCLUDE - open include file
|
||||
OPENHEX - open hex file
|
||||
OPENSYMBOL - open symbol file
|
||||
OPENPRINT - open print file
|
||||
REWINDSOURCE - rewind source file
|
||||
|
||||
CLOSESOURCE - close source file
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 2
|
||||
|
||||
|
||||
CLOSEINCLUDE - close include file
|
||||
CLOSEHEX - close hex file
|
||||
CLOSESYMBOL - close symbol file
|
||||
CLOSEPRINT - close print file
|
||||
|
||||
In addition, 2 subroutines to set up the correct
|
||||
file names and routing to correct physical device
|
||||
are included. These are:
|
||||
|
||||
FILESETUP
|
||||
I$FILESETUP
|
||||
|
||||
The "filesetup" routine sets up the source, hex, symbol
|
||||
and print files by scanning the user command tail of the
|
||||
program activating line. The format of the command line
|
||||
is described in the program format section of the user's
|
||||
manual. The routine also initiates the global string array
|
||||
"SOURCENAME" with the source file name, this array to be
|
||||
used later by the printout module.
|
||||
|
||||
The "ifilesetup" sets up the format of the include file
|
||||
given by the INCLUDE command of the assembler.
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:struc.lit)
|
||||
= $nolist
|
||||
$include (:f1:dev.lit)
|
||||
= $nolist
|
||||
$include (:f1:io.ext)
|
||||
= $nolist
|
||||
$include (:f1:subr1.ext)
|
||||
= $nolist
|
||||
$include (:f1:subr2.ext)
|
||||
= $nolist
|
||||
$INCLUDE (:F1:TEXT.EXT)
|
||||
= $nolist
|
||||
$include (:f1:global.ext)
|
||||
= $nolist
|
||||
|
||||
109 1 dcl
|
||||
diskunit byte,
|
||||
|
||||
nulltype lit '0', /* subroutine "devicetype" */
|
||||
consoletype lit '1',
|
||||
printertype lit '2',
|
||||
disktype lit '3',
|
||||
|
||||
dr lit '0', /* drive code in fcb block */
|
||||
fn lit '1', /* filename in fcb block */
|
||||
ft lit '9', /* filetype in fcb block */
|
||||
ex lit '12', /* file extension number */
|
||||
s2 lit '14',
|
||||
nr lit '32', /* file record number */
|
||||
dollar lit '''$''',
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 3
|
||||
|
||||
|
||||
|
||||
asmdefault(3) byte data ('A86'), /* different file types */
|
||||
hexdefault(3) byte data ('H86'),
|
||||
lstdefault(3) byte data ('LST'),
|
||||
symdefault(3) byte data ('SYM'),
|
||||
|
||||
sourcefile file$i$structure,
|
||||
includefile file$i$structure,
|
||||
hexfile file$o$structure,
|
||||
printfile file$o$structure,
|
||||
symbolfile file$o$structure;
|
||||
|
||||
110 1 clearfcb: proc(fcbpt,defaultpt);
|
||||
111 2 dcl
|
||||
(fcbpt,defaultpt) addr,
|
||||
dest based fcbpt (1) byte;
|
||||
112 2 CALL FILL (0, 33, FCBPT);
|
||||
113 2 CALL FILL (' ', 8, FCBPT+FN);
|
||||
114 2 call copy(3,defaultpt,.dest(ft));
|
||||
115 2 end clearfcb;
|
||||
|
||||
116 1 clearcontrol: procedure(point,defaultptr);
|
||||
117 2 dcl (point,defaultptr) addr,
|
||||
x based point file$o$structure;
|
||||
118 2 call clearfcb(.x.fcbblock,defaultptr);
|
||||
119 2 x.disk=diskunit;
|
||||
120 2 end clearcontrol;
|
||||
|
||||
121 1 devicetype: proc(ch) byte;
|
||||
122 2 dcl ch byte;
|
||||
123 2 if ch=null then return nulltype;
|
||||
125 2 if ch=console then return consoletype;
|
||||
127 2 if ch=printer then return printertype;
|
||||
129 2 return disktype;
|
||||
130 2 end devicetype;
|
||||
|
||||
131 1 disk$select: procedure(disk);
|
||||
132 2 dcl disk byte;
|
||||
133 2 if diskunit <> disk then$do
|
||||
135 3 diskunit=disk;
|
||||
136 3 call select$disk(diskunit);
|
||||
137 3 end$if;
|
||||
138 2 end disk$select;
|
||||
|
||||
139 1 inbyte: proc (ptr) byte;
|
||||
140 2 dcl ptr addr,
|
||||
x based ptr file$i$structure,
|
||||
ch byte,
|
||||
i addr;
|
||||
|
||||
141 2 i=x.bufptr;
|
||||
142 2 if i=length(x.buffer) then$do
|
||||
144 3 i=0;
|
||||
145 3 call disk$select(x.disk);
|
||||
146 3 do while i < length(x.buffer);
|
||||
147 4 call SET$DMA$ADDRESS (.x.buffer(i));
|
||||
148 4 IF (CH := READ$RECORD (.X.FCBBLOCK)) <> 0 THEN$DO
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 4
|
||||
|
||||
|
||||
150 5 IF CH = 1 THEN$DO
|
||||
152 6 X.BUFFER (I) = END$OF$FILE;
|
||||
153 6 I = LENGTH (X.BUFFER);
|
||||
154 6 ELSE$DO
|
||||
156 6 CALL FILEABORT (.X, .DISKREADERRTEXT);
|
||||
157 6 END$IF;
|
||||
158 5 else$do
|
||||
160 5 i=i+128;
|
||||
161 5 end$if;
|
||||
162 4 end$while;
|
||||
163 3 i=0;
|
||||
164 3 end$if;
|
||||
165 2 ch=x.buffer(i);
|
||||
166 2 x.bufptr=i+1;
|
||||
167 2 return ch;
|
||||
168 2 end inbyte;
|
||||
|
||||
169 1 FLUSHBUFFER: PROCEDURE (PTR);
|
||||
170 2 DECLARE (PTR, I) ADDRESS, X BASED PTR FILE$O$STRUCTURE;
|
||||
|
||||
171 2 call disk$select(x.disk);
|
||||
172 2 i=0;
|
||||
173 2 do while i < x.bufptr;
|
||||
174 3 call SET$DMA$ADDRESS (.x.buffer(i));
|
||||
175 3 IF WRITE$RECORD (.X.FCBBLOCK) > 0 THEN
|
||||
176 3 CALL FILEABORT (.X, .DISKWRITEERRTXT);
|
||||
177 3 i=i+128;
|
||||
178 3 end$while;
|
||||
179 2 END FLUSHBUFFER;
|
||||
|
||||
180 1 outbyte: proc(ch,ptr);
|
||||
181 2 dcl ch byte,
|
||||
ptr addr,
|
||||
x based ptr file$o$structure,
|
||||
i addr;
|
||||
|
||||
182 2 do case devicetype(x.disk);
|
||||
|
||||
/* null */
|
||||
183 3 do; end; /* do nothing */
|
||||
|
||||
/* console */
|
||||
185 3 call write$console(ch);
|
||||
|
||||
/* printer */
|
||||
186 3 call write$list(ch);
|
||||
|
||||
/* disk file */
|
||||
187 3 do;
|
||||
188 4 i=x.bufptr;
|
||||
189 4 if i=length(x.buffer) then$do
|
||||
191 5 CALL FLUSHBUFFER (PTR);
|
||||
192 5 i=0;
|
||||
193 5 end$if;
|
||||
194 4 x.buffer(i)=ch;
|
||||
195 4 x.bufptr=i+1;
|
||||
196 4 end;
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 5
|
||||
|
||||
|
||||
197 3 end$case;
|
||||
198 2 end outbyte;
|
||||
|
||||
199 1 open$input: proc (ptr);
|
||||
200 2 dcl ptr addr,
|
||||
x based ptr file$i$structure;
|
||||
|
||||
201 2 x.bufptr=length(x.buffer);
|
||||
202 2 call disk$select(x.disk);
|
||||
203 2 IF LOW (VERSION) >= 30H THEN$DO
|
||||
205 3 IF OPEN$RO$FILE (.X.FCBBLOCK) <> 0FFH THEN RETURN;
|
||||
ELSE$DO
|
||||
209 3 IF OPEN$FILE (.X.FCBBLOCK) <> 0FFH THEN RETURN;
|
||||
END$IF;
|
||||
212 2 CALL FILEABORT (.X, .OPENERRTEXT);
|
||||
213 2 end open$input;
|
||||
|
||||
214 1 open$output: proc(ptr);
|
||||
215 2 dcl ptr addr,
|
||||
x based ptr file$o$structure;
|
||||
|
||||
216 2 if devicetype(x.disk)=disktype then$do
|
||||
218 3 x.bufptr=0;
|
||||
219 3 call disk$select(x.disk);
|
||||
220 3 CALL delete$file(.x.fcbblock);
|
||||
221 3 if create$file(.x.fcbblock) = 0ffh then
|
||||
222 3 CALL FILEABORT (.X, .MAKEERRTEXT);
|
||||
end$if;
|
||||
224 2 end open$output;
|
||||
|
||||
225 1 outputclose: proc(ptr);
|
||||
226 2 dcl ptr addr,
|
||||
x based ptr file$o$structure;
|
||||
|
||||
227 2 if devicetype(x.disk)=disktype then$do
|
||||
229 3 call outbyte(end$of$file,.x);
|
||||
230 3 CALL FLUSHBUFFER (PTR);
|
||||
231 3 IF CLOSE$FILE (.X.FCBBLOCK) = 0FFH THEN
|
||||
232 3 CALL FILEABORT (.X, .CLOSEERRTEXT);
|
||||
end$if;
|
||||
234 2 end outputclose;
|
||||
|
||||
235 1 INPUT$CLOSE: PROCEDURE (PTR);
|
||||
236 2 DECLARE PTR ADDRESS, X BASED PTR FILE$I$STRUCTURE;
|
||||
237 2 CALL DISK$SELECT (X.DISK);
|
||||
238 2 CALL SET$DMA$ADDRESS (.X.BUFFER);
|
||||
239 2 IF CLOSE$FILE (.X.FCBBLOCK) THEN;
|
||||
241 2 END INPUT$CLOSE;
|
||||
|
||||
242 1 outhexbyte: proc(ch) public;
|
||||
243 2 dcl ch byte;
|
||||
244 2 call outbyte(ch,.hex$file);
|
||||
245 2 end outhexbyte;
|
||||
|
||||
246 1 outprintbyte: proc(ch) public;
|
||||
247 2 dcl ch byte;
|
||||
248 2 if printfile.disk=console then$do
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 6
|
||||
|
||||
|
||||
250 3 call write$console(ch);
|
||||
251 3 else$do
|
||||
253 3 if error$printed then call write$console(ch);
|
||||
255 3 call outbyte(ch,.printfile);
|
||||
256 3 end$if;
|
||||
257 2 end outprintbyte;
|
||||
|
||||
258 1 outsymbolbyte: proc(ch) public;
|
||||
259 2 dcl ch byte;
|
||||
260 2 call outbyte(ch,.symbolfile);
|
||||
261 2 end outsymbolbyte;
|
||||
|
||||
262 1 insourcebyte: proc byte public;
|
||||
263 2 return inbyte(.sourcefile);
|
||||
264 2 end insourcebyte;
|
||||
|
||||
265 1 inincludebyte: proc byte public;
|
||||
266 2 return inbyte(.includefile);
|
||||
267 2 end inincludebyte;
|
||||
|
||||
268 1 opensource: proc public;
|
||||
269 2 CALL open$input(.sourcefile);
|
||||
270 2 end opensource;
|
||||
|
||||
271 1 openinclude: proc public;
|
||||
272 2 CALL open$input(.includefile);
|
||||
273 2 end openinclude;
|
||||
|
||||
274 1 openhex: proc public;
|
||||
275 2 CALL open$output(.hexfile);
|
||||
276 2 end openhex;
|
||||
|
||||
277 1 openprint: proc public;
|
||||
278 2 CALL open$output(.printfile);
|
||||
279 2 end openprint;
|
||||
|
||||
280 1 opensymbol: proc public;
|
||||
281 2 CALL open$output(.symbolfile);
|
||||
282 2 end opensymbol;
|
||||
|
||||
283 1 close$source: proc public;
|
||||
284 2 call input$close (.source$file);
|
||||
285 2 end close$source;
|
||||
|
||||
286 1 rewindsource: proc public;
|
||||
287 2 sourcefile.fcbblock(nr)=0;
|
||||
288 2 sourcefile.bufptr=length(sourcefile.buffer);
|
||||
289 2 if sourcefile.fcbblock(ex) <> 0 then$do
|
||||
291 3 sourcefile.fcbblock(ex)=0;
|
||||
292 3 sourcefile.fcbblock(s2)=0;
|
||||
293 3 CALL opensource;
|
||||
294 3 end$if;
|
||||
295 2 end rewindsource;
|
||||
|
||||
296 1 close$include: proc public;
|
||||
297 2 call input$close (.include$file);
|
||||
298 2 end close$include;
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 7
|
||||
|
||||
|
||||
|
||||
299 1 closehex: proc public;
|
||||
300 2 call outputclose(.hexfile);
|
||||
301 2 end closehex;
|
||||
|
||||
302 1 closeprint: proc public;
|
||||
303 2 call outputclose(.printfile);
|
||||
304 2 end closeprint;
|
||||
|
||||
305 1 closesymbol: proc public;
|
||||
306 2 call outputclose(.symbolfile);
|
||||
307 2 end closesymbol;
|
||||
|
||||
308 1 i$file$setup: proc(dev,filnam,filtyp) public;
|
||||
309 2 dcl dev byte,(filnam,filtyp) addr;
|
||||
310 2 call clearcontrol(.includefile,filtyp);
|
||||
311 2 includefile.disk=dev;
|
||||
312 2 call copy(8,filnam,.includefile.fcbblock(fn));
|
||||
313 2 end i$file$setup;
|
||||
|
||||
314 1 filesetup: proc byte public;
|
||||
315 2 dcl
|
||||
|
||||
ch byte, /* pick up character */
|
||||
i byte, /* counter */
|
||||
noleft byte, /* no of characters left in tbuff */
|
||||
bpt byte, /* index of tbuff */
|
||||
exitvalue byte, /* exitvalue of subroutine */
|
||||
flag byte; /* program logic flag */
|
||||
|
||||
316 2 nextch: proc byte;
|
||||
317 3 if noleft > 0 then$do
|
||||
319 4 ch=tbuff(bpt);
|
||||
320 4 noleft=noleft-1;
|
||||
321 4 bpt=bpt+1;
|
||||
322 4 else$do
|
||||
324 4 ch=cr;
|
||||
325 4 end$if;
|
||||
326 3 return ch;
|
||||
327 3 end nextch;
|
||||
|
||||
328 2 getdsk: procedure (p);
|
||||
329 3 declare p address, dsk based p byte;
|
||||
330 3 ch=upper(nextch); /* test selected disk drive */
|
||||
331 3 if letter(ch) then$do
|
||||
333 4 dsk=ch-'A';
|
||||
334 4 if dsk > validdisk then
|
||||
335 4 if dsk < console then
|
||||
336 4 exitvalue = false; /* invalid drive */
|
||||
else$do
|
||||
339 4 exitvalue=false;
|
||||
340 4 noleft=0;
|
||||
341 4 end$if;
|
||||
342 3 end getdsk;
|
||||
|
||||
343 2 exitvalue=true;
|
||||
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 8
|
||||
|
||||
|
||||
/* save current disk */
|
||||
344 2 default$drive,diskunit=interrogate$disk;
|
||||
/* enter user selected disk */
|
||||
345 2 if fcb(dr) <> 0 then$do
|
||||
347 3 call selectdisk(diskunit:=fcb(dr)-1);
|
||||
348 3 end$if;
|
||||
|
||||
/* clear control blocks */
|
||||
349 2 call clearcontrol(.sourcefile,.asmdefault);
|
||||
350 2 call clearcontrol(.hexfile,.hexdefault);
|
||||
351 2 call clearcontrol(.printfile,.lstdefault);
|
||||
352 2 call clearcontrol(.symbolfile,.symdefault);
|
||||
353 2 call copy(8,.fcb(fn),.sourcefile.fcbblock(fn));
|
||||
354 2 call copy(8,.fcb(fn),.hexfile.fcbblock(fn));
|
||||
355 2 call copy(8,.fcb(fn),.printfile.fcbblock(fn));
|
||||
356 2 call copy(8,.fcb(fn),.symbolfile.fcbblock(fn));
|
||||
|
||||
357 2 if FCB (FT) <> SPACE then$do /* pick up specified source file type */
|
||||
359 3 call copy(3,.fcb(ft),.sourcefile.fcbblock(ft));
|
||||
360 3 end$if;
|
||||
|
||||
/* Move source file name to SOURCENAME */
|
||||
|
||||
361 2 CALL FILL (SPACE, LENGTH (SOURCENAME), .SOURCENAME);
|
||||
362 2 i=0;
|
||||
363 2 do while i<8 and (sourcename(i):=sourcefile.fcbblock(fn+i)) <> space;
|
||||
364 3 i=i+1;
|
||||
365 3 end$while;
|
||||
366 2 sourcename(i)='.';
|
||||
367 2 i=i+1;
|
||||
368 2 call copy(3,.sourcefile.fcbblock(ft),.sourcename(i));
|
||||
|
||||
/* Test if file parameters */
|
||||
|
||||
369 2 noleft=tbuff(0);
|
||||
370 2 bpt=1;
|
||||
371 2 FLAG = FALSE;
|
||||
372 2 IF FCB16 (1) <> SPACE THEN$DO
|
||||
374 3 IF FCB16 (1) <> DOLLAR THEN$DO
|
||||
376 4 EXITVALUE = FALSE;
|
||||
377 4 ELSE$DO
|
||||
379 4 DO WHILE (NOLEFT > 0) AND (NEXTCH <> DOLLAR);
|
||||
380 5 END$WHILE;
|
||||
381 4 FLAG = TRUE;
|
||||
382 4 END$IF;
|
||||
383 3 END$IF;
|
||||
|
||||
384 2 if flag then$do
|
||||
|
||||
/* file parameters present - pick them up */
|
||||
|
||||
386 3 do while noleft > 0;
|
||||
387 4 if (ch:=upper(nextch)) <> space then$do
|
||||
|
||||
/* A-parameter */
|
||||
389 5 IF CH = 'A' THEN call getdsk(.sourcefile.disk);
|
||||
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 9
|
||||
|
||||
|
||||
/* H-parameter */
|
||||
391 5 ELSE IF CH = 'H' THEN call getdsk(.hexfile.disk);
|
||||
|
||||
/* P-parameter */
|
||||
393 5 ELSE IF CH = 'P' THEN call getdsk(.printfile.disk);
|
||||
|
||||
/* S-parameter */
|
||||
395 5 ELSE IF CH = 'S' THEN call getdsk(.symbolfile.disk);
|
||||
|
||||
/* F-parameter */
|
||||
397 5 ELSE IF CH = 'F' THEN$DO
|
||||
399 6 if (ch:=upper(nextch)) = 'I' then$do
|
||||
401 7 intel$hex$on=true;
|
||||
402 7 else$do
|
||||
404 7 if ch= 'D' then$do
|
||||
406 8 intel$hex$on=false;
|
||||
407 8 else$do
|
||||
409 8 exitvalue=false;
|
||||
410 8 noleft=0;
|
||||
411 8 endif;
|
||||
412 7 endif;
|
||||
413 6 END$IF;
|
||||
|
||||
/* error,no legal parameter */
|
||||
ELSE
|
||||
414 5 DO;
|
||||
415 6 exitvalue=false;
|
||||
416 6 noleft=0;
|
||||
417 6 END$DO;
|
||||
|
||||
418 5 end$if;
|
||||
end$while;
|
||||
420 3 end$if;
|
||||
|
||||
421 2 printdevice=printfile.disk; /* set global printdevice flag */
|
||||
422 2 SYMBOLDEVICE = SYMBOLFILE.DISK;
|
||||
423 2 INCLUDE$DEFAULT = SOURCEFILE.DISK;
|
||||
|
||||
/* input must be from a disk file */
|
||||
|
||||
424 2 if devicetype(sourcefile.disk) <> disktype then$do
|
||||
426 3 exitvalue=false;
|
||||
427 3 end$if;
|
||||
|
||||
428 2 return exitvalue;
|
||||
|
||||
429 2 end filesetup;
|
||||
|
||||
430 1 end file;
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 10
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
106 0000H 4 ABSADDR. . . . . . BYTE ARRAY(4) EXTERNAL(87)
|
||||
106 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(91)
|
||||
106 0000H 1 ACCLENSAVE . . . . BYTE EXTERNAL(94)
|
||||
106 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(92)
|
||||
106 0000H 80 ACCUMSAVE. . . . . BYTE ARRAY(80) EXTERNAL(93)
|
||||
2 ADDR . . . . . . . LITERALLY 61 64 67 70 76 94 97
|
||||
100 103 106 109 111 117 140 170 181 200
|
||||
215 226 236 309
|
||||
84 0000H ALPHANUMERIC . . . PROCEDURE BYTE EXTERNAL(31) STACK=0000H
|
||||
87 0000H ASCIICHAR. . . . . PROCEDURE BYTE EXTERNAL(32) STACK=0000H
|
||||
105 0000H 1 ASM86TEXT. . . . . BYTE ARRAY(1) EXTERNAL(44)
|
||||
109 0000H 3 ASMDEFAULT . . . . BYTE ARRAY(3) DATA 349
|
||||
106 0008H 1 BASEINDEX. . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
106 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
|
||||
3 BASEREGBIT . . . . LITERALLY
|
||||
3 BASEREGCOUNT . . . LITERALLY
|
||||
315 0EBFH 1 BPT. . . . . . . . BYTE 319 321 370
|
||||
3 BREGBIT. . . . . . LITERALLY
|
||||
3 BREGCOUNT. . . . . LITERALLY
|
||||
170 0024H 512 BUFFER . . . . . . BYTE ARRAY(512) MEMBER(X) 174
|
||||
236 0024H 1024 BUFFER . . . . . . BYTE ARRAY(1024) MEMBER(X) 238
|
||||
109 0024H 512 BUFFER . . . . . . BYTE ARRAY(512) MEMBER(SYMBOLFILE)
|
||||
226 0024H 512 BUFFER . . . . . . BYTE ARRAY(512) MEMBER(X)
|
||||
140 0024H 1024 BUFFER . . . . . . BYTE ARRAY(1024) MEMBER(X) 142 146 147
|
||||
152 153 165
|
||||
109 0024H 512 BUFFER . . . . . . BYTE ARRAY(512) MEMBER(PRINTFILE)
|
||||
200 0024H 1024 BUFFER . . . . . . BYTE ARRAY(1024) MEMBER(X) 201
|
||||
215 0024H 512 BUFFER . . . . . . BYTE ARRAY(512) MEMBER(X)
|
||||
109 0024H 1024 BUFFER . . . . . . BYTE ARRAY(1024) MEMBER(INCLUDEFILE)
|
||||
117 0024H 512 BUFFER . . . . . . BYTE ARRAY(512) MEMBER(X)
|
||||
109 0024H 1024 BUFFER . . . . . . BYTE ARRAY(1024) MEMBER(SOURCEFILE) 288
|
||||
109 0024H 512 BUFFER . . . . . . BYTE ARRAY(512) MEMBER(HEXFILE)
|
||||
181 0024H 512 BUFFER . . . . . . BYTE ARRAY(512) MEMBER(X) 189 194
|
||||
109 0022H 2 BUFPTR . . . . . . WORD MEMBER(INCLUDEFILE)
|
||||
109 0022H 2 BUFPTR . . . . . . WORD MEMBER(PRINTFILE)
|
||||
226 0022H 2 BUFPTR . . . . . . WORD MEMBER(X)
|
||||
140 0022H 2 BUFPTR . . . . . . WORD MEMBER(X) 141 166
|
||||
170 0022H 2 BUFPTR . . . . . . WORD MEMBER(X) 173
|
||||
109 0022H 2 BUFPTR . . . . . . WORD MEMBER(HEXFILE)
|
||||
215 0022H 2 BUFPTR . . . . . . WORD MEMBER(X) 218
|
||||
109 0022H 2 BUFPTR . . . . . . WORD MEMBER(SYMBOLFILE)
|
||||
117 0022H 2 BUFPTR . . . . . . WORD MEMBER(X)
|
||||
181 0022H 2 BUFPTR . . . . . . WORD MEMBER(X) 188 195
|
||||
109 0022H 2 BUFPTR . . . . . . WORD MEMBER(SOURCEFILE) 288
|
||||
236 0022H 2 BUFPTR . . . . . . WORD MEMBER(X)
|
||||
200 0022H 2 BUFPTR . . . . . . WORD MEMBER(X) 201
|
||||
81 0000H 1 CH . . . . . . . . BYTE PARAMETER 82
|
||||
315 0EBCH 1 CH . . . . . . . . BYTE 319 324 326 330 331 333 387 389
|
||||
391 393 395 397 399 404
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 11
|
||||
|
||||
|
||||
75 0000H 1 CH . . . . . . . . BYTE PARAMETER 76
|
||||
246 0004H 1 CH . . . . . . . . BYTE PARAMETER AUTOMATIC 247 250 254 255
|
||||
180 0006H 1 CH . . . . . . . . BYTE PARAMETER AUTOMATIC 181 185 186 194
|
||||
90 0000H 1 CH . . . . . . . . BYTE PARAMETER 91
|
||||
78 0000H 1 CH . . . . . . . . BYTE PARAMETER 79
|
||||
242 0004H 1 CH . . . . . . . . BYTE PARAMETER AUTOMATIC 243 244
|
||||
140 0EBBH 1 CH . . . . . . . . BYTE 148 150 165 167
|
||||
84 0000H 1 CH . . . . . . . . BYTE PARAMETER 85
|
||||
121 0004H 1 CH . . . . . . . . BYTE PARAMETER AUTOMATIC 122 123 125 127
|
||||
258 0004H 1 CH . . . . . . . . BYTE PARAMETER AUTOMATIC 259 260
|
||||
87 0000H 1 CH . . . . . . . . BYTE PARAMETER 88
|
||||
19 0000H 1 CHAR . . . . . . . BYTE PARAMETER 20
|
||||
22 0000H 1 CHAR . . . . . . . BYTE PARAMETER 23
|
||||
106 0000H 2 CIP. . . . . . . . WORD EXTERNAL(56)
|
||||
116 0031H 28 CLEARCONTROL . . . PROCEDURE STACK=0016H 310 349 350 351
|
||||
352
|
||||
110 0000H 49 CLEARFCB . . . . . PROCEDURE STACK=000EH 118
|
||||
105 0000H 1 CLOSEERRTEXT . . . BYTE ARRAY(1) EXTERNAL(50) 232
|
||||
38 0000H CLOSEFILE. . . . . PROCEDURE BYTE EXTERNAL(15) STACK=0000H 231
|
||||
239
|
||||
299 0399H 12 CLOSEHEX . . . . . PROCEDURE PUBLIC STACK=0020H
|
||||
296 038DH 12 CLOSEINCLUDE . . . PROCEDURE PUBLIC STACK=0012H
|
||||
302 03A5H 12 CLOSEPRINT . . . . PROCEDURE PUBLIC STACK=0020H
|
||||
283 0361H 12 CLOSESOURCE. . . . PROCEDURE PUBLIC STACK=0012H
|
||||
305 03B1H 12 CLOSESYMBOL. . . . PROCEDURE PUBLIC STACK=0020H
|
||||
106 0000H 1 CODEMACROFLAG. . . BYTE EXTERNAL(113)
|
||||
3 CODEMACROHEAD. . . LITERALLY
|
||||
106 0000H 2 CODEMACROPTR . . . WORD EXTERNAL(108)
|
||||
4 CONSOLE. . . . . . LITERALLY 125 248 335
|
||||
109 CONSOLETYPE. . . . LITERALLY 126
|
||||
25 0000H CONSTAT. . . . . . PROCEDURE BYTE EXTERNAL(10) STACK=0000H
|
||||
66 0000H COPY . . . . . . . PROCEDURE EXTERNAL(25) STACK=0000H 114 312
|
||||
353 354 355 356 359 368
|
||||
2 CR . . . . . . . . LITERALLY 324
|
||||
50 0000H CREATEFILE . . . . PROCEDURE BYTE EXTERNAL(19) STACK=0000H 221
|
||||
58 0000H CRLF . . . . . . . PROCEDURE EXTERNAL(22) STACK=0000H
|
||||
106 0000H 2 CSCIP. . . . . . . WORD EXTERNAL(61)
|
||||
106 0000H 1 CSEGSPEC . . . . . BYTE EXTERNAL(59)
|
||||
106 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(57)
|
||||
106 0000H 2 CSEGVALUE. . . . . WORD EXTERNAL(58)
|
||||
106 0000H 1 CSPEC. . . . . . . BYTE EXTERNAL(68)
|
||||
106 0000H 2 CURCSEG. . . . . . WORD EXTERNAL(64)
|
||||
106 0000H 2 CURDSEG. . . . . . WORD EXTERNAL(65)
|
||||
106 0000H 2 CURESEG. . . . . . WORD EXTERNAL(67)
|
||||
106 0000H 9 CURRENTSYMBOL. . . STRUCTURE EXTERNAL(104)
|
||||
106 0000H 2 CURSSEG. . . . . . WORD EXTERNAL(66)
|
||||
96 0000H 2 D. . . . . . . . . WORD PARAMETER 97
|
||||
93 0000H 2 D. . . . . . . . . WORD PARAMETER 94
|
||||
102 0000H 2 D. . . . . . . . . WORD PARAMETER 103
|
||||
66 0000H 2 D. . . . . . . . . WORD PARAMETER 67
|
||||
99 0000H 2 D. . . . . . . . . WORD PARAMETER 100
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
102 0000H DECOUT . . . . . . PROCEDURE EXTERNAL(37) STACK=0000H
|
||||
106 0000H 1 DEFAULTDRIVE . . . BYTE EXTERNAL(111) 344
|
||||
110 0004H 2 DEFAULTPT. . . . . WORD PARAMETER AUTOMATIC 111 114
|
||||
116 0004H 2 DEFAULTPTR . . . . WORD PARAMETER AUTOMATIC 117 118
|
||||
41 0000H DELETEFILE . . . . PROCEDURE EXTERNAL(16) STACK=0000H 220
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 12
|
||||
|
||||
|
||||
106 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN)
|
||||
111 0000H 1 DEST . . . . . . . BYTE BASED(FCBPT) ARRAY(1) 114
|
||||
308 0008H 1 DEV. . . . . . . . BYTE PARAMETER AUTOMATIC 309 311
|
||||
121 004DH 39 DEVICETYPE . . . . PROCEDURE BYTE STACK=0004H 182 216 227
|
||||
424
|
||||
78 0000H DIGIT. . . . . . . PROCEDURE BYTE EXTERNAL(29) STACK=0000H
|
||||
109 0000H 1 DISK . . . . . . . BYTE MEMBER(PRINTFILE) 248 394 421
|
||||
140 0000H 1 DISK . . . . . . . BYTE MEMBER(X) 145
|
||||
215 0000H 1 DISK . . . . . . . BYTE MEMBER(X) 216 219
|
||||
109 0000H 1 DISK . . . . . . . BYTE MEMBER(HEXFILE) 392
|
||||
109 0000H 1 DISK . . . . . . . BYTE MEMBER(SOURCEFILE) 390 423 424
|
||||
236 0000H 1 DISK . . . . . . . BYTE MEMBER(X) 237
|
||||
200 0000H 1 DISK . . . . . . . BYTE MEMBER(X) 202
|
||||
109 0000H 1 DISK . . . . . . . BYTE MEMBER(INCLUDEFILE) 311
|
||||
181 0000H 1 DISK . . . . . . . BYTE MEMBER(X) 182
|
||||
170 0000H 1 DISK . . . . . . . BYTE MEMBER(X) 171
|
||||
117 0000H 1 DISK . . . . . . . BYTE MEMBER(X) 119
|
||||
226 0000H 1 DISK . . . . . . . BYTE MEMBER(X) 227
|
||||
109 0000H 1 DISK . . . . . . . BYTE MEMBER(SYMBOLFILE) 396 422
|
||||
131 0004H 1 DISK . . . . . . . BYTE PARAMETER AUTOMATIC 132 133 135
|
||||
29 0000H 1 DISKNUMBER . . . . BYTE PARAMETER 30
|
||||
105 0000H 1 DISKREADERRTEXT. . BYTE ARRAY(1) EXTERNAL(47) 156
|
||||
131 0074H 23 DISKSELECT . . . . PROCEDURE STACK=0008H 145 171 202 219
|
||||
237
|
||||
109 DISKTYPE . . . . . LITERALLY 129 216 227 424
|
||||
109 0EBAH 1 DISKUNIT . . . . . BYTE 119 133 135 136 344 347
|
||||
105 0000H 1 DISKWRITEERRTXT. . BYTE ARRAY(1) EXTERNAL(48) 176
|
||||
55 0000H 2 DMAADDRESS . . . . WORD PARAMETER 56
|
||||
109 DOLLAR . . . . . . LITERALLY 374 379
|
||||
109 DR . . . . . . . . LITERALLY 345 347
|
||||
106 0000H 2 DSCIP. . . . . . . WORD EXTERNAL(63)
|
||||
329 0000H 1 DSK. . . . . . . . BYTE BASED(P) 333 334 335
|
||||
106 0000H 1 DSPEC. . . . . . . BYTE EXTERNAL(69)
|
||||
2 ELSEDO . . . . . . LITERALLY 206 336
|
||||
14 0000H 2 ENDBUF . . . . . . WORD EXTERNAL(5)
|
||||
2 ENDCASE. . . . . . LITERALLY
|
||||
2 ENDDO. . . . . . . LITERALLY
|
||||
2 ENDFOREVER . . . . LITERALLY
|
||||
2 ENDIF. . . . . . . LITERALLY 210 222 232
|
||||
2 ENDMODULE. . . . . LITERALLY
|
||||
2 ENDOFFILE. . . . . LITERALLY 152 229
|
||||
2 ENDPROC. . . . . . LITERALLY
|
||||
105 0000H 1 ENDTEXT. . . . . . BYTE ARRAY(1) EXTERNAL(42)
|
||||
2 ENDWHILE . . . . . LITERALLY 418
|
||||
106 0000H 1 EOFSET . . . . . . BYTE EXTERNAL(95)
|
||||
93 0000H EQUAL. . . . . . . PROCEDURE BYTE EXTERNAL(34) STACK=0000H
|
||||
106 0000H 1 ERRORPRINTED . . . BYTE EXTERNAL(98) 253
|
||||
106 0000H 2 ERRORS . . . . . . WORD EXTERNAL(88)
|
||||
106 0000H 2 ESCIP. . . . . . . WORD EXTERNAL(60)
|
||||
106 0000H 1 ESPEC. . . . . . . BYTE EXTERNAL(71)
|
||||
109 EX . . . . . . . . LITERALLY 289 291
|
||||
315 0EC0H 1 EXITVALUE. . . . . BYTE 336 339 343 376 409 415 426 428
|
||||
2 FALSE. . . . . . . LITERALLY 336 339 371 376 406 409 415
|
||||
426
|
||||
11 0000H 1 FCB. . . . . . . . BYTE ARRAY(1) EXTERNAL(2) 345 347 353 354
|
||||
355 356 357 359
|
||||
12 0000H 1 FCB16. . . . . . . BYTE ARRAY(1) EXTERNAL(3) 372 374
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 13
|
||||
|
||||
|
||||
38 0000H 2 FCBADDRESS . . . . WORD PARAMETER 39
|
||||
50 0000H 2 FCBADDRESS . . . . WORD PARAMETER 51
|
||||
47 0000H 2 FCBADDRESS . . . . WORD PARAMETER 48
|
||||
44 0000H 2 FCBADDRESS . . . . WORD PARAMETER 45
|
||||
41 0000H 2 FCBADDRESS . . . . WORD PARAMETER 42
|
||||
35 0000H 2 FCBADDRESS . . . . WORD PARAMETER 36
|
||||
32 0000H 2 FCBADDRESS . . . . WORD PARAMETER 33
|
||||
72 0000H 2 FCBADR . . . . . . WORD PARAMETER 73
|
||||
236 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(X) 239
|
||||
215 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(X) 220 221
|
||||
200 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(X) 205 209
|
||||
181 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(X)
|
||||
170 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(X) 175
|
||||
140 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(X) 148
|
||||
117 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(X) 118
|
||||
109 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(SYMBOLFILE) 356
|
||||
109 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(PRINTFILE) 355
|
||||
109 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(HEXFILE) 354
|
||||
109 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(INCLUDEFILE) 312
|
||||
109 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(SOURCEFILE) 287 289
|
||||
291 292 353 359 363 368
|
||||
226 0001H 33 FCBBLOCK . . . . . BYTE ARRAY(33) MEMBER(X) 231
|
||||
110 0006H 2 FCBPT. . . . . . . WORD PARAMETER AUTOMATIC 111 112 113 114
|
||||
1 0000H FILE . . . . . . . PROCEDURE STACK=0000H
|
||||
72 0000H FILEABORT. . . . . PROCEDURE EXTERNAL(27) STACK=0000H 156 176
|
||||
212 222 232
|
||||
3 FILEISTRUCTURE . . LITERALLY 109 140 200 236
|
||||
3 FILEOSTRUCTURE . . LITERALLY 109 117 170 181 215 226
|
||||
314 03E1H 512 FILESETUP. . . . . PROCEDURE BYTE PUBLIC STACK=001AH
|
||||
75 0000H FILL . . . . . . . PROCEDURE EXTERNAL(28) STACK=0000H 112 113
|
||||
361
|
||||
308 0006H 2 FILNAM . . . . . . WORD PARAMETER AUTOMATIC 309 312
|
||||
308 0004H 2 FILTYP . . . . . . WORD PARAMETER AUTOMATIC 309 310
|
||||
106 0000H 2 FIRSTMACROPTR. . . WORD EXTERNAL(99)
|
||||
315 0EC1H 1 FLAG . . . . . . . BYTE 371 381 384
|
||||
169 011DH 76 FLUSHBUFFER. . . . PROCEDURE STACK=000EH 191 230
|
||||
109 FN . . . . . . . . LITERALLY 113 312 353 354 355 356 363
|
||||
2 FOREVER. . . . . . LITERALLY
|
||||
2 FORMFEED . . . . . LITERALLY
|
||||
109 FT . . . . . . . . LITERALLY 114 357 359 368
|
||||
106 0000H 1 FULLSYMBTAB. . . . BYTE EXTERNAL(101)
|
||||
8 0000H 1 FUNC . . . . . . . BYTE PARAMETER 9
|
||||
5 0000H 1 FUNC . . . . . . . BYTE PARAMETER 6
|
||||
328 060CH 68 GETDSK . . . . . . PROCEDURE STACK=0008H 390 392 394 396
|
||||
107 0000H GLOBALINIT . . . . PROCEDURE EXTERNAL(114) STACK=0000H
|
||||
106 0000H 5 HELP . . . . . . . BYTE ARRAY(5) EXTERNAL(109)
|
||||
96 0000H HEX1OUT. . . . . . PROCEDURE EXTERNAL(35) STACK=0000H
|
||||
99 0000H HEX2OUT. . . . . . PROCEDURE EXTERNAL(36) STACK=0000H
|
||||
109 0003H 3 HEXDEFAULT . . . . BYTE ARRAY(3) DATA 350
|
||||
109 0848H 548 HEXFILE. . . . . . STRUCTURE 244 275 300 350 354 392
|
||||
315 0EBDH 1 I. . . . . . . . . BYTE 362 363 364 366 367 368
|
||||
181 0EB8H 2 I. . . . . . . . . WORD 188 189 192 194 195
|
||||
170 0EB6H 2 I. . . . . . . . . WORD 172 173 174 177
|
||||
140 0EB4H 2 I. . . . . . . . . WORD 141 142 144 146 147 152 153 160
|
||||
163 165 166
|
||||
106 0000H 1 I. . . . . . . . . BYTE EXTERNAL(110)
|
||||
308 03BDH 36 IFILESETUP . . . . PROCEDURE PUBLIC STACK=0020H
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 14
|
||||
|
||||
|
||||
106 0000H 1 IFLEVEL. . . . . . BYTE EXTERNAL(103)
|
||||
106 0000H 1 IFLIST . . . . . . BYTE EXTERNAL(74)
|
||||
139 008BH 146 INBYTE . . . . . . PROCEDURE BYTE STACK=000EH 263 266
|
||||
106 0000H 1 INCLUDEDEFAULT . . BYTE EXTERNAL(112) 423
|
||||
109 0424H 1060 INCLUDEFILE. . . . STRUCTURE 266 272 297 310 311 312
|
||||
106 0000H 1 INCLUDEON. . . . . BYTE EXTERNAL(102)
|
||||
3 INDEXREGBIT. . . . LITERALLY
|
||||
3 INDEXREGCOUNT. . . LITERALLY
|
||||
8 0000H 2 INFO . . . . . . . WORD PARAMETER 9
|
||||
5 0000H 2 INFO . . . . . . . WORD PARAMETER 6
|
||||
265 0319H 12 ININCLUDEBYTE. . . PROCEDURE BYTE PUBLIC STACK=0012H
|
||||
2 INIT . . . . . . . LITERALLY
|
||||
105 0000H 1 INITIALS . . . . . BYTE ARRAY(1) EXTERNAL(40)
|
||||
235 029BH 35 INPUTCLOSE . . . . PROCEDURE STACK=000EH 284 297
|
||||
262 030DH 12 INSOURCEBYTE . . . PROCEDURE BYTE PUBLIC STACK=0012H
|
||||
106 0000H 1 INTELHEXON . . . . BYTE EXTERNAL(96) 401 406
|
||||
53 0000H INTERROGATEDISK. . PROCEDURE BYTE EXTERNAL(20) STACK=0000H 344
|
||||
3 IREGBIT. . . . . . LITERALLY
|
||||
3 IREGCOUNT. . . . . LITERALLY
|
||||
LENGTH . . . . . . BUILTIN 142 146 153 189 201 288 361
|
||||
106 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
|
||||
106 0000H 2 LENGTH . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
81 0000H LETTER . . . . . . PROCEDURE BYTE EXTERNAL(30) STACK=0000H 331
|
||||
2 LF . . . . . . . . LITERALLY
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4 109
|
||||
LOW. . . . . . . . BUILTIN 203
|
||||
109 0006H 3 LSTDEFAULT . . . . BYTE ARRAY(3) DATA 351
|
||||
106 0000H 2 MACROPTR . . . . . WORD EXTERNAL(100)
|
||||
105 0000H 1 MAKEERRTEXT. . . . BYTE ARRAY(1) EXTERNAL(49) 222
|
||||
106 0000H 1 MAXCOL . . . . . . BYTE EXTERNAL(75)
|
||||
5 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(0) STACK=0000H
|
||||
8 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H
|
||||
96 0000H 1 N. . . . . . . . . BYTE PARAMETER 97
|
||||
102 0000H 2 N. . . . . . . . . WORD PARAMETER 103
|
||||
99 0000H 2 N. . . . . . . . . WORD PARAMETER 100
|
||||
93 0000H 1 N. . . . . . . . . BYTE PARAMETER 94
|
||||
75 0000H 1 N. . . . . . . . . BYTE PARAMETER 76
|
||||
66 0000H 1 N. . . . . . . . . BYTE PARAMETER 67
|
||||
63 0000H 2 N. . . . . . . . . WORD PARAMETER 64
|
||||
106 0000H 1 NEXTCH . . . . . . BYTE EXTERNAL(90)
|
||||
316 05E1H 43 NEXTCH . . . . . . PROCEDURE BYTE STACK=0002H 330 379 387
|
||||
399
|
||||
105 0000H 1 NO . . . . . . . . BYTE EXTERNAL(39)
|
||||
106 0000H 1 NOERROR. . . . . . BYTE EXTERNAL(97)
|
||||
315 0EBEH 1 NOLEFT . . . . . . BYTE 317 320 340 369 379 386 410 416
|
||||
106 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(106)
|
||||
3 NOOVERCOUNT. . . . LITERALLY
|
||||
3 NOOVERRIDEBIT. . . LITERALLY
|
||||
109 NR . . . . . . . . LITERALLY 287
|
||||
4 NULL . . . . . . . LITERALLY 123
|
||||
109 NULLTYPE . . . . . LITERALLY 124
|
||||
106 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
|
||||
106 0006H 2 OFFSET . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
105 0000H 1 OPENERRTEXT. . . . BYTE ARRAY(1) EXTERNAL(46) 212
|
||||
32 0000H OPENFILE . . . . . PROCEDURE BYTE EXTERNAL(13) STACK=0000H 209
|
||||
274 033DH 12 OPENHEX. . . . . . PROCEDURE PUBLIC STACK=0012H
|
||||
271 0331H 12 OPENINCLUDE. . . . PROCEDURE PUBLIC STACK=0012H
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 15
|
||||
|
||||
|
||||
199 01CCH 71 OPENINPUT. . . . . PROCEDURE STACK=000EH 269 272
|
||||
214 0213H 72 OPENOUTPUT . . . . PROCEDURE STACK=000EH 275 278 281
|
||||
277 0349H 12 OPENPRINT. . . . . PROCEDURE PUBLIC STACK=0012H
|
||||
35 0000H OPENROFILE . . . . PROCEDURE BYTE EXTERNAL(14) STACK=0000H 205
|
||||
268 0325H 12 OPENSOURCE . . . . PROCEDURE PUBLIC STACK=0012H 293
|
||||
280 0355H 12 OPENSYMBOL . . . . PROCEDURE PUBLIC STACK=0012H
|
||||
106 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(107)
|
||||
3 OPERANDSTRUC . . . LITERALLY 106
|
||||
180 0169H 99 OUTBYTE. . . . . . PROCEDURE STACK=0016H 229 244 255 260
|
||||
242 02BEH 17 OUTHEXBYTE . . . . PROCEDURE PUBLIC STACK=001CH
|
||||
246 02CFH 45 OUTPRINTBYTE . . . PROCEDURE PUBLIC STACK=001CH
|
||||
225 025BH 64 OUTPUTCLOSE. . . . PROCEDURE STACK=001CH 300 303 306
|
||||
258 02FCH 17 OUTSYMBOLBYTE. . . PROCEDURE PUBLIC STACK=001CH
|
||||
69 0000H OUTTEXT. . . . . . PROCEDURE EXTERNAL(26) STACK=0000H
|
||||
328 0004H 2 P. . . . . . . . . WORD PARAMETER AUTOMATIC 329 333 334 335
|
||||
106 0000H 1 PAGESIZE . . . . . BYTE EXTERNAL(81)
|
||||
105 0000H 1 PAGETEXT . . . . . BYTE ARRAY(1) EXTERNAL(41)
|
||||
105 0000H 1 PARERRTEXT . . . . BYTE ARRAY(1) EXTERNAL(45)
|
||||
106 0000H 1 PASS . . . . . . . BYTE EXTERNAL(55)
|
||||
105 0000H 1 PASS0TEXT. . . . . BYTE ARRAY(1) EXTERNAL(53)
|
||||
105 0000H 1 PASS1TEXT. . . . . BYTE ARRAY(1) EXTERNAL(54)
|
||||
116 0006H 2 POINT. . . . . . . WORD PARAMETER AUTOMATIC 117 118 119
|
||||
106 0000H 240 PREFIX . . . . . . BYTE ARRAY(240) EXTERNAL(85)
|
||||
106 0000H 1 PREFIXPTR. . . . . BYTE EXTERNAL(86)
|
||||
106 0000H 1 PRINTDEVICE. . . . BYTE EXTERNAL(78) 421
|
||||
4 PRINTER. . . . . . LITERALLY 127
|
||||
109 PRINTERTYPE. . . . LITERALLY 128
|
||||
109 0A6CH 548 PRINTFILE. . . . . STRUCTURE 248 255 278 303 351 355 394
|
||||
421
|
||||
106 0000H 1 PRINTON. . . . . . BYTE EXTERNAL(72)
|
||||
106 0000H 1 PRINTSWITCHOFF . . BYTE EXTERNAL(73)
|
||||
2 PROC . . . . . . . LITERALLY 60 63 84 87 96 99 102
|
||||
110 121 139 180 199 214 225 242 246 258
|
||||
262 265 268 271 274 277 280 283 286 296
|
||||
299 302 305 308 314 316
|
||||
75 0000H 2 PT . . . . . . . . WORD PARAMETER 76
|
||||
235 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 236 237 238 239
|
||||
225 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 226 227 229 230
|
||||
231 232
|
||||
214 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 215 216 218 219
|
||||
220 221 222
|
||||
199 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 200 201 202 205
|
||||
209 212
|
||||
180 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 181 182 188 191
|
||||
194 195
|
||||
169 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 170 171 173 174
|
||||
175 176
|
||||
139 0004H 2 PTR. . . . . . . . WORD PARAMETER AUTOMATIC 140 141 145 147
|
||||
148 152 156 165 166
|
||||
17 0000H READCONSOLE. . . . PROCEDURE BYTE EXTERNAL(7) STACK=0000H
|
||||
44 0000H READRECORD . . . . PROCEDURE BYTE EXTERNAL(17) STACK=0000H 148
|
||||
2 REENT. . . . . . . LITERALLY
|
||||
286 036DH 32 REWINDSOURCE . . . PROCEDURE PUBLIC STACK=0016H
|
||||
93 0000H 2 S. . . . . . . . . WORD PARAMETER 94
|
||||
66 0000H 2 S. . . . . . . . . WORD PARAMETER 67
|
||||
109 S2 . . . . . . . . LITERALLY 292
|
||||
106 0000H 12 SAVESOURCE . . . . BYTE ARRAY(12) EXTERNAL(77)
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 16
|
||||
|
||||
|
||||
3 SEGMBIT. . . . . . LITERALLY
|
||||
3 SEGMCOUNT. . . . . LITERALLY
|
||||
106 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
|
||||
106 0004H 2 SEGMENT. . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
3 SEGTYPEBIT . . . . LITERALLY
|
||||
3 SEGTYPECOUNT . . . LITERALLY
|
||||
29 0000H SELECTDISK . . . . PROCEDURE EXTERNAL(12) STACK=0000H 136 347
|
||||
55 0000H SETDMAADDRESS. . . PROCEDURE EXTERNAL(21) STACK=0000H 147 174
|
||||
238
|
||||
106 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
106 0003H 1 SFLAG. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
106 0000H 1 SIMFORM. . . . . . BYTE EXTERNAL(82)
|
||||
106 0000H 80 SOURCEBUF. . . . . BYTE ARRAY(80) EXTERNAL(83)
|
||||
109 0000H 1060 SOURCEFILE . . . . STRUCTURE 263 269 284 287 288 289 291
|
||||
292 349 353 359 363 368 390 423 424
|
||||
106 0000H 12 SOURCENAME . . . . BYTE ARRAY(12) EXTERNAL(76) 361 363 366
|
||||
368
|
||||
106 0000H 1 SOURCEPTR. . . . . BYTE EXTERNAL(84)
|
||||
2 SPACE. . . . . . . LITERALLY 357 361 363 372 387
|
||||
106 0000H 2 SSCIP. . . . . . . WORD EXTERNAL(62)
|
||||
106 0000H 1 SSPEC. . . . . . . BYTE EXTERNAL(70)
|
||||
2 STRUC. . . . . . . LITERALLY 106 109 117 140 170 181 200
|
||||
215 226 236
|
||||
106 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
106 0002H 1 STYPE. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
105 0000H 1 SYMBFULLERRTEXT. . BYTE ARRAY(1) EXTERNAL(51)
|
||||
106 0000H 1 SYMBOLDEVICE . . . BYTE EXTERNAL(79) 422
|
||||
109 0C90H 548 SYMBOLFILE . . . . STRUCTURE 260 281 306 352 356 396 422
|
||||
3 SYMBOLHEAD . . . . LITERALLY
|
||||
3 SYMBOLSTRUC. . . . LITERALLY 106
|
||||
106 0000H 2 SYMBTABADR . . . . WORD EXTERNAL(105)
|
||||
109 0009H 3 SYMDEFAULT . . . . BYTE ARRAY(3) DATA 352
|
||||
15 0000H SYSTEMRESET. . . . PROCEDURE EXTERNAL(6) STACK=0000H
|
||||
69 0000H 2 T. . . . . . . . . WORD PARAMETER 70
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
13 0000H 1 TBUFF. . . . . . . BYTE ARRAY(1) EXTERNAL(4) 319 369
|
||||
72 0000H 2 TEXTADR. . . . . . WORD PARAMETER 73
|
||||
2 THENDO . . . . . . LITERALLY 133 142 148 150 189 203 216
|
||||
227 248 289 317 331 345 357 372 374 384
|
||||
387 397 399 404 424
|
||||
106 0000H 30 TITLE. . . . . . . BYTE ARRAY(30) EXTERNAL(80)
|
||||
106 0000H 4 TOKEN. . . . . . . STRUCTURE EXTERNAL(89)
|
||||
2 TRUE . . . . . . . LITERALLY 343 381 401
|
||||
106 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN)
|
||||
3 TYPEBIT. . . . . . LITERALLY
|
||||
60 0000H TYPECALC . . . . . PROCEDURE BYTE EXTERNAL(23) STACK=0000H
|
||||
3 TYPECOUNT. . . . . LITERALLY
|
||||
90 0000H UPPER. . . . . . . PROCEDURE BYTE EXTERNAL(33) STACK=0000H 330
|
||||
387 399
|
||||
105 0000H 1 USBREAKTEXT. . . . BYTE ARRAY(1) EXTERNAL(52)
|
||||
105 0000H 1 USEFACTOR. . . . . BYTE ARRAY(1) EXTERNAL(43)
|
||||
60 0000H 2 VAL. . . . . . . . WORD PARAMETER 61
|
||||
4 VALIDDISK. . . . . LITERALLY 334
|
||||
106 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN)
|
||||
27 0000H VERSION. . . . . . PROCEDURE WORD EXTERNAL(11) STACK=0000H 203
|
||||
63 0000H WRDTEST. . . . . . PROCEDURE BYTE EXTERNAL(24) STACK=0000H
|
||||
19 0000H WRITECONSOLE . . . PROCEDURE EXTERNAL(8) STACK=0000H 185 250
|
||||
PL/M-86 COMPILER FILE AND I/O MODULE 10/5/81 PAGE 17
|
||||
|
||||
|
||||
254
|
||||
22 0000H WRITELIST. . . . . PROCEDURE EXTERNAL(9) STACK=0000H 186
|
||||
47 0000H WRITERECORD. . . . PROCEDURE BYTE EXTERNAL(18) STACK=0000H 175
|
||||
236 0000H 1060 X. . . . . . . . . STRUCTURE BASED(PTR) 237 238 239
|
||||
226 0000H 548 X. . . . . . . . . STRUCTURE BASED(PTR) 227 229 231 232
|
||||
215 0000H 548 X. . . . . . . . . STRUCTURE BASED(PTR) 216 218 219 220 221
|
||||
222
|
||||
200 0000H 1060 X. . . . . . . . . STRUCTURE BASED(PTR) 201 202 205 209 212
|
||||
181 0000H 548 X. . . . . . . . . STRUCTURE BASED(PTR) 182 188 189 194 195
|
||||
170 0000H 548 X. . . . . . . . . STRUCTURE BASED(PTR) 171 173 174 175 176
|
||||
140 0000H 1060 X. . . . . . . . . STRUCTURE BASED(PTR) 141 142 145 146 147
|
||||
148 152 153 156 165 166
|
||||
117 0000H 548 X. . . . . . . . . STRUCTURE BASED(POINT) 118 119
|
||||
105 0000H 1 YES. . . . . . . . BYTE EXTERNAL(38)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0650H 1616D
|
||||
CONSTANT AREA SIZE = 000CH 12D
|
||||
VARIABLE AREA SIZE = 0EC2H 3778D
|
||||
MAXIMUM STACK SIZE = 0020H 32D
|
||||
947 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,491 @@
|
||||
$title('FILE AND I/O MODULE')
|
||||
file:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 3/26/81 R. Silberstein
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 3/30/81 R. Silberstein
|
||||
modified 4/7/81 R. Silberstein
|
||||
modified 4/16/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
modified 9/14/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This is the modules to perform BYTE i/o to
|
||||
the following 5 logical devices:
|
||||
|
||||
source - file
|
||||
include - file
|
||||
hex - file
|
||||
symbol - file
|
||||
print - file
|
||||
|
||||
Each of the logical files may be assigned to the
|
||||
following physical devices :
|
||||
|
||||
null (not legal for source and include file)
|
||||
console
|
||||
printer (not legal for source and include file)
|
||||
disk
|
||||
|
||||
The module defines the following set
|
||||
of public subroutines:
|
||||
|
||||
INSOURCEBYTE - read 1 byte from source file
|
||||
ININCLUDEBYTE - read 1 byte from include file
|
||||
OUTHEXBYTE (ch) - write 1 byte to hex file
|
||||
OUTSYMBOLBYTE (ch) - write 1 byte to symbol file
|
||||
OUTPRINTBYTE (ch) - write 1 byte to print file
|
||||
|
||||
OPENSOURCE - open source file
|
||||
OPENINCLUDE - open include file
|
||||
OPENHEX - open hex file
|
||||
OPENSYMBOL - open symbol file
|
||||
OPENPRINT - open print file
|
||||
REWINDSOURCE - rewind source file
|
||||
|
||||
CLOSESOURCE - close source file
|
||||
CLOSEINCLUDE - close include file
|
||||
CLOSEHEX - close hex file
|
||||
CLOSESYMBOL - close symbol file
|
||||
CLOSEPRINT - close print file
|
||||
|
||||
In addition, 2 subroutines to set up the correct
|
||||
file names and routing to correct physical device
|
||||
are included. These are:
|
||||
|
||||
FILESETUP
|
||||
I$FILESETUP
|
||||
|
||||
The "filesetup" routine sets up the source, hex, symbol
|
||||
and print files by scanning the user command tail of the
|
||||
program activating line. The format of the command line
|
||||
is described in the program format section of the user's
|
||||
manual. The routine also initiates the global string array
|
||||
"SOURCENAME" with the source file name, this array to be
|
||||
used later by the printout module.
|
||||
|
||||
The "ifilesetup" sets up the format of the include file
|
||||
given by the INCLUDE command of the assembler.
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:struc.lit)
|
||||
$include (:f1:dev.lit)
|
||||
$include (:f1:io.ext)
|
||||
$include (:f1:subr1.ext)
|
||||
$include (:f1:subr2.ext)
|
||||
$INCLUDE (:F1:TEXT.EXT)
|
||||
$include (:f1:global.ext)
|
||||
|
||||
dcl
|
||||
diskunit byte,
|
||||
|
||||
nulltype lit '0', /* subroutine "devicetype" */
|
||||
consoletype lit '1',
|
||||
printertype lit '2',
|
||||
disktype lit '3',
|
||||
|
||||
dr lit '0', /* drive code in fcb block */
|
||||
fn lit '1', /* filename in fcb block */
|
||||
ft lit '9', /* filetype in fcb block */
|
||||
ex lit '12', /* file extension number */
|
||||
s2 lit '14',
|
||||
nr lit '32', /* file record number */
|
||||
dollar lit '''$''',
|
||||
|
||||
asmdefault(3) byte data ('A86'), /* different file types */
|
||||
hexdefault(3) byte data ('H86'),
|
||||
lstdefault(3) byte data ('LST'),
|
||||
symdefault(3) byte data ('SYM'),
|
||||
|
||||
sourcefile file$i$structure,
|
||||
includefile file$i$structure,
|
||||
hexfile file$o$structure,
|
||||
printfile file$o$structure,
|
||||
symbolfile file$o$structure;
|
||||
|
||||
clearfcb: proc(fcbpt,defaultpt);
|
||||
dcl
|
||||
(fcbpt,defaultpt) addr,
|
||||
dest based fcbpt (1) byte;
|
||||
CALL FILL (0, 33, FCBPT);
|
||||
CALL FILL (' ', 8, FCBPT+FN);
|
||||
call copy(3,defaultpt,.dest(ft));
|
||||
end clearfcb;
|
||||
|
||||
clearcontrol: procedure(point,defaultptr);
|
||||
dcl (point,defaultptr) addr,
|
||||
x based point file$o$structure;
|
||||
call clearfcb(.x.fcbblock,defaultptr);
|
||||
x.disk=diskunit;
|
||||
end clearcontrol;
|
||||
|
||||
devicetype: proc(ch) byte;
|
||||
dcl ch byte;
|
||||
if ch=null then return nulltype;
|
||||
if ch=console then return consoletype;
|
||||
if ch=printer then return printertype;
|
||||
return disktype;
|
||||
end devicetype;
|
||||
|
||||
disk$select: procedure(disk);
|
||||
dcl disk byte;
|
||||
if diskunit <> disk then$do
|
||||
diskunit=disk;
|
||||
call select$disk(diskunit);
|
||||
end$if;
|
||||
end disk$select;
|
||||
|
||||
inbyte: proc (ptr) byte;
|
||||
dcl ptr addr,
|
||||
x based ptr file$i$structure,
|
||||
ch byte,
|
||||
i addr;
|
||||
|
||||
i=x.bufptr;
|
||||
if i=length(x.buffer) then$do
|
||||
i=0;
|
||||
call disk$select(x.disk);
|
||||
do while i < length(x.buffer);
|
||||
call SET$DMA$ADDRESS (.x.buffer(i));
|
||||
IF (CH := READ$RECORD (.X.FCBBLOCK)) <> 0 THEN$DO
|
||||
IF CH = 1 THEN$DO
|
||||
X.BUFFER (I) = END$OF$FILE;
|
||||
I = LENGTH (X.BUFFER);
|
||||
ELSE$DO
|
||||
CALL FILEABORT (.X, .DISKREADERRTEXT);
|
||||
END$IF;
|
||||
else$do
|
||||
i=i+128;
|
||||
end$if;
|
||||
end$while;
|
||||
i=0;
|
||||
end$if;
|
||||
ch=x.buffer(i);
|
||||
x.bufptr=i+1;
|
||||
return ch;
|
||||
end inbyte;
|
||||
|
||||
FLUSHBUFFER: PROCEDURE (PTR);
|
||||
DECLARE (PTR, I) ADDRESS, X BASED PTR FILE$O$STRUCTURE;
|
||||
|
||||
call disk$select(x.disk);
|
||||
i=0;
|
||||
do while i < x.bufptr;
|
||||
call SET$DMA$ADDRESS (.x.buffer(i));
|
||||
IF WRITE$RECORD (.X.FCBBLOCK) > 0 THEN
|
||||
CALL FILEABORT (.X, .DISKWRITEERRTXT);
|
||||
i=i+128;
|
||||
end$while;
|
||||
END FLUSHBUFFER;
|
||||
|
||||
outbyte: proc(ch,ptr);
|
||||
dcl ch byte,
|
||||
ptr addr,
|
||||
x based ptr file$o$structure,
|
||||
i addr;
|
||||
|
||||
do case devicetype(x.disk);
|
||||
|
||||
/* null */
|
||||
do; end; /* do nothing */
|
||||
|
||||
/* console */
|
||||
call write$console(ch);
|
||||
|
||||
/* printer */
|
||||
call write$list(ch);
|
||||
|
||||
/* disk file */
|
||||
do;
|
||||
i=x.bufptr;
|
||||
if i=length(x.buffer) then$do
|
||||
CALL FLUSHBUFFER (PTR);
|
||||
i=0;
|
||||
end$if;
|
||||
x.buffer(i)=ch;
|
||||
x.bufptr=i+1;
|
||||
end;
|
||||
end$case;
|
||||
end outbyte;
|
||||
|
||||
open$input: proc (ptr);
|
||||
dcl ptr addr,
|
||||
x based ptr file$i$structure;
|
||||
|
||||
x.bufptr=length(x.buffer);
|
||||
call disk$select(x.disk);
|
||||
IF LOW (VERSION) >= 30H THEN$DO
|
||||
IF OPEN$RO$FILE (.X.FCBBLOCK) <> 0FFH THEN RETURN;
|
||||
ELSE$DO
|
||||
IF OPEN$FILE (.X.FCBBLOCK) <> 0FFH THEN RETURN;
|
||||
END$IF;
|
||||
CALL FILEABORT (.X, .OPENERRTEXT);
|
||||
end open$input;
|
||||
|
||||
open$output: proc(ptr);
|
||||
dcl ptr addr,
|
||||
x based ptr file$o$structure;
|
||||
|
||||
if devicetype(x.disk)=disktype then$do
|
||||
x.bufptr=0;
|
||||
call disk$select(x.disk);
|
||||
CALL delete$file(.x.fcbblock);
|
||||
if create$file(.x.fcbblock) = 0ffh then
|
||||
CALL FILEABORT (.X, .MAKEERRTEXT);
|
||||
end$if;
|
||||
end open$output;
|
||||
|
||||
outputclose: proc(ptr);
|
||||
dcl ptr addr,
|
||||
x based ptr file$o$structure;
|
||||
|
||||
if devicetype(x.disk)=disktype then$do
|
||||
call outbyte(end$of$file,.x);
|
||||
CALL FLUSHBUFFER (PTR);
|
||||
IF CLOSE$FILE (.X.FCBBLOCK) = 0FFH THEN
|
||||
CALL FILEABORT (.X, .CLOSEERRTEXT);
|
||||
end$if;
|
||||
end outputclose;
|
||||
|
||||
INPUT$CLOSE: PROCEDURE (PTR);
|
||||
DECLARE PTR ADDRESS, X BASED PTR FILE$I$STRUCTURE;
|
||||
CALL DISK$SELECT (X.DISK);
|
||||
CALL SET$DMA$ADDRESS (.X.BUFFER);
|
||||
IF CLOSE$FILE (.X.FCBBLOCK) THEN;
|
||||
END INPUT$CLOSE;
|
||||
|
||||
outhexbyte: proc(ch) public;
|
||||
dcl ch byte;
|
||||
call outbyte(ch,.hex$file);
|
||||
end outhexbyte;
|
||||
|
||||
outprintbyte: proc(ch) public;
|
||||
dcl ch byte;
|
||||
if printfile.disk=console then$do
|
||||
call write$console(ch);
|
||||
else$do
|
||||
if error$printed then call write$console(ch);
|
||||
call outbyte(ch,.printfile);
|
||||
end$if;
|
||||
end outprintbyte;
|
||||
|
||||
outsymbolbyte: proc(ch) public;
|
||||
dcl ch byte;
|
||||
call outbyte(ch,.symbolfile);
|
||||
end outsymbolbyte;
|
||||
|
||||
insourcebyte: proc byte public;
|
||||
return inbyte(.sourcefile);
|
||||
end insourcebyte;
|
||||
|
||||
inincludebyte: proc byte public;
|
||||
return inbyte(.includefile);
|
||||
end inincludebyte;
|
||||
|
||||
opensource: proc public;
|
||||
CALL open$input(.sourcefile);
|
||||
end opensource;
|
||||
|
||||
openinclude: proc public;
|
||||
CALL open$input(.includefile);
|
||||
end openinclude;
|
||||
|
||||
openhex: proc public;
|
||||
CALL open$output(.hexfile);
|
||||
end openhex;
|
||||
|
||||
openprint: proc public;
|
||||
CALL open$output(.printfile);
|
||||
end openprint;
|
||||
|
||||
opensymbol: proc public;
|
||||
CALL open$output(.symbolfile);
|
||||
end opensymbol;
|
||||
|
||||
close$source: proc public;
|
||||
call input$close (.source$file);
|
||||
end close$source;
|
||||
|
||||
rewindsource: proc public;
|
||||
sourcefile.fcbblock(nr)=0;
|
||||
sourcefile.bufptr=length(sourcefile.buffer);
|
||||
if sourcefile.fcbblock(ex) <> 0 then$do
|
||||
sourcefile.fcbblock(ex)=0;
|
||||
sourcefile.fcbblock(s2)=0;
|
||||
CALL opensource;
|
||||
end$if;
|
||||
end rewindsource;
|
||||
|
||||
close$include: proc public;
|
||||
call input$close (.include$file);
|
||||
end close$include;
|
||||
|
||||
closehex: proc public;
|
||||
call outputclose(.hexfile);
|
||||
end closehex;
|
||||
|
||||
closeprint: proc public;
|
||||
call outputclose(.printfile);
|
||||
end closeprint;
|
||||
|
||||
closesymbol: proc public;
|
||||
call outputclose(.symbolfile);
|
||||
end closesymbol;
|
||||
|
||||
i$file$setup: proc(dev,filnam,filtyp) public;
|
||||
dcl dev byte,(filnam,filtyp) addr;
|
||||
call clearcontrol(.includefile,filtyp);
|
||||
includefile.disk=dev;
|
||||
call copy(8,filnam,.includefile.fcbblock(fn));
|
||||
end i$file$setup;
|
||||
|
||||
filesetup: proc byte public;
|
||||
dcl
|
||||
|
||||
ch byte, /* pick up character */
|
||||
i byte, /* counter */
|
||||
noleft byte, /* no of characters left in tbuff */
|
||||
bpt byte, /* index of tbuff */
|
||||
exitvalue byte, /* exitvalue of subroutine */
|
||||
flag byte; /* program logic flag */
|
||||
|
||||
nextch: proc byte;
|
||||
if noleft > 0 then$do
|
||||
ch=tbuff(bpt);
|
||||
noleft=noleft-1;
|
||||
bpt=bpt+1;
|
||||
else$do
|
||||
ch=cr;
|
||||
end$if;
|
||||
return ch;
|
||||
end nextch;
|
||||
|
||||
getdsk: procedure (p);
|
||||
declare p address, dsk based p byte;
|
||||
ch=upper(nextch); /* test selected disk drive */
|
||||
if letter(ch) then$do
|
||||
dsk=ch-'A';
|
||||
if dsk > validdisk then
|
||||
if dsk < console then
|
||||
exitvalue = false; /* invalid drive */
|
||||
else$do
|
||||
exitvalue=false;
|
||||
noleft=0;
|
||||
end$if;
|
||||
end getdsk;
|
||||
|
||||
exitvalue=true;
|
||||
|
||||
/* save current disk */
|
||||
default$drive,diskunit=interrogate$disk;
|
||||
/* enter user selected disk */
|
||||
if fcb(dr) <> 0 then$do
|
||||
call selectdisk(diskunit:=fcb(dr)-1);
|
||||
end$if;
|
||||
|
||||
/* clear control blocks */
|
||||
call clearcontrol(.sourcefile,.asmdefault);
|
||||
call clearcontrol(.hexfile,.hexdefault);
|
||||
call clearcontrol(.printfile,.lstdefault);
|
||||
call clearcontrol(.symbolfile,.symdefault);
|
||||
call copy(8,.fcb(fn),.sourcefile.fcbblock(fn));
|
||||
call copy(8,.fcb(fn),.hexfile.fcbblock(fn));
|
||||
call copy(8,.fcb(fn),.printfile.fcbblock(fn));
|
||||
call copy(8,.fcb(fn),.symbolfile.fcbblock(fn));
|
||||
|
||||
if FCB (FT) <> SPACE then$do /* pick up specified source file type */
|
||||
call copy(3,.fcb(ft),.sourcefile.fcbblock(ft));
|
||||
end$if;
|
||||
|
||||
/* Move source file name to SOURCENAME */
|
||||
|
||||
CALL FILL (SPACE, LENGTH (SOURCENAME), .SOURCENAME);
|
||||
i=0;
|
||||
do while i<8 and (sourcename(i):=sourcefile.fcbblock(fn+i)) <> space;
|
||||
i=i+1;
|
||||
end$while;
|
||||
sourcename(i)='.';
|
||||
i=i+1;
|
||||
call copy(3,.sourcefile.fcbblock(ft),.sourcename(i));
|
||||
|
||||
/* Test if file parameters */
|
||||
|
||||
noleft=tbuff(0);
|
||||
bpt=1;
|
||||
FLAG = FALSE;
|
||||
IF FCB16 (1) <> SPACE THEN$DO
|
||||
IF FCB16 (1) <> DOLLAR THEN$DO
|
||||
EXITVALUE = FALSE;
|
||||
ELSE$DO
|
||||
DO WHILE (NOLEFT > 0) AND (NEXTCH <> DOLLAR);
|
||||
END$WHILE;
|
||||
FLAG = TRUE;
|
||||
END$IF;
|
||||
END$IF;
|
||||
|
||||
if flag then$do
|
||||
|
||||
/* file parameters present - pick them up */
|
||||
|
||||
do while noleft > 0;
|
||||
if (ch:=upper(nextch)) <> space then$do
|
||||
|
||||
/* A-parameter */
|
||||
IF CH = 'A' THEN call getdsk(.sourcefile.disk);
|
||||
|
||||
/* H-parameter */
|
||||
ELSE IF CH = 'H' THEN call getdsk(.hexfile.disk);
|
||||
|
||||
/* P-parameter */
|
||||
ELSE IF CH = 'P' THEN call getdsk(.printfile.disk);
|
||||
|
||||
/* S-parameter */
|
||||
ELSE IF CH = 'S' THEN call getdsk(.symbolfile.disk);
|
||||
|
||||
/* F-parameter */
|
||||
ELSE IF CH = 'F' THEN$DO
|
||||
if (ch:=upper(nextch)) = 'I' then$do
|
||||
intel$hex$on=true;
|
||||
else$do
|
||||
if ch= 'D' then$do
|
||||
intel$hex$on=false;
|
||||
else$do
|
||||
exitvalue=false;
|
||||
noleft=0;
|
||||
endif;
|
||||
endif;
|
||||
END$IF;
|
||||
|
||||
/* error,no legal parameter */
|
||||
ELSE
|
||||
DO;
|
||||
exitvalue=false;
|
||||
noleft=0;
|
||||
END$DO;
|
||||
|
||||
end$if;
|
||||
end$while;
|
||||
end$if;
|
||||
|
||||
printdevice=printfile.disk; /* set global printdevice flag */
|
||||
SYMBOLDEVICE = SYMBOLFILE.DISK;
|
||||
INCLUDE$DEFAULT = SOURCEFILE.DISK;
|
||||
|
||||
/* input must be from a disk file */
|
||||
|
||||
if devicetype(sourcefile.disk) <> disktype then$do
|
||||
exitvalue=false;
|
||||
end$if;
|
||||
|
||||
return exitvalue;
|
||||
|
||||
end filesetup;
|
||||
|
||||
end file;
|
||||
@@ -0,0 +1,113 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 4/16/81 R. Silberstein
|
||||
modified 7/24/81 R. Silberstein
|
||||
modified 9/2/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
dcl
|
||||
pass byte external, /* current pass no, 1,2,3 */
|
||||
|
||||
/* address counters */
|
||||
|
||||
cip addr external, /* current instruction pointer */
|
||||
csegtype byte external, /* current segment type, code,data,
|
||||
stack or extra data */
|
||||
csegvalue addr external, /* current segment value */
|
||||
csegspec byte external, /* true if segment value specified */
|
||||
|
||||
escip addr external, /* current ES instruction pointer */
|
||||
cscip addr external, /* current CS instruction pointer */
|
||||
sscip addr external, /* current SS instruction pointer */
|
||||
dscip addr external, /* current DS instruction pointer */
|
||||
curcseg addr external, /* current code segment value */
|
||||
curdseg addr external, /* current data segment value */
|
||||
cursseg addr external, /* current stack segment value */
|
||||
cureseg addr external, /* current extra segment value */
|
||||
cspec byte external, /* true if code segm. value given */
|
||||
dspec byte external, /* true if data segm. value given */
|
||||
sspec byte external, /* true if stack segment given */
|
||||
espec byte external, /* true if extra segment given */
|
||||
|
||||
|
||||
/* print output parameters */
|
||||
|
||||
print$on byte external, /* on/off flag */
|
||||
printswitchoff byte external, /* set/reset by NOLIST/LIST */
|
||||
IFLIST BYTE EXTERNAL, /* SET/RESET BY IFLIST/NOIFLIST */
|
||||
maxcol byte external, /* pagewidth */
|
||||
sourcename (12) byte external, /* source file name */
|
||||
savesource (12) byte external, /* source file during INLUDE file */
|
||||
printdevice byte external, /* printfile device */
|
||||
SYMBOLDEVICE BYTE EXTERNAL, /* SYMBOL FILE DEVICE */
|
||||
title (30) byte external, /* user specified program title */
|
||||
pagesize byte external, /* page size */
|
||||
simform byte external, /* true if formfeed simulation */
|
||||
sourcebuf (80) byte external, /* source input to be printed */
|
||||
sourceptr byte external, /* source buffer pointer */
|
||||
prefix (240) byte external, /* prefix to source line */
|
||||
prefixptr byte external, /* pointer to prefix buffer */
|
||||
ABSADDR (4) BYTE EXTERNAL, /* ABSOLUTE ADDRESS FIELD */
|
||||
|
||||
/* io error status */
|
||||
|
||||
errors addr external, /* counts no of errors */
|
||||
|
||||
/* scanner variables: */
|
||||
|
||||
token struc( /* actual token scanned */
|
||||
type byte, /* token type, legal values :
|
||||
reg - register
|
||||
pseudo - pseudo code
|
||||
string - text string
|
||||
spec - special character
|
||||
number - number
|
||||
operator - aritmetic operator
|
||||
ident - identifier */
|
||||
|
||||
descr byte, /* token description, legal values:
|
||||
nil - no specification
|
||||
byte - 8 bit type
|
||||
word - 16 bit type
|
||||
dword - 32 bit type */
|
||||
|
||||
value addr) external, /* token value */
|
||||
nextch byte external, /* next input character */
|
||||
acclen byte external, /* accumulator length */
|
||||
accum(80) byte external, /* actual token scanned */
|
||||
accumsave(80) byte external,
|
||||
acclensave byte external,
|
||||
eofset byte external, /* true if end-of-file found */
|
||||
|
||||
/* Mischellaneous variables: */
|
||||
|
||||
intel$hex$on byte external, /* true if INTEL hex format */
|
||||
noerror byte external, /* codemacro decoding errorflag */
|
||||
errorprinted byte external, /* true if an error is printed */
|
||||
firstmacroptr address external, /* pointer at first codemacro */
|
||||
macroptr address external, /* current pointer within macros */
|
||||
fullsymbtab byte external, /* full if symboltable is full */
|
||||
include$on byte external, /* true if INCLUDEfile input */
|
||||
IFLEVEL BYTE EXTERNAL, /* IF-ENDIF NESTING LEVEL */
|
||||
currentsymbol symbolstruc /* current scanned symbol */
|
||||
external,
|
||||
symbtabadr address external, /* pointer at symbol in table */
|
||||
nooper byte external, /* no of instruction operands */
|
||||
operands(4) operandstruc /* instruction operands,max 4 */
|
||||
external,
|
||||
codemacroptr address external, /* pointer to found codemacro */
|
||||
help(5) byte external, /* ascii number scratch area */
|
||||
i byte external, /* scratch variable */
|
||||
default$drive byte external, /* default disk drive */
|
||||
include$default byte external, /* default drive for include file */
|
||||
codemacro$flag byte external; /* true if building a codemacro */
|
||||
|
||||
globalinit: procedure external; /* initiate some globals */
|
||||
end globalinit;
|
||||
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,403 @@
|
||||
PL/M-86 COMPILER GLOBAL VARIABLES 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE GLOBAL
|
||||
OBJECT MODULE PLACED IN GLOBAL.OBJ
|
||||
COMPILER INVOKED BY: :F0: GLOBAL.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title ('GLOBAL VARIABLES')
|
||||
1 global:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 4/16/81 R. Silberstein
|
||||
modified 4/20/81 R. Silberstein
|
||||
modified 7/24/81 R. Silberstein
|
||||
modified 9/2/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This module defines all the global variables
|
||||
of the assmembler.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:struc.lit)
|
||||
= $nolist
|
||||
$INCLUDE (:F1:SUBR2.EXT)
|
||||
= $nolist
|
||||
|
||||
40 1 dcl
|
||||
|
||||
/* dummy structure forces contiguous storage */
|
||||
|
||||
glob structure (
|
||||
pass byte, /* current pass no, 1,2,3 */
|
||||
|
||||
/* address counters */
|
||||
|
||||
cip addr, /* current instruction pointer */
|
||||
csegtype byte, /* current segment type, code,data,
|
||||
stack or extra data */
|
||||
csegvalue addr, /* current segment value */
|
||||
csegspec byte, /* true if segment value specified */
|
||||
|
||||
escip addr, /* current ES instruction pointer */
|
||||
cscip addr, /* current CS instruction pointer */
|
||||
sscip addr, /* current SS instruction pointer */
|
||||
dscip addr, /* current DS instruction pointer */
|
||||
curcseg addr, /* current code segment value */
|
||||
curdseg addr, /* current data segment value */
|
||||
cursseg addr, /* current stack segment value */
|
||||
cureseg addr, /* current extra segment value */
|
||||
cspec byte, /* true if code segment value given */
|
||||
dspec byte, /* true if data segment value given */
|
||||
PL/M-86 COMPILER GLOBAL VARIABLES 10/5/81 PAGE 2
|
||||
|
||||
|
||||
sspec byte, /* true if stack segment value given */
|
||||
espec byte, /* true if extra segment value given */
|
||||
|
||||
|
||||
/* print output parameters */
|
||||
|
||||
print$on byte, /* on/off flag */
|
||||
printswitchoff byte, /* set/reset by NOLIST/LIST */
|
||||
IFLIST BYTE, /* SET/RESET BY IFLIST/NOIFLIST */
|
||||
maxcol byte); /* pagewidth */
|
||||
|
||||
41 1 dcl
|
||||
|
||||
sourcename (12) byte public, /* source file name */
|
||||
sourcestop byte, /* used to contain zero */
|
||||
savesource (12) byte public, /* source file during INLUDE file */
|
||||
printdevice byte public, /* print file device */
|
||||
SYMBOLDEVICE BYTE PUBLIC, /* SYMBOL FILE DEVICE */
|
||||
title (30) byte public, /* user specified program title */
|
||||
stoptitle byte, /* used to contain zero */
|
||||
pagesize byte public, /* page size */
|
||||
simform byte public, /* true if formfeed is to be simulated*/
|
||||
sourcebuf (80) byte public, /* copy of source input to be printed*/
|
||||
sourceptr byte public, /* source buffer pointer */
|
||||
prefix (240) byte public, /* prefix to source line */
|
||||
prefixptr byte public, /* pointer to prefix buffer */
|
||||
ABSADDR (4) BYTE PUBLIC; /* ABSOLUTE ADDRESS FIELD */
|
||||
|
||||
|
||||
/* references to glob structure */
|
||||
|
||||
42 1 dcl
|
||||
pass byte public at(.glob.pass),
|
||||
cip addr public at(.glob.cip),
|
||||
csegtype byte public at(.glob.csegtype),
|
||||
csegvalue addr public at(.glob.csegvalue),
|
||||
csegspec byte public at(.glob.csegspec),
|
||||
escip addr public at(.glob.escip),
|
||||
cscip addr public at(.glob.cscip),
|
||||
sscip addr public at(.glob.sscip),
|
||||
dscip addr public at(.glob.dscip),
|
||||
curcseg addr public at(.glob.curcseg),
|
||||
curdseg addr public at(.glob.curdseg),
|
||||
cursseg addr public at(.glob.cursseg),
|
||||
cureseg addr public at(.glob.cureseg),
|
||||
cspec byte public at(.glob.cspec),
|
||||
dspec byte public at(.glob.dspec),
|
||||
sspec byte public at(.glob.sspec),
|
||||
espec byte public at(.glob.espec),
|
||||
print$on byte public at(.glob.print$on),
|
||||
printswitchoff byte public at(.glob.printswitchoff),
|
||||
IFLIST BYTE PUBLIC AT (.GLOB.IFLIST),
|
||||
maxcol byte public at(.glob.maxcol);
|
||||
|
||||
/* io error stpublic atus */
|
||||
|
||||
43 1 dcl
|
||||
PL/M-86 COMPILER GLOBAL VARIABLES 10/5/81 PAGE 3
|
||||
|
||||
|
||||
errors addr public, /* counts no of errors */
|
||||
|
||||
/* scanner variables: */
|
||||
|
||||
token struc( /* actual token scannes */
|
||||
type byte, /* token type, legal values :
|
||||
reg - register
|
||||
pseudo - pseudo code
|
||||
string - text string
|
||||
spec - special character
|
||||
number - number
|
||||
operator - aritmetic operator
|
||||
ident - identifier */
|
||||
|
||||
descr byte, /* token description, legal values :
|
||||
nil - no specification
|
||||
byte - 8 bit type
|
||||
word - 16 bit type
|
||||
dword - 32 bit type */
|
||||
|
||||
value addr) public, /* token value */
|
||||
nextch byte public, /* next input character (lookahead) */
|
||||
acclen byte public, /* accumulator length */
|
||||
accum(80) byte public, /* actual token scanned */
|
||||
accumsave(80) byte public, /* used to save accumulator */
|
||||
acclensave byte public,
|
||||
eofset byte public, /* true if end-of-file found */
|
||||
|
||||
/* Mischellaneous variables: */
|
||||
|
||||
intel$hex$on byte public, /* true if INTEL hex ouput format */
|
||||
noerror byte public, /* errorflag in codemacro decoding */
|
||||
errorprinted byte public, /* true if an error is printed */
|
||||
firstmacroptr address public, /* pointer at first codemacro */
|
||||
macroptr address public, /* current pointer within macros */
|
||||
fullsymbtab byte public, /* true if symboltable is full */
|
||||
include$on byte public, /* true if input from INCLUDE file */
|
||||
IFLEVEL BYTE PUBLIC, /* IF-ENDIF NESTING LEVEL */
|
||||
currentsymbol symbolstruc /* current scanned symbol */
|
||||
public,
|
||||
symbtabadr address public, /* pointer at symbol in table */
|
||||
nooper byte public, /* no of instruction operands */
|
||||
operands(4) operandstruc /* instruction operands,max 4 */
|
||||
public,
|
||||
codemacroptr address public, /* pointer to found codemacro */
|
||||
help(5) byte public, /* scratch area for ascii numbers */
|
||||
helpstop byte,
|
||||
i byte public, /* scratch variable */
|
||||
default$drive byte public, /* default disk drive */
|
||||
include$default byte public, /* default disk for include files */
|
||||
codemacro$flag byte public; /* true if building a codemacro */
|
||||
|
||||
44 1 globalinit: procedure public; /* initiate some global varaiables */
|
||||
45 2 stoptitle,sourcestop,helpstop=0;
|
||||
46 2 pagesize=66;
|
||||
47 2 fullsymbtab,intel$hex$on=false;
|
||||
48 2 CALL FILL (0, SIZE (TITLE), .TITLE);
|
||||
PL/M-86 COMPILER GLOBAL VARIABLES 10/5/81 PAGE 4
|
||||
|
||||
|
||||
49 2 codemacro$flag=false;
|
||||
50 2 end globalinit;
|
||||
|
||||
|
||||
51 1 end$module global;
|
||||
PL/M-86 COMPILER GLOBAL VARIABLES 10/5/81 PAGE 5
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
41 01ABH 4 ABSADDR. . . . . . BYTE ARRAY(4) PUBLIC
|
||||
43 01B0H 1 ACCLEN . . . . . . BYTE PUBLIC
|
||||
43 0251H 1 ACCLENSAVE . . . . BYTE PUBLIC
|
||||
43 01B1H 80 ACCUM. . . . . . . BYTE ARRAY(80) PUBLIC
|
||||
43 0201H 80 ACCUMSAVE. . . . . BYTE ARRAY(80) PUBLIC
|
||||
2 ADDR . . . . . . . LITERALLY 5 11 29 32 35 38 40
|
||||
42 43
|
||||
19 0000H ALPHANUMERIC . . . PROCEDURE BYTE EXTERNAL(5) STACK=0000H
|
||||
22 0000H ASCIICHAR. . . . . PROCEDURE BYTE EXTERNAL(6) STACK=0000H
|
||||
43 0008H 1 BASEINDEX. . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
43 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
|
||||
3 BASEREGBIT . . . . LITERALLY
|
||||
3 BASEREGCOUNT . . . LITERALLY
|
||||
3 BREGBIT. . . . . . LITERALLY
|
||||
3 BREGCOUNT. . . . . LITERALLY
|
||||
16 0000H 1 CH . . . . . . . . BYTE PARAMETER 17
|
||||
13 0000H 1 CH . . . . . . . . BYTE PARAMETER 14
|
||||
25 0000H 1 CH . . . . . . . . BYTE PARAMETER 26
|
||||
10 0000H 1 CH . . . . . . . . BYTE PARAMETER 11
|
||||
19 0000H 1 CH . . . . . . . . BYTE PARAMETER 20
|
||||
22 0000H 1 CH . . . . . . . . BYTE PARAMETER 23
|
||||
40 0001H 2 CIP. . . . . . . . WORD MEMBER(GLOB) 42
|
||||
42 000FH 2 CIP. . . . . . . . WORD PUBLIC AT
|
||||
43 0290H 1 CODEMACROFLAG. . . BYTE PUBLIC 49
|
||||
3 CODEMACROHEAD. . . LITERALLY
|
||||
43 000CH 2 CODEMACROPTR . . . WORD PUBLIC
|
||||
2 CR . . . . . . . . LITERALLY
|
||||
42 0017H 2 CSCIP. . . . . . . WORD PUBLIC AT
|
||||
40 0009H 2 CSCIP. . . . . . . WORD MEMBER(GLOB) 42
|
||||
42 0014H 1 CSEGSPEC . . . . . BYTE PUBLIC AT
|
||||
40 0006H 1 CSEGSPEC . . . . . BYTE MEMBER(GLOB) 42
|
||||
42 0011H 1 CSEGTYPE . . . . . BYTE PUBLIC AT
|
||||
40 0003H 1 CSEGTYPE . . . . . BYTE MEMBER(GLOB) 42
|
||||
42 0012H 2 CSEGVALUE. . . . . WORD PUBLIC AT
|
||||
40 0004H 2 CSEGVALUE. . . . . WORD MEMBER(GLOB) 42
|
||||
42 0025H 1 CSPEC. . . . . . . BYTE PUBLIC AT
|
||||
40 0017H 1 CSPEC. . . . . . . BYTE MEMBER(GLOB) 42
|
||||
42 001DH 2 CURCSEG. . . . . . WORD PUBLIC AT
|
||||
40 000FH 2 CURCSEG. . . . . . WORD MEMBER(GLOB) 42
|
||||
42 001FH 2 CURDSEG. . . . . . WORD PUBLIC AT
|
||||
40 0011H 2 CURDSEG. . . . . . WORD MEMBER(GLOB) 42
|
||||
42 0023H 2 CURESEG. . . . . . WORD PUBLIC AT
|
||||
40 0015H 2 CURESEG. . . . . . WORD MEMBER(GLOB) 42
|
||||
43 0259H 9 CURRENTSYMBOL. . . STRUCTURE PUBLIC
|
||||
40 0013H 2 CURSSEG. . . . . . WORD MEMBER(GLOB) 42
|
||||
42 0021H 2 CURSSEG. . . . . . WORD PUBLIC AT
|
||||
28 0000H 2 D. . . . . . . . . WORD PARAMETER 29
|
||||
37 0000H 2 D. . . . . . . . . WORD PARAMETER 38
|
||||
34 0000H 2 D. . . . . . . . . WORD PARAMETER 35
|
||||
PL/M-86 COMPILER GLOBAL VARIABLES 10/5/81 PAGE 6
|
||||
|
||||
|
||||
31 0000H 2 D. . . . . . . . . WORD PARAMETER 32
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
37 0000H DECOUT . . . . . . PROCEDURE EXTERNAL(11) STACK=0000H
|
||||
43 028EH 1 DEFAULTDRIVE . . . BYTE PUBLIC
|
||||
43 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN)
|
||||
13 0000H DIGIT. . . . . . . PROCEDURE BYTE EXTERNAL(3) STACK=0000H
|
||||
40 000DH 2 DSCIP. . . . . . . WORD MEMBER(GLOB) 42
|
||||
42 001BH 2 DSCIP. . . . . . . WORD PUBLIC AT
|
||||
40 0018H 1 DSPEC. . . . . . . BYTE MEMBER(GLOB) 42
|
||||
42 0026H 1 DSPEC. . . . . . . BYTE PUBLIC AT
|
||||
2 ELSEDO . . . . . . LITERALLY
|
||||
2 ENDCASE. . . . . . LITERALLY
|
||||
2 ENDDO. . . . . . . LITERALLY
|
||||
2 ENDFOREVER . . . . LITERALLY
|
||||
2 ENDIF. . . . . . . LITERALLY
|
||||
2 ENDMODULE. . . . . LITERALLY
|
||||
2 ENDOFFILE. . . . . LITERALLY
|
||||
2 ENDPROC. . . . . . LITERALLY
|
||||
2 ENDWHILE . . . . . LITERALLY
|
||||
43 0252H 1 EOFSET . . . . . . BYTE PUBLIC
|
||||
28 0000H EQUAL. . . . . . . PROCEDURE BYTE EXTERNAL(8) STACK=0000H
|
||||
43 0255H 1 ERRORPRINTED . . . BYTE PUBLIC
|
||||
43 0000H 2 ERRORS . . . . . . WORD PUBLIC
|
||||
42 0015H 2 ESCIP. . . . . . . WORD PUBLIC AT
|
||||
40 0007H 2 ESCIP. . . . . . . WORD MEMBER(GLOB) 42
|
||||
42 0028H 1 ESPEC. . . . . . . BYTE PUBLIC AT
|
||||
40 001AH 1 ESPEC. . . . . . . BYTE MEMBER(GLOB) 42
|
||||
2 FALSE. . . . . . . LITERALLY 47 49
|
||||
7 0000H 2 FCBADR . . . . . . WORD PARAMETER 8
|
||||
7 0000H FILEABORT. . . . . PROCEDURE EXTERNAL(1) STACK=0000H
|
||||
3 FILEISTRUCTURE . . LITERALLY
|
||||
3 FILEOSTRUCTURE . . LITERALLY
|
||||
10 0000H FILL . . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H 48
|
||||
43 0006H 2 FIRSTMACROPTR. . . WORD PUBLIC
|
||||
2 FOREVER. . . . . . LITERALLY
|
||||
2 FORMFEED . . . . . LITERALLY
|
||||
43 0256H 1 FULLSYMBTAB. . . . BYTE PUBLIC 47
|
||||
40 000EH 31 GLOB . . . . . . . STRUCTURE 42
|
||||
1 0000H GLOBAL . . . . . . PROCEDURE STACK=0000H
|
||||
44 0000H 44 GLOBALINIT . . . . PROCEDURE PUBLIC STACK=000AH
|
||||
43 0287H 5 HELP . . . . . . . BYTE ARRAY(5) PUBLIC
|
||||
43 028CH 1 HELPSTOP . . . . . BYTE 45
|
||||
31 0000H HEX1OUT. . . . . . PROCEDURE EXTERNAL(9) STACK=0000H
|
||||
34 0000H HEX2OUT. . . . . . PROCEDURE EXTERNAL(10) STACK=0000H
|
||||
43 028DH 1 I. . . . . . . . . BYTE PUBLIC
|
||||
43 0258H 1 IFLEVEL. . . . . . BYTE PUBLIC
|
||||
42 002BH 1 IFLIST . . . . . . BYTE PUBLIC AT
|
||||
40 001DH 1 IFLIST . . . . . . BYTE MEMBER(GLOB) 42
|
||||
43 028FH 1 INCLUDEDEFAULT . . BYTE PUBLIC
|
||||
43 0257H 1 INCLUDEON. . . . . BYTE PUBLIC
|
||||
3 INDEXREGBIT. . . . LITERALLY
|
||||
3 INDEXREGCOUNT. . . LITERALLY
|
||||
2 INIT . . . . . . . LITERALLY
|
||||
43 0253H 1 INTELHEXON . . . . BYTE PUBLIC 47
|
||||
3 IREGBIT. . . . . . LITERALLY
|
||||
3 IREGCOUNT. . . . . LITERALLY
|
||||
43 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
|
||||
PL/M-86 COMPILER GLOBAL VARIABLES 10/5/81 PAGE 7
|
||||
|
||||
|
||||
43 0000H 2 LENGTH . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
16 0000H LETTER . . . . . . PROCEDURE BYTE EXTERNAL(4) STACK=0000H
|
||||
2 LF . . . . . . . . LITERALLY
|
||||
2 LIT. . . . . . . . LITERALLY 2 3
|
||||
43 0008H 2 MACROPTR . . . . . WORD PUBLIC
|
||||
42 002CH 1 MAXCOL . . . . . . BYTE PUBLIC AT
|
||||
40 001EH 1 MAXCOL . . . . . . BYTE MEMBER(GLOB) 42
|
||||
10 0000H 1 N. . . . . . . . . BYTE PARAMETER 11
|
||||
37 0000H 2 N. . . . . . . . . WORD PARAMETER 38
|
||||
34 0000H 2 N. . . . . . . . . WORD PARAMETER 35
|
||||
31 0000H 1 N. . . . . . . . . BYTE PARAMETER 32
|
||||
28 0000H 1 N. . . . . . . . . BYTE PARAMETER 29
|
||||
43 01AFH 1 NEXTCH . . . . . . BYTE PUBLIC
|
||||
43 0254H 1 NOERROR. . . . . . BYTE PUBLIC
|
||||
43 0262H 1 NOOPER . . . . . . BYTE PUBLIC
|
||||
3 NOOVERCOUNT. . . . LITERALLY
|
||||
3 NOOVERRIDEBIT. . . LITERALLY
|
||||
43 0006H 2 OFFSET . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
43 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
|
||||
43 0263H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) PUBLIC
|
||||
3 OPERANDSTRUC . . . LITERALLY 43
|
||||
4 0000H OUTTEXT. . . . . . PROCEDURE EXTERNAL(0) STACK=0000H
|
||||
41 0067H 1 PAGESIZE . . . . . BYTE PUBLIC 46
|
||||
42 000EH 1 PASS . . . . . . . BYTE PUBLIC AT
|
||||
40 0000H 1 PASS . . . . . . . BYTE MEMBER(GLOB) 42
|
||||
41 00BAH 240 PREFIX . . . . . . BYTE ARRAY(240) PUBLIC
|
||||
41 01AAH 1 PREFIXPTR. . . . . BYTE PUBLIC
|
||||
41 0046H 1 PRINTDEVICE. . . . BYTE PUBLIC
|
||||
42 0029H 1 PRINTON. . . . . . BYTE PUBLIC AT
|
||||
40 001BH 1 PRINTON. . . . . . BYTE MEMBER(GLOB) 42
|
||||
42 002AH 1 PRINTSWITCHOFF . . BYTE PUBLIC AT
|
||||
40 001CH 1 PRINTSWITCHOFF . . BYTE MEMBER(GLOB) 42
|
||||
2 PROC . . . . . . . LITERALLY 19 22 31 34 37
|
||||
10 0000H 2 PT . . . . . . . . WORD PARAMETER 11
|
||||
2 REENT. . . . . . . LITERALLY
|
||||
28 0000H 2 S. . . . . . . . . WORD PARAMETER 29
|
||||
41 003AH 12 SAVESOURCE . . . . BYTE ARRAY(12) PUBLIC
|
||||
3 SEGMBIT. . . . . . LITERALLY
|
||||
3 SEGMCOUNT. . . . . LITERALLY
|
||||
43 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
|
||||
43 0004H 2 SEGMENT. . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
3 SEGTYPEBIT . . . . LITERALLY
|
||||
3 SEGTYPECOUNT . . . LITERALLY
|
||||
43 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
43 0003H 1 SFLAG. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
41 0068H 1 SIMFORM. . . . . . BYTE PUBLIC
|
||||
SIZE . . . . . . . BUILTIN 48
|
||||
41 0069H 80 SOURCEBUF. . . . . BYTE ARRAY(80) PUBLIC
|
||||
41 002DH 12 SOURCENAME . . . . BYTE ARRAY(12) PUBLIC
|
||||
41 00B9H 1 SOURCEPTR. . . . . BYTE PUBLIC
|
||||
41 0039H 1 SOURCESTOP . . . . BYTE 45
|
||||
2 SPACE. . . . . . . LITERALLY
|
||||
42 0019H 2 SSCIP. . . . . . . WORD PUBLIC AT
|
||||
40 000BH 2 SSCIP. . . . . . . WORD MEMBER(GLOB) 42
|
||||
42 0027H 1 SSPEC. . . . . . . BYTE PUBLIC AT
|
||||
40 0019H 1 SSPEC. . . . . . . BYTE MEMBER(GLOB) 42
|
||||
41 0066H 1 STOPTITLE. . . . . BYTE 45
|
||||
PL/M-86 COMPILER GLOBAL VARIABLES 10/5/81 PAGE 8
|
||||
|
||||
|
||||
2 STRUC. . . . . . . LITERALLY 43
|
||||
43 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
43 0002H 1 STYPE. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
41 0047H 1 SYMBOLDEVICE . . . BYTE PUBLIC
|
||||
3 SYMBOLHEAD . . . . LITERALLY
|
||||
3 SYMBOLSTRUC. . . . LITERALLY 43
|
||||
43 000AH 2 SYMBTABADR . . . . WORD PUBLIC
|
||||
4 0000H 2 T. . . . . . . . . WORD PARAMETER 5
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
7 0000H 2 TEXTADR. . . . . . WORD PARAMETER 8
|
||||
2 THENDO . . . . . . LITERALLY
|
||||
41 0048H 30 TITLE. . . . . . . BYTE ARRAY(30) PUBLIC 48
|
||||
43 0002H 4 TOKEN. . . . . . . STRUCTURE PUBLIC
|
||||
2 TRUE . . . . . . . LITERALLY
|
||||
43 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN)
|
||||
3 TYPEBIT. . . . . . LITERALLY
|
||||
3 TYPECOUNT. . . . . LITERALLY
|
||||
25 0000H UPPER. . . . . . . PROCEDURE BYTE EXTERNAL(7) STACK=0000H
|
||||
43 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN)
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 002CH 44D
|
||||
CONSTANT AREA SIZE = 0000H 0D
|
||||
VARIABLE AREA SIZE = 0291H 657D
|
||||
MAXIMUM STACK SIZE = 000AH 10D
|
||||
339 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,167 @@
|
||||
$title ('GLOBAL VARIABLES')
|
||||
global:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 4/16/81 R. Silberstein
|
||||
modified 4/20/81 R. Silberstein
|
||||
modified 7/24/81 R. Silberstein
|
||||
modified 9/2/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This module defines all the global variables
|
||||
of the assmembler.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:struc.lit)
|
||||
$INCLUDE (:F1:SUBR2.EXT)
|
||||
|
||||
dcl
|
||||
|
||||
/* dummy structure forces contiguous storage */
|
||||
|
||||
glob structure (
|
||||
pass byte, /* current pass no, 1,2,3 */
|
||||
|
||||
/* address counters */
|
||||
|
||||
cip addr, /* current instruction pointer */
|
||||
csegtype byte, /* current segment type, code,data,
|
||||
stack or extra data */
|
||||
csegvalue addr, /* current segment value */
|
||||
csegspec byte, /* true if segment value specified */
|
||||
|
||||
escip addr, /* current ES instruction pointer */
|
||||
cscip addr, /* current CS instruction pointer */
|
||||
sscip addr, /* current SS instruction pointer */
|
||||
dscip addr, /* current DS instruction pointer */
|
||||
curcseg addr, /* current code segment value */
|
||||
curdseg addr, /* current data segment value */
|
||||
cursseg addr, /* current stack segment value */
|
||||
cureseg addr, /* current extra segment value */
|
||||
cspec byte, /* true if code segment value given */
|
||||
dspec byte, /* true if data segment value given */
|
||||
sspec byte, /* true if stack segment value given */
|
||||
espec byte, /* true if extra segment value given */
|
||||
|
||||
|
||||
/* print output parameters */
|
||||
|
||||
print$on byte, /* on/off flag */
|
||||
printswitchoff byte, /* set/reset by NOLIST/LIST */
|
||||
IFLIST BYTE, /* SET/RESET BY IFLIST/NOIFLIST */
|
||||
maxcol byte); /* pagewidth */
|
||||
|
||||
dcl
|
||||
|
||||
sourcename (12) byte public, /* source file name */
|
||||
sourcestop byte, /* used to contain zero */
|
||||
savesource (12) byte public, /* source file during INLUDE file */
|
||||
printdevice byte public, /* print file device */
|
||||
SYMBOLDEVICE BYTE PUBLIC, /* SYMBOL FILE DEVICE */
|
||||
title (30) byte public, /* user specified program title */
|
||||
stoptitle byte, /* used to contain zero */
|
||||
pagesize byte public, /* page size */
|
||||
simform byte public, /* true if formfeed is to be simulated*/
|
||||
sourcebuf (80) byte public, /* copy of source input to be printed*/
|
||||
sourceptr byte public, /* source buffer pointer */
|
||||
prefix (240) byte public, /* prefix to source line */
|
||||
prefixptr byte public, /* pointer to prefix buffer */
|
||||
ABSADDR (4) BYTE PUBLIC; /* ABSOLUTE ADDRESS FIELD */
|
||||
|
||||
|
||||
/* references to glob structure */
|
||||
|
||||
dcl
|
||||
pass byte public at(.glob.pass),
|
||||
cip addr public at(.glob.cip),
|
||||
csegtype byte public at(.glob.csegtype),
|
||||
csegvalue addr public at(.glob.csegvalue),
|
||||
csegspec byte public at(.glob.csegspec),
|
||||
escip addr public at(.glob.escip),
|
||||
cscip addr public at(.glob.cscip),
|
||||
sscip addr public at(.glob.sscip),
|
||||
dscip addr public at(.glob.dscip),
|
||||
curcseg addr public at(.glob.curcseg),
|
||||
curdseg addr public at(.glob.curdseg),
|
||||
cursseg addr public at(.glob.cursseg),
|
||||
cureseg addr public at(.glob.cureseg),
|
||||
cspec byte public at(.glob.cspec),
|
||||
dspec byte public at(.glob.dspec),
|
||||
sspec byte public at(.glob.sspec),
|
||||
espec byte public at(.glob.espec),
|
||||
print$on byte public at(.glob.print$on),
|
||||
printswitchoff byte public at(.glob.printswitchoff),
|
||||
IFLIST BYTE PUBLIC AT (.GLOB.IFLIST),
|
||||
maxcol byte public at(.glob.maxcol);
|
||||
|
||||
/* io error stpublic atus */
|
||||
|
||||
dcl
|
||||
errors addr public, /* counts no of errors */
|
||||
|
||||
/* scanner variables: */
|
||||
|
||||
token struc( /* actual token scannes */
|
||||
type byte, /* token type, legal values :
|
||||
reg - register
|
||||
pseudo - pseudo code
|
||||
string - text string
|
||||
spec - special character
|
||||
number - number
|
||||
operator - aritmetic operator
|
||||
ident - identifier */
|
||||
|
||||
descr byte, /* token description, legal values :
|
||||
nil - no specification
|
||||
byte - 8 bit type
|
||||
word - 16 bit type
|
||||
dword - 32 bit type */
|
||||
|
||||
value addr) public, /* token value */
|
||||
nextch byte public, /* next input character (lookahead) */
|
||||
acclen byte public, /* accumulator length */
|
||||
accum(80) byte public, /* actual token scanned */
|
||||
accumsave(80) byte public, /* used to save accumulator */
|
||||
acclensave byte public,
|
||||
eofset byte public, /* true if end-of-file found */
|
||||
|
||||
/* Mischellaneous variables: */
|
||||
|
||||
intel$hex$on byte public, /* true if INTEL hex ouput format */
|
||||
noerror byte public, /* errorflag in codemacro decoding */
|
||||
errorprinted byte public, /* true if an error is printed */
|
||||
firstmacroptr address public, /* pointer at first codemacro */
|
||||
macroptr address public, /* current pointer within macros */
|
||||
fullsymbtab byte public, /* true if symboltable is full */
|
||||
include$on byte public, /* true if input from INCLUDE file */
|
||||
IFLEVEL BYTE PUBLIC, /* IF-ENDIF NESTING LEVEL */
|
||||
currentsymbol symbolstruc /* current scanned symbol */
|
||||
public,
|
||||
symbtabadr address public, /* pointer at symbol in table */
|
||||
nooper byte public, /* no of instruction operands */
|
||||
operands(4) operandstruc /* instruction operands,max 4 */
|
||||
public,
|
||||
codemacroptr address public, /* pointer to found codemacro */
|
||||
help(5) byte public, /* scratch area for ascii numbers */
|
||||
helpstop byte,
|
||||
i byte public, /* scratch variable */
|
||||
default$drive byte public, /* default disk drive */
|
||||
include$default byte public, /* default disk for include files */
|
||||
codemacro$flag byte public; /* true if building a codemacro */
|
||||
|
||||
globalinit: procedure public; /* initiate some global varaiables */
|
||||
stoptitle,sourcestop,helpstop=0;
|
||||
pagesize=66;
|
||||
fullsymbtab,intel$hex$on=false;
|
||||
CALL FILL (0, SIZE (TITLE), .TITLE);
|
||||
codemacro$flag=false;
|
||||
end globalinit;
|
||||
|
||||
|
||||
end$module global;
|
||||
@@ -0,0 +1,6 @@
|
||||
$nolist
|
||||
|
||||
instruction: proc external;
|
||||
end instruction;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,587 @@
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE INSTRUC
|
||||
OBJECT MODULE PLACED IN INSTR.OBJ
|
||||
COMPILER INVOKED BY: :F0: INSTR.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title ('INSTRUCTION MODULE')
|
||||
1 instruc:
|
||||
do;
|
||||
/*
|
||||
This is the module to decode and produce code-
|
||||
output of a single instruction, possibly preceded
|
||||
by a number of PREFIX-instructions.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:struc.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmacd.lit)
|
||||
= $nolist
|
||||
$include (:f1:equals.lit)
|
||||
= $nolist
|
||||
$include (:f1:ermod.lit)
|
||||
= $nolist
|
||||
$include (:f1:subr1.ext)
|
||||
= $nolist
|
||||
$include (:f1:expr.ext)
|
||||
= $nolist
|
||||
$include (:f1:symb.ext)
|
||||
= $nolist
|
||||
$include (:f1:scan.ext)
|
||||
= $nolist
|
||||
$include (:f1:ermod.ext)
|
||||
= $nolist
|
||||
$include (:f1:cmsubr.ext)
|
||||
= $nolist
|
||||
$include (:f1:instr.x86)
|
||||
= $nolist
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 2
|
||||
|
||||
|
||||
$eject
|
||||
120 1 dcl /* global variables */
|
||||
bytevar based macroptr byte, /* byte within codemacro */
|
||||
comtab(12) byte data /* legal codemacro commands */
|
||||
(mdbn,mdbf,mdwn,mdwf,mddf,mrelb,mrelw,mmodrm1,mmodrm2,msegfix,
|
||||
mnosegfix,mdbit);
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 3
|
||||
|
||||
|
||||
$eject
|
||||
|
||||
|
||||
/* generate instruction output code */
|
||||
121 1 makecode: proc byte;
|
||||
122 2 if (noerror:=searchformatch) then$do
|
||||
/* matching operands, comput code */
|
||||
124 3 do while (bytevar <> mendm) and noerror;
|
||||
125 4 do case commandtype(bytevar,length(comtab),.comtab);
|
||||
126 5 call mDBNrout;
|
||||
127 5 call mDBFrout;
|
||||
128 5 call mDWNrout;
|
||||
129 5 call mDWFrout; /* typed during earthquake */
|
||||
130 5 call mDDFrout;
|
||||
131 5 call mRELBrout;
|
||||
132 5 call mRELWrout;
|
||||
133 5 call mMODRM1rout;
|
||||
134 5 call mMODRM2rout;
|
||||
135 5 call mSEGFIXrout;
|
||||
136 5 call mNOSEGFIXrout;
|
||||
137 5 call mDBITrout;
|
||||
138 5 do; end; /* dummy, should not happen */
|
||||
140 5 end$case;
|
||||
141 4 end$while;
|
||||
142 3 end$if;
|
||||
143 2 if noerror then call emit; else call emitdummies;
|
||||
146 2 return noerror;
|
||||
147 2 end makecode;
|
||||
|
||||
/* scan all PREFIX instructions */
|
||||
148 1 prefixscan: proc byte;
|
||||
/* compute address of first codemacro */
|
||||
149 2 findmacroaddr: proc;
|
||||
150 3 dcl macrop based codemacroptr address;
|
||||
151 3 firstmacroptr=macrop;
|
||||
152 3 end findmacroaddr;
|
||||
/* test if instruction is of PREFIX type */
|
||||
153 2 prefixinstr: proc byte;
|
||||
154 3 dcl ptr address,flag based ptr byte;
|
||||
155 3 ptr=firstmacroptr+2;
|
||||
156 3 return ((flag and prefix$on) <> 0);
|
||||
157 3 end prefixinstr;
|
||||
|
||||
158 2 call findmacroaddr; /* compute pointer to first macro */
|
||||
159 2 do while prefixinstr;
|
||||
160 3 if makecode then; /* generate output code,always succed */
|
||||
162 3 call clearcmindex;
|
||||
163 3 if findcodemacro(acclen,.accum(0),.codemacroptr) then$do
|
||||
165 4 call scan;
|
||||
166 4 call findmacroaddr;
|
||||
167 4 else$do
|
||||
169 4 call errmsg(missinstr); /* missing instruction */
|
||||
170 4 call skip$rest$of$line;
|
||||
171 4 return false;
|
||||
172 4 end$if;
|
||||
173 3 end$while;
|
||||
174 2 return true;
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 4
|
||||
|
||||
|
||||
175 2 end prefixscan;
|
||||
|
||||
/* get all instruction operands */
|
||||
176 1 getoperands: proc byte;
|
||||
177 2 dcl moreoperands byte,pt address,oper based pt operandstruc,
|
||||
exitvalue byte;
|
||||
|
||||
178 2 exitvalue=true;
|
||||
179 2 nooper=0; /* clear no of operands */
|
||||
180 2 moreoperands=not emptyline;
|
||||
181 2 do while moreoperands;
|
||||
182 3 moreoperands=false;
|
||||
183 3 pt=.operands(nooper);
|
||||
184 3 if not operand then$do
|
||||
186 4 if oper.stype <> udefsymb then call errmsg(illioper);
|
||||
188 4 exitvalue=false;
|
||||
189 4 if skip$until(',') then moreoperands=true;
|
||||
else$do
|
||||
193 4 if specialtoken(',') then$do
|
||||
195 5 call scan; /* skip "," */
|
||||
196 5 if nooper < 3 then moreoperands=true;
|
||||
end$if;
|
||||
end$if;
|
||||
200 3 nooper=nooper+1;
|
||||
201 3 end$while;
|
||||
202 2 return exitvalue;
|
||||
203 2 end getoperands;
|
||||
|
||||
/* test if operands contain enough type information */
|
||||
|
||||
204 1 enough$type$info: proc byte;
|
||||
205 2 dcl pt address,oper based pt operandstruc,(i,flag) byte;
|
||||
206 2 flag=true;
|
||||
207 2 i=0ffh;
|
||||
208 2 do while (i:=i+1) < nooper;
|
||||
209 3 pt=.operands(i);
|
||||
210 3 if oper.stype=variable then$do
|
||||
212 4 if (oper.sflag and typebit) = 0 then flag=false;
|
||||
end$if;
|
||||
end$while;
|
||||
216 2 if flag then return true;
|
||||
218 2 i=0ffh; /* one of operands lacks type info,check others */
|
||||
219 2 do while (i:=i+1) < nooper;
|
||||
220 3 pt=.operands(i);
|
||||
221 3 if (oper.sflag and typebit) <> 0 then return true;
|
||||
223 3 if (oper.stype=number) and (wrdtest(oper.offset)) then return true;
|
||||
end$while;
|
||||
226 2 return false;
|
||||
227 2 end enough$type$info;
|
||||
|
||||
/* Module entry point: */
|
||||
|
||||
|
||||
228 1 instruction: proc public; /* decode line in pass 1 and pass 2 */
|
||||
229 2 call clearcmindex; /* clear buffer for output codes */
|
||||
230 2 if prefixscan then$do
|
||||
232 3 if getoperands then$do
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 5
|
||||
|
||||
|
||||
234 4 if enough$type$info then$do
|
||||
236 5 if makecode then$do
|
||||
238 6 if not emptyline then$do
|
||||
240 7 call errmsg(end$of$line$err);
|
||||
241 7 end$if;
|
||||
else$do
|
||||
244 6 call errmsg(opmismatch);
|
||||
245 6 end$if;
|
||||
246 5 else$do
|
||||
248 5 call errmsg(misstypeinfo);
|
||||
249 5 call emitdummies;
|
||||
250 5 end$if;
|
||||
251 4 else$do
|
||||
253 4 if makecode then; /* try to make code with bad operands */
|
||||
end$if;
|
||||
256 3 end$if;
|
||||
257 2 call skip$rest$of$line;
|
||||
258 2 end instruction;
|
||||
|
||||
259 1 end$module instruc;
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 6
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
119 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(43) 163
|
||||
119 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(44) 163
|
||||
2 ADDR . . . . . . . LITERALLY 19 22 25 37 38 44 47
|
||||
50 53 56 59 62 65 119 177 205
|
||||
64 0000H 2 ASCIIPTR . . . . . WORD PARAMETER 65
|
||||
119 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
|
||||
205 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPER)
|
||||
177 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPER)
|
||||
3 BASEREGBIT . . . . LITERALLY
|
||||
3 BASEREGCOUNT . . . LITERALLY
|
||||
3 BREGBIT. . . . . . LITERALLY
|
||||
3 BREGCOUNT. . . . . LITERALLY
|
||||
13 BYT. . . . . . . . LITERALLY
|
||||
120 0000H 1 BYTEVAR. . . . . . BYTE BASED(MACROPTR) 124 125
|
||||
84 0000H CLEARCMINDEX . . . PROCEDURE EXTERNAL(26) STACK=0000H 162 229
|
||||
12 CODE . . . . . . . LITERALLY
|
||||
17 CODEMACROERR . . . LITERALLY
|
||||
3 CODEMACROHEAD. . . LITERALLY
|
||||
119 0000H 2 CODEMACROPTR . . . WORD EXTERNAL(50) 150 151 163
|
||||
90 0000H COMMANDTYPE. . . . PROCEDURE BYTE EXTERNAL(29) STACK=0000H 125
|
||||
90 0000H 1 COMNO. . . . . . . BYTE PARAMETER 91
|
||||
120 0000H 12 COMTAB . . . . . . BYTE ARRAY(12) DATA 125
|
||||
24 0000H COPY . . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H
|
||||
2 CR . . . . . . . . LITERALLY
|
||||
7 CSOVER . . . . . . LITERALLY
|
||||
24 0000H 2 D. . . . . . . . . WORD PARAMETER 25
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
12 DELETEDSYMB. . . . LITERALLY
|
||||
52 0000H 2 DEST . . . . . . . WORD PARAMETER 53
|
||||
12 DOUBLEDEFINED. . . LITERALLY
|
||||
17 DOUBLEDEFLAB . . . LITERALLY
|
||||
17 DOUBLEDEFSYMB. . . LITERALLY
|
||||
17 DOUBLEDEFVAR . . . LITERALLY
|
||||
11 DOUBLERANGE. . . . LITERALLY
|
||||
7 DSOVER . . . . . . LITERALLY
|
||||
13 DWRD . . . . . . . LITERALLY
|
||||
2 ELSEDO . . . . . . LITERALLY 190 241
|
||||
86 0000H EMIT . . . . . . . PROCEDURE EXTERNAL(27) STACK=0000H 144
|
||||
88 0000H EMITDUMMIES. . . . PROCEDURE EXTERNAL(28) STACK=0000H 145 249
|
||||
79 0000H EMPTYLINE. . . . . PROCEDURE BYTE EXTERNAL(24) STACK=0000H 180
|
||||
238
|
||||
2 ENDCASE. . . . . . LITERALLY
|
||||
2 ENDDO. . . . . . . LITERALLY
|
||||
2 ENDFOREVER . . . . LITERALLY
|
||||
2 ENDIF. . . . . . . LITERALLY 197 198 213 254
|
||||
2 ENDMODULE. . . . . LITERALLY
|
||||
2 ENDOFFILE. . . . . LITERALLY
|
||||
17 ENDOFLINEERR . . . LITERALLY 240
|
||||
38 0000H 2 ENDOFSYMBTAB . . . WORD EXTERNAL(8)
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 7
|
||||
|
||||
|
||||
2 ENDPROC. . . . . . LITERALLY
|
||||
2 ENDWHILE . . . . . LITERALLY 214 224
|
||||
204 0186H 143 ENOUGHTYPEINFO . . PROCEDURE BYTE STACK=0008H 234
|
||||
55 0000H ENTERATTRIBUTES. . PROCEDURE EXTERNAL(15) STACK=0000H
|
||||
81 0000H ERRMSG . . . . . . PROCEDURE EXTERNAL(25) STACK=0000H 169 187
|
||||
240 244 248
|
||||
81 0000H 1 ERRNO. . . . . . . BYTE PARAMETER 82
|
||||
12 ERROR. . . . . . . LITERALLY
|
||||
7 ESOVER . . . . . . LITERALLY
|
||||
177 0007H 1 EXITVALUE. . . . . BYTE 178 188 202
|
||||
31 0000H EXPRESSION . . . . PROCEDURE BYTE EXTERNAL(5) STACK=0000H
|
||||
2 FALSE. . . . . . . LITERALLY 171 182 188 213 226
|
||||
3 FILEISTRUCTURE . . LITERALLY
|
||||
3 FILEOSTRUCTURE . . LITERALLY
|
||||
17 FILESYNTERR. . . . LITERALLY
|
||||
58 0000H FINDCODEMACRO. . . PROCEDURE BYTE EXTERNAL(16) STACK=0000H 163
|
||||
149 00E0H 14 FINDMACROADDR. . . PROCEDURE STACK=0002H 158 166
|
||||
49 0000H FINDSYMBOL . . . . PROCEDURE BYTE EXTERNAL(13) STACK=0000H
|
||||
17 FIRSTITEM. . . . . LITERALLY
|
||||
119 0000H 2 FIRSTMACROPTR. . . WORD EXTERNAL(46) 151 155
|
||||
205 0009H 1 FLAG . . . . . . . BYTE 206 213 216
|
||||
154 0000H 1 FLAG . . . . . . . BYTE BASED(PTR) 156
|
||||
2 FOREVER. . . . . . LITERALLY
|
||||
2 FORMFEED . . . . . LITERALLY
|
||||
37 0000H 2 FREEPT . . . . . . WORD EXTERNAL(7)
|
||||
52 0000H GETATTRIBUTES. . . PROCEDURE EXTERNAL(14) STACK=0000H
|
||||
176 0109H 125 GETOPERANDS. . . . PROCEDURE BYTE STACK=0006H 232
|
||||
205 0008H 1 I. . . . . . . . . BYTE 207 208 209 218 219 220
|
||||
12 IDENT. . . . . . . LITERALLY
|
||||
17 IFPARERR . . . . . LITERALLY
|
||||
17 ILLEGALMACRO . . . LITERALLY
|
||||
17 ILLEGALPSEUDO. . . LITERALLY
|
||||
17 ILLEXPRELEM. . . . LITERALLY
|
||||
17 ILLIOPER . . . . . LITERALLY 187
|
||||
3 INDEXREGBIT. . . . LITERALLY
|
||||
3 INDEXREGCOUNT. . . LITERALLY
|
||||
2 INIT . . . . . . . LITERALLY
|
||||
17 INSTRERR . . . . . LITERALLY
|
||||
1 0000H INSTRUC. . . . . . PROCEDURE STACK=0000H
|
||||
228 0215H 74 INSTRUCTION. . . . PROCEDURE PUBLIC STACK=0012H
|
||||
3 IREGBIT. . . . . . LITERALLY
|
||||
3 IREGCOUNT. . . . . LITERALLY
|
||||
12 LAB. . . . . . . . LITERALLY
|
||||
17 LABOUTOFRANGE. . . LITERALLY
|
||||
16 LEFTBRACKET. . . . LITERALLY
|
||||
205 0000H 2 LENGTH . . . . . . WORD MEMBER(OPER)
|
||||
LENGTH . . . . . . BUILTIN 125
|
||||
119 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
|
||||
177 0000H 2 LENGTH . . . . . . WORD MEMBER(OPER)
|
||||
2 LF . . . . . . . . LITERALLY
|
||||
90 0000H 1 LG . . . . . . . . BYTE PARAMETER 91
|
||||
46 0000H 1 LG . . . . . . . . BYTE PARAMETER 47
|
||||
43 0000H 1 LG . . . . . . . . BYTE PARAMETER 44
|
||||
64 0000H 1 LG . . . . . . . . BYTE PARAMETER 65
|
||||
58 0000H 1 LG . . . . . . . . BYTE PARAMETER 59
|
||||
49 0000H 1 LG . . . . . . . . BYTE PARAMETER 50
|
||||
61 0000H 1 LG . . . . . . . . BYTE PARAMETER 62
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 8
|
||||
|
||||
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4 5 6 7 8
|
||||
9 10 11 12 13 14 15 16 17
|
||||
46 0000H 2 MACDEFPT . . . . . WORD PARAMETER 47
|
||||
150 0000H 2 MACROP . . . . . . WORD BASED(CODEMACROPTR) 151
|
||||
119 0000H 2 MACROPTR . . . . . WORD EXTERNAL(47) 120 124 125
|
||||
121 0000H 162 MAKECODE . . . . . PROCEDURE BYTE STACK=000AH 160 236 253
|
||||
4 MDBF . . . . . . . LITERALLY 120
|
||||
95 0000H MDBFROUT . . . . . PROCEDURE EXTERNAL(31) STACK=0000H 127
|
||||
4 MDBIT. . . . . . . LITERALLY 120
|
||||
115 0000H MDBITROUT. . . . . PROCEDURE EXTERNAL(41) STACK=0000H 137
|
||||
4 MDBN . . . . . . . LITERALLY 120
|
||||
93 0000H MDBNROUT . . . . . PROCEDURE EXTERNAL(30) STACK=0000H 126
|
||||
4 MDDF . . . . . . . LITERALLY 120
|
||||
101 0000H MDDFROUT . . . . . PROCEDURE EXTERNAL(34) STACK=0000H 130
|
||||
4 MDWF . . . . . . . LITERALLY 120
|
||||
99 0000H MDWFROUT . . . . . PROCEDURE EXTERNAL(33) STACK=0000H 129
|
||||
4 MDWN . . . . . . . LITERALLY 120
|
||||
97 0000H MDWNROUT . . . . . PROCEDURE EXTERNAL(32) STACK=0000H 128
|
||||
4 MENDBIT. . . . . . LITERALLY
|
||||
4 MENDM. . . . . . . LITERALLY 124
|
||||
4 MFORMALBITS. . . . LITERALLY
|
||||
17 MISSIFERR. . . . . LITERALLY
|
||||
17 MISSINGPSEUDO. . . LITERALLY
|
||||
17 MISSINSTR. . . . . LITERALLY 169
|
||||
17 MISSSEGMINFO . . . LITERALLY
|
||||
17 MISSTYPEINFO . . . LITERALLY 248
|
||||
4 MMODRM1. . . . . . LITERALLY 120
|
||||
111 0000H MMODRM1ROUT. . . . PROCEDURE EXTERNAL(39) STACK=0000H 133
|
||||
4 MMODRM2. . . . . . LITERALLY 120
|
||||
113 0000H MMODRM2ROUT. . . . PROCEDURE EXTERNAL(40) STACK=0000H 134
|
||||
4 MNOSEGFIX. . . . . LITERALLY 120
|
||||
107 0000H MNOSEGFIXROUT. . . PROCEDURE EXTERNAL(37) STACK=0000H 136
|
||||
4 MNUMBERBITS. . . . LITERALLY
|
||||
6 MODB . . . . . . . LITERALLY
|
||||
6 MODD . . . . . . . LITERALLY
|
||||
10 MODLETTERBIT . . . LITERALLY
|
||||
10 MODLETTERCOUNT . . LITERALLY
|
||||
6 MODSB. . . . . . . LITERALLY
|
||||
6 MODW . . . . . . . LITERALLY
|
||||
177 0006H 1 MOREOPERANDS . . . BYTE 180 181 182 190 197
|
||||
4 MRELB. . . . . . . LITERALLY 120
|
||||
103 0000H MRELBROUT. . . . . PROCEDURE EXTERNAL(35) STACK=0000H 131
|
||||
4 MRELW. . . . . . . LITERALLY 120
|
||||
105 0000H MRELWROUT. . . . . PROCEDURE EXTERNAL(36) STACK=0000H 132
|
||||
4 MSEGFIX. . . . . . LITERALLY 120
|
||||
109 0000H MSEGFIXROUT. . . . PROCEDURE EXTERNAL(38) STACK=0000H 135
|
||||
24 0000H 1 N. . . . . . . . . BYTE PARAMETER 25
|
||||
21 0000H 2 N. . . . . . . . . WORD PARAMETER 22
|
||||
12 NEGLECTED. . . . . LITERALLY
|
||||
17 NEGLECTERR . . . . LITERALLY
|
||||
17 NESTEDIFERR. . . . LITERALLY
|
||||
17 NESTEDINCLUDEERR . LITERALLY
|
||||
61 0000H NEWCMBODY. . . . . PROCEDURE BYTE EXTERNAL(17) STACK=0000H
|
||||
64 0000H NEWCMNAME. . . . . PROCEDURE BYTE EXTERNAL(18) STACK=0000H
|
||||
46 0000H NEWMACRO . . . . . PROCEDURE BYTE EXTERNAL(12) STACK=0000H
|
||||
43 0000H NEWSYMBOL. . . . . PROCEDURE BYTE EXTERNAL(11) STACK=0000H
|
||||
13 NIL. . . . . . . . LITERALLY
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 9
|
||||
|
||||
|
||||
119 0000H 1 NOERROR. . . . . . BYTE EXTERNAL(45) 122 124 143 146
|
||||
34 0000H NOFORWARDEXPR. . . PROCEDURE BYTE EXTERNAL(6) STACK=0000H
|
||||
29 0000H NOFORWARDOPER. . . PROCEDURE BYTE EXTERNAL(4) STACK=0000H
|
||||
6 NOMOD. . . . . . . LITERALLY
|
||||
119 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(48) 179 183 196 200 208
|
||||
219
|
||||
3 NOOVERCOUNT. . . . LITERALLY
|
||||
3 NOOVERRIDEBIT. . . LITERALLY
|
||||
8 NOPARAND . . . . . LITERALLY
|
||||
11 NORANGE. . . . . . LITERALLY
|
||||
12 NUMBER . . . . . . LITERALLY 223
|
||||
11 NUMBERRANGE. . . . LITERALLY
|
||||
16 OAND . . . . . . . LITERALLY
|
||||
16 OEQ. . . . . . . . LITERALLY
|
||||
177 0006H 2 OFFSET . . . . . . WORD MEMBER(OPER)
|
||||
119 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
|
||||
205 0006H 2 OFFSET . . . . . . WORD MEMBER(OPER) 223
|
||||
16 OGE. . . . . . . . LITERALLY
|
||||
16 OGT. . . . . . . . LITERALLY
|
||||
16 OLAST. . . . . . . LITERALLY
|
||||
16 OLE. . . . . . . . LITERALLY
|
||||
16 OLENGTH. . . . . . LITERALLY
|
||||
16 OLT. . . . . . . . LITERALLY
|
||||
16 OMOD . . . . . . . LITERALLY
|
||||
16 ONE. . . . . . . . LITERALLY
|
||||
16 ONOT . . . . . . . LITERALLY
|
||||
16 OOFFSET. . . . . . LITERALLY
|
||||
16 OOR. . . . . . . . LITERALLY
|
||||
177 0000H 9 OPER . . . . . . . STRUCTURE BASED(PT) 186
|
||||
205 0000H 9 OPER . . . . . . . STRUCTURE BASED(PT) 210 212 221 223
|
||||
27 0000H OPERAND. . . . . . PROCEDURE BYTE EXTERNAL(3) STACK=0000H 184
|
||||
119 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(49) 183 209
|
||||
220
|
||||
3 OPERANDSTRUC . . . LITERALLY 119 177 205
|
||||
12 OPERATOR . . . . . LITERALLY
|
||||
17 OPMISMATCH . . . . LITERALLY 244
|
||||
16 OPTR . . . . . . . LITERALLY
|
||||
16 OSEG . . . . . . . LITERALLY
|
||||
16 OSHL . . . . . . . LITERALLY
|
||||
16 OSHORT . . . . . . LITERALLY
|
||||
16 OSHR . . . . . . . LITERALLY
|
||||
16 OTYPE. . . . . . . LITERALLY
|
||||
16 OXOR . . . . . . . LITERALLY
|
||||
15 PCODEMACRO . . . . LITERALLY
|
||||
15 PCSEG. . . . . . . LITERALLY
|
||||
15 PDB. . . . . . . . LITERALLY
|
||||
15 PDBIT. . . . . . . LITERALLY
|
||||
15 PDD. . . . . . . . LITERALLY
|
||||
15 PDSEG. . . . . . . LITERALLY
|
||||
15 PDW. . . . . . . . LITERALLY
|
||||
15 PEJECT . . . . . . LITERALLY
|
||||
15 PEND . . . . . . . LITERALLY
|
||||
15 PENDIF . . . . . . LITERALLY
|
||||
15 PENDM. . . . . . . LITERALLY
|
||||
15 PEQU . . . . . . . LITERALLY
|
||||
15 PESEG. . . . . . . LITERALLY
|
||||
15 PIF. . . . . . . . LITERALLY
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 10
|
||||
|
||||
|
||||
15 PIFLIST. . . . . . LITERALLY
|
||||
15 PINCLUDE . . . . . LITERALLY
|
||||
15 PLIST. . . . . . . LITERALLY
|
||||
15 PMODRM . . . . . . LITERALLY
|
||||
15 PNOIFLIST. . . . . LITERALLY
|
||||
15 PNOLIST. . . . . . LITERALLY
|
||||
15 PNOSEGFIX. . . . . LITERALLY
|
||||
15 PORG . . . . . . . LITERALLY
|
||||
15 PPAGESIZE. . . . . LITERALLY
|
||||
15 PPAGEWIDTH . . . . LITERALLY
|
||||
15 PRB. . . . . . . . LITERALLY
|
||||
8 PREFIXAND. . . . . LITERALLY
|
||||
153 00EEH 27 PREFIXINSTR. . . . PROCEDURE BYTE STACK=0002H 159
|
||||
9 PREFIXON . . . . . LITERALLY 156
|
||||
148 00A2H 62 PREFIXSCAN . . . . PROCEDURE BYTE STACK=000EH 230
|
||||
15 PRELB. . . . . . . LITERALLY
|
||||
15 PRELW. . . . . . . LITERALLY
|
||||
2 PROC . . . . . . . LITERALLY 18 21 27 29 31 34 39
|
||||
41 43 46 49 52 55 58 61 64 67
|
||||
69 71 73 76 79 81 84 86 88 90
|
||||
93 95 97 99 101 103 105 107 109 111
|
||||
113 115 117 121 148 149 153 176 204 228
|
||||
15 PRS. . . . . . . . LITERALLY
|
||||
15 PRW. . . . . . . . LITERALLY
|
||||
15 PSEGFIX. . . . . . LITERALLY
|
||||
12 PSEUDO . . . . . . LITERALLY
|
||||
17 PSEUDOOPERR. . . . LITERALLY
|
||||
15 PSIMFORM . . . . . LITERALLY
|
||||
15 PSSEG. . . . . . . LITERALLY
|
||||
205 0004H 2 PT . . . . . . . . WORD 205 209 210 212 220 221 223
|
||||
90 0000H 2 PT . . . . . . . . WORD PARAMETER 91
|
||||
177 0002H 2 PT . . . . . . . . WORD 177 183 186
|
||||
34 0000H 2 PT . . . . . . . . WORD PARAMETER 35
|
||||
31 0000H 2 PT . . . . . . . . WORD PARAMETER 32
|
||||
15 PTITLE . . . . . . LITERALLY
|
||||
154 0000H 2 PTR. . . . . . . . WORD 154 155 156
|
||||
61 0000H 2 PTR. . . . . . . . WORD PARAMETER 62
|
||||
14 RAH. . . . . . . . LITERALLY
|
||||
14 RAL. . . . . . . . LITERALLY
|
||||
11 RANGEAND . . . . . LITERALLY
|
||||
10 RANGESPECBIT . . . LITERALLY
|
||||
10 RANGESPECCOUNT . . LITERALLY
|
||||
11 RANGETYPEAND . . . LITERALLY
|
||||
14 RAX. . . . . . . . LITERALLY
|
||||
14 RBH. . . . . . . . LITERALLY
|
||||
14 RBL. . . . . . . . LITERALLY
|
||||
14 RBP. . . . . . . . LITERALLY
|
||||
14 RBX. . . . . . . . LITERALLY
|
||||
14 RCH. . . . . . . . LITERALLY
|
||||
14 RCL. . . . . . . . LITERALLY
|
||||
14 RCS. . . . . . . . LITERALLY
|
||||
14 RCX. . . . . . . . LITERALLY
|
||||
14 RDH. . . . . . . . LITERALLY
|
||||
14 RDI. . . . . . . . LITERALLY
|
||||
14 RDL. . . . . . . . LITERALLY
|
||||
14 RDS. . . . . . . . LITERALLY
|
||||
14 RDX. . . . . . . . LITERALLY
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 11
|
||||
|
||||
|
||||
2 REENT. . . . . . . LITERALLY
|
||||
12 REG. . . . . . . . LITERALLY
|
||||
11 REGISTERRANGE. . . LITERALLY
|
||||
14 RES. . . . . . . . LITERALLY
|
||||
58 0000H 2 RESULT . . . . . . WORD PARAMETER 59
|
||||
49 0000H 2 RESULT . . . . . . WORD PARAMETER 50
|
||||
43 0000H 2 RESULT . . . . . . WORD PARAMETER 44
|
||||
64 0000H 2 RETURNPTR. . . . . WORD PARAMETER 65
|
||||
16 RIGHTBRACKET . . . LITERALLY
|
||||
14 RSI. . . . . . . . LITERALLY
|
||||
14 RSP. . . . . . . . LITERALLY
|
||||
14 RSS. . . . . . . . LITERALLY
|
||||
24 0000H 2 S. . . . . . . . . WORD PARAMETER 25
|
||||
69 0000H SCAN . . . . . . . PROCEDURE EXTERNAL(20) STACK=0000H 165 195
|
||||
67 0000H SCANINIT . . . . . PROCEDURE EXTERNAL(19) STACK=0000H
|
||||
117 0000H SEARCHFORMATCH . . PROCEDURE BYTE EXTERNAL(42) STACK=0000H 122
|
||||
3 SEGMBIT. . . . . . LITERALLY
|
||||
3 SEGMCOUNT. . . . . LITERALLY
|
||||
205 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPER)
|
||||
177 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPER)
|
||||
119 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
|
||||
3 SEGTYPEBIT . . . . LITERALLY
|
||||
3 SEGTYPECOUNT . . . LITERALLY
|
||||
205 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPER) 212 221
|
||||
177 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPER)
|
||||
119 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
11 SINGLERANGE. . . . LITERALLY
|
||||
71 0000H SKIPRESTOFLINE . . PROCEDURE EXTERNAL(21) STACK=0000H 170 257
|
||||
76 0000H SKIPUNTIL. . . . . PROCEDURE BYTE EXTERNAL(23) STACK=0000H 189
|
||||
55 0000H 2 SOURCE . . . . . . WORD PARAMETER 56
|
||||
2 SPACE. . . . . . . LITERALLY
|
||||
12 SPEC . . . . . . . LITERALLY
|
||||
5 SPECA. . . . . . . LITERALLY
|
||||
5 SPECC. . . . . . . LITERALLY
|
||||
5 SPECD. . . . . . . LITERALLY
|
||||
5 SPECE. . . . . . . LITERALLY
|
||||
73 0000H SPECIALTOKEN . . . PROCEDURE BYTE EXTERNAL(22) STACK=0000H 193
|
||||
5 SPECM. . . . . . . LITERALLY
|
||||
5 SPECR. . . . . . . LITERALLY
|
||||
5 SPECS. . . . . . . LITERALLY
|
||||
5 SPECX. . . . . . . LITERALLY
|
||||
7 SSOVER . . . . . . LITERALLY
|
||||
58 0000H 2 STRADR . . . . . . WORD PARAMETER 59
|
||||
49 0000H 2 STRADR . . . . . . WORD PARAMETER 50
|
||||
46 0000H 2 STRADR . . . . . . WORD PARAMETER 47
|
||||
43 0000H 2 STRADR . . . . . . WORD PARAMETER 44
|
||||
12 STRING . . . . . . LITERALLY
|
||||
2 STRUC. . . . . . . LITERALLY 119 177 205
|
||||
205 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPER) 210 223
|
||||
177 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPER) 186
|
||||
119 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
55 0000H 2 SYMBADR. . . . . . WORD PARAMETER 56
|
||||
52 0000H 2 SYMBADR. . . . . . WORD PARAMETER 53
|
||||
41 0000H SYMBINIT . . . . . PROCEDURE EXTERNAL(10) STACK=0000H
|
||||
12 SYMBOL . . . . . . LITERALLY
|
||||
3 SYMBOLHEAD . . . . LITERALLY
|
||||
3 SYMBOLSTRUC. . . . LITERALLY 119 177 205
|
||||
PL/M-86 COMPILER INSTRUCTION MODULE 10/5/81 PAGE 12
|
||||
|
||||
|
||||
39 0000H SYMBTERMINATE. . . PROCEDURE EXTERNAL(9) STACK=0000H
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
2 THENDO . . . . . . LITERALLY 122 163 184 193 210 230 232
|
||||
234 236 238
|
||||
76 0000H 1 TOK. . . . . . . . BYTE PARAMETER 77
|
||||
73 0000H 1 TOK. . . . . . . . BYTE PARAMETER 74
|
||||
2 TRUE . . . . . . . LITERALLY 174 178 190 197 206 217 222
|
||||
224
|
||||
3 TYPEBIT. . . . . . LITERALLY 212 221
|
||||
18 0000H TYPECALC . . . . . PROCEDURE BYTE EXTERNAL(0) STACK=0000H
|
||||
3 TYPECOUNT. . . . . LITERALLY
|
||||
12 UDEFSYMB . . . . . LITERALLY 186
|
||||
17 UDEFSYMBOL . . . . LITERALLY
|
||||
18 0000H 2 VAL. . . . . . . . WORD PARAMETER 19
|
||||
12 VARIABLE . . . . . LITERALLY 210
|
||||
13 WRD. . . . . . . . LITERALLY
|
||||
21 0000H WRDTEST. . . . . . PROCEDURE BYTE EXTERNAL(1) STACK=0000H 223
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 025FH 607D
|
||||
CONSTANT AREA SIZE = 000CH 12D
|
||||
VARIABLE AREA SIZE = 000AH 10D
|
||||
MAXIMUM STACK SIZE = 0012H 18D
|
||||
735 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,161 @@
|
||||
$title ('INSTRUCTION MODULE')
|
||||
instruc:
|
||||
do;
|
||||
/*
|
||||
This is the module to decode and produce code-
|
||||
output of a single instruction, possibly preceded
|
||||
by a number of PREFIX-instructions.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:struc.lit)
|
||||
$include (:f1:cmacd.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:ermod.lit)
|
||||
$include (:f1:subr1.ext)
|
||||
$include (:f1:expr.ext)
|
||||
$include (:f1:symb.ext)
|
||||
$include (:f1:scan.ext)
|
||||
$include (:f1:ermod.ext)
|
||||
$include (:f1:cmsubr.ext)
|
||||
$include (:f1:instr.x86)
|
||||
$eject
|
||||
dcl /* global variables */
|
||||
bytevar based macroptr byte, /* byte within codemacro */
|
||||
comtab(12) byte data /* legal codemacro commands */
|
||||
(mdbn,mdbf,mdwn,mdwf,mddf,mrelb,mrelw,mmodrm1,mmodrm2,msegfix,
|
||||
mnosegfix,mdbit);
|
||||
$eject
|
||||
|
||||
|
||||
/* generate instruction output code */
|
||||
makecode: proc byte;
|
||||
if (noerror:=searchformatch) then$do
|
||||
/* matching operands, comput code */
|
||||
do while (bytevar <> mendm) and noerror;
|
||||
do case commandtype(bytevar,length(comtab),.comtab);
|
||||
call mDBNrout;
|
||||
call mDBFrout;
|
||||
call mDWNrout;
|
||||
call mDWFrout; /* typed during earthquake */
|
||||
call mDDFrout;
|
||||
call mRELBrout;
|
||||
call mRELWrout;
|
||||
call mMODRM1rout;
|
||||
call mMODRM2rout;
|
||||
call mSEGFIXrout;
|
||||
call mNOSEGFIXrout;
|
||||
call mDBITrout;
|
||||
do; end; /* dummy, should not happen */
|
||||
end$case;
|
||||
end$while;
|
||||
end$if;
|
||||
if noerror then call emit; else call emitdummies;
|
||||
return noerror;
|
||||
end makecode;
|
||||
|
||||
/* scan all PREFIX instructions */
|
||||
prefixscan: proc byte;
|
||||
/* compute address of first codemacro */
|
||||
findmacroaddr: proc;
|
||||
dcl macrop based codemacroptr address;
|
||||
firstmacroptr=macrop;
|
||||
end findmacroaddr;
|
||||
/* test if instruction is of PREFIX type */
|
||||
prefixinstr: proc byte;
|
||||
dcl ptr address,flag based ptr byte;
|
||||
ptr=firstmacroptr+2;
|
||||
return ((flag and prefix$on) <> 0);
|
||||
end prefixinstr;
|
||||
|
||||
call findmacroaddr; /* compute pointer to first macro */
|
||||
do while prefixinstr;
|
||||
if makecode then; /* generate output code,always succed */
|
||||
call clearcmindex;
|
||||
if findcodemacro(acclen,.accum(0),.codemacroptr) then$do
|
||||
call scan;
|
||||
call findmacroaddr;
|
||||
else$do
|
||||
call errmsg(missinstr); /* missing instruction */
|
||||
call skip$rest$of$line;
|
||||
return false;
|
||||
end$if;
|
||||
end$while;
|
||||
return true;
|
||||
end prefixscan;
|
||||
|
||||
/* get all instruction operands */
|
||||
getoperands: proc byte;
|
||||
dcl moreoperands byte,pt address,oper based pt operandstruc,
|
||||
exitvalue byte;
|
||||
|
||||
exitvalue=true;
|
||||
nooper=0; /* clear no of operands */
|
||||
moreoperands=not emptyline;
|
||||
do while moreoperands;
|
||||
moreoperands=false;
|
||||
pt=.operands(nooper);
|
||||
if not operand then$do
|
||||
if oper.stype <> udefsymb then call errmsg(illioper);
|
||||
exitvalue=false;
|
||||
if skip$until(',') then moreoperands=true;
|
||||
else$do
|
||||
if specialtoken(',') then$do
|
||||
call scan; /* skip "," */
|
||||
if nooper < 3 then moreoperands=true;
|
||||
end$if;
|
||||
end$if;
|
||||
nooper=nooper+1;
|
||||
end$while;
|
||||
return exitvalue;
|
||||
end getoperands;
|
||||
|
||||
/* test if operands contain enough type information */
|
||||
|
||||
enough$type$info: proc byte;
|
||||
dcl pt address,oper based pt operandstruc,(i,flag) byte;
|
||||
flag=true;
|
||||
i=0ffh;
|
||||
do while (i:=i+1) < nooper;
|
||||
pt=.operands(i);
|
||||
if oper.stype=variable then$do
|
||||
if (oper.sflag and typebit) = 0 then flag=false;
|
||||
end$if;
|
||||
end$while;
|
||||
if flag then return true;
|
||||
i=0ffh; /* one of operands lacks type info,check others */
|
||||
do while (i:=i+1) < nooper;
|
||||
pt=.operands(i);
|
||||
if (oper.sflag and typebit) <> 0 then return true;
|
||||
if (oper.stype=number) and (wrdtest(oper.offset)) then return true;
|
||||
end$while;
|
||||
return false;
|
||||
end enough$type$info;
|
||||
|
||||
/* Module entry point: */
|
||||
|
||||
|
||||
instruction: proc public; /* decode line in pass 1 and pass 2 */
|
||||
call clearcmindex; /* clear buffer for output codes */
|
||||
if prefixscan then$do
|
||||
if getoperands then$do
|
||||
if enough$type$info then$do
|
||||
if makecode then$do
|
||||
if not emptyline then$do
|
||||
call errmsg(end$of$line$err);
|
||||
end$if;
|
||||
else$do
|
||||
call errmsg(opmismatch);
|
||||
end$if;
|
||||
else$do
|
||||
call errmsg(misstypeinfo);
|
||||
call emitdummies;
|
||||
end$if;
|
||||
else$do
|
||||
if makecode then; /* try to make code with bad operands */
|
||||
end$if;
|
||||
end$if;
|
||||
call skip$rest$of$line;
|
||||
end instruction;
|
||||
|
||||
end$module instruc;
|
||||
@@ -0,0 +1,17 @@
|
||||
$nolist
|
||||
|
||||
dcl
|
||||
acclen byte external, /* accumulator length */
|
||||
accum(80) byte external, /* actual token scanned */
|
||||
|
||||
/* Mischellaneous variables: */
|
||||
|
||||
noerror byte external, /* errorflag in codemacro decoding */
|
||||
firstmacroptr address external, /* pointer at first codemacro */
|
||||
macroptr address external, /* current pointer within macros */
|
||||
nooper byte external, /* no of instruction operands */
|
||||
operands(4) operandstruc /* instruction operands,max 4 */
|
||||
external,
|
||||
codemacroptr address external; /* pointer to found codemacro */
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,112 @@
|
||||
$nolist
|
||||
|
||||
/* Template for all BDOS calls */
|
||||
|
||||
/*
|
||||
|
||||
modified 3/26/81 R. Silberstein
|
||||
modified 9/14/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
mon1: procedure(func,info) external;
|
||||
declare func byte,
|
||||
info address;
|
||||
end mon1;
|
||||
|
||||
mon2: procedure(func,info) byte external;
|
||||
declare func byte,
|
||||
info address;
|
||||
end mon2;
|
||||
|
||||
declare fcb(1) byte external;
|
||||
declare fcb16(1) byte external;
|
||||
declare tbuff(1) byte external;
|
||||
declare endbuf address external;
|
||||
|
||||
|
||||
/**************************************
|
||||
* *
|
||||
* B D O S Externals *
|
||||
* *
|
||||
**************************************/
|
||||
|
||||
|
||||
system$reset:
|
||||
procedure external;
|
||||
end system$reset;
|
||||
|
||||
read$console:
|
||||
procedure byte external;
|
||||
end read$console;
|
||||
|
||||
write$console:
|
||||
procedure (char) external;
|
||||
declare char byte;
|
||||
end write$console;
|
||||
|
||||
write$list:
|
||||
procedure (char) external;
|
||||
declare char byte;
|
||||
end write$list;
|
||||
|
||||
constat:
|
||||
procedure byte external;
|
||||
end constat;
|
||||
|
||||
VERSION: PROCEDURE ADDRESS EXTERNAL;
|
||||
END VERSION;
|
||||
|
||||
select$disk:
|
||||
procedure (disk$number) external;
|
||||
declare disk$number byte;
|
||||
end select$disk;
|
||||
|
||||
open$file:
|
||||
procedure (fcb$address) byte external;
|
||||
declare fcb$address address;
|
||||
end open$file;
|
||||
|
||||
OPEN$RO$FILE: PROCEDURE (FCB$ADDRESS) BYTE EXTERNAL;
|
||||
DECLARE FCB$ADDRESS ADDRESS;
|
||||
END OPEN$RO$FILE;
|
||||
|
||||
close$file:
|
||||
procedure (fcb$address) byte external;
|
||||
declare fcb$address address;
|
||||
end close$file;
|
||||
|
||||
delete$file:
|
||||
procedure (fcb$address) external;
|
||||
declare fcb$address address;
|
||||
end delete$file;
|
||||
|
||||
read$record:
|
||||
procedure (fcb$address) byte external;
|
||||
declare fcb$address address;
|
||||
end read$record;
|
||||
|
||||
write$record:
|
||||
procedure (fcb$address) byte external;
|
||||
declare fcb$address address;
|
||||
end write$record;
|
||||
|
||||
create$file:
|
||||
procedure (fcb$address) byte external;
|
||||
declare fcb$address address;
|
||||
end create$file;
|
||||
|
||||
interrogate$disk:
|
||||
procedure byte external;
|
||||
end interrogate$disk;
|
||||
|
||||
set$DMA$address:
|
||||
procedure (DMA$address) external;
|
||||
declare DMA$address address;
|
||||
end set$DMA$address;
|
||||
|
||||
|
||||
crlf: procedure external;
|
||||
end crlf;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,198 @@
|
||||
PL/M-86 COMPILER INTERFACE TO CP/M I/O 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE IO
|
||||
OBJECT MODULE PLACED IN IO.OBJ
|
||||
COMPILER INVOKED BY: :F0: IO.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title ('INTERFACE TO CP/M I/O')
|
||||
1 io:
|
||||
do;
|
||||
|
||||
/*
|
||||
Template for all BDOS calls
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
modified 3/26/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
modified 9/14/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
2 1 declare tbuff (80h) byte external;
|
||||
|
||||
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;
|
||||
8 2 declare func byte;
|
||||
9 2 declare info address;
|
||||
10 2 end mon2;
|
||||
|
||||
/**************************************
|
||||
* *
|
||||
* B D O S Externals *
|
||||
* *
|
||||
**************************************/
|
||||
|
||||
11 1 system$reset: procedure public;
|
||||
12 2 call mon1 (0,0);
|
||||
13 2 end system$reset;
|
||||
|
||||
14 1 read$console: procedure byte public;
|
||||
15 2 return mon2 (1,0);
|
||||
16 2 end read$console;
|
||||
|
||||
17 1 write$console: procedure (char) public;
|
||||
18 2 declare char byte;
|
||||
19 2 call mon1 (2,char);
|
||||
20 2 end write$console;
|
||||
|
||||
21 1 write$list: procedure (char) public;
|
||||
22 2 declare char byte;
|
||||
23 2 call mon1 (5,char);
|
||||
24 2 end write$list;
|
||||
PL/M-86 COMPILER INTERFACE TO CP/M I/O 10/5/81 PAGE 2
|
||||
|
||||
|
||||
|
||||
25 1 constat: procedure byte public;
|
||||
26 2 return mon2 (11,0);
|
||||
27 2 end constat;
|
||||
|
||||
28 1 VERSION: PROCEDURE ADDRESS PUBLIC;
|
||||
29 2 RETURN MON2 (12, 0);
|
||||
30 2 END VERSION;
|
||||
|
||||
31 1 select$disk: procedure (disk$number) public;
|
||||
32 2 declare disk$number byte;
|
||||
33 2 call mon1 (14,disk$number);
|
||||
34 2 end select$disk;
|
||||
|
||||
35 1 set$DMA$address: procedure (DMA$address) public;
|
||||
36 2 declare DMA$address address;
|
||||
37 2 call mon1 (26,DMA$address);
|
||||
38 2 end set$DMA$address;
|
||||
|
||||
39 1 open$file: procedure (fcb$address) byte public;
|
||||
40 2 declare fcb$address address;
|
||||
41 2 CALL SET$DMA$ADDRESS (.TBUFF); /* FOR 1.4 SYSTEMS */
|
||||
42 2 return mon2 (15,fcb$address);
|
||||
43 2 end open$file;
|
||||
|
||||
44 1 OPEN$RO$FILE: PROCEDURE (FCB$ADDRESS) BYTE PUBLIC;
|
||||
45 2 DECLARE FCB$ADDRESS ADDRESS, FCB BASED FCB$ADDRESS (32) BYTE;
|
||||
46 2 FCB (6) = FCB (6) OR 80H;
|
||||
47 2 RETURN OPEN$FILE (FCB$ADDRESS);
|
||||
48 2 END OPEN$RO$FILE;
|
||||
|
||||
49 1 close$file: procedure (fcb$address) byte public;
|
||||
50 2 declare fcb$address address;
|
||||
51 2 return mon2 (16,fcb$address);
|
||||
52 2 end close$file;
|
||||
|
||||
53 1 delete$file: procedure (fcb$address) public;
|
||||
54 2 declare fcb$address address;
|
||||
55 2 CALL mon1 (19,fcb$address);
|
||||
56 2 end delete$file;
|
||||
|
||||
57 1 read$record: procedure (fcb$address) byte public;
|
||||
58 2 declare fcb$address address;
|
||||
59 2 return mon2 (20,fcb$address);
|
||||
60 2 end read$record;
|
||||
|
||||
61 1 write$record: procedure (fcb$address) byte public;
|
||||
62 2 declare fcb$address address;
|
||||
63 2 return mon2 (21,fcb$address);
|
||||
64 2 end write$record;
|
||||
|
||||
65 1 create$file: procedure (fcb$address) byte public;
|
||||
66 2 declare fcb$address address;
|
||||
67 2 return mon2 (22,fcb$address);
|
||||
68 2 end create$file;
|
||||
|
||||
69 1 interrogate$disk: procedure byte public;
|
||||
PL/M-86 COMPILER INTERFACE TO CP/M I/O 10/5/81 PAGE 3
|
||||
|
||||
|
||||
70 2 return mon2 (25,0);
|
||||
71 2 end interrogate$disk;
|
||||
|
||||
72 1 crlf: procedure public;
|
||||
73 2 call write$console (0dh);
|
||||
74 2 call write$console (0ah);
|
||||
75 2 end crlf;
|
||||
|
||||
76 1 end io;
|
||||
PL/M-86 COMPILER INTERFACE TO CP/M I/O 10/5/81 PAGE 4
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
21 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 22 23
|
||||
17 0004H 1 CHAR . . . . . . . BYTE PARAMETER AUTOMATIC 18 19
|
||||
49 00B1H 16 CLOSEFILE. . . . . PROCEDURE BYTE PUBLIC STACK=000AH
|
||||
25 0043H 15 CONSTAT. . . . . . PROCEDURE BYTE PUBLIC STACK=0008H
|
||||
65 00F1H 16 CREATEFILE . . . . PROCEDURE BYTE PUBLIC STACK=000AH
|
||||
72 0110H 17 CRLF . . . . . . . PROCEDURE PUBLIC STACK=000EH
|
||||
53 00C1H 16 DELETEFILE . . . . PROCEDURE PUBLIC STACK=000AH
|
||||
31 0004H 1 DISKNUMBER . . . . BYTE PARAMETER AUTOMATIC 32 33
|
||||
35 0004H 2 DMAADDRESS . . . . WORD PARAMETER AUTOMATIC 36 37
|
||||
45 0000H 32 FCB. . . . . . . . BYTE BASED(FCBADDRESS) ARRAY(32) 46
|
||||
61 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 62 63
|
||||
44 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 45 46 47
|
||||
39 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 40 42
|
||||
49 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 50 51
|
||||
53 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 54 55
|
||||
65 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 66 67
|
||||
57 0004H 2 FCBADDRESS . . . . WORD PARAMETER AUTOMATIC 58 59
|
||||
3 0000H 1 FUNC . . . . . . . BYTE PARAMETER 4
|
||||
7 0000H 1 FUNC . . . . . . . BYTE PARAMETER 8
|
||||
7 0000H 2 INFO . . . . . . . WORD PARAMETER 9
|
||||
3 0000H 2 INFO . . . . . . . WORD PARAMETER 5
|
||||
69 0101H 15 INTERROGATEDISK. . PROCEDURE BYTE PUBLIC STACK=0008H
|
||||
1 0000H IO . . . . . . . . PROCEDURE STACK=0000H
|
||||
3 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(1) STACK=0000H 12 19
|
||||
23 33 37 55
|
||||
7 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(2) STACK=0000H 15
|
||||
26 29 42 51 59 63 67 70
|
||||
39 0086H 23 OPENFILE . . . . . PROCEDURE BYTE PUBLIC STACK=0010H 47
|
||||
44 009DH 20 OPENROFILE . . . . PROCEDURE BYTE PUBLIC STACK=0016H
|
||||
14 000EH 15 READCONSOLE. . . . PROCEDURE BYTE PUBLIC STACK=0008H
|
||||
57 00D1H 16 READRECORD . . . . PROCEDURE BYTE PUBLIC STACK=000AH
|
||||
31 0063H 19 SELECTDISK . . . . PROCEDURE PUBLIC STACK=000AH
|
||||
35 0076H 16 SETDMAADDRESS. . . PROCEDURE PUBLIC STACK=000AH 41
|
||||
11 0000H 14 SYSTEMRESET. . . . PROCEDURE PUBLIC STACK=0008H
|
||||
2 0000H 128 TBUFF. . . . . . . BYTE ARRAY(128) EXTERNAL(0) 41
|
||||
28 0052H 17 VERSION. . . . . . PROCEDURE WORD PUBLIC STACK=0008H
|
||||
17 001DH 19 WRITECONSOLE . . . PROCEDURE PUBLIC STACK=000AH 73 74
|
||||
21 0030H 19 WRITELIST. . . . . PROCEDURE PUBLIC STACK=000AH
|
||||
61 00E1H 16 WRITERECORD. . . . PROCEDURE BYTE PUBLIC STACK=000AH
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0121H 289D
|
||||
CONSTANT AREA SIZE = 0000H 0D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0016H 22D
|
||||
117 LINES READ
|
||||
PL/M-86 COMPILER INTERFACE TO CP/M I/O 10/5/81 PAGE 5
|
||||
|
||||
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,117 @@
|
||||
$title ('INTERFACE TO CP/M I/O')
|
||||
io:
|
||||
do;
|
||||
|
||||
/*
|
||||
Template for all BDOS calls
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
modified 3/26/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
modified 9/14/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
declare tbuff (80h) byte external;
|
||||
|
||||
mon1: procedure (func,info) external;
|
||||
declare func byte;
|
||||
declare info address;
|
||||
end mon1;
|
||||
|
||||
mon2: procedure (func,info) byte external;
|
||||
declare func byte;
|
||||
declare info address;
|
||||
end mon2;
|
||||
|
||||
/**************************************
|
||||
* *
|
||||
* B D O S Externals *
|
||||
* *
|
||||
**************************************/
|
||||
|
||||
system$reset: procedure public;
|
||||
call mon1 (0,0);
|
||||
end system$reset;
|
||||
|
||||
read$console: procedure byte public;
|
||||
return mon2 (1,0);
|
||||
end read$console;
|
||||
|
||||
write$console: procedure (char) public;
|
||||
declare char byte;
|
||||
call mon1 (2,char);
|
||||
end write$console;
|
||||
|
||||
write$list: procedure (char) public;
|
||||
declare char byte;
|
||||
call mon1 (5,char);
|
||||
end write$list;
|
||||
|
||||
constat: procedure byte public;
|
||||
return mon2 (11,0);
|
||||
end constat;
|
||||
|
||||
VERSION: PROCEDURE ADDRESS PUBLIC;
|
||||
RETURN MON2 (12, 0);
|
||||
END VERSION;
|
||||
|
||||
select$disk: procedure (disk$number) public;
|
||||
declare disk$number byte;
|
||||
call mon1 (14,disk$number);
|
||||
end select$disk;
|
||||
|
||||
set$DMA$address: procedure (DMA$address) public;
|
||||
declare DMA$address address;
|
||||
call mon1 (26,DMA$address);
|
||||
end set$DMA$address;
|
||||
|
||||
open$file: procedure (fcb$address) byte public;
|
||||
declare fcb$address address;
|
||||
CALL SET$DMA$ADDRESS (.TBUFF); /* FOR 1.4 SYSTEMS */
|
||||
return mon2 (15,fcb$address);
|
||||
end open$file;
|
||||
|
||||
OPEN$RO$FILE: PROCEDURE (FCB$ADDRESS) BYTE PUBLIC;
|
||||
DECLARE FCB$ADDRESS ADDRESS, FCB BASED FCB$ADDRESS (32) BYTE;
|
||||
FCB (6) = FCB (6) OR 80H;
|
||||
RETURN OPEN$FILE (FCB$ADDRESS);
|
||||
END OPEN$RO$FILE;
|
||||
|
||||
close$file: procedure (fcb$address) byte public;
|
||||
declare fcb$address address;
|
||||
return mon2 (16,fcb$address);
|
||||
end close$file;
|
||||
|
||||
delete$file: procedure (fcb$address) public;
|
||||
declare fcb$address address;
|
||||
CALL mon1 (19,fcb$address);
|
||||
end delete$file;
|
||||
|
||||
read$record: procedure (fcb$address) byte public;
|
||||
declare fcb$address address;
|
||||
return mon2 (20,fcb$address);
|
||||
end read$record;
|
||||
|
||||
write$record: procedure (fcb$address) byte public;
|
||||
declare fcb$address address;
|
||||
return mon2 (21,fcb$address);
|
||||
end write$record;
|
||||
|
||||
create$file: procedure (fcb$address) byte public;
|
||||
declare fcb$address address;
|
||||
return mon2 (22,fcb$address);
|
||||
end create$file;
|
||||
|
||||
interrogate$disk: procedure byte public;
|
||||
return mon2 (25,0);
|
||||
end interrogate$disk;
|
||||
|
||||
crlf: procedure public;
|
||||
call write$console (0dh);
|
||||
call write$console (0ah);
|
||||
end crlf;
|
||||
|
||||
end io;
|
||||
@@ -0,0 +1,34 @@
|
||||
$nolist
|
||||
$eject
|
||||
|
||||
/* PL/M language text macros: */
|
||||
|
||||
declare
|
||||
lit literally 'literally',
|
||||
dcl lit 'declare',
|
||||
init lit 'initial',
|
||||
true lit '0ffh',
|
||||
false lit '0',
|
||||
addr lit 'address',
|
||||
struc lit 'structure',
|
||||
proc lit 'procedure',
|
||||
reent lit 'reentrant',
|
||||
then$do lit 'then do;',
|
||||
else$do lit 'end; else do;',
|
||||
end$if lit 'end',
|
||||
forever lit 'while true',
|
||||
end$forever lit 'end',
|
||||
end$while lit 'end',
|
||||
end$case lit 'end',
|
||||
end$do lit 'end',
|
||||
end$module lit 'end',
|
||||
end$proc lit 'end',
|
||||
cr lit '0dh',
|
||||
lf lit '0ah',
|
||||
tab lit '09h',
|
||||
formfeed lit '0ch',
|
||||
end$of$file lit '1ah',
|
||||
space lit '20h';
|
||||
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,649 @@
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE MAINP
|
||||
OBJECT MODULE PLACED IN MAINP.OBJ
|
||||
COMPILER INVOKED BY: :F0: MAINP.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title ('ASM86 MAIN PROGRAM')
|
||||
1 mainp:
|
||||
do;
|
||||
/*
|
||||
|
||||
This is the main program of the CP/M 8086
|
||||
assembler. This module activates the i/o
|
||||
modules and goes through the source text
|
||||
in 3 passes. The module then for each source
|
||||
line calls the external subroutine DECODELINE
|
||||
to perform assembly of each line;
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
modified 3/25/81 R. Silberstein
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 3/30/81 R. Silberstein
|
||||
modified 4/7/81 R. Silberstein
|
||||
modified 4/20/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
modified 7/24/81 R. Silberstein
|
||||
modified 7/27/81 R. Silberstein
|
||||
modified 8/21/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:struc.lit)
|
||||
= $nolist
|
||||
$include (:f1:equals.lit)
|
||||
= $nolist
|
||||
$include (:f1:dev.lit)
|
||||
= $nolist
|
||||
$include (:f1:ermod.lit)
|
||||
= $nolist
|
||||
$include (:f1:subr2.ext)
|
||||
= $nolist
|
||||
$include (:f1:io.ext)
|
||||
= $nolist
|
||||
$include (:f1:files.ext)
|
||||
= $nolist
|
||||
$include (:f1:outp.ext)
|
||||
= $nolist
|
||||
$include (:f1:scan.ext)
|
||||
= $nolist
|
||||
$include (:f1:print.ext)
|
||||
= $nolist
|
||||
$include (:f1:symb.ext)
|
||||
= $nolist
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 2
|
||||
|
||||
|
||||
$include (:f1:ermod.ext)
|
||||
= $nolist
|
||||
$include (:f1:mglob.ext)
|
||||
= $nolist
|
||||
$include (:f1:text.ext)
|
||||
= $nolist
|
||||
$include (:f1:dline.ext)
|
||||
= $nolist
|
||||
|
||||
218 1 DECLARE ASM86 LABEL PUBLIC;
|
||||
|
||||
219 1 closefiles: procedure;
|
||||
220 2 call close$source;
|
||||
221 2 call close$print;
|
||||
222 2 call close$symbol;
|
||||
223 2 call close$hex;
|
||||
224 2 end closefiles;
|
||||
|
||||
225 1 open$output$files: procedure;
|
||||
226 2 CALL OPENPRINT;
|
||||
227 2 CALL OPENHEX;
|
||||
228 2 CALL OPENSYMBOL;
|
||||
229 2 end open$output$files;
|
||||
|
||||
230 1 userbreak: proc byte; /* test if keyboard break from user */
|
||||
231 2 if not constat then return false; /* test console status */
|
||||
233 2 if readconsole then; /* skip first break key */
|
||||
235 2 do forever;
|
||||
236 3 call outtext(.usbreaktext); /* USER BREAK. OK (Y/N)? */
|
||||
237 3 i=upper(readconsole);
|
||||
238 3 call crlf;
|
||||
239 3 if i = yes then return true;
|
||||
241 3 if i = no then return false;
|
||||
end$forever;
|
||||
244 2 end userbreak;
|
||||
|
||||
245 1 varinit: proc;
|
||||
246 2 CALL FILL (0, .PRINT$ON-.CIP, .CIP);
|
||||
247 2 errors=0;
|
||||
248 2 printswitchoff,includeon=false;
|
||||
249 2 IFLEVEL = 0;
|
||||
250 2 IFLIST = TRUE;
|
||||
251 2 csegtype=rcs;
|
||||
252 2 end varinit;
|
||||
|
||||
253 1 pass0init: proc; /* initialize pass 0 */
|
||||
254 2 simform=false;
|
||||
255 2 maxcol=119;
|
||||
256 2 if printdevice=console then maxcol=79;
|
||||
258 2 call symbinit; /* initialize symbol table */
|
||||
259 2 print$on=false;
|
||||
260 2 call varinit;
|
||||
261 2 end pass0init;
|
||||
|
||||
262 1 pass1init: proc; /* initialize for pass 1 */
|
||||
263 2 call varinit;
|
||||
264 2 end pass1init;
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 3
|
||||
|
||||
|
||||
|
||||
265 1 pass2init: proc; /* initialize for pass 2 (last pass) */
|
||||
266 2 print$on=true;
|
||||
267 2 call varinit;
|
||||
268 2 call emitinit;
|
||||
269 2 end pass2init;
|
||||
|
||||
270 1 pass0terminate: proc; /* terminate pass 0 */
|
||||
271 2 call outtext(.pass0text); /* End of pass 0 */
|
||||
272 2 end pass0terminate;
|
||||
|
||||
273 1 pass1terminate: proc; /* terminate pass 1 */
|
||||
274 2 print$on=false; /* dummy */
|
||||
275 2 call outtext(.pass1text); /* End of pass 1 */
|
||||
276 2 end pass1terminate;
|
||||
|
||||
277 1 pass2terminate: proc; /* terminate pass 2 (last pass) */
|
||||
278 2 DECLARE USEFACT BYTE;
|
||||
279 2 USEFACT = (FREEPT-.MEMORY) / ((ENDOFSYMBTAB-.MEMORY) / 100 + 1);
|
||||
280 2 errorprinted=false;
|
||||
281 2 call emitterminate; /* terminate hex output module */
|
||||
282 2 call symbterminate; /* print symbols */
|
||||
283 2 if printdevice <> console then call printterminate (USEFACT);
|
||||
285 2 CALL CLOSEFILES;
|
||||
286 2 call outtext(.endtext); /* END OF ASSEMBLY... */
|
||||
287 2 call decout(errors,.help(0)); /* print no of errors */
|
||||
288 2 call outtext(.help(2));
|
||||
289 2 CALL OUTTEXT (.USEFACTOR);
|
||||
290 2 CALL DECOUT (USEFACT, .HELP(0));
|
||||
291 2 CALL OUTTEXT (.HELP(3));
|
||||
292 2 CALL WRITECONSOLE (25H); /* % */
|
||||
293 2 CALL CRLF;
|
||||
294 2 end pass2terminate;
|
||||
|
||||
295 1 include$close: proc (flag);
|
||||
296 2 declare flag byte;
|
||||
297 2 if eofset and include$on then$do
|
||||
299 3 call close$include;
|
||||
300 3 include$on,eofset=false;
|
||||
301 3 if flag then$do
|
||||
303 4 call scan; /* skip EOF */
|
||||
304 4 call scan; /* prepare for next source line */
|
||||
305 4 end$if;
|
||||
end$if;
|
||||
307 2 end include$close;
|
||||
|
||||
308 1 ASM86:
|
||||
|
||||
call globalinit; /* initialize some globals */
|
||||
|
||||
309 1 call outtext(.asm86text); /* CP/M 8086 ASSEMBLER.... */
|
||||
|
||||
310 1 if not filesetup then$do
|
||||
312 2 call outtext(.parerrtext); /* PARAMETER ERROR */
|
||||
313 2 CALL SYSTEMRESET;
|
||||
314 2 end$if;
|
||||
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 4
|
||||
|
||||
|
||||
315 1 CALL OPENSOURCE;
|
||||
|
||||
316 1 CALL OPENOUTPUTFILES;
|
||||
|
||||
317 1 pass=0ffh;
|
||||
318 1 do while (pass:=pass+1) < 3;
|
||||
319 2 do case pass;
|
||||
320 3 call pass0init; /* pass 0 */
|
||||
321 3 call pass1init; /* pass 1 */
|
||||
322 3 call pass2init; /* pass 2 */
|
||||
323 3 end$case;
|
||||
324 2 call scaninit;
|
||||
325 2 call scan;
|
||||
326 2 do while not eofset;
|
||||
327 3 if userbreak then$do
|
||||
329 4 eofset=true;
|
||||
330 4 pass=3;
|
||||
331 4 else$do
|
||||
333 4 errorprinted=false;
|
||||
334 4 call decodeline;
|
||||
335 4 call includeclose(false); /* close include file if necessary */
|
||||
336 4 call scan;
|
||||
337 4 call includeclose(true); /* close include file if necessary */
|
||||
338 4 end$if;
|
||||
339 3 end$while;
|
||||
340 2 do case pass;
|
||||
341 3 call pass0terminate; /* pass 0 */
|
||||
342 3 call pass1terminate; /* pass 1 */
|
||||
343 3 call pass2terminate; /* pass 2 */
|
||||
344 3 do; end; /* do nothing if userbreak */
|
||||
346 3 end$case;
|
||||
347 2 end$while;
|
||||
|
||||
348 1 call system$reset;
|
||||
|
||||
349 1 end$module mainp;
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 5
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
2 ADDR . . . . . . . LITERALLY 12 18 36 39 42 45 138
|
||||
179 180 186 189 192 195 198 201 204 207
|
||||
212
|
||||
26 0000H ALPHANUMERIC . . . PROCEDURE BYTE EXTERNAL(5) STACK=0000H
|
||||
29 0000H ASCIICHAR. . . . . PROCEDURE BYTE EXTERNAL(6) STACK=0000H
|
||||
206 0000H 2 ASCIIPTR . . . . . WORD PARAMETER 207
|
||||
218 0010H ASM86. . . . . . . LABEL PUBLIC 308
|
||||
215 0000H 1 ASM86TEXT. . . . . BYTE ARRAY(1) EXTERNAL(106) 309
|
||||
3 BASEREGBIT . . . . LITERALLY
|
||||
3 BASEREGCOUNT . . . LITERALLY
|
||||
3 BREGBIT. . . . . . LITERALLY
|
||||
3 BREGCOUNT. . . . . LITERALLY
|
||||
5 BYT. . . . . . . . LITERALLY
|
||||
23 0000H 1 CH . . . . . . . . BYTE PARAMETER 24
|
||||
163 0000H 1 CH . . . . . . . . BYTE PARAMETER 164
|
||||
102 0000H 1 CH . . . . . . . . BYTE PARAMETER 103
|
||||
146 0000H 1 CH . . . . . . . . BYTE PARAMETER 147
|
||||
26 0000H 1 CH . . . . . . . . BYTE PARAMETER 27
|
||||
17 0000H 1 CH . . . . . . . . BYTE PARAMETER 18
|
||||
29 0000H 1 CH . . . . . . . . BYTE PARAMETER 30
|
||||
20 0000H 1 CH . . . . . . . . BYTE PARAMETER 21
|
||||
105 0000H 1 CH . . . . . . . . BYTE PARAMETER 106
|
||||
32 0000H 1 CH . . . . . . . . BYTE PARAMETER 33
|
||||
108 0000H 1 CH . . . . . . . . BYTE PARAMETER 109
|
||||
64 0000H 1 CHAR . . . . . . . BYTE PARAMETER 65
|
||||
61 0000H 1 CHAR . . . . . . . BYTE PARAMETER 62
|
||||
212 0000H 2 CIP. . . . . . . . WORD EXTERNAL(83) 246
|
||||
215 0000H 1 CLOSEERRTEXT . . . BYTE ARRAY(1) EXTERNAL(112)
|
||||
80 0000H CLOSEFILE. . . . . PROCEDURE BYTE EXTERNAL(27) STACK=0000H
|
||||
219 00CDH 17 CLOSEFILES . . . . PROCEDURE STACK=0004H 285
|
||||
131 0000H CLOSEHEX . . . . . PROCEDURE EXTERNAL(48) STACK=0000H 223
|
||||
129 0000H CLOSEINCLUDE . . . PROCEDURE EXTERNAL(47) STACK=0000H 299
|
||||
133 0000H CLOSEPRINT . . . . PROCEDURE EXTERNAL(49) STACK=0000H 221
|
||||
125 0000H CLOSESOURCE. . . . PROCEDURE EXTERNAL(45) STACK=0000H 220
|
||||
135 0000H CLOSESYMBOL. . . . PROCEDURE EXTERNAL(50) STACK=0000H 222
|
||||
4 CODE . . . . . . . LITERALLY
|
||||
10 CODEMACROERR . . . LITERALLY
|
||||
3 CODEMACROHEAD. . . LITERALLY
|
||||
9 CONSOLE. . . . . . LITERALLY 256 283
|
||||
67 0000H CONSTAT. . . . . . PROCEDURE BYTE EXTERNAL(22) STACK=0000H 231
|
||||
2 CR . . . . . . . . LITERALLY
|
||||
92 0000H CREATEFILE . . . . PROCEDURE BYTE EXTERNAL(31) STACK=0000H
|
||||
100 0000H CRLF . . . . . . . PROCEDURE EXTERNAL(34) STACK=0000H 238 293
|
||||
212 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(84) 251
|
||||
44 0000H 2 D. . . . . . . . . WORD PARAMETER 45
|
||||
41 0000H 2 D. . . . . . . . . WORD PARAMETER 42
|
||||
35 0000H 2 D. . . . . . . . . WORD PARAMETER 36
|
||||
38 0000H 2 D. . . . . . . . . WORD PARAMETER 39
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 6
|
||||
|
||||
|
||||
216 0000H DECODELINE . . . . PROCEDURE EXTERNAL(117) STACK=0000H 334
|
||||
44 0000H DECOUT . . . . . . PROCEDURE EXTERNAL(11) STACK=0000H 287 290
|
||||
4 DELETEDSYMB. . . . LITERALLY
|
||||
83 0000H DELETEFILE . . . . PROCEDURE EXTERNAL(28) STACK=0000H
|
||||
194 0000H 2 DEST . . . . . . . WORD PARAMETER 195
|
||||
137 0000H 1 DEV. . . . . . . . BYTE PARAMETER 138
|
||||
20 0000H DIGIT. . . . . . . PROCEDURE BYTE EXTERNAL(3) STACK=0000H
|
||||
71 0000H 1 DISKNUMBER . . . . BYTE PARAMETER 72
|
||||
215 0000H 1 DISKREADERRTEXT. . BYTE ARRAY(1) EXTERNAL(109)
|
||||
215 0000H 1 DISKWRITEERRTXT. . BYTE ARRAY(1) EXTERNAL(110)
|
||||
97 0000H 2 DMAADDRESS . . . . WORD PARAMETER 98
|
||||
4 DOUBLEDEFINED. . . LITERALLY
|
||||
10 DOUBLEDEFLAB . . . LITERALLY
|
||||
10 DOUBLEDEFSYMB. . . LITERALLY
|
||||
10 DOUBLEDEFVAR . . . LITERALLY
|
||||
5 DWRD . . . . . . . LITERALLY
|
||||
177 0000H EJECT. . . . . . . PROCEDURE EXTERNAL(68) STACK=0000H
|
||||
2 ELSEDO . . . . . . LITERALLY
|
||||
146 0000H EMITCODEBYTE . . . PROCEDURE EXTERNAL(55) STACK=0000H
|
||||
142 0000H EMITINIT . . . . . PROCEDURE EXTERNAL(53) STACK=0000H 268
|
||||
144 0000H EMITTERMINATE. . . PROCEDURE EXTERNAL(54) STACK=0000H 281
|
||||
161 0000H EMPTYLINE. . . . . PROCEDURE BYTE EXTERNAL(61) STACK=0000H
|
||||
56 0000H 2 ENDBUF . . . . . . WORD EXTERNAL(17)
|
||||
2 ENDCASE. . . . . . LITERALLY
|
||||
2 ENDDO. . . . . . . LITERALLY
|
||||
2 ENDFOREVER . . . . LITERALLY 242
|
||||
2 ENDIF. . . . . . . LITERALLY 305
|
||||
2 ENDMODULE. . . . . LITERALLY
|
||||
2 ENDOFFILE. . . . . LITERALLY
|
||||
10 ENDOFLINEERR . . . LITERALLY
|
||||
180 0000H 2 ENDOFSYMBTAB . . . WORD EXTERNAL(70) 279
|
||||
2 ENDPROC. . . . . . LITERALLY
|
||||
215 0000H 1 ENDTEXT. . . . . . BYTE ARRAY(1) EXTERNAL(104) 286
|
||||
2 ENDWHILE . . . . . LITERALLY
|
||||
197 0000H ENTERATTRIBUTES. . PROCEDURE EXTERNAL(77) STACK=0000H
|
||||
212 0000H 1 EOFSET . . . . . . BYTE EXTERNAL(92) 297 300 326 329
|
||||
35 0000H EQUAL. . . . . . . PROCEDURE BYTE EXTERNAL(8) STACK=0000H
|
||||
209 0000H ERRMSG . . . . . . PROCEDURE EXTERNAL(81) STACK=0000H
|
||||
209 0000H 1 ERRNO. . . . . . . BYTE PARAMETER 210
|
||||
4 ERROR. . . . . . . LITERALLY
|
||||
212 0000H 1 ERRORPRINTED . . . BYTE EXTERNAL(93) 280 333
|
||||
212 0000H 2 ERRORS . . . . . . WORD EXTERNAL(91) 247 287
|
||||
2 FALSE. . . . . . . LITERALLY 232 242 248 254 259 274 280
|
||||
300 333 335
|
||||
53 0000H 1 FCB. . . . . . . . BYTE ARRAY(1) EXTERNAL(14)
|
||||
54 0000H 1 FCB16. . . . . . . BYTE ARRAY(1) EXTERNAL(15)
|
||||
83 0000H 2 FCBADDRESS . . . . WORD PARAMETER 84
|
||||
92 0000H 2 FCBADDRESS . . . . WORD PARAMETER 93
|
||||
89 0000H 2 FCBADDRESS . . . . WORD PARAMETER 90
|
||||
86 0000H 2 FCBADDRESS . . . . WORD PARAMETER 87
|
||||
80 0000H 2 FCBADDRESS . . . . WORD PARAMETER 81
|
||||
77 0000H 2 FCBADDRESS . . . . WORD PARAMETER 78
|
||||
74 0000H 2 FCBADDRESS . . . . WORD PARAMETER 75
|
||||
14 0000H 2 FCBADR . . . . . . WORD PARAMETER 15
|
||||
14 0000H FILEABORT. . . . . PROCEDURE EXTERNAL(1) STACK=0000H
|
||||
3 FILEISTRUCTURE . . LITERALLY
|
||||
3 FILEOSTRUCTURE . . LITERALLY
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 7
|
||||
|
||||
|
||||
140 0000H FILESETUP. . . . . PROCEDURE BYTE EXTERNAL(52) STACK=0000H 310
|
||||
10 FILESYNTERR. . . . LITERALLY
|
||||
17 0000H FILL . . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H 246
|
||||
137 0000H 2 FILNAM . . . . . . WORD PARAMETER 138
|
||||
137 0000H 2 FILTYP . . . . . . WORD PARAMETER 138
|
||||
200 0000H FINDCODEMACRO. . . PROCEDURE BYTE EXTERNAL(78) STACK=0000H
|
||||
191 0000H FINDSYMBOL . . . . PROCEDURE BYTE EXTERNAL(75) STACK=0000H
|
||||
10 FIRSTITEM. . . . . LITERALLY
|
||||
295 0004H 1 FLAG . . . . . . . BYTE PARAMETER AUTOMATIC 296 301
|
||||
2 FOREVER. . . . . . LITERALLY 235
|
||||
2 FORMFEED . . . . . LITERALLY
|
||||
179 0000H 2 FREEPT . . . . . . WORD EXTERNAL(69) 279
|
||||
212 0000H 1 FULLSYMBTAB. . . . BYTE EXTERNAL(94)
|
||||
47 0000H 1 FUNC . . . . . . . BYTE PARAMETER 48
|
||||
50 0000H 1 FUNC . . . . . . . BYTE PARAMETER 51
|
||||
194 0000H GETATTRIBUTES. . . PROCEDURE EXTERNAL(76) STACK=0000H
|
||||
213 0000H GLOBALINIT . . . . PROCEDURE EXTERNAL(99) STACK=0000H 308
|
||||
212 0000H 5 HELP . . . . . . . BYTE ARRAY(5) EXTERNAL(97) 287 288 290
|
||||
291
|
||||
38 0000H HEX1OUT. . . . . . PROCEDURE EXTERNAL(9) STACK=0000H
|
||||
41 0000H HEX2OUT. . . . . . PROCEDURE EXTERNAL(10) STACK=0000H
|
||||
212 0000H 1 I. . . . . . . . . BYTE EXTERNAL(98) 237 239 241
|
||||
4 IDENT. . . . . . . LITERALLY
|
||||
137 0000H IFILESETUP . . . . PROCEDURE EXTERNAL(51) STACK=0000H
|
||||
212 0000H 1 IFLEVEL. . . . . . BYTE EXTERNAL(96) 249
|
||||
212 0000H 1 IFLIST . . . . . . BYTE EXTERNAL(87) 250
|
||||
10 IFPARERR . . . . . LITERALLY
|
||||
10 ILLEGALMACRO . . . LITERALLY
|
||||
10 ILLEGALPSEUDO. . . LITERALLY
|
||||
10 ILLEXPRELEM. . . . LITERALLY
|
||||
10 ILLIOPER . . . . . LITERALLY
|
||||
295 0232H 44 INCLUDECLOSE . . . PROCEDURE STACK=0006H 335 337
|
||||
212 0000H 1 INCLUDEON. . . . . BYTE EXTERNAL(95) 248 297 300
|
||||
3 INDEXREGBIT. . . . LITERALLY
|
||||
3 INDEXREGCOUNT. . . LITERALLY
|
||||
50 0000H 2 INFO . . . . . . . WORD PARAMETER 51
|
||||
47 0000H 2 INFO . . . . . . . WORD PARAMETER 48
|
||||
113 0000H ININCLUDEBYTE. . . PROCEDURE BYTE EXTERNAL(39) STACK=0000H
|
||||
2 INIT . . . . . . . LITERALLY
|
||||
215 0000H 1 INITIALS . . . . . BYTE ARRAY(1) EXTERNAL(102)
|
||||
111 0000H INSOURCEBYTE . . . PROCEDURE BYTE EXTERNAL(38) STACK=0000H
|
||||
10 INSTRERR . . . . . LITERALLY
|
||||
95 0000H INTERROGATEDISK. . PROCEDURE BYTE EXTERNAL(32) STACK=0000H
|
||||
3 IREGBIT. . . . . . LITERALLY
|
||||
3 IREGCOUNT. . . . . LITERALLY
|
||||
4 LAB. . . . . . . . LITERALLY
|
||||
10 LABOUTOFRANGE. . . LITERALLY
|
||||
8 LEFTBRACKET. . . . LITERALLY
|
||||
23 0000H LETTER . . . . . . PROCEDURE BYTE EXTERNAL(4) STACK=0000H
|
||||
2 LF . . . . . . . . LITERALLY
|
||||
206 0000H 1 LG . . . . . . . . BYTE PARAMETER 207
|
||||
203 0000H 1 LG . . . . . . . . BYTE PARAMETER 204
|
||||
200 0000H 1 LG . . . . . . . . BYTE PARAMETER 201
|
||||
191 0000H 1 LG . . . . . . . . BYTE PARAMETER 192
|
||||
188 0000H 1 LG . . . . . . . . BYTE PARAMETER 189
|
||||
185 0000H 1 LG . . . . . . . . BYTE PARAMETER 186
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4 5 6 7 8
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 8
|
||||
|
||||
|
||||
9 10
|
||||
188 0000H 2 MACDEFPT . . . . . WORD PARAMETER 189
|
||||
1 0002H 203 MAINP. . . . . . . PROCEDURE STACK=0010H
|
||||
215 0000H 1 MAKEERRTEXT. . . . BYTE ARRAY(1) EXTERNAL(111)
|
||||
212 0000H 1 MAXCOL . . . . . . BYTE EXTERNAL(88) 255 257
|
||||
0000H MEMORY . . . . . . BYTE ARRAY(0) 279
|
||||
10 MISSIFERR. . . . . LITERALLY
|
||||
10 MISSINGPSEUDO. . . LITERALLY
|
||||
10 MISSINSTR. . . . . LITERALLY
|
||||
10 MISSSEGMINFO . . . LITERALLY
|
||||
10 MISSTYPEINFO . . . LITERALLY
|
||||
47 0000H MON1 . . . . . . . PROCEDURE EXTERNAL(12) STACK=0000H
|
||||
50 0000H MON2 . . . . . . . PROCEDURE BYTE EXTERNAL(13) STACK=0000H
|
||||
35 0000H 1 N. . . . . . . . . BYTE PARAMETER 36
|
||||
17 0000H 1 N. . . . . . . . . BYTE PARAMETER 18
|
||||
44 0000H 2 N. . . . . . . . . WORD PARAMETER 45
|
||||
41 0000H 2 N. . . . . . . . . WORD PARAMETER 42
|
||||
38 0000H 1 N. . . . . . . . . BYTE PARAMETER 39
|
||||
4 NEGLECTED. . . . . LITERALLY
|
||||
10 NEGLECTERR . . . . LITERALLY
|
||||
10 NESTEDIFERR. . . . LITERALLY
|
||||
10 NESTEDINCLUDEERR . LITERALLY
|
||||
203 0000H NEWCMBODY. . . . . PROCEDURE BYTE EXTERNAL(79) STACK=0000H
|
||||
206 0000H NEWCMNAME. . . . . PROCEDURE BYTE EXTERNAL(80) STACK=0000H
|
||||
188 0000H NEWMACRO . . . . . PROCEDURE BYTE EXTERNAL(74) STACK=0000H
|
||||
185 0000H NEWSYMBOL. . . . . PROCEDURE BYTE EXTERNAL(73) STACK=0000H
|
||||
5 NIL. . . . . . . . LITERALLY
|
||||
215 0000H 1 NO . . . . . . . . BYTE EXTERNAL(101) 241
|
||||
3 NOOVERCOUNT. . . . LITERALLY
|
||||
3 NOOVERRIDEBIT. . . LITERALLY
|
||||
9 NULL . . . . . . . LITERALLY
|
||||
4 NUMBER . . . . . . LITERALLY
|
||||
8 OAND . . . . . . . LITERALLY
|
||||
8 OEQ. . . . . . . . LITERALLY
|
||||
8 OGE. . . . . . . . LITERALLY
|
||||
8 OGT. . . . . . . . LITERALLY
|
||||
8 OLAST. . . . . . . LITERALLY
|
||||
8 OLE. . . . . . . . LITERALLY
|
||||
8 OLENGTH. . . . . . LITERALLY
|
||||
8 OLT. . . . . . . . LITERALLY
|
||||
8 OMOD . . . . . . . LITERALLY
|
||||
8 ONE. . . . . . . . LITERALLY
|
||||
8 ONOT . . . . . . . LITERALLY
|
||||
8 OOFFSET. . . . . . LITERALLY
|
||||
8 OOR. . . . . . . . LITERALLY
|
||||
215 0000H 1 OPENERRTEXT. . . . BYTE ARRAY(1) EXTERNAL(108)
|
||||
74 0000H OPENFILE . . . . . PROCEDURE BYTE EXTERNAL(25) STACK=0000H
|
||||
119 0000H OPENHEX. . . . . . PROCEDURE EXTERNAL(42) STACK=0000H 227
|
||||
117 0000H OPENINCLUDE. . . . PROCEDURE EXTERNAL(41) STACK=0000H
|
||||
225 00DEH 14 OPENOUTPUTFILES. . PROCEDURE STACK=0004H 316
|
||||
121 0000H OPENPRINT. . . . . PROCEDURE EXTERNAL(43) STACK=0000H 226
|
||||
77 0000H OPENROFILE . . . . PROCEDURE BYTE EXTERNAL(26) STACK=0000H
|
||||
115 0000H OPENSOURCE . . . . PROCEDURE EXTERNAL(40) STACK=0000H 315
|
||||
123 0000H OPENSYMBOL . . . . PROCEDURE EXTERNAL(44) STACK=0000H 228
|
||||
3 OPERANDSTRUC . . . LITERALLY
|
||||
4 OPERATOR . . . . . LITERALLY
|
||||
10 OPMISMATCH . . . . LITERALLY
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 9
|
||||
|
||||
|
||||
8 OPTR . . . . . . . LITERALLY
|
||||
8 OSEG . . . . . . . LITERALLY
|
||||
8 OSHL . . . . . . . LITERALLY
|
||||
8 OSHORT . . . . . . LITERALLY
|
||||
8 OSHR . . . . . . . LITERALLY
|
||||
8 OTYPE. . . . . . . LITERALLY
|
||||
102 0000H OUTHEXBYTE . . . . PROCEDURE EXTERNAL(35) STACK=0000H
|
||||
105 0000H OUTPRINTBYTE . . . PROCEDURE EXTERNAL(36) STACK=0000H
|
||||
108 0000H OUTSYMBOLBYTE. . . PROCEDURE EXTERNAL(37) STACK=0000H
|
||||
11 0000H OUTTEXT. . . . . . PROCEDURE EXTERNAL(0) STACK=0000H 236 271
|
||||
275 286 288 289 291 309 312
|
||||
8 OXOR . . . . . . . LITERALLY
|
||||
215 0000H 1 PAGETEXT . . . . . BYTE ARRAY(1) EXTERNAL(103)
|
||||
215 0000H 1 PARERRTEXT . . . . BYTE ARRAY(1) EXTERNAL(107) 312
|
||||
212 0000H 1 PASS . . . . . . . BYTE EXTERNAL(82) 317 318 319 330 340
|
||||
253 015AH 38 PASS0INIT. . . . . PROCEDURE STACK=000EH 320
|
||||
270 0198H 12 PASS0TERMINATE . . PROCEDURE STACK=0006H 341
|
||||
215 0000H 1 PASS0TEXT. . . . . BYTE ARRAY(1) EXTERNAL(115) 271
|
||||
262 0180H 8 PASS1INIT. . . . . PROCEDURE STACK=000EH 321
|
||||
273 01A4H 17 PASS1TERMINATE . . PROCEDURE STACK=0006H 342
|
||||
215 0000H 1 PASS1TEXT. . . . . BYTE ARRAY(1) EXTERNAL(116) 275
|
||||
265 0188H 16 PASS2INIT. . . . . PROCEDURE STACK=000EH 322
|
||||
277 01B5H 125 PASS2TERMINATE . . PROCEDURE STACK=0008H 343
|
||||
7 PCODEMACRO . . . . LITERALLY
|
||||
7 PCSEG. . . . . . . LITERALLY
|
||||
7 PDB. . . . . . . . LITERALLY
|
||||
7 PDBIT. . . . . . . LITERALLY
|
||||
7 PDD. . . . . . . . LITERALLY
|
||||
7 PDSEG. . . . . . . LITERALLY
|
||||
7 PDW. . . . . . . . LITERALLY
|
||||
7 PEJECT . . . . . . LITERALLY
|
||||
7 PEND . . . . . . . LITERALLY
|
||||
7 PENDIF . . . . . . LITERALLY
|
||||
7 PENDM. . . . . . . LITERALLY
|
||||
7 PEQU . . . . . . . LITERALLY
|
||||
7 PESEG. . . . . . . LITERALLY
|
||||
7 PIF. . . . . . . . LITERALLY
|
||||
7 PIFLIST. . . . . . LITERALLY
|
||||
7 PINCLUDE . . . . . LITERALLY
|
||||
7 PLIST. . . . . . . LITERALLY
|
||||
7 PMODRM . . . . . . LITERALLY
|
||||
7 PNOIFLIST. . . . . LITERALLY
|
||||
7 PNOLIST. . . . . . LITERALLY
|
||||
7 PNOSEGFIX. . . . . LITERALLY
|
||||
7 PORG . . . . . . . LITERALLY
|
||||
7 PPAGESIZE. . . . . LITERALLY
|
||||
7 PPAGEWIDTH . . . . LITERALLY
|
||||
7 PRB. . . . . . . . LITERALLY
|
||||
7 PRELB. . . . . . . LITERALLY
|
||||
7 PRELW. . . . . . . LITERALLY
|
||||
166 0000H PRINTCRLF. . . . . PROCEDURE EXTERNAL(63) STACK=0000H
|
||||
212 0000H 1 PRINTDEVICE. . . . BYTE EXTERNAL(89) 256 283
|
||||
9 PRINTER. . . . . . LITERALLY
|
||||
172 0000H PRINTINIT. . . . . PROCEDURE EXTERNAL(66) STACK=0000H
|
||||
168 0000H PRINTNEWPAGE . . . PROCEDURE EXTERNAL(64) STACK=0000H
|
||||
212 0000H 1 PRINTON. . . . . . BYTE EXTERNAL(85) 246 259 266 274
|
||||
163 0000H PRINTSINGLEBYTE. . PROCEDURE EXTERNAL(62) STACK=0000H
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 10
|
||||
|
||||
|
||||
170 0000H PRINTSOURCELINE. . PROCEDURE EXTERNAL(65) STACK=0000H
|
||||
212 0000H 1 PRINTSWITCHOFF . . BYTE EXTERNAL(86) 248
|
||||
174 0000H PRINTTERMINATE . . PROCEDURE EXTERNAL(67) STACK=0000H 284
|
||||
2 PROC . . . . . . . LITERALLY 26 29 38 41 44 102 105
|
||||
108 111 113 115 117 119 121 123 125 127
|
||||
129 131 133 135 137 140 142 144 146 149
|
||||
151 153 155 158 161 163 166 168 170 172
|
||||
174 177 181 183 185 188 191 194 197 200
|
||||
203 206 209 216 230 245 253 262 265 270
|
||||
273 277 295
|
||||
7 PRS. . . . . . . . LITERALLY
|
||||
7 PRW. . . . . . . . LITERALLY
|
||||
7 PSEGFIX. . . . . . LITERALLY
|
||||
4 PSEUDO . . . . . . LITERALLY
|
||||
10 PSEUDOOPERR. . . . LITERALLY
|
||||
7 PSIMFORM . . . . . LITERALLY
|
||||
7 PSSEG. . . . . . . LITERALLY
|
||||
17 0000H 2 PT . . . . . . . . WORD PARAMETER 18
|
||||
7 PTITLE . . . . . . LITERALLY
|
||||
203 0000H 2 PTR. . . . . . . . WORD PARAMETER 204
|
||||
6 RAH. . . . . . . . LITERALLY
|
||||
6 RAL. . . . . . . . LITERALLY
|
||||
6 RAX. . . . . . . . LITERALLY
|
||||
6 RBH. . . . . . . . LITERALLY
|
||||
6 RBL. . . . . . . . LITERALLY
|
||||
6 RBP. . . . . . . . LITERALLY
|
||||
6 RBX. . . . . . . . LITERALLY
|
||||
6 RCH. . . . . . . . LITERALLY
|
||||
6 RCL. . . . . . . . LITERALLY
|
||||
6 RCS. . . . . . . . LITERALLY 251
|
||||
6 RCX. . . . . . . . LITERALLY
|
||||
6 RDH. . . . . . . . LITERALLY
|
||||
6 RDI. . . . . . . . LITERALLY
|
||||
6 RDL. . . . . . . . LITERALLY
|
||||
6 RDS. . . . . . . . LITERALLY
|
||||
6 RDX. . . . . . . . LITERALLY
|
||||
59 0000H READCONSOLE. . . . PROCEDURE BYTE EXTERNAL(19) STACK=0000H 233
|
||||
237
|
||||
86 0000H READRECORD . . . . PROCEDURE BYTE EXTERNAL(29) STACK=0000H
|
||||
2 REENT. . . . . . . LITERALLY
|
||||
4 REG. . . . . . . . LITERALLY
|
||||
6 RES. . . . . . . . LITERALLY
|
||||
200 0000H 2 RESULT . . . . . . WORD PARAMETER 201
|
||||
191 0000H 2 RESULT . . . . . . WORD PARAMETER 192
|
||||
185 0000H 2 RESULT . . . . . . WORD PARAMETER 186
|
||||
206 0000H 2 RETURNPTR. . . . . WORD PARAMETER 207
|
||||
127 0000H REWINDSOURCE . . . PROCEDURE EXTERNAL(46) STACK=0000H
|
||||
8 RIGHTBRACKET . . . LITERALLY
|
||||
6 RSI. . . . . . . . LITERALLY
|
||||
6 RSP. . . . . . . . LITERALLY
|
||||
6 RSS. . . . . . . . LITERALLY
|
||||
35 0000H 2 S. . . . . . . . . WORD PARAMETER 36
|
||||
151 0000H SCAN . . . . . . . PROCEDURE EXTERNAL(57) STACK=0000H 303 304
|
||||
325 336
|
||||
149 0000H SCANINIT . . . . . PROCEDURE EXTERNAL(56) STACK=0000H 324
|
||||
3 SEGMBIT. . . . . . LITERALLY
|
||||
3 SEGMCOUNT. . . . . LITERALLY
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 11
|
||||
|
||||
|
||||
3 SEGTYPEBIT . . . . LITERALLY
|
||||
3 SEGTYPECOUNT . . . LITERALLY
|
||||
71 0000H SELECTDISK . . . . PROCEDURE EXTERNAL(24) STACK=0000H
|
||||
97 0000H SETDMAADDRESS. . . PROCEDURE EXTERNAL(33) STACK=0000H
|
||||
212 0000H 1 SIMFORM. . . . . . BYTE EXTERNAL(90) 254
|
||||
153 0000H SKIPRESTOFLINE . . PROCEDURE EXTERNAL(58) STACK=0000H
|
||||
158 0000H SKIPUNTIL. . . . . PROCEDURE BYTE EXTERNAL(60) STACK=0000H
|
||||
197 0000H 2 SOURCE . . . . . . WORD PARAMETER 198
|
||||
2 SPACE. . . . . . . LITERALLY
|
||||
4 SPEC . . . . . . . LITERALLY
|
||||
155 0000H SPECIALTOKEN . . . PROCEDURE BYTE EXTERNAL(59) STACK=0000H
|
||||
200 0000H 2 STRADR . . . . . . WORD PARAMETER 201
|
||||
191 0000H 2 STRADR . . . . . . WORD PARAMETER 192
|
||||
188 0000H 2 STRADR . . . . . . WORD PARAMETER 189
|
||||
185 0000H 2 STRADR . . . . . . WORD PARAMETER 186
|
||||
4 STRING . . . . . . LITERALLY
|
||||
2 STRUC. . . . . . . LITERALLY
|
||||
197 0000H 2 SYMBADR. . . . . . WORD PARAMETER 198
|
||||
194 0000H 2 SYMBADR. . . . . . WORD PARAMETER 195
|
||||
215 0000H 1 SYMBFULLERRTEXT. . BYTE ARRAY(1) EXTERNAL(113)
|
||||
183 0000H SYMBINIT . . . . . PROCEDURE EXTERNAL(72) STACK=0000H 258
|
||||
4 SYMBOL . . . . . . LITERALLY
|
||||
3 SYMBOLHEAD . . . . LITERALLY
|
||||
3 SYMBOLSTRUC. . . . LITERALLY
|
||||
181 0000H SYMBTERMINATE. . . PROCEDURE EXTERNAL(71) STACK=0000H 282
|
||||
57 0000H SYSTEMRESET. . . . PROCEDURE EXTERNAL(18) STACK=0000H 313 348
|
||||
11 0000H 2 T. . . . . . . . . WORD PARAMETER 12
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
55 0000H 1 TBUFF. . . . . . . BYTE ARRAY(1) EXTERNAL(16)
|
||||
14 0000H 2 TEXTADR. . . . . . WORD PARAMETER 15
|
||||
2 THENDO . . . . . . LITERALLY 297 301 310 327
|
||||
158 0000H 1 TOK. . . . . . . . BYTE PARAMETER 159
|
||||
155 0000H 1 TOK. . . . . . . . BYTE PARAMETER 156
|
||||
2 TRUE . . . . . . . LITERALLY 235 240 250 266 329 337
|
||||
146 0000H 1 TYP. . . . . . . . BYTE PARAMETER 147
|
||||
3 TYPEBIT. . . . . . LITERALLY
|
||||
3 TYPECOUNT. . . . . LITERALLY
|
||||
4 UDEFSYMB . . . . . LITERALLY
|
||||
10 UDEFSYMBOL . . . . LITERALLY
|
||||
32 0000H UPPER. . . . . . . PROCEDURE BYTE EXTERNAL(7) STACK=0000H 237
|
||||
215 0000H 1 USBREAKTEXT. . . . BYTE ARRAY(1) EXTERNAL(114) 236
|
||||
278 0000H 1 USEFACT. . . . . . BYTE 279 284 290
|
||||
174 0000H 1 USEFACT. . . . . . BYTE PARAMETER 175
|
||||
215 0000H 1 USEFACTOR. . . . . BYTE ARRAY(1) EXTERNAL(105) 289
|
||||
230 00ECH 63 USERBREAK. . . . . PROCEDURE BYTE STACK=0006H 327
|
||||
9 VALIDDISK. . . . . LITERALLY
|
||||
4 VARIABLE . . . . . LITERALLY
|
||||
245 012BH 47 VARINIT. . . . . . PROCEDURE STACK=000AH 260 263 267
|
||||
69 0000H VERSION. . . . . . PROCEDURE WORD EXTERNAL(23) STACK=0000H
|
||||
5 WRD. . . . . . . . LITERALLY
|
||||
61 0000H WRITECONSOLE . . . PROCEDURE EXTERNAL(20) STACK=0000H 292
|
||||
64 0000H WRITELIST. . . . . PROCEDURE EXTERNAL(21) STACK=0000H
|
||||
89 0000H WRITERECORD. . . . PROCEDURE BYTE EXTERNAL(30) STACK=0000H
|
||||
215 0000H 1 YES. . . . . . . . BYTE EXTERNAL(100) 239
|
||||
PL/M-86 COMPILER ASM86 MAIN PROGRAM 10/5/81 PAGE 12
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 025EH 606D
|
||||
CONSTANT AREA SIZE = 0000H 0D
|
||||
VARIABLE AREA SIZE = 0001H 1D
|
||||
MAXIMUM STACK SIZE = 0010H 16D
|
||||
932 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,185 @@
|
||||
$title ('ASM86 MAIN PROGRAM')
|
||||
mainp:
|
||||
do;
|
||||
/*
|
||||
|
||||
This is the main program of the CP/M 8086
|
||||
assembler. This module activates the i/o
|
||||
modules and goes through the source text
|
||||
in 3 passes. The module then for each source
|
||||
line calls the external subroutine DECODELINE
|
||||
to perform assembly of each line;
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
modified 3/25/81 R. Silberstein
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 3/30/81 R. Silberstein
|
||||
modified 4/7/81 R. Silberstein
|
||||
modified 4/20/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
modified 7/24/81 R. Silberstein
|
||||
modified 7/27/81 R. Silberstein
|
||||
modified 8/21/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
$include (:f1:struc.lit)
|
||||
$include (:f1:equals.lit)
|
||||
$include (:f1:dev.lit)
|
||||
$include (:f1:ermod.lit)
|
||||
$include (:f1:subr2.ext)
|
||||
$include (:f1:io.ext)
|
||||
$include (:f1:files.ext)
|
||||
$include (:f1:outp.ext)
|
||||
$include (:f1:scan.ext)
|
||||
$include (:f1:print.ext)
|
||||
$include (:f1:symb.ext)
|
||||
$include (:f1:ermod.ext)
|
||||
$include (:f1:mglob.ext)
|
||||
$include (:f1:text.ext)
|
||||
$include (:f1:dline.ext)
|
||||
|
||||
DECLARE ASM86 LABEL PUBLIC;
|
||||
|
||||
closefiles: procedure;
|
||||
call close$source;
|
||||
call close$print;
|
||||
call close$symbol;
|
||||
call close$hex;
|
||||
end closefiles;
|
||||
|
||||
open$output$files: procedure;
|
||||
CALL OPENPRINT;
|
||||
CALL OPENHEX;
|
||||
CALL OPENSYMBOL;
|
||||
end open$output$files;
|
||||
|
||||
userbreak: proc byte; /* test if keyboard break from user */
|
||||
if not constat then return false; /* test console status */
|
||||
if readconsole then; /* skip first break key */
|
||||
do forever;
|
||||
call outtext(.usbreaktext); /* USER BREAK. OK (Y/N)? */
|
||||
i=upper(readconsole);
|
||||
call crlf;
|
||||
if i = yes then return true;
|
||||
if i = no then return false;
|
||||
end$forever;
|
||||
end userbreak;
|
||||
|
||||
varinit: proc;
|
||||
CALL FILL (0, .PRINT$ON-.CIP, .CIP);
|
||||
errors=0;
|
||||
printswitchoff,includeon=false;
|
||||
IFLEVEL = 0;
|
||||
IFLIST = TRUE;
|
||||
csegtype=rcs;
|
||||
end varinit;
|
||||
|
||||
pass0init: proc; /* initialize pass 0 */
|
||||
simform=false;
|
||||
maxcol=119;
|
||||
if printdevice=console then maxcol=79;
|
||||
call symbinit; /* initialize symbol table */
|
||||
print$on=false;
|
||||
call varinit;
|
||||
end pass0init;
|
||||
|
||||
pass1init: proc; /* initialize for pass 1 */
|
||||
call varinit;
|
||||
end pass1init;
|
||||
|
||||
pass2init: proc; /* initialize for pass 2 (last pass) */
|
||||
print$on=true;
|
||||
call varinit;
|
||||
call emitinit;
|
||||
end pass2init;
|
||||
|
||||
pass0terminate: proc; /* terminate pass 0 */
|
||||
call outtext(.pass0text); /* End of pass 0 */
|
||||
end pass0terminate;
|
||||
|
||||
pass1terminate: proc; /* terminate pass 1 */
|
||||
print$on=false; /* dummy */
|
||||
call outtext(.pass1text); /* End of pass 1 */
|
||||
end pass1terminate;
|
||||
|
||||
pass2terminate: proc; /* terminate pass 2 (last pass) */
|
||||
DECLARE USEFACT BYTE;
|
||||
USEFACT = (FREEPT-.MEMORY) / ((ENDOFSYMBTAB-.MEMORY) / 100 + 1);
|
||||
errorprinted=false;
|
||||
call emitterminate; /* terminate hex output module */
|
||||
call symbterminate; /* print symbols */
|
||||
if printdevice <> console then call printterminate (USEFACT);
|
||||
CALL CLOSEFILES;
|
||||
call outtext(.endtext); /* END OF ASSEMBLY... */
|
||||
call decout(errors,.help(0)); /* print no of errors */
|
||||
call outtext(.help(2));
|
||||
CALL OUTTEXT (.USEFACTOR);
|
||||
CALL DECOUT (USEFACT, .HELP(0));
|
||||
CALL OUTTEXT (.HELP(3));
|
||||
CALL WRITECONSOLE (25H); /* % */
|
||||
CALL CRLF;
|
||||
end pass2terminate;
|
||||
|
||||
include$close: proc (flag);
|
||||
declare flag byte;
|
||||
if eofset and include$on then$do
|
||||
call close$include;
|
||||
include$on,eofset=false;
|
||||
if flag then$do
|
||||
call scan; /* skip EOF */
|
||||
call scan; /* prepare for next source line */
|
||||
end$if;
|
||||
end$if;
|
||||
end include$close;
|
||||
|
||||
ASM86:
|
||||
|
||||
call globalinit; /* initialize some globals */
|
||||
|
||||
call outtext(.asm86text); /* CP/M 8086 ASSEMBLER.... */
|
||||
|
||||
if not filesetup then$do
|
||||
call outtext(.parerrtext); /* PARAMETER ERROR */
|
||||
CALL SYSTEMRESET;
|
||||
end$if;
|
||||
|
||||
CALL OPENSOURCE;
|
||||
|
||||
CALL OPENOUTPUTFILES;
|
||||
|
||||
pass=0ffh;
|
||||
do while (pass:=pass+1) < 3;
|
||||
do case pass;
|
||||
call pass0init; /* pass 0 */
|
||||
call pass1init; /* pass 1 */
|
||||
call pass2init; /* pass 2 */
|
||||
end$case;
|
||||
call scaninit;
|
||||
call scan;
|
||||
do while not eofset;
|
||||
if userbreak then$do
|
||||
eofset=true;
|
||||
pass=3;
|
||||
else$do
|
||||
errorprinted=false;
|
||||
call decodeline;
|
||||
call includeclose(false); /* close include file if necessary */
|
||||
call scan;
|
||||
call includeclose(true); /* close include file if necessary */
|
||||
end$if;
|
||||
end$while;
|
||||
do case pass;
|
||||
call pass0terminate; /* pass 0 */
|
||||
call pass1terminate; /* pass 1 */
|
||||
call pass2terminate; /* pass 2 */
|
||||
do; end; /* do nothing if userbreak */
|
||||
end$case;
|
||||
end$while;
|
||||
|
||||
call system$reset;
|
||||
|
||||
end$module mainp;
|
||||
@@ -0,0 +1,45 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 3/28/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
dcl
|
||||
pass byte external, /* current pass no, 1,2,3 */
|
||||
|
||||
/* address counters */
|
||||
|
||||
cip addr external, /* current instruction pointer */
|
||||
csegtype byte external, /* current segment type, code,data,
|
||||
stack or extra data */
|
||||
|
||||
/* print output parameters */
|
||||
|
||||
print$on byte external, /* on/off flag */
|
||||
printswitchoff byte external, /* set/reset by NOLIST/LIST */
|
||||
IFLIST BYTE EXTERNAL, /* SET/RESET BY IFLIST/NOIFLIST */
|
||||
maxcol byte external, /* pagewidth */
|
||||
printdevice byte external, /* printfile device */
|
||||
simform byte external, /* true if formfeed simulation */
|
||||
|
||||
/* io error status */
|
||||
|
||||
errors addr external, /* counts no of errors */
|
||||
eofset byte external, /* true if end-of-file found */
|
||||
|
||||
/* Mischellaneous variables: */
|
||||
|
||||
errorprinted byte external, /* true if an error is printed */
|
||||
fullsymbtab byte external, /* full if symboltable is full */
|
||||
include$on byte external, /* true if INCLUDEfile input */
|
||||
IFLEVEL BYTE EXTERNAL, /* IF-ENDIF NESTING LEVEL */
|
||||
help(5) byte external, /* ascii number scratch area */
|
||||
i byte external; /* scratch variable */
|
||||
|
||||
globalinit: procedure external; /* initiate some globals */
|
||||
end globalinit;
|
||||
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,66 @@
|
||||
$nolist
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
dcl
|
||||
push byte external,
|
||||
repz byte external,
|
||||
aaa byte external,
|
||||
movs byte external,
|
||||
pushf byte external,
|
||||
MOVSB BYTE EXTERNAL,
|
||||
adc byte external,
|
||||
add byte external,
|
||||
CMPSW BYTE EXTERNAL,
|
||||
ja byte external,
|
||||
dec byte external,
|
||||
loopne byte external,
|
||||
repnz byte external,
|
||||
jae byte external,
|
||||
jg byte external,
|
||||
clc byte external,
|
||||
iand byte external,
|
||||
loopz byte external,
|
||||
aas byte external,
|
||||
jl byte external,
|
||||
in byte external,
|
||||
cli byte external,
|
||||
jo byte external,
|
||||
inc byte external,
|
||||
lahf byte external,
|
||||
icall byte external,
|
||||
jne byte external,
|
||||
cwd byte external,
|
||||
jnbe byte external,
|
||||
cmp byte external,
|
||||
ior byte external,
|
||||
callf byte external,
|
||||
div byte external,
|
||||
les byte external,
|
||||
sar byte external,
|
||||
jmp byte external,
|
||||
hlt byte external,
|
||||
lock byte external,
|
||||
xchg byte external,
|
||||
ret byte external,
|
||||
idiv byte external,
|
||||
jmpf byte external,
|
||||
mul byte external,
|
||||
pop byte external,
|
||||
sti byte external,
|
||||
inot byte external,
|
||||
mov byte external,
|
||||
cmps byte external,
|
||||
iret byte external,
|
||||
popf byte external,
|
||||
imul byte external,
|
||||
out byte external,
|
||||
xlat byte external,
|
||||
jmps byte external,
|
||||
loope byte external;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,14 @@
|
||||
$nolist
|
||||
|
||||
/* Convenient literals to compress source: */
|
||||
|
||||
declare
|
||||
h literally 'structure(n address,l byte,p address',
|
||||
|
||||
opcod2 literally 'h,a(2) byte)',
|
||||
opcod3 literally 'h,a(3) byte)',
|
||||
opcod4 literally 'h,a(4) byte)',
|
||||
opcod5 literally 'h,a(5) byte)',
|
||||
opcod6 literally 'h,a(6) byte)';
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,91 @@
|
||||
PL/M-86 COMPILER INSTRUCTION MNEMONICS MODULE - PART 1 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE MNEM1
|
||||
OBJECT MODULE PLACED IN MNEM1.OBJ
|
||||
COMPILER INVOKED BY: :F0: MNEM1.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100)
|
||||
|
||||
|
||||
|
||||
$title ('INSTRUCTION MNEMONICS MODULE - PART 1')
|
||||
1 mnem1:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 4/10/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/***************** INSTRUCTION MNEMONICS *****************/
|
||||
/*
|
||||
|
||||
This is all the instruction mnemonics for
|
||||
the assembler. The mnemonics are grouped
|
||||
according to the 6-bit hash value of the
|
||||
mnemonics - values range from 0 to 0FH.
|
||||
|
||||
For each instruction, there is a pointer to
|
||||
its codemacro definition.
|
||||
*/
|
||||
|
||||
$include (:f1:mnem.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmlink.ext)
|
||||
= $nolist
|
||||
|
||||
|
||||
/********* MNEMONICS TABLE ********/
|
||||
|
||||
4 1 declare
|
||||
|
||||
/*
|
||||
* HASH VALUE (HEX) *
|
||||
---------------------
|
||||
*/
|
||||
test opcod4 data (0,4,.test10,'TEST'), /* 0 */
|
||||
push opcod4 public data (.test,4,.push3,'PUSH'),
|
||||
SCASW OPCOD5 DATA (0,5,.SCASW1,'SCASW'), /* 1 */
|
||||
repz opcod4 public data (.SCASW,4,.repe1,'REPZ'),
|
||||
/* 2 */
|
||||
aaa opcod3 public data (0,3,.aaa1,'AAA'), /* 3 */
|
||||
/* 4 */
|
||||
movs opcod4 public data (0,4,.movs2,'MOVS'), /* 5 */
|
||||
daa opcod3 data (0,3,.daa1,'DAA'), /* 6 */
|
||||
aad opcod3 data (.daa,3,.aad1,'AAD'),
|
||||
pushf opcod5 public data (.aad,5,.pushf1,'PUSHF'),
|
||||
MOVSB OPCOD5 PUBLIC DATA (0,5,.MOVSB1,'MOVSB'), /* 7 */
|
||||
adc opcod3 public data (0,3,.adc11,'ADC'), /* 8 */
|
||||
stos opcod4 data (0,4,.stos2,'STOS'), /* 9 */
|
||||
PL/M-86 COMPILER INSTRUCTION MNEMONICS MODULE - PART 1 10/5/81 PAGE 2
|
||||
|
||||
|
||||
LODSW OPCOD5 DATA (.STOS,5,.LODSW1,'LODSW'),
|
||||
add opcod3 public data (.LODSW,3,.add11,'ADD'),
|
||||
CMPSW OPCOD5 PUBLIC DATA (0,5,.CMPSW1,'CMPSW'), /* 0a */
|
||||
STOSB OPCOD5 DATA (0,5,.STOSB1,'STOSB'), /* 0b */
|
||||
ja opcod2 public data (.STOSB,2,.ja1,'JA'),
|
||||
jb opcod2 data (0,2,.jb1,'JB'), /* 0c */
|
||||
dec opcod3 public data (.jb,3,.dec3,'DEC'),
|
||||
JC OPCOD2 DATA (0,2,.JB1,'JC'), /* 0D */
|
||||
loopne opcod6 public data (.JC,6,.loopne1,'LOOPNE'),
|
||||
/* 0e */
|
||||
aam opcod3 data (0,3,.aam1,'AAM'), /* 0f */
|
||||
je opcod2 data (.aam,2,.je1,'JE'),
|
||||
repnz opcod5 public data (.je,5,.repne1,'REPNZ');
|
||||
|
||||
5 1 end mnem1;
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0000H 0D
|
||||
CONSTANT AREA SIZE = 00D2H 210D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0000H 0D
|
||||
195 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,64 @@
|
||||
$title ('INSTRUCTION MNEMONICS MODULE - PART 1')
|
||||
mnem1:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 4/10/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/***************** INSTRUCTION MNEMONICS *****************/
|
||||
/*
|
||||
|
||||
This is all the instruction mnemonics for
|
||||
the assembler. The mnemonics are grouped
|
||||
according to the 6-bit hash value of the
|
||||
mnemonics - values range from 0 to 0FH.
|
||||
|
||||
For each instruction, there is a pointer to
|
||||
its codemacro definition.
|
||||
*/
|
||||
|
||||
$include (:f1:mnem.lit)
|
||||
$include (:f1:cmlink.ext)
|
||||
|
||||
|
||||
/********* MNEMONICS TABLE ********/
|
||||
|
||||
declare
|
||||
|
||||
/*
|
||||
* HASH VALUE (HEX) *
|
||||
---------------------
|
||||
*/
|
||||
test opcod4 data (0,4,.test10,'TEST'), /* 0 */
|
||||
push opcod4 public data (.test,4,.push3,'PUSH'),
|
||||
SCASW OPCOD5 DATA (0,5,.SCASW1,'SCASW'), /* 1 */
|
||||
repz opcod4 public data (.SCASW,4,.repe1,'REPZ'),
|
||||
/* 2 */
|
||||
aaa opcod3 public data (0,3,.aaa1,'AAA'), /* 3 */
|
||||
/* 4 */
|
||||
movs opcod4 public data (0,4,.movs2,'MOVS'), /* 5 */
|
||||
daa opcod3 data (0,3,.daa1,'DAA'), /* 6 */
|
||||
aad opcod3 data (.daa,3,.aad1,'AAD'),
|
||||
pushf opcod5 public data (.aad,5,.pushf1,'PUSHF'),
|
||||
MOVSB OPCOD5 PUBLIC DATA (0,5,.MOVSB1,'MOVSB'), /* 7 */
|
||||
adc opcod3 public data (0,3,.adc11,'ADC'), /* 8 */
|
||||
stos opcod4 data (0,4,.stos2,'STOS'), /* 9 */
|
||||
LODSW OPCOD5 DATA (.STOS,5,.LODSW1,'LODSW'),
|
||||
add opcod3 public data (.LODSW,3,.add11,'ADD'),
|
||||
CMPSW OPCOD5 PUBLIC DATA (0,5,.CMPSW1,'CMPSW'), /* 0a */
|
||||
STOSB OPCOD5 DATA (0,5,.STOSB1,'STOSB'), /* 0b */
|
||||
ja opcod2 public data (.STOSB,2,.ja1,'JA'),
|
||||
jb opcod2 data (0,2,.jb1,'JB'), /* 0c */
|
||||
dec opcod3 public data (.jb,3,.dec3,'DEC'),
|
||||
JC OPCOD2 DATA (0,2,.JB1,'JC'), /* 0D */
|
||||
loopne opcod6 public data (.JC,6,.loopne1,'LOOPNE'),
|
||||
/* 0e */
|
||||
aam opcod3 data (0,3,.aam1,'AAM'), /* 0f */
|
||||
je opcod2 data (.aam,2,.je1,'JE'),
|
||||
repnz opcod5 public data (.je,5,.repne1,'REPNZ');
|
||||
|
||||
end mnem1;
|
||||
@@ -0,0 +1,100 @@
|
||||
PL/M-86 COMPILER INSTRUCTION MNEMONICS MODULE - PART 2 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE MNEM2
|
||||
OBJECT MODULE PLACED IN MNEM2.OBJ
|
||||
COMPILER INVOKED BY: :F0: MNEM2.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100)
|
||||
|
||||
|
||||
|
||||
$title ('INSTRUCTION MNEMONICS MODULE - PART 2')
|
||||
1 mnem2:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 4/10/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
modified 7/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/***************** INSTRUCTION MNEMONICS *****************/
|
||||
/*
|
||||
|
||||
This is all the instruction mnemonics for
|
||||
the assembler. The mnemonics are grouped
|
||||
according to the 6-bit hash value of the
|
||||
mnemonics - values range from 10H to 1FH.
|
||||
|
||||
For each instruction, there is a pointer to
|
||||
its codemacro definition.
|
||||
*/
|
||||
|
||||
$include (:f1:mnem.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmlink.ext)
|
||||
= $nolist
|
||||
|
||||
/********* MNEMONICS TABLE ********/
|
||||
|
||||
4 1 declare
|
||||
|
||||
/*
|
||||
* HASH VALUE (HEX) *
|
||||
---------------------
|
||||
*/
|
||||
jae opcod3 public data (0,3,.jae1,'JAE'), /* 10 */
|
||||
jbe opcod3 data (0,3,.jbe1,'JBE'), /* 11 */
|
||||
jg opcod2 public data (.jbe,2,.jg1,'JG'),
|
||||
lea opcod3 data (0,3,.lea1,'LEA'), /* 12 */
|
||||
clc opcod3 public data (.lea,3,.clc1,'CLC'),
|
||||
cmc opcod3 data (0,3,.cmc1,'CMC'), /* 13 */
|
||||
cld opcod3 data (.cmc,3,.cld1,'CLD'),
|
||||
iand opcod3 public data (.cld,3,.and10,'AND'),
|
||||
loopz opcod5 public data (0,5,.loope1,'LOOPZ'), /* 14 */
|
||||
aas opcod3 public data (0,3,.aas1,'AAS'), /* 15 */
|
||||
jge opcod3 data (0,3,.jge1,'JGE'), /* 16 */
|
||||
jl opcod2 public data (.jge,2,.jl1,'JL'),
|
||||
sbb opcod3 data (0,3,.sbb11,'SBB'), /* 17 */
|
||||
in opcod2 public data (.sbb,2,.in4,'IN'),
|
||||
PL/M-86 COMPILER INSTRUCTION MNEMONICS MODULE - PART 2 10/5/81 PAGE 2
|
||||
|
||||
|
||||
das opcod3 data (0,3,.das1,'DAS'), /* 18 */
|
||||
cli opcod3 public data (.das,3,.cli1,'CLI'),
|
||||
jna opcod3 data (0,3,.jbe1,'JNA'), /* 19 */
|
||||
jo opcod2 public data (.jna,2,.jo1,'JO'),
|
||||
jnb opcod3 data (0,3,.jae1,'JNB'), /* 1a */
|
||||
jp opcod2 data (.jnb,2,.jp1,'JP'),
|
||||
neg opcod3 data (.jp,3,.neg2,'NEG'),
|
||||
inc opcod3 public data (.neg,3,.inc3,'INC'),
|
||||
JNC OPCOD3 DATA (0,3,.JAE1,'JNC'), /* 1B */
|
||||
esc opcod3 data (.JNC,3,.esc3,'ESC'),
|
||||
jle opcod3 data (.esc,3,.jle1,'JLE'),
|
||||
lahf opcod4 public data (.jle,4,.lahf1,'LAHF'),
|
||||
cbw opcod3 data (0,3,.cbw1,'CBW'), /* 1c */
|
||||
MOVSW OPCOD5 DATA (.CBW,5,.MOVSW1,'MOVSW'),
|
||||
icall opcod4 public data (.MOVSW,4,.call3,'CALL'),
|
||||
js opcod2 data (0,2,.js1,'JS'), /* 1d */
|
||||
jne opcod3 public data (.js,3,.jne1,'JNE'),
|
||||
jnae opcod4 data (0,4,.jb1,'JNAE'), /* 1e */
|
||||
cwd opcod3 public data (.jnae,3,.cwd1,'CWD'),
|
||||
jpe opcod3 data (0,3,.jp1,'JPE'), /* 1f */
|
||||
jng opcod3 data (.jpe,3,.jle1,'JNG'),
|
||||
jnbe opcod4 public data (.jng,4,.ja1,'JNBE');
|
||||
|
||||
5 1 end mnem2;
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0000H 0D
|
||||
CONSTANT AREA SIZE = 0122H 290D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0000H 0D
|
||||
204 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,73 @@
|
||||
$title ('INSTRUCTION MNEMONICS MODULE - PART 2')
|
||||
mnem2:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 4/10/81 R. Silberstein
|
||||
modified 6/16/81 R. Silberstein
|
||||
modified 7/24/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/***************** INSTRUCTION MNEMONICS *****************/
|
||||
/*
|
||||
|
||||
This is all the instruction mnemonics for
|
||||
the assembler. The mnemonics are grouped
|
||||
according to the 6-bit hash value of the
|
||||
mnemonics - values range from 10H to 1FH.
|
||||
|
||||
For each instruction, there is a pointer to
|
||||
its codemacro definition.
|
||||
*/
|
||||
|
||||
$include (:f1:mnem.lit)
|
||||
$include (:f1:cmlink.ext)
|
||||
|
||||
/********* MNEMONICS TABLE ********/
|
||||
|
||||
declare
|
||||
|
||||
/*
|
||||
* HASH VALUE (HEX) *
|
||||
---------------------
|
||||
*/
|
||||
jae opcod3 public data (0,3,.jae1,'JAE'), /* 10 */
|
||||
jbe opcod3 data (0,3,.jbe1,'JBE'), /* 11 */
|
||||
jg opcod2 public data (.jbe,2,.jg1,'JG'),
|
||||
lea opcod3 data (0,3,.lea1,'LEA'), /* 12 */
|
||||
clc opcod3 public data (.lea,3,.clc1,'CLC'),
|
||||
cmc opcod3 data (0,3,.cmc1,'CMC'), /* 13 */
|
||||
cld opcod3 data (.cmc,3,.cld1,'CLD'),
|
||||
iand opcod3 public data (.cld,3,.and10,'AND'),
|
||||
loopz opcod5 public data (0,5,.loope1,'LOOPZ'), /* 14 */
|
||||
aas opcod3 public data (0,3,.aas1,'AAS'), /* 15 */
|
||||
jge opcod3 data (0,3,.jge1,'JGE'), /* 16 */
|
||||
jl opcod2 public data (.jge,2,.jl1,'JL'),
|
||||
sbb opcod3 data (0,3,.sbb11,'SBB'), /* 17 */
|
||||
in opcod2 public data (.sbb,2,.in4,'IN'),
|
||||
das opcod3 data (0,3,.das1,'DAS'), /* 18 */
|
||||
cli opcod3 public data (.das,3,.cli1,'CLI'),
|
||||
jna opcod3 data (0,3,.jbe1,'JNA'), /* 19 */
|
||||
jo opcod2 public data (.jna,2,.jo1,'JO'),
|
||||
jnb opcod3 data (0,3,.jae1,'JNB'), /* 1a */
|
||||
jp opcod2 data (.jnb,2,.jp1,'JP'),
|
||||
neg opcod3 data (.jp,3,.neg2,'NEG'),
|
||||
inc opcod3 public data (.neg,3,.inc3,'INC'),
|
||||
JNC OPCOD3 DATA (0,3,.JAE1,'JNC'), /* 1B */
|
||||
esc opcod3 data (.JNC,3,.esc3,'ESC'),
|
||||
jle opcod3 data (.esc,3,.jle1,'JLE'),
|
||||
lahf opcod4 public data (.jle,4,.lahf1,'LAHF'),
|
||||
cbw opcod3 data (0,3,.cbw1,'CBW'), /* 1c */
|
||||
MOVSW OPCOD5 DATA (.CBW,5,.MOVSW1,'MOVSW'),
|
||||
icall opcod4 public data (.MOVSW,4,.call3,'CALL'),
|
||||
js opcod2 data (0,2,.js1,'JS'), /* 1d */
|
||||
jne opcod3 public data (.js,3,.jne1,'JNE'),
|
||||
jnae opcod4 data (0,4,.jb1,'JNAE'), /* 1e */
|
||||
cwd opcod3 public data (.jnae,3,.cwd1,'CWD'),
|
||||
jpe opcod3 data (0,3,.jp1,'JPE'), /* 1f */
|
||||
jng opcod3 data (.jpe,3,.jle1,'JNG'),
|
||||
jnbe opcod4 public data (.jng,4,.ja1,'JNBE');
|
||||
|
||||
end mnem2;
|
||||
@@ -0,0 +1,105 @@
|
||||
PL/M-86 COMPILER INSTRUCTION MNEMONICS MODULE - PART 3 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE MNEM3
|
||||
OBJECT MODULE PLACED IN MNEM3.OBJ
|
||||
COMPILER INVOKED BY: :F0: MNEM3.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100)
|
||||
|
||||
|
||||
|
||||
$title ('INSTRUCTION MNEMONICS MODULE - PART 3')
|
||||
1 mnem3:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/***************** INSTRUCTION MNEMONICS *****************/
|
||||
/*
|
||||
|
||||
This is all the instruction mnemonics for
|
||||
the assembler. The mnemonics are grouped
|
||||
according to the 6-bit hash value of the
|
||||
mnemonics - values range from 20H to 2FH.
|
||||
|
||||
For each instruction, there is a pointer to
|
||||
its codemacro definition.
|
||||
*/
|
||||
|
||||
$include (:f1:mnem.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmlink.ext)
|
||||
= $nolist
|
||||
|
||||
/********* MNEMONICS TABLE ********/
|
||||
|
||||
4 1 declare
|
||||
|
||||
/*
|
||||
* HASH VALUE (HEX) *
|
||||
---------------------
|
||||
*/
|
||||
isal opcod3 data (0,3,.sal4,'SAL'), /* 20 */
|
||||
STOSW OPCOD5 DATA (.ISAL,5,.STOSW1,'STOSW'),
|
||||
cmp opcod3 public data (.STOSW,3,.cmp11,'CMP'),
|
||||
rcl opcod3 data (0,3,.rcl4,'RCL'), /* 21 */
|
||||
ior opcod2 public data (.rcl,2,.or10,'OR'),
|
||||
loopnz opcod6 data (0,6,.loopne1,'LOOPNZ'), /* 22 */
|
||||
sahf opcod4 data (.loopnz,4,.sahf1,'SAHF'),
|
||||
callf opcod5 public data (.sahf,5,.callf2,'CALLF'),
|
||||
lds opcod3 data (0,3,.lds1,'LDS'), /* 23 */
|
||||
div opcod3 public data (.lds,3,.div2,'DIV'),
|
||||
jnge opcod4 data (0,4,.jl1,'JNGE'), /* 24 */
|
||||
jnl opcod3 data (.jnge,3,.jge1,'JNL'),
|
||||
jz opcod2 data (.jnl,2,.je1,'JZ'),
|
||||
les opcod3 public data (.jz,3,.les1,'LES'),
|
||||
/* 25 */
|
||||
sar opcod3 public data (0,3,.sar4,'SAR'), /* 26 */
|
||||
PL/M-86 COMPILER INSTRUCTION MNEMONICS MODULE - PART 3 10/5/81 PAGE 2
|
||||
|
||||
|
||||
jno opcod3 data (0,3,.jno1,'JNO'), /* 27 */
|
||||
rcr opcod3 data (.jno,3,.rcr4,'RCR'),
|
||||
rep opcod3 data (.rcr,3,.rep1,'REP'),
|
||||
ishl opcod3 data (.rep,3,.sal4,'SHL'),
|
||||
jmp opcod3 public data (.ishl,3,.jmp2,'JMP'),
|
||||
jnp opcod3 data (0,3,.jnp1,'JNP'), /* 28 */
|
||||
hlt opcod3 public data (.jnp,3,.hlt1,'HLT'),
|
||||
jnle opcod4 data (0,4,.jg1,'JNLE'), /* 29 */
|
||||
jpo opcod3 data (.jnle,3,.jnp1,'JPO'),
|
||||
lock opcod4 public data (.jpo,4,.lock1,'LOCK'),
|
||||
scas opcod4 data (0,4,.scas2,'SCAS'), /* 2a */
|
||||
stc opcod3 data (.scas,3,.stc1,'STC'),
|
||||
sub opcod3 data (.stc,3,.sub11,'SUB'),
|
||||
xchg opcod4 public data (.sub,4,.xchg6,'XCHG'),
|
||||
jns opcod3 data (0,3,.jns1,'JNS'), /* 2b */
|
||||
std opcod3 data (.jns,3,.std1,'STD'),
|
||||
int opcod3 data (.std,3,.int2,'INT'),
|
||||
ret opcod3 public data (.int,3,.ret3,'RET'),
|
||||
repe opcod4 data (0,4,.repe1,'REPE'), /* 2c */
|
||||
SCASB OPCOD5 DATA (.REPE,5,.SCASB1,'SCASB'),
|
||||
idiv opcod4 public data (.SCASB,4,.idiv2,'IDIV'),
|
||||
nop opcod3 data (0,3,.nop1,'NOP'), /* 2d */
|
||||
rol opcod3 data (.nop,3,.rol4,'ROL'),
|
||||
ishr opcod3 data (.rol,3,.shr4,'SHR'),
|
||||
jmpf opcod4 public data (.ishr,4,.jmpf2,'JMPF'),
|
||||
mul opcod3 public data (0,3,.mul2,'MUL'), /* 2e */
|
||||
pop opcod3 public data (0,3,.pop4,'POP'); /* 2f */
|
||||
|
||||
5 1 end mnem3;
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0000H 0D
|
||||
CONSTANT AREA SIZE = 0160H 352D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0000H 0D
|
||||
209 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,78 @@
|
||||
$title ('INSTRUCTION MNEMONICS MODULE - PART 3')
|
||||
mnem3:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/***************** INSTRUCTION MNEMONICS *****************/
|
||||
/*
|
||||
|
||||
This is all the instruction mnemonics for
|
||||
the assembler. The mnemonics are grouped
|
||||
according to the 6-bit hash value of the
|
||||
mnemonics - values range from 20H to 2FH.
|
||||
|
||||
For each instruction, there is a pointer to
|
||||
its codemacro definition.
|
||||
*/
|
||||
|
||||
$include (:f1:mnem.lit)
|
||||
$include (:f1:cmlink.ext)
|
||||
|
||||
/********* MNEMONICS TABLE ********/
|
||||
|
||||
declare
|
||||
|
||||
/*
|
||||
* HASH VALUE (HEX) *
|
||||
---------------------
|
||||
*/
|
||||
isal opcod3 data (0,3,.sal4,'SAL'), /* 20 */
|
||||
STOSW OPCOD5 DATA (.ISAL,5,.STOSW1,'STOSW'),
|
||||
cmp opcod3 public data (.STOSW,3,.cmp11,'CMP'),
|
||||
rcl opcod3 data (0,3,.rcl4,'RCL'), /* 21 */
|
||||
ior opcod2 public data (.rcl,2,.or10,'OR'),
|
||||
loopnz opcod6 data (0,6,.loopne1,'LOOPNZ'), /* 22 */
|
||||
sahf opcod4 data (.loopnz,4,.sahf1,'SAHF'),
|
||||
callf opcod5 public data (.sahf,5,.callf2,'CALLF'),
|
||||
lds opcod3 data (0,3,.lds1,'LDS'), /* 23 */
|
||||
div opcod3 public data (.lds,3,.div2,'DIV'),
|
||||
jnge opcod4 data (0,4,.jl1,'JNGE'), /* 24 */
|
||||
jnl opcod3 data (.jnge,3,.jge1,'JNL'),
|
||||
jz opcod2 data (.jnl,2,.je1,'JZ'),
|
||||
les opcod3 public data (.jz,3,.les1,'LES'),
|
||||
/* 25 */
|
||||
sar opcod3 public data (0,3,.sar4,'SAR'), /* 26 */
|
||||
jno opcod3 data (0,3,.jno1,'JNO'), /* 27 */
|
||||
rcr opcod3 data (.jno,3,.rcr4,'RCR'),
|
||||
rep opcod3 data (.rcr,3,.rep1,'REP'),
|
||||
ishl opcod3 data (.rep,3,.sal4,'SHL'),
|
||||
jmp opcod3 public data (.ishl,3,.jmp2,'JMP'),
|
||||
jnp opcod3 data (0,3,.jnp1,'JNP'), /* 28 */
|
||||
hlt opcod3 public data (.jnp,3,.hlt1,'HLT'),
|
||||
jnle opcod4 data (0,4,.jg1,'JNLE'), /* 29 */
|
||||
jpo opcod3 data (.jnle,3,.jnp1,'JPO'),
|
||||
lock opcod4 public data (.jpo,4,.lock1,'LOCK'),
|
||||
scas opcod4 data (0,4,.scas2,'SCAS'), /* 2a */
|
||||
stc opcod3 data (.scas,3,.stc1,'STC'),
|
||||
sub opcod3 data (.stc,3,.sub11,'SUB'),
|
||||
xchg opcod4 public data (.sub,4,.xchg6,'XCHG'),
|
||||
jns opcod3 data (0,3,.jns1,'JNS'), /* 2b */
|
||||
std opcod3 data (.jns,3,.std1,'STD'),
|
||||
int opcod3 data (.std,3,.int2,'INT'),
|
||||
ret opcod3 public data (.int,3,.ret3,'RET'),
|
||||
repe opcod4 data (0,4,.repe1,'REPE'), /* 2c */
|
||||
SCASB OPCOD5 DATA (.REPE,5,.SCASB1,'SCASB'),
|
||||
idiv opcod4 public data (.SCASB,4,.idiv2,'IDIV'),
|
||||
nop opcod3 data (0,3,.nop1,'NOP'), /* 2d */
|
||||
rol opcod3 data (.nop,3,.rol4,'ROL'),
|
||||
ishr opcod3 data (.rol,3,.shr4,'SHR'),
|
||||
jmpf opcod4 public data (.ishr,4,.jmpf2,'JMPF'),
|
||||
mul opcod3 public data (0,3,.mul2,'MUL'), /* 2e */
|
||||
pop opcod3 public data (0,3,.pop4,'POP'); /* 2f */
|
||||
|
||||
end mnem3;
|
||||
@@ -0,0 +1,93 @@
|
||||
PL/M-86 COMPILER INSTRUCTION MNEMONICS MODULE - PART 4 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE MNEM4
|
||||
OBJECT MODULE PLACED IN MNEM4.OBJ
|
||||
COMPILER INVOKED BY: :F0: MNEM4.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100)
|
||||
|
||||
|
||||
|
||||
$title ('INSTRUCTION MNEMONICS MODULE - PART 4')
|
||||
1 mnem4:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/***************** INSTRUCTION MNEMONICS *****************/
|
||||
/*
|
||||
|
||||
This is all the instruction mnemonics for
|
||||
the assembler. The mnemonics are grouped
|
||||
according to the 6-bit hash value of the
|
||||
mnemonics - values range from 30H to 3FH.
|
||||
|
||||
For each instruction, there is a pointer to
|
||||
its codemacro definition.
|
||||
*/
|
||||
|
||||
$include (:f1:mnem.lit)
|
||||
= $nolist
|
||||
$include (:f1:cmlink.ext)
|
||||
= $nolist
|
||||
|
||||
/********* MNEMONICS TABLE ********/
|
||||
|
||||
4 1 declare
|
||||
|
||||
/*
|
||||
* HASH VALUE (HEX) *
|
||||
---------------------
|
||||
*/
|
||||
sti opcod3 public data (0,3,.sti1,'STI'), /* 30 */
|
||||
retf opcod4 data (0,4,.retf3,'RETF'), /* 31 */
|
||||
inot opcod3 public data (.retf,3,.not2,'NOT'),
|
||||
lods opcod4 data (0,4,.lods2,'LODS'), /* 32 */
|
||||
jnz opcod3 data (.lods,3,.jne1,'JNZ'),
|
||||
mov opcod3 public data (.jnz,3,.mov17,'MOV'),
|
||||
ror opcod3 data (0,3,.ror4,'ROR'), /* 33 */
|
||||
cmps opcod4 public data (.ror,4,.cmps2,'CMPS'),
|
||||
LODSB OPCOD5 DATA (0,5,.LODSB1,'LODSB'), /* 34 */
|
||||
iret opcod4 public data (.lodsb,4,.iret1,'IRET'),
|
||||
wait opcod4 data (0,4,.wait1,'WAIT'), /* 35 */
|
||||
CMPSB OPCOD5 DATA (.WAIT,5,.CMPSB1,'CMPSB'),
|
||||
popf opcod4 public data (.CMPSB,4,.popf1,'POPF'),
|
||||
/* 36 */
|
||||
imul opcod4 public data (0,4,.imul2,'IMUL'), /* 37 */
|
||||
out opcod3 public data (0,3,.out4,'OUT'), /* 38 */
|
||||
PL/M-86 COMPILER INSTRUCTION MNEMONICS MODULE - PART 4 10/5/81 PAGE 2
|
||||
|
||||
|
||||
retn opcod4 data (0,4,.ret3,'RETN'), /* 39 */
|
||||
ixor opcod3 data (.retn,3,.xor10,'XOR'),
|
||||
xlat opcod4 public data (.ixor,4,.xlat1,'XLAT'),
|
||||
repne opcod5 data (0,5,.repne1,'REPNE'), /* 3a */
|
||||
into opcod4 data (.repne,4,.into1,'INTO'),
|
||||
loop opcod4 data (.into,4,.loop1,'LOOP'),
|
||||
jmps opcod4 public data (.loop,4,.jmps1,'JMPS'),
|
||||
/* 3b */
|
||||
/* 3c */
|
||||
/* 3d */
|
||||
/* 3e */
|
||||
jcxz opcod4 data (0,4,.jcxz1,'JCXZ'), /* 3f */
|
||||
loope opcod5 public data (.jcxz,5,.loope1,'LOOPE');
|
||||
|
||||
/**************** END OF MNEMONIC TABLE ****************/
|
||||
|
||||
5 1 end mnem4;
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 0000H 0D
|
||||
CONSTANT AREA SIZE = 00D5H 213D
|
||||
VARIABLE AREA SIZE = 0000H 0D
|
||||
MAXIMUM STACK SIZE = 0000H 0D
|
||||
197 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
@@ -0,0 +1,66 @@
|
||||
$title ('INSTRUCTION MNEMONICS MODULE - PART 4')
|
||||
mnem4:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 6/16/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/***************** INSTRUCTION MNEMONICS *****************/
|
||||
/*
|
||||
|
||||
This is all the instruction mnemonics for
|
||||
the assembler. The mnemonics are grouped
|
||||
according to the 6-bit hash value of the
|
||||
mnemonics - values range from 30H to 3FH.
|
||||
|
||||
For each instruction, there is a pointer to
|
||||
its codemacro definition.
|
||||
*/
|
||||
|
||||
$include (:f1:mnem.lit)
|
||||
$include (:f1:cmlink.ext)
|
||||
|
||||
/********* MNEMONICS TABLE ********/
|
||||
|
||||
declare
|
||||
|
||||
/*
|
||||
* HASH VALUE (HEX) *
|
||||
---------------------
|
||||
*/
|
||||
sti opcod3 public data (0,3,.sti1,'STI'), /* 30 */
|
||||
retf opcod4 data (0,4,.retf3,'RETF'), /* 31 */
|
||||
inot opcod3 public data (.retf,3,.not2,'NOT'),
|
||||
lods opcod4 data (0,4,.lods2,'LODS'), /* 32 */
|
||||
jnz opcod3 data (.lods,3,.jne1,'JNZ'),
|
||||
mov opcod3 public data (.jnz,3,.mov17,'MOV'),
|
||||
ror opcod3 data (0,3,.ror4,'ROR'), /* 33 */
|
||||
cmps opcod4 public data (.ror,4,.cmps2,'CMPS'),
|
||||
LODSB OPCOD5 DATA (0,5,.LODSB1,'LODSB'), /* 34 */
|
||||
iret opcod4 public data (.lodsb,4,.iret1,'IRET'),
|
||||
wait opcod4 data (0,4,.wait1,'WAIT'), /* 35 */
|
||||
CMPSB OPCOD5 DATA (.WAIT,5,.CMPSB1,'CMPSB'),
|
||||
popf opcod4 public data (.CMPSB,4,.popf1,'POPF'),
|
||||
/* 36 */
|
||||
imul opcod4 public data (0,4,.imul2,'IMUL'), /* 37 */
|
||||
out opcod3 public data (0,3,.out4,'OUT'), /* 38 */
|
||||
retn opcod4 data (0,4,.ret3,'RETN'), /* 39 */
|
||||
ixor opcod3 data (.retn,3,.xor10,'XOR'),
|
||||
xlat opcod4 public data (.ixor,4,.xlat1,'XLAT'),
|
||||
repne opcod5 data (0,5,.repne1,'REPNE'), /* 3a */
|
||||
into opcod4 data (.repne,4,.into1,'INTO'),
|
||||
loop opcod4 data (.into,4,.loop1,'LOOP'),
|
||||
jmps opcod4 public data (.loop,4,.jmps1,'JMPS'),
|
||||
/* 3b */
|
||||
/* 3c */
|
||||
/* 3d */
|
||||
/* 3e */
|
||||
jcxz opcod4 data (0,4,.jcxz1,'JCXZ'), /* 3f */
|
||||
loope opcod5 public data (.jcxz,5,.loope1,'LOOPE');
|
||||
|
||||
/**************** END OF MNEMONIC TABLE ****************/
|
||||
|
||||
end mnem4;
|
||||
@@ -0,0 +1,13 @@
|
||||
$nolist
|
||||
|
||||
emitinit: proc external;
|
||||
end emitinit;
|
||||
|
||||
emitterminate: proc external;
|
||||
end emitterminate;
|
||||
|
||||
emitcodebyte: proc(ch,typ) external;
|
||||
dcl (ch,typ) byte;
|
||||
end emitcodebyte;
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,30 @@
|
||||
$nolist
|
||||
|
||||
/* Output hex-record types: */
|
||||
|
||||
dcl
|
||||
eoftype lit '01h', /* Common to both hex formats */
|
||||
starttype lit '03h',
|
||||
|
||||
INTELdata lit '00h', /* INTEL hex format */
|
||||
INTELsegment lit '02h',
|
||||
|
||||
DRcodedata lit '81h', /* Digital Research hex format */
|
||||
DRdatadata lit '82h',
|
||||
DRstackdata lit '83h',
|
||||
DRextradata lit '84h',
|
||||
DRcodesegm lit '85h',
|
||||
DRdatasegm lit '86h',
|
||||
DRstacksegm lit '87h',
|
||||
DRextrasegm lit '88h',
|
||||
|
||||
CSdata lit '04h', /* Data types used inside assembler */
|
||||
DSdata lit '05h',
|
||||
SSdata lit '06h',
|
||||
ESdata lit '07h',
|
||||
CSvalue lit '08h',
|
||||
DSvalue lit '09h',
|
||||
SSvalue lit '0ah',
|
||||
ESvalue lit '0bh';
|
||||
|
||||
$list
|
||||
@@ -0,0 +1,542 @@
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 1
|
||||
|
||||
|
||||
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE HEXOUT
|
||||
OBJECT MODULE PLACED IN OUTP.OBJ
|
||||
COMPILER INVOKED BY: :F0: OUTP.PLM DEBUG OPTIMIZE(2) DATE(10/5/81) PAGEWIDTH(100) XREF
|
||||
|
||||
|
||||
|
||||
$title ('HEX OUTPUT MODULE')
|
||||
1 hexout:
|
||||
do;
|
||||
|
||||
/*
|
||||
|
||||
modified 3/28/81 R. Silberstein
|
||||
modified 3/30/81 R. Silberstein
|
||||
modified 4/9/81 R. Silberstein
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
This is the module to produce the (hex-)output
|
||||
from the assembler. The interface to other modules
|
||||
goes through the subroutine
|
||||
|
||||
EMITCODEBYTE (outputbyte,segmenttype).
|
||||
|
||||
This routine outputs one byte of generated code of
|
||||
a specified segment type (code,data,stack,extra).
|
||||
|
||||
The subroutine also updates the value of the current
|
||||
instruction pointer of the current segment (CIP),
|
||||
and prints the output code on the print line.
|
||||
*/
|
||||
|
||||
$include (:f1:macro.lit)
|
||||
= $nolist
|
||||
$include (:f1:struc.lit)
|
||||
= $nolist
|
||||
$include (:f1:outp.lit)
|
||||
= $nolist
|
||||
$include (:f1:subr2.ext)
|
||||
= $nolist
|
||||
$include (:f1:files.ext)
|
||||
= $nolist
|
||||
$include (:f1:global.ext)
|
||||
= $nolist
|
||||
|
||||
|
||||
84 1 dcl
|
||||
empty lit '0ffh', /* buffer empty value */
|
||||
recordlimit lit '30', /* max no of bytes pr record */
|
||||
loccip addr, /* local copy of instruction pointer */
|
||||
startfound byte, /* true if start record sent */
|
||||
gtyp byte, /* incomming byte type */
|
||||
gbyt byte, /* incomming byte */
|
||||
curtyp byte, /* current byte type */
|
||||
sum byte, /* used to compute check sum */
|
||||
buffer (35) byte, /* record buffer (RECORDLIMIT+5) */
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 2
|
||||
|
||||
|
||||
recordlg byte at (.buffer(0)),
|
||||
recordtype byte at (.buffer(3)),
|
||||
offsetaddr addr at (.buffer(1)),
|
||||
bufpt byte, /* buffer index */
|
||||
|
||||
/* Record type conversion table */
|
||||
/* ( to be changed later ??? ) */
|
||||
|
||||
rectyp$I$tab(12) byte data
|
||||
|
||||
(0ffh,eoftype,0ffh,starttype,INTELdata,INTELdata,
|
||||
INTELdata,INTELdata,INTELsegment,INTELsegment,INTELsegment,
|
||||
INTELsegment),
|
||||
|
||||
rectyp$D$tab(12) byte data
|
||||
|
||||
(0ffh,eoftype,0ffh,starttype,DRcodedata,DRdatadata,
|
||||
DRstackdata,DRextradata,DRcodesegm,DRdatasegm,DRstacksegm,
|
||||
DRextrasegm);
|
||||
|
||||
|
||||
/*********** subroutines **********/
|
||||
|
||||
85 1 rectyptab: procedure(n) byte;
|
||||
86 2 declare n byte;
|
||||
87 2 if intel$hex$on then$do
|
||||
89 3 return rectyp$I$tab(n);
|
||||
90 3 else$do
|
||||
92 3 return rectyp$D$tab(n);
|
||||
93 3 end$if;
|
||||
94 2 end rectyptab;
|
||||
|
||||
95 1 switch$high$low: procedure(p);
|
||||
96 2 declare p address, ch based p byte, (s1,s2) byte;
|
||||
97 2 s1=ch;
|
||||
98 2 p=p+1;
|
||||
99 2 s2=ch;
|
||||
100 2 ch=s1;
|
||||
101 2 p=p-1;
|
||||
102 2 ch=s2;
|
||||
103 2 end switch$high$low;
|
||||
|
||||
104 1 writebyt: proc (ch);
|
||||
105 2 dcl ch byte;
|
||||
106 2 call outhexbyte(ch);
|
||||
107 2 end writebyt;
|
||||
|
||||
108 1 writerecord: proc; /* write current recor to file */
|
||||
109 2 call switch$high$low(.offsetaddr);
|
||||
110 2 recordlg=bufpt-4;
|
||||
111 2 sum=0; /* compute check sum */
|
||||
112 2 i=0ffh;
|
||||
113 2 do while (i:=i+1) < bufpt;
|
||||
114 3 sum=sum+buffer(i);
|
||||
115 3 end$while;
|
||||
116 2 buffer(bufpt)=-sum; /* check sum */
|
||||
117 2 call writebyt(':');
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 3
|
||||
|
||||
|
||||
118 2 do i=0 to bufpt; /* print hexbytes to file */
|
||||
119 3 call hex1out(buffer(i),.help(0));
|
||||
120 3 call writebyt(help(0));
|
||||
121 3 call writebyt(help(1));
|
||||
122 3 end$do;
|
||||
123 2 call writebyt(cr);
|
||||
124 2 call writebyt(lf);
|
||||
125 2 end writerecord;
|
||||
|
||||
126 1 enternewbyt: proc(b); /* enter a new byte into buffer */
|
||||
127 2 dcl b byte;
|
||||
128 2 if bufpt > recordlimit then$do /* test if record full */
|
||||
130 3 call writerecord;
|
||||
131 3 offsetaddr=cip;
|
||||
132 3 bufpt=4;
|
||||
133 3 end$if;
|
||||
134 2 buffer(bufpt)=b;
|
||||
135 2 bufpt=bufpt+1;
|
||||
136 2 end enternewbyt;
|
||||
|
||||
137 1 enterinput: proc;
|
||||
138 2 call enternewbyt(gbyt);
|
||||
139 2 end enterinput;
|
||||
|
||||
140 1 eofrecord: proc; /* write end-of-file record to file */
|
||||
141 2 if curtyp<>empty then call writerecord;
|
||||
143 2 recordtype=rectyptab(eoftype);
|
||||
144 2 offsetaddr=0;
|
||||
145 2 bufpt=4;
|
||||
146 2 call writerecord;
|
||||
147 2 end eofrecord;
|
||||
|
||||
148 1 startrecord: proc; /* write a start record to file */
|
||||
149 2 dcl seglow byte at (.csegvalue),seghigh byte at (.csegvalue+1),
|
||||
offslow byte at (.cip),offshigh byte at (.cip+1);
|
||||
150 2 if pass=2 then$do
|
||||
152 3 startfound=true;
|
||||
153 3 if curtyp <> empty then call writerecord;
|
||||
155 3 bufpt=4;
|
||||
156 3 offsetaddr=0;
|
||||
157 3 recordtype=rectyptab(starttype);
|
||||
158 3 if csegspec then$do
|
||||
160 4 call enternewbyt(seghigh);
|
||||
161 4 call enternewbyt(seglow);
|
||||
162 4 else$do
|
||||
164 4 call enternewbyt(0);
|
||||
165 4 call enternewbyt(0);
|
||||
166 4 end$if;
|
||||
167 3 call enternewbyt(offshigh);
|
||||
168 3 call enternewbyt(offslow);
|
||||
169 3 call writerecord;
|
||||
170 3 curtyp=empty;
|
||||
171 3 end$if;
|
||||
172 2 end startrecord;
|
||||
|
||||
173 1 segmbyte: proc; /* write a segment value byte to file */
|
||||
174 2 if pass = 2 then$do
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 4
|
||||
|
||||
|
||||
176 3 if curtyp <> gtyp then$do
|
||||
178 4 if curtyp <> empty then call writerecord;
|
||||
180 4 curtyp=gtyp;
|
||||
181 4 recordtype=rectyptab(gtyp);
|
||||
182 4 offsetaddr=0;
|
||||
183 4 bufpt=4;
|
||||
184 4 call enterinput;
|
||||
185 4 else$do
|
||||
187 4 call enterinput;
|
||||
188 4 call writerecord;
|
||||
189 4 curtyp=empty;
|
||||
190 4 end$if;
|
||||
191 3 end$if;
|
||||
192 2 end segmbyte;
|
||||
|
||||
193 1 databyte: proc; /* write a data byte to file */
|
||||
194 2 if pass=2 then$do
|
||||
196 3 if (curtyp <> gtyp) or (loccip <> cip) then$do
|
||||
198 4 if curtyp<>empty then call writerecord;
|
||||
200 4 curtyp=gtyp;
|
||||
201 4 recordtype=rectyptab(gtyp);
|
||||
202 4 offsetaddr=cip;
|
||||
203 4 bufpt=4;
|
||||
204 4 end$if;
|
||||
205 3 call enterinput;
|
||||
206 3 call hex1out(gbyt,.prefix(prefixptr)); /* output to listing */
|
||||
207 3 prefixptr=prefixptr+2;
|
||||
208 3 end$if;
|
||||
209 2 cip=cip+1; /* update instruction pointer */
|
||||
210 2 loccip=cip;
|
||||
211 2 end databyte;
|
||||
|
||||
212 1 emitinit: proc public;
|
||||
213 2 startfound=false;
|
||||
214 2 curtyp=empty;
|
||||
215 2 end emitinit;
|
||||
|
||||
216 1 emitterminate: proc public;
|
||||
217 2 call eofrecord; /* write EOF record */
|
||||
218 2 end emitterminate;
|
||||
|
||||
219 1 emitcodebyte: proc (b,typ) public;
|
||||
220 2 dcl (b,typ) byte;
|
||||
221 2 gbyt=b; /* move to global variables */
|
||||
222 2 gtyp=typ;
|
||||
|
||||
223 2 do case typ-CSdata;
|
||||
|
||||
224 3 do; /* CS data */
|
||||
225 4 if not startfound then$do
|
||||
227 5 call startrecord;
|
||||
228 5 end$if;
|
||||
229 4 call databyte;
|
||||
230 4 end;
|
||||
231 3 call databyte; /* DS data */
|
||||
232 3 call databyte; /* SS data */
|
||||
233 3 call databyte; /* ES data */
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 5
|
||||
|
||||
|
||||
234 3 call segmbyte; /* CS value */
|
||||
235 3 call segmbyte; /* DS value */
|
||||
236 3 call segmbyte; /* SS value */
|
||||
237 3 call segmbyte; /* ES value */
|
||||
|
||||
238 3 end$case;
|
||||
|
||||
239 2 end emitcodebyte;
|
||||
|
||||
240 1 end$module hexout;
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 6
|
||||
|
||||
|
||||
CROSS-REFERENCE LISTING
|
||||
-----------------------
|
||||
|
||||
|
||||
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
|
||||
----- ------ ----- --------------------------------
|
||||
|
||||
|
||||
81 0000H 4 ABSADDR. . . . . . BYTE ARRAY(4) EXTERNAL(62)
|
||||
81 0000H 1 ACCLEN . . . . . . BYTE EXTERNAL(66)
|
||||
81 0000H 1 ACCLENSAVE . . . . BYTE EXTERNAL(69)
|
||||
81 0000H 80 ACCUM. . . . . . . BYTE ARRAY(80) EXTERNAL(67)
|
||||
81 0000H 80 ACCUMSAVE. . . . . BYTE ARRAY(80) EXTERNAL(68)
|
||||
2 ADDR . . . . . . . LITERALLY 6 12 30 33 36 39 77
|
||||
81 84
|
||||
20 0000H ALPHANUMERIC . . . PROCEDURE BYTE EXTERNAL(5) STACK=0000H
|
||||
23 0000H ASCIICHAR. . . . . PROCEDURE BYTE EXTERNAL(6) STACK=0000H
|
||||
219 0006H 1 B. . . . . . . . . BYTE PARAMETER AUTOMATIC 220 221
|
||||
126 0004H 1 B. . . . . . . . . BYTE PARAMETER AUTOMATIC 127 134
|
||||
81 0008H 1 BASEINDEX. . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
81 0008H 1 BASEINDEX. . . . . BYTE MEMBER(OPERANDS)
|
||||
3 BASEREGBIT . . . . LITERALLY
|
||||
3 BASEREGCOUNT . . . LITERALLY
|
||||
3 BREGBIT. . . . . . LITERALLY
|
||||
3 BREGCOUNT. . . . . LITERALLY
|
||||
84 0007H 35 BUFFER . . . . . . BYTE ARRAY(35) 84 114 116 119 134
|
||||
84 002AH 1 BUFPT. . . . . . . BYTE 110 113 116 118 128 132 134 135
|
||||
145 155 183 203
|
||||
14 0000H 1 CH . . . . . . . . BYTE PARAMETER 15
|
||||
104 0004H 1 CH . . . . . . . . BYTE PARAMETER AUTOMATIC 105 106
|
||||
47 0000H 1 CH . . . . . . . . BYTE PARAMETER 48
|
||||
41 0000H 1 CH . . . . . . . . BYTE PARAMETER 42
|
||||
26 0000H 1 CH . . . . . . . . BYTE PARAMETER 27
|
||||
20 0000H 1 CH . . . . . . . . BYTE PARAMETER 21
|
||||
11 0000H 1 CH . . . . . . . . BYTE PARAMETER 12
|
||||
23 0000H 1 CH . . . . . . . . BYTE PARAMETER 24
|
||||
44 0000H 1 CH . . . . . . . . BYTE PARAMETER 45
|
||||
96 0000H 1 CH . . . . . . . . BYTE BASED(P) 97 99 100 102
|
||||
17 0000H 1 CH . . . . . . . . BYTE PARAMETER 18
|
||||
81 0000H 2 CIP. . . . . . . . WORD EXTERNAL(31) 131 149 196 202 209
|
||||
210
|
||||
70 0000H CLOSEHEX . . . . . PROCEDURE EXTERNAL(25) STACK=0000H
|
||||
68 0000H CLOSEINCLUDE . . . PROCEDURE EXTERNAL(24) STACK=0000H
|
||||
72 0000H CLOSEPRINT . . . . PROCEDURE EXTERNAL(26) STACK=0000H
|
||||
64 0000H CLOSESOURCE. . . . PROCEDURE EXTERNAL(22) STACK=0000H
|
||||
74 0000H CLOSESYMBOL. . . . PROCEDURE EXTERNAL(27) STACK=0000H
|
||||
81 0000H 1 CODEMACROFLAG. . . BYTE EXTERNAL(88)
|
||||
3 CODEMACROHEAD. . . LITERALLY
|
||||
81 0000H 2 CODEMACROPTR . . . WORD EXTERNAL(83)
|
||||
2 CR . . . . . . . . LITERALLY 123
|
||||
81 0000H 2 CSCIP. . . . . . . WORD EXTERNAL(36)
|
||||
4 CSDATA . . . . . . LITERALLY 223
|
||||
81 0000H 1 CSEGSPEC . . . . . BYTE EXTERNAL(34) 158
|
||||
81 0000H 1 CSEGTYPE . . . . . BYTE EXTERNAL(32)
|
||||
81 0000H 2 CSEGVALUE. . . . . WORD EXTERNAL(33) 149
|
||||
81 0000H 1 CSPEC. . . . . . . BYTE EXTERNAL(43)
|
||||
4 CSVALUE. . . . . . LITERALLY
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 7
|
||||
|
||||
|
||||
81 0000H 2 CURCSEG. . . . . . WORD EXTERNAL(39)
|
||||
81 0000H 2 CURDSEG. . . . . . WORD EXTERNAL(40)
|
||||
81 0000H 2 CURESEG. . . . . . WORD EXTERNAL(42)
|
||||
81 0000H 9 CURRENTSYMBOL. . . STRUCTURE EXTERNAL(79)
|
||||
81 0000H 2 CURSSEG. . . . . . WORD EXTERNAL(41)
|
||||
84 0005H 1 CURTYP . . . . . . BYTE 141 153 170 176 178 180 189 196
|
||||
198 200 214
|
||||
38 0000H 2 D. . . . . . . . . WORD PARAMETER 39
|
||||
35 0000H 2 D. . . . . . . . . WORD PARAMETER 36
|
||||
29 0000H 2 D. . . . . . . . . WORD PARAMETER 30
|
||||
32 0000H 2 D. . . . . . . . . WORD PARAMETER 33
|
||||
193 01EDH 100 DATABYTE . . . . . PROCEDURE STACK=001AH 229 231 232 233
|
||||
2 DCL. . . . . . . . LITERALLY
|
||||
38 0000H DECOUT . . . . . . PROCEDURE EXTERNAL(11) STACK=0000H
|
||||
81 0000H 1 DEFAULTDRIVE . . . BYTE EXTERNAL(86)
|
||||
81 0001H 1 DESCR. . . . . . . BYTE MEMBER(TOKEN)
|
||||
76 0000H 1 DEV. . . . . . . . BYTE PARAMETER 77
|
||||
14 0000H DIGIT. . . . . . . PROCEDURE BYTE EXTERNAL(3) STACK=0000H
|
||||
4 DRCODEDATA . . . . LITERALLY 84
|
||||
4 DRCODESEGM . . . . LITERALLY 84
|
||||
4 DRDATADATA . . . . LITERALLY 84
|
||||
4 DRDATASEGM . . . . LITERALLY 84
|
||||
4 DREXTRADATA. . . . LITERALLY 84
|
||||
4 DREXTRASEGM. . . . LITERALLY 84
|
||||
4 DRSTACKDATA. . . . LITERALLY 84
|
||||
4 DRSTACKSEGM. . . . LITERALLY 84
|
||||
81 0000H 2 DSCIP. . . . . . . WORD EXTERNAL(38)
|
||||
4 DSDATA . . . . . . LITERALLY
|
||||
81 0000H 1 DSPEC. . . . . . . BYTE EXTERNAL(44)
|
||||
4 DSVALUE. . . . . . LITERALLY
|
||||
2 ELSEDO . . . . . . LITERALLY
|
||||
219 0268H 70 EMITCODEBYTE . . . PROCEDURE PUBLIC STACK=0022H
|
||||
212 0251H 15 EMITINIT . . . . . PROCEDURE PUBLIC STACK=0002H
|
||||
216 0260H 8 EMITTERMINATE. . . PROCEDURE PUBLIC STACK=0014H
|
||||
84 EMPTY. . . . . . . LITERALLY 141 153 170 178 189 198 214
|
||||
2 ENDCASE. . . . . . LITERALLY
|
||||
2 ENDDO. . . . . . . LITERALLY
|
||||
2 ENDFOREVER . . . . LITERALLY
|
||||
2 ENDIF. . . . . . . LITERALLY
|
||||
2 ENDMODULE. . . . . LITERALLY
|
||||
2 ENDOFFILE. . . . . LITERALLY
|
||||
2 ENDPROC. . . . . . LITERALLY
|
||||
2 ENDWHILE . . . . . LITERALLY
|
||||
137 0112H 12 ENTERINPUT . . . . PROCEDURE STACK=0016H 184 187 205
|
||||
126 00E5H 45 ENTERNEWBYT. . . . PROCEDURE STACK=0012H 138 160 161 164
|
||||
165 167 168
|
||||
140 011EH 38 EOFRECORD. . . . . PROCEDURE STACK=0010H 217
|
||||
81 0000H 1 EOFSET . . . . . . BYTE EXTERNAL(70)
|
||||
4 EOFTYPE. . . . . . LITERALLY 84 143
|
||||
29 0000H EQUAL. . . . . . . PROCEDURE BYTE EXTERNAL(8) STACK=0000H
|
||||
81 0000H 1 ERRORPRINTED . . . BYTE EXTERNAL(73)
|
||||
81 0000H 2 ERRORS . . . . . . WORD EXTERNAL(63)
|
||||
81 0000H 2 ESCIP. . . . . . . WORD EXTERNAL(35)
|
||||
4 ESDATA . . . . . . LITERALLY
|
||||
81 0000H 1 ESPEC. . . . . . . BYTE EXTERNAL(46)
|
||||
4 ESVALUE. . . . . . LITERALLY
|
||||
2 FALSE. . . . . . . LITERALLY 213
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 8
|
||||
|
||||
|
||||
8 0000H 2 FCBADR . . . . . . WORD PARAMETER 9
|
||||
8 0000H FILEABORT. . . . . PROCEDURE EXTERNAL(1) STACK=0000H
|
||||
3 FILEISTRUCTURE . . LITERALLY
|
||||
3 FILEOSTRUCTURE . . LITERALLY
|
||||
79 0000H FILESETUP. . . . . PROCEDURE BYTE EXTERNAL(29) STACK=0000H
|
||||
11 0000H FILL . . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H
|
||||
76 0000H 2 FILNAM . . . . . . WORD PARAMETER 77
|
||||
76 0000H 2 FILTYP . . . . . . WORD PARAMETER 77
|
||||
81 0000H 2 FIRSTMACROPTR. . . WORD EXTERNAL(74)
|
||||
2 FOREVER. . . . . . LITERALLY
|
||||
2 FORMFEED . . . . . LITERALLY
|
||||
81 0000H 1 FULLSYMBTAB. . . . BYTE EXTERNAL(76)
|
||||
84 0004H 1 GBYT . . . . . . . BYTE 138 206 221
|
||||
82 0000H GLOBALINIT . . . . PROCEDURE EXTERNAL(89) STACK=0000H
|
||||
84 0003H 1 GTYP . . . . . . . BYTE 176 180 181 196 200 201 222
|
||||
81 0000H 5 HELP . . . . . . . BYTE ARRAY(5) EXTERNAL(84) 119 120 121
|
||||
32 0000H HEX1OUT. . . . . . PROCEDURE EXTERNAL(9) STACK=0000H 119 206
|
||||
35 0000H HEX2OUT. . . . . . PROCEDURE EXTERNAL(10) STACK=0000H
|
||||
1 0000H HEXOUT . . . . . . PROCEDURE STACK=0000H
|
||||
81 0000H 1 I. . . . . . . . . BYTE EXTERNAL(85) 112 113 114 118 119
|
||||
76 0000H IFILESETUP . . . . PROCEDURE EXTERNAL(28) STACK=0000H
|
||||
81 0000H 1 IFLEVEL. . . . . . BYTE EXTERNAL(78)
|
||||
81 0000H 1 IFLIST . . . . . . BYTE EXTERNAL(49)
|
||||
81 0000H 1 INCLUDEDEFAULT . . BYTE EXTERNAL(87)
|
||||
81 0000H 1 INCLUDEON. . . . . BYTE EXTERNAL(77)
|
||||
3 INDEXREGBIT. . . . LITERALLY
|
||||
3 INDEXREGCOUNT. . . LITERALLY
|
||||
52 0000H ININCLUDEBYTE. . . PROCEDURE BYTE EXTERNAL(16) STACK=0000H
|
||||
2 INIT . . . . . . . LITERALLY
|
||||
50 0000H INSOURCEBYTE . . . PROCEDURE BYTE EXTERNAL(15) STACK=0000H
|
||||
4 INTELDATA. . . . . LITERALLY 84
|
||||
81 0000H 1 INTELHEXON . . . . BYTE EXTERNAL(71) 87
|
||||
4 INTELSEGMENT . . . LITERALLY 84
|
||||
3 IREGBIT. . . . . . LITERALLY
|
||||
3 IREGCOUNT. . . . . LITERALLY
|
||||
81 0000H 2 LENGTH . . . . . . WORD MEMBER(OPERANDS)
|
||||
81 0000H 2 LENGTH . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
17 0000H LETTER . . . . . . PROCEDURE BYTE EXTERNAL(4) STACK=0000H
|
||||
2 LF . . . . . . . . LITERALLY 124
|
||||
2 LIT. . . . . . . . LITERALLY 2 3 4 84
|
||||
84 0000H 2 LOCCIP . . . . . . WORD 196 210
|
||||
81 0000H 2 MACROPTR . . . . . WORD EXTERNAL(75)
|
||||
81 0000H 1 MAXCOL . . . . . . BYTE EXTERNAL(50)
|
||||
11 0000H 1 N. . . . . . . . . BYTE PARAMETER 12
|
||||
38 0000H 2 N. . . . . . . . . WORD PARAMETER 39
|
||||
35 0000H 2 N. . . . . . . . . WORD PARAMETER 36
|
||||
32 0000H 1 N. . . . . . . . . BYTE PARAMETER 33
|
||||
29 0000H 1 N. . . . . . . . . BYTE PARAMETER 30
|
||||
85 0004H 1 N. . . . . . . . . BYTE PARAMETER AUTOMATIC 86 89 92
|
||||
81 0000H 1 NEXTCH . . . . . . BYTE EXTERNAL(65)
|
||||
81 0000H 1 NOERROR. . . . . . BYTE EXTERNAL(72)
|
||||
81 0000H 1 NOOPER . . . . . . BYTE EXTERNAL(81)
|
||||
3 NOOVERCOUNT. . . . LITERALLY
|
||||
3 NOOVERRIDEBIT. . . LITERALLY
|
||||
81 0006H 2 OFFSET . . . . . . WORD MEMBER(OPERANDS)
|
||||
81 0006H 2 OFFSET . . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
84 0008H 2 OFFSETADDR . . . . WORD AT 109 131 144 156 182 202
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 9
|
||||
|
||||
|
||||
149 0001H 1 OFFSHIGH . . . . . BYTE EXTERNAL(31) AT 167
|
||||
149 0000H 1 OFFSLOW. . . . . . BYTE EXTERNAL(31) AT 168
|
||||
58 0000H OPENHEX. . . . . . PROCEDURE EXTERNAL(19) STACK=0000H
|
||||
56 0000H OPENINCLUDE. . . . PROCEDURE EXTERNAL(18) STACK=0000H
|
||||
60 0000H OPENPRINT. . . . . PROCEDURE EXTERNAL(20) STACK=0000H
|
||||
54 0000H OPENSOURCE . . . . PROCEDURE EXTERNAL(17) STACK=0000H
|
||||
62 0000H OPENSYMBOL . . . . PROCEDURE EXTERNAL(21) STACK=0000H
|
||||
81 0000H 36 OPERANDS . . . . . STRUCTURE ARRAY(4) EXTERNAL(82)
|
||||
3 OPERANDSTRUC . . . LITERALLY 81
|
||||
41 0000H OUTHEXBYTE . . . . PROCEDURE EXTERNAL(12) STACK=0000H 106
|
||||
44 0000H OUTPRINTBYTE . . . PROCEDURE EXTERNAL(13) STACK=0000H
|
||||
47 0000H OUTSYMBOLBYTE. . . PROCEDURE EXTERNAL(14) STACK=0000H
|
||||
5 0000H OUTTEXT. . . . . . PROCEDURE EXTERNAL(0) STACK=0000H
|
||||
95 0004H 2 P. . . . . . . . . WORD PARAMETER AUTOMATIC 96 97 98 99
|
||||
100 101 102
|
||||
81 0000H 1 PAGESIZE . . . . . BYTE EXTERNAL(56)
|
||||
81 0000H 1 PASS . . . . . . . BYTE EXTERNAL(30) 150 174 194
|
||||
81 0000H 240 PREFIX . . . . . . BYTE ARRAY(240) EXTERNAL(60) 206
|
||||
81 0000H 1 PREFIXPTR. . . . . BYTE EXTERNAL(61) 206 207
|
||||
81 0000H 1 PRINTDEVICE. . . . BYTE EXTERNAL(53)
|
||||
81 0000H 1 PRINTON. . . . . . BYTE EXTERNAL(47)
|
||||
81 0000H 1 PRINTSWITCHOFF . . BYTE EXTERNAL(48)
|
||||
2 PROC . . . . . . . LITERALLY 20 23 32 35 38 41 44
|
||||
47 50 52 54 56 58 60 62 64 66
|
||||
68 70 72 74 76 79 104 108 126 137
|
||||
140 148 173 193 212 216 219
|
||||
11 0000H 2 PT . . . . . . . . WORD PARAMETER 12
|
||||
84 0007H 1 RECORDLG . . . . . BYTE AT 110
|
||||
84 RECORDLIMIT. . . . LITERALLY 128
|
||||
84 000AH 1 RECORDTYPE . . . . BYTE AT 143 157 181 201
|
||||
84 000CH 12 RECTYPDTAB . . . . BYTE ARRAY(12) DATA 92
|
||||
84 0000H 12 RECTYPITAB . . . . BYTE ARRAY(12) DATA 89
|
||||
85 0000H 34 RECTYPTAB. . . . . PROCEDURE BYTE STACK=0004H 143 157 181
|
||||
201
|
||||
2 REENT. . . . . . . LITERALLY
|
||||
66 0000H REWINDSOURCE . . . PROCEDURE EXTERNAL(23) STACK=0000H
|
||||
29 0000H 2 S. . . . . . . . . WORD PARAMETER 30
|
||||
96 002BH 1 S1 . . . . . . . . BYTE 97 100
|
||||
96 002CH 1 S2 . . . . . . . . BYTE 99 102
|
||||
81 0000H 12 SAVESOURCE . . . . BYTE ARRAY(12) EXTERNAL(52)
|
||||
149 0001H 1 SEGHIGH. . . . . . BYTE EXTERNAL(33) AT 160
|
||||
149 0000H 1 SEGLOW . . . . . . BYTE EXTERNAL(33) AT 161
|
||||
3 SEGMBIT. . . . . . LITERALLY
|
||||
173 01A9H 68 SEGMBYTE . . . . . PROCEDURE STACK=001AH 234 235 236 237
|
||||
3 SEGMCOUNT. . . . . LITERALLY
|
||||
81 0004H 2 SEGMENT. . . . . . WORD MEMBER(OPERANDS)
|
||||
81 0004H 2 SEGMENT. . . . . . WORD MEMBER(CURRENTSYMBOL)
|
||||
3 SEGTYPEBIT . . . . LITERALLY
|
||||
3 SEGTYPECOUNT . . . LITERALLY
|
||||
81 0003H 1 SFLAG. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
81 0003H 1 SFLAG. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
81 0000H 1 SIMFORM. . . . . . BYTE EXTERNAL(57)
|
||||
81 0000H 80 SOURCEBUF. . . . . BYTE ARRAY(80) EXTERNAL(58)
|
||||
81 0000H 12 SOURCENAME . . . . BYTE ARRAY(12) EXTERNAL(51)
|
||||
81 0000H 1 SOURCEPTR. . . . . BYTE EXTERNAL(59)
|
||||
2 SPACE. . . . . . . LITERALLY
|
||||
81 0000H 2 SSCIP. . . . . . . WORD EXTERNAL(37)
|
||||
PL/M-86 COMPILER HEX OUTPUT MODULE 10/5/81 PAGE 10
|
||||
|
||||
|
||||
4 SSDATA . . . . . . LITERALLY
|
||||
81 0000H 1 SSPEC. . . . . . . BYTE EXTERNAL(45)
|
||||
4 SSVALUE. . . . . . LITERALLY
|
||||
84 0002H 1 STARTFOUND . . . . BYTE 152 213 225
|
||||
148 0144H 101 STARTRECORD. . . . PROCEDURE STACK=0016H 227
|
||||
4 STARTTYPE. . . . . LITERALLY 84 157
|
||||
2 STRUC. . . . . . . LITERALLY 81
|
||||
81 0002H 1 STYPE. . . . . . . BYTE MEMBER(OPERANDS)
|
||||
81 0002H 1 STYPE. . . . . . . BYTE MEMBER(CURRENTSYMBOL)
|
||||
84 0006H 1 SUM. . . . . . . . BYTE 111 114 116
|
||||
95 0022H 42 SWITCHHIGHLOW. . . PROCEDURE STACK=0004H 109
|
||||
81 0000H 1 SYMBOLDEVICE . . . BYTE EXTERNAL(54)
|
||||
3 SYMBOLHEAD . . . . LITERALLY
|
||||
3 SYMBOLSTRUC. . . . LITERALLY 81
|
||||
81 0000H 2 SYMBTABADR . . . . WORD EXTERNAL(80)
|
||||
5 0000H 2 T. . . . . . . . . WORD PARAMETER 6
|
||||
2 TAB. . . . . . . . LITERALLY
|
||||
8 0000H 2 TEXTADR. . . . . . WORD PARAMETER 9
|
||||
2 THENDO . . . . . . LITERALLY 87 128 150 158 174 176 194
|
||||
196 225
|
||||
81 0000H 30 TITLE. . . . . . . BYTE ARRAY(30) EXTERNAL(55)
|
||||
81 0000H 4 TOKEN. . . . . . . STRUCTURE EXTERNAL(64)
|
||||
2 TRUE . . . . . . . LITERALLY 152
|
||||
219 0004H 1 TYP. . . . . . . . BYTE PARAMETER AUTOMATIC 220 222 223
|
||||
81 0000H 1 TYPE . . . . . . . BYTE MEMBER(TOKEN)
|
||||
3 TYPEBIT. . . . . . LITERALLY
|
||||
3 TYPECOUNT. . . . . LITERALLY
|
||||
26 0000H UPPER. . . . . . . PROCEDURE BYTE EXTERNAL(7) STACK=0000H
|
||||
81 0002H 2 VALUE. . . . . . . WORD MEMBER(TOKEN)
|
||||
104 004CH 13 WRITEBYT . . . . . PROCEDURE STACK=0008H 117 120 121 123
|
||||
124
|
||||
108 0059H 140 WRITERECORD. . . . PROCEDURE STACK=000CH 130 142 146 154
|
||||
169 179 188 199
|
||||
|
||||
|
||||
|
||||
MODULE INFORMATION:
|
||||
|
||||
CODE AREA SIZE = 02AEH 686D
|
||||
CONSTANT AREA SIZE = 0018H 24D
|
||||
VARIABLE AREA SIZE = 002DH 45D
|
||||
MAXIMUM STACK SIZE = 0022H 34D
|
||||
611 LINES READ
|
||||
0 PROGRAM ERROR(S)
|
||||
|
||||
END OF PL/M-86 COMPILATION
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user