Digital Research
This commit is contained in:
2020-11-06 18:50:37 +01:00
parent 621ed8ccaf
commit 31738079c4
8481 changed files with 1888323 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
DDT86 status: used old version, ready for QA 10/25/82
DDT86 notes
10/21/82
I got the CMD version from Bob Silberstein: DDT86 v1.2

View File

@@ -0,0 +1,308 @@
PL/M-86 COMPILER TABLES FOR DDT86 ASSEMBLER 6/15/81 PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE ASMTAB
OBJECT MODULE PLACED IN ASMTAB.OBJ
COMPILER INVOKED BY: PLM86 ASMTAB.PLM DEBUG XREF PAGEWIDTH(100)
$title('tables for ddt86 assembler')
$date(6/15/81)
1 asmtab: do;
$nolist
4 1 declare op$tab (*) byte public data (
aaa$in, 1, 037h, 0,
aad$in, 2, 0d5h, 0ah,
aam$in, 2, 0d4h, 0ah,
aas$in, 1, 03fh, 0,
adc$in, 9, 10h, 2,
add$in, 9, 0, 0,
and$in, 10, 20h, 4,
call$in, 11, 0, 0,
callf$in, 17, 0, 0,
cbw$in, 1, 098h, 0,
clc$in, 1, 0f8h, 0,
cld$in, 1, 0fch, 0,
cli$in, 1, 0fah, 0,
cmc$in, 1, 0f5h, 0,
cmp$in, 9, 38h, 7,
cmpsb$in, 1, 0a6h, 0,
cmpsw$in, 1, 0a7h, 0,
cwd$in, 1, 099h, 0,
daa$in, 1, 027h, 0,
das$in, 1, 02fh, 0,
dec$in, 7, 0, 0,
div$in, 5, 0f6h, 6,
esc$in, 13, 0d8h, 0,
hlt$in, 1, 0f4h, 0,
idiv$in, 5, 0f6h, 7,
imul$in, 5, 0f6h, 5,
in$in, 15, 0e4h, 0,
inc$in, 7, 1, 0,
int$in, 12, 0, 0,
into$in, 1, 0ceh, 0,
iret$in, 1, 0cfh, 0,
ja$in, 3, 077h, 0,
jae$in, 3, 073h, 0,
jb$in, 3, 072h, 0,
jbe$in, 3, 076h, 0,
jc$in, 3, 072h, 0,
jcxz$in, 3, 0e3h, 0,
je$in, 3, 074h, 0,
jg$in, 3, 07fh, 0,
jge$in, 3, 07dh, 0,
jl$in, 3, 07ch, 0,
jle$in, 3, 07eh, 0,
jmp$in, 11, 1, 0,
PL/M-86 COMPILER TABLES FOR DDT86 ASSEMBLER 6/15/81 PAGE 2
jmpf$in, 17, 1, 0,
jmps$in, 3, 0ebh, 0,
jna$in, 3, 076h, 0,
jnae$in, 3, 072h, 0,
jnb$in, 3, 073h, 0,
jnbe$in, 3, 077h, 0,
jnc$in, 3, 073h, 0,
jne$in, 3, 075h, 0,
jng$in, 3, 07eh, 0,
jnge$in, 3, 07ch, 0,
jnl$in, 3, 07dh, 0,
jnle$in, 3, 07fh, 0,
jno$in, 3, 071h, 0,
jnp$in, 3, 07bh, 0,
jns$in, 3, 079h, 0,
jnz$in, 3, 075h, 0,
jo$in, 3, 070h, 0,
jp$in, 3, 07ah, 0,
jpe$in, 3, 07ah, 0,
jpo$in, 3, 07bh, 0,
js$in, 3, 078h, 0,
jz$in, 3, 074h, 0,
lahf$in, 1, 09fh, 0,
lds$in, 6, 0c5h, 0,
lea$in, 6, 08dh, 0,
les$in, 6, 0c4h, 0,
lock$in, 0ffh, 0f0h, 0,
lodsb$in, 1, 0ach, 0,
lodsw$in, 1, 0adh, 0,
loop$in, 3, 0e2h, 0,
loope$in, 3, 0e1h, 0,
loopne$in, 3, 0e0h, 0,
loopnz$in, 3, 0e0h, 0,
loopz$in, 3, 0e1h, 0,
mov$in, 20, 0, 0,
movsb$in, 1, 0a4h, 0,
movsw$in, 1, 0a5h, 0,
mul$in, 5, 0f6h, 4,
neg$in, 5, 0f6h, 3,
nop$in, 1, 090h, 0,
not$in, 5, 0f6h, 2,
or$in, 10, 8, 1,
out$in, 16, 0e6h, 0,
pop$in, 21, 0, 0,
popf$in, 1, 09dh, 0,
push$in, 8, 1, 0,
pushf$in, 1, 09ch, 0,
rcl$in, 4, 0d0h, 2,
rcr$in, 4, 0d0h, 3,
rep$in, 0feh, 0f3h, 0,
repe$in, 0feh, 0f3h, 0,
repne$in, 0feh, 0f2h, 0,
repnz$in, 0feh, 0f2h, 0,
repz$in, 0feh, 0f3h, 0,
ret$in, 14, 0c2h, 0,
retf$in, 14, 0cah, 0,
rol$in, 4, 0d0h, 0,
PL/M-86 COMPILER TABLES FOR DDT86 ASSEMBLER 6/15/81 PAGE 3
ror$in, 4, 0d0h, 1,
sahf$in, 1, 09eh, 0,
sal$in, 4, 0d0h, 4,
sar$in, 4, 0d0h, 7,
sbb$in, 9, 18h, 3,
scasb$in, 1, 0aeh, 0,
scasw$in, 1, 0afh, 0,
shl$in, 4, 0d0h, 4,
shr$in, 4, 0d0h, 5,
stc$in, 1, 0f9h, 0,
std$in, 1, 0fdh, 0,
sti$in, 1, 0fbh, 0,
stosb$in, 1, 0aah, 0,
stosw$in, 1, 0abh, 0,
sub$in, 9, 28h, 5,
test$in, 18, 0, 0,
wait$in, 1, 09bh, 0,
xchg$in, 19, 0, 0,
xlat$in, 1, 0d7h, 0,
xor$in, 10, 30h, 6
);
5 1 end asm$tab;
PL/M-86 COMPILER TABLES FOR DDT86 ASSEMBLER 6/15/81 PAGE 4
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
3 AAAIN. . . . . . . LITERALLY 4
3 AADIN. . . . . . . LITERALLY 4
3 AAMIN. . . . . . . LITERALLY 4
3 AASIN. . . . . . . LITERALLY 4
3 ADCIN. . . . . . . LITERALLY 4
3 ADDIN. . . . . . . LITERALLY 4
3 ANDIN. . . . . . . LITERALLY 4
1 0000H ASMTAB . . . . . . PROCEDURE STACK=0000H
3 CALLFIN. . . . . . LITERALLY 4
3 CALLIN . . . . . . LITERALLY 4
3 CBWIN. . . . . . . LITERALLY 4
3 CLCIN. . . . . . . LITERALLY 4
3 CLDIN. . . . . . . LITERALLY 4
3 CLIIN. . . . . . . LITERALLY 4
3 CMCIN. . . . . . . LITERALLY 4
3 CMPIN. . . . . . . LITERALLY 4
3 CMPSBIN. . . . . . LITERALLY 4
3 CMPSWIN. . . . . . LITERALLY 4
3 CSIN . . . . . . . LITERALLY
3 CWDIN. . . . . . . LITERALLY 4
3 DAAIN. . . . . . . LITERALLY 4
3 DASIN. . . . . . . LITERALLY 4
3 DECIN. . . . . . . LITERALLY 4
3 DIVIN. . . . . . . LITERALLY 4
3 DSIN . . . . . . . LITERALLY
3 ESCIN. . . . . . . LITERALLY 4
3 ESIN . . . . . . . LITERALLY
3 HLTIN. . . . . . . LITERALLY 4
3 IDIVIN . . . . . . LITERALLY 4
3 IMULIN . . . . . . LITERALLY 4
3 INCIN. . . . . . . LITERALLY 4
3 ININ . . . . . . . LITERALLY 4
3 INTIN. . . . . . . LITERALLY 4
3 INTOIN . . . . . . LITERALLY 4
3 IRETIN . . . . . . LITERALLY 4
3 JAEIN. . . . . . . LITERALLY 4
3 JAIN . . . . . . . LITERALLY 4
3 JBEIN. . . . . . . LITERALLY 4
3 JBIN . . . . . . . LITERALLY 4
3 JCIN . . . . . . . LITERALLY 4
3 JCXZIN . . . . . . LITERALLY 4
3 JEIN . . . . . . . LITERALLY 4
3 JGEIN. . . . . . . LITERALLY 4
3 JGIN . . . . . . . LITERALLY 4
3 JLEIN. . . . . . . LITERALLY 4
3 JLIN . . . . . . . LITERALLY 4
3 JMPFIN . . . . . . LITERALLY 4
3 JMPIN. . . . . . . LITERALLY 4
3 JMPSIN . . . . . . LITERALLY 4
PL/M-86 COMPILER TABLES FOR DDT86 ASSEMBLER 6/15/81 PAGE 5
3 JNAEIN . . . . . . LITERALLY 4
3 JNAIN. . . . . . . LITERALLY 4
3 JNBEIN . . . . . . LITERALLY 4
3 JNBIN. . . . . . . LITERALLY 4
3 JNCIN. . . . . . . LITERALLY 4
3 JNEIN. . . . . . . LITERALLY 4
3 JNGEIN . . . . . . LITERALLY 4
3 JNGIN. . . . . . . LITERALLY 4
3 JNLEIN . . . . . . LITERALLY 4
3 JNLIN. . . . . . . LITERALLY 4
3 JNOIN. . . . . . . LITERALLY 4
3 JNPIN. . . . . . . LITERALLY 4
3 JNSIN. . . . . . . LITERALLY 4
3 JNZIN. . . . . . . LITERALLY 4
3 JOIN . . . . . . . LITERALLY 4
3 JPEIN. . . . . . . LITERALLY 4
3 JPIN . . . . . . . LITERALLY 4
3 JPOIN. . . . . . . LITERALLY 4
3 JSIN . . . . . . . LITERALLY 4
3 JZIN . . . . . . . LITERALLY 4
3 LAHFIN . . . . . . LITERALLY 4
3 LDSIN. . . . . . . LITERALLY 4
3 LEAIN. . . . . . . LITERALLY 4
3 LESIN. . . . . . . LITERALLY 4
3 LOCKIN . . . . . . LITERALLY 4
3 LODSBIN. . . . . . LITERALLY 4
3 LODSWIN. . . . . . LITERALLY 4
3 LOOPEIN. . . . . . LITERALLY 4
3 LOOPIN . . . . . . LITERALLY 4
3 LOOPNEIN . . . . . LITERALLY 4
3 LOOPNZIN . . . . . LITERALLY 4
3 LOOPZIN. . . . . . LITERALLY 4
3 MOVIN. . . . . . . LITERALLY 4
3 MOVSBIN. . . . . . LITERALLY 4
3 MOVSWIN. . . . . . LITERALLY 4
3 MULIN. . . . . . . LITERALLY 4
3 NEGIN. . . . . . . LITERALLY 4
3 NOPIN. . . . . . . LITERALLY 4
3 NOTIN. . . . . . . LITERALLY 4
2 OP2IN. . . . . . . LITERALLY 4
2 OP3IN. . . . . . . LITERALLY 4
2 OP4IN. . . . . . . LITERALLY 4
2 OP5IN. . . . . . . LITERALLY 4
2 OP6IN. . . . . . . LITERALLY 4
4 0000H 480 OPTAB. . . . . . . BYTE ARRAY(480) PUBLIC DATA
3 ORIN . . . . . . . LITERALLY 4
3 OUTIN. . . . . . . LITERALLY 4
3 POPFIN . . . . . . LITERALLY 4
3 POPIN. . . . . . . LITERALLY 4
3 PUSHFIN. . . . . . LITERALLY 4
3 PUSHIN . . . . . . LITERALLY 4
3 RCLIN. . . . . . . LITERALLY 4
3 RCRIN. . . . . . . LITERALLY 4
3 REPEIN . . . . . . LITERALLY 4
3 REPIN. . . . . . . LITERALLY 4
3 REPNEIN. . . . . . LITERALLY 4
3 REPNZIN. . . . . . LITERALLY 4
PL/M-86 COMPILER TABLES FOR DDT86 ASSEMBLER 6/15/81 PAGE 6
3 REPZIN . . . . . . LITERALLY 4
3 RETFIN . . . . . . LITERALLY 4
3 RETIN. . . . . . . LITERALLY 4
3 ROLIN. . . . . . . LITERALLY 4
3 RORIN. . . . . . . LITERALLY 4
3 SAHFIN . . . . . . LITERALLY 4
3 SALIN. . . . . . . LITERALLY 4
3 SARIN. . . . . . . LITERALLY 4
3 SBBIN. . . . . . . LITERALLY 4
3 SCASBIN. . . . . . LITERALLY 4
3 SCASWIN. . . . . . LITERALLY 4
3 SHLIN. . . . . . . LITERALLY 4
3 SHRIN. . . . . . . LITERALLY 4
3 SSIN . . . . . . . LITERALLY
3 STCIN. . . . . . . LITERALLY 4
3 STDIN. . . . . . . LITERALLY 4
3 STIIN. . . . . . . LITERALLY 4
3 STOSBIN. . . . . . LITERALLY 4
3 STOSWIN. . . . . . LITERALLY 4
3 SUBIN. . . . . . . LITERALLY 4
3 TESTIN . . . . . . LITERALLY 4
3 WAITIN . . . . . . LITERALLY 4
3 XCHGIN . . . . . . LITERALLY 4
3 XLATIN . . . . . . LITERALLY 4
3 XORIN. . . . . . . LITERALLY 4
MODULE INFORMATION:
CODE AREA SIZE = 0000H 0D
CONSTANT AREA SIZE = 01E0H 480D
VARIABLE AREA SIZE = 0000H 0D
MAXIMUM STACK SIZE = 0000H 0D
267 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION

View File

@@ -0,0 +1,134 @@
$title('tables for ddt86 assembler')
$date(6/15/81)
asmtab: do;
$nolist
$include(optab.lit)
$list
declare op$tab (*) byte public data (
aaa$in, 1, 037h, 0,
aad$in, 2, 0d5h, 0ah,
aam$in, 2, 0d4h, 0ah,
aas$in, 1, 03fh, 0,
adc$in, 9, 10h, 2,
add$in, 9, 0, 0,
and$in, 10, 20h, 4,
call$in, 11, 0, 0,
callf$in, 17, 0, 0,
cbw$in, 1, 098h, 0,
clc$in, 1, 0f8h, 0,
cld$in, 1, 0fch, 0,
cli$in, 1, 0fah, 0,
cmc$in, 1, 0f5h, 0,
cmp$in, 9, 38h, 7,
cmpsb$in, 1, 0a6h, 0,
cmpsw$in, 1, 0a7h, 0,
cwd$in, 1, 099h, 0,
daa$in, 1, 027h, 0,
das$in, 1, 02fh, 0,
dec$in, 7, 0, 0,
div$in, 5, 0f6h, 6,
esc$in, 13, 0d8h, 0,
hlt$in, 1, 0f4h, 0,
idiv$in, 5, 0f6h, 7,
imul$in, 5, 0f6h, 5,
in$in, 15, 0e4h, 0,
inc$in, 7, 1, 0,
int$in, 12, 0, 0,
into$in, 1, 0ceh, 0,
iret$in, 1, 0cfh, 0,
ja$in, 3, 077h, 0,
jae$in, 3, 073h, 0,
jb$in, 3, 072h, 0,
jbe$in, 3, 076h, 0,
jc$in, 3, 072h, 0,
jcxz$in, 3, 0e3h, 0,
je$in, 3, 074h, 0,
jg$in, 3, 07fh, 0,
jge$in, 3, 07dh, 0,
jl$in, 3, 07ch, 0,
jle$in, 3, 07eh, 0,
jmp$in, 11, 1, 0,
jmpf$in, 17, 1, 0,
jmps$in, 3, 0ebh, 0,
jna$in, 3, 076h, 0,
jnae$in, 3, 072h, 0,
jnb$in, 3, 073h, 0,
jnbe$in, 3, 077h, 0,
jnc$in, 3, 073h, 0,
jne$in, 3, 075h, 0,
jng$in, 3, 07eh, 0,
jnge$in, 3, 07ch, 0,
jnl$in, 3, 07dh, 0,
jnle$in, 3, 07fh, 0,
jno$in, 3, 071h, 0,
jnp$in, 3, 07bh, 0,
jns$in, 3, 079h, 0,
jnz$in, 3, 075h, 0,
jo$in, 3, 070h, 0,
jp$in, 3, 07ah, 0,
jpe$in, 3, 07ah, 0,
jpo$in, 3, 07bh, 0,
js$in, 3, 078h, 0,
jz$in, 3, 074h, 0,
lahf$in, 1, 09fh, 0,
lds$in, 6, 0c5h, 0,
lea$in, 6, 08dh, 0,
les$in, 6, 0c4h, 0,
lock$in, 0ffh, 0f0h, 0,
lodsb$in, 1, 0ach, 0,
lodsw$in, 1, 0adh, 0,
loop$in, 3, 0e2h, 0,
loope$in, 3, 0e1h, 0,
loopne$in, 3, 0e0h, 0,
loopnz$in, 3, 0e0h, 0,
loopz$in, 3, 0e1h, 0,
mov$in, 20, 0, 0,
movsb$in, 1, 0a4h, 0,
movsw$in, 1, 0a5h, 0,
mul$in, 5, 0f6h, 4,
neg$in, 5, 0f6h, 3,
nop$in, 1, 090h, 0,
not$in, 5, 0f6h, 2,
or$in, 10, 8, 1,
out$in, 16, 0e6h, 0,
pop$in, 21, 0, 0,
popf$in, 1, 09dh, 0,
push$in, 8, 1, 0,
pushf$in, 1, 09ch, 0,
rcl$in, 4, 0d0h, 2,
rcr$in, 4, 0d0h, 3,
rep$in, 0feh, 0f3h, 0,
repe$in, 0feh, 0f3h, 0,
repne$in, 0feh, 0f2h, 0,
repnz$in, 0feh, 0f2h, 0,
repz$in, 0feh, 0f3h, 0,
ret$in, 14, 0c2h, 0,
retf$in, 14, 0cah, 0,
rol$in, 4, 0d0h, 0,
ror$in, 4, 0d0h, 1,
sahf$in, 1, 09eh, 0,
sal$in, 4, 0d0h, 4,
sar$in, 4, 0d0h, 7,
sbb$in, 9, 18h, 3,
scasb$in, 1, 0aeh, 0,
scasw$in, 1, 0afh, 0,
shl$in, 4, 0d0h, 4,
shr$in, 4, 0d0h, 5,
stc$in, 1, 0f9h, 0,
std$in, 1, 0fdh, 0,
sti$in, 1, 0fbh, 0,
stosb$in, 1, 0aah, 0,
stosw$in, 1, 0abh, 0,
sub$in, 9, 28h, 5,
test$in, 18, 0, 0,
wait$in, 1, 09bh, 0,
xchg$in, 19, 0, 0,
xlat$in, 1, 0d7h, 0,
xor$in, 10, 30h, 6
);
end asm$tab;

View File

@@ -0,0 +1,436 @@
:020000020000FC
:010000003FC0
:020000020230CA
:0C000000E9D40FE903DEE903DEE903DECA
:02000002033DBC
:100000000C0137000D02D50A0E02D40A0F013F0081
:100010001009100211090000120A2004510B0000FF
:100020006A110000130198001401F8001501FC008A
:100030001601FA001701F500180938076B01A60030
:100040006C01A7001A0199001B0127001C012F0059
:100050001D0700001E05F606210DD8002201F40040
:100060005205F6075305F605000FE40023070100CB
:10007000240C00005401CE005501CF00010377008D
:100080002503730002037200260376000303720047
:100090005603E3000403740005037F0027037D007B
:1000A00006037C0028037E00290B01005711010084
:1000B0005803EB002A037600590372002B037300E8
:1000C0005A0377002C0373002D0375002E037E0066
:1000D0005B037C002F037D005C037F003003710015
:1000E00031037B003203790033037500070370008E
:1000F00008037A0034037A0035037B000903780093
:100100000A0374005D019F003606C50037068D00A6
:100110003806C4005EFFF0006D01AC006E01AD005A
:100120005F03E2006F03E1007A03E0007B03E0007D
:100130007003E100391400007101A4007201A500F0
:100140003A05F6043B05F6033C0190003D05F60236
:100150000B0A08013E10E6003F15000060019D00FB
:100160006108010073019C004004D0024104D003E7
:1001700042FEF30062FEF30074FEF20075FEF20030
:1001800063FEF300430EC200640ECA004404D000B4
:100190004504D00165019E004604D0044704D00701
:1001A000480918037601AE007701AF004904D00476
:1001B0004A04D0054C01F9004D01FD004E01FB0041
:1001C0007801AA007901AB004F09280566120000EA
:1001D00067019B00681300006901D700500A3006D0
:020000020230CA
:02000C000000F2
:02000002035B9E
:0400000042584250D0
:02000002035B9E
:0400040053494449CF
:02000002035B9E
:060008002C3A2B0D20092B
:02000002035B9E
:01000E005B96
:02000002035B9E
:01000F005D93
:02000002035C9D
:100000000D0A616D626967756F7573206F70657237
:04001000616E642495
:02000002035E9B
:040002004801400071
:02000002035E9B
:0800060007588F000650FF06A9
:02000002035E9B
:04000E00E802E90417
:02000002035F9A
:040002009A03EA056E
:020000020230CA
:10000E00558BECB00D50E8F0F0B00A50E8EAF05D18
:01001E00C31E
:020000020231C9
:0D000F00558BECE8DEFFC6061836005DC319
:020000020232C8
:10000C00558BECE8DCFFB03F50E8CFF0E8CBFF5D60
:01001C00C320
:020000020233C7
:0F000D00558BECB8C03550E8D0F0E8BCFF5DC3B0
:020000020234C6
:10000C00558BECA03836220625363CFF7503E8E00C
:10001C00FFA03836320625363C017503E8C1FF5D7A
:01002C00C310
:020000020236C4
:10000D00558BEC8A4604FEC88846043CFF74188B59
:10001D005E088A078B5E063A077404B000EB0AFF90
:0D002D004608FF4606EBDCB0015DC2060090
:020000020239C1
:10000A00558BECC6064D3600803E4D360777198A69
:10001A001E4D36B7008A87B8353A46047504B001D2
:0E002A00EB08FE064D3675E0B0005DC2020028
:02000002023CBE
:10000800558BEC8A46042C303C09B0FF7601408AB7
:100018004E0480E9415080F905B0FF760140590A45
:05002800C15DC20200F1
:02000002023EBC
:10000D00558BEC8A46042C303C0976078A46042C25
:07001D0041040A5DC202006C
:020000020240BA
:10000400558BECC706D4350000C6064E3601C6062D
:10001400163600823E1836007506E8E3EFA218365D
:10002400A018368A1E1636B7008887F635FEC388B0
:100034001E163680FB207203E8EDFEFF361836E804
:1000440054FFD0D8732C803E163601750CC60617A3
:100054003602C6061836005DC3FE0E1636A04E36AE
:10006400D0D87307C6061736015DC3C60617360017
:100074005DC3A04E36D0D873A1FF361836E844FFCE
:10008400D0D8731A8B16D435B104D3E252FF361884
:1000940036E855FFB400590BC1A3D435EB05C606A9
:0800A4004E3600E974FF5DC354
:02000002024AB0
:10000C00558BECE852FF803EF6352074F6803EF6B8
:08001C00350974EF5DC35DC3FB
:02000002024CAE
:10000400558BECC6064F36008A4606FEC838064FA6
:10001400367720A1F6358B5E083B07750CA04F366A
:100024008B5E048807B001EB0C83460802FE064F82
:090034003675D5B0005DC206006E
:02000002024FAB
:10000D00558BECB8B03550B002508B1EDA358D479C
:07001D000250E8B2FF5DC3D1
:020000020251A9
:10000400558BECB8B43550B002508B1EDA358D47A1
:070014000350E89BFF5DC3F0
:020000020252A8
:10000B00558BECB8BD2050B004508B1EDA358D07E4
:10001B0050E885FFD0D8730C8B1EDA35C647040128
:08002B00B0015DC3B0005DC32C
:020000020255A5
:10000300558BECB8AD2050B008508B1EDA358D47B8
:100013000150E85CFFD0D87331B0018B1EDA35880C
:1000230047068B1EDA3588470B8B1EDA35827F0134
:100033000075038847088B1EDA35C6470E018B1EF1
:0E004300DA35C6470C00B0015DC3B0005DC3E6
:02000002025AA0
:10000100558BECB89D2050B008508B1EDA358D47CA
:100011000150E80EFFD0D87331B0018B1EDA35885C
:1000210047058B1EDA3588470B8B1EDA35827F0137
:100031000075038847088B1EDA35C6470E028B1EF2
:0E004100DA35C6470C01B0015DC3B0005DC3E7
:02000002025E9C
:10000F00558BEC823E1736007530813EF6354259DE
:10001F00750A8B1EDA35C6470D00EB10813EF6359B
:10002F00574F75088B1EDA35C6470D018B1EDA3513
:0E003F00807F0DFF7404B0015DC3B0005DC38F
:02000002026298
:10000D00558BECE8F8FE50803E18363AB0FF74017F
:06001D00405922C15DC341
:02000002026496
:10000300558BEC8A46048A1E4236B70088873F36F2
:08001300FE0642365DC2020048
:02000002026595
:10000B00558BECA04336D0D87303E8C4FC8B1EDAB7
:10001B00358A07B103D2E00C2650E8CBFFC6064366
:0F002B003601E884FD8B1EDA35C64704005DC33D
:02000002026892
:10000A00558BECE81CFE803E1736027511803EF6D1
:10001A00350D75088B1EDA35C64709015DC3E882BE
:10002A00FFD0D87305E8A9FFEBD9E838FFD0D87319
:10003A001B8B1EDA35807F0CFF7405E864FCEBC36A
:10004A008B1EDA358A470D88470CEBB75DC35DC353
:02000002026D8D
:10000A00558BEC8B1EDA35C6470B01E815FED0D8A6
:10001A00733FE815FDA0F6353A06BF3575168B1EF7
:10002A00DA35C6470B01B0072A46048B1EDA358833
:10003A00470EEB3F803EF6352B7511B0092A460470
:10004A008B1EDA3588470EE8E0FCEB11E803FCEB7F
:10005A000CB0082A46048B1EDA3588470EE8DAFD0A
:10006A00D0D8730CE8C3FCA0F6353A06BF35740342
:07007A00E8DFFB5DC202009C
:02000002027585
:10000100558BECB0008B1EDA358847048B1EDA3530
:100011008847058B1EDA358847068B1EDA358847F7
:10002100078B1EDA358847088B1EDA358847098B1E
:100031001EDA3588470A8B1EDA3588470B8B1EDAA4
:1000410035C6470DFF8B1EDA35C6470CFFE8E9FEC2
:100051008B1EDA358A4709D0D873025DC3E87AFD71
:10006100D0D873025DC3E899FDD0D873025DC3E8AF
:10007100DEFDD0D873025DC3803E173601755DA1E8
:10008100D4358B1EDA35894711A018363A06BE35AC
:10009100750BE81EFCE81BFCB000E98400803E18EB
:1000A100363A752EA1D4358B1EDA3589470FE80211
:1000B100FCE8FFFB803E1736017403E81DFBA1D469
:1000C100358B1EDA358947118B1EDA35C6470A0191
:1000D1005DC38B1EDA35C64707015DC3A0F6353A0D
:1000E10006BE357403E8F3FAE8C8FB803E17360113
:1000F100752DA1D4358B1EDA35894711E8B4FBA0E3
:10010100F6353A06BF3575128B1EDA35C6470E0332
:100111008B1EDA35C6470B015DC3E8BEFA5DC3B07D
:070121000350E864FE5DC31A
:02000002028773
:10000800558BECC706DA351936E8CDFEE87DFB805E
:0B0018003EF6352C7403E89BFA5DC334
:02000002028971
:10000300558BECC706DA352C36E8B2FE8B1EDA3593
:100013008A4709D0D873025DC3E855FB803EF635A5
:080023000D7403E873FA5DC3DC
:02000002028B6F
:10000B00558BECC706DE350000EB078306DE3504A7
:10001B00722DA1DE353DDF01772589C38A8FD03361
:10002B003A0E4A3675E58A8FD133880E49368A8F58
:10003B00D233880E4B368A87D333A247365DC3E85B
:04004B002FFA5DC368
:02000002028F6B
:10000F00558BECA016362C023C047603E81EFA8AB8
:10001F001E163680EB02B700D1E38B87C61EA3E016
:10002F0035C6065036008A1E163680EB02B7008A98
:10003F00878520FEC838065036773CB8F635508B8A
:10004F001EE0358D0750FF361636E821FAD0D873EB
:10005F00178A1E163680EB02B700A0503602878A29
:10006F0020A24A36B0015DC3A01636B4000106E0E7
:0B007F0035FE06503675AFB0005DC3C3
:02000002029763
:10000A00558BECB000A24236A24536A24436A24332
:10001A0036E81EFB803EF6350D7407803EF6352E17
:10002A007504B0005DC3E88AFCD0D87305E8B1FC5A
:10003A00EBDFE850FFD0D8733EE805FF803E493633
:10004A00FF7511A04436D0D87303E865F9C6064493
:10005A003601EB16803E4936FE7518A04536D0D8D3
:10006A007303E84DF9C606453601FF364B36E858A4
:0E007A00FCEB9EB0015DC3E838F9EB955DC369
:02000002029F5B
:10000800558BECFF36D635FF7604E804F9FF06D6A3
:05001800355DC202008D
:0200000202A05A
:10000D00558BECC606513600A04236FEC8A24236CC
:10001D003CFF74138A1E5136B700FFB73F36E8CA4E
:09002D00FFFE065136EBE15DC354
:0200000202A357
:0F000600558BECE8D1FFFF364B36E8B5FF5DC3F5
:0200000202A456
:10000500558BEC8A4604A24B36E8E5FF5DC202003B
:0200000202A555
:10000500558BEC8B460450E899FF8B460488E050ED
:07001500E890FF5DC202004C
:0200000202A654
:10000C00558BECA03836220625363C017505800E42
:05001C004B36015DC33D
:0200000202A852
:10000100558BEC8B1EDA35837F117F760CC6064645
:100011003602C6064C36025DC3C606463601C60622
:050021004C36015DC337
:0200000202AA50
:10000600558BECC6064C36008B1EDA358B4711A392
:10001600DC358A5F0EFECBB700D1E32EFFA7532B4C
:10002600C6064636038B1EDA358A4701EB7AC606C4
:10003600463600C606483606C6064C36025DC38BF3
:100046001EDA35B0013847027513A24636C6064891
:100056003606A24C36C706DC3500005DC3C606462A
:100066003600C6064836075DC3C6064636008B1EF2
:10007600DA358A47030404EB2FC606463600EB162C
:10008600E858FFB0078B1EDA352A4702EB1AE84A12
:10009600FFEBDBE845FF8B1EDA358A4702B102F635
:1000A600E18A4F03B50003C1A248365DC3C62AC61E
:0F00B6002AD42AE52A0F2B1F2B262B342B392B6C
:0200000202B644
:10000500558BEC8B4604A3DA35E835FFE8C2FEA034
:100015004636B106D2E08A164736B103D2E20AC2A5
:100025000A06483650E86BFE823E4C36007407A13E
:10003500DC3550E85DFE803E4C36017609A1DC35A5
:0A00450088E050E84DFE5DC20200A5
:0200000202BA40
:10000F00558BEC8B4604A3DA3589C38A4F0BD0D9B5
:10001F007324807F0CFF7503E873F78A46088B1EE5
:10002F00DA350A470CA24B368A4606A24736FF76C8
:0D003F0004E882FFEB03E844F75DC2060011
:0200000202BE3C
:10000C00558BECA03236F6D022063736D0D8731585
:10001C008A4606A24B368A4604A24736B82C36507E
:0C002C00E856FFEB03E818F75DC2040083
:0200000202C139
:10000800558BECE82EF7803E273602770BA01A3680
:10001800A24736B82C36EB10A0383608064B36A067
:0E0028002D36A24736B8193650E821FF5DC3C9
:0200000202C436
:0B000600558BECE820FEE8C9FF5DC34D
:0200000202C535
:10000100558BEC803E273602770CA02436D0D8736E
:0B00110005800E4B3602E8DCFF5DC3EB
:0200000202C634
:10000C00558BECA13D3650E882FDA02536D0D87337
:0C001C0009A13D3688E050E872FD5DC38C
:0200000202C832
:10000800558BECA13D3650E866FDA04B3624033CE9
:0E001800017509A13D3688E050E854FD5DC336
:0200000202CA30
:10000600558BEC823E253600750B813E3D36FF0052
:100016007603E871F6803E2536FF7512813E3D3641
:1000260000017207C6062536015DC3E869F65DC3A1
:0200000202CD2D
:10000600558BECE8CAFFE88DFDE854FDE887FF5DF7
:01001600C326
:0200000202CE2C
:10000700558BECE8B9FFE87CFDB8193650E86EFE71
:05001700E872FF5DC36B
:0200000202CF2B
:10000C00558BEC803E3A360277098A46040A06384C
:10001C0036EB078A46040A062536A24B365DC20229
:01002C0000D3
:0200000202D129
:0C000D00558BECA03336220621365DC373
:0200000202D228
:0C000900558BECA03336220624365DC374
:0200000202D327
:10000500558BECA037362206243650803E27360223
:10001500B0FF77014050803E3A3602B0FF7701408D
:0A0025005922C1F6D05922C15DC373
:0200000202D525
:10000F00558BECE82EFBA03536D0D87305E8C7FC2E
:07001F005DC3E8B8F55DC305
:0200000202D723
:10000600558BECE817FBA03536D0D8730BE8B0FC5F
:0D001600B00A50E86CFC5DC3E89BF55DC3CB
:0200000202D921
:10000300558BECE8FAFAA1D63583E87E8B0E3D36A4
:100013002BC881F9FF00771AA03336D0D87313E8C1
:1000230081FCA1D635408B0E3D362BC851E835FCFB
:070033005DC3E864F55DC345
:0200000202DC1E
:10000A00558BECE8A8FAE8C0FAA02436D0D8733D9C
:10001A00803E2D3601750EA03236D0D87307800E79
:10002A004B3602EB17833E3D3601B0FF7401402286
:10003A00063336F6D0D0D87303E826F5FF364B36AA
:10004A00FF364736B8193650E89AFD5DC3E812F50F
:02005A005DC384
:0200000202E119
:10000C00558BECE871FAFF364B36FF364736B82C79
:07001C003650E87EFD5DC3D4
:0200000202E317
:10000300558BECE83FFAE857FA803E3A3602761011
:10001300A0373622061E36D0D87305E8C7FD5DC368
:05002300E8D6F45DC306
:0200000202E515
:10000800558BECE835FAA03136D0D87317A04B36AB
:10001800B102F6E189C38A87E2350A062D3650E82F
:10002800CBFB5DC3B0FE50A04B36B102F6E189C3ED
:0D003800FFB7E335B82C3650E81CFD5DC362
:0200000202E911
:10000500558BECA03036D0D87318A04B36B104F61A
:10001500E18A162C36B103D2E289C30A97E6355236
:10002500EB19A03136D0D87317A04B36B104F6E1E1
:1000350089C38A87E7350A062D3650E872FB5DC30A
:10004500A04B36B104F6E189C3FFB7E835FFB7E940
:0600550035E803FD5DC368
:0200000202EE0C
:0B000B00558BECE8A2F9E8A1FF5DC3F3
:0200000202EF0B
:10000600558BECE897F9803E2C3601750CA03036FE
:0E001600D0D87305E81FF45DC3E883FF5DC317
:0200000202F109
:10000400558BECE85EF9E876F9E8FDFDD0D8730A83
:10001400800E4B3604E8AAFDEB4DE8F8FDD0D8730A
:1000240037C6064B3680807E04097527813E3D36EF
:1000340080007208813E3D3680FF7205800E4B368B
:1000440002E84EFDE811FBB8193650E803FCE8233A
:10005400FDEB14E87DFDEB0FE8C6FDD0D87305E891
:0B006400DBFCEB03E8B1F35DC202001F
:0200000202F703
:0B000F00558BECB00950E88CFF5DC37E
:0200000202F802
:0B000A00558BECB00A50E881FF5DC38D
:0200000202F901
:10000500558BECE8F8F8A03336D0D87322A04B36E0
:10001500B102F6E189C3FFB7EE35E893FAA1D6350B
:1000250083C0028B0E3D362BC851E893FA5DC3B0F1
:10003500FF50A04B36B102F6E189C3FFB7EF35E8B3
:0400450015FC5DC386
:0200000202FDFD
:10000900558BECE8B4F8813E3D36FF007725A033E7
:1000190036D0D8731E833E3D36037508B0CC50E800
:100029004AFA5DC3B0CD50E842FAA13D3650E8EE38
:08003900F95DC3E81DF35DC38E
:020000020301F8
:10000100558BECE861F8E879F8833E2A364073268F
:10001100A0373622062036D0D8731BA12A36B10369
:1000210050D2E808064B36582407A24736B82C367A
:0B00310050E820FB5DC3E8E2F25DC375
:020000020304F5
:10000C00558BECC706DA352C36E8F9F6A03536D028
:10001C00D8730BA04B360C0150E8DDF95DC3A0334F
:10002C0036D0D8730CE8C2F9FF363D36E8DAF95D04
:06003C00C3E8ACF25DC355
:020000020308F1
:10000200558BECE8F0F7A02136F6D0D0D87303E890
:1000120098F2E8FCF7803E2D36027516A03136D0F4
:10002200D8730FA04B360C080A06253650E893F910
:100032005DC3813E3D36FF007713A03336D0D873BF
:100042000CE870F9A13D3650E82BF95DC3E85AF28D
:020052005DC38C
:02000002030DEC
:10000400558BECE89EF7803E1A3602750EA01E361C
:10001400D0D87307C606523601EB19813E2A36FF43
:1000240000770EA02036D0D87307C606523600EBF0
:1000340003E824F2E888F7A03436F6D0D0D8730366
:10004400E815F2A05236B103D2E00A064B360A068E
:10005400383650E8CEF8823E5236007507A12A366B
:0600640050E8C0F85DC386
:020000020313E6
:10000A00558BECE853F7A03636D0D87320A04B3680
:10001A00B102F6E189C3FFB7F235E8EEF8FF363DE3
:10002A0036E8F7F8FF363B36E8F0F85DC3B0FF5024
:10003A00A04B36B102F6E189C3FFB7F335E872FA8D
:02004A005DC394
:020000020317E2
:10000C00558BECE8F6F6E80EF7E895FBD0D8730ABA
:10001C00C6064B36A8E842FB5DC3E890FBD0D8730C
:10002C000AC6064B36F6E842FB5DC3E88BFBD0D81C
:10003C00730BB08450E848FBE861FA5DC3E870F1DB
:02004C005DC392
:02000002031BDE
:10000E00558BECE8B4F6E8CCF6A021362206253660
:10001E0022063136D0D8730BA02D36049050E866E8
:10002E00F85DC3E851FBD0D8730BB08650E80EFBD9
:0A003E00E827FA5DC3E836F15DC360
:02000002031FDA
:10000800558BECE87AF6E892F6A0373622061D36CC
:100018008A0E3236F6D122C1D0D87310C6064B36B6
:100028008EA01936A24736B82C36EB20803E2736EC
:1000380001741FA0303622062436D0D87314C606A1
:100048004B368CA02C36A24736B8193650E81DF925
:100058005DC3803E3A3603751CA03736220621362A
:10006800D0D87311A025360CA0A24B36E8CFF7FFE5
:10007800363D36EB21803E273603751FA0343622E5
:10008800062436D0D87314A038360CA2A24B36E812
:10009800ACF7FF362A36E8C4F75DC3E893FAD0D840
:1000A8007327803E2736027716A02536B103D2E0A3
:1000B8000CB00A061A3650E893F7E8B7F95DC3C6DC
:1000C800064B36C6E828FA5DC3E871FAD0D8730A39
:0F00D800C6064B3688E881F95DC3E857F05DC373
:02000002032DCC
:10000700558BECC44604A3D6358C06D835E827F0C3
:10001700FF36D835E87CE1B03A50E813E1FF36D631
:1000270035E86FE1B02050E806E1E81BF0C706DAD3
:10003700351936E86DF6D0D87203E9B100803E492C
:1000470036157603E80EF08A1E4936B700D1E32E3F
:10005700FFA79933E8FEEFEB17E82CFAEB12E83E1F
:10006700FAEB0DE856FAEB08E888FAEB03E8D5FA5D
:10007700EB7FE8E7FAEB7AE807FBEB75E895FBEB34
:1000870070E824FCEB6BE82AFCEB66E830FCEB61DC
:10009700E86FFCEB5CE8A2FCEB57E8D8FCEB52E816
:1000A70009FDEB4DE856FDEB48E8B7FDEB43E8F4F7
:1000B700FDEB3EE831FEEB39E866FEEB34E85FFB2B
:1000C700EB2F2B33303335333A333F334433493314
:1000D7004E33533358335D33623367336C33713385
:1000E70076337B33803385338A338F339433E845D4
:0800F700F6A1D6355DC204003C
:00000001FF

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,71 @@
MCS-86 ASSEMBLER ASSLNK86 PAGE 1
ISIS-II MCS-86 ASSEMBLER V1.0 ASSEMBLY OF MODULE ASSLNK86
OBJECT MODULE PLACED IN ASSLNK86.OBJ
ASSEMBLER INVOKED BY: ASM86 ASSLNK86.ASM DEBUG
LOC OBJ LINE SOURCE
1 ;
2 ; interface module for ddt86
3 ; 6/15/81
4 ;
5 dgroup group dats
---- 6 dats segment public 'DATS'
0000 3F 7 db '?'
---- 8 dats ends
9 ;
10 cgroup group code
11 extrn asm:near
12 public ddtgetline
13 public goddt
14 public ddtset
15 ;
---- 16 code segment public 'CODE'
17 assume cs:cgroup
18 ;
0000 19 assent proc
2300 20 org 2300h
2300 E90000 E 21 jmp asm
22 assent endp
23 ;
2303 24 ddtgetline proc
2303 E903DE 25 jmp $-21fah
26 ddtgetline endp
27 ;
2306 28 goddt proc
2306 E903DE 29 jmp $-21fah
30 goddt endp
31 ;
2309 32 ddtset proc
2309 E903DE 33 jmp $-21fah
34 ddtset endp
35 ;
---- 36 code ends
37 end
MCS-86 ASSEMBLER ASSLNK86 PAGE 2
SYMBOL TABLE LISTING
------ ----- -------
NAME TYPE VALUE ATTRIBUTES
ASM . . . . L NEAR 0000H EXTRN
ASSENT. . . L NEAR 0000H CODE
CGROUP. . . GROUP CODE
CODE. . . . SEGMENT SIZE=230CH PARA PUBLIC 'CODE'
DATS. . . . SEGMENT SIZE=0001H PARA PUBLIC 'DATS'
DDTGETLINE. L NEAR 2303H CODE PUBLIC
DDTSET. . . L NEAR 2309H CODE PUBLIC
DGROUP. . . GROUP DATS
GODDT . . . L NEAR 2306H CODE PUBLIC
ASSEMBLY COMPLETE, NO ERRORS FOUND

View File

@@ -0,0 +1,14 @@
rx?iJiPiii?
i$M` COPYRIGHT (C) 1981, DIGITAL RESEARCH DDT86 1.2 08/20/82 AXBXCXDXSPBPSIDICSDSSSESIPODITSZAPC
CSDSESSSX1X2X3X4
CANNOT CLOSE
INSUFFICIENT MEMORY
NO SPACE
MEMORY REQUEST DENIED
NO FILE START END
VERIFY ERROR AT
DISK WRITE ERROR ~@"?*dQ`Q`xpn+@@X9s$C>4,
@t<@v0@H?os$0
*hB
C| i &k. \. &PX%&.#b HzP<?vt{huh1>:h h,t @PsFh4<07r2~h7>h> t:\h,|<?h*0-hshXh|<
t]<;tY,Ar

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,14 @@
rx?iJiPiii?
i$M` COPYRIGHT (C) 1981, DIGITAL RESEARCH DDT86 1.2 08/20/82 AXBXCXDXSPBPSIDICSDSSSESIPODITSZAPC
CSDSESSSX1X2X3X4
CANNOT CLOSE
INSUFFICIENT MEMORY
NO SPACE
MEMORY REQUEST DENIED
NO FILE START END
VERIFY ERROR AT
DISK WRITE ERROR ~@"?*dQ`Q`xpn+@@X9s$C>4,
@t<@v0@H?os$0
*hB
C| i &k. \. &PX%&.#b HzP<?vt{huh1>:h h,t @PsFh4<07r2~h7>h> t:\h,|<?h*0-hshXh|<
t]<;tY,Ar

View File

@@ -0,0 +1,933 @@
:0400000300001400E5
:06140000B80000C2040068
:06230000B80000C2040059
:1B010000E94A01E9EB02E9BB02E9C502E94B0AE94508CDE020434F505952496D
:1B011B004748542028432920313938312C204449474954414C20524553454165
:1B01360052434820444454383620312EB12031302F30322F38312041D842D83A
:1B01510043D844D853D042D053C944C943D344D353D345D349D04F44495453F7
:1B016C005A41504305060708090A0C0E1043D344D345D353D358B158B258B36A
:1B01870058B40D0A43414E4E4F5420434C4F53C50D0A494E53554646494349AA
:1B01A200454E54204D454D4F52D90D0A4E4F2053504143C50D0A4D454D4F528B
:1B01BD005920524551554553542044454E4945C40D0A4E4F2046494CC5202088
:1B01D8005354415254202020202020454EC40D0A564552494659204552524F23
:1B01F30052204154A00D0A4449534B205752495445204552524FD2A01301FE81
:1B020E00C0A21E032AE4D1E0D1E08BF88BF083EE041E2BC08EC08ED8B90400F5
:1B022900F3A41FC3BE8000B400AC0AC074153C407602B0408BC8BFC3111E0761
:1B024400F3A4B00DAAE84B0AC3FC8C16BD118926BF112E8C16B0112E8926A4A4
:1B025F00119C5825000288266B122EA3B6118CC8FA8ED0BC1013F6066B12028F
:1B027A007401FBE88AFFF6066F12FF7503E8DA04BE3A01E8AD01E8A7003C3044
:1B029500B7007207B2FEE8EC00B701883E7112E886FFFCBC1013E86F01B02D1C
:1B02B000E87300E82101E838013C0D74EA3C3B74E62C41721A3C197716D0E0AA
:1B02CB00B40093C6066C1201C6066D12002EFF97E902EBC8E83B01B03FE83F9F
:1B02E60000EBBE2F0B600BDF02D60B970C150D5B0DBF0DDE0DDF02DF022E0E0B
:1B030100A40EDF02DF02DF02DF02F20E4C0FA10FD70FDE0F3010E410DF02DFD9
:1B031C0002CDE0C3B101E8F8FFC3B1028AD0E8F0FFC3B10AE8EAFFC3B10BE866
:1B033700E4FFC3B10CE9DEFFB10FE8D9FFFEC07401C3BECD01EB70B110E8CAB2
:1B035200FFFEC07401C3BE8901EB61B113E9BBFFB114E9B6FFB115E8B1FF0AD5
:1B036D00C07501C3BEF801EB48B116E8A2FFFEC07401C3BEAC01EB39B11AE909
:1B03880093FFB12DE98EFFB133E989FFB135E884FFFEC0740BC3B138E87AFF84
:1B03A30090909090C3BEB601EB11B139E96BFFB13BE866FF407401C3BE970187
:1B03BE00E87C00E9E3FE558BEC8B4604E859FF5DC2020055E802005DC3BAC11A
:1B03D90011E851FF8A1EC211B70081C3C311C6070DC70604120000C3BEC31164
:1B03F40003360412ACFF0604123C6172063C7A7702245FC3E829FF0AC0740DF3
:1B040F00E80EFF3C137403E98EFEE804FFC3B00DE804FFB00AE8FFFEC3E8F210
:1B042A00FFE8DAFFC3B020E8F2FEC351E8F6FF59E2F9C3ACA880750756E8E036
:1B044500FE5EEBF4247FE8D8FEC33C2072043C7E7602B02EE8CAFEC3268B0433
:1B046000F6066D12017415EB0C578CC0E80600B03AE8B2FE58508AC4E8010093
:1B047B005850B104D2E8E8010058240F049027144027E896FEC30E07572AC010
:1B049600B92400F3AA5F893EAE1247E82200B90800E84B00B90300803EAD126D
:1B04B1002E7405E86000EB03E83900E85F00A0AD12C3E919FEE828FFA2AD1259
:1B04CC003C2074F63C0D7413E81AFF3C3A7508A0AD122C404FAAC3FF0E0412E1
:1B04E700FF0E0412C3BFA212B90B00F2AEC3E8F9FEA2AD123C2A7505E8110061
:1B050200EBF15751E8E3FF595F740AE3B4AA49EBE2B03FEB02B020E302F3AAD5
:1B051D00C38B3EAE1247B90B00B03FF2AEC3B90E00BF4D010E07F2AFE320BAD3
:1B0538000D002BD189165512C3B90A00BF67010E07F2AEE30ABA09002BD18902
:1B055300165512C3E985FDBE9C1103F103F18904C3B9000051E84B00594183E5
:1B056E00F90972F5C3BE700103F1AC8AC8B8FEFFD3C8D3CB2E2106B6112E09E4
:1B0589001EB611C3BE670103F1ACE890FDC3B80100BE700103F18A0CD3C82E76
:1B05A4002306B611C3E8EBFFB0307402B031E871FDC3BE670103F1FF34E8D75B
:1B05BF00FF587502B02DE85EFDC3B90000C606531206EB0DB90600EB03B90022
:1B05DA0000C60653120DE82900730851E80C00E843FE59413A0E531272ECC366
:1B05F500BE9C1103F103F1ADE875FEC3BE4D0103F103F1E832FEC3F60654129C
:1B061000FF750980F90B770480F908C3F9C3E8FCFDB90B00E80EFEB90000C33E
:1B062B00E8F0FFC606531206EB10E8F7FDB90600EB03E8DEFFC60653120DE837
:1B064600C4FF730B51E8B3FFB90300E8E1FD59413A0E531272E9C32E8E06AC18
:1B066100112E8B36B411F6063912FF74100656F6065412FF7403E8A3FDE883C8
:1B067C000DC3268A04E8F8FDC38AC8B306F6E30572128BF0AD8BD8AC8AD0B48D
:1B069700000BC37430AD535250B500D1E181C1790151E871FD5EE88DFDE87C36
:1B06B200FD0706BF0000E8AEFDE871FD5B58B10CD3E003C38EC05FE89DFDC3A0
:1B06CD00A1BD112EA3B011A1BF112EA3A4118BC32EA3AE112EA3AC112EA3B22B
:1B06E80011A35A12A35E128EC026F6060500017405B80001EB2D26A103002E0C
:1B070300A3AC11A35A1226A10F000BC074042EA3B21126A115000BC0740E2E68
:1B071E00A3B01126A112002EA3A4112BC02EA3B411A33112C3C435B0CC2686B2
:1B07390004884504FE062612C32BC98A0E2612BE2712E30FAD50AD8EC0AC5F21
:1B075400AAE2F4C606261200C3F6066F12FF741CE81A00BA00008EC2BF040068
:1B076F00B8DF07AB8CC8ABBF0C00B8D707AB8CC8ABC3BE0400BF1A121E07B9CE
:1B078A000C001EBA00008EDAF3A41FC3F6066F12FF7410BE1A12BF0400B90C1D
:1B07A50000BA00008EC2F3A4C32E8B3EB411893E31122E8E06AC118C065A1292
:1B07C000C3E859FCB02AE85DFB2EA1AE11A35E12E8DBFFE893FCC32EC606BCB1
:1B07DB001101EB062EC606BC11002EA39C112E891E9E112E890EA0112E8916F4
:1B07F600A2112E8936A8112E893EAA112E892EA6112E8926A4112E8C06B2112E
:1B0811002E8C1EAE112E8C16B0118BEC8B46002EA3B4118B46022EA3AC118BDA
:1B082C0046042EA3B6118CC88ED88ED0BC1013F6066B12027401FB2E8306A492
:1B0847001106FCE849FF2EF606BC11FF741A2EFF0EB411E8E5FEF6064912FFAE
:1B0862007506E85AFFE93DFAC6064912002E8126B611FFFEF6064A1201740C06
:1B087D00C6064A12002E810EB6110002FF0E461274D5E876FBF6064812FF74E2
:1B08980003E806082E8E06AC112E8B36B411A11201263B0475188C0629128323
:1B08B300C60289362712BF2712E874FEC606491201EB392EA1B6110D0001A97F
:1B08CE000002742925FFFD2E8E06AC112E8B36B411268A1C80FBFA741480FBD8
:1B08E900CF740F80FB9D740A80FBCD7405C6064A12012EA3B611E85BFEFABC93
:1B0904009C11585B595A2E8F06BA115D5E5F1F1F2E8F06B811072E8E16B811B1
:1B091F002E8B26BA112EFF36B6112EFF36AC112EFF36B411CF3C0D740A3C2CA3
:1B093A0074063C2074023C3AC32C303C0A720A04F93C1073053C0A7201C3E9D9
:1B09550088F98BEC8B46028E065A128B7E04E81A00477503E93BF9C20400F615
:1B097000066D1201740A50E80600588AC44774082688052638057501C3570615
:1B098B00BEE601E8ACFA075FE8D3FAE90EF9A06D122501004001043904C32B5E
:1B09A600DB8AE7E845FAE885FF740DB104D3E3E88BFF02D8B401EBEBC3E8E306
:1B09C100FF0AE4740D3C3A7409C3E8F1FF3C0D7501C3E909F9E818FA3C5775B0
:1B09DC0006C6066D1201C3FF0E0412C380CF80BD5D012BF63B1A740A83C602DC
:1B09F70083FE0875F40BF6C3FF360412E8EBF950E8E7F950E8E3F93C3A5B59C2
:1B0A12008AF986DF750CE8CDFF7507BDAC118B1259C38F060412C3E8D3FF7461
:1B0A2D000DE874FF0AE474128BD33C3A7509E881FF891D895502C38915C3F678
:1B0A4800066C12FF74F8E98EF8A16612A33C12A34012A344122BC0A33A12A3C0
:1B0A63003E128B164412E823F9C706421200008B164212E80CF9833E681208E7
:1B0A7E007239BA5C00E8DCF80AC075288306661208832E681208A14212047FC5
:1B0A9900A33E12A14412A3401281064212800075C8810644120010EBB3BA5C2A
:1B0AB40000E896F8C3E9FFF8A14B12B104D3E803064D12A36612A344128BD8C1
:1B0ACF00A14F12D3E8030651122BC37250A36812BA5C00E878F8F6067112FF2A
:1B0AEA007408FEC075040AE47538BA5C00E87CF88B164412E88EF8C7064212AB
:1B0B050000008B164212E877F8BA5C00E853F8832E6812087210810642128030
:1B0B20000075E4810644120010EBCFC3E9B0F7F6060612FF742189260712BF38
:1B0B3B005812E8E9FEFF365A12FF365812E8B5173B0658127605A35812EBEA6A
:1B0B5600C3E985F78B260712EBE0BF5C12E8C3FEE856FE891E60123C0D74518E
:1B0B71002B1E5C12724BA15E12A36412BF6212E8A6FE3C0D753BC4365C122685
:1B0B8C008A04C4366212263A047415E88EF8BF5C12E82500E88CF8E889F8BF29
:1B0BA7006212E81900FF065C12A15C12390660127208FF0662127402EBC6C3AE
:1B0BC200E91AF7C43D268A0550E89BF8E85EF858E8A7F8C3C6066C1200A15E74
:1B0BDD0012A30B12E8F2FDF6067012FF7411F6066D12017505A01312EB08A004
:1B0BF8001412EB03A01212A21112BF0912E821FE3C2CA10B12A35E127505E8C9
:1B0C1300B6FDEB1A8B1E0912A011128A0E1512F6E1FEC803D83B1E0912730366
:1B0C2E00BBFFFF891E0D12E8F0F7C43E0912893E0F12E826F8E8E9F7C4360987
:1B0C490012E810F8BE0912E846FD7216A109122B060F123A0611127409A1096A
:1B0C6400123B060D1276D8E8C1F78E060B128B360F12268A04E8D3F7FF060F08
:1B0C7F00127411A10F123B06091275E33B060D127702EBA2C3434D44E857F71A
:1B0C9A003C0D7474FF0E0412BF5C00E8E9F774683C0D75640E0726803E6500AC
:1B0CB50020750BBE940CBF6500B90300F3A4BA5C00E876F6C6066A12FFBA66DE
:1B0CD00012E8D9F6BA5C00E8D8F653E8EFF95AE8ADF6BA8000E89DF6BA5C00A1
:1B0CEB00E860F6C6066E1245BE0000BF72121E072EA1AE111E8ED8B93000F30B
:1B0D0600A41FE8D302FF0E0412E9CC00E9CAF5E8BEFCBF5C12E80BFDE89EFC91
:1B0D2100891E6012E8A3FCF6066D120175040AFF75258B0E60122B0E5C12725B
:1B0D3C001BC43E5C128BC3E829FCBE5C12E84DFC7209A15C123B06601276E6C0
:1B0D5700C3E984F52EA1AC11A318122EA1B411A31612C6066C1200BF1612E88B
:1B0D7200B5FC3C0D742BA11812A32912A32E12BF2712E8A2FC50BF2712E8A5EE
:1B0D8D00F9583C0D7410BF2C12E890FC3C0D751CBF2C12E890F9C6064912004D
:1B0DA800A118122EA3AC11A116122EA3B411E946FBE886F9E920F5E8FDFB53B6
:1B0DC300E805FC585003C35350E84EF658E8A2F6E859F65B582BC3E898F6C306
:1B0DDE00FF360412BF5C00E8A9F63C0D7504FF0E0412BF6C00E8A6F61E078FC5
:1B0DF900060412BF81002BC9E8EDF53C0D7404AA41EBF5B000AA26880E8000A3
:1B0E1400803E6E1245750FBE5C008BFE2E8E06AE1183C126F3A4C3E9B1F4F650
:1B0E2F00063912FF746CC606371200C6066C1200A15A12A33312BF3112E8DE5C
:1B0E4A00FB3C0DA13312A35A127405E873FBEB0EC606371201A01512A23812C3
:1B0E6500BBFFFF891E35128B3E31123B3E3512772A57E8AEF55F8E063312063E
:1B0E800057E8E5F5E8A8F5E876053B0631127210A33112F6063712FF74D2FEE2
:1B0E9B000E381275CCC3E93BF4BF5C12E87FFBE812FB891E60123C0D743A2B09
:1B0EB6001E5C127234A15E12A36412BF6212E862FB3C0D7524C4365C12268A53
:1B0ED10004C43E6212E8A7FAFF065C12740FFF0662127409A15C123B06601255
:1B0EEC0076DDC3E9EDF3E8FCF43C0D7450FF0E0412BF5C00E88EF574443C0D7D
:1B0F07007540BA5C00E830F4C7066812FFFFBA6612E879F4BA6612E87DF4E8B9
:1B0F22002DFBC6066A1200BA6612E87EF4A13C12A35E12A35A122BC0A30912FE
:1B0F3D00A33112C6066E1252E89600C3E993F3E887FABF5C12E8D4FAE8C5F478
:1B0F5800C43E5C12E80AF5E8CDF4C4365C12E8F4F4E8C3F4E868F4E87FF43CCC
:1B0F73000D741F3C2E7423FF0E0412E84AFA8BC3F6066D120175040AFF7510A2
:1B0F8E00C43E5C12E8DAF9BE5C12E8FEF973B8C3E93EF3C606481201E848F4BF
:1B0FA9003C53B4017406FECCFF0E041288265412C70646120100E8E3F93C0D3B
:1B0FC400750E0AE47404891E4612E8C400E9C8F8E908F3C606481200EBC8A078
:1B0FDF006E123C5274073C457421E9F3F2E82EF4BED601E848F4E825F4C43EC4
:1B0FFA003A12E86AF4E82DF4C43E3E12E860F4C3E810F4B90300E822F4BED6B6
:1B10150001E824F4B000505850E864F658FEC0803E77120174043C0872ECC39A
:1B103000A13C12A34D12A13A12A34B12A14012A35112A13E12A34F12E8A6F358
:1B104B003C0D7443FF0E0412BF5C00E838F474373C0D7509803E6E1252752C95
:1B106600EB20A15A12A34D12BF4B12E8B5F93C0D741AA14D12A35112BF4F12A6
:1B108100E8A5F93C0D750AE831FABA5C00E8BDF2C3E94AF2E816F7F6067012EB
:1B109C00FF751AE89BF5F6067012FF7517E871F3E8B5F4E87DF3E823F5E8A568
:1B10B700F5C3E86FF5B001EB02B00050E857F3E89BF4E863F3E8FAF4E84BF399
:1B10D20058FEC87506E85BF5E840F3E8F3F4E87AF5C3C606541201E805F33CDF
:1B10ED000D74A5A25712E8FBF23C0D746A8A2657120C8086C4E826F4E8E9F207
:1B1108003C0D7555E80EF38B0E5512E8EBF4E816F38B0E5512E8D5F4E80CF380
:1B112300E8B1F2E8C8F23C2E746EFF0E0412E871F83C0D75290AE474198B0EC9
:1B113E0055128BC380F9087503A35A1280F9097503A35E12E805F4FF0655127F
:1B115900833E55120D72ACC3E97BF1A05712E8D7F3E8B0F28B0E5512E819F4D6
:1B117400E8B8F28B0E5512E82BF4E8AEF2E853F2E81EF83C0D75D60AE4740C12
:1B118F0083FB0177CD8B0E5512E8D8F3C300000000000000000000000000000C
:1211AA0000000000000000000000000000000000000033
:0611BD00000000004000EC
:03120400000001E6
:0412090000000000E1
:09121100001006080C00000000AA
:111226000000000000000000000000000000000000B7
:0112390001B3
:021249000000A3
:02125300000198
:0812580000000000000000008E
:05126600000000000083
:04126E004900000033
:0E12A200203D2E2C3A3B5B5D3C3E0D000000D3
:00000001FF
:020000020000FC
:010000003FC0
:020000020140BB
:0A000000E9C207C3E9FCECE9FCECDF
:020000020140BB
:02000A000000F4
:0200000201ED0E
:10000E00494E4A414A424A434A454A474A4C4A4F58
:08001E004A504A534A5A4F525E
:0200000201EF0C
:1000060041414141414441414D41415341444341B4
:100016004444414E44434257434C43434C44434C6F
:1000260049434D43434D5043533A4357444441415A
:1000360044415344454344495644533A45533A454B
:100046005343484C54494E43494E544A41454A420B
:10005600454A47454A4C454A4D504A4E414A4E420A
:100066004A4E434A4E454A4E474A4E4C4A4E4F4ADE
:100076004E504A4E534A4E5A4A50454A504F4C44A7
:10008600534C45414C45534D4F564D554C4E4547A7
:100096004E4F504E4F544F5554504F5052434C5262
:1000A6004352524550524554524F4C524F5253416F
:1000B6004C53415253424253484C53485253533A7D
:0F00C600535443535444535449535542584F5283
:0200000201FCFF
:1000050043414C4C49444956494D554C494E544F32
:10001500495245544A43585A4A4D50464A4D505301
:100025004A4E41454A4E42454A4E47454A4E4C4541
:100035004C4148464C4F434B4C4F4F50504F504608
:1000450050555348524550455245505A52455446CD
:1000550053414846544553545741495458434847DA
:04006500584C41545E
:020000020202F8
:1000090043414C4C46434D505342434D5053574C3A
:100019004F4453424C4F4453574C4F4F50454C4F0C
:100029004F505A4D4F5653424D4F565357505553B3
:1000390048465245504E455245504E5A53434153F6
:1000490042534341535753544F534253544F5357B9
:020000020207F3
:0C0009004C4F4F504E454C4F4F504E5A3C
:020000020208F2
:050005000C451910027A
:020000020208F2
:06000A00000C516A7AFFB0
:0200000201EC0F
:0A000600DE1EF61EC51F292079201A
:0200000201C239
:010000005BA4
:0200000201C239
:010001005DA1
:020000020209F1
:10000D00415843584458425853504250534944491B
:02000002020AF0
:10000D00414C434C444C424C41484348444842487F
:02000002020BEF
:08000D00455343535353445380
:0200000201C239
:080002003F3F3D202020202497
:0200000201C239
:06000A00574F5244202470
:0200000201C338
:0600000042595445202482
:020000020140BB
:0B000C00558BECB02C50E8F2FF5DC3F8
:020000020141BA
:10000700558BEC8B5E04803F24740AFF37E8E0FFD2
:09001700FF4604EBEE5DC202009D
:020000020143B8
:10000000558BEC807E040976098A46042C0A04414B
:0F001000EB058A4604043050E8BCFF5DC20200D5
:020000020144B7
:10000F00558BEC8A4604B104D2E850E8D3FF8A46F8
:0B001F0004240F50E8CAFF5DC202007D
:020000020146B5
:10000A00558BEC8B460488E050E8D9FF8B460450A8
:07001A00E8D2FF5DC2020005
:020000020148B3
:10000100558BECB8221C50E88CFFC41ED41E26FF71
:0A00110037E8BAFFFF06D41E5DC3F6
:020000020149B2
:10000B00558BECC41ED41E268A07B1075022C1A201
:10001B009320268A4701B10650D2E8A2902058B10E
:10002B000350D2E82407A29120582407A29220580B
:10003B00502401A29720A2982058D0E82401A29422
:09004B0020A29520A296205DC3BD
:02000002014EAD
:10000400558BECA09720D0D87305B82A1CEB03B805
:08001400301C50E81DFF5DC324
:02000002014FAC
:10000C00558BEC8A4604D0E0B400034606A3D21EFE
:10001C0089C3FF37E8F4FEA1D21E40A3D21E89C3C8
:09002C00FF37E8E6FE5DC20400A6
:020000020152A9
:10000500558BECB8AD2050FF7604E8CAFF5DC202FF
:0100150000EA
:020000020153A8
:10000600558BECB89D2050FF7604E8B9FF5DC2021F
:0100160000E9
:020000020154A7
:10000700558BECA09720D0D87308FF7604E8DFFF64
:0C001700EB06FF7604E8C6FF5DC20200A5
:020000020156A5
:10000300558BECFF7606E8CAFFB02B50E895FEFF50
:090013007604E8BEFF5DC20400A2
:020000020157A4
:10000C00558BECA09720D0D87308B00050E8AAFF0D
:0A001C005DC3B00050E891FF5DC322
:020000020159A2
:10000600558BECB8BD2050FF7604E859FF5DC2025F
:0100160000E9
:02000002015AA1
:10000700558BECC41ED41E26FF37E89BFEFF06D493
:030017001E5DC3A8
:02000002015BA0
:10000A00558BECC41ED41E26FF37E8A3FE8306D404
:04001A001E025DC3A2
:02000002015C9F
:10000E00558BECA09720D0D87305E8DFFF5DC3E8D1
:04001E00C7FF5DC3F8
:02000002015E9D
:10000200558BECC41ED41E268A07D0C0D0D8730AE2
:10001200268A07B4000D00FFEB09C41ED41E268AEF
:0D00220007B40050E861FEFF06D41E5DC368
:0200000201609B
:10000F00558BECC41ED41E268A07B400A3DA1E3CFF
:10001F00807206810EDA1E00FFA1DA1E0306D41EBF
:0B002F004050E836FEFF06D41E5DC303
:02000002016398
:10000A00558BECA1D41EC41ED41E26030783C0023E
:0B001A0050E81CFE8306D41E025DC3EC
:02000002016596
:10000500558BECFF36201CE8A8FDC41ED41E26FF28
:1000150037E801FEFF36211CE897FD8306D41E0252
:020025005DC3B9
:02000002016794
:10000700558BECFF06D41E803E9020037509FF3602
:100017009220E8BBFE5DC3A09B20D0D87303E84CB9
:10002700FE803E922006750C823E9020007505E802
:10003700ACFF5DC3803E9020017521803E92200673
:10004700750AC41ED41E26823F00740AC41ED41E1D
:1000570026FF37E882FDFF06D41EEB16803E902070
:1000670002750FC41ED41E26FF37E886FD8306D40B
:100077001E02FF36201CE817FD8A1E9220B700D10A
:10008700E32EFFA72B17B00350B006EB0DB003EB21
:1000970006B005EBF3B00550B00750E84EFEEB2471
:1000A700B006EB06B007EB02B00550E811FEEB1403
:1000B700B003EBF6FD16041708170C1717171B17D5
:0D00C7001F172717FF36211CE8C5FC5DC37D
:02000002017487
:10000400558BECA09420D0D87312FF369120E8F2DF
:10001400FDB02C50E8ACFCE819FF5DC3E814FFB058
:0E0024002C50E89EFCFF369120E8D7FD5DC30E
:02000002017784
:10000200558BECC606C520028A1EC520FECBB70062
:10001200A099203A878A207206FE06C520EBE98A5B
:100022001EC52080EB02B70053D1E35EA099202ABF
:10003200848A20F626C5200387C61EA3D21EC606C2
:10004200C62001803EC620077724A0C6203A06C5F6
:1000520020770F8B1ED21EFF37E839FCFF06D21E17
:10006200EB06B02050E82DFCFE06C62075D5FF0633
:04007200D41E5DC378
:02000002017E7D
:08000600558BECE886FF5DC399
:02000002017E7D
:10000E00558BECC41ED41E26807F010A7509E87339
:0E001E00FFFF06D41E5DC3C6069C20015DC315
:0200000201807B
:0F000C00558BECE860FFFF369320E81DFD5DC3C8
:0200000201817A
:10000B00558BECC41ED41E268A07B103D2E822C13D
:0F001B00A2C720E841FFFF36C720E85EFD5DC3A6
:02000002018378
:0B000A00558BECE832FFE8CCFD5DC335
:02000002018477
:0B000500558BECE827FFE8ECFD5DC325
:02000002018576
:0B000000558BECE81CFFE81EFE5DC302
:02000002018576
:0B000B00558BECE811FFE843FD5DC3DE
:02000002018675
:0B000600558BECE806FFE84BFD5DC3E6
:02000002018774
:0E000100558BECE8FBFEB03350E88AFB5DC384
:02000002018774
:10000F00558BECE8EDFEC41ED41E268B07A3DC1E19
:10001F008306D41E02E823FDB03A50E86AFBFF3690
:07002F00DC1EE8C6FB5DC307
:02000002018A71
:0B000600558BECE8C6FEE895FE5DC3DC
:02000002018B70
:10000100558BECE8BBFEA09420D0D8730BE894FD8F
:10001100E848FBE8B5FC5DC3E8B0FCE83DFBE883DC
:03002100FD5DC3BF
:02000002018D6E
:10000400558BECE898FEA09420D0D8730BE8C3FC81
:10001400E825FBE892FC5DC3E88DFCE81AFBE8B236
:03002400FC5DC3BD
:02000002018F6C
:10000700558BECE875FEE87CFCE809FBE8C8FC5D6D
:01001700C325
:0200000201906B
:10000800558BECE864FEA09420D0D8730EB0025053
:10001800E81BFCE8EEFAE85BFC5DC3E856FCE8E3A5
:09002800FAB00250E807FC5DC3C8
:02000002019368
:10000100558BECE83BFEC6069B2001E838FDE8CAAB
:10001100FAA09620D0D87308B00150E8D6FB5DC392
:08002100B03150E8B0FA5DC3F4
:02000002019566
:10000900558BECE83CFBA09320A29120C41ED41E82
:10001900268A07B103D2E82401A29720E8FAFDFF56
:0E002900369120E8C8FBE88AFAE849FC5DC37E
:02000002019863
:10000700558BECE8E5FDB00050E8A3FBE876FAFF76
:08001700369320E899FB5DC35C
:02000002019962
:10000F00558BECE8CDFDC6069B2001E8CAFCE85CE9
:06001F00FAE81BFC5DC3C2
:02000002019B60
:10000500558BECC606972001803E9120037607C6E6
:10001500069C20015DC3E8A4FDA09420D0D8730FF1
:10002500FF369120E8BAFBE82DFAE895FC5DC3E8B8
:0E00350090FCE822FAFF369120E8A5FB5DC39F
:02000002019F5C
:10000300558BECE879FDE87BFCE80DFAE8A5FB5D90
:01001300C329
:0200000201A05B
:10000400558BEC803E9020037507C6069C20015D4D
:10001400C3E85AFDFF369120E817FBE8EAF9E852F5
:03002400FC5DC3BD
:0200000201A259
:10000700558BEC803E9020037507C6069C20015D4A
:10001700C3E837FDC6069B2001E834FCE8C6F9E8CB
:0400270085FB5DC335
:0200000201A457
:10000B00558BECE821FDA09320B103D2E00A0691B9
:0D001B002050E8EFF9E8A9F9E811FC5DC3F9
:0200000201A655
:10000800558BECE804FDC6069B2001E801FCE8934B
:10001800F9803E952001750C803E9720017505E812
:0900280058FB5DC3E83FFB5DC31A
:0200000201A952
:0D000100558BECC6069B2001E8B4FD5DC3E5
:0200000201A952
:10000E00558BECC6069C2000C6069B2000E8EDF939
:10001E00803E9A201A75288A1E9920B700D1E38B4C
:10002E0087361CA3D01EA09120B102F6E189C68BA3
:10003E001ED01E8A08880E99208A4001A29A20801E
:10004E003E9A201C770D8A1E9A20B700D1E32EFF10
:10005E00A77F1BC6069C2001EB44E8EBFCEB3FE8B8
:10006E00EEFCEB3AE807FDEB35E811FDEB30E82B43
:10007E00FDEB2BE831FDEB26E837FDEB21E83DFDEE
:10008E00EB1CE843FDEB17E849FDEB12E852FDEBE4
:10009E000DE874FDEB08E87AFDEB03E898FDEB7BC9
:1000AE00E8B6FDEB76E8C2FDEB71E8E6FDEB6CE839
:1000BE0009FEEB67E832FEEB62E845FEEB5DE856C3
:1000CE00FEEB58E88FFEEB53E89BFEEB4EE8B9FED5
:1000DE00EB49E8D8FEEB44E8F0FEEB3FE814FFEB0B
:1000EE003AF11AF81AFD1A021B071B0C1B111B16EC
:1000FE001B1B1B201B251B2A1B2F1B341B391B3EB6
:10010E001B431B481B4D1B521B571B5C1B611B6665
:10011E001B6B1B701BB91B751B7A1BA09C20D0D8A8
:07012E007303E8BEF85DC396
:0200000201BC3F
:10000500558BECC44604A3D41E8C06D61EC606C862
:100015002000C41ED41E268A07B102F6E189C38AD0
:100025008FC61C880E99208A87C71CA29A203CFF80
:100035007510803EC820037309E871FBFE06C820D1
:10004500EBD0803E9A20FF7505C6069A2001E88808
:0A005500FEA1D41EEB005DC2040002
:0200000201C338
:10000600461C561C661C761C861C961CA61CB61C1A
:0200000201C437
:10000600111B0B14101B481B12144F1B5014181BEA
:0200000201C536
:10000600111B0000101B481B00004F1B0000181B93
:0200000201C635
:10000600111600001016481600004F1600001816AC
:0200000201C734
:10000600441145114011411149114A11000047118F
:0200000201C833
:10000600441145114011411149114A11000047118F
:0200000201C932
:10000600661400003D1C3B1C3A1C531C1E1C521C53
:0200000201CA31
:10000600231C1D1C00000000000000000000000072
:0200000201CB30
:10000600231C1D1C51076A072907570761070000B3
:0200000201CC2F
:10000600110C110C110C110C110F110F61043F048E
:100016000B0C0B0C0B0C0B0C0B0F0B0F61040000E5
:10002600100C100C100C100C100F100F61043F0474
:10003600480C480C480C480C480F480F61043F0414
:10004600120C120C120C120C120F120F20FF1B01B5
:100056004F0C4F0C4F0C4F0C4F0F4F0F19FF1C013D
:10006600500C500C500C500C500F500F4BFF0C0105
:10007600180C180C180C180C180F180F1FFF0F016E
:10008600230323032303230323032303230323033A
:100096001D031D031D031D031D031D031D031D035A
:1000A600610361036103610361036103610361032A
:1000B6003F033F033F033F033F033F033F033F032A
:1000C600000000000000000000000000000000002A
:1000D600000000000000000000000000000000001A
:1000E6000705300502052B050A053305260501051A
:1000F600090532050805310506052F0528050505FC
:10010600001A001A011A011A660C660C680C680CB3
:10011600390C390C390C390C3915371739153F0795
:100126003C0168136813681368136813681368132F
:1001360013011A016A0B67017301600165015D0114
:10014600390D390D390D390D710172016B016C01D3
:10015600660F660F780179016D016E0176017701F0
:100166003912391239123912391239123912391231
:100176003912391239123912391239123912391221
:10018600000000004309430138173617391839189B
:100196000000000064096401240A24085401550182
:1001A600031A031A041A041A0E020D02000069014A
:1001B6002119211921192119211921192119211969
:1001C6007A056F055F055605000E000E3E0E3E0EC3
:1001D60051062906570B5805001000103E103E1018
:1001E6005EFF000074FF42FF22011701051A051A7F
:0200000201EB10
:1000060014014C0116014E0115014D01061A071A7D
:00000001FF
:020000020000FC
:010000003FC0
:020000020230CA
:0C000000E9D40FE903DEE903DEE903DECA
:02000002033DBC
:100000000C0137000D02D50A0E02D40A0F013F0081
:100010001009100211090000120A2004510B0000FF
:100020006A110000130198001401F8001501FC008A
:100030001601FA001701F500180938076B01A60030
:100040006C01A7001A0199001B0127001C012F0059
:100050001D0700001E05F606210DD8002201F40040
:100060005205F6075305F605000FE40023070100CB
:10007000240C00005401CE005501CF00010377008D
:100080002503730002037200260376000303720047
:100090005603E3000403740005037F0027037D007B
:1000A00006037C0028037E00290B01005711010084
:1000B0005803EB002A037600590372002B037300E8
:1000C0005A0377002C0373002D0375002E037E0066
:1000D0005B037C002F037D005C037F003003710015
:1000E00031037B003203790033037500070370008E
:1000F00008037A0034037A0035037B000903780093
:100100000A0374005D019F003606C50037068D00A6
:100110003806C4005EFFF0006D01AC006E01AD005A
:100120005F03E2006F03E1007A03E0007B03E0007D
:100130007003E100391400007101A4007201A500F0
:100140003A05F6043B05F6033C0190003D05F60236
:100150000B0A08013E10E6003F15000060019D00FB
:100160006108010073019C004004D0024104D003E7
:1001700042FEF30062FEF30074FEF20075FEF20030
:1001800063FEF300430EC200640ECA004404D000B4
:100190004504D00165019E004604D0044704D00701
:1001A000480918037601AE007701AF004904D00476
:1001B0004A04D0054C01F9004D01FD004E01FB0041
:1001C0007801AA007901AB004F09280566120000EA
:1001D00067019B00681300006901D700500A3006D0
:020000020230CA
:02000C000000F2
:02000002035B9E
:0400000042584250D0
:02000002035B9E
:0400040053494449CF
:02000002035B9E
:060008002C3A2B0D20092B
:02000002035B9E
:01000E005B96
:02000002035B9E
:01000F005D93
:02000002035C9D
:100000000D0A616D626967756F7573206F70657237
:04001000616E642495
:02000002035E9B
:040002004801400071
:02000002035E9B
:0800060007588F000650FF06A9
:02000002035E9B
:04000E00E802E90417
:02000002035F9A
:040002009A03EA056E
:020000020230CA
:10000E00558BECB00D50E8F0F0B00A50E8EAF05D18
:01001E00C31E
:020000020231C9
:0D000F00558BECE8DEFFC6061836005DC319
:020000020232C8
:10000C00558BECE8DCFFB03F50E8CFF0E8CBFF5D60
:01001C00C320
:020000020233C7
:0F000D00558BECB8C03550E8D0F0E8BCFF5DC3B0
:020000020234C6
:10000C00558BECA03836220625363CFF7503E8E00C
:10001C00FFA03836320625363C017503E8C1FF5D7A
:01002C00C310
:020000020236C4
:10000D00558BEC8A4604FEC88846043CFF74188B59
:10001D005E088A078B5E063A077404B000EB0AFF90
:0D002D004608FF4606EBDCB0015DC2060090
:020000020239C1
:10000A00558BECC6064D3600803E4D360777198A69
:10001A001E4D36B7008A87B8353A46047504B001D2
:0E002A00EB08FE064D3675E0B0005DC2020028
:02000002023CBE
:10000800558BEC8A46042C303C09B0FF7601408AB7
:100018004E0480E9415080F905B0FF760140590A45
:05002800C15DC20200F1
:02000002023EBC
:10000D00558BEC8A46042C303C0976078A46042C25
:07001D0041040A5DC202006C
:020000020240BA
:10000400558BECC706D4350000C6064E3601C6062D
:10001400163600823E1836007506E8E3EFA218365D
:10002400A018368A1E1636B7008887F635FEC388B0
:100034001E163680FB207203E8EDFEFF361836E804
:1000440054FFD0D8732C803E163601750CC60617A3
:100054003602C6061836005DC3FE0E1636A04E36AE
:10006400D0D87307C6061736015DC3C60617360017
:100074005DC3A04E36D0D873A1FF361836E844FFCE
:10008400D0D8731A8B16D435B104D3E252FF361884
:1000940036E855FFB400590BC1A3D435EB05C606A9
:0800A4004E3600E974FF5DC354
:02000002024AB0
:10000C00558BECE852FF803EF6352074F6803EF6B8
:08001C00350974EF5DC35DC3FB
:02000002024CAE
:10000400558BECC6064F36008A4606FEC838064FA6
:10001400367720A1F6358B5E083B07750CA04F366A
:100024008B5E048807B001EB0C83460802FE064F82
:090034003675D5B0005DC206006E
:02000002024FAB
:10000D00558BECB8B03550B002508B1EDA358D479C
:07001D000250E8B2FF5DC3D1
:020000020251A9
:10000400558BECB8B43550B002508B1EDA358D47A1
:070014000350E89BFF5DC3F0
:020000020252A8
:10000B00558BECB8BD2050B004508B1EDA358D07E4
:10001B0050E885FFD0D8730C8B1EDA35C647040128
:08002B00B0015DC3B0005DC32C
:020000020255A5
:10000300558BECB8AD2050B008508B1EDA358D47B8
:100013000150E85CFFD0D87331B0018B1EDA35880C
:1000230047068B1EDA3588470B8B1EDA35827F0134
:100033000075038847088B1EDA35C6470E018B1EF1
:0E004300DA35C6470C00B0015DC3B0005DC3E6
:02000002025AA0
:10000100558BECB89D2050B008508B1EDA358D47CA
:100011000150E80EFFD0D87331B0018B1EDA35885C
:1000210047058B1EDA3588470B8B1EDA35827F0137
:100031000075038847088B1EDA35C6470E028B1EF2
:0E004100DA35C6470C01B0015DC3B0005DC3E7
:02000002025E9C
:10000F00558BEC823E1736007530813EF6354259DE
:10001F00750A8B1EDA35C6470D00EB10813EF6359B
:10002F00574F75088B1EDA35C6470D018B1EDA3513
:0E003F00807F0DFF7404B0015DC3B0005DC38F
:02000002026298
:10000D00558BECE8F8FE50803E18363AB0FF74017F
:06001D00405922C15DC341
:02000002026496
:10000300558BEC8A46048A1E4236B70088873F36F2
:08001300FE0642365DC2020048
:02000002026595
:10000B00558BECA04336D0D87303E8C4FC8B1EDAB7
:10001B00358A07B103D2E00C2650E8CBFFC6064366
:0F002B003601E884FD8B1EDA35C64704005DC33D
:02000002026892
:10000A00558BECE81CFE803E1736027511803EF6D1
:10001A00350D75088B1EDA35C64709015DC3E882BE
:10002A00FFD0D87305E8A9FFEBD9E838FFD0D87319
:10003A001B8B1EDA35807F0CFF7405E864FCEBC36A
:10004A008B1EDA358A470D88470CEBB75DC35DC353
:02000002026D8D
:10000A00558BEC8B1EDA35C6470B01E815FED0D8A6
:10001A00733FE815FDA0F6353A06BF3575168B1EF7
:10002A00DA35C6470B01B0072A46048B1EDA358833
:10003A00470EEB3F803EF6352B7511B0092A460470
:10004A008B1EDA3588470EE8E0FCEB11E803FCEB7F
:10005A000CB0082A46048B1EDA3588470EE8DAFD0A
:10006A00D0D8730CE8C3FCA0F6353A06BF35740342
:07007A00E8DFFB5DC202009C
:02000002027585
:10000100558BECB0008B1EDA358847048B1EDA3530
:100011008847058B1EDA358847068B1EDA358847F7
:10002100078B1EDA358847088B1EDA358847098B1E
:100031001EDA3588470A8B1EDA3588470B8B1EDAA4
:1000410035C6470DFF8B1EDA35C6470CFFE8E9FEC2
:100051008B1EDA358A4709D0D873025DC3E87AFD71
:10006100D0D873025DC3E899FDD0D873025DC3E8AF
:10007100DEFDD0D873025DC3803E173601755DA1E8
:10008100D4358B1EDA35894711A018363A06BE35AC
:10009100750BE81EFCE81BFCB000E98400803E18EB
:1000A100363A752EA1D4358B1EDA3589470FE80211
:1000B100FCE8FFFB803E1736017403E81DFBA1D469
:1000C100358B1EDA358947118B1EDA35C6470A0191
:1000D1005DC38B1EDA35C64707015DC3A0F6353A0D
:1000E10006BE357403E8F3FAE8C8FB803E17360113
:1000F100752DA1D4358B1EDA35894711E8B4FBA0E3
:10010100F6353A06BF3575128B1EDA35C6470E0332
:100111008B1EDA35C6470B015DC3E8BEFA5DC3B07D
:070121000350E864FE5DC31A
:02000002028773
:10000800558BECC706DA351936E8CDFEE87DFB805E
:0B0018003EF6352C7403E89BFA5DC334
:02000002028971
:10000300558BECC706DA352C36E8B2FE8B1EDA3593
:100013008A4709D0D873025DC3E855FB803EF635A5
:080023000D7403E873FA5DC3DC
:02000002028B6F
:10000B00558BECC706DE350000EB078306DE3504A7
:10001B00722DA1DE353DDF01772589C38A8FD03361
:10002B003A0E4A3675E58A8FD133880E49368A8F58
:10003B00D233880E4B368A87D333A247365DC3E85B
:04004B002FFA5DC368
:02000002028F6B
:10000F00558BECA016362C023C047603E81EFA8AB8
:10001F001E163680EB02B700D1E38B87C61EA3E016
:10002F0035C6065036008A1E163680EB02B7008A98
:10003F00878520FEC838065036773CB8F635508B8A
:10004F001EE0358D0750FF361636E821FAD0D873EB
:10005F00178A1E163680EB02B700A0503602878A29
:10006F0020A24A36B0015DC3A01636B4000106E0E7
:0B007F0035FE06503675AFB0005DC3C3
:02000002029763
:10000A00558BECB000A24236A24536A24436A24332
:10001A0036E81EFB803EF6350D7407803EF6352E17
:10002A007504B0005DC3E88AFCD0D87305E8B1FC5A
:10003A00EBDFE850FFD0D8733EE805FF803E493633
:10004A00FF7511A04436D0D87303E865F9C6064493
:10005A003601EB16803E4936FE7518A04536D0D8D3
:10006A007303E84DF9C606453601FF364B36E858A4
:0E007A00FCEB9EB0015DC3E838F9EB955DC369
:02000002029F5B
:10000800558BECFF36D635FF7604E804F9FF06D6A3
:05001800355DC202008D
:0200000202A05A
:10000D00558BECC606513600A04236FEC8A24236CC
:10001D003CFF74138A1E5136B700FFB73F36E8CA4E
:09002D00FFFE065136EBE15DC354
:0200000202A357
:0F000600558BECE8D1FFFF364B36E8B5FF5DC3F5
:0200000202A456
:10000500558BEC8A4604A24B36E8E5FF5DC202003B
:0200000202A555
:10000500558BEC8B460450E899FF8B460488E050ED
:07001500E890FF5DC202004C
:0200000202A654
:10000C00558BECA03836220625363C017505800E42
:05001C004B36015DC33D
:0200000202A852
:10000100558BEC8B1EDA35837F117F760CC6064645
:100011003602C6064C36025DC3C606463601C60622
:050021004C36015DC337
:0200000202AA50
:10000600558BECC6064C36008B1EDA358B4711A392
:10001600DC358A5F0EFECBB700D1E32EFFA7532B4C
:10002600C6064636038B1EDA358A4701EB7AC606C4
:10003600463600C606483606C6064C36025DC38BF3
:100046001EDA35B0013847027513A24636C6064891
:100056003606A24C36C706DC3500005DC3C606462A
:100066003600C6064836075DC3C6064636008B1EF2
:10007600DA358A47030404EB2FC606463600EB162C
:10008600E858FFB0078B1EDA352A4702EB1AE84A12
:10009600FFEBDBE845FF8B1EDA358A4702B102F635
:1000A600E18A4F03B50003C1A248365DC3C62AC61E
:0F00B6002AD42AE52A0F2B1F2B262B342B392B6C
:0200000202B644
:10000500558BEC8B4604A3DA35E835FFE8C2FEA034
:100015004636B106D2E08A164736B103D2E20AC2A5
:100025000A06483650E86BFE823E4C36007407A13E
:10003500DC3550E85DFE803E4C36017609A1DC35A5
:0A00450088E050E84DFE5DC20200A5
:0200000202BA40
:10000F00558BEC8B4604A3DA3589C38A4F0BD0D9B5
:10001F007324807F0CFF7503E873F78A46088B1EE5
:10002F00DA350A470CA24B368A4606A24736FF76C8
:0D003F0004E882FFEB03E844F75DC2060011
:0200000202BE3C
:10000C00558BECA03236F6D022063736D0D8731585
:10001C008A4606A24B368A4604A24736B82C36507E
:0C002C00E856FFEB03E818F75DC2040083
:0200000202C139
:10000800558BECE82EF7803E273602770BA01A3680
:10001800A24736B82C36EB10A0383608064B36A067
:0E0028002D36A24736B8193650E821FF5DC3C9
:0200000202C436
:0B000600558BECE820FEE8C9FF5DC34D
:0200000202C535
:10000100558BEC803E273602770CA02436D0D8736E
:0B00110005800E4B3602E8DCFF5DC3EB
:0200000202C634
:10000C00558BECA13D3650E882FDA02536D0D87337
:0C001C0009A13D3688E050E872FD5DC38C
:0200000202C832
:10000800558BECA13D3650E866FDA04B3624033CE9
:0E001800017509A13D3688E050E854FD5DC336
:0200000202CA30
:10000600558BEC823E253600750B813E3D36FF0052
:100016007603E871F6803E2536FF7512813E3D3641
:1000260000017207C6062536015DC3E869F65DC3A1
:0200000202CD2D
:10000600558BECE8CAFFE88DFDE854FDE887FF5DF7
:01001600C326
:0200000202CE2C
:10000700558BECE8B9FFE87CFDB8193650E86EFE71
:05001700E872FF5DC36B
:0200000202CF2B
:10000C00558BEC803E3A360277098A46040A06384C
:10001C0036EB078A46040A062536A24B365DC20229
:01002C0000D3
:0200000202D129
:0C000D00558BECA03336220621365DC373
:0200000202D228
:0C000900558BECA03336220624365DC374
:0200000202D327
:10000500558BECA037362206243650803E27360223
:10001500B0FF77014050803E3A3602B0FF7701408D
:0A0025005922C1F6D05922C15DC373
:0200000202D525
:10000F00558BECE82EFBA03536D0D87305E8C7FC2E
:07001F005DC3E8B8F55DC305
:0200000202D723
:10000600558BECE817FBA03536D0D8730BE8B0FC5F
:0D001600B00A50E86CFC5DC3E89BF55DC3CB
:0200000202D921
:10000300558BECE8FAFAA1D63583E87E8B0E3D36A4
:100013002BC881F9FF00771AA03336D0D87313E8C1
:1000230081FCA1D635408B0E3D362BC851E835FCFB
:070033005DC3E864F55DC345
:0200000202DC1E
:10000A00558BECE8A8FAE8C0FAA02436D0D8733D9C
:10001A00803E2D3601750EA03236D0D87307800E79
:10002A004B3602EB17833E3D3601B0FF7401402286
:10003A00063336F6D0D0D87303E826F5FF364B36AA
:10004A00FF364736B8193650E89AFD5DC3E812F50F
:02005A005DC384
:0200000202E119
:10000C00558BECE871FAFF364B36FF364736B82C79
:07001C003650E87EFD5DC3D4
:0200000202E317
:10000300558BECE83FFAE857FA803E3A3602761011
:10001300A0373622061E36D0D87305E8C7FD5DC368
:05002300E8D6F45DC306
:0200000202E515
:10000800558BECE835FAA03136D0D87317A04B36AB
:10001800B102F6E189C38A87E2350A062D3650E82F
:10002800CBFB5DC3B0FE50A04B36B102F6E189C3ED
:0D003800FFB7E335B82C3650E81CFD5DC362
:0200000202E911
:10000500558BECA03036D0D87318A04B36B104F61A
:10001500E18A162C36B103D2E289C30A97E6355236
:10002500EB19A03136D0D87317A04B36B104F6E1E1
:1000350089C38A87E7350A062D3650E872FB5DC30A
:10004500A04B36B104F6E189C3FFB7E835FFB7E940
:0600550035E803FD5DC368
:0200000202EE0C
:0B000B00558BECE8A2F9E8A1FF5DC3F3
:0200000202EF0B
:10000600558BECE897F9803E2C3601750CA03036FE
:0E001600D0D87305E81FF45DC3E883FF5DC317
:0200000202F109
:10000400558BECE85EF9E876F9E8FDFDD0D8730A83
:10001400800E4B3604E8AAFDEB4DE8F8FDD0D8730A
:1000240037C6064B3680807E04097527813E3D36EF
:1000340080007208813E3D3680FF7205800E4B368B
:1000440002E84EFDE811FBB8193650E803FCE8233A
:10005400FDEB14E87DFDEB0FE8C6FDD0D87305E891
:0B006400DBFCEB03E8B1F35DC202001F
:0200000202F703
:0B000F00558BECB00950E88CFF5DC37E
:0200000202F802
:0B000A00558BECB00A50E881FF5DC38D
:0200000202F901
:10000500558BECE8F8F8A03336D0D87322A04B36E0
:10001500B102F6E189C3FFB7EE35E893FAA1D6350B
:1000250083C0028B0E3D362BC851E893FA5DC3B0F1
:10003500FF50A04B36B102F6E189C3FFB7EF35E8B3
:0400450015FC5DC386
:0200000202FDFD
:10000900558BECE8B4F8813E3D36FF007725A033E7
:1000190036D0D8731E833E3D36037508B0CC50E800
:100029004AFA5DC3B0CD50E842FAA13D3650E8EE38
:08003900F95DC3E81DF35DC38E
:020000020301F8
:10000100558BECE861F8E879F8833E2A364073268F
:10001100A0373622062036D0D8731BA12A36B10369
:1000210050D2E808064B36582407A24736B82C367A
:0B00310050E820FB5DC3E8E2F25DC375
:020000020304F5
:10000C00558BECC706DA352C36E8F9F6A03536D028
:10001C00D8730BA04B360C0150E8DDF95DC3A0334F
:10002C0036D0D8730CE8C2F9FF363D36E8DAF95D04
:06003C00C3E8ACF25DC355
:020000020308F1
:10000200558BECE8F0F7A02136F6D0D0D87303E890
:1000120098F2E8FCF7803E2D36027516A03136D0F4
:10002200D8730FA04B360C080A06253650E893F910
:100032005DC3813E3D36FF007713A03336D0D873BF
:100042000CE870F9A13D3650E82BF95DC3E85AF28D
:020052005DC38C
:02000002030DEC
:10000400558BECE89EF7803E1A3602750EA01E361C
:10001400D0D87307C606523601EB19813E2A36FF43
:1000240000770EA02036D0D87307C606523600EBF0
:1000340003E824F2E888F7A03436F6D0D0D8730366
:10004400E815F2A05236B103D2E00A064B360A068E
:10005400383650E8CEF8823E5236007507A12A366B
:0600640050E8C0F85DC386
:020000020313E6
:10000A00558BECE853F7A03636D0D87320A04B3680
:10001A00B102F6E189C3FFB7F235E8EEF8FF363DE3
:10002A0036E8F7F8FF363B36E8F0F85DC3B0FF5024
:10003A00A04B36B102F6E189C3FFB7F335E872FA8D
:02004A005DC394
:020000020317E2
:10000C00558BECE8F6F6E80EF7E895FBD0D8730ABA
:10001C00C6064B36A8E842FB5DC3E890FBD0D8730C
:10002C000AC6064B36F6E842FB5DC3E88BFBD0D81C
:10003C00730BB08450E848FBE861FA5DC3E870F1DB
:02004C005DC392
:02000002031BDE
:10000E00558BECE8B4F6E8CCF6A021362206253660
:10001E0022063136D0D8730BA02D36049050E866E8
:10002E00F85DC3E851FBD0D8730BB08650E80EFBD9
:0A003E00E827FA5DC3E836F15DC360
:02000002031FDA
:10000800558BECE87AF6E892F6A0373622061D36CC
:100018008A0E3236F6D122C1D0D87310C6064B36B6
:100028008EA01936A24736B82C36EB20803E2736EC
:1000380001741FA0303622062436D0D87314C606A1
:100048004B368CA02C36A24736B8193650E81DF925
:100058005DC3803E3A3603751CA03736220621362A
:10006800D0D87311A025360CA0A24B36E8CFF7FFE5
:10007800363D36EB21803E273603751FA0343622E5
:10008800062436D0D87314A038360CA2A24B36E812
:10009800ACF7FF362A36E8C4F75DC3E893FAD0D840
:1000A8007327803E2736027716A02536B103D2E0A3
:1000B8000CB00A061A3650E893F7E8B7F95DC3C6DC
:1000C800064B36C6E828FA5DC3E871FAD0D8730A39
:0F00D800C6064B3688E881F95DC3E857F05DC373
:02000002032DCC
:10000700558BECC44604A3D6358C06D835E827F0C3
:10001700FF36D835E87CE1B03A50E813E1FF36D631
:1000270035E86FE1B02050E806E1E81BF0C706DAD3
:10003700351936E86DF6D0D87203E9B100803E492C
:1000470036157603E80EF08A1E4936B700D1E32E3F
:10005700FFA79933E8FEEFEB17E82CFAEB12E83E1F
:10006700FAEB0DE856FAEB08E888FAEB03E8D5FA5D
:10007700EB7FE8E7FAEB7AE807FBEB75E895FBEB34
:1000870070E824FCEB6BE82AFCEB66E830FCEB61DC
:10009700E86FFCEB5CE8A2FCEB57E8D8FCEB52E816
:1000A70009FDEB4DE856FDEB48E8B7FDEB43E8F4F7
:1000B700FDEB3EE831FEEB39E866FEEB34E85FFB2B
:1000C700EB2F2B33303335333A333F334433493314
:1000D7004E33533358335D33623367336C33713385
:1000E70076337B33803385338A338F339433E845D4
:0800F700F6A1D6355DC204003C
:00000001FF

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,28 @@
;
;create ddt86.cmd, on micro using ISIS interface
;
pli gentab $$d
link gentab
gentab op86.dat
;
is14
plm86 ins86.plm debug pagewidth(100) xref
plm86 dis86.plm debug pagewidth(100) xref
asm86 dislnk86.asm debug
link86 dislnk86.obj, dis86.obj, ins86.obj,plm86.lib to dis86.lnk
loc86 dis86.lnk to dis86.abs ad(sm(dats(0),code(0h))) od(sm(dats,code,const,data))
oh86 dis86.abs to dis86.h86
;
plm86 ass86.plm debug xref pagewidth(100)
plm86 asmtab.plm debug xref pagewidth(100)
asm86 asslnk86.asm debug
link86 asslnk86.obj, asmtab.obj, ass86.obj, po(dis86.abs), plm86.lib to ass86.lnk
loc86 ass86.lnk to ass86.abs ad(sm(dats(0),code(0h))) od(sm(dats,code,const,data))
oh86 ass86.abs to ass86.h86
;
cpm
asm86 ddt86 $$fi
pip ddt86.h86 = ddt86.h86, dis86.h86, ass86.h86
; the value for the minimum code group required comes from the start of
; the ??seg as listed in ass86.mp2
gencmd ddt86 8080 code[m366]

View File

@@ -0,0 +1,94 @@
0000 VARIABLES
1207 ASMSPSAV 1206 ASSEMPRESENT 1272 BASEPAGESAVE
1226 BPCNT 11BC BREAKFL 122B BRK1BYT 1227 BRK1LOC 1229 BRK1SEG
1230 BRK2BYT 122C BRK2LOC 122E BRK2SEG 0080 BUFF 11BF CCPSP
11BD CCPSS 0189 CLOSEM 0C94 CMD 1270 COL40 11C3 CONBUFF
11C2 CONBUFFCNT 11C1 CONBUFFHDR 1204 CONPTR 0114 COPYRIGHT 02E9 CTABLE
0143 DATE 12A2 DELIMS 1239 DISEMPRESENT 1209 DISLOC
120D DISMAX 120B DISSEG 1242 DMAOFF 1244 DMASEG 123E ENDREADOFF
1240 ENDREADSEG 124F ENDWRITEOFF 1251 ENDWRITESEG
1271 ERRMODE 005C FCB 006C FCB2 12AE FCBADR 0170 FLAGBITS
0167 FLAGNAME 1216 GOLOC 1218 GOSEG 1238 LASCNT 1237 LASCNTSW
1231 LASLOC 1235 LASMAX 1233 LASSEG 12AD LASTCHAR 1211 LINEMAX
0197 LOADM 01AC MAKEM 1266 MCB 1266 MCBBASE 126A MCBEXT
1268 MCBLEN 01B6 MEMM 126E MODE 1213 ND40 1212 ND80
1214 NDW40 1215 NLINES 1253 NREG 126C NUMREQ 01CD OPENM
01D6 READM 014D REGNAME 1255 REGNUM 11BA SAVESP 11B8 SAVESS
126F SAVEVECFLAG 1254 SEGFLAG 0179 SEGNAMES 015D SEGREG
013A SIGNON 1249 SKIPBDOS 1310 STACKP 123A STARTREADOFF
123C STARTREADSEG 124B STARTWRITEOFF
124D STARTWRITESEG 126B SYSIF 120F TDISP 1246 TRACECOUNT
1248 TRACEPRINT 1258 TYPE1LOC 125A TYPE1SEG 125C TYPE2LOC 125E TYPE2SEG
119C USERAX 11A6 USERBP 119E USERBX 11AC USERCS 11A0 USERCX
11AA USERDI 11AE USERDS 11A2 USERDX 11B2 USERES 11B6 USERFL
124A USERIFOFF 11B4 USERIP 1262 USERLOC2 1260 USERMAX 119C USERREG
1264 USERSEG2 11A8 USERSI 11A4 USERSP 11B0 USERSS 121A VECTORSAVE
01E6 VERM 126D WMODE 01F8 WRITEM 1257 XTEMP
0000 NUMBERS
2300 ASMORG 00E0 BDOSI 0112 BDOSINTLOC 0113 BDOSINTNUM 0040 CONBUFFMAX
000D CR 0013 CTLS 031E DDTBDOSINTNUM 0100 DDTORG
0000 DEBUG 000D EOL 0200 IFMASK16 0002 IFMASK8 1400 LASMORG
000A LF 0002 NBPS 000B NDELIMS 0009 NFLAG 0060 STSIZE
000D TOTREG
0000 LABELS
039E ALLOCABSMEM 0459 ASCEND 044F ASCOUT 0B40 ASM0
0B5A ASMENT 0B57 ASMERR 0B56 ASMRET 2300 ASSEM 0B2F ASSM
0989 BADVER 031D BDOS 0112 BDOSINT 042F BLANK
0B60 BLOCKCOMPARE 0742 BPCLEAR 074B BPCLOOP 075C BPEND
075D BPV 0764 BPVECT 0780 BPVECTRET 0855 BREAK0 07C1 BREAKADDR
07D7 BREAKENTRY 024C CCTRET 09F0 CHECK0 022D CHECKCMDTAIL
0557 CHECKERR 0541 CHECKFLAG 09E8 CHECKREG 09FE CHECKRET
09FF CHECKSEGREG 09D6 CHECKWORD 052B CHKREG 09E3 CHRET
034E CLOSE 0358 CLOSEERR 0B87 CMP0 0BAC CMPCONT 0BC1 CMPDONE
0BC2 CMPERR 03F1 CONIN 0326 CONOUT 0320 CONSIN 0334 CONSTAT
041D CRLF 0428 CRLFCHK 0408 CTLCHEK 041C CTLEXIT 027D D0
028A D1 02A0 D2 024D DDT86 035D DELETE 0934 DELIM
0942 DELRET 0C17 DIS0 0BF7 DIS00 0BFC DIS01 0BFF DIS02
0C31 DIS1 1400 DISEM 0C35 DISP3 0C43 DISP4 0C6B DISP6
0C6E DISP7 0C93 DISP8 0BD6 DISPLAY 0D12 EERR 11BD ENDCS
02DF ERR 03BE ERRM 0CC3 EX0 0C97 EXECUTE 0D33 FIL0
0D3D FIL1 0D58 FILERR 0D15 FILL 0517 FILLBL 051D FILLDONE
04F5 FILLFIELD 0513 FILLQ 04B9 FILLTYPE 0519 FILLX 0D57 FILRET
03AD FREEMEM 09D3 GETERR 0597 GETFLAG 09CB GETLASTOFFSET
03D7 GETLINE 0394 GETMAXMEM 09A9 GETN0 09BE GETNRET 09A5 GETNUMBER
09BF GETOFFSET 0A3B GETS0 0A44 GETS2 0A47 GETS3
0A29 GETSEGANDOFF 0A46 GETSRET 0DB9 GOERR 0DA3 GORESTORE
0D5B GOUSER 0943 HEXCON 0954 HEXERR 0DBF HEXMATH 0953 HEXRET
0DF0 I0 0E01 I1 0E0C I2 0E2A IDONE 0E2B IERR
0DDE IFCB 0999 INC1OR2 0419 KWAIT 0E5A LAS0 0E68 LAS1
0E6C LAS2 0EA1 LASERR 0EA0 LASRET 0E2E LASSM 03B2 LOAD
03BB LOADERR 0376 MAKE 0380 MAKEERR 03A8 MEMERR 0ECB MOV0
023D MOVCOM 0EA4 MOVE 0EEF MOVERR 0EEE MOVRET 06FE NOT8080
0504 NOTAST 0A24 NOTSR 033F OPEN 0349 OPENERR 0491 PARSE
049C PARSE2 04C3 PARSEERR 04BC PARSERET 04EC PDELIM 0457 PEROUT
0567 PF0 05B2 PF2 067A PI0 067E PI1 03C4 PLMCONOUT
03D1 PLMGETLINE 0957 PLMSET 05C5 PNAME 0449 PQUIT 05E0 PR0
05DB PR00 05ED PR2 05C9 PREG1 05D3 PREG2 062B PREGHDR1
0635 PREGHDR2 0645 PRH0 0640 PRH00 0655 PRH1 045D PRINT8OR16
047C PRINTBYTE 0469 PRINTDWORD 0BC5 PRINTERROR 05B6 PRINTFLAG
058D PRINTFLAGNAME 0564 PRINTFLAGS 05A9 PRINTFLAGVAL
065D PRINTINSTR 061C PRINTIT 043D PRINTM 0485 PRINTNIBBLE
063D PRINTREGHEADER 0601 PRINTREGNAME 05D8 PRINTREGS
05F5 PRINTREGVAL 0685 PRINTSEGINFO 0475 PRINTWORD
06CC PSIRET 096C PSRET 032E RDCONBUFF 0EF2 READ 0AB2 READDONE
0AB9 READERR 0A51 READFILE 0362 READSEC 0F49 RERR
0796 RESTOREVECT 0A65 RF0 0A72 RF1 08FF RSTORE
07AD RVRET 04E3 S0 04E7 S1 0843 SAV0 07E5 SAVECPU
0781 SAVEVECT 0715 SC1 051E SCANQ 0F55 SET0 0F8E SET1
0F95 SET2 096F SET8OR16 020A SETBDOSINT 0733 SETBP 0980 SETBYTE
06CD SETCPUSTATE 07AE SETDEFSEG 0385 SETDMA 038F SETDMAB
072B SETDONE 0F9E SETERR 038A SETERRMODE 0573 SETFLAG 0F4C SETMEM
055A SETREG 0F9D SETRET 04C6 SETUPDISK 061E SETUPHDR 0976 SETWORD
0988 SRET 07DF SSENTRY 086F SST0 086A SST00 0889 SST1
02A7 START 0795 SVRET 0435 TABS 060C TESTREGCL 0FB5 TR0
08C6 TR00 08FB TR01 0FA1 TRACE 0FA6 TRACE0 0FCE TRACE1
0864 TRACEDONE 0FD4 TRACEERR 089C TRACERESTORE 0FD7 UNTRACE
03FD UPPER 0407 UPRET 101B V0 0FDE VERIFY 100A VERIFYE
0FEC VERIFYR 102F VERRET 033A VERSION 1068 W0 1088 W1
1092 WERR 0AFA WF0 0AF4 WF00 0B07 WF1 0B2C WFERR
1030 WRITE 0B2B WRITEDONE 0371 WRITEERR 0ABC WRITEFILE 0367 WRITESEC
110C X0 114A X1 1152 X2 10E4 XCOM 10C2 XD0
10DD XD1 10B9 XD40 1095 XDISP 1161 XERR 1164 XFLAG
1155 XNEXT 10C0 XNH40 10A2 XNOHDR 119B XRET

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,35 @@
;
; Submit to backup DDT86 1.2 Source
; for Concurrent CP/M-86 PC to the VAX.
; Writes to _drb1:[ccpmpc.micro.ddt86]
;
; Note: DDT86 is created on a micro running
; CP/M 2.2 with the ISIS interface
;
; The submit DDTRET.SUB RETrives these files
; from the VAX.
;
; See CCP/M-86 1.0 PC archive diskettes for CVAX.COM
;
cvax $$al
cvax $$a# set def [.micro.ddt86]#
;
cvax asmtab.plm $$tans
cvax ass86.plm $$tans
cvax asslnk86.asm $$tans
cvax ddt86.sub $$tans
cvax ddt86.sym $$tans
cvax dis86.plm $$tans
cvax dislnk86.asm $$tans
cvax gentab.pli $$tans
cvax ins86.plm $$tans
cvax op86.dat $$tans
cvax optab.dat $$tans
cvax optab.lit $$tans
;
; BACKUP TRANSFER SUBMITS
cvax ddtback.sub $$tans
cvax ddtret.sub $$tans
;
; DDT86 BACKUP TO VAX COMPLETE
;

View File

@@ -0,0 +1,35 @@
;
; Submit to retrive DDT86 1.2 Source
; for Concurrent CP/M-86 PC from the VAX.
; Reads from _drb1:[ccpmpc.micro.ddt86]
;
; Note: DDT86 is created on a micro running
; CP/M 2.2 with the ISIS interface
;
; The submit DDTBACK.SUB writes these files
; to the VAX.
;
; See CCP/M-86 1.0 PC archive diskettes for CVAX.COM
;
cvax $$al
cvax $$a# set def [.micro.ddt86]#
;
cvax asmtab.plm $$fans
cvax ass86.plm $$fans
cvax asslnk86.asm $$fans
cvax ddt86.sub $$fans
cvax ddt86.sym $$fans
cvax dis86.plm $$fans
cvax dislnk86.asm $$fans
cvax gentab.pli $$fans
cvax ins86.plm $$fans
cvax op86.dat $$fans
cvax optab.dat $$fans
cvax optab.lit $$fans
;
; RETRIVE TRANSFER SUBMITS
cvax ddtback.sub $$fans
cvax ddtret.sub $$fans
;
; DDT86 RETRIVAL FROM VAX COMPLETE
;

View File

@@ -0,0 +1,878 @@
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE DISEM86
OBJECT MODULE PLACED IN DIS86.OBJ
COMPILER INVOKED BY: PLM86 DIS86.PLM DEBUG PAGEWIDTH(100) XREF
$title('8086 disassembler')
$date(5/14/81)
$compact
$optimize(2)
1 disem86: do;
2 1 declare
cr literally '0dh',
lf literally '0ah',
true literally '1',
false literally '0';
$include(optab.dat)
=
3 1 = declare ops2 (*) byte initial (
= 'IN', 'JA', 'JB', 'JC', 'JE',
= 'JG', 'JL', 'JO', 'JP', 'JS',
= 'JZ', 'OR');
=
4 1 = declare ops3 (*) byte initial (
= 'AAA', 'AAD', 'AAM', 'AAS', 'ADC',
= 'ADD', 'AND', 'CBW', 'CLC', 'CLD',
= 'CLI', 'CMC', 'CMP', 'CS:', 'CWD',
= 'DAA', 'DAS', 'DEC', 'DIV', 'DS:',
= 'ES:', 'ESC', 'HLT', 'INC', 'INT',
= 'JAE', 'JBE', 'JGE', 'JLE', 'JMP',
= 'JNA', 'JNB', 'JNC', 'JNE', 'JNG',
= 'JNL', 'JNO', 'JNP', 'JNS', 'JNZ',
= 'JPE', 'JPO', 'LDS', 'LEA', 'LES',
= 'MOV', 'MUL', 'NEG', 'NOP', 'NOT',
= 'OUT', 'POP', 'RCL', 'RCR', 'REP',
= 'RET', 'ROL', 'ROR', 'SAL', 'SAR',
= 'SBB', 'SHL', 'SHR', 'SS:', 'STC',
= 'STD', 'STI', 'SUB', 'XOR');
=
5 1 = declare ops4 (*) byte initial (
= 'CALL', 'IDIV', 'IMUL', 'INTO', 'IRET',
= 'JCXZ', 'JMPF', 'JMPS', 'JNAE', 'JNBE',
= 'JNGE', 'JNLE', 'LAHF', 'LOCK', 'LOOP',
= 'POPF', 'PUSH', 'REPE', 'REPZ', 'RETF',
= 'SAHF', 'TEST', 'WAIT', 'XCHG', 'XLAT');
=
6 1 = declare ops5 (*) byte initial (
= 'CALLF', 'CMPSB', 'CMPSW', 'LODSB', 'LODSW',
= 'LOOPE', 'LOOPZ', 'MOVSB', 'MOVSW', 'PUSHF',
= 'REPNE', 'REPNZ', 'SCASB', 'SCASW', 'STOSB',
= 'STOSW');
=
7 1 = declare ops6 (*) byte initial (
= 'LOOPNE', 'LOOPNZ');
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 2
=
8 1 = declare nops (5) byte public initial (12, 69, 25, 16, 2);
=
9 1 = declare opn$in (*) byte public initial (0, 12, 81, 106, 122, 255);
10 1 declare
tab$ptrs (5) address public initial (.ops2, .ops3, .ops4, .ops5, .ops6);
11 1 declare
left$bracket byte data ('['),
right$bracket byte data (']');
12 1 declare
alt$table$base address,
alt$table based alt$table$base (16) byte,
alt$table$ptrs (8) address external;
13 1 declare
mod$bits byte,
reg$bits byte,
rm$bits byte,
byte1$reg$bits byte,
d$bit byte,
s$bit byte,
v$bit byte,
w$bit byte,
z$bit byte;
14 1 declare
mnemonic$index byte, /* index into opcodes */
instr$type byte,
table$ptr address,
table$char based table$ptr byte,
disem$ptr pointer,
disem$offset address at (.disem$ptr),
disem$end address,
disem$byte based disem$ptr (1) byte,
disem$word based disem$ptr (1) address,
b$or$w$flag byte,
error$flag byte;
15 1 declare instr$table (512) byte external;
16 1 declare
ax$reg literally '0',
cx$reg literally '1',
dx$reg literally '2',
bx$reg literally '3',
sp$reg literally '4',
bp$reg literally '5',
si$reg literally '6',
di$reg literally '7';
17 1 declare
al$reg literally '0',
cl$reg literally '1',
dl$reg literally '2',
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 3
bl$reg literally '3',
ah$reg literally '4',
ch$reg literally '5',
dh$reg literally '6',
bh$reg literally '7';
18 1 declare
es$reg literally '0',
cs$reg literally '1',
ss$reg literally '2',
ds$reg literally '3';
19 1 declare
reg16 (*) byte public initial ('AX', 'CX', 'DX', 'BX', 'SP', 'BP', 'SI', 'DI'),
reg8 (*) byte public initial ('AL', 'CL', 'DL', 'BL', 'AH', 'CH', 'DH', 'BH'),
segreg (*) byte public initial ('ES', 'CS', 'SS', 'DS');
20 1 conout: procedure (c) external;
21 2 declare c byte;
22 2 end conout;
23 1 comma: procedure;
24 2 call conout (',');
25 2 end comma;
26 1 printm: procedure (a) PUBLIC;
27 2 declare a address;
28 2 declare b based a byte;
29 2 do while b <> '$';
30 3 call conout (b);
31 3 a = a + 1;
32 3 end;
33 2 end printm;
34 1 print$nibble: procedure (b);
35 2 declare b byte;
36 2 if b > 9 then call conout (b - 10 + 'A');
38 2 else call conout (b + '0');
39 2 end print$nibble;
40 1 print$byte: procedure (b);
41 2 declare b byte;
42 2 call print$nibble (shr (b, 4));
43 2 call print$nibble (b and 0fh);
44 2 end print$byte;
45 1 print$word: procedure (a) public;
46 2 declare a address;
47 2 call print$byte (high (a));
48 2 call print$byte (low (a));
49 2 end print$word;
50 1 error: procedure;
51 2 call printm (.('??= $'));
52 2 call print$byte (disem$byte (0));
53 2 disem$offset = disem$offset + 1;
54 2 end error;
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 4
55 1 set$bits: procedure;
56 2 byte1$reg$bits = disem$byte (0) and 7;
57 2 mod$bits = shr (disem$byte (1), 6);
58 2 reg$bits = shr (disem$byte (1), 3) and 7;
59 2 rm$bits = disem$byte (1) and 7;
60 2 w$bit, z$bit = disem$byte (0) and 1;
61 2 d$bit, s$bit, v$bit = shr (disem$byte (0), 1) and 1;
62 2 end set$bits;
63 1 print$b$or$w: procedure;
64 2 if w$bit then call printm (.('WORD $'));
66 2 else call printm (.('BYTE $'));
67 2 end print$b$or$w;
68 1 print$reg: procedure (reg$add, reg);
69 2 declare reg$add address, reg byte;
70 2 table$ptr = reg$add + shl (reg, 1);
71 2 call conout (table$char);
72 2 table$ptr = table$ptr + 1;
73 2 call conout (table$char);
74 2 end print$reg;
75 1 print$reg8: procedure (reg);
76 2 declare reg byte;
77 2 call print$reg (.reg8, reg);
78 2 end print$reg8;
79 1 print$reg16: procedure (reg);
80 2 declare reg byte;
81 2 call print$reg (.reg16, reg);
82 2 end print$reg16;
83 1 print$reg$8$or$16: procedure (reg$num);
84 2 declare reg$num byte;
85 2 if w$bit then call print$reg$16 (reg$num);
87 2 else call print$reg$8 (reg$num);
88 2 end print$reg$8$or$16;
89 1 print$2$reg$16: procedure (r1, r2);
90 2 declare (r1, r2) byte;
91 2 call print$reg$16 (r1);
92 2 call conout ('+');
93 2 call print$reg$16 (r2);
94 2 end print$2$reg$16;
95 1 print$A$reg: procedure;
96 2 if w$bit then call print$reg$16 (ax$reg);
98 2 else call print$reg$8 (al$reg);
99 2 end print$A$reg;
100 1 print$seg$reg: procedure (reg);
101 2 declare reg byte;
102 2 call print$reg (.seg$reg, reg);
103 2 end print$seg$reg;
104 1 print$data$8: procedure;
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 5
105 2 call print$byte (disem$byte (0));
106 2 disem$offset = disem$offset + 1;
107 2 end print$data$8;
108 1 print$data$16: procedure;
109 2 call print$word (disem$word (0));
110 2 disem$offset = disem$offset + 2;
111 2 end print$data$16;
112 1 print$data$8$or$16: procedure;
113 2 if w$bit then call print$data$16;
115 2 else call print$data$8;
116 2 end print$data$8$or$16;
117 1 print$data$sw: procedure;
118 2 if rol (disem$byte (0), 1) then call print$word (0ff00h or disem$byte (0));
120 2 else call print$word (disem$byte (0));
121 2 disem$offset = disem$offset + 1;
122 2 end print$data$sw;
123 1 print$signed$8: procedure;
124 2 declare a address;
125 2 a = disem$byte (0);
126 2 if low (a) >= 80h then a = a or 0ff00h; /* sign extend to 16 bits */
128 2 call print$word (disem$offset + a + 1);
129 2 disem$offset = disem$offset + 1;
130 2 end print$signed$8;
131 1 print$signed$16: procedure;
132 2 call print$word (disem$offset + disem$word (0) + 2);
133 2 disem$offset = disem$offset + 2;
134 2 end print$signed$16;
135 1 print$direct$addr: procedure;
136 2 call conout (left$bracket);
137 2 call print$word (disem$word (0));
138 2 call conout (right$bracket);
139 2 disem$offset = disem$offset + 2;
140 2 end print$direct$addr;
141 1 print$mod$rm: procedure;
142 2 disem$offset = disem$offset + 1; /* point past mod/reg/rm byte */
143 2 if mod$bits = 3 then
144 2 do;
145 3 call print$reg$8$or$16 (rm$bits);
146 3 return;
147 3 end;
148 2 if b$or$w$flag then call print$b$or$w;
150 2 if rm$bits = 6 and mod$bits = 0 then
151 2 do;
152 3 call print$direct$addr;
153 3 return;
154 3 end;
155 2 if mod$bits = 1 then
156 2 do;
157 3 if (rm$bits <> 6) or (disem$byte (0) <> 0)
then call print$byte (disem$byte (0));
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 6
159 3 disem$offset = disem$offset + 1;
160 3 end;
161 2 else if mod$bits = 2 then
162 2 do;
163 3 call print$word (disem$word (0));
164 3 disem$offset = disem$offset + 2;
165 3 end;
call conout (left$bracket);
167 2 do case rm$bits;
168 3 call print$2$reg$16 (3, 6);
169 3 call print$2$reg$16 (3, 7);
170 3 call print$2$reg$16 (5, 6);
171 3 call print$2$reg$16 (5, 7);
172 3 call print$reg$16 (6);
173 3 call print$reg$16 (7);
174 3 call print$reg$16 (5);
175 3 call print$reg$16 (3);
176 3 end;
177 2 call conout (right$bracket);
178 2 end print$mod$rm;
179 1 print$mod$reg$rm: procedure;
180 2 if d$bit then
181 2 do;
182 3 call print$reg$8$or$16 (reg$bits);
183 3 call conout (',');
184 3 call print$mod$rm;
185 3 end;
else
186 2 do;
187 3 call print$mod$rm;
188 3 call conout (',');
189 3 call print$reg$8$or$16 (reg$bits);
190 3 end;
191 2 end print$mod$reg$rm;
192 1 print$mnemonic: procedure;
193 2 declare (len, i) byte;
194 2 len = 2;
195 2 do while mnemonic$index >= opn$in (len - 1);
196 3 len = len + 1;
197 3 end;
198 2 table$ptr = tab$ptrs (len - 2) + (mnemonic$index - opn$in (len - 2))
* len;
199 2 do i = 1 to 7;
200 3 if i <= len then
201 3 do;
202 4 call conout (table$char);
203 4 table$ptr = table$ptr + 1;
204 4 end;
205 3 else call conout (' ');
206 3 end;
207 2 disem$offset = disem$offset + 1;
208 2 end print$mnemonic;
209 1 type1: procedure;
210 2 call print$mnemonic;
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 7
211 2 end type1;
212 1 type2: procedure;
213 2 if disem$byte (1) = 0ah then
214 2 do;
215 3 call print$mnemonic;
216 3 disem$offset = disem$offset + 1;
217 3 end;
218 2 else error$flag = true;
219 2 end type2;
220 1 type3: procedure;
221 2 call print$mnemonic;
222 2 call print$reg$16 (byte1$reg$bits);
223 2 end type3;
224 1 type4: procedure;
225 2 declare temp byte;
226 2 temp = shr (disem$byte (0), 3) and 3;
227 2 call print$mnemonic;
228 2 call print$segreg (temp);
229 2 end type4;
230 1 type5: procedure;
231 2 call print$mnemonic;
232 2 call print$signed$8;
233 2 end type5;
234 1 type6: procedure;
235 2 call print$mnemonic;
236 2 call print$signed$16;
237 2 end type6;
238 1 type8: procedure; /* 7, 9 */
239 2 call print$mnemonic;
240 2 call print$mod$rm;
241 2 end type8;
242 1 type10: procedure;
243 2 call print$mnemonic;
244 2 call print$data$8;
245 2 end type10;
246 1 type11: procedure;
247 2 call print$mnemonic;
248 2 call print$data$16;
249 2 end type11;
250 1 type12: procedure;
251 2 call print$mnemonic;
252 2 call conout ('3');
253 2 end type12;
254 1 type13: procedure;
255 2 declare temp address;
256 2 call print$mnemonic;
257 2 temp = disem$word (0);
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 8
258 2 disem$offset = disem$offset + 2;
259 2 call print$data$16;
260 2 call conout (':');
261 2 call print$word (temp);
262 2 end type13;
263 1 type14: procedure; /* 15, 16, 17 */
264 2 call print$mnemonic;
265 2 call print$mod$reg$rm;
266 2 end type14;
267 1 type18: procedure; /* 19, 20, 21 */
268 2 call print$mnemonic;
269 2 if d$bit then
270 2 do;
271 3 call print$direct$addr;
272 3 call comma;
273 3 call print$A$reg;
274 3 end;
else
275 2 do;
276 3 call print$A$reg;
277 3 call comma;
278 3 call print$direct$addr;
279 3 end;
280 2 end type18;
281 1 type22: procedure;
282 2 call print$mnemonic;
283 2 if d$bit then
284 2 do;
285 3 call print$data$8;
286 3 call comma;
287 3 call print$A$reg;
288 3 end;
else
289 2 do;
290 3 call print$A$reg;
291 3 call comma;
292 3 call print$data$8;
293 3 end;
294 2 end type22;
295 1 type23: procedure; /* 24 */
296 2 call print$mnemonic;
297 2 call print$A$reg;
298 2 call comma;
299 2 call print$data$8$or$16;
300 2 end type23;
301 1 type25: procedure; /* 26 */
302 2 call print$mnemonic;
303 2 if d$bit then
304 2 do;
305 3 call print$reg$16 (dx$reg);
306 3 call comma;
307 3 call print$A$reg;
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 9
308 3 end;
else
309 2 do;
310 3 call print$A$reg;
311 3 call comma;
312 3 call print$reg$16 (dx$reg);
313 3 end;
314 2 end type25;
315 1 type27: procedure; /* 28, 29, 30 */
316 2 call print$mnemonic;
317 2 b$or$w$flag = true;
318 2 call print$mod$rm;
319 2 call comma;
320 2 if v$bit then call print$reg$8 (cl$reg);
322 2 else call conout ('1');
323 2 end type27;
324 1 type31: procedure; /* 32 */
325 2 call setbits;
326 2 reg$bits = byte1$reg$bits;
327 2 w$bit = shr (disem$byte (0), 3) and 1;
328 2 call print$mnemonic;
329 2 call print$reg$8$or$16 (reg$bits);
330 2 call comma;
331 2 call print$data$8$or$16;
332 2 end type31;
333 1 type33: procedure;
334 2 call print$mnemonic;
335 2 call print$reg$16 (ax$reg);
336 2 call comma;
337 2 call print$reg$16 (byte1$reg$bits);
338 2 end type33;
339 1 type34: procedure; /* 35 */
340 2 call print$mnemonic;
341 2 b$or$w$flag = true;
342 2 call print$mod$rm;
343 2 call comma;
344 2 call print$data$8$or$16;
345 2 end type34;
346 1 type36: procedure; /* 37 */
347 2 w$bit = true; /* force 16 bit reg, mem */
348 2 if reg$bits > 3 then
349 2 do;
350 3 error$flag = true;
351 3 return;
352 3 end;
353 2 call print$mnemonic;
354 2 if d$bit then
355 2 do;
356 3 call print$seg$reg (reg$bits);
357 3 call comma;
358 3 call print$mod$rm;
359 3 end;
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 10
else
360 2 do;
361 3 call print$mod$rm;
362 3 call comma;
363 3 call print$seg$reg (reg$bits);
364 3 end;
365 2 end type36;
366 1 type38: procedure;
367 2 call print$mnemonic;
368 2 call print$mod$rm;
369 2 call comma;
370 2 call print$data$8;
371 2 end type38;
372 1 type39: procedure;
373 2 if mod$bits = 3 then
374 2 do;
375 3 error$flag = true;
376 3 return;
377 3 end;
378 2 call print$mnemonic;
379 2 call print$reg$16 (reg$bits);
380 2 call comma;
381 2 call print$mod$rm;
382 2 end type39;
383 1 type40: procedure; /* 41 */
384 2 if mod$bits = 3 then
385 2 do;
386 3 error$flag = true;
387 3 return;
388 3 end;
389 2 call print$mnemonic;
390 2 b$or$w$flag = true;
391 2 call print$mod$rm;
392 2 call comma;
393 2 call print$data$8$or$16;
394 2 end type40;
395 1 type42: procedure;
396 2 call print$mnemonic;
397 2 call print$byte (shl (byte1$reg$bits, 3) or reg$bits);
398 2 call comma;
399 2 call print$mod$rm;
400 2 end type42;
401 1 type44: procedure;
402 2 call print$mnemonic;
403 2 b$or$w$flag = true;
404 2 call print$modrm;
405 2 call comma;
406 2 if s$bit = 1 and w$bit = 1 then call print$data$sw;
408 2 else call print$data$8$or$16;
409 2 end type44;
410 1 type45: procedure;
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 11
411 2 b$or$w$flag = true;
412 2 call type8;
413 2 end type45;
414 1 dis: procedure;
415 2 error$flag, b$or$w$flag = false;
416 2 call set$bits;
417 2 if instr$type = 26 then
418 2 do;
419 3 alt$table$base = alt$table$ptrs (mnemonic$index);
420 3 mnemonic$index = alt$table (reg$bits * 2);
421 3 instr$type = alt$table (reg$bits * 2 + 1);
422 3 end;
423 2 if instr$type > 28 then error$flag = true;
else
425 2 do case instr$type;
426 3 error$flag = true;
427 3 call type1;
428 3 call type2;
429 3 call type3;
430 3 call type4;
431 3 call type5;
432 3 call type6;
433 3 call type8;
434 3 call type10;
435 3 call type11;
436 3 call type12;
437 3 call type13;
438 3 call type14;
439 3 call type18;
440 3 call type22;
441 3 call type23;
442 3 call type25;
443 3 call type27;
444 3 call type31;
445 3 call type33;
446 3 call type34;
447 3 call type36;
448 3 call type38;
449 3 call type39;
450 3 call type40;
451 3 call type42;
452 3 ;
453 3 call type44;
454 3 call type45;
455 3 end;
456 2 if error$flag then call error;
458 2 end dis;
459 1 disem: procedure (disloc) address public;
460 2 declare disloc pointer;
461 2 declare nprefix byte;
462 2 disem$ptr = disloc;
463 2 nprefix = 0;
464 2 do while true;
465 3 mnemonic$index = instr$table (disem$byte (0) * 2);
466 3 instr$type = instr$table (disem$byte (0) * 2 + 1);
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 12
467 3 if instr$type = 0ffh and nprefix < 3 then
468 3 do;
469 4 call print$mnemonic;
470 4 nprefix = nprefix + 1;
471 4 end;
else
472 3 do;
473 4 if instr$type = 0ffh then instr$type = 1;
475 4 call dis;
476 4 return disem$offset;
477 4 end;
478 3 end;
479 2 end disem;
480 1 end disem86;
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 13
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
124 0014H 2 A. . . . . . . . . WORD 125 126 127 128
45 0004H 2 A. . . . . . . . . WORD PARAMETER AUTOMATIC 46 47 48
26 0004H 2 A. . . . . . . . . WORD PARAMETER AUTOMATIC 27 28 29 30
31
17 AHREG. . . . . . . LITERALLY
17 ALREG. . . . . . . LITERALLY 98
12 0000H 16 ALTTABLE . . . . . BYTE BASED(ALTTABLEBASE) ARRAY(16) 420 421
12 000AH 2 ALTTABLEBASE . . . WORD 12 419 420 421
12 0000H 16 ALTTABLEPTRS . . . WORD ARRAY(8) EXTERNAL(0) 419
16 AXREG. . . . . . . LITERALLY 97 335
40 0004H 1 B. . . . . . . . . BYTE PARAMETER AUTOMATIC 41 42 43
34 0004H 1 B. . . . . . . . . BYTE PARAMETER AUTOMATIC 35 36 37 38
28 0000H 1 B. . . . . . . . . BYTE BASED(A) 29 30
17 BHREG. . . . . . . LITERALLY
17 BLREG. . . . . . . LITERALLY
14 01D5H 1 BORWFLAG . . . . . BYTE 148 317 341 390 403 411 415
16 BPREG. . . . . . . LITERALLY
16 BXREG. . . . . . . LITERALLY
13 01CDH 1 BYTE1REGBITS . . . BYTE 56 222 326 337 397
20 0000H 1 C. . . . . . . . . BYTE PARAMETER 21
17 CHREG. . . . . . . LITERALLY
17 CLREG. . . . . . . LITERALLY 321
23 0002H 11 COMMA. . . . . . . PROCEDURE STACK=0006H 272 277 286 291
298 306 311 319 330 336 343 357 362 369
380 392 398 405
20 0000H CONOUT . . . . . . PROCEDURE EXTERNAL(2) STACK=0000H 24 30
37 38 71 73 92 136 138 166 177 183
188 202 205 252 260 322
2 CR . . . . . . . . LITERALLY
18 CSREG. . . . . . . LITERALLY
16 CXREG. . . . . . . LITERALLY
13 01CEH 1 DBIT . . . . . . . BYTE 61 180 269 283 303 354
17 DHREG. . . . . . . LITERALLY
16 DIREG. . . . . . . LITERALLY
414 0694H 295 DIS. . . . . . . . PROCEDURE STACK=0028H 475
459 07BBH 90 DISEM. . . . . . . PROCEDURE WORD PUBLIC STACK=0030H
1 0002H DISEM86. . . . . . PROCEDURE STACK=0000H
14 0000H 1 DISEMBYTE. . . . . BYTE BASED(DISEMPTR) ARRAY(1) 52 56 57
58 59 60 61 105 118 119 120 125 157
158 213 226 327 465 466
14 0012H 2 DISEMEND . . . . . WORD
14 000EH 2 DISEMOFFSET. . . . WORD AT 53 106 110 121 128 129 132
133 139 142 159 164 207 216 258 476
14 000EH 4 DISEMPTR . . . . . POINTER 14 52 56 57 58 59 60
61 105 109 118 119 120 125 132 137 157
158 163 213 226 257 327 462 465 466
14 0000H 2 DISEMWORD. . . . . WORD BASED(DISEMPTR) ARRAY(1) 109 132 137
163 257
459 0004H 4 DISLOC . . . . . . POINTER PARAMETER AUTOMATIC 460 462
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 14
17 DLREG. . . . . . . LITERALLY
18 DSREG. . . . . . . LITERALLY
16 DXREG. . . . . . . LITERALLY 305 312
50 0077H 26 ERROR. . . . . . . PROCEDURE STACK=0012H 457
14 01D6H 1 ERRORFLAG. . . . . BYTE 218 350 375 386 415 424 426 456
18 ESREG. . . . . . . LITERALLY
2 FALSE. . . . . . . LITERALLY 415
HIGH . . . . . . . BUILTIN 47
193 0200H 1 I. . . . . . . . . BYTE 199 200
15 0000H 512 INSTRTABLE . . . . BYTE ARRAY(512) EXTERNAL(1) 465 466
14 01D4H 1 INSTRTYPE. . . . . BYTE 417 421 423 425 466 467 473 474
11 0000H 1 LEFTBRACKET. . . . BYTE DATA 136 166
193 01FFH 1 LEN. . . . . . . . BYTE 194 195 196 198 200
2 LF . . . . . . . . LITERALLY
LOW. . . . . . . . BUILTIN 48 126
14 01D3H 1 MNEMONICINDEX. . . BYTE 195 198 419 420 465
13 01CAH 1 MODBITS. . . . . . BYTE 57 143 150 155 161 373 384
8 01BFH 5 NOPS . . . . . . . BYTE ARRAY(5) PUBLIC INITIAL
461 0202H 1 NPREFIX. . . . . . BYTE 463 467 470
9 01C4H 6 OPNIN. . . . . . . BYTE ARRAY(6) PUBLIC INITIAL 195 198
3 0018H 24 OPS2 . . . . . . . BYTE ARRAY(24) INITIAL 10
4 0030H 207 OPS3 . . . . . . . BYTE ARRAY(207) INITIAL 10
5 00FFH 100 OPS4 . . . . . . . BYTE ARRAY(100) INITIAL 10
6 0163H 80 OPS5 . . . . . . . BYTE ARRAY(80) INITIAL 10
7 01B3H 12 OPS6 . . . . . . . BYTE ARRAY(12) INITIAL 10
89 0159H 25 PRINT2REG16. . . . PROCEDURE STACK=0018H 168 169 170 171
95 0172H 26 PRINTAREG. . . . . PROCEDURE STACK=0014H 273 276 287 290
297 307 310
63 00DAH 24 PRINTBORW. . . . . PROCEDURE STACK=000CH 149
40 0045H 27 PRINTBYTE. . . . . PROCEDURE STACK=000EH 47 48 52 105
158 397
108 01B0H 20 PRINTDATA16. . . . PROCEDURE STACK=0018H 114 248 259
104 019DH 19 PRINTDATA8 . . . . PROCEDURE STACK=0012H 115 244 285 292
370
112 01C4H 20 PRINTDATA8OR16 . . PROCEDURE STACK=001CH 299 331 344 393
408
117 01D8H 45 PRINTDATASW. . . . PROCEDURE STACK=0018H 407
135 024BH 34 PRINTDIRECTADDR. . PROCEDURE STACK=0018H 152 271 278
26 000DH 25 PRINTM . . . . . . PROCEDURE PUBLIC STACK=0008H 51 65 66
192 0368H 116 PRINTMNEMONIC. . . PROCEDURE STACK=0006H 210 215 221 227
231 235 239 243 247 251 256 264 268 282
296 302 316 328 334 340 353 367 378 389
396 402 469
179 033AH 46 PRINTMODREGRM. . . PROCEDURE STACK=0020H 265
141 026DH 205 PRINTMODRM . . . . PROCEDURE STACK=001CH 184 187 240 318
342 358 361 368 381 391 399 404
34 0026H 31 PRINTNIBBLE. . . . PROCEDURE STACK=0008H 42 43
68 00F2H 41 PRINTREG . . . . . PROCEDURE STACK=000AH 77 81 102
79 012CH 17 PRINTREG16 . . . . PROCEDURE STACK=0010H 86 91 93 97
172 173 174 175 222 305 312 335 337 379
75 011BH 17 PRINTREG8. . . . . PROCEDURE STACK=0010H 87 98 321
83 013DH 28 PRINTREG8OR16. . . PROCEDURE STACK=0016H 145 182 189 329
100 018CH 17 PRINTSEGREG. . . . PROCEDURE STACK=0010H 228 356 363
131 0230H 27 PRINTSIGNED16. . . PROCEDURE STACK=0018H 236
123 0205H 43 PRINTSIGNED8 . . . PROCEDURE STACK=0018H 232
45 0060H 23 PRINTWORD. . . . . PROCEDURE PUBLIC STACK=0014H 109 119 120
128 132 137 163 261
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 15
89 0006H 1 R1 . . . . . . . . BYTE PARAMETER AUTOMATIC 90 91
89 0004H 1 R2 . . . . . . . . BYTE PARAMETER AUTOMATIC 90 93
100 0004H 1 REG. . . . . . . . BYTE PARAMETER AUTOMATIC 101 102
79 0004H 1 REG. . . . . . . . BYTE PARAMETER AUTOMATIC 80 81
75 0004H 1 REG. . . . . . . . BYTE PARAMETER AUTOMATIC 76 77
68 0004H 1 REG. . . . . . . . BYTE PARAMETER AUTOMATIC 69 70
19 01D7H 16 REG16. . . . . . . BYTE ARRAY(16) PUBLIC INITIAL 81
19 01E7H 16 REG8 . . . . . . . BYTE ARRAY(16) PUBLIC INITIAL 77
68 0006H 2 REGADD . . . . . . WORD PARAMETER AUTOMATIC 69 70
13 01CBH 1 REGBITS. . . . . . BYTE 58 182 189 326 329 348 356 363
379 397 420 421
83 0004H 1 REGNUM . . . . . . BYTE PARAMETER AUTOMATIC 84 86 87
11 0001H 1 RIGHTBRACKET . . . BYTE DATA 138 177
13 01CCH 1 RMBITS . . . . . . BYTE 59 145 150 157 167
ROL. . . . . . . . BUILTIN 118
13 01CFH 1 SBIT . . . . . . . BYTE 61 406
19 01F7H 8 SEGREG . . . . . . BYTE ARRAY(8) PUBLIC INITIAL 102
55 0091H 73 SETBITS. . . . . . PROCEDURE STACK=0006H 325 416
SHL. . . . . . . . BUILTIN 70 397
SHR. . . . . . . . BUILTIN 42 57 58 61 226 327
16 SIREG. . . . . . . LITERALLY
16 SPREG. . . . . . . LITERALLY
18 SSREG. . . . . . . LITERALLY
14 0000H 1 TABLECHAR. . . . . BYTE BASED(TABLEPTR) 71 73 202
14 000CH 2 TABLEPTR . . . . . WORD 14 70 71 72 73 198 202 203
10 0000H 10 TABPTRS. . . . . . WORD ARRAY(5) PUBLIC INITIAL 198
255 0016H 2 TEMP . . . . . . . WORD 257 261
225 0201H 1 TEMP . . . . . . . BYTE 226 228
2 TRUE . . . . . . . LITERALLY 218 317 341 347 350 375 386
390 403 411 424 426 464
209 03DCH 8 TYPE1. . . . . . . PROCEDURE STACK=000AH 427
242 0451H 11 TYPE10 . . . . . . PROCEDURE STACK=0016H 434
246 045CH 11 TYPE11 . . . . . . PROCEDURE STACK=001CH 435
250 0467H 14 TYPE12 . . . . . . PROCEDURE STACK=000AH 436
254 0475H 39 TYPE13 . . . . . . PROCEDURE STACK=001CH 437
263 049CH 11 TYPE14 . . . . . . PROCEDURE STACK=0024H 438
267 04A7H 35 TYPE18 . . . . . . PROCEDURE STACK=001CH 439
212 03E4H 30 TYPE2. . . . . . . PROCEDURE STACK=000AH 428
281 04CAH 35 TYPE22 . . . . . . PROCEDURE STACK=0018H 440
295 04EDH 17 TYPE23 . . . . . . PROCEDURE STACK=0020H 441
301 04FEH 41 TYPE25 . . . . . . PROCEDURE STACK=0018H 442
315 0527H 40 TYPE27 . . . . . . PROCEDURE STACK=0020H 443
220 0402H 15 TYPE3. . . . . . . PROCEDURE STACK=0014H 429
324 054FH 46 TYPE31 . . . . . . PROCEDURE STACK=0020H 444
333 057DH 24 TYPE33 . . . . . . PROCEDURE STACK=0014H 445
339 0595H 22 TYPE34 . . . . . . PROCEDURE STACK=0020H 446
346 05ABH 62 TYPE36 . . . . . . PROCEDURE STACK=0020H 447
366 05E9H 17 TYPE38 . . . . . . PROCEDURE STACK=0020H 448
372 05FAH 35 TYPE39 . . . . . . PROCEDURE STACK=0020H 449
224 0411H 31 TYPE4. . . . . . . PROCEDURE STACK=0014H 430
383 061DH 36 TYPE40 . . . . . . PROCEDURE STACK=0020H 450
395 0641H 29 TYPE42 . . . . . . PROCEDURE STACK=0020H 451
401 065EH 41 TYPE44 . . . . . . PROCEDURE STACK=0020H 453
410 0687H 13 TYPE45 . . . . . . PROCEDURE STACK=0024H 454
230 0430H 11 TYPE5. . . . . . . PROCEDURE STACK=001CH 431
234 043BH 11 TYPE6. . . . . . . PROCEDURE STACK=001CH 432
PL/M-86 COMPILER 8086 DISASSEMBLER 5/14/81 PAGE 16
238 0446H 11 TYPE8. . . . . . . PROCEDURE STACK=0020H 412 433
13 01D0H 1 VBIT . . . . . . . BYTE 61 320
13 01D1H 1 WBIT . . . . . . . BYTE 60 64 85 96 113 327 347 406
13 01D2H 1 ZBIT . . . . . . . BYTE 60
MODULE INFORMATION:
CODE AREA SIZE = 0815H 2069D
CONSTANT AREA SIZE = 0016H 22D
VARIABLE AREA SIZE = 0203H 515D
MAXIMUM STACK SIZE = 0030H 48D
636 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION

View File

@@ -0,0 +1,595 @@
$title('8086 disassembler')
$date(5/14/81)
$compact
$optimize(2)
disem86: do;
declare
cr literally '0dh',
lf literally '0ah',
true literally '1',
false literally '0';
$include(optab.dat)
declare
tab$ptrs (5) address public initial (.ops2, .ops3, .ops4, .ops5, .ops6);
declare
left$bracket byte data ('['),
right$bracket byte data (']');
declare
alt$table$base address,
alt$table based alt$table$base (16) byte,
alt$table$ptrs (8) address external;
declare
mod$bits byte,
reg$bits byte,
rm$bits byte,
byte1$reg$bits byte,
d$bit byte,
s$bit byte,
v$bit byte,
w$bit byte,
z$bit byte;
declare
mnemonic$index byte, /* index into opcodes */
instr$type byte,
table$ptr address,
table$char based table$ptr byte,
disem$ptr pointer,
disem$offset address at (.disem$ptr),
disem$end address,
disem$byte based disem$ptr (1) byte,
disem$word based disem$ptr (1) address,
b$or$w$flag byte,
error$flag byte;
declare instr$table (512) byte external;
declare
ax$reg literally '0',
cx$reg literally '1',
dx$reg literally '2',
bx$reg literally '3',
sp$reg literally '4',
bp$reg literally '5',
si$reg literally '6',
di$reg literally '7';
declare
al$reg literally '0',
cl$reg literally '1',
dl$reg literally '2',
bl$reg literally '3',
ah$reg literally '4',
ch$reg literally '5',
dh$reg literally '6',
bh$reg literally '7';
declare
es$reg literally '0',
cs$reg literally '1',
ss$reg literally '2',
ds$reg literally '3';
declare
reg16 (*) byte public initial ('AX', 'CX', 'DX', 'BX', 'SP', 'BP', 'SI', 'DI'),
reg8 (*) byte public initial ('AL', 'CL', 'DL', 'BL', 'AH', 'CH', 'DH', 'BH'),
segreg (*) byte public initial ('ES', 'CS', 'SS', 'DS');
conout: procedure (c) external;
declare c byte;
end conout;
comma: procedure;
call conout (',');
end comma;
printm: procedure (a) PUBLIC;
declare a address;
declare b based a byte;
do while b <> '$';
call conout (b);
a = a + 1;
end;
end printm;
print$nibble: procedure (b);
declare b byte;
if b > 9 then call conout (b - 10 + 'A');
else call conout (b + '0');
end print$nibble;
print$byte: procedure (b);
declare b byte;
call print$nibble (shr (b, 4));
call print$nibble (b and 0fh);
end print$byte;
print$word: procedure (a) public;
declare a address;
call print$byte (high (a));
call print$byte (low (a));
end print$word;
error: procedure;
call printm (.('??= $'));
call print$byte (disem$byte (0));
disem$offset = disem$offset + 1;
end error;
set$bits: procedure;
byte1$reg$bits = disem$byte (0) and 7;
mod$bits = shr (disem$byte (1), 6);
reg$bits = shr (disem$byte (1), 3) and 7;
rm$bits = disem$byte (1) and 7;
w$bit, z$bit = disem$byte (0) and 1;
d$bit, s$bit, v$bit = shr (disem$byte (0), 1) and 1;
end set$bits;
print$b$or$w: procedure;
if w$bit then call printm (.('WORD $'));
else call printm (.('BYTE $'));
end print$b$or$w;
print$reg: procedure (reg$add, reg);
declare reg$add address, reg byte;
table$ptr = reg$add + shl (reg, 1);
call conout (table$char);
table$ptr = table$ptr + 1;
call conout (table$char);
end print$reg;
print$reg8: procedure (reg);
declare reg byte;
call print$reg (.reg8, reg);
end print$reg8;
print$reg16: procedure (reg);
declare reg byte;
call print$reg (.reg16, reg);
end print$reg16;
print$reg$8$or$16: procedure (reg$num);
declare reg$num byte;
if w$bit then call print$reg$16 (reg$num);
else call print$reg$8 (reg$num);
end print$reg$8$or$16;
print$2$reg$16: procedure (r1, r2);
declare (r1, r2) byte;
call print$reg$16 (r1);
call conout ('+');
call print$reg$16 (r2);
end print$2$reg$16;
print$A$reg: procedure;
if w$bit then call print$reg$16 (ax$reg);
else call print$reg$8 (al$reg);
end print$A$reg;
print$seg$reg: procedure (reg);
declare reg byte;
call print$reg (.seg$reg, reg);
end print$seg$reg;
print$data$8: procedure;
call print$byte (disem$byte (0));
disem$offset = disem$offset + 1;
end print$data$8;
print$data$16: procedure;
call print$word (disem$word (0));
disem$offset = disem$offset + 2;
end print$data$16;
print$data$8$or$16: procedure;
if w$bit then call print$data$16;
else call print$data$8;
end print$data$8$or$16;
print$data$sw: procedure;
if rol (disem$byte (0), 1) then call print$word (0ff00h or disem$byte (0));
else call print$word (disem$byte (0));
disem$offset = disem$offset + 1;
end print$data$sw;
print$signed$8: procedure;
declare a address;
a = disem$byte (0);
if low (a) >= 80h then a = a or 0ff00h; /* sign extend to 16 bits */
call print$word (disem$offset + a + 1);
disem$offset = disem$offset + 1;
end print$signed$8;
print$signed$16: procedure;
call print$word (disem$offset + disem$word (0) + 2);
disem$offset = disem$offset + 2;
end print$signed$16;
print$direct$addr: procedure;
call conout (left$bracket);
call print$word (disem$word (0));
call conout (right$bracket);
disem$offset = disem$offset + 2;
end print$direct$addr;
print$mod$rm: procedure;
disem$offset = disem$offset + 1; /* point past mod/reg/rm byte */
if mod$bits = 3 then
do;
call print$reg$8$or$16 (rm$bits);
return;
end;
if b$or$w$flag then call print$b$or$w;
if rm$bits = 6 and mod$bits = 0 then
do;
call print$direct$addr;
return;
end;
if mod$bits = 1 then
do;
if (rm$bits <> 6) or (disem$byte (0) <> 0)
then call print$byte (disem$byte (0));
disem$offset = disem$offset + 1;
end;
else if mod$bits = 2 then
do;
call print$word (disem$word (0));
disem$offset = disem$offset + 2;
end;
call conout (left$bracket);
do case rm$bits;
call print$2$reg$16 (3, 6);
call print$2$reg$16 (3, 7);
call print$2$reg$16 (5, 6);
call print$2$reg$16 (5, 7);
call print$reg$16 (6);
call print$reg$16 (7);
call print$reg$16 (5);
call print$reg$16 (3);
end;
call conout (right$bracket);
end print$mod$rm;
print$mod$reg$rm: procedure;
if d$bit then
do;
call print$reg$8$or$16 (reg$bits);
call conout (',');
call print$mod$rm;
end;
else
do;
call print$mod$rm;
call conout (',');
call print$reg$8$or$16 (reg$bits);
end;
end print$mod$reg$rm;
print$mnemonic: procedure;
declare (len, i) byte;
len = 2;
do while mnemonic$index >= opn$in (len - 1);
len = len + 1;
end;
table$ptr = tab$ptrs (len - 2) + (mnemonic$index - opn$in (len - 2))
* len;
do i = 1 to 7;
if i <= len then
do;
call conout (table$char);
table$ptr = table$ptr + 1;
end;
else call conout (' ');
end;
disem$offset = disem$offset + 1;
end print$mnemonic;
type1: procedure;
call print$mnemonic;
end type1;
type2: procedure;
if disem$byte (1) = 0ah then
do;
call print$mnemonic;
disem$offset = disem$offset + 1;
end;
else error$flag = true;
end type2;
type3: procedure;
call print$mnemonic;
call print$reg$16 (byte1$reg$bits);
end type3;
type4: procedure;
declare temp byte;
temp = shr (disem$byte (0), 3) and 3;
call print$mnemonic;
call print$segreg (temp);
end type4;
type5: procedure;
call print$mnemonic;
call print$signed$8;
end type5;
type6: procedure;
call print$mnemonic;
call print$signed$16;
end type6;
type8: procedure; /* 7, 9 */
call print$mnemonic;
call print$mod$rm;
end type8;
type10: procedure;
call print$mnemonic;
call print$data$8;
end type10;
type11: procedure;
call print$mnemonic;
call print$data$16;
end type11;
type12: procedure;
call print$mnemonic;
call conout ('3');
end type12;
type13: procedure;
declare temp address;
call print$mnemonic;
temp = disem$word (0);
disem$offset = disem$offset + 2;
call print$data$16;
call conout (':');
call print$word (temp);
end type13;
type14: procedure; /* 15, 16, 17 */
call print$mnemonic;
call print$mod$reg$rm;
end type14;
type18: procedure; /* 19, 20, 21 */
call print$mnemonic;
if d$bit then
do;
call print$direct$addr;
call comma;
call print$A$reg;
end;
else
do;
call print$A$reg;
call comma;
call print$direct$addr;
end;
end type18;
type22: procedure;
call print$mnemonic;
if d$bit then
do;
call print$data$8;
call comma;
call print$A$reg;
end;
else
do;
call print$A$reg;
call comma;
call print$data$8;
end;
end type22;
type23: procedure; /* 24 */
call print$mnemonic;
call print$A$reg;
call comma;
call print$data$8$or$16;
end type23;
type25: procedure; /* 26 */
call print$mnemonic;
if d$bit then
do;
call print$reg$16 (dx$reg);
call comma;
call print$A$reg;
end;
else
do;
call print$A$reg;
call comma;
call print$reg$16 (dx$reg);
end;
end type25;
type27: procedure; /* 28, 29, 30 */
call print$mnemonic;
b$or$w$flag = true;
call print$mod$rm;
call comma;
if v$bit then call print$reg$8 (cl$reg);
else call conout ('1');
end type27;
type31: procedure; /* 32 */
call setbits;
reg$bits = byte1$reg$bits;
w$bit = shr (disem$byte (0), 3) and 1;
call print$mnemonic;
call print$reg$8$or$16 (reg$bits);
call comma;
call print$data$8$or$16;
end type31;
type33: procedure;
call print$mnemonic;
call print$reg$16 (ax$reg);
call comma;
call print$reg$16 (byte1$reg$bits);
end type33;
type34: procedure; /* 35 */
call print$mnemonic;
b$or$w$flag = true;
call print$mod$rm;
call comma;
call print$data$8$or$16;
end type34;
type36: procedure; /* 37 */
w$bit = true; /* force 16 bit reg, mem */
if reg$bits > 3 then
do;
error$flag = true;
return;
end;
call print$mnemonic;
if d$bit then
do;
call print$seg$reg (reg$bits);
call comma;
call print$mod$rm;
end;
else
do;
call print$mod$rm;
call comma;
call print$seg$reg (reg$bits);
end;
end type36;
type38: procedure;
call print$mnemonic;
call print$mod$rm;
call comma;
call print$data$8;
end type38;
type39: procedure;
if mod$bits = 3 then
do;
error$flag = true;
return;
end;
call print$mnemonic;
call print$reg$16 (reg$bits);
call comma;
call print$mod$rm;
end type39;
type40: procedure; /* 41 */
if mod$bits = 3 then
do;
error$flag = true;
return;
end;
call print$mnemonic;
b$or$w$flag = true;
call print$mod$rm;
call comma;
call print$data$8$or$16;
end type40;
type42: procedure;
call print$mnemonic;
call print$byte (shl (byte1$reg$bits, 3) or reg$bits);
call comma;
call print$mod$rm;
end type42;
type44: procedure;
call print$mnemonic;
b$or$w$flag = true;
call print$modrm;
call comma;
if s$bit = 1 and w$bit = 1 then call print$data$sw;
else call print$data$8$or$16;
end type44;
type45: procedure;
b$or$w$flag = true;
call type8;
end type45;
dis: procedure;
error$flag, b$or$w$flag = false;
call set$bits;
if instr$type = 26 then
do;
alt$table$base = alt$table$ptrs (mnemonic$index);
mnemonic$index = alt$table (reg$bits * 2);
instr$type = alt$table (reg$bits * 2 + 1);
end;
if instr$type > 28 then error$flag = true;
else
do case instr$type;
error$flag = true;
call type1;
call type2;
call type3;
call type4;
call type5;
call type6;
call type8;
call type10;
call type11;
call type12;
call type13;
call type14;
call type18;
call type22;
call type23;
call type25;
call type27;
call type31;
call type33;
call type34;
call type36;
call type38;
call type39;
call type40;
call type42;
;
call type44;
call type45;
end;
if error$flag then call error;
end dis;
disem: procedure (disloc) address public;
declare disloc pointer;
declare nprefix byte;
disem$ptr = disloc;
nprefix = 0;
do while true;
mnemonic$index = instr$table (disem$byte (0) * 2);
instr$type = instr$table (disem$byte (0) * 2 + 1);
if instr$type = 0ffh and nprefix < 3 then
do;
call print$mnemonic;
nprefix = nprefix + 1;
end;
else
do;
if instr$type = 0ffh then instr$type = 1;
call dis;
return disem$offset;
end;
end;
end disem;
end disem86;

View File

@@ -0,0 +1,61 @@
MCS-86 ASSEMBLER DISLNK86 PAGE 1
ISIS-II MCS-86 ASSEMBLER V1.0 ASSEMBLY OF MODULE DISLNK86
OBJECT MODULE PLACED IN DISLNK86.OBJ
ASSEMBLER INVOKED BY: ASM86 DISLNK86.ASM DEBUG
LOC OBJ LINE SOURCE
1 ; transient interface module for 8086
2 ; JULY, 1980
3 dgroup group dats
---- 4 dats segment public 'DATS'
0000 3F 5 db '?'
---- 6 dats ends
7 cgroup group code
8 extrn disem:near
9 public boot
10 public conin,conout
---- 11 code segment public 'CODE'
12 assume cs:cgroup
0000 13 disent proc
1400 14 org 1400h
1400 E90000 E 15 jmp disem
16 disent endp
1403 17 boot proc
1403 C3 18 ret
19 boot endp
1404 20 conin proc
1404 E9FCEC 21 jmp $-1301h
22 conin endp
1407 23 conout proc
1407 E9FCEC 24 jmp $-1301h
25 conout endp
---- 26 code ends
27 end
MCS-86 ASSEMBLER DISLNK86 PAGE 2
SYMBOL TABLE LISTING
------ ----- -------
NAME TYPE VALUE ATTRIBUTES
BOOT. . L NEAR 1403H CODE PUBLIC
CGROUP. GROUP CODE
CODE. . SEGMENT SIZE=140AH PARA PUBLIC 'CODE'
CONIN . L NEAR 1404H CODE PUBLIC
CONOUT. L NEAR 1407H CODE PUBLIC
DATS. . SEGMENT SIZE=0001H PARA PUBLIC 'DATS'
DGROUP. GROUP DATS
DISEM . L NEAR 0000H EXTRN
DISENT. L NEAR 0000H CODE
ASSEMBLY COMPLETE, NO ERRORS FOUND

View File

@@ -0,0 +1,122 @@
gentab: proc options (main);
/* generate tables for 8086 disassembler 12/23/80 */
/* modified 5/14/81 */
declare
opcnt (2:6) fixed (7) static initial (0,0,0,0,0),
sum fixed (7),
len fixed (7),
line char (100) varying,
infile file,
outfile file,
litfile file,
opcode char (10) varying,
i fixed (7),
j fixed (15),
n fixed (7),
count fixed (15),
chars (200) char (6) varying;
open file (infile) input stream title ('OP86.DAT');
open file (outfile) print title ('OPTAB.DAT');
open file (litfile) print title ('OPTAB.LIT');
on endpage (outfile) begin; end;
on endpage (litfile) begin; end;
count = 0;
/* read op86.dat file into chars array */
get file (infile) list (opcode);
do while (opcode ^= '$');
count = count + 1;
chars (count) = opcode;
get file (infile) list (opcode);
end;
/* create ascii opcode tables, 1 for each character length */
do i = 2 to 6;
line = 'declare ops' || deblank (i) || ' (*) byte initial (';
n = 0;
do j = 1 to count;
if length (chars (j)) = i then
do;
if n > 0 then line = line || ', ';
if divide (n, 5, 7) * 5 = n then
do;
put file (outfile) skip list (line);
line = '^I';
end;
n = n + 1;
line = line || '''' || chars (j) || '''';
opcnt (i) = opcnt (i) + 1;
end;
end;
line = line || ');';
put file (outfile) skip list (line);
put file (outfile) skip;
end;
/* create array containing # of opcodes of each length */
line = 'declare nops (5) byte public initial (';
do i = 2 to 6;
line = line || deblank (opcnt (i));
if i < 6 then line = line || ', ';
end;
put file (outfile) skip list (line || ');');
put file (outfile) skip;
/* create array containing starting index for each opcode length */
line = 'declare opn$in (*) byte public initial (';
sum = 0;
do i = 2 to 6;
line = line || deblank (sum) || ', ';
sum = sum + opcnt (i);
end;
put file (outfile) skip list (line || '255);');
/* create literals for starting indexes for each opcode length */
sum = 0;
put file (litfile) skip list ('declare');
do i = 2 to 6;
put skip list (deblank (opcnt (i)), deblank (i) || '-character opcodes');
line = '^I' || 'op' || deblank (i) ||
'$in literally ''' || deblank (sum) || '''';
if i = 6 then line = line || ';';
else line = line || ',';
put file (litfile) skip list (line);
sum = sum + opcnt (i);
opcnt (i) = 0;
end;
/* create literals for position in opcode tables of each opcode */
put file (litfile) skip;
put file (litfile) skip list ('declare');
do j = 1 to count;
len = length (chars (j));
if index (chars (j), ':') > 0 then
chars (j) = substr (chars (j), 1, len-1);
line = '^I' || chars (j) || '$in literally '''
|| 'op' || deblank (len) || '$in + '
|| deblank (opcnt (len)) || '''';
if j = count then line = line || ';';
else line = line || ',';
put file (litfile) skip list (line);
opcnt (len) = opcnt (len) + 1;
end;
deblank: proc (i) returns (char (10) varying);
declare i fixed (7);
declare temp char (10) varying;
temp = char (i);
return (substr (temp, verify (temp, ' ')));
end deblank;
end gentab;

View File

@@ -0,0 +1,141 @@
PL/I-80 V1.3 COMPILATION OF: GENTAB
D: Disk Print
L: List Source Program
NO ERROR(S) IN PASS 1
NO ERROR(S) IN PASS 2
PL/I-80 V1.3 COMPILATION OF: GENTAB
1 a 0000 gentab: proc options (main);
2 a 0006
3 a 0006 /* generate tables for 8086 disassembler 12/23/80 */
4 a 0006 /* modified 5/14/81 */
5 a 0006
6 c 0006 declare
7 c 0006 opcnt (2:6) fixed (7) static initial (0,0,0,0,0),
8 c 0006 sum fixed (7),
9 c 0006 len fixed (7),
10 c 0006 line char (100) varying,
11 c 0006 infile file,
12 c 0006 outfile file,
13 c 0006 litfile file,
14 c 0006 opcode char (10) varying,
15 c 0006 i fixed (7),
16 c 0006 j fixed (15),
17 c 0006 n fixed (7),
18 c 0006 count fixed (15),
19 c 0006 chars (200) char (6) varying;
20 c 0006
21 c 0006 open file (infile) input stream title ('OP86.DAT');
22 c 0022 open file (outfile) print title ('OPTAB.DAT');
23 c 003E open file (litfile) print title ('OPTAB.LIT');
24 c 005A
25 c 005A on endpage (outfile) begin; end;
26 c 0065 on endpage (litfile) begin; end;
27 d 0071
28 c 0071 count = 0;
29 c 0078
30 c 0078 /* read op86.dat file into chars array */
31 c 0078
32 c 0078 get file (infile) list (opcode);
33 c 0095 do while (opcode ^= '$');
34 c 00A3 count = count + 1;
35 c 00AA chars (count) = opcode;
36 c 00C1 get file (infile) list (opcode);
37 c 00E1 end;
38 c 00E1
39 c 00E1 /* create ascii opcode tables, 1 for each character length */
40 c 00E1
41 c 00E1 do i = 2 to 6;
42 c 00F6 line = 'declare ops' || deblank (i) || ' (*) byte initial (';
43 c 0118 n = 0;
44 c 011C do j = 1 to count;
45 c 0135 if length (chars (j)) = i then
46 c 0158 do;
47 c 0158 if n > 0 then line = line || ', ';
48 c 016F if divide (n, 5, 7) * 5 = n then
49 c 019D do;
50 c 019D put file (outfile) skip list (line);
51 c 01BA line = '^I';
52 c 01C7 end;
53 c 01C7 n = n + 1;
54 c 01CB line = line || '''' || chars (j) || '''';
55 c 0203 opcnt (i) = opcnt (i) + 1;
56 c 021B end;
57 c 021B end;
58 c 021B line = line || ');';
59 c 022A put file (outfile) skip list (line);
60 c 0247 put file (outfile) skip;
61 c 0262 end;
62 c 0262
63 c 0262 /* create array containing # of opcodes of each length */
64 c 0262
65 c 0262 line = 'declare nops (5) byte public initial (';
66 c 026F do i = 2 to 6;
67 c 0284 line = line || deblank (opcnt (i));
68 c 02A2 if i < 6 then line = line || ', ';
69 c 02C8 end;
70 c 02C8 put file (outfile) skip list (line || ');');
71 c 02ED put file (outfile) skip;
72 c 0301
73 c 0301 /* create array containing starting index for each opcode length */
74 c 0301
75 c 0301 line = 'declare opn$in (*) byte public initial (';
76 c 030E sum = 0;
77 c 0312 do i = 2 to 6;
78 c 0327 line = line || deblank (sum) || ', ';
79 c 0347 sum = sum + opcnt (i);
80 c 0363 end;
81 c 0363 put file (outfile) skip list (line || '255);');
82 c 0388
83 c 0388 /* create literals for starting indexes for each opcode length */
84 c 0388
85 c 0388 sum = 0;
86 c 038C put file (litfile) skip list ('declare');
87 c 03AB do i = 2 to 6;
88 c 03C0 put skip list (deblank (opcnt (i)), deblank (i) || '-character opcodes');
89 c 03FF line = '^I' || 'op' || deblank (i) ||
90 c 0443 '$in literally ''' || deblank (sum) || '''';
91 c 0443 if i = 6 then line = line || ';';
92 c 045D else line = line || ',';
93 c 046C put file (litfile) skip list (line);
94 c 0489 sum = sum + opcnt (i);
95 c 049E opcnt (i) = 0;
96 c 04B4 end;
97 c 04B4
98 c 04B4 /* create literals for position in opcode tables of each opcode */
99 c 04B4
100 c 04B4 put file (litfile) skip;
101 c 04C8 put file (litfile) skip list ('declare');
102 c 04E7 do j = 1 to count;
103 c 0500 len = length (chars (j));
104 c 0516 if index (chars (j), ':') > 0 then
105 c 0534 chars (j) = substr (chars (j), 1, len-1);
106 c 056B line = '^I' || chars (j) || '$in literally '''
107 c 05E1 || 'op' || deblank (len) || '$in + '
108 c 05E1 || deblank (opcnt (len)) || '''';
109 c 05E1 if j = count then line = line || ';';
110 c 0603 else line = line || ',';
111 c 0612 put file (litfile) skip list (line);
112 c 062F opcnt (len) = opcnt (len) + 1;
113 c 0647 end;
114 c 0647
115 c 0647 deblank: proc (i) returns (char (10) varying);
116 e 0647 declare i fixed (7);
117 e 0651 declare temp char (10) varying;
118 e 0651 temp = char (i);
119 e 0666 return (substr (temp, verify (temp, ' ')));
120 c 0687 end deblank;
121 c 0687
122 a 0687 end gentab;
CODE SIZE = 068A
DATA AREA = 06DE
FREE SYMS = 1262
END COMPILATION

View File

@@ -0,0 +1,827 @@
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE INSTR86
OBJECT MODULE PLACED IN INS86.OBJ
COMPILER INVOKED BY: PLM86 INS86.PLM DEBUG PAGEWIDTH(100) XREF
$title('instruction table for 8086 disassembler')
$date(10/5/80)
1 instr86: do;
2 1 declare
qq$in literally '0',
alt1 literally '0',
alt2 literally '1',
alt3 literally '2',
alt4 literally '3',
alt5 literally '4',
alt6 literally '5',
alt7 literally '6',
alt8 literally '7';
$include(optab.lit)
=
3 1 = declare
= op2$in literally '0',
= op3$in literally '12',
= op4$in literally '81',
= op5$in literally '106',
= op6$in literally '122';
=
4 1 = declare
= AAA$in literally 'op3$in + 0',
= AAD$in literally 'op3$in + 1',
= AAM$in literally 'op3$in + 2',
= AAS$in literally 'op3$in + 3',
= ADC$in literally 'op3$in + 4',
= ADD$in literally 'op3$in + 5',
= AND$in literally 'op3$in + 6',
= CALL$in literally 'op4$in + 0',
= CALLF$in literally 'op5$in + 0',
= CBW$in literally 'op3$in + 7',
= CLC$in literally 'op3$in + 8',
= CLD$in literally 'op3$in + 9',
= CLI$in literally 'op3$in + 10',
= CMC$in literally 'op3$in + 11',
= CMP$in literally 'op3$in + 12',
= CMPSB$in literally 'op5$in + 1',
= CMPSW$in literally 'op5$in + 2',
= CS$in literally 'op3$in + 13',
= CWD$in literally 'op3$in + 14',
= DAA$in literally 'op3$in + 15',
= DAS$in literally 'op3$in + 16',
= DEC$in literally 'op3$in + 17',
= DIV$in literally 'op3$in + 18',
= DS$in literally 'op3$in + 19',
= ES$in literally 'op3$in + 20',
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 2
= ESC$in literally 'op3$in + 21',
= HLT$in literally 'op3$in + 22',
= IDIV$in literally 'op4$in + 1',
= IMUL$in literally 'op4$in + 2',
= IN$in literally 'op2$in + 0',
= INC$in literally 'op3$in + 23',
= INT$in literally 'op3$in + 24',
= INTO$in literally 'op4$in + 3',
= IRET$in literally 'op4$in + 4',
= JA$in literally 'op2$in + 1',
= JAE$in literally 'op3$in + 25',
= JB$in literally 'op2$in + 2',
= JBE$in literally 'op3$in + 26',
= JC$in literally 'op2$in + 3',
= JCXZ$in literally 'op4$in + 5',
= JE$in literally 'op2$in + 4',
= JG$in literally 'op2$in + 5',
= JGE$in literally 'op3$in + 27',
= JL$in literally 'op2$in + 6',
= JLE$in literally 'op3$in + 28',
= JMP$in literally 'op3$in + 29',
= JMPF$in literally 'op4$in + 6',
= JMPS$in literally 'op4$in + 7',
= JNA$in literally 'op3$in + 30',
= JNAE$in literally 'op4$in + 8',
= JNB$in literally 'op3$in + 31',
= JNBE$in literally 'op4$in + 9',
= JNC$in literally 'op3$in + 32',
= JNE$in literally 'op3$in + 33',
= JNG$in literally 'op3$in + 34',
= JNGE$in literally 'op4$in + 10',
= JNL$in literally 'op3$in + 35',
= JNLE$in literally 'op4$in + 11',
= JNO$in literally 'op3$in + 36',
= JNP$in literally 'op3$in + 37',
= JNS$in literally 'op3$in + 38',
= JNZ$in literally 'op3$in + 39',
= JO$in literally 'op2$in + 7',
= JP$in literally 'op2$in + 8',
= JPE$in literally 'op3$in + 40',
= JPO$in literally 'op3$in + 41',
= JS$in literally 'op2$in + 9',
= JZ$in literally 'op2$in + 10',
= LAHF$in literally 'op4$in + 12',
= LDS$in literally 'op3$in + 42',
= LEA$in literally 'op3$in + 43',
= LES$in literally 'op3$in + 44',
= LOCK$in literally 'op4$in + 13',
= LODSB$in literally 'op5$in + 3',
= LODSW$in literally 'op5$in + 4',
= LOOP$in literally 'op4$in + 14',
= LOOPE$in literally 'op5$in + 5',
= LOOPNE$in literally 'op6$in + 0',
= LOOPNZ$in literally 'op6$in + 1',
= LOOPZ$in literally 'op5$in + 6',
= MOV$in literally 'op3$in + 45',
= MOVSB$in literally 'op5$in + 7',
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 3
= MOVSW$in literally 'op5$in + 8',
= MUL$in literally 'op3$in + 46',
= NEG$in literally 'op3$in + 47',
= NOP$in literally 'op3$in + 48',
= NOT$in literally 'op3$in + 49',
= OR$in literally 'op2$in + 11',
= OUT$in literally 'op3$in + 50',
= POP$in literally 'op3$in + 51',
= POPF$in literally 'op4$in + 15',
= PUSH$in literally 'op4$in + 16',
= PUSHF$in literally 'op5$in + 9',
= RCL$in literally 'op3$in + 52',
= RCR$in literally 'op3$in + 53',
= REP$in literally 'op3$in + 54',
= REPE$in literally 'op4$in + 17',
= REPNE$in literally 'op5$in + 10',
= REPNZ$in literally 'op5$in + 11',
= REPZ$in literally 'op4$in + 18',
= RET$in literally 'op3$in + 55',
= RETF$in literally 'op4$in + 19',
= ROL$in literally 'op3$in + 56',
= ROR$in literally 'op3$in + 57',
= SAHF$in literally 'op4$in + 20',
= SAL$in literally 'op3$in + 58',
= SAR$in literally 'op3$in + 59',
= SBB$in literally 'op3$in + 60',
= SCASB$in literally 'op5$in + 12',
= SCASW$in literally 'op5$in + 13',
= SHL$in literally 'op3$in + 61',
= SHR$in literally 'op3$in + 62',
= SS$in literally 'op3$in + 63',
= STC$in literally 'op3$in + 64',
= STD$in literally 'op3$in + 65',
= STI$in literally 'op3$in + 66',
= STOSB$in literally 'op5$in + 14',
= STOSW$in literally 'op5$in + 15',
= SUB$in literally 'op3$in + 67',
= TEST$in literally 'op4$in + 21',
= WAIT$in literally 'op4$in + 22',
= XCHG$in literally 'op4$in + 23',
= XLAT$in literally 'op4$in + 24',
= XOR$in literally 'op3$in + 68';
5 1 declare
type$0 literally '0',
type$1 literally '1',
type$2 literally '2',
type$3 literally '3',
type$4 literally '4',
type$5 literally '5',
type$6 literally '6',
type$7 literally '7',
type$8 literally '7',
type$9 literally '7',
type$10 literally '8',
type$11 literally '9',
type$12 literally '10',
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 4
type$13 literally '11',
type$14 literally '12',
type$15 literally '12',
type$16 literally '12',
type$17 literally '12',
type$18 literally '13',
type$19 literally '13',
type$20 literally '13',
type$21 literally '13',
type$22 literally '14',
type$23 literally '15',
type$24 literally '15',
type$25 literally '16',
type$26 literally '16',
type$27 literally '17',
type$28 literally '17',
type$29 literally '17',
type$30 literally '17',
type$31 literally '18',
type$32 literally '18',
type$33 literally '19',
type$34 literally '20',
type$35 literally '20',
type$36 literally '21',
type$37 literally '21',
type$38 literally '22',
type$39 literally '23',
type$40 literally '24',
type$41 literally '24',
type$42 literally '25',
type$43 literally '26',
type$44 literally '27',
type$45 literally '28';
6 1 declare
prefix$type literally '0ffh';
7 1 declare alt$table$ptrs (8) address public data (
.alt$1$tab,
.alt$2$tab,
.alt$3$tab,
.alt$4$tab,
.alt$5$tab,
.alt$6$tab,
.alt$7$tab,
.alt$8$tab);
8 1 declare alt$1$tab (*) byte data (
add$in, type$44,
or$in, type$34,
adc$in, type$44,
sbb$in, type$44,
and$in, type$34,
sub$in, type$44,
xor$in, type$34,
cmp$in, type$44);
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 5
9 1 declare alt$2$tab (*) byte data (
add$in, type$44,
qq$in, type$0,
adc$in, type$44,
sbb$in, type$44,
qq$in, type$0,
sub$in, type$44,
qq$in, type$0,
cmp$in, type$44);
10 1 declare alt$3$tab (*) byte data (
add$in, type$38,
qq$in, type$0,
adc$in, type$38,
sbb$in, type$38,
qq$in, type$0,
sub$in, type$38,
qq$in, type$0,
cmp$in, type$38);
11 1 declare alt$4$tab (*) byte data (
rol$in, type$29,
ror$in, type$29,
rcl$in, type$29,
rcr$in, type$29,
shl$in, type$29,
shr$in, type$29,
qq$in, type$0,
sar$in, type$29);
12 1 declare alt$5$tab (*) byte data (
rol$in, type$27,
ror$in, type$27,
rcl$in, type$27,
rcr$in, type$27,
shl$in, type$27,
shr$in, type$27,
qq$in, type$0,
sar$in, type$27);
13 1 declare alt$6$tab (*) byte data (
test$in, type$34,
qq$in, type$0,
not$in, type$45,
neg$in, type$45,
mul$in, type$45,
imul$in, type$45,
div$in, type$45,
idiv$in, type$45);
14 1 declare alt$7$tab (*) byte data (
inc$in, type$45,
dec$in, type$45,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 6
qq$in, type$0,
qq$in, type$0);
15 1 declare alt$8$tab (*) byte data (
inc$in, type$45,
dec$in, type$45,
call$in, type$9,
callf$in, type$7,
jmp$in, type$9,
jmpf$in, type$7,
push$in, type$7,
qq$in, type$0);
/*
instruction table for 8086 disassembler
instruction is index into table
there are 2 bytes per instruction:
1. index into ascii opcode table
2. instruction type (how many operands of what type, etc.)
*/
16 1 declare instr$table (512) byte public data (
add$in, type$14, /* 0 */
add$in, type$15,
add$in, type$16,
add$in, type$17,
add$in, type$23,
add$in, type$24,
push$in, type$4,
pop$in, type$4,
or$in, type$14,
or$in, type$15,
or$in, type$16,
or$in, type$17,
or$in, type$23,
or$in, type$24,
push$in, type$4,
qq$in, type$0,
adc$in, type$14, /* 10 */
adc$in, type$15,
adc$in, type$16,
adc$in, type$17,
adc$in, type$23,
adc$in, type$24,
push$in, type$4,
pop$in, type$4,
sbb$in, type$14,
sbb$in, type$15,
sbb$in, type$16,
sbb$in, type$17,
sbb$in, type$23,
sbb$in, type$24,
push$in, type$4,
pop$in, type$4,
and$in, type$14, /* 20 */
and$in, type$15,
and$in, type$16,
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 7
and$in, type$17,
and$in, type$23,
and$in, type$24,
es$in, prefix$type,
daa$in, type$1,
sub$in, type$14,
sub$in, type$15,
sub$in, type$16,
sub$in, type$17,
sub$in, type$23,
sub$in, type$24,
cs$in, prefix$type,
das$in, type$1,
xor$in, type$14, /* 30 */
xor$in, type$15,
xor$in, type$16,
xor$in, type$17,
xor$in, type$23,
xor$in, type$24,
ss$in, prefix$type,
aaa$in, type$1,
cmp$in, type$14,
cmp$in, type$15,
cmp$in, type$16,
cmp$in, type$17,
cmp$in, type$23,
cmp$in, type$24,
ds$in, prefix$type,
aas$in, type$1,
inc$in, type$3, /* 40 */
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
push$in, type$3, /* 50 */
push$in, type$3,
push$in, type$3,
push$in, type$3,
push$in, type$3,
push$in, type$3,
push$in, type$3,
push$in, type$3,
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 8
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
qq$in, type$0, /* 60 */
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
jo$in, type$5, /* 70 */
jno$in, type$5,
jb$in, type$5,
jnb$in, type$5,
jz$in, type$5,
jnz$in, type$5,
jbe$in, type$5,
ja$in, type$5,
js$in, type$5,
jns$in, type$5,
jp$in, type$5,
jnp$in, type$5,
jl$in, type$5,
jnl$in, type$5,
jle$in, type$5,
jg$in, type$5,
alt1, type$43, /* 80 */
alt1, type$43,
alt2, type$43,
alt2, type$43,
test$in, type$14,
test$in, type$15,
xchg$in, type$16,
xchg$in, type$17,
mov$in, type$14,
mov$in, type$15,
mov$in, type$16,
mov$in, type$17,
mov$in, type$36,
lea$in, type$39,
mov$in, type$37,
pop$in, type$9,
nop$in, type$1, /* 90 */
xchg$in, type$33,
xchg$in, type$33,
xchg$in, type$33,
xchg$in, type$33,
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 9
xchg$in, type$33,
xchg$in, type$33,
xchg$in, type$33,
cbw$in, type$1,
cwd$in, type$1,
callf$in, type$13,
wait$in, type$1,
pushf$in, type$1,
popf$in, type$1,
sahf$in, type$1,
lahf$in, type$1,
mov$in, type$18, /* A0 */
mov$in, type$19,
mov$in, type$20,
mov$in, type$21,
movsb$in, type$1,
movsw$in, type$1,
cmpsb$in, type$1,
cmpsw$in, type$1,
test$in, type$23,
test$in, type$24,
stosb$in, type$1,
stosw$in, type$1,
lodsb$in, type$1,
lodsw$in, type$1,
scasb$in, type$1,
scasw$in, type$1,
mov$in, type$31, /* B0 */
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
qq$in, type$0, /* C0 */
qq$in, type$0,
ret$in, type$11,
ret$in, type$1,
les$in, type$39,
lds$in, type$39,
mov$in, type$40,
mov$in, type$41,
qq$in, type$0,
qq$in, type$0,
retf$in, type$11,
retf$in, type$1,
int$in, type$12,
int$in, type$10,
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 10
into$in, type$1,
iret$in, type$1,
alt4, type$43, /* D0 */
alt4, type$43,
alt5, type$43,
alt5, type$43,
aam$in, type$2,
aad$in, type$2,
qq$in, type$0,
xlat$in, type$1,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
loopne$in, type$5, /* E0 */
loope$in, type$5,
loop$in, type$5,
jcxz$in, type$5,
in$in, type$22,
in$in, type$22,
out$in, type$22,
out$in, type$22,
call$in, type$6,
jmp$in, type$6,
jmpf$in, type$13,
jmps$in, type$5,
in$in, type$25,
in$in, type$26,
out$in, type$25,
out$in, type$26,
lock$in, prefix$type, /* F0 */
qq$in, type$0,
repne$in, prefix$type,
rep$in, prefix$type,
hlt$in, type$1,
cmc$in, type$1,
alt6, type$43,
alt6, type$43,
clc$in, type$1,
stc$in, type$1,
cli$in, type$1,
sti$in, type$1,
cld$in, type$1,
std$in, type$1,
alt7, type$43,
alt8, type$43);
17 1 end instr86;
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 11
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
4 AAAIN. . . . . . . LITERALLY 16
4 AADIN. . . . . . . LITERALLY 16
4 AAMIN. . . . . . . LITERALLY 16
4 AASIN. . . . . . . LITERALLY 16
4 ADCIN. . . . . . . LITERALLY 8 9 10 16
4 ADDIN. . . . . . . LITERALLY 8 9 10 16
2 ALT1 . . . . . . . LITERALLY 16
8 0010H 16 ALT1TAB. . . . . . BYTE ARRAY(16) DATA 7
2 ALT2 . . . . . . . LITERALLY 16
9 0020H 16 ALT2TAB. . . . . . BYTE ARRAY(16) DATA 7
2 ALT3 . . . . . . . LITERALLY
10 0030H 16 ALT3TAB. . . . . . BYTE ARRAY(16) DATA 7
2 ALT4 . . . . . . . LITERALLY 16
11 0040H 16 ALT4TAB. . . . . . BYTE ARRAY(16) DATA 7
2 ALT5 . . . . . . . LITERALLY 16
12 0050H 16 ALT5TAB. . . . . . BYTE ARRAY(16) DATA 7
2 ALT6 . . . . . . . LITERALLY 16
13 0060H 16 ALT6TAB. . . . . . BYTE ARRAY(16) DATA 7
2 ALT7 . . . . . . . LITERALLY 16
14 0070H 16 ALT7TAB. . . . . . BYTE ARRAY(16) DATA 7
2 ALT8 . . . . . . . LITERALLY 16
15 0080H 16 ALT8TAB. . . . . . BYTE ARRAY(16) DATA 7
7 0000H 16 ALTTABLEPTRS . . . WORD ARRAY(8) PUBLIC DATA
4 ANDIN. . . . . . . LITERALLY 8 16
4 CALLFIN. . . . . . LITERALLY 15 16
4 CALLIN . . . . . . LITERALLY 15 16
4 CBWIN. . . . . . . LITERALLY 16
4 CLCIN. . . . . . . LITERALLY 16
4 CLDIN. . . . . . . LITERALLY 16
4 CLIIN. . . . . . . LITERALLY 16
4 CMCIN. . . . . . . LITERALLY 16
4 CMPIN. . . . . . . LITERALLY 8 9 10 16
4 CMPSBIN. . . . . . LITERALLY 16
4 CMPSWIN. . . . . . LITERALLY 16
4 CSIN . . . . . . . LITERALLY 16
4 CWDIN. . . . . . . LITERALLY 16
4 DAAIN. . . . . . . LITERALLY 16
4 DASIN. . . . . . . LITERALLY 16
4 DECIN. . . . . . . LITERALLY 14 15 16
4 DIVIN. . . . . . . LITERALLY 13
4 DSIN . . . . . . . LITERALLY 16
4 ESCIN. . . . . . . LITERALLY 16
4 ESIN . . . . . . . LITERALLY 16
4 HLTIN. . . . . . . LITERALLY 16
4 IDIVIN . . . . . . LITERALLY 13
4 IMULIN . . . . . . LITERALLY 13
4 INCIN. . . . . . . LITERALLY 14 15 16
4 ININ . . . . . . . LITERALLY 16
1 0000H INSTR86. . . . . . PROCEDURE STACK=0000H
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 12
16 0090H 512 INSTRTABLE . . . . BYTE ARRAY(512) PUBLIC DATA
4 INTIN. . . . . . . LITERALLY 16
4 INTOIN . . . . . . LITERALLY 16
4 IRETIN . . . . . . LITERALLY 16
4 JAEIN. . . . . . . LITERALLY
4 JAIN . . . . . . . LITERALLY 16
4 JBEIN. . . . . . . LITERALLY 16
4 JBIN . . . . . . . LITERALLY 16
4 JCIN . . . . . . . LITERALLY
4 JCXZIN . . . . . . LITERALLY 16
4 JEIN . . . . . . . LITERALLY
4 JGEIN. . . . . . . LITERALLY
4 JGIN . . . . . . . LITERALLY 16
4 JLEIN. . . . . . . LITERALLY 16
4 JLIN . . . . . . . LITERALLY 16
4 JMPFIN . . . . . . LITERALLY 15 16
4 JMPIN. . . . . . . LITERALLY 15 16
4 JMPSIN . . . . . . LITERALLY 16
4 JNAEIN . . . . . . LITERALLY
4 JNAIN. . . . . . . LITERALLY
4 JNBEIN . . . . . . LITERALLY
4 JNBIN. . . . . . . LITERALLY 16
4 JNCIN. . . . . . . LITERALLY
4 JNEIN. . . . . . . LITERALLY
4 JNGEIN . . . . . . LITERALLY
4 JNGIN. . . . . . . LITERALLY
4 JNLEIN . . . . . . LITERALLY
4 JNLIN. . . . . . . LITERALLY 16
4 JNOIN. . . . . . . LITERALLY 16
4 JNPIN. . . . . . . LITERALLY 16
4 JNSIN. . . . . . . LITERALLY 16
4 JNZIN. . . . . . . LITERALLY 16
4 JOIN . . . . . . . LITERALLY 16
4 JPEIN. . . . . . . LITERALLY
4 JPIN . . . . . . . LITERALLY 16
4 JPOIN. . . . . . . LITERALLY
4 JSIN . . . . . . . LITERALLY 16
4 JZIN . . . . . . . LITERALLY 16
4 LAHFIN . . . . . . LITERALLY 16
4 LDSIN. . . . . . . LITERALLY 16
4 LEAIN. . . . . . . LITERALLY 16
4 LESIN. . . . . . . LITERALLY 16
4 LOCKIN . . . . . . LITERALLY 16
4 LODSBIN. . . . . . LITERALLY 16
4 LODSWIN. . . . . . LITERALLY 16
4 LOOPEIN. . . . . . LITERALLY 16
4 LOOPIN . . . . . . LITERALLY 16
4 LOOPNEIN . . . . . LITERALLY 16
4 LOOPNZIN . . . . . LITERALLY
4 LOOPZIN. . . . . . LITERALLY
4 MOVIN. . . . . . . LITERALLY 16
4 MOVSBIN. . . . . . LITERALLY 16
4 MOVSWIN. . . . . . LITERALLY 16
4 MULIN. . . . . . . LITERALLY 13
4 NEGIN. . . . . . . LITERALLY 13
4 NOPIN. . . . . . . LITERALLY 16
4 NOTIN. . . . . . . LITERALLY 13
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 13
3 OP2IN. . . . . . . LITERALLY 8 16
3 OP3IN. . . . . . . LITERALLY 8 9 10 11 12 13 14
15 16
3 OP4IN. . . . . . . LITERALLY 13 15 16
3 OP5IN. . . . . . . LITERALLY 15 16
3 OP6IN. . . . . . . LITERALLY 16
4 ORIN . . . . . . . LITERALLY 8 16
4 OUTIN. . . . . . . LITERALLY 16
4 POPFIN . . . . . . LITERALLY 16
4 POPIN. . . . . . . LITERALLY 16
6 PREFIXTYPE . . . . LITERALLY 16
4 PUSHFIN. . . . . . LITERALLY 16
4 PUSHIN . . . . . . LITERALLY 15 16
2 QQIN . . . . . . . LITERALLY 9 10 11 12 13 14 15
16
4 RCLIN. . . . . . . LITERALLY 11 12
4 RCRIN. . . . . . . LITERALLY 11 12
4 REPEIN . . . . . . LITERALLY
4 REPIN. . . . . . . LITERALLY 16
4 REPNEIN. . . . . . LITERALLY 16
4 REPNZIN. . . . . . LITERALLY
4 REPZIN . . . . . . LITERALLY
4 RETFIN . . . . . . LITERALLY 16
4 RETIN. . . . . . . LITERALLY 16
4 ROLIN. . . . . . . LITERALLY 11 12
4 RORIN. . . . . . . LITERALLY 11 12
4 SAHFIN . . . . . . LITERALLY 16
4 SALIN. . . . . . . LITERALLY
4 SARIN. . . . . . . LITERALLY 11 12
4 SBBIN. . . . . . . LITERALLY 8 9 10 16
4 SCASBIN. . . . . . LITERALLY 16
4 SCASWIN. . . . . . LITERALLY 16
4 SHLIN. . . . . . . LITERALLY 11 12
4 SHRIN. . . . . . . LITERALLY 11 12
4 SSIN . . . . . . . LITERALLY 16
4 STCIN. . . . . . . LITERALLY 16
4 STDIN. . . . . . . LITERALLY 16
4 STIIN. . . . . . . LITERALLY 16
4 STOSBIN. . . . . . LITERALLY 16
4 STOSWIN. . . . . . LITERALLY 16
4 SUBIN. . . . . . . LITERALLY 8 9 10 16
4 TESTIN . . . . . . LITERALLY 13 16
5 TYPE0. . . . . . . LITERALLY 9 10 11 12 13 14 15
16
5 TYPE1. . . . . . . LITERALLY 16
5 TYPE10 . . . . . . LITERALLY 16
5 TYPE11 . . . . . . LITERALLY 16
5 TYPE12 . . . . . . LITERALLY 16
5 TYPE13 . . . . . . LITERALLY 16
5 TYPE14 . . . . . . LITERALLY 16
5 TYPE15 . . . . . . LITERALLY 16
5 TYPE16 . . . . . . LITERALLY 16
5 TYPE17 . . . . . . LITERALLY 16
5 TYPE18 . . . . . . LITERALLY 16
5 TYPE19 . . . . . . LITERALLY 16
5 TYPE2. . . . . . . LITERALLY 16
5 TYPE20 . . . . . . LITERALLY 16
PL/M-86 COMPILER INSTRUCTION TABLE FOR 8086 DISASSEMBLER 10/5/80 PAGE 14
5 TYPE21 . . . . . . LITERALLY 16
5 TYPE22 . . . . . . LITERALLY 16
5 TYPE23 . . . . . . LITERALLY 16
5 TYPE24 . . . . . . LITERALLY 16
5 TYPE25 . . . . . . LITERALLY 16
5 TYPE26 . . . . . . LITERALLY 16
5 TYPE27 . . . . . . LITERALLY 12
5 TYPE28 . . . . . . LITERALLY
5 TYPE29 . . . . . . LITERALLY 11
5 TYPE3. . . . . . . LITERALLY 16
5 TYPE30 . . . . . . LITERALLY
5 TYPE31 . . . . . . LITERALLY 16
5 TYPE32 . . . . . . LITERALLY 16
5 TYPE33 . . . . . . LITERALLY 16
5 TYPE34 . . . . . . LITERALLY 8 13
5 TYPE35 . . . . . . LITERALLY
5 TYPE36 . . . . . . LITERALLY 16
5 TYPE37 . . . . . . LITERALLY 16
5 TYPE38 . . . . . . LITERALLY 10
5 TYPE39 . . . . . . LITERALLY 16
5 TYPE4. . . . . . . LITERALLY 16
5 TYPE40 . . . . . . LITERALLY 16
5 TYPE41 . . . . . . LITERALLY 16
5 TYPE42 . . . . . . LITERALLY 16
5 TYPE43 . . . . . . LITERALLY 16
5 TYPE44 . . . . . . LITERALLY 8 9
5 TYPE45 . . . . . . LITERALLY 13 14 15
5 TYPE5. . . . . . . LITERALLY 16
5 TYPE6. . . . . . . LITERALLY 16
5 TYPE7. . . . . . . LITERALLY 15
5 TYPE8. . . . . . . LITERALLY
5 TYPE9. . . . . . . LITERALLY 15 16
4 WAITIN . . . . . . LITERALLY 16
4 XCHGIN . . . . . . LITERALLY 16
4 XLATIN . . . . . . LITERALLY 16
4 XORIN. . . . . . . LITERALLY 8 16
MODULE INFORMATION:
CODE AREA SIZE = 0000H 0D
CONSTANT AREA SIZE = 0290H 656D
VARIABLE AREA SIZE = 0000H 0D
MAXIMUM STACK SIZE = 0000H 0D
559 LINES READ
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION

View File

@@ -0,0 +1,426 @@
$title('instruction table for 8086 disassembler')
$date(10/5/80)
instr86: do;
declare
qq$in literally '0',
alt1 literally '0',
alt2 literally '1',
alt3 literally '2',
alt4 literally '3',
alt5 literally '4',
alt6 literally '5',
alt7 literally '6',
alt8 literally '7';
$include(optab.lit)
declare
type$0 literally '0',
type$1 literally '1',
type$2 literally '2',
type$3 literally '3',
type$4 literally '4',
type$5 literally '5',
type$6 literally '6',
type$7 literally '7',
type$8 literally '7',
type$9 literally '7',
type$10 literally '8',
type$11 literally '9',
type$12 literally '10',
type$13 literally '11',
type$14 literally '12',
type$15 literally '12',
type$16 literally '12',
type$17 literally '12',
type$18 literally '13',
type$19 literally '13',
type$20 literally '13',
type$21 literally '13',
type$22 literally '14',
type$23 literally '15',
type$24 literally '15',
type$25 literally '16',
type$26 literally '16',
type$27 literally '17',
type$28 literally '17',
type$29 literally '17',
type$30 literally '17',
type$31 literally '18',
type$32 literally '18',
type$33 literally '19',
type$34 literally '20',
type$35 literally '20',
type$36 literally '21',
type$37 literally '21',
type$38 literally '22',
type$39 literally '23',
type$40 literally '24',
type$41 literally '24',
type$42 literally '25',
type$43 literally '26',
type$44 literally '27',
type$45 literally '28';
declare
prefix$type literally '0ffh';
declare alt$table$ptrs (8) address public data (
.alt$1$tab,
.alt$2$tab,
.alt$3$tab,
.alt$4$tab,
.alt$5$tab,
.alt$6$tab,
.alt$7$tab,
.alt$8$tab);
declare alt$1$tab (*) byte data (
add$in, type$44,
or$in, type$34,
adc$in, type$44,
sbb$in, type$44,
and$in, type$34,
sub$in, type$44,
xor$in, type$34,
cmp$in, type$44);
declare alt$2$tab (*) byte data (
add$in, type$44,
qq$in, type$0,
adc$in, type$44,
sbb$in, type$44,
qq$in, type$0,
sub$in, type$44,
qq$in, type$0,
cmp$in, type$44);
declare alt$3$tab (*) byte data (
add$in, type$38,
qq$in, type$0,
adc$in, type$38,
sbb$in, type$38,
qq$in, type$0,
sub$in, type$38,
qq$in, type$0,
cmp$in, type$38);
declare alt$4$tab (*) byte data (
rol$in, type$29,
ror$in, type$29,
rcl$in, type$29,
rcr$in, type$29,
shl$in, type$29,
shr$in, type$29,
qq$in, type$0,
sar$in, type$29);
declare alt$5$tab (*) byte data (
rol$in, type$27,
ror$in, type$27,
rcl$in, type$27,
rcr$in, type$27,
shl$in, type$27,
shr$in, type$27,
qq$in, type$0,
sar$in, type$27);
declare alt$6$tab (*) byte data (
test$in, type$34,
qq$in, type$0,
not$in, type$45,
neg$in, type$45,
mul$in, type$45,
imul$in, type$45,
div$in, type$45,
idiv$in, type$45);
declare alt$7$tab (*) byte data (
inc$in, type$45,
dec$in, type$45,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0);
declare alt$8$tab (*) byte data (
inc$in, type$45,
dec$in, type$45,
call$in, type$9,
callf$in, type$7,
jmp$in, type$9,
jmpf$in, type$7,
push$in, type$7,
qq$in, type$0);
/*
instruction table for 8086 disassembler
instruction is index into table
there are 2 bytes per instruction:
1. index into ascii opcode table
2. instruction type (how many operands of what type, etc.)
*/
declare instr$table (512) byte public data (
add$in, type$14, /* 0 */
add$in, type$15,
add$in, type$16,
add$in, type$17,
add$in, type$23,
add$in, type$24,
push$in, type$4,
pop$in, type$4,
or$in, type$14,
or$in, type$15,
or$in, type$16,
or$in, type$17,
or$in, type$23,
or$in, type$24,
push$in, type$4,
qq$in, type$0,
adc$in, type$14, /* 10 */
adc$in, type$15,
adc$in, type$16,
adc$in, type$17,
adc$in, type$23,
adc$in, type$24,
push$in, type$4,
pop$in, type$4,
sbb$in, type$14,
sbb$in, type$15,
sbb$in, type$16,
sbb$in, type$17,
sbb$in, type$23,
sbb$in, type$24,
push$in, type$4,
pop$in, type$4,
and$in, type$14, /* 20 */
and$in, type$15,
and$in, type$16,
and$in, type$17,
and$in, type$23,
and$in, type$24,
es$in, prefix$type,
daa$in, type$1,
sub$in, type$14,
sub$in, type$15,
sub$in, type$16,
sub$in, type$17,
sub$in, type$23,
sub$in, type$24,
cs$in, prefix$type,
das$in, type$1,
xor$in, type$14, /* 30 */
xor$in, type$15,
xor$in, type$16,
xor$in, type$17,
xor$in, type$23,
xor$in, type$24,
ss$in, prefix$type,
aaa$in, type$1,
cmp$in, type$14,
cmp$in, type$15,
cmp$in, type$16,
cmp$in, type$17,
cmp$in, type$23,
cmp$in, type$24,
ds$in, prefix$type,
aas$in, type$1,
inc$in, type$3, /* 40 */
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
inc$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
dec$in, type$3,
push$in, type$3, /* 50 */
push$in, type$3,
push$in, type$3,
push$in, type$3,
push$in, type$3,
push$in, type$3,
push$in, type$3,
push$in, type$3,
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
pop$in, type$3,
qq$in, type$0, /* 60 */
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
qq$in, type$0,
jo$in, type$5, /* 70 */
jno$in, type$5,
jb$in, type$5,
jnb$in, type$5,
jz$in, type$5,
jnz$in, type$5,
jbe$in, type$5,
ja$in, type$5,
js$in, type$5,
jns$in, type$5,
jp$in, type$5,
jnp$in, type$5,
jl$in, type$5,
jnl$in, type$5,
jle$in, type$5,
jg$in, type$5,
alt1, type$43, /* 80 */
alt1, type$43,
alt2, type$43,
alt2, type$43,
test$in, type$14,
test$in, type$15,
xchg$in, type$16,
xchg$in, type$17,
mov$in, type$14,
mov$in, type$15,
mov$in, type$16,
mov$in, type$17,
mov$in, type$36,
lea$in, type$39,
mov$in, type$37,
pop$in, type$9,
nop$in, type$1, /* 90 */
xchg$in, type$33,
xchg$in, type$33,
xchg$in, type$33,
xchg$in, type$33,
xchg$in, type$33,
xchg$in, type$33,
xchg$in, type$33,
cbw$in, type$1,
cwd$in, type$1,
callf$in, type$13,
wait$in, type$1,
pushf$in, type$1,
popf$in, type$1,
sahf$in, type$1,
lahf$in, type$1,
mov$in, type$18, /* A0 */
mov$in, type$19,
mov$in, type$20,
mov$in, type$21,
movsb$in, type$1,
movsw$in, type$1,
cmpsb$in, type$1,
cmpsw$in, type$1,
test$in, type$23,
test$in, type$24,
stosb$in, type$1,
stosw$in, type$1,
lodsb$in, type$1,
lodsw$in, type$1,
scasb$in, type$1,
scasw$in, type$1,
mov$in, type$31, /* B0 */
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$31,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
mov$in, type$32,
qq$in, type$0, /* C0 */
qq$in, type$0,
ret$in, type$11,
ret$in, type$1,
les$in, type$39,
lds$in, type$39,
mov$in, type$40,
mov$in, type$41,
qq$in, type$0,
qq$in, type$0,
retf$in, type$11,
retf$in, type$1,
int$in, type$12,
int$in, type$10,
into$in, type$1,
iret$in, type$1,
alt4, type$43, /* D0 */
alt4, type$43,
alt5, type$43,
alt5, type$43,
aam$in, type$2,
aad$in, type$2,
qq$in, type$0,
xlat$in, type$1,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
esc$in, type$42,
loopne$in, type$5, /* E0 */
loope$in, type$5,
loop$in, type$5,
jcxz$in, type$5,
in$in, type$22,
in$in, type$22,
out$in, type$22,
out$in, type$22,
call$in, type$6,
jmp$in, type$6,
jmpf$in, type$13,
jmps$in, type$5,
in$in, type$25,
in$in, type$26,
out$in, type$25,
out$in, type$26,
lock$in, prefix$type, /* F0 */
qq$in, type$0,
repne$in, prefix$type,
rep$in, prefix$type,
hlt$in, type$1,
cmc$in, type$1,
alt6, type$43,
alt6, type$43,
clc$in, type$1,
stc$in, type$1,
cli$in, type$1,
sti$in, type$1,
cld$in, type$1,
std$in, type$1,
alt7, type$43,
alt8, type$43);
end instr86;

View File

@@ -0,0 +1,125 @@
AAA
AAD
AAM
AAS
ADC
ADD
AND
CALL
CALLF
CBW
CLC
CLD
CLI
CMC
CMP
CMPSB
CMPSW
CS:
CWD
DAA
DAS
DEC
DIV
DS:
ES:
ESC
HLT
IDIV
IMUL
IN
INC
INT
INTO
IRET
JA
JAE
JB
JBE
JC
JCXZ
JE
JG
JGE
JL
JLE
JMP
JMPF
JMPS
JNA
JNAE
JNB
JNBE
JNC
JNE
JNG
JNGE
JNL
JNLE
JNO
JNP
JNS
JNZ
JO
JP
JPE
JPO
JS
JZ
LAHF
LDS
LEA
LES
LOCK
LODSB
LODSW
LOOP
LOOPE
LOOPNE
LOOPNZ
LOOPZ
MOV
MOVSB
MOVSW
MUL
NEG
NOP
NOT
OR
OUT
POP
POPF
PUSH
PUSHF
RCL
RCR
REP
REPE
REPNE
REPNZ
REPZ
RET
RETF
ROL
ROR
SAHF
SAL
SAR
SBB
SCASB
SCASW
SHL
SHR
SS:
STC
STD
STI
STOSB
STOSW
SUB
TEST
WAIT
XCHG
XLAT
XOR
$