                        1 ; COPYRIGHT 1987 DTACK GROUNDED INC
                        2 ;
                        3 ; *********
                        4 ; *       *
                        5 ; * PASS1 *
                        6 ; *       *
                        7 ; *********
                        8 ;
                        9 ;------------------------------
                       10 ;-- 68000 RESIDENT ASSEMBLER --
                       11 ;------------------------------
                       12 ;
                       13 ;
                       14 ; STATUS AS OF 8 JUNE 1987:
                       15 ;
                       16 ; THE 'MOVEP' INSTRUCTION IS NOT IMPLEMENTED
                       17 ;
                       18 ; IT IS NOT CLEAR WHETHER THE d(PC) AND d(PC,Ix)
                       19 ; ADR MODES DO OR DO NOT GENERATE A CORRECT
                       20 ; DISPLACEMENT:  IT IS A QUESTION OF
                       21 ; DEFINITIONS.
                       22 ;
                       23 ;
                       24 ;
00001170:              25 SOI      EQU     $1170          ;LONG WORD
                       26 ;
                       27 ; USE BOTTOM HALF OF F.P. FOR-NEXT STACK FOR REGS
                       28 ;
00001400:              29 LBLTEMP  EQU     $1400          ;8 BYTES
00001408:              30 ADRTEMP  EQU     LBLTEMP+8      ;LONG WORD
0000140C:              31 LBLPTR   EQU     ADRTEMP+4      ;LONG WORD
00001410:              32 LINEPTR  EQU     LBLPTR+4       ;LONG WORD
00001414:              33 STKPTR   EQU     LINEPTR+4      ;LONG WORD
00001418:              34 ADDRESS  EQU     STKPTR+4       ;LONG WORD
0000141C:              35 SHRT     EQU     ADDRESS+4      ;LONG WORD
00001420:              36 EXPRVALU EQU     SHRT+4         ;LONG WORD
00001424:              37 RESTART  EQU     EXPRVALU+4     ;LONG WORD
                       38 ;
00001428:              39 ERRCNT   EQU     RESTART+4      ;WORD VALUE
0000142A:              40 FILECNT  EQU     ERRCNT+2       ;WORD VALUE
0000142C:              41 LINECNT  EQU     FILECNT+2      ;WORD VALUE
0000142E:              42 LBLCNT   EQU     LINECNT+2      ;WORD VALUE
00001430:              43 GAPSIZE  EQU     LBLCNT+2       ;WORD VALUE
00001432:              44 INTVAL   EQU     GAPSIZE+2      ;WORD VALUE
00001434:              45 INDEX    EQU     INTVAL+2       ;WORD VALUE
00001436:              46 OPCODE   EQU     INDEX+2        ;WORD VALUE
                       47 ;
00001434:              48 SIZEID   EQU     INTVAL+2       ;BYTE VALUE
00001435:              49 FORWARD  EQU     SIZEID+1       ;BYTE VALUE
00001436:              50 LBLFLG   EQU     FORWARD+1      ;BYTE VALUE
00001437:              51 WEIRD    EQU     LBLFLG+1       ;BYTE VALUE
00001438:              52 ORGFLG   EQU     WEIRD+1        ;BYTE VALUE
00001439:              53 OPERATOR EQU     ORGFLG+1       ;BYTE VALUE
0000143A:              54 NEGATE   EQU     OPERATOR+1     ;BYTE VALUE
0000143B:              55 LISTFLG  EQU     NEGATE+1       ;LIST FLG
0000143C:              56 LISTFLG1 EQU     LISTFLG+1      ;1 = ALWAYS LIST
0000143D:              57 LISTFLG2 EQU     LISTFLG1+1     ;1 = NEVER LIST
0000143E:              58 ADRLEN   EQU     LISTFLG2+1     ;BYTE VALUE
0000143F:              59 UDFFWD   EQU     ADRLEN+1       ;BYTE VALUE
                       60 ;
                       62 ; COPYRIGHT 1987 DTACK GROUNDED INC
                       63 ;
00001300:              64 STR      EQU     $1300          ;TEMP STR STORAGE
00002000:              65 MASKTBL  EQU     $2000          ;USE DBASIC'S TBL
0000FFE0:              66 SRC      EQU     $FFE0          ;SRC UTIL PTR
0000FFE4:              67 DEST     EQU     $FFE4          ;DEST UTIL PTR
                       68 ;
                       69 ;
020000:                70          ORG     $20000
                       71 ;
                       72 ; JUMP TO ASM TO INTIALIZE THE TABLES AND
                       73 ; ASSEMBLE THE FIRST FILE (PASS1)
                       74 ;
020000: 6000080E       75          BRA.L   ASM            ;START PASS 1
                       76 ;
                       77 ; JUMP TO ASMFILE TO ASSEMBLE SUBSEQUENT FILES
                       78 ; UNTIL THE ASSEMBLY (PASS1) IS COMPLETED
                       79 ;
020004: 6000088E       80          BRA.L   ASMFILE        ;CONTINUE PASS 1
                       81 ;
                       82 ; RECOVER THE FILENAMES FROM THE FILE OF FILES
                       83 ;
020008: 6000193A       84          BRA.L   FNMS           ;END OF PASS1C
                       85 ;
                       86 ;
                       87 ;
                       88 ; THE FOLLOWING TABLE OF ADR VALUES IS FOR THE 1040ST;
                       89 ; THE TABLE MUST BE MODIFIED BY THE ASSEMBLY PROGRAM '
                       90 ; IF A 520ST IS IN USE DUE TO LIMITED MEMORY.
                       91 ;
                       92 ; THE COMMENTS SHOW THE VALUES USED BY THE 520ST.
                       93 ;
02000C: 0FFF           94 NLBLS    DC.W    4095           ;520 #2047
02000E: 00006000       95 LBLN     DC.L    24576          ;520 12288
020012: 000B           96 LBLI     DC.W    11             ;520 #10
020014: 1FFF           97 CODSIZE  DC.W    $1FFF          ;520 $0FFF
020016: 00049800       98 RAMDISK  DC.L    $49800         ;520 $3B000
02001A: 00039800       99 CODE     DC.L    $39800         ;520 $33000
                      100 ;
                      101 ; THESE ADDRESSES ARE COMMON TO THE 520 & 1040:
                      102 ;
02001E: 0002C800      103 LBLTBL   DC.L    $2C800         ;520 $2C800
020022: 00024800      104 TEXT     DC.L    $24800         ;520 $24800
020026: 00024530      105 ERRTBL   DC.L    $24530         ;520 $24530
02002A: 000244F0      106 MSGSHDW  DC.L    $244F0         ;520 $244F0
02002E: 00023CF0      107 ERMSGARY DC.L    $23CF0         ;520 $23CF0
020032: 00023CB0      108 SHDW     DC.L    $23CB0         ;520 $23CB0
020036: 000238B0      109 FILETBL  DC.L    $238B0         ;520 $238B0
                      110 ;
                      112 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      113 ;
                      114 ;-------------------------------------------
                      115 ;-- LINKED ASCII TABLE OF 68000 MNEMONICS --
                      116 ;-------------------------------------------
                      117 ;
02004C:               118          ORG     $2004C
                      119 ;
02004C: 04            120 A        DC.B    4
02004D: 41424344      121          ASC     "ABCD"
020051: 03            122          DC.B    3
020052: 414444        123          ASC     "ADD"
020055: 04            124          DC.B    4
020056: 41444441      125          ASC     "ADDA"
02005A: 04            126          DC.B    4
02005B: 41444449      127          ASC     "ADDI"
02005F: 04            128          DC.B    4
020060: 41444451      129          ASC     "ADDQ"
020064: 04            130          DC.B    4
020065: 41444458      131          ASC     "ADDX"
020069: 03            132          DC.B    3
02006A: 414E44        133          ASC     "AND"
02006D: 04            134          DC.B    4
02006E: 414E4449      135          ASC     "ANDI"
020072: 03            136          DC.B    3
020073: 415343        137          ASC     "ASC"          ;PSEUDO-OP
020076: 03            138          DC.B    3
020077: 41534C        139          ASC     "ASL"
02007A: 03            140          DC.B    3
02007B: 415352        141          ASC     "ASR"
02007E: 03            142 B        DC.B    3
02007F: 424343        143          ASC     "BCC"
020082: 03            144          DC.B    3
020083: 424353        145          ASC     "BCS"
020086: 03            146          DC.B    3
020087: 424551        147          ASC     "BEQ"
02008A: 03            148          DC.B    3
02008B: 424745        149          ASC     "BGE"
02008E: 03            150          DC.B    3
02008F: 424754        151          ASC     "BGT"
020092: 03            152          DC.B    3
020093: 424849        153          ASC     "BHI"
020096: 03            154          DC.B    3
020097: 424C45        155          ASC     "BLE"
02009A: 03            156          DC.B    3
02009B: 424C53        157          ASC     "BLS"
02009E: 03            158          DC.B    3
02009F: 424C54        159          ASC     "BLT"
0200A2: 03            160          DC.B    3
0200A3: 424D49        161          ASC     "BMI"
0200A6: 03            162          DC.B    3
0200A7: 424E45        163          ASC     "BNE"
0200AA: 03            164          DC.B    3
0200AB: 42504C        165          ASC     "BPL"
0200AE: 03            166          DC.B    3
0200AF: 425643        167          ASC     "BVC"
                      168 ;
                      170 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      171 ;
0200B2: 03            172          DC.B    3
0200B3: 425653        173          ASC     "BVS"
0200B6: 04            174          DC.B    4
0200B7: 42434847      175          ASC     "BCHG"
0200BB: 04            176          DC.B    4
0200BC: 42434C52      177          ASC     "BCLR"
0200C0: 03            178          DC.B    3
0200C1: 425241        179          ASC     "BRA"
0200C4: 04            180          DC.B    4
0200C5: 42534554      181          ASC     "BSET"
0200C9: 03            182          DC.B    3
0200CA: 425352        183          ASC     "BSR"
0200CD: 04            184          DC.B    4
0200CE: 42545354      185          ASC     "BTST"
0200D2: 03            186 C        DC.B    3
0200D3: 43484B        187          ASC     "CHK"
0200D6: 03            188          DC.B    3
0200D7: 434C52        189          ASC     "CLR"
0200DA: 03            190          DC.B    3
0200DB: 434D50        191          ASC     "CMP"
0200DE: 04            192          DC.B    4
0200DF: 434D5041      193          ASC     "CMPA"
0200E3: 04            194          DC.B    4
0200E4: 434D5049      195          ASC     "CMPI"
0200E8: 04            196          DC.B    4
0200E9: 434D504D      197          ASC     "CMPM"
0200ED: 04            198 D        DC.B    4
0200EE: 44424343      199          ASC     "DBCC"
0200F2: 04            200          DC.B    4
0200F3: 44424353      201          ASC     "DBCS"
0200F7: 04            202          DC.B    4
0200F8: 44424551      203          ASC     "DBEQ"
0200FC: 03            204          DC.B    3
0200FD: 444246        205          ASC     "DBF"
020100: 04            206          DC.B    4
020101: 44424745      207          ASC     "DBGE"
020105: 04            208          DC.B    4
020106: 44424754      209          ASC     "DBGT"
02010A: 04            210          DC.B    4
02010B: 44424849      211          ASC     "DBHI"
02010F: 04            212          DC.B    4
020110: 44424C45      213          ASC     "DBLE"
020114: 04            214          DC.B    4
020115: 44424C53      215          ASC     "DBLS"
020119: 04            216          DC.B    4
02011A: 44424C54      217          ASC     "DBLT"
02011E: 04            218          DC.B    4
02011F: 44424D49      219          ASC     "DBMI"
020123: 04            220          DC.B    4
020124: 44424E45      221          ASC     "DBNE"
020128: 04            222          DC.B    4
020129: 4442504C      223          ASC     "DBPL"
                      224 ;
                      226 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      227 ;
02012D: 04            228          DC.B    4
02012E: 44425241      229          ASC     "DBRA"
020132: 03            230          DC.B    3
020133: 444254        231          ASC     "DBT"
020136: 04            232          DC.B    4
020137: 44425643      233          ASC     "DBVC"
02013B: 04            234          DC.B    4
02013C: 44425653      235          ASC     "DBVS"
020140: 02            236          DC.B    2
020141: 4443          237          ASC     "DC"           ;PSEUDO-OP
020143: 04            238          DC.B    4
020144: 44495653      239          ASC     "DIVS"
020148: 04            240          DC.B    4
020149: 44495655      241          ASC     "DIVU"
02014D: 02            242          DC.B    2
02014E: 4453          243          ASC     "DS"           ;PSEUDO-OP
020150: 03            244 E        DC.B    3
020151: 454F52        245          ASC     "EOR"
020154: 04            246          DC.B    4
020155: 454F5249      247          ASC     "EORI"
020159: 03            248          DC.B    3
02015A: 455155        249          ASC     "EQU"          ;PSEUDO-OP
02015D: 03            250          DC.B    3
02015E: 455847        251          ASC     "EXG"
020161: 03            252          DC.B    3
020162: 455854        253          ASC     "EXT"
020165: 04            254          DC.B    4
020166: 46575244      255          ASC     "FWRD"         ;PSEUDO-OP
02016A: 07            256          DC.B    7
02016B: 494C4C454741  257          ASC     "ILLEGAL"
020172: 03            258          DC.B    3
020173: 474150        259          ASC     "GAP"          ;PSEUDO-OP
020176: 03            260 J        DC.B    3
020177: 4A4D50        261          ASC     "JMP"
02017A: 03            262          DC.B    3
02017B: 4A5352        263          ASC     "JSR"
02017E: 03            264          DC.B    3
02017F: 4C4541        265          ASC     "LEA"
020182: 04            266          DC.B    4
020183: 4C494E4B      267          ASC     "LINK"
020187: 04            268          DC.B    4
020188: 4C495354      269          ASC     "LIST"         ;PSEUDO-OP
02018C: 03            270          DC.B    3
02018D: 4C534C        271          ASC     "LSL"
020190: 03            272          DC.B    3
020191: 4C5352        273          ASC     "LSR"
020194: 04            274 M        DC.B    4
020195: 4D4F5645      275          ASC     "MOVE"
020199: 05            276          DC.B    5
02019A: 4D4F564541    277          ASC     "MOVEA"
02019F: 05            278          DC.B    5
0201A0: 4D4F56454D    279          ASC     "MOVEM"
0201A5: 05            280          DC.B    5
0201A6: 4D4F564550    281          ASC     "MOVEP"
0201AB: 05            282          DC.B    5
0201AC: 4D4F564551    283          ASC     "MOVEQ"
                      284 ;
                      286 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      287 ;
0201B1: 04            288          DC.B    4
0201B2: 4D554C53      289          ASC     "MULS"
0201B6: 04            290          DC.B    4
0201B7: 4D554C55      291          ASC     "MULU"
0201BB: 04            292 N        DC.B    4
0201BC: 4E424344      293          ASC     "NBCD"
0201C0: 03            294          DC.B    3
0201C1: 4E4547        295          ASC     "NEG"
0201C4: 04            296          DC.B    4
0201C5: 4E454758      297          ASC     "NEGX"
0201C9: 06            298          DC.B    6
0201CA: 4E4F4C495354  299          ASC     "NOLIST"       ;PSEUDO-OP
0201D0: 03            300          DC.B    3
0201D1: 4E4F50        301          ASC     "NOP"
0201D4: 03            302          DC.B    3
0201D5: 4E4F54        303          ASC     "NOT"
0201D8: 02            304          DC.B    2
0201D9: 4F52          305          ASC     "OR"
0201DB: 03            306          DC.B    3
0201DC: 4F5249        307          ASC     "ORI"
0201DF: 03            308          DC.B    3
0201E0: 4F5247        309          ASC     "ORG"          ;PSEUDO-OP
0201E3: 04            310          DC.B    4
0201E4: 50414745      311          ASC     "PAGE"         ;PSEUDO-OP
0201E8: 03            312          DC.B    3
0201E9: 504541        313          ASC     "PEA"
0201EC: 05            314 R        DC.B    5
0201ED: 5245534554    315          ASC     "RESET"
0201F2: 03            316          DC.B    3
0201F3: 524F4C        317          ASC     "ROL"
0201F6: 03            318          DC.B    3
0201F7: 524F52        319          ASC     "ROR"
0201FA: 04            320          DC.B    4
0201FB: 524F584C      321          ASC     "ROXL"
0201FF: 04            322          DC.B    4
020200: 524F5852      323          ASC     "ROXR"
020204: 03            324          DC.B    3
020205: 525445        325          ASC     "RTE"
020208: 03            326          DC.B    3
020209: 525452        327          ASC     "RTR"
02020C: 03            328          DC.B    3
02020D: 525453        329          ASC     "RTS"
020210: 04            330 S        DC.B    4
020211: 53424344      331          ASC     "SBCD"
020215: 03            332          DC.B    3
020216: 534343        333          ASC     "SCC"
020219: 03            334          DC.B    3
02021A: 534353        335          ASC     "SCS"
02021D: 03            336          DC.B    3
02021E: 534551        337          ASC     "SEQ"
020221: 02            338          DC.B    2
020222: 5346          339          ASC     "SF"
020224: 03            340          DC.B    3
020225: 534745        341          ASC     "SGE"
020228: 03            342          DC.B    3
020229: 534754        343          ASC     "SGT"
                      344 ;
                      346 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      347 ;
02022C: 03            348          DC.B    3
02022D: 534849        349          ASC     "SHI"
020230: 03            350          DC.B    3
020231: 534C45        351          ASC     "SLE"
020234: 03            352          DC.B    3
020235: 534C53        353          ASC     "SLS"
020238: 03            354          DC.B    3
020239: 534C54        355          ASC     "SLT"
02023C: 03            356          DC.B    3
02023D: 534D49        357          ASC     "SMI"
020240: 03            358          DC.B    3
020241: 534E45        359          ASC     "SNE"
020244: 03            360          DC.B    3
020245: 535049        361          ASC     "SPI"
020248: 02            362          DC.B    2
020249: 5354          363          ASC     "ST"
02024B: 03            364          DC.B    3
02024C: 535643        365          ASC     "SVC"
02024F: 03            366          DC.B    3
020250: 535653        367          ASC     "SVS"
020253: 05            368          DC.B    5
020254: 53484F5254    369          ASC     "SHORT"        ;PSEUDO-OP
020259: 04            370          DC.B    4
02025A: 53544F50      371          ASC     "STOP"
02025E: 03            372          DC.B    3
02025F: 535542        373          ASC     "SUB"
020262: 04            374          DC.B    4
020263: 53554241      375          ASC     "SUBA"
020267: 04            376          DC.B    4
020268: 53554249      377          ASC     "SUBI"
02026C: 04            378          DC.B    4
02026D: 53554251      379          ASC     "SUBQ"
020271: 04            380          DC.B    4
020272: 53554258      381          ASC     "SUBX"
020276: 04            382          DC.B    4
020277: 53574150      383          ASC     "SWAP"
02027B: 04            384          DC.B    4
02027C: 53594E43      385          ASC     "SYNC"         ;PSEUDO-OP
020280: 03            386 T        DC.B    3
020281: 544153        387          ASC     "TAS"
020284: 05            388          DC.B    5
020285: 5449544C45    389          ASC     "TITLE"        ;PSEUDO-OP
02028A: 04            390          DC.B    4
02028B: 54524150      391          ASC     "TRAP"
02028F: 05            392          DC.B    5
020290: 5452415056    393          ASC     "TRAPV"
020295: 03            394          DC.B    3
020296: 545354        395          ASC     "TST"
020299: 04            396          DC.B    4
02029A: 554E4C4B      397          ASC     "UNLK"
02029E: 00            398          DC.B    0              ;END LINK
02029F:               399          SYNC
                      400 ;
                      402 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      403 ;
                      404 ;------------------------
                      405 ;-- OP CODE JUMP TABLE --
                      406 ;------------------------
                      407 ;
0202A0: 000211B4      408 JTBL68K  DC.L    ABCD           ;ABCD
0202A4: 00021000      409          DC.L    TYPE7          ;ADD
0202A8: 00021036      410          DC.L    TYPE8          ;ADDA
0202AC: 00020F96      411          DC.L    TYPE5          ;ADDI
0202B0: 00021080      412          DC.L    TYPE9          ;ADDQ
0202B4: 000211BA      413          DC.L    ADDX           ;ADDX
0202B8: 00020FF0      414          DC.L    TYPE6          ;AND
0202BC: 00020F9A      415          DC.L    TYPE5A         ;ANDI
0202C0: 8002129E      416          DC.L    ASC+$80000000  ;ASC, PSEUDO-OP
0202C4: 00021106      417          DC.L    TYPE11         ;ASL
0202C8: 00021106      418          DC.L    TYPE11         ;ASR
0202CC: 00020E7C      419          DC.L    TYPE1          ;BCC
0202D0: 00020E7C      420          DC.L    TYPE1          ;BCS
0202D4: 00020E7C      421          DC.L    TYPE1          ;BEQ
0202D8: 00020E7C      422          DC.L    TYPE1          ;BGE
0202DC: 00020E7C      423          DC.L    TYPE1          ;BGT
0202E0: 00020E7C      424          DC.L    TYPE1          ;BHI
0202E4: 00020E7C      425          DC.L    TYPE1          ;BLE
0202E8: 00020E7C      426          DC.L    TYPE1          ;BLS
0202EC: 00020E7C      427          DC.L    TYPE1          ;BLT
0202F0: 00020E7C      428          DC.L    TYPE1          ;BMI
0202F4: 00020E7C      429          DC.L    TYPE1          ;BNE
0202F8: 00020E7C      430          DC.L    TYPE1          ;BPL
0202FC: 00020E7C      431          DC.L    TYPE1          ;BVC
020300: 00020E7C      432          DC.L    TYPE1          ;BVS
020304: 0002109E      433          DC.L    TYPE10         ;BCHG
020308: 0002109E      434          DC.L    TYPE10         ;BCLR
02030C: 00020E7C      435          DC.L    TYPE1          ;BRA
020310: 0002109E      436          DC.L    TYPE10         ;BSET
020314: 00020E7C      437          DC.L    TYPE1          ;BSR
020318: 000210C6      438          DC.L    BTST           ;BTST
02031C: 00020F72      439          DC.L    TYPE4          ;CHK
020320: 00020F56      440          DC.L    TYPE3          ;CLR
020324: 000212D4      441          DC.L    CMP            ;CMP
020328: 00021036      442          DC.L    TYPE8          ;CMPA
02032C: 00020F96      443          DC.L    TYPE5          ;CMPI
020330: 00020F14      444          DC.L    CMPM           ;CMPM
020334: 00020ECE      445          DC.L    DB             ;DBCC
020338: 00020ECE      446          DC.L    DB             ;DBCS
02033C: 00020ECE      447          DC.L    DB             ;DBEQ
020340: 00020ECE      448          DC.L    DB             ;DBF
020344: 00020ECE      449          DC.L    DB             ;DBGE
020348: 00020ECE      450          DC.L    DB             ;DBGT
02034C: 00020ECE      451          DC.L    DB             ;DBHI
020350: 00020ECE      452          DC.L    DB             ;DBLE
020354: 00020ECE      453          DC.L    DB             ;DBLS
020358: 00020ECE      454          DC.L    DB             ;DBLT
02035C: 00020ECE      455          DC.L    DB             ;DBMI
020360: 00020ECE      456          DC.L    DB             ;DBNE
020364: 00020ECE      457          DC.L    DB             ;DBPL
                      458 ;
                      460 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      461 ;
020368: 00020ECE      462          DC.L    DB             ;DBT
02036C: 00020ECE      463          DC.L    DB             ;DBVC
020370: 00020ECE      464          DC.L    DB             ;DBVS
020374: 00020ECE      465          DC.L    DB             ;DBRA
020378: 800212F0      466          DC.L    DC+$80000000   ;DC, PSEUDO-OP
02037C: 00020F72      467          DC.L    TYPE4          ;DIVS
020380: 00020F72      468          DC.L    TYPE4          ;DIVU
020384: 80021306      469          DC.L    DS+$80000000   ;DS, PSEUDO-OP
020388: 0002133C      470          DC.L    EOR            ;EOR
02038C: 00020F9A      471          DC.L    TYPE5A         ;EORI
020390: 80021346      472          DC.L    EQU+$80000000  ;EQU, PSEUDO-OP
020394: 000211DA      473          DC.L    EXG            ;EXG
020398: 00021244      474          DC.L    EXT            ;EXT
02039C: 8002137A      475          DC.L    FWRD+$80000000 ;FWRD, PSEUDO-OP
0203A0: 80021394      476          DC.L    GAP+$80000000  ;GAP, PSEUDO-OP
0203A4: 00020F32      477          DC.L    W1             ;ILLEGAL
0203A8: 00020F3E      478          DC.L    TYPE2          ;JMP
0203AC: 00020F3E      479          DC.L    TYPE2          ;JSR
0203B0: 00020F24      480          DC.L    LEA            ;LEA
0203B4: 00021190      481          DC.L    LINK           ;LINK
0203B8: 80020F30      482          DC.L    W0+$80000000   ;LIST, PSEUDO-OP
0203BC: 00021106      483          DC.L    TYPE11         ;LSL
0203C0: 00021106      484          DC.L    TYPE11         ;LSR
0203C4: 00021418      485          DC.L    MOVE           ;MOVE
0203C8: 000215AA      486          DC.L    MOVEA          ;MOVEA
0203CC: 000214DC      487          DC.L    MOVEM          ;MOVEM
0203D0: 000213A6      488          DC.L    MOVEP          ;MOVEP
0203D4: 00021174      489          DC.L    MOVEQ          ;MOVEQ
0203D8: 00020F72      490          DC.L    TYPE4          ;MULS
0203DC: 00020F72      491          DC.L    TYPE4          ;MULU
0203E0: 00020F56      492          DC.L    TYPE3          ;NBCD
0203E4: 00020F56      493          DC.L    TYPE3          ;NEG
0203E8: 00020F56      494          DC.L    TYPE3          ;NEGX
0203EC: 80020F30      495          DC.L    W0+$80000000   ;NOLIST, PSEUDO-OP
0203F0: 00020F32      496          DC.L    W1             ;NOP
0203F4: 00020F56      497          DC.L    TYPE3          ;NOT
0203F8: 00020FF0      498          DC.L    TYPE6          ;OR
0203FC: 00020F9A      499          DC.L    TYPE5A         ;ORI
020400: 800213B8      500          DC.L    ORG+$80000000  ;ORG, PSEUDO-OP
020404: 80020F30      501          DC.L    W0+$80000000   ;PAGE, PSEUDO-OP
020408: 00020F3E      502          DC.L    TYPE2          ;PEA
02040C: 00020F32      503          DC.L    W1             ;RESET
020410: 00021106      504          DC.L    TYPE11         ;ROL
020414: 00021106      505          DC.L    TYPE11         ;ROR
020418: 00021106      506          DC.L    TYPE11         ;ROXL
02041C: 00021106      507          DC.L    TYPE11         ;ROXR
020420: 00020F32      508          DC.L    W1             ;RTE
020424: 00020F32      509          DC.L    W1             ;RTR
020428: 00020F32      510          DC.L    W1             ;RTS
02042C: 000211B4      511          DC.L    ABCD           ;SBCD
020430: 00020F50      512          DC.L    SCC            ;SCC
020434: 00020F50      513          DC.L    SCC            ;SCS
                      514 ;
                      516 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      517 ;
020438: 00020F50      518          DC.L    SCC            ;SEQ
02043C: 00020F50      519          DC.L    SCC            ;SF
020440: 00020F50      520          DC.L    SCC            ;SGE
020444: 00020F50      521          DC.L    SCC            ;SGT
020448: 00020F50      522          DC.L    SCC            ;SHI
02044C: 00020F50      523          DC.L    SCC            ;SLE
020450: 00020F50      524          DC.L    SCC            ;SLS
020454: 00020F50      525          DC.L    SCC            ;SLT
020458: 00020F50      526          DC.L    SCC            ;SMI
02045C: 00020F50      527          DC.L    SCC            ;SNE
020460: 00020F50      528          DC.L    SCC            ;SPL
020464: 00020F50      529          DC.L    SCC            ;ST
020468: 00020F50      530          DC.L    SCC            ;SVC
02046C: 00020F50      531          DC.L    SCC            ;SVS
020470: 800213F6      532          DC.L    SHORT+$80000000 ;SHORT, PSEUDO-OP
020474: 00021220      533          DC.L    STOP           ;STOP
020478: 00021000      534          DC.L    TYPE7          ;SUB
02047C: 00021036      535          DC.L    TYPE8          ;SUBA
020480: 00020F96      536          DC.L    TYPE5          ;SUBI
020484: 00021080      537          DC.L    TYPE9          ;SUBQ
020488: 000211BA      538          DC.L    ADDX           ;SUBX
02048C: 0002124C      539          DC.L    SWAP           ;SWAP
020490: 00021416      540          DC.L    SYNC           ;SYNC, PSEUDO-OP
020494: 00020F50      541          DC.L    SCC            ;TAS
020498: 80020F30      542          DC.L    W0+$80000000   ;TITLE, PSEUDO-OP
02049C: 0002120E      543          DC.L    TRAP           ;TRAP
0204A0: 00020F32      544          DC.L    W1             ;TRAPV
0204A4: 00020F56      545          DC.L    TYPE3          ;TST
0204A8: 00021234      546          DC.L    UNLK           ;UNLK
                      547 ;
                      548 ;
                      549 ;
                      550 ; THIS ASSEMBLER ASSUMES A 512K (OR MORE) DTACK
                      551 ; GRANDE OR BEAUCOUP GRANDE.  THE BIT-BANGING
                      552 ; IS DONE IN ASSEMBLY LANGUAGE AND THE FILE
                      553 ; HANDLING AND ERROR REPORTING IS DONE IN AN
                      554 ; HLL - IN THIS CASE, HALGOL.
                      555 ;
                      556 ; COMMUNICATION BETWEEN THE ASSEMBLER AND HALGOL
                      557 ; IS BASED ON CERTAIN ARRAYS WHOSE LOCATION IS
                      558 ; FIXED (BY HALGOL) AND KNOWN BY THE ASSEMBLER.
                      559 ;
                      561 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      562 ;
                      563 ;---------------------
                      564 ;-- ERROR REPORTING --
                      565 ;---------------------
                      566 ;
                      567 ; EACH ERROR ENTRY CONSISTS OF AN ERROR # (ONE
                      568 ; BYTE), A LINE NUMBER (TWO BYTES), AND A FILE
                      569 ; NUMBER (ONE BYTE).  THE ERROR COUNT IS STORED
                      570 ; AT $1428 AND CAN BE ACCESSED VIA A 'PEEKW'.
                      571 ;
0204AC: 48E78080      572 ERROR    MOVEM.L D0/A0,-(A7)    ;SAVE REGS
0204B0: 30381428      573          MOVE.W  ERRCNT,D0      ;0, 6, 12, ...
0204B4: 207900020026  574          MOVE.L  ERRTBL,A0      ;PTR TO ERR ARRAY
0204BA: 11870001      575          MOVE.B  D7,1(A0,D0)    ;STORE ERROR #
0204BE: 31B8142C0002  576          MOVE.W  LINECNT,2(A0,D0) ;STORE LINE #
0204C4: 11B8142B0005  577          MOVE.B  FILECNT+1,5(A0,D0) ;STORE FILE #
0204CA: 5C781428      578          ADDQ.W  #6,ERRCNT      ;INCR ERR COUNT
0204CE: 4CDF0101      579          MOVEM.L (A7)+,D0/A0    ;RESTORE REGS
0204D2: 2E781414      580          MOVE.L  STKPTR,A7      ;RESTORE STK PTR
0204D6: 600003D4      581          BRA.L   ASMLIN         ;NEXT LINE #
                      582 ;
                      583 ;--------------------
                      584 ;-- ERROR MESSAGES --
                      585 ;--------------------
                      586 ;
                      587 ; THESE ERROR MESSAGES ARE TRANSFERRED TO
                      588 ; THE HALGOL STRING ARRAY 'ERRMSG$()' AT
                      589 ; THE BEGINNING OF ASSEMBLY PASS 1.
                      590 ;
0204DA: 0F            591 ERRMSG   DC.B    15             ;E0
0204DB: 4E4F5420494D  592          ASC     "NOT IMPLEMENTED"
0204EA: 0E            593          DC.B    14
0204EB: 424144204C41  594          ASC     "BAD LABEL CHAR"
0204F9: 0E            595          DC.B    14             ;E2
0204FA: 4C4142454C20  596          ASC     "LABEL TOO LONG"
020508: 10            597          DC.B    16
020509: 4D4E454D4F4E  598          ASC     "MNEMONIC MISSING"
020519: 13            599          DC.B    19             ;E4
02051A: 424144205349  600          ASC     "BAD SIZE IDENTIFIER"
02052D: 10            601          DC.B    16
02052E: 494C4C454741  602          ASC     "ILLEGAL MNEMONIC"
02053E: 0C            603          DC.B    12             ;E6
02053F: 53594E544158  604          ASC     "SYNTAX ERROR"
02054B: 0C            605          DC.B    12
02054C: 424144204845  606          ASC     "BAD HEX CHAR"
020558: 0E            607          DC.B    14             ;E8
020559: 3C45413E204E  608          ASC     "<EA> NOT FOUND"
020567: 0D            609          DC.B    13
020568: 57524F4E4720  610          ASC     "WRONG # CHARS"
020575: 09            611          DC.B    9              ;E10
020576: 24204D495353  612          ASC     "$ MISSING"
02057F: 0B            613          DC.B    11
020580: 42414420494E  614          ASC     "BAD INTEGER"
02058B: 10            615          DC.B    16             ;E12
02058C: 424144204445  616          ASC     "BAD DECIMAL CHAR"
02059C: 11            617          DC.B    17
02059D: 535243204649  618          ASC     "SRC FIELD MISSING"
                      619 ;
                      621 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      622 ;
0205AE: 12            623          DC.B    18             ;E14
0205AF: 444553542046  624          ASC     "DEST FIELD MISSING"
0205C1: 0F            625          DC.B    15
0205C2: 4455504C4943  626          ASC     "DUPLICATE LABEL"
0205D1: 08            627          DC.B    8              ;E16
0205D2: 424144203C45  628          ASC     "BAD <EA>"
0205DA: 0C            629          DC.B    12
0205DB: 4E4F20484558  630          ASC     "NO HEX CHARS"
0205E7: 12            631          DC.B    18             ;E18
0205E8: 544F4F204D41  632          ASC     "TOO MANY HEX CHARS"
0205FA: 10            633          DC.B    16
0205FB: 3C45413E2054  634          ASC     "<EA> TOO COMPLEX"
02060B: 11            635          DC.B    17             ;E20
02060C: 4E4557204144  636          ASC     "NEW ADR < OLD ADR"
02061D: 12            637          DC.B    18
02061E: 434F44452047  638          ASC     "CODE GAP TOO LARGE"
020630: 14            639          DC.B    20             ;E22
020631: 494C4C454741  640          ASC     "ILLEGAL ADDRESS MODE"
020645: 13            641          DC.B    19
020646: 4252414E4348  642          ASC     "BRANCH OUT OF RANGE"
020659: 0C            643          DC.B    12             ;E24
02065A: 494C4C454741  644          ASC     "ILLEGAL SIZE"
020666: 0D            645          DC.B    13
020667: 424144205053  646          ASC     "BAD PSEUDO-OP"
020674: 0C            647          DC.B    12             ;E26
020675: 3C45413E204D  648          ASC     "<EA> MISSING"
020681: 10            649          DC.B    16
020682: 45585052204E  650          ASC     "EXPR NOT NUMERIC"
020692: 10            651          DC.B    16             ;E28
020693: 554E5052494E  652          ASC     "UNPRINTABLE CHAR"
0206A3: 0D            653          DC.B    13
0206A4: 524546204E4F  654          ASC     "REF NOT FOUND"
0206B1: 15            655          DC.B    21             ;E30
0206B2: 554E4D415443  656          ASC     "UNMATCHED PARENTHESES"
0206C7: 11            657          DC.B    17
0206C8: 424144204D4E  658          ASC     "BAD MNEMONIC CHAR"
0206D9: 11            659          DC.B    17             ;E32
0206DA: 2E4220262027  660          ASC     ".B & 'AN' ILLEGAL"
0206EB: 12            661          DC.B    18
0206EC: 4C4142454C20  662          ASC     "LABEL REF TOO LONG"
0206FE: 0F            663          DC.B    15             ;E34
0206FF: 4E4F2042494E  664          ASC     "NO BINARY CHARS"
02070E: 15            665          DC.B    21
02070F: 544F4F204D41  666          ASC     "TOO MANY BINARY CHARS"
020724: 12            667          DC.B    18             ;E36
020725: 544F4F204D41  668          ASC     "TOO MANY DEC CHARS"
020737: 14            669          DC.B    20
020738: 3C4558505245  670          ASC     "<EXPRESSION> MISSING"
02074C: 11            671          DC.B    17             ;E38
02074D: 4F5045524154  672          ASC     "OPERATOR EXPECTED"
02075E: 12            673          DC.B    18
02075F: 424144204348  674          ASC     "BAD CHAR IN <EXPR>"
020771: 0F            675          DC.B    15             ;E40
020772: 454C454D454E  676          ASC     "ELEMENT MISSING"
020781: 13            677          DC.B    19
020782: 494C4C454741  678          ASC     "ILLEGAL FORWARD REF"
                      679 ;
                      681 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      682 ;
020795: 12            683          DC.B    18             ;E42
020796: 544F4F204D41  684          ASC     "TOO MANY ASC CHARS"
0207A8: 0C            685          DC.B    12
0207A9: 4E4F20415343  686          ASC     "NO ASC CHARS"
0207B5: 10            687          DC.B    16             ;E44
0207B6: 4E4F20434C4F  688          ASC     "NO CLOSING QUOTE"
0207C6: 15            689          DC.B    21
0207C7: 4E4F20434C4F  690          ASC     "NO CLOSING APOSTROPHE"
0207DC: 0E            691          DC.B    14             ;E46
0207DD: 53414D452052  692          ASC     "SAME REGISTERS"
0207EB: 0D            693          DC.B    13
0207EC: 424144204445  694          ASC     "BAD DELIMITER"
0207F9: 0D            695          DC.B    13             ;E48
0207FA: 424144203C45  696          ASC     "BAD <EA> CHAR"
020807: 00            697          DC.B    0              ;ERR TBL END
020808:               698          SYNC
                      699 ;
020808: 7E06          700 SYNERR   MOVEQ   #6,D7          ;SYNTAX ERROR
02080A: 4EF9000204AC  701          JMP     ERROR
                      702 ;
                      704 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      705 ;
                      706 ;-------------------------------------------
                      707 ;-- PERFORM PASS 1 OF THE 68000 ASSEMBLER --
                      708 ;-------------------------------------------
                      709 ;
                      710 ; THIS IS THE ENTRANCE POINT FOR THE FIRST FILE.
                      711 ;
                      712 ; INITIALIZE THE LABEL TABLE (nK X 12 BYTES)
                      713 ;
020810: 70FF          714 ASM      MOVEQ   #255,D0        ;D0 = $FFFFFFFF
020812: 32390002000C  715          MOVE.W  NLBLS,D1       ;# OF LABELS -1
020818: 20790002001E  716          MOVE.L  LBLTBL,A0      ;PTR TO TABLE
02081E: 21C8140C      717          MOVE.L  A0,LBLPTR      ;LABEL TABLE PTR
020822: 20C0          718 ASM1     MOVE.L  D0,(A0)+       ;-- INIT ONE LABEL
020824: 20C0          719          MOVE.L  D0,(A0)+       ;   OF THE LABEL
020826: 20C0          720          MOVE.L  D0,(A0)+       ;   TBL (12 BYTES)
020828: 51C9FFF8      721          DBF     D1,ASM1        ;LOOP 'TIL -1
                      722 ;
                      723 ;
                      724 ; MOVE THE ERROR MSGS INTO THE HALGOL ARRAY
                      725 ;
02082C: 2F0B          726          MOVE.L  A3,-(A7)       ;SAVE A3
02082E: 41F9000204DA  727          LEA     ERRMSG,A0      ;SOURCE TABLE PTR
020834: 2C390002002E  728          MOVE.L  ERMSGARY,D6    ;DEST ARRAY
02083A: 26790002002A  729          MOVE.L  MSGSHDW,A3     ;PTR TO SHDW ARY
                      730 ;
020840: 1018          731 ASM2     MOVE.B  (A0)+,D0       ;MESSAGE LENGTH
020842: 6712          732          BEQ     ASM4           ;DONE IF ZERO
                      733 ;
020844: 16C0          734          MOVE.B  D0,(A3)+       ;MSG LEN = CURR LEN
020846: 2A46          735          MOVE.L  D6,A5          ;MSG ARY ELEMENT PTR
020848: 1AD8          736 ASM3     MOVE.B  (A0)+,(A5)+    ;MOVE A BYTE
02084A: 5300          737          SUBQ.B  #1,D0          ;DECR COUNT
02084C: 66FA          738          BNE     ASM3           ;LOOP 'TIL ZERO
                      739 ;
02084E: DCBC00000020  740          ADD.L   #32,D6         ;NEXT DEST ELEMENT
020854: 60EA          741          BRA     ASM2           ;NEXT MESSAGE
                      742 ;
                      743 ;
                      744 ; INITIALIZE 'SHORT' TO $7FFF  (NORMAL DEFAULT)
                      745 ; INITIALIZE 'FORWARD' TO .L (.L = $FF)
                      746 ; (IGNORE 'LIST' AND 'NOLIST' ON PASS1)
                      747 ;
020856: 265F          748 ASM4     MOVE.L  (A7)+,A3       ;RESTORE A3
020858: 21FC00007FFF  749          MOVE.L  #$00007FFF,SHRT ;NORMAL DEFAULT
020860: 11FC00FF1435  750          MOVE.B  #$FF,FORWARD   ;DEFAULT .L
020866: 42381438      751          CLR.B   ORGFLG         ;CLR 1ST ORG FLAG
02086A: 31FC04001430  752          MOVE.W  #1024,GAPSIZE  ;DEFAULT GAP
020870: 42781428      753          CLR.W   ERRCNT         ;CLEAR ERROR COUNT
020874: 4278142E      754          CLR.W   LBLCNT         ;INIT LABEL COUNT
020878: 4278142A      755          CLR.W   FILECNT        ;INIT FILE COUNT
02087C: 42B81418      756          CLR.L   ADDRESS        ;INIT ADR = ZERO
020880: 23F900020022  757          MOVE.L  TEXT,SRC       ;INIT SOURCE PTR
02088A: 23F900020016  758          MOVE.L  RAMDISK,DEST   ;INIT DEST PTR
                      759 ;
                      761 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      762 ;
                      763 ;------------------------------------------
                      764 ;-- ASSEMBLE ONE FILE OF THE SOURCE CODE --
                      765 ;------------------------------------------
                      766 ;
                      767 ; THIS IS THE ENTRANCE POINT FOR SUBSEQUENT FILES.
                      768 ;
020894: 48E7007A      769 ASMFILE  MOVEM.L A1-A4/A6,-(A7) ;SAVE REGS
020898: 21CF1414      770          MOVE.L  A7,STKPTR      ;SAVE STACK PTR
02089C: 21F900020022  771          MOVE.L  TEXT,LINEPTR   ;PTR TO TEXT START
0208A4: 43F82000      772          LEA     MASKTBL,A1     ;CHAR MASK TBL PTR
0208A8: 4278142C      773          CLR.W   LINECNT        ;CLEAR LINE COUNT
                      774 ;
                      775 ;------------------------------------------
                      776 ;-- ASSEMBLE ONE LINE OF THE SOURCE CODE --
                      777 ;------------------------------------------
                      778 ;
                      779 ; A0 = LINE TEXT SCAN POINTER
                      780 ; A1 = POINTER TO CHAR MASK
                      781 ; D5 = SPACE CHAR (STRING CONSTANT)
                      782 ;
0208AC: 5278142C      783 ASMLIN   ADDQ.W  #1,LINECNT     ;INCR LINE CNT
0208B0: 7000          784          MOVEQ   #0,D0          ;CLR UPPER BITS
0208B2: 7C00          785          MOVEQ   #0,D6          ;CLR UPPER BITS
0208B4: 42781436      786          CLR.W   LBLFLG         ;CLR LBLFLG, WEIRD
0208B8: 7A20          787          MOVEQ   #" ",D5        ;D5 = SPACE CHAR
0208BA: 20781410      788          MOVE.L  LINEPTR,A0     ;START OF LINE
0208BE: 1018          789          MOVE.B  (A0)+,D0       ;FETCH LINK BYTE
0208C0: 672A          790          BEQ     FILEEND        ;END IF $00
                      791 ;
                      792 ; SET 'LINEPTR' TO POINT TO THE START OF THE NEXT LINE
                      793 ;
0208C2: 2448          794          MOVE.L  A0,A2          ;COPY LINE PTR
0208C4: D1C0          795          ADD.L   D0,A0          ;PTR TO NEXT LINE
0208C6: 21C81410      796          MOVE.L  A0,LINEPTR     ;PTR TO NEXT LINE
                      797 ;
                      798 ; COPY THE LINE TO A TEMPORARY BUFFER WHICH HAS
                      799 ; A NULL 'END LINK'  (NULL = $00)
                      800 ;
0208CA: 4BF90002197E  801          LEA     LINE,A5        ;TEMP LINE BUFFER
0208D0: 1ADA          802 ASML1    MOVE.B  (A2)+,(A5)+    ;COPY A BYTE
0208D2: 5300          803          SUBQ.B  #1,D0          ;DECR COUNT
0208D4: 66FA          804          BNE     ASML1          ;LOOP 'TIL ZERO
                      805 ;
0208D6: 1AC0          806          MOVE.B  D0,(A5)+       ;END LINK = $00
0208D8: 41F90002197E  807          LEA     LINE,A0        ;PTR TO LINE BUFFER
                      808 ;
0208DE: 1C18          809          MOVE.B  (A0)+,D6       ;NEXT CHAR
                      810 ;
                      812 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      813 ;
                      814 ; SVC MNEMONIC IF 1ST CHAR IS A SPACE
                      815 ;
0208E0: BC05          816          CMP.B   D5,D6          ;SPACE CHAR ?
0208E2: 675C          817          BEQ     MNE            ;IF SO
                      818 ;
                      819 ; IGNORE COMMENT LINE IF 1ST CHAR = SEMICOLON
                      820 ;
0208E4: 0C06003B      821          CMPI.B  #";",D6        ;SEMICOLON ?
0208E8: 67C2          822          BEQ     ASMLIN         ;NEXT LINE IF SO
                      823 ;
                      824 ; CONTINUE, SERVICING THE LABEL
                      825 ;
0208EA: 6018          826          BRA     LABEL          ;CONTINUE
                      827 ;
                      828 ;
                      829 ;--------------------------------------------
                      830 ; ASSEMBLY OF THIS FILE IS COMPLETED (PASS 1)
                      831 ;--------------------------------------------
                      832 ;
                      833 ; RETURN TO HALGOL FOR THE NEXT FILE (IF ANY)
                      834 ;
0208EC: 5278142A      835 FILEEND  ADDQ.W  #1,FILECNT     ;INCR FILE #
0208F0: 61000FFA      836          BSR.L   XFR            ;STORE THE FILE
0208F4: 23CD0000FFE4  837          MOVE.L  A5,DEST        ;PTR TO NEXT FILE
0208FA: 2E781414      838          MOVE.L  STKPTR,A7      ;RESTORE STK PTR
0208FE: 4CDF5E00      839          MOVEM.L (A7)+,A1-A4/A6 ;RESTORE REGS
020902: 4ED4          840          JMP     (A4)           ;RETURN TO HALGOL
                      841 ;
                      842 ;
                      843 ;-----------------------
                      844 ;-- SERVICE THE LABEL --
                      845 ;-----------------------
                      846 ;
                      847 ; WE HAVE A LABEL; STORE IT IN 'LBLTEMP'
                      848 ;
020904: 16316000      849 LABEL    MOVE.B  (A1,D6),D3     ;FETCH MASK
020908: 02030020      850          ANDI.B  #$20,D3        ;ALPHABETIC ?
02090C: 6758          851          BEQ     ERR1M          ;IF NOT
                      852 ;
                      853 ; A2 = PTR TO STRING BUFFER
                      854 ;
02090E: 45F81400      855          LEA     LBLTEMP,A2     ;SET STR BUFFR PTR
020912: 14C6          856          MOVE.B  D6,(A2)+       ;STORE 1ST CHAR
020914: 7007          857          MOVEQ   #7,D0          ;ADD'TL BYTE COUNT
                      858 ;
020916: 1C18          859 LBL      MOVE.B  (A0)+,D6       ;NEXT CHAR
020918: BC05          860          CMP.B   D5,D6          ;SPACE CHAR ?
02091A: 6714          861          BEQ     LBLEND         ;IF SO
                      862 ;
02091C: 16316000      863          MOVE.B  (A1,D6),D3     ;FETCH MASK
020920: 02030030      864          ANDI.B  #$30,D3        ;ALPHANUMERIC ?
020924: 6740          865          BEQ     ERR1M          ;ILLEGAL LABEL CHAR
                      866 ;
020926: 14C6          867          MOVE.B  D6,(A2)+       ;STORE CHAR
020928: 5300          868          SUBQ.B  #1,D0          ;DECR LABEL COUNT
02092A: 6AEA          869          BPL     LBL            ;NEXT CHAR
                      870 ;
                      872 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      873 ;
02092C: 7E02          874          MOVEQ   #2,D7          ;LABEL TOO LONG
02092E: 6040          875 ERR      BRA     ERRM
                      876 ;
020930: 4A00          877 LBLEND   TST.B   D0             ;TEST LABEL COUNT
020932: 6706          878          BEQ     FLAGLBL        ;IF 8 CHARS
                      879 ;
                      880 ; PAD THE LABEL WITH SPACES FOR 8 TOTAL CHARS
                      881 ;
020934: 14C5          882 LBLEND1  MOVE.B  D5,(A2)+       ;STORE A SPACE
020936: 5300          883          SUBQ.B  #1,D0          ;DECR COUNT
020938: 66FA          884          BNE     LBLEND1        ;LOOP 'TIL ZERO
                      885 ;
                      886 ; SET THE LABEL FLAG TO INDICATE A LABEL PRESENT
                      887 ;
02093A: 11FC00011436  888 FLAGLBL  MOVE.B  #1,LBLFLG      ;SIGNAL A LABEL
                      889 ;
                      890 ;
                      891 ;--------------------------
                      892 ;-- SERVICE THE MNEMONIC --
                      893 ;--------------------------
                      894 ;
                      895 ; THE LABEL (IF ANY ) IS SERVICED;  CONTINUE WITH
                      896 ; THE INSTRUCTION MNEMONIC (OR PSEUDO-OP).
                      897 ;
020940: 45F81300      898 MNE      LEA     STR,A2         ;SCRATCH STRING PTR
020944: 7000          899          MOVEQ   #0,D0          ;INIT CHAR COUNT
020946: 7200          900          MOVEQ   #0,D1          ;NO SIZE DELIMTER
                      901 ;
020948: 1C18          902 MNE1     MOVE.B  (A0)+,D6       ;FETCH CHAR
02094A: 6748          903          BEQ     MNEEND         ;IF LINE LINK
                      904 ;
02094C: BC05          905          CMP.B   D5,D6          ;SPACE CHAR ?
02094E: 6744          906          BEQ     MNEEND         ;IF SPACE
                      907 ;
020950: 0C06002E      908          CMPI.B  #".",D6        ;PERIOD DELIM'TR ?
020954: 671E          909          BEQ     PDLIM          ;IF SO
                      910 ;
020956: 16316000      911          MOVE.B  (A1,D6),D3     ;FETCH CHAR MASK
02095A: 02030020      912          ANDI.B  #$20,D3        ;AN ALPHA CHAR ?
02095E: 670A          913          BEQ     ERR5M          ;ILLEGAL MNE CHAR
                      914 ;
020960: 14C6          915          MOVE.B  D6,(A2)+       ;STORE OP CODE CHAR
020962: 5240          916          ADDQ.W  #1,D0          ;INCR CHAR COUNT
020964: 60E2          917          BRA     MNE1           ;NEXT CHAR
                      918 ;
020966: 7E01          919 ERR1M    MOVEQ   #1,D7          ;BAD LABEL CHAR
020968: 6006          920          BRA     ERRM
                      921 ;
02096A: 7E05          922 ERR5M    MOVEQ   #5,D7          ;ILLEGAL MNEMONIC
02096C: 6002          923          BRA     ERRM
                      924 ;
02096E: 7E04          925 ERR4M    MOVEQ   #4,D7          ;BAD SIZE IDENT'FR
020970: 6000FB3A      926 ERRM     BRA     ERROR
                      927 ;
                      929 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      930 ;
                      931 ;----------------------------
                      932 ;-- SERVICE THE SIZE FIELD --
                      933 ;----------------------------
                      934 ;
                      935 ; WE HAVE A PERIOD (".") SIZE DELIMITER;  CHECK
                      936 ; FOR "B", "W", OR "L" SIZE IDENTIFIER.
                      937 ;
                      938 ; 0 = NO DELIMTR,  -1 = .B,  1 = .W,  2 = .L
                      939 ;
020974: 1C18          940 PDLIM    MOVE.B  (A0)+,D6       ;NEXT CHAR
020976: 7201          941          MOVEQ   #1,D1          ;ASSUME .W
020978: 0C060057      942          CMPI.B  #"W",D6        ;WORD ?
02097C: 6710          943          BEQ     SIZEND         ;IF SO
                      944 ;
02097E: 72FF          945          MOVEQ   #255,D1        ;ASSUME .B
020980: 0C060042      946          CMPI.B  #"B",D6        ;BYTE ?
020984: 6708          947          BEQ     SIZEND         ;IF SO
                      948 ;
020986: 7202          949          MOVEQ   #2,D1          ;MUST BE .L
020988: 0C06004C      950          CMPI.B  #"L",D6        ;LONG WORD ?
02098C: 66E0          951          BNE     ERR4M          ;BAD SIZE IDENT'FR
                      952 ;
02098E: 1C18          953 SIZEND   MOVE.B  (A0)+,D6       ;NEXT CHAR
020990: BC05          954          CMP.B   D5,D6          ;A SPACE ?
020992: 66DA          955          BNE     ERR4M          ;BAD SIZE IDENT'FR
                      956 ;
020994: 11C11434      957 MNEEND   MOVE.B  D1,SIZEID      ;STORE THE SIZE
                      958 ;
                      959 ;------------------------------------
                      960 ;-- FIND THE INDEX OF THE MNEMONIC --
                      961 ;------------------------------------
                      962 ;
                      963 ; WE HAVE COLLECTED THE INSTRUCTION MNEMONIC
                      964 ; (OR PSEUDO-OP) AND ITS SIZE FIELD, IF ANY.
                      965 ;
                      966 ; NOW CHECK FOR ITS POSITION IN THE MNE TABLE
                      967 ;
020998: 7E03          968          MOVEQ   #3,D7          ;POSSIBLE ERROR
02099A: 4A40          969          TST.W   D0             ;TEST CHAR COUNT
02099C: 6790          970          BEQ     ERR            ;MNEMONIC MISSING
                      971 ;
02099E: 12381300      972          MOVE.B  STR,D1         ;1ST MNE CHAR
0209A2: 0C01004D      973          CMPI.B  #"M",D1        ;M ?
0209A6: 6542          974          BCS     TB             ;IF LESS
0209A8: 671C          975          BEQ     MM             ;IF M
                      976 ;
0209AA: 0C010052      977          CMPI.B  #"R",D1        ;R ?
0209AE: 6220          978          BHI     TS             ;IF MORE
0209B0: 670A          979          BEQ     RR             ;IF R
                      980 ;
0209B2: 47F9000201BB  981          LEA     N,A3           ;PTR TO N
0209B8: 7250          982          MOVEQ   #80,D1
0209BA: 607E          983          BRA     MNE2
                      984 ;
                      986 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      987 ;
0209BC: 47F9000201EC  988 RR       LEA     R,A3
0209C2: 725B          989          MOVEQ   #91,D1
0209C4: 6074          990          BRA     MNE2
                      991 ;
0209C6: 47F900020194  992 MM       LEA     M,A3
0209CC: 7249          993          MOVEQ   #73,D1
0209CE: 606A          994          BRA     MNE2
                      995 ;
0209D0: 0C010053      996 TS       CMPI.B  #"S",D1        ;S ?
0209D4: 620A          997          BHI     TT             ;IF MORE
                      998 ;
0209D6: 47F900020210  999          LEA     S,A3
0209DC: 7263         1000          MOVEQ   #99,D1
0209DE: 605A         1001          BRA     MNE2
                     1002 ;
0209E0: 47F900020280 1003 TT       LEA     T,A3
0209E6: 727D         1004          MOVEQ   #125,D1
0209E8: 6050         1005          BRA     MNE2
                     1006 ;
0209EA: 0C010042     1007 TB       CMPI.B  #"B",D1        ;B ?
0209EE: 670C         1008          BEQ     BB             ;IF B
0209F0: 6214         1009          BHI     TD             ;IF MORE
                     1010 ;
0209F2: 47F90002004C 1011          LEA     A,A3
0209F8: 7200         1012          MOVEQ   #0,D1
0209FA: 603E         1013          BRA     MNE2
                     1014 ;
0209FC: 47F90002007E 1015 BB       LEA     B,A3
020A02: 720B         1016          MOVEQ   #11,D1
020A04: 6034         1017          BRA     MNE2
                     1018 ;
020A06: 0C010044     1019 TD       CMPI.B  #"D",D1        ;D ?
020A0A: 670C         1020          BEQ     DD             ;IF D
020A0C: 6214         1021          BHI     TJ             ;IF MORE
                     1022 ;
020A0E: 47F9000200D2 1023          LEA     C,A3
020A14: 721F         1024          MOVEQ   #31,D1
020A16: 6022         1025          BRA     MNE2
                     1026 ;
020A18: 47F9000200ED 1027 DD       LEA     D,A3
020A1E: 7225         1028          MOVEQ   #37,D1
020A20: 6018         1029          BRA     MNE2
                     1030 ;
020A22: 0C01004A     1031 TJ       CMPI.B  #"J",D1        ;J ?
020A26: 640A         1032          BCC     JJ             ;IF J OR MORE
                     1033 ;
020A28: 47F900020150 1034          LEA     E,A3
020A2E: 723A         1035          MOVEQ   #58,D1
020A30: 6008         1036          BRA     MNE2
                     1037 ;
020A32: 47F900020176 1038 JJ       LEA     J,A3
020A38: 7242         1039          MOVEQ   #66,D1
                     1040 ;
020A3A: 45F81300     1041 MNE2     LEA     STR,A2         ;PTR TO MNE START
020A3E: E549         1042          LSL.W   #2,D1          ;MNE # --> INDEX
020A40: 5941         1043          SUBQ.W  #4,D1          ;MNE OFFSET = -4
020A42: 7E05         1044          MOVEQ   #5,D7          ;POSSIBLE ERROR
                     1045 ;
                     1047 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1048 ;
                     1049 ; FIND A TABLE ENTRY WHOSE LENGTH IS THE SAME
                     1050 ; (A ZERO LINK MARKS THE END OF THE TABLE)
                     1051 ;
                     1052 ; A2 = PTR TO MNEMONIC
                     1053 ; A3 = PTR TO MNEMONIC TABLE
                     1054 ; D0 = MNEMONIC LENGTH (IN BYTES)
                     1055 ; D1 = MNEMONIC OFFSET (0, 4, 8, ...)
                     1056 ;
020A44: 1C1B         1057 MNE3     MOVE.B  (A3)+,D6       ;FETCH LINK
020A46: 6700FEE6     1058          BEQ     ERR            ;ILLEGAL MNEMONIC
                     1059 ;
020A4A: 5841         1060          ADDQ.W  #4,D1          ;INCR MNE OFFSET
020A4C: 2A4B         1061          MOVE.L  A3,A5          ;COPY PTR
020A4E: D7C6         1062          ADD.L   D6,A3          ;PTR TO NEXT MNE
020A50: BC00         1063          CMP.B   D0,D6          ;LENGTH MATCH ?
020A52: 66F0         1064          BNE     MNE3           ;IF NOT
                     1065 ;
                     1066 ; THE LENGTH OF THE MNEMONIC MATCHES THE STR
                     1067 ;
020A54: 284A         1068          MOVE.L  A2,A4          ;PTR TO TEMP STR
020A56: 1600         1069          MOVE.B  D0,D3          ;COPY COUNT
020A58: 1C1C         1070 MNE4     MOVE.B  (A4)+,D6       ;A CHAR OF 'STR'
020A5A: BC1D         1071          CMP.B   (A5)+,D6       ;CHARS MATCH ?
020A5C: 66E6         1072          BNE     MNE3           ;NO;  NEXT MNE
                     1073 ;
020A5E: 5303         1074          SUBQ.B  #1,D3          ;DECR CHAR COUNT
020A60: 66F6         1075          BNE     MNE4           ;LOOP 'TIL ZERO
                     1076 ;
                     1077 ; THE MNEMONIC AND THE STRING MATCH !
                     1078 ;
020A62: 0C4100F0     1079          CMPI.W  #240,D1        ;MNE = 'EQU' ?
020A66: 670008DE     1080          BEQ.L   EQU            ;IF SO
                     1081 ;
020A6A: 45F9000202A0 1082          LEA     JTBL68K,A2     ;JUMP ADR TABLE
020A70: 2E321000     1083          MOVE.L  (A2,D1),D7     ;D7 = JUMP ADR
020A74: 6B0A         1084          BMI     MNE5           ;IF MSB IS SET
                     1085 ;
                     1086 ; SET THE ADDRESS EVEN
                     1087 ;
020A76: 52B81418     1088          ADDQ.L  #1,ADDRESS     ;ROUND ADR UP
020A7A: 08B80000141B 1089          BCLR    #0,ADDRESS+3
                     1090 ;
020A80: 4A381436     1091 MNE5     TST.B   LBLFLG         ;A LABEL PRESENT ?
020A84: 6712         1092          BEQ     MNE6           ;IF NOT
                     1093 ;
020A86: 24381400     1094          MOVE.L  LBLTEMP,D2     ;LABEL IN D2.L, D3.L
020A8A: 26381404     1095          MOVE.L  LBLTEMP+4,D3
020A8E: 21F814181408 1096          MOVE.L  ADDRESS,ADRTEMP ;SET LINE ADDRESS
020A94: 6100030E     1097          BSR.L   SVCLBL         ;INSERT LABEL, ADR
                     1098 ;
020A98: 2447         1099 MNE6     MOVE.L  D7,A2          ;A2 = JUMP ADDRESS
                     1100 ;
                     1101 ; A0 = TEXT SCAN PTR
                     1102 ; A1 = PTR TO CHAR MASK
                     1103 ;
020A9A: 4E92         1104          JSR     (A2)           ;SVC THE MNEMONIC
020A9C: 6000FE0E     1105          BRA     ASMLIN         ;NEXT LINE
                     1106 ;
                     1108 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1109 ;
                     1110 ;-------------------------------------------
                     1111 ;-- SERVICE THE <EA>  (EFFECTIVE ADDRESS) --
                     1112 ;-------------------------------------------
                     1113 ;
                     1114 ; DETERMINE THE NUMBER OF WORDS IN AN <EA> FIELD
                     1115 ; AND MODIFY THE OP CODE FIELD SIZE ACCORDINGLY
                     1116 ;
                     1117 ; A1 = PTR TO CHAR MASK TABLE
                     1118 ; A2 = PTR TO <EA> FIELD
                     1119 ; D0 = # OF CHARS IN <EA> FIELD
                     1120 ; D5 = OP CODE FIELD SIZE IN BYTES
                     1121 ;
                     1122 ; RETURN THE ADDRESS MODE (0-11) IN D4
                     1123 ;
020AA0: 7800         1124 EA       MOVEQ   #0,D4          ;CLR ADDRESS MODE
020AA2: 7C00         1125          MOVEQ   #0,D6          ;CLR UPPER BITS
020AA4: 264A         1126          MOVE.L  A2,A3          ;A3 = SCRATCH PTR
020AA6: 1C1B         1127          MOVE.B  (A3)+,D6       ;D6 = 1ST CHAR
020AA8: 0C060023     1128          CMPI.B  #"#",D6        ;"#" ?
020AAC: 670001AA     1129          BEQ.L   MODE11         ;IF SO
                     1130 ;
020AB0: 0C000002     1131          CMPI.B  #2,D0          ;FIELD = 2 CHARS ?
020AB4: 6630         1132          BNE     MODE2          ;IF NOT
                     1133 ;
                     1134 ;
                     1135 ;
                     1136 ; CHECK FOR MODE 0, 'DN'
                     1137 ;
020AB6: 0C060044     1138          CMPI.B  #"D",D6        ;"D" ?
020ABA: 6610         1139          BNE     MODE1          ;IF NOT
                     1140 ;
                     1141 ; MODE 0 IF NEXT CHAR IS NUMERIC
                     1142 ;
020ABC: 1C1B         1143          MOVE.B  (A3)+,D6       ;NEXT CHAR
020ABE: 16316000     1144          MOVE.B  (A1,D6),D3     ;CHAR MASK
020AC2: 02030010     1145          ANDI.B  #$10,D3        ;NUMERIC ?
020AC6: 663C         1146          BNE     MODEX          ;DONE IF SO
                     1147 ;
020AC8: 600000CE     1148          BRA.L   MODE7          ;PROBABLY A LABEL
                     1149 ;
                     1150 ;
                     1151 ;
                     1152 ; CHECK FOR MODE 1, 'AN'
                     1153 ;
020ACC: 0C060041     1154 MODE1    CMPI.B  #"A",D6        ;1ST CHAR 'A' ?
020AD0: 660000C6     1155          BNE.L   MODE7          ;IF NOT
                     1156 ;
                     1157 ; MODE 1 IF NEXT CHAR IS NUMERIC
                     1158 ;
020AD4: 7801         1159          MOVEQ   #1,D4          ;IN CASE ADR MODE 1
020AD6: 1C1B         1160          MOVE.B  (A3)+,D6       ;NEXT CHAR
020AD8: 16316000     1161          MOVE.B  (A1,D6),D3     ;CHAR MASK
020ADC: 02030010     1162          ANDI.B  #$10,D3        ;NUMERIC ?
020AE0: 6622         1163          BNE     MODEX          ;DONE IF SO
                     1164 ;
020AE2: 600000B4     1165          BRA.L   MODE7          ;PROBABLY A LABEL
                     1166 ;
                     1168 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1169 ;
                     1170 ; CHECK FOR MODE 2, '(AN)'
                     1171 ;
020AE6: 0C060028     1172 MODE2    CMPI.B  #"(",D6        ;LEFT PARENS ?
020AEA: 662E         1173          BNE     MODE4          ;IF NOT
                     1174 ;
020AEC: 0C000004     1175          CMPI.B  #4,D0          ;(AN) ?
020AF0: 653E         1176          BCS     SYNER1         ;IF < 4 CHRS
                     1177 ;
020AF2: 6612         1178          BNE     MODE3          ;IF NOT 4 CHARS
                     1179 ;
020AF4: 0C130041     1180          CMPI.B  #"A",(A3)      ;"A" ?
020AF8: 660000D0     1181          BNE.L   MODE9          ;IF NOT
                     1182 ;
020AFC: 528B         1183          ADDQ.L  #1,A3          ;PTR PAST "A"
020AFE: 610000E8     1184          BSR.L   CHKN           ;CHK NUM, )
                     1185 ;
020B02: 7802         1186          MOVEQ   #2,D4          ;ADDRESS MODE 2
020B04: 4E75         1187 MODEX    RTS                    ;DONE
                     1188 ;
                     1189 ;
                     1190 ;
                     1191 ; CHECK FOR MODE 3, '(AN)+'
                     1192 ;
020B06: 0C000005     1193 MODE3    CMPI.B  #5,D0          ;<EA> FLD 5 CHARS ?
020B0A: 666C         1194          BNE     MODE6          ;IF NOT
                     1195 ;
020B0C: 610000D4     1196          BSR.L   CHKA           ;CHK A, NUM, )
                     1197 ;
020B10: 0C1B002B     1198          CMPI.B  #"+",(A3)+     ;MUST BE "+"
020B14: 661A         1199          BNE     SYNER1         ;IF NOT
                     1200 ;
020B16: 7803         1201          MOVEQ   #3,D4          ;ADDRESS MODE 3
020B18: 4E75         1202          RTS                    ;DONE
                     1203 ;
                     1204 ;
                     1205 ;
                     1206 ; CHECK FOR MODE 4, '-(AN)'
                     1207 ;
020B1A: 0C06002D     1208 MODE4    CMPI.B  #"-",D6        ;MINUS ?
020B1E: 6614         1209          BNE     MODE5          ;IF NOT
                     1210 ;
020B20: 0C1B0028     1211          CMPI.B  #"(",(A3)+     ;LEFT PARENS ?
020B24: 660E         1212          BNE     MODE5          ;IF NOT
                     1213 ;
                     1214 ; THE <EA> IS EITHER MODE 4 OR A SYNTAX ERROR
                     1215 ;
020B26: 5B00         1216          SUBQ.B  #5,D0          ;5 CHARS ?
020B28: 6606         1217          BNE     SYNER1         ;IF NOT
                     1218 ;
020B2A: 7804         1219          MOVEQ   #4,D4          ;ADDRESS MODE 4
020B2C: 600000B4     1220          BRA.L   CHKA           ;CHK A, NUM, )
                     1221 ;
                     1222 ;
020B30: 6000FCD6     1223 SYNER1   BRA     SYNERR         ;SYNTAX ERROR
                     1224 ;
                     1226 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1227 ;
                     1228 ; IS THE ADR MODE 7, 8 OR 5, 6, 9, 10 ?
                     1229 ;
020B34: 0C000005     1230 MODE5    CMPI.B  #5,D0          ;5 CHARS OR MORE ?
020B38: 655E         1231          BCS     MODE7          ;IF NOT
                     1232 ;
020B3A: 264A         1233          MOVE.L  A2,A3          ;SCRATCH PTR
020B3C: D7C0         1234          ADD.L   D0,A3          ;PTR PAST FIELD
020B3E: 0C230029     1235          CMPI.B  #")",-(A3)     ;RIGHT PAREN ?
020B42: 6654         1236          BNE     MODE7          ;IF NOT
                     1237 ;
                     1238 ; ADR MODE IS 5, 6, 9 OR 10 WITH DISPLACEMENT
                     1239 ;
020B44: 264A         1240          MOVE.L  A2,A3          ;<EXPR> PTR
020B46: 1400         1241          MOVE.B  D0,D2          ;<EA> FIELD CNT
020B48: 7200         1242          MOVEQ   #0,D1          ;INIT COUNT
                     1243 ;
                     1244 ; DETERMINE THE SIZE OF THE DISPLACEMENT FIELD
                     1245 ;
020B4A: 0C1B0028     1246 MODE5A   CMPI.B  #"(",(A3)+     ;L PARENS ?
020B4E: 6708         1247          BEQ     MODE5B         ;IF SO
                     1248 ;
020B50: 5302         1249          SUBQ.B  #1,D2          ;DECR <EA> CNT
020B52: 67DC         1250          BEQ     SYNER1         ;"(" NOT FOUND
                     1251 ;
020B54: 5201         1252          ADDQ.B  #1,D1          ;INCR <EXPR> CNT
020B56: 60F2         1253          BRA     MODE5A         ;NEXT CHAR
                     1254 ;
                     1255 ; THE END OF THE DISPLACEMENT FIELD HAS BEEN FOUND
                     1256 ; CHECK THE SYNTAX OF THE DISPLACEMENT FIELD
                     1257 ;
020B58: 9001         1258 MODE5B   SUB.B   D1,D0          ;DECR <EA> CNT
020B5A: 2F0B         1259          MOVE.L  A3,-(A7)       ;SAVE PTR A3
020B5C: 264A         1260          MOVE.L  A2,A3          ;START OF <EXPR>
020B5E: 61000C1E     1261          BSR.L   CHKEXPR        ;CHK <EXPR> SYNTAX
020B62: 265F         1262          MOVE.L  (A7)+,A3       ;RESTORE PTR A3
020B64: 5300         1263          SUBQ.B  #1,D0          ;ADJ FOR "("
                     1264 ;
                     1265 ; WHICH ADR MODE?  MUST BE 5, 6, 9 OR 10.
                     1266 ;
                     1267 ; A3 = PTR PAST LEFT PARENS ("(")
                     1268 ; D0 = REMAINING <EA> COUNT
                     1269 ;
020B66: 0C000003     1270          CMPI.B  #3,D0          ;3 CHARS LEFT ?
020B6A: 660C         1271          BNE     MODE6          ;IF NOT
                     1272 ;
020B6C: 0C130050     1273          CMPI.B  #"P",(A3)      ;"P" ?
020B70: 6758         1274          BEQ     MODE9          ;IF SO
                     1275 ;
                     1276 ; MUST BE MODE 5 ELSE ERROR;  CHK FOR A, NUM, )
                     1277 ;
020B72: 7805         1278          MOVEQ   #5,D4          ;SET MODE 5
020B74: 5405         1279          ADDQ.B  #2,D5          ;DISPLACEMENT WORD
020B76: 606A         1280          BRA     CHKA           ;CONTINUE
                     1281 ;
                     1283 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1284 ;
                     1285 ; CHECK FOR D8(AN,XI.S);   S = .W OR .L IF USED
                     1286 ; 'D8' IS AN OPTIONAL DISPLACEMENT <EXPRESSION>
                     1287 ; WHICH, IF PRESENT, HAS ALREADY BEEN CHECKED.
                     1288 ;
                     1289 ; "AN,XI)" OR "AN,XI.S)" REMAIN TO BE CHECKED
                     1290 ;
020B78: 0C130041     1291 MODE6    CMPI.B  #"A",(A3)      ;"A" ?
020B7C: 66000082     1292          BNE.L   MODE10         ;IF NOT
                     1293 ;
020B80: 528B         1294          ADDQ.L  #1,A3          ;PTR PAST "A"
020B82: 1C1B         1295          MOVE.B  (A3)+,D6       ;NEXT CHAR
020B84: 16316000     1296          MOVE.B  (A1,D6),D3     ;FETCH ATTR BYTE
020B88: 0C030010     1297          CMPI.B  #$10,D3        ;NUMERIC ?
020B8C: 67A2         1298          BEQ     SYNER1         ;IF NOT
                     1299 ;
020B8E: 61000084     1300          BSR.L   CHK610         ;SYNTAX CHECK
020B92: 7806         1301          MOVEQ   #6,D4          ;SET MODE 6
020B94: 5405         1302          ADDQ.B  #2,D5          ;DISPLACEMENT WORD
020B96: 4E75         1303          RTS                    ;MODE 6 DONE
                     1304 ;
                     1305 ;
                     1306 ;
                     1307 ; CHECK FOR MODE 7, 'ABS.W'
                     1308 ;
                     1309 ; FIRST CHECK THE SYNTAX OF THE <EXPRESSION>
                     1310 ;
020B98: 1200         1311 MODE7    MOVE.B  D0,D1          ;<EA> FIELD CNT
020B9A: 264A         1312          MOVE.L  A2,A3          ;<EA> FIELD PTR
020B9C: 61000BE0     1313          BSR.L   CHKEXPR        ;CHK <EXPR> SYNTAX
                     1314 ;
                     1315 ; THE <EXPRESSION> SYNTAX HAS BEEN BLESSED;
                     1316 ; CHECK FOR A 'WEIRD' LABEL (E.G. CCR).
                     1317 ;
020BA0: 61000D72     1318          BSR.L   CHKWEIRD       ;Z CLR IF WEIRD
020BA4: 6618         1319          BNE     MODE7B         ;.W IF WEIRD
                     1320 ;
                     1321 ; NOT A 'WEIRD' LABEL, EVALUATE <EXPRESSION>
                     1322 ;
020BA6: 1200         1323          MOVE.B  D0,D1          ;<EA> FIELD CNT
020BA8: 264A         1324          MOVE.L  A2,A3          ;<EA> FIELD PTR
020BAA: 61000A02     1325          BSR.L   EVALEXPR       ;EVALUATE <EXPR>
020BAE: 6608         1326          BNE     MODE7A         ;IF NOT FORWARD
                     1327 ;
                     1328 ; WE HAVE A FORWARD REFERENCE.  THE FLAG 'FORWARD'
                     1329 ; DETERMINES WHETHER IT IS SHORT (.W) OR LONG (.L)
                     1330 ;
020BB0: 4A381435     1331          TST.B   FORWARD        ;.W ?
020BB4: 6708         1332          BEQ     MODE7B         ;IF SO
020BB6: 660C         1333          BNE     MODE7C         ;IF NOT
                     1334 ;
                     1335 ; THE ADDRESS IN D3.L IS THE COMPLETE <EA> ADR;
                     1336 ; IS THE ADDRESS LENGTH .W OR .L ?
                     1337 ;
020BB8: B6B8141C     1338 MODE7A   CMP.L   SHRT,D3        ;.W OR .L ?
020BBC: 6206         1339          BHI     MODE7C         ;IF D3 > SHORT
                     1340 ;
                     1342 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1343 ;
                     1344 ; THE ADDRESS IS A WORD FIELD (XXX.W)
                     1345 ;
020BBE: 5445         1346 MODE7B   ADDQ.W  #2,D5          ;ONE MORE WORD
020BC0: 7807         1347          MOVEQ   #7,D4          ;ADDRESS MODE 7
020BC2: 4E75         1348          RTS                    ;DONE
                     1349 ;
                     1350 ; THE ADDRESS IS A LONG-WORD FIELD (XXX.L)
                     1351 ;
020BC4: 5845         1352 MODE7C   ADDQ.W  #4,D5          ;TWO MORE WORDS
020BC6: 7808         1353          MOVEQ   #8,D4          ;ADDRESS MODE 8
020BC8: 4E75         1354          RTS                    ;DONE
                     1355 ;
                     1356 ;
                     1357 ;
                     1358 ; CHECK FOR D16(PC);  D16 = <EXPRESSION>
                     1359 ; SYNTAX:  <EXPRESSION>(PC)
                     1360 ;          (THE <EXPRESSION> IS OPTIONAL)
                     1361 ;
020BCA: 0C1B0050     1362 MODE9    CMPI.B  #"P",(A3)+     ;"P" ?
020BCE: 662C         1363          BNE     SYNER2         ;IF NOT
                     1364 ;
020BD0: 0C1B0043     1365          CMPI.B  #"C",(A3)+     ;"C" ?
020BD4: 6626         1366          BNE     SYNER2         ;IF NOT
                     1367 ;
020BD6: 0C1B0029     1368          CMPI.B  #")",(A3)+     ;R PARENS ?
020BDA: 6620         1369          BNE     SYNER2         ;IF NOT
                     1370 ;
020BDC: 7809         1371          MOVEQ   #9,D4          ;SET MODE 9
020BDE: 5405         1372          ADDQ.B  #2,D5          ;DISPLACEMENT WORD
020BE0: 4E75         1373          RTS                    ;MODE 9 DONE
                     1374 ;
                     1375 ;
                     1376 ;
                     1377 ; SUBROUTINE;  CHK "A", NUM, ")"
                     1378 ;
020BE2: 0C1B0041     1379 CHKA     CMPI.B  #"A",(A3)+     ;"A" ?
020BE6: 6614         1380          BNE     SYNER2         ;IF NOT
                     1381 ;
020BE8: 1C1B         1382 CHKN     MOVE.B  (A3)+,D6       ;NEXT CHAR
020BEA: 16316000     1383          MOVE.B  (A1,D6),D3     ;FETCH CHAR MASK
020BEE: 02030010     1384          ANDI.B  #$10,D3        ;MUST BE NUMERIC
020BF2: 6708         1385          BEQ     SYNER2         ;IF NOT
                     1386 ;
020BF4: 0C1B0029     1387          CMPI.B  #")",(A3)+     ;MUST BE ")"
020BF8: 6602         1388          BNE     SYNER2         ;IF NOT
                     1389 ;
020BFA: 4E75         1390          RTS                    ;DONE
                     1391 ;
                     1392 ;
020BFC: 6000FC0A     1393 SYNER2   BRA     SYNERR         ;SYNTAX ERROR
                     1394 ;
                     1395 ; CHECK FOR D8(PC,IX.S);   S = .W OR .L IF USED
                     1396 ; 'D8' IS AN OPTIONAL DISPLACEMENT <EXPRESSION>
                     1397 ; WHICH, IF PRESENT, HAS ALREADY BEEN CHECKED.
                     1398 ;
                     1400 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1401 ;
                     1402 ; "PC,XI)" OR "PC,XI.S)" REMAINS TO BE CHECKED
                     1403 ;
020C00: 0C1B0050     1404 MODE10   CMPI.B  #"P",(A3)+     ;"P" ?
020C04: 66F6         1405          BNE     SYNER2         ;IF NOT
                     1406 ;
020C06: 0C1B0043     1407          CMPI.B  #"C",(A3)+     ;"C" ?
020C0A: 66F0         1408          BNE     SYNER2         ;IF NOT
                     1409 ;
020C0C: 6106         1410          BSR     CHK610         ;SYNTAX CHECK
020C0E: 780A         1411          MOVEQ   #10,D4         ;SET MODE 10
020C10: 5405         1412          ADDQ.B  #2,D5          ;DISPLACEMENT WORD
020C12: 4E75         1413          RTS                    ;MODE 10 DONE
                     1414 ;
                     1415 ; SUBROUTINE;  CHK SYNTAX OF ",XI)" OR ",XI.S"
                     1416 ; (THIS SUBROUTINE CALLED BY MODES 6 AND 10)
                     1417 ;
020C14: 0C1B002C     1418 CHK610   CMPI.B  #",",(A3)+     ;COMMA ?
020C18: 66E2         1419          BNE     SYNER2         ;IF NOT
                     1420 ;
020C1A: 1C1B         1421          MOVE.B  (A3)+,D6       ;NEXT CHAR
020C1C: 0C060041     1422          CMPI.B  #"A",D6        ;"A" ?
020C20: 6706         1423          BEQ     CHK610A        ;IF SO
                     1424 ;
020C22: 0C060044     1425          CMPI.B  #"D",D6        ;"D" ?
020C26: 66D4         1426          BNE     SYNER2         ;IF NOT
                     1427 ;
020C28: 1C1B         1428 CHK610A  MOVE.B  (A3)+,D6       ;NEXT CHAR
020C2A: 16316000     1429          MOVE.B  (A1,D6),D3     ;FETCH ATTR BYTE
020C2E: 02030010     1430          ANDI.B  #$10,D3        ;NUMERIC ?
020C32: 67C8         1431          BEQ     SYNER2         ;IF NOT
                     1432 ;
020C34: 1C1B         1433          MOVE.B  (A3)+,D6       ;NEXT CHAR
020C36: 0C060029     1434          CMPI.B  #")",D6        ;R PARENS ?
020C3A: 671A         1435          BEQ     CHK610X        ;IF SO
                     1436 ;
020C3C: 0C06002E     1437          CMPI.B  #".",D6        ;"." ?
020C40: 66BA         1438          BNE     SYNER2         ;IF NOT
                     1439 ;
020C42: 1C1B         1440          MOVE.B  (A3)+,D6       ;NEXT CHAR
020C44: 0C06004C     1441          CMPI.B  #"L",D6        ;"L" ?
020C48: 6706         1442          BEQ     CHK610B        ;IF SO
                     1443 ;
020C4A: 0C060057     1444          CMPI.B  #"W",D6        ;"W" ?
020C4E: 66AC         1445          BNE     SYNER2         ;IF NOT
                     1446 ;
020C50: 0C1B0029     1447 CHK610B  CMPI.B  #")",(A3)+     ;R PARENS ?
020C54: 66A6         1448          BNE     SYNER2         ;IF NOT
                     1449 ;
020C56: 4E75         1450 CHK610X  RTS                    ;SYNTAX CHECKED
                     1451 ;
                     1452 ; SERVICE MODE 11, IMMEDIATE DATA
                     1453 ;
020C58: 1200         1454 MODE11   MOVE.B  D0,D1          ;<EA> FIELD CNT
020C5A: 5301         1455          SUBQ.B  #1,D1          ;ADJ FOR "#"
020C5C: 61000B20     1456          BSR.L   CHKEXPR        ;CHK <EXPR> SYNTAX
020C60: 780B         1457          MOVEQ   #11,D4         ;ADDRESS MODE 11
020C62: 4E75         1458          RTS                    ;DONE
                     1459 ;
                        2 ; COPYRIGHT 1987 DTACK GROUNDED INC:   PASS1A
                        3 ;
                        4 ;---------------------------------------
                        5 ;-- FIND THE SIZE OF THE SOURCE FIELD --
                        6 ;---------------------------------------
                        7 ; (WHICH IS FOLLOWED BY A DESTINATION FIELD)
                        8 ;
                        9 ; THE TERMINATION CHARACTER IS A COMMA UNLESS
                       10 ; THE COMMA IS CONTAINED WITHIN PARENTHESES
                       11 ; OR WITHIN SINGLE OR DOUBLE QUOTES.
                       12 ;
                       13 ; RESULT:  A0 POINTS TO THE 1ST <EA> START
                       14 ;          A2 POINTS TO THE 2ND <EA> START
                       15 ;          D0 CONTAINS THE 1ST <EA> CHAR CNT
                       16 ;
020C64: 2448           17 SRCSIZE  MOVE.L  A0,A2          ;PTR TO FIELD
020C66: 7000           18          MOVEQ   #0,D0          ;FIELD COUNT
                       19 ;
020C68: 1C1A           20 SRCZ     MOVE.B  (A2)+,D6       ;FETCH CHAR
020C6A: 675E           21          BEQ     SRCZX          ;IF LINE LINK
                       22 ;
020C6C: 0C06002C       23          CMPI.B  #",",D6        ;COMMA ?
020C70: 6758           24          BEQ     SRCZX          ;IF COMMA
                       25 ;
020C72: 0C060028       26          CMPI.B  #"(",D6        ;L PARENS ?
020C76: 6716           27          BEQ     SRCZ2          ;IF SO
                       28 ;
020C78: 0C060022       29          CMPI.B  #$22,D6        ;QUOTE ?
020C7C: 6724           30          BEQ     SRCZ3          ;IF SO
                       31 ;
020C7E: 0C060027       32          CMPI.B  #"'",D6        ;APOSTROPHE ?
020C82: 6732           33          BEQ     SRCZ4          ;IF SO
                       34 ;
020C84: 4A316000       35          TST.B   (A1,D6)        ;PRINTABLE CHAR ?
020C88: 6A4E           36          BPL     ERR48B         ;IF NOT
                       37 ;
020C8A: 5200           38 SRCZ1    ADDQ.B  #1,D0          ;INCR FIELD SIZE
020C8C: 60DA           39          BRA     SRCZ           ;NEXT CHAR
                       40 ;
                       41 ; FIND THE CLOSING (RIGHT) PARENTHESIS
                       42 ;
020C8E: 1C1A           43 SRCZ2    MOVE.B  (A2)+,D6       ;FETCH CHAR
020C90: 673E           44          BEQ     ERR30B         ;IF LINE LINK
                       45 ;
020C92: 5200           46          ADDQ.B  #1,D0          ;INCR FIELD SIZE
020C94: 0C060029       47          CMPI.B  #")",D6        ;R PARENS ?
020C98: 67F0           48          BEQ     SRCZ1          ;IF SO
                       49 ;
020C9A: 4A316000       50          TST.B   (A1,D6)        ;PRINTABLE CHAR ?
020C9E: 6BEE           51          BMI     SRCZ2          ;NEXT CHAR IF SO
020CA0: 6A36           52          BPL     ERR48B         ;IF NOT
                       53 ;
                       54 ; FIND THE CLOSING QUOTE CHARACTER
                       55 ;
020CA2: 1C1A           56 SRCZ3    MOVE.B  (A2)+,D6       ;FETCH CHAR
020CA4: 6736           57          BEQ     ERR44B         ;IF LINE LINK
                       58 ;
                       60 ; COPYRIGHT 1987 DTACK GROUNDED INC
                       61 ;
020CA6: 5200           62          ADDQ.B  #1,D0          ;INCR FIELD SIZE
020CA8: 0C060022       63          CMPI.B  #$22,D6        ;QUOTE ?
020CAC: 67DC           64          BEQ     SRCZ1          ;IF SO
                       65 ;
020CAE: 4A316000       66          TST.B   (A1,D6)        ;PRINTABLE CHAR ?
020CB2: 6BEE           67          BMI     SRCZ3          ;IF SO
020CB4: 6A22           68          BPL     ERR48B         ;IF NOT
                       69 ;
                       70 ; FIND THE CLOSING SINGLE QUOTE (APOSTROPHE)
                       71 ;
020CB6: 1C1A           72 SRCZ4    MOVE.B  (A2)+,D6       ;NEXT CHAR
020CB8: 6726           73          BEQ     ERR45B         ;IF LINE LINK
                       74 ;
020CBA: 5200           75          ADDQ.B  #1,D0          ;INCR FIELD SIZE
020CBC: 0C060027       76          CMPI.B  #"'",D6        ;APOSTROPHE ?
020CC0: 67C8           77          BEQ     SRCZ1          ;IF SO
                       78 ;
020CC2: 4A316000       79          TST.B   (A1,D6)        ;PRINTABLE CHAR ?
020CC6: 6BEE           80          BMI     SRCZ4          ;IF SO
020CC8: 6A0E           81          BPL     ERR48B         ;IF NOT
                       82 ;
                       83 ; THE SRC <EA>-TERMINATING COMMA HAS BEEN FOUND
                       84 ;
020CCA: 4A00           85 SRCZX    TST.B   D0             ;SIZE = 0 ?
020CCC: 6706           86          BEQ     ERR8B          ;<EA> NOT FOUND
                       87 ;
020CCE: 4E75           88          RTS                    ;'SRCSIZE' DONE
                       89 ;
                       90 ;
020CD0: 7E1E           91 ERR30B   MOVEQ   #30,D7         ;UNMATCHED PARENS
020CD2: 600E           92          BRA     ERRB
                       93 ;
020CD4: 7E08           94 ERR8B    MOVEQ   #8,D7          ;<EA> NOT FOUND
020CD6: 600A           95          BRA     ERRB
                       96 ;
020CD8: 7E30           97 ERR48B   MOVEQ   #48,D7         ;BAD <EA> CHAR
020CDA: 6006           98          BRA     ERRB
                       99 ;
020CDC: 7E2C          100 ERR44B   MOVEQ   #44,D7         ;NO CLOSING QUOTE
020CDE: 6002          101          BRA     ERRB
                      102 ;
020CE0: 7E2D          103 ERR45B   MOVEQ   #45,D7         ;NO CLOSING APOST
020CE2: 6000F7C8      104 ERRB     BRA     ERROR
                      105 ;
                      106 ;
                      107 ;--------------------------------------------
                      108 ;-- FIND THE SIZE OF THE DESTINATION FIELD --
                      109 ;--------------------------------------------
                      110 ;
                      111 ; FIND THE # OF CHRS IN THE SOURCE (ONLY) FIELD
                      112 ; (OR IN THE DESTINATION FIELD IF TWO <EA>S)
                      113 ;
                      114 ; RETURN THE # OF CHARS IN D0
                      115 ;
                      116 ; TERMINATORS ARE THE NEXT LINE LINK, A SPACE CHAR,
                      117 ; OR A SEMICOLON (COMMENT FIELD) PROVIDED THE
                      118 ; SPACE CHAR OR SEMICOLON ARE NOT WITHIN SINGLE
                      119 ; OR DOUBLE QUOTES.
                      120 ;
                      122 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      123 ;
                      124 ; A0 = PTR TO <EA> FIELD
                      125 ; A1 = PTR TO CHAR ATTRIBUTE TABLE
                      126 ;
020CE6: 2448          127 DESTSIZE MOVE.L  A0,A2          ;PTR TO FIELD
020CE8: 7000          128          MOVEQ   #0,D0          ;FIELD COUNT
                      129 ;
020CEA: 1C1A          130 SRCS     MOVE.B  (A2)+,D6       ;FETCH CHAR
020CEC: 674A          131          BEQ     SRCSX          ;IF LINE LINK
                      132 ;
020CEE: 0C060020      133          CMPI.B  #" ",D6        ;SPACE ?
020CF2: 6744          134          BEQ     SRCSX          ;IF SPACE
                      135 ;
020CF4: 0C06003B      136          CMPI.B  #";",D6        ;SEMICOLON ?
020CF8: 673E          137          BEQ     SRCSX          ;IF SEMICOLON
                      138 ;
020CFA: 0C060022      139          CMPI.B  #$22,D6        ;QUOTE ?
020CFE: 6710          140          BEQ     SRCS2          ;IF SO
                      141 ;
020D00: 0C060027      142          CMPI.B  #"'",D6        ;APOSTROPHE ?
020D04: 671E          143          BEQ     SRCS3          ;IF SO
                      144 ;
020D06: 4A316000      145          TST.B   (A1,D6)        ;PRINTABLE CHAR ?
020D0A: 6ACC          146          BPL     ERR48B         ;UNPRINTABLE CHAR
                      147 ;
020D0C: 5200          148 SRCS1    ADDQ.B  #1,D0          ;INCR FIELD SIZE
020D0E: 60DA          149          BRA     SRCS           ;NEXT CHAR
                      150 ;
                      151 ; FIND THE CLOSING QUOTE CHARACTER
                      152 ;
020D10: 1C1A          153 SRCS2    MOVE.B  (A2)+,D6       ;NEXT CHAR
020D12: 67C8          154          BEQ     ERR44B         ;IF LINE LINK
                      155 ;
020D14: 5200          156          ADDQ.B  #1,D0          ;INCR FIELD SIZE
020D16: 0C060022      157          CMPI.B  #$22,D6        ;QUOTE ?
020D1A: 67F0          158          BEQ     SRCS1          ;IF SO
                      159 ;
020D1C: 4A316000      160          TST.B   (A1,D6)        ;PRINTABLE CHAR ?
020D20: 6BEE          161          BMI     SRCS2          ;IF SO
020D22: 60B4          162          BRA     ERR48B         ;IF NOT
                      163 ;
                      164 ; FIND THE CLOSING SINGLE QUOTE (APOSTROPHE)
                      165 ;
020D24: 1C1A          166 SRCS3    MOVE.B  (A2)+,D6       ;NEXT CHAR
020D26: 67B8          167          BEQ     ERR45B         ;IF LINE LINK
                      168 ;
020D28: 5200          169          ADDQ.B  #1,D0          ;INCR FIELD SIZE
020D2A: 0C060027      170          CMPI.B  #"'",D6        ;APOSTROPHE ?
020D2E: 67DC          171          BEQ     SRCS1          ;IF SO
                      172 ;
020D30: 4A316000      173          TST.B   (A1,D6)        ;PRINTABLE CHAR ?
020D34: 6BEE          174          BMI     SRCS3          ;IF SO
020D36: 60A0          175          BRA     ERR48B         ;IF NOT
                      176 ;
                      177 ; A DEST <EA>-TERMINATING CHAR HAS BEEN FOUND
                      178 ;
020D38: 4A00          179 SRCSX    TST.B   D0             ;SIZE = 0 ?
020D3A: 6798          180          BEQ     ERR8B          ;<EA> NOT FOUND
                      181 ;
020D3C: 4E75          182          RTS                    ;'DESTSIZE' DONE
                      183 ;
                      185 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      186 ;
                      187 ;-------------------------------------------
                      188 ;-- SEARCH FOR A LABEL IN THE LABEL TABLE --
                      189 ;-------------------------------------------
                      190 ;
                      191 ; CHECK THE LABEL TABLE TO SEE IF A LABEL IS A
                      192 ; FORWARD OR BACKWARD REFERENCE
                      193 ;
020D3E: 4BF81300      194 CHKLBL   LEA     STR,A5         ;PTR TO LABEL REF
020D42: 241D          195          MOVE.L  (A5)+,D2       ;REF IN D2.L, D3.L
020D44: 261D          196          MOVE.L  (A5)+,D3
                      197 ;
                      198 ; THE LABEL (8 BYTES) IS CONTAINED IN D2.L, D3.L
                      199 ; D0/D1/D6 AND A0-A3 ARE PRESERVED
                      200 ; IF THE REFERENCE IS BACKWARD, D3.L = REF ADR
                      201 ; IF THE REFERENCE IS FORWARD, D7 = 0
                      202 ; RETURN WITH ZFLG CLR IF BACK REF, SET IF FWD
                      203 ;
020D46: 48E7C0E0      204          MOVEM.L D0/D1/A0-A2,-(A7) ;SAVE REGS
020D4A: 20390002000E  205          MOVE.L  LBLN,D0        ;NLBLS X 12 BYTES
020D50: 323900020012  206          MOVE.W  LBLI,D1        ;BINARY ITERATIONS
020D56: 20790002001E  207          MOVE.L  LBLTBL,A0      ;START OF LBL TBL
020D5C: 2248          208          MOVE.L  A0,A1          ;COPY PTR
020D5E: B499          209          CMP.L   (A1)+,D2       ;4 BYTES MATCH ?
020D60: 6604          210          BNE     CHKLBL1        ;IF NOT
                      211 ;
020D62: B699          212          CMP.L   (A1)+,D3       ;LABEL MATCH ?
020D64: 6710          213          BEQ     LBLFOUND       ;IF SO
                      214 ;
020D66: 652E          215 CHKLBL1  BCS     CHKLBLX        ;IF DONE
                      216 ;
020D68: D1C0          217          ADD.L   D0,A0          ;START IN MIDDLE
                      218 ;
                      219 ; BINARY SEARCH TO FIND A MATCHING LABEL
                      220 ;
020D6A: E248          221 CHKSRCH  LSR.W   #1,D0          ;HALVE THE ADDER
020D6C: 2248          222          MOVE.L  A0,A1          ;COPY THE PTR
020D6E: B499          223          CMP.L   (A1)+,D2       ;COMPARE 1ST 4
020D70: 660E          224          BNE     CHKSRCH1       ;IF NOT EQUAL
                      225 ;
020D72: B699          226          CMP.L   (A1)+,D3       ;COMPARE LEAST 4
020D74: 660A          227          BNE     CHKSRCH1       ;IF NOT EQUAL
                      228 ;
                      229 ; THE TWO LABELS ARE EQUAL;  STORE THE ADR IN D3
                      230 ;
020D76: 2619          231 LBLFOUND MOVE.L  (A1)+,D3       ;ADR TO D3
020D78: 4CDF0703      232          MOVEM.L (A7)+,D0/D1/A0-A2 ;RESTORE REGS
020D7C: 7E01          233          MOVEQ   #1,D7          ;BACKWARD REF
020D7E: 4E75          234          RTS                    ;DONE
                      235 ;
020D80: 6204          236 CHKSRCH1 BHI     CHKSRCH2       ;INCR ADR
                      237 ;
020D82: 91C0          238          SUB.L   D0,A0          ;DECR ADR
020D84: 6002          239          BRA     CHKSRCH3
                      240 ;
020D86: D1C0          241 CHKSRCH2 ADD.L   D0,A0          ;INCR ADR
                      242 ;
                      244 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      245 ;
020D88: 5301          246 CHKSRCH3 SUBQ.B  #1,D1          ;DECR LOOP COUNT
020D8A: 66DE          247          BNE     CHKSRCH        ;LOOP 'TIL ZERO
                      248 ;
                      249 ; DO THE LABELS MATCH ?
                      250 ;
020D8C: 2248          251          MOVE.L  A0,A1          ;COPY PTR
020D8E: B499          252          CMP.L   (A1)+,D2       ;MATCH ?
020D90: 6604          253          BNE     CHKLBLX        ;IF NOT
                      254 ;
020D92: B699          255          CMP.L   (A1)+,D3       ;MATCH ?
020D94: 67E0          256          BEQ     LBLFOUND       ;IF SO
                      257 ;
                      258 ; THE LABEL WAS NOT FOUND IN THE LABEL TABLE
                      259 ;
020D96: 4CDF0703      260 CHKLBLX  MOVEM.L (A7)+,D0/D1/A0-A2 ;RESTORE REGS
020D9A: 003800FF143F  261          ORI.B   #255,UDFFWD    ;UNDEFINED FWD REF
020DA0: 7E00          262          MOVEQ   #0,D7          ;FORWARD REF
020DA2: 4E75          263          RTS                    ;DONE
                      264 ;
                      265 ;-----------------------------------------
                      266 ;-- INSERT A LABEL INTO THE LABEL TABLE --
                      267 ;-----------------------------------------
                      268 ;
                      269 ; INSERT A LABEL AND ITS ADR INTO THE LABEL TABLE
                      270 ; IN ALPHABETICAL ORDER, USING A BINARY SEARCH
                      271 ;
                      272 ; THE LABEL (8 BYTES) IS CONTAINED IN D2.L, D3.L
                      273 ;
020DA4: 48E7C0E0      274 SVCLBL   MOVEM.L D0/D1/A0-A2,-(A7) ;SAVE REGS
020DA8: 20390002000E  275          MOVE.L  LBLN,D0        ;NLBLS X 12 BYTES
020DAE: 323900020012  276          MOVE.W  LBLI,D1        ;BINARY ITERATIONS
020DB4: 20790002001E  277          MOVE.L  LBLTBL,A0      ;START OF LBL TBL
020DBA: 2248          278          MOVE.L  A0,A1          ;COPY PTR
020DBC: B499          279          CMP.L   (A1)+,D2       ;4 BYTES MATCH ?
020DBE: 6604          280          BNE     SVCLBL1        ;IF NOT
                      281 ;
020DC0: B691          282          CMP.L   (A1),D3        ;LABEL MATCH ?
020DC2: 6710          283          BEQ     DUPLBL         ;IF SO
                      284 ;
020DC4: 6532          285 SVCLBL1  BCS     SVCLBLX        ;IF DONE
                      286 ;
020DC6: D1C0          287          ADD.L   D0,A0          ;START IN MIDDLE
                      288 ;
                      289 ; BINARY SEARCH TO FIND THE INSERTION ADDRESS
                      290 ;
020DC8: E248          291 BINSRCH  LSR.W   #1,D0          ;HALVE THE ADDER
020DCA: 2248          292          MOVE.L  A0,A1          ;COPY THE PTR
020DCC: B499          293          CMP.L   (A1)+,D2       ;COMPARE 1ST 4
020DCE: 660E          294          BNE     BINSRCH1       ;IF NOT EQUAL
                      295 ;
020DD0: B691          296          CMP.L   (A1),D3        ;COMPARE LEAST 4
020DD2: 660A          297          BNE     BINSRCH1       ;IF NOT EQUAL
                      298 ;
                      299 ; THE TWO LABELS ARE EQUAL;  DUPLICATE LABEL ERROR
                      300 ;
020DD4: 7E0F          301 DUPLBL   MOVEQ   #15,D7         ;DUPLICATE LABEL
020DD6: 4CDF0703      302          MOVEM.L (A7)+,D0/D1/A0-A2 ;RESTORE REGS
020DDA: 6000F6D0      303          BRA     ERROR
                      304 ;
                      306 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      307 ;
020DDE: 6204          308 BINSRCH1 BHI     BINSRCH2       ;INCR ADR
                      309 ;
020DE0: 91C0          310          SUB.L   D0,A0          ;DECR ADR
020DE2: 6002          311          BRA     BINSRCH3
                      312 ;
020DE4: D1C0          313 BINSRCH2 ADD.L   D0,A0          ;INCR ADR
                      314 ;
020DE6: 5301          315 BINSRCH3 SUBQ.B  #1,D1          ;DECR LOOP COUNT
020DE8: 66DE          316          BNE     BINSRCH        ;LOOP 'TIL ZERO
                      317 ;
                      318 ; IF CURR LBL > LBL(A0) THEN INCR A0 BY D0
                      319 ;
020DEA: 2248          320          MOVE.L  A0,A1          ;COPY THE PTR
020DEC: B499          321          CMP.L   (A1)+,D2       ;COMPARE LABELS
020DEE: 6604          322          BNE     BINSRCH4       ;IF NOT EQUAL
                      323 ;
020DF0: B699          324          CMP.L   (A1)+,D3
020DF2: 67E0          325          BEQ     DUPLBL         ;ERROR IF SAME
                      326 ;
020DF4: 6502          327 BINSRCH4 BCS     SVCLBLX        ;IF DONE
                      328 ;
020DF6: D1C0          329          ADD.L   D0,A0          ;NEW INSERT ADR
                      330 ;
                      331 ; A0 = THE INSERT ADDRESS
                      332 ;
                      333 ; CALCULATE THE NUMBER OF BYTES TO BE MOVED UP
                      334 ;
020DF8: 2278140C      335 SVCLBLX  MOVE.L  LBLPTR,A1      ;LABEL TBL END
020DFC: 2449          336          MOVE.L  A1,A2          ;COPY THE PTR
020DFE: 720C          337          MOVEQ   #12,D1
020E00: D5C1          338          ADD.L   D1,A2          ;ONE MORE LABEL
020E02: 21CA140C      339          MOVE.L  A2,LBLPTR      ;STORE NEW POINTER
020E06: 2209          340          MOVE.L  A1,D1          ;COPY TBL END
020E08: 9288          341          SUB.L   A0,D1          ;# OF BYTES
020E0A: E489          342          LSR.L   #2,D1          ;DIVIDE BY 4
020E0C: 670A          343          BEQ     SVCLBL3        ;IF D1 = 0
                      344 ;
                      345 ; MOVE THE LABELS UP ONE POSITION
                      346 ;
020E0E: 2521          347 SVCLBL2  MOVE.L  -(A1),-(A2)    ;MOVE 12 BYTES
020E10: 2521          348          MOVE.L  -(A1),-(A2)
020E12: 2521          349          MOVE.L  -(A1),-(A2)
020E14: 5781          350          SUBQ.L  #3,D1          ;3 LONG WORDS
020E16: 66F6          351          BNE     SVCLBL2        ;LOOP 'TIL ZERO
                      352 ;
                      353 ; NOW STORE THE LABEL AND ADR IN THE LABEL TABLE
                      354 ;
020E18: 20C2          355 SVCLBL3  MOVE.L  D2,(A0)+       ;STORE THE LABEL
020E1A: 20C3          356          MOVE.L  D3,(A0)+       ;IN THE LABEL TBL
020E1C: 20B81408      357          MOVE.L  ADRTEMP,(A0)   ;STORE THE ADR
020E20: 4210          358          CLR.B   (A0)           ;CLR UPPER BYTE
020E22: 2A48          359          MOVE.L  A0,A5          ;LBL ADR PTR IN A5
                      360 ;
020E24: 5278142E      361          ADDQ.W  #1,LBLCNT      ;INCR LABEL COUNT
020E28: 4CDF0703      362          MOVEM.L (A7)+,D0/D1/A0-A2 ;RESTORE REGS
020E2C: 4E75          363          RTS                    ;DONE
                      364 ;
                      366 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      367 ;
                      368 ; DO WE HAVE ONE OR TWO ADR FIELDS ?
                      369 ;
020E2E: 2448          370 ONETWO   MOVE.L  A0,A2          ;COPY TEXT PTR
020E30: 7228          371          MOVEQ   #"(",D1        ;D1 = L PAREN
020E32: 7422          372          MOVEQ   #$22,D2        ;D2 = QUOTE
020E34: 7627          373          MOVEQ   #"'",D3        ;D3 = APOSTROPHE
020E36: 783B          374          MOVEQ   #";",D4        ;D4 = SEMICOLON
020E38: 7A2C          375          MOVEQ   #",",D5        ;D5 = COMMA
020E3A: 7C20          376          MOVEQ   #" ",D6        ;D6 = SPACE CHAR
                      377 ;
020E3C: 1E1A          378 ONETWOA  MOVE.B  (A2)+,D7       ;FETCH CHAR
020E3E: 671A          379          BEQ     ONETWO1        ;DONE IF LINK
                      380 ;
020E40: BE04          381          CMP.B   D4,D7          ;SEMICOLON ?
020E42: 6716          382          BEQ     ONETWO1        ;IF SO
                      383 ;
020E44: BE05          384          CMP.B   D5,D7          ;COMMA ?
020E46: 6716          385          BEQ     ONETWO2        ;IF SO
                      386 ;
020E48: BE06          387          CMP.B   D6,D7          ;SPACE CHAR ?
020E4A: 670E          388          BEQ     ONETWO1        ;IF SO
                      389 ;
020E4C: BE01          390          CMP.B   D1,D7          ;L PARENS ?
020E4E: 6712          391          BEQ     ONETWOB        ;IF SO
                      392 ;
020E50: BE02          393          CMP.B   D2,D7          ;QUOTE ?
020E52: 6718          394          BEQ     ONETWOC        ;IF SO
                      395 ;
020E54: BE03          396          CMP.B   D3,D7          ;APOSTROPHE ?
020E56: 671C          397          BEQ     ONETWOD        ;IF SO
020E58: 66E2          398          BNE     ONETWOA        ;NEXT CHAR IF NOT
                      399 ;
020E5A: 7C00          400 ONETWO1  MOVEQ   #0,D6          ;ONE FIELD
020E5C: 4E75          401          RTS
                      402 ;
020E5E: 7C01          403 ONETWO2  MOVEQ   #1,D6          ;TWO FIELDS
020E60: 4E75          404          RTS
                      405 ;
020E62: 1E1A          406 ONETWOB  MOVE.B  (A2)+,D7       ;NEXT CHAR
020E64: 0C070029      407          CMPI.B  #")",D7        ;R PARENS ?
020E68: 66F8          408          BNE     ONETWOB        ;IF NOT
020E6A: 60D0          409          BRA     ONETWOA        ;IF SO
                      410 ;
020E6C: 1E1A          411 ONETWOC  MOVE.B  (A2)+,D7       ;NEXT CHAR
020E6E: BE02          412          CMP.B   D2,D7          ;QUOTE ?
020E70: 66FA          413          BNE     ONETWOC        ;IF NOT
020E72: 60C8          414          BRA     ONETWOA        ;IF SO
                      415 ;
020E74: 1E1A          416 ONETWOD  MOVE.B  (A2)+,D7       ;NEXT CHAR
020E76: BE03          417          CMP.B   D3,D7          ;APOSTROPHE ?
020E78: 66FA          418          BNE     ONETWOD        ;IF NOT
020E7A: 60C0          419          BRA     ONETWOA        ;IF SO
                      420 ;
                      422 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      423 ;
                      424 ;--------------------
                      425 ;-- OP CODE TYPE 1 --
                      426 ;--------------------
                      427 ;
                      428 ; THE INSTRUCTION IS A CONDITIONAL BRANCH.
                      429 ; THE FIELD CAN BE ONE OR TWO WORDS.
                      430 ; D7-D0 = DISPLACEMENT IF SHORT BRANCH ELSE $00
                      431 ; THE 2ND WORD IS THE DISPLACEMENT IF LONG BRANCH
                      432 ;
                      433 ; EXAMPLE:  BCS.L <EXPRESSION>
                      434 ;
020E7C: 4A381434      435 TYPE1    TST.B   SIZEID         ;TEST THE SIZE ID
020E80: 6B48          436          BMI     ERR24A         ;IF .B
                      437 ;
                      438 ; EVALUATE <EXPR> AND CHECK FOR FORWARD REF
                      439 ;
020E82: 610000AE      440          BSR.L   W1             ;DEFAULT ONE WORD
020E86: 610004DA      441          BSR.L   SVCEXPR        ;ADDRESS IN D3.L
020E8A: 4A38143F      442          TST.B   UDFFWD         ;UNDEFINED LABEL ?
020E8E: 662C          443          BNE     TYPE1F         ;IF FORWARD REF
                      444 ;
                      445 ; SEE IF THE REFERENCE IS IN RANGE;  IF IN
                      446 ; RANGE, DETERMINE .W OR .L DISPLACEMENT.
                      447 ;
020E90: 96B81418      448          SUB.L   ADDRESS,D3     ;D3 = DISPLACEMENT+2
020E94: 4E71          449          NOP
020E96: 6A16          450          BPL     TYPE1A         ;IF FORWARD DISP
                      451 ;
                      452 ; THE DISPLACEMENT IS BACKWARD
                      453 ;
020E98: 7400          454          MOVEQ   #0,D2
020E9A: 9483          455          SUB.L   D3,D2          ;2'S COMPLEMENT
020E9C: 0C8200008000  456          CMPI.L  #32768,D2      ;OUT OF RANGE ?
020EA2: 6222          457          BHI     ERR23A         ;IF SO
                      458 ;
020EA4: 0C420080      459          CMPI.W  #128,D2        ;LONG DISP ?
020EA8: 62000088      460          BHI.L   W1             ;ANOTHER WORD IF SO
020EAC: 630E          461          BLS     TYPE1F         ;ANOTHER WORD IF .L
                      462 ;
                      463 ; THE DISPLACEMENT IS FORWARD
                      464 ;
020EAE: 0C8300007FFE  465 TYPE1A   CMPI.L  #32766,D3      ;OUT OF RANGE ?
020EB4: 6210          466          BHI     ERR23A         ;IF SO
                      467 ;
020EB6: 0C43007E      468          CMPI.W  #126,D3        ;LONG DISP ?
020EBA: 6276          469          BHI     W1             ;ANOTHER WORD IF SO
                      470 ;
020EBC: 0C3800021434  471 TYPE1F   CMPI.B  #2,SIZEID      ;SIZE = .L ?
020EC2: 676E          472          BEQ     W1             ;IF .L
                      473 ;
020EC4: 4E75          474          RTS                    ;DONE
                      475 ;
020EC6: 7E17          476 ERR23A   MOVEQ   #23,D7         ;BRANCH OUT OF RANGE
020EC8: 6046          477          BRA     ERRC
                      478 ;
020ECA: 7E18          479 ERR24A   MOVEQ   #24,D7         ;BAD SIZE SPEC
020ECC: 6042          480          BRA     ERRC
                      481 ;
                      483 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      484 ;
                      485 ; SYNTAX:  DBCC DN,<LABEL EXPRESSION>
                      486 ;
020ECE: 4A381434      487 DB       TST.B   SIZEID         ;SIZE SPEC'D ?
020ED2: 66F6          488          BNE     ERR24A         ;IF SO
                      489 ;
020ED4: 6100010E      490          BSR.L   FIRSTEA        ;D4 = MODE
020ED8: 4A04          491          TST.B   D4             ;MODE = DN ?
020EDA: 6632          492          BNE     ERR22C         ;IF NOT
                      493 ;
020EDC: 61000088      494          BSR.L   LASTEA         ;D4 = MODE
020EE0: 5F04          495          SUBQ.B  #7,D4          ;MODE 0 - 6 ?
020EE2: 6B2A          496          BMI     ERR22C         ;IF SO
                      497 ;
020EE4: 5504          498          SUBQ.B  #2,D4          ;MODE 7 OR 8 ?
020EE6: 6A26          499          BPL     ERR22C         ;IF NOT
                      500 ;
020EE8: 4A38143F      501          TST.B   UDFFWD         ;UNDEFINED LABEL ?
020EEC: 664A          502          BNE     W2             ;IF SO
                      503 ;
                      504 ; CHECK WHETHER BRANCH IS IN RANGE
                      505 ;
020EEE: 96B81418      506          SUB.L   ADDRESS,D3     ;D3 = DISPLACEMENT+2
020EF2: 5583          507          SUBQ.L  #2,D3          ;SKIP OP CODE WORD
020EF4: 6A0E          508          BPL     DB1            ;IF FORWARD
                      509 ;
020EF6: 7400          510          MOVEQ   #0,D2
020EF8: 9483          511          SUB.L   D3,D2          ;2'S COMPLEMENT
020EFA: 0C8200008000  512          CMPI.L  #$8000,D2      ;OUT OF RANGE ?
020F00: 6336          513          BLS     W2             ;IF NOT
020F02: 62C2          514          BHI     ERR23A         ;IF SO
                      515 ;
020F04: 0C8200007FFE  516 DB1      CMPI.L  #$7FFE,D2      ;OUT OF RANGE ?
020F0A: 632C          517          BLS     W2             ;IF NOT
020F0C: 62B8          518          BHI     ERR23A         ;IF SO
                      519 ;
020F0E: 7E16          520 ERR22C   MOVEQ   #22,D7         ;ILLEGAL <EA>
020F10: 6000F59A      521 ERRC     BRA     ERROR          ;REPORT ERROR
                      522 ;
                      523 ;
                      524 ; SYNTAX:  CMPM.SIZE (AY)+,(AX)+
                      525 ;
020F14: 610000CE      526 CMPM     BSR.L   FIRSTEA        ;D4 = MODE
020F18: 5704          527          SUBQ.B  #3,D4          ;MODE = (AN)+ ?
020F1A: 66F2          528          BNE     ERR22C         ;IF NOT
                      529 ;
020F1C: 6148          530          BSR     LASTEA         ;D4 = MODE
020F1E: 5704          531          SUBQ.B  #3,D4          ;MODE = (AN)+ ?
020F20: 6710          532          BEQ     W1             ;IF SO
020F22: 66EA          533          BNE     ERR22C         ;IF NOT
                      534 ;
                      535 ;
                      536 ; SYNTAX:  LEA <EA>,AN   (NO SIZE ALLOWED)
                      537 ;
020F24: 4A381434      538 LEA      TST.B   SIZEID         ;SIZE SPEC'D ?
020F28: 6662          539          BNE     ERR24          ;IF SO
                      540 ;
020F2A: 610000B8      541          BSR.L   FIRSTEA        ;D4 MODE, D5 SIZE
020F2E: 6016          542          BRA     TYPE2A         ;CONTINUE
                      543 ;
                      545 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      546 ;
                      547 ;--------------
                      548 ;-- NO WORDS --
                      549 ;--------------
                      550 ;
                      551 ; THE PSEUDO-OP DOES NOT HAVE A FIELD
                      552 ;
020F30: 4E75          553 W0       RTS                    ;DONE
                      554 ;
                      555 ;--------------
                      556 ;-- ONE WORD --
                      557 ;--------------
                      558 ;
                      559 ; THE FIELD IS ONE WORD
                      560 ;
                      561 ; EXAMPLE:  RTS
                      562 ;
020F32: 54B81418      563 W1       ADDQ.L  #2,ADDRESS     ;ADD 2 TO ADR
020F36: 4E75          564          RTS                    ;DONE
                      565 ;
                      566 ;---------------
                      567 ;-- TWO WORDS --
                      568 ;---------------
                      569 ;
                      570 ; THE FIELD IS TWO WORDS
                      571 ;
020F38: 58B81418      572 W2       ADDQ.L  #4,ADDRESS     ;ADD 4 TO ADR
020F3C: 4E75          573          RTS                    ;DONE
                      574 ;
                      575 ;--------------------
                      576 ;-- OP CODE TYPE 2 --
                      577 ;--------------------
                      578 ;
                      579 ; THE OP FIELD HAS ONLY AN EFFECTIVE ADDRESS.
                      580 ; THE FIELD CAN BE ONE, TWO OR THREE WORDS.
                      581 ; ONLY CONTROL ADDRESSING MODES ARE USED.
                      582 ;
                      583 ; JMP, JSR, PEA
                      584 ;
020F3E: 4A381434      585 TYPE2    TST.B   SIZEID         ;SIZE SPEC'D ?
020F42: 6648          586          BNE     ERR24          ;IF SO
                      587 ;
020F44: 6120          588          BSR     LASTEA         ;D4 MODE, D5 SIZE
                      589 ;
                      590 ; CHECK FOR A LEGAL ADDRESSING MODE
                      591 ;
020F46: 343C07E4      592 TYPE2A   MOVE.W  #$7E4,D2       ;LEGAL ADR MODES
020F4A: 0902          593          BTST    D4,D2          ;LEGAL ADR MODE ?
020F4C: 6612          594          BNE     ADDADR         ;IF SO
020F4E: 6738          595          BEQ     ERR22          ;IF NOT
                      596 ;
                      598 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      599 ;
                      600 ;--------------------
                      601 ;-- OP CODE TYPE 3 --
                      602 ;--------------------
                      603 ;
                      604 ; THE OP FIELD HAS ONLY AN EFFECTIVE ADDRESS.
                      605 ; THE FIELD CAN BE ONE, TWO OR THREE WORDS.
                      606 ; ONLY DATA ALTERABLE ADDRESSING MODES ARE USED.
                      607 ; D15-D6 = OP CODE MASK, D5-D3 = EFFECTIVE MODE.
                      608 ; D2-D0 = ADDRESS REGISTER
                      609 ;
                      610 ; CLR, NEG, NEGX, NOT, SCC, TAS, TST
                      611 ;
020F50: 4A381434      612 SCC      TST.B   SIZEID         ;SIZE SPEC'D ?
020F54: 6636          613          BNE     ERR24          ;IF SO
                      614 ;
020F56: 610E          615 TYPE3    BSR     LASTEA         ;D4 MODE, D5 SIZE
020F58: 343C01FD      616          MOVE.W  #$1FD,D2       ;LEGAL ADR MODES
020F5C: 0902          617          BTST    D4,D2          ;ADR MODE LEGAL ?
020F5E: 6728          618          BEQ     ERR22          ;IF NOT
                      619 ;
020F60: DBB81418      620 ADDADR   ADD.L   D5,ADDRESS     ;INCR ADDRESS
020F64: 4E75          621          RTS                    ;DONE
                      622 ;
                      623 ; SERVICE THE SECOND (OR ONLY) ADDRESS FIELD
                      624 ;
020F66: 6100FD7E      625 LASTEA   BSR     DESTSIZE       ;D0 = <EA> FLD CNT
020F6A: 2448          626          MOVE.L  A0,A2          ;PTR TO <EA> FIELD
020F6C: 7A02          627          MOVEQ   #2,D5          ;DEFAULT ONE WORD
020F6E: 6000FB30      628          BRA     EA             ;GET MODE, SIZE
                      629 ;
                      630 ;--------------------
                      631 ;-- OP CODE TYPE 4 --
                      632 ;--------------------
                      633 ;
                      634 ; THE OP FIELD HAS AN <EA> AND A DATA REGISTER
                      635 ; THE FIELD CAN BE ONE, TWO OR THREE WORDS.
                      636 ; ONLY DATA ADDRESSING MODES ARE USED.
                      637 ;
                      638 ; CHK, DIVS, DIVU, MULS, MULU
                      639 ;
020F72: 4A381434      640 TYPE4    TST.B   SIZEID         ;SIZE SPEC'D ?
020F76: 6614          641          BNE     ERR24          ;IF SO
                      642 ;
020F78: 610000F8      643 TYPE4A   BSR.L   DATAEA         ;SVC DATA SRC <EA>
                      644 ;
                      645 ; CHECK FOR A DN DEST ADDRESS MODE ELSE ERROR
                      646 ;
020F7C: 61E8          647          BSR     LASTEA         ;D4 MODE
020F7E: 4A04          648          TST.B   D4             ;DN ?
020F80: 6606          649          BNE     ERR22          ;IF NOT
                      650 ;
020F82: 4E75          651          RTS                    ;DONE
                      652 ;
                      654 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      655 ;
020F84: 7E10          656 ERR16    MOVEQ   #16,D7         ;BAD <EA>
020F86: 6006          657          BRA     ERRCA
                      658 ;
020F88: 7E16          659 ERR22    MOVEQ   #22,D7         ;ILLEGAL ADR MODE
020F8A: 6002          660          BRA     ERRCA
                      661 ;
020F8C: 7E16          662 ERR24    MOVEQ   #22,D7         ;BAD SIZE SPEC
020F8E: 6000F51C      663 ERRCA    BRA     ERROR
                      664 ;
                      665 ;
                      666 ;--------------------
                      667 ;-- OP CODE TYPE 5 --
                      668 ;--------------------
                      669 ;
                      670 ; OP FIELD = IMMEDIATE DATA, THEN <EA>.
                      671 ; THE FIELD CAN BE TWO TO FIVE WORDS.
                      672 ; ONLY DATA ALTERABLE DEST ADR MODES ARE USED.
                      673 ;
                      674 ; ADDI, CMPI, SUBI
                      675 ;
020F92: 20781424      676 RTYPE5   MOVE.L  RESTART,A0     ;RESTORE PTR A0
020F96: 6134          677 TYPE5    BSR     STYP5          ;SVC SOURCE MODE
020F98: 6012          678          BRA     TYPE5C         ;CONTINUE
                      679 ;
                      680 ;
                      681 ;---------------------
                      682 ;-- OP CODE TYPE 5A --
                      683 ;---------------------
                      684 ;
                      685 ; OP FIELD = IMMEDIATE DATA, THEN <EA>.
                      686 ; THE FIELD CAN BE TWO TO FIVE WORDS.
                      687 ; ONLY DATA ALTERABLE DEST ADR MODES ARE USED.
                      688 ;
                      689 ; ANDI, EORI, ORI
                      690 ;
                      691 ; TYPE 5A IS DIFFERENT FROM TYPE 5 IN THAT THE
                      692 ; DESTINATION ADR FIELD CAN BE 'CCR' OR 'SR'
                      693 ;
020F9A: 6130          694 TYPE5A   BSR     STYP5          ;SVC SOURCE MODE
020F9C: 6100FD48      695          BSR     DESTSIZE       ;A0 = DEST, D0 = SIZE
020FA0: 610002BA      696          BSR.L   CHKWRD         ;DEST = WEIRD MODE ?
020FA4: 6706          697          BEQ     TYPE5C         ;IF NOT
                      698 ;
                      699 ; SERVICE WEIRD ADR MODE:  MUST BE SR OR CCR
                      700 ;
020FA6: 5901          701          SUBQ.B  #4,D1          ;SR OR CCR ?
020FA8: 6A88          702          BPL     W1             ;IF SO
020FAA: 6BDC          703          BMI     ERR22          ;IF NOT
                      704 ;
                      705 ; NOW SERVICE THE DESTINATION <EA>
                      706 ;
020FAC: 61B8          707 TYPE5C   BSR     LASTEA         ;D4 MODE, D5 SIZE
020FAE: 343C01FD      708          MOVE.W  #$1FD,D2       ;LEGAL ADR MODES
020FB2: 0902          709          BTST    D4,D2          ;ADR MODE LEGAL ?
020FB4: 67D2          710          BEQ     ERR22          ;IF NOT
                      711 ;
                      713 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      714 ;
                      715 ; THE <EA> IS A LEGAL 'DATA ALTERABLE' MODE
                      716 ;
020FB6: 0C040005      717          CMPI.B  #5,D4          ;'D(AN)' ?
020FBA: 6500FF76      718          BCS     W1             ;ONE MORE WORD IF SO
                      719 ;
020FBE: 0C040008      720          CMPI.B  #8,D4          ;.L ?
020FC2: 6600FF74      721          BNE     W2             ;IF NOT
                      722 ;
020FC6: 5CB81418      723          ADDQ.L  #6,ADDRESS     ;THREE MORE WORDS
020FCA: 4E75          724          RTS                    ;DONE
                      725 ;
                      726 ;
                      727 ;
                      728 ; COMMON SUBR:  ADDI, ANDI, CMPI, EORI, ORI, SUBI
                      729 ;
020FCC: 6116          730 STYP5    BSR     FIRSTEA        ;D4 MODE, D5 SIZE
020FCE: 0C04000B      731          CMPI.B  #11,D4         ;#<DATA> ?
020FD2: 66B4          732          BNE     ERR22          ;IF NOT
                      733 ;
                      734 ; .B OR .W = ONE MORE WORD,  .L = TWO MORE
                      735 ;
020FD4: 7A02          736          MOVEQ   #2,D5          ;IF .B OR .W
020FD6: 0C3800021434  737          CMPI.B  #2,SIZEID      ;.L ?
020FDC: 6682          738          BNE     ADDADR         ;IF NOT
                      739 ;
020FDE: 58B81418      740          ADDQ.L  #4,ADDRESS     ;.L = TWO WORDS
020FE2: 4E75          741          RTS                    ;DONE
                      742 ;
                      743 ;
                      744 ;
                      745 ; SERVICE THE FIRST OF TWO ADDRESS FIELDS
                      746 ;
                      747 ; LEAVE A0 POINTING TO THE DEST FIELD
                      748 ; AND A2 POINTING TO THE SOURCE FIELD.
                      749 ;
020FE4: 6100FC7E      750 FIRSTEA  BSR     SRCSIZE        ;SRC FLD SIZE
020FE8: C14A          751          EXG     A0,A2          ;A0 = DEST FLD PTR
020FEA: 7A02          752          MOVEQ   #2,D5          ;DEFAULT ONE WORD
020FEC: 6000FAB2      753          BRA     EA             ;GET MODE, SIZE
                      754 ;
                      756 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      757 ;
                      758 ;--------------------
                      759 ;-- OP CODE TYPE 6 --
                      760 ;--------------------
                      761 ;
                      762 ; 'MNE   .SIZE <EA>,DN'  OR  'MNE.SIZE DN,<EA>'
                      763 ; THE FIELD CAN BE ONE, TWO OR THREE WORDS
                      764 ; IF 'MNE.SIZE <EA>,DN' THEN DATA ADR MODES
                      765 ; IF 'MNE.SIZE DN,<EA>' THEN MEMORY ALTERABLE
                      766 ;
                      767 ; AND, OR
                      768 ;
020FF0: 0C100023      769 TYPE6    CMPI.B  #"#",(A0)      ;SRC = IMM DATA ?
020FF4: 67A4          770          BEQ     TYPE5A         ;IF SO
                      771 ;
020FF6: 61000150      772          BSR.L   DN2ND          ;2ND <EA> 'DN' ?
020FFA: 6700FF7C      773          BEQ     TYPE4A         ;IF SO
                      774 ;
020FFE: 6610          775          BNE     TYPE7A         ;IF NOT
                      776 ;
                      777 ;--------------------
                      778 ;-- OP CODE TYPE 7 --
                      779 ;--------------------
                      780 ;
                      781 ; 'MNE   .SIZE <EA>,DN'  OR  'MNE.SIZE DN,<EA>'
                      782 ; THE FIELD CAN BE ONE, TWO OR THREE WORDS
                      783 ; IF 'MNE.SIZE <EA>,DN' THEN ALL ADR MODES
                      784 ; IF 'MNE.SIZE DN,<EA>' THEN MEMORY ALTERABLE
                      785 ;
                      786 ; ADD, SUB
                      787 ;
021000: 21C81424      788 TYPE7    MOVE.L  A0,RESTART     ;SAVE PTR A0
021004: 61000142      789          BSR.L   DN2ND          ;2ND <EA> 'DN' ?
021008: 6740          790          BEQ     TYPE8B         ;IF SO
                      791 ;
02100A: 0C040001      792          CMPI.B  #1,D4          ;2ND <EA> 'AN' ?
02100E: 6722          793          BEQ     RTYPE8         ;IF SO
                      794 ;
                      795 ; MNE.SIZE DN,<EA>;  MEMORY ALTERABLE MODES
                      796 ;
021010: 61D2          797 TYPE7A   BSR     FIRSTEA        ;D4 MODE, D5 SIZE
021012: 0C04000B      798          CMPI.B  #11,D4         ;ADR MODE 11 ?
021016: 6700FF7A      799          BEQ     RTYPE5         ;IF SO
                      800 ;
02101A: 4A04          801          TST.B   D4             ;MODE 0 ?
02101C: 6600FF6A      802          BNE     ERR22          ;IF NOT MODE 0
                      803 ;
021020: 6100FF44      804          BSR     LASTEA         ;D4 MODE, D5 SIZE
                      805 ;
                      806 ; CHECK FOR ILLEGAL DEST ADDRESS MODES
                      807 ;
021024: 343C01FC      808          MOVE.W  #$1FC,D2       ;LEGAL ADR MODES
021028: 0902          809          BTST    D4,D2          ;ADR MODE LEGAL ?
02102A: 6600FF34      810          BNE     ADDADR         ;IF SO
02102E: 6700FF58      811          BEQ     ERR22          ;IF NOT
                      812 ;
                      814 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      815 ;
                      816 ;--------------------
                      817 ;-- OP CODE TYPE 8 --
                      818 ;--------------------
                      819 ;
                      820 ; SYNTAX:  'MNE   .SIZE <EA>,AN';  SIZE =.W OR .L
                      821 ; THE FIELD CAN BE ONE, TWO OR THREE WORDS
                      822 ;
                      823 ; ADDA, CMPA, SUBA:    ALL ADR MODES LEGAL
                      824 ;
021032: 20781424      825 RTYPE8   MOVE.L  RESTART,A0     ;RESTORE PTR A0
021036: 61000110      826 TYPE8    BSR.L   DN2ND          ;2ND <EA> 'DN' ?
02103A: 0C040001      827          CMPI.B  #1,D4          ;DEST = 'AN' ?
02103E: 660000C0      828          BNE.L   ERR22D         ;IF NOT
                      829 ;
                      830 ; A SIZE OF .B IS ILLEGAL
                      831 ;
021042: 4A381434      832 TYPE8A   TST.B   SIZEID         ;.B ?
021046: 6B0000B4      833          BMI.L   ERR24D         ;IF SO
                      834 ;
                      835 ; ALL ADDRESSING MODES ARE LEGAL
                      836 ;
02104A: 6198          837 TYPE8B   BSR     FIRSTEA        ;D4 MODE, D5 SIZE
02104C: 0C040001      838          CMPI.B  #1,D4          ;AN ?
021050: 6608          839          BNE     TYPE8C         ;IF NOT
                      840 ;
                      841 ; MODE = 'AN';  A SIZE OF .B IS ILLEGAL
                      842 ;
021052: 4A381434      843          TST.B   SIZEID         ;.B ?
021056: 6B0000A4      844          BMI.L   ERR24D         ;IF SO
                      845 ;
02105A: 0C04000B      846 TYPE8C   CMPI.B  #11,D4         ;IMMEDIATE ?
02105E: 6600FF00      847          BNE     ADDADR         ;DONE IF NOT
                      848 ;
021062: 0C3800021434  849          CMPI.B  #2,SIZEID      ;SIZE = .L ?
021068: 6600FECE      850          BNE     W2             ;IF NOT
                      851 ;
02106C: 5CB81418      852          ADDQ.L  #6,ADDRESS     ;THREE WORDS
021070: 4E75          853          RTS                    ;DONE
                      854 ;
                      855 ; SUBROUTINE CALLED BY TYPE 4 AND BY 'MOVE'
                      856 ; SERVICE SRC <EA> = DATA   (ALL BUT 'AN')
                      857 ;
021072: 6100FF70      858 DATAEA   BSR     FIRSTEA        ;D4 = SRC MODE
021076: 0C040001      859          CMPI.B  #1,D4          ;SRC <EA> = 'AN' ?
02107A: 66DE          860          BNE     TYPE8C         ;CONTINUE IF NOT
02107C: 67000082      861          BEQ.L   ERR22D         ;IF SO
                      862 ;
                      864 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      865 ;
                      866 ;--------------------
                      867 ;-- OP CODE TYPE 9 --
                      868 ;--------------------
                      869 ;
                      870 ; SYNTAX:  'MNE   .SIZE #M,<EA>';  M = 1 TO 8
                      871 ; THE FIELD CAN BE ONE, TWO OR THREE WORDS
                      872 ;
                      873 ; ADDQ, SUBQ:   ALTERABLE ADDRESS MODES
                      874 ;
021080: 610000D8      875 TYPE9    BSR.L   QSRC           ;SRC = #1-8 ?
021084: 6100FEE0      876          BSR     LASTEA         ;D4 MODE, D5 SIZE
021088: 0C040001      877          CMPI.B  #1,D4          ;AN ?
02108C: 6606          878          BNE     TYPE9A         ;IF NOT
                      879 ;
                      880 ; MODE = 'AN';  A SIZE OF .B IS ILLEGAL
                      881 ;
02108E: 4A381434      882          TST.B   SIZEID         ;.B ?
021092: 6B68          883          BMI     ERR24D         ;IF SO
                      884 ;
021094: 0C040008      885 TYPE9A   CMPI.B  #8,D4          ;ILLEGAL MODE ?
021098: 6300FEC6      886          BLS     ADDADR         ;IF NOT
02109C: 6262          887          BHI     ERR22D         ;IF SO
                      888 ;
                      889 ;
                      890 ;---------------------
                      891 ;-- OP CODE TYPE 10 --
                      892 ;---------------------
                      893 ;
                      894 ; 'MNE    DN,<EA>'  OR  'MNE #<DATA>,<EA>'
                      895 ; THE FIELD CAN BE ONE TO FOUR WORDS
                      896 ; A '.SIZE' SPECIFICATION IS ILLEGAL
                      897 ; ONLY DATA ALTERABLE <EA>S ARE USED
                      898 ;
                      899 ; BCHG, BCLR, BSET
                      900 ;
02109E: 4A381434      901 TYPE10   TST.B   SIZEID         ;TEST SIZE ID
0210A2: 6658          902          BNE     ERR24D         ;IF SIZE SPEC'D
                      903 ;
                      904 ; IF TRHE SRC <EA> IS 'DN', SKIP TO 'TYPE3'
                      905 ;
0210A4: 6100FF3E      906          BSR     FIRSTEA        ;D4 = MODE
0210A8: 4A04          907          TST.B   D4             ;'DN' ?
0210AA: 6700FEAA      908          BEQ     TYPE3          ;IF SO
                      909 ;
                      910 ; BIT OP STATIC;  MNE #<DATA>,<EA>
                      911 ;
0210AE: 0C04000B      912          CMPI.B  #11,D4         ;SOURCE <EA> '#<DATA>'
0210B2: 664C          913          BNE     ERR22D         ;IF NOT
                      914 ;
0210B4: 6100FEB0      915          BSR     LASTEA         ;D4 MODE, D5 SIZE
0210B8: 5405          916          ADDQ.B  #2,D5          ;SRC #<DATA> WORD
0210BA: 343C01FD      917          MOVE.W  #$1FD,D2       ;LEGAL ADR MODES
0210BE: 0902          918          BTST    D4,D2          ;LEGAL ADR MODE ?
0210C0: 6600FE9E      919          BNE     ADDADR         ;IF LEGAL ADR MODE
0210C4: 673A          920          BEQ     ERR22D         ;IF NOT
                      921 ;
                      923 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      924 ;
                      925 ; 'BTST DN,<EA>'  OR  'BTST #<DATA>,<EA>'
                      926 ;
0210C6: 4A381434      927 BTST     TST.B   SIZEID         ;TEST SIZE ID
0210CA: 6630          928          BNE     ERR24D         ;IF SIZE SPECIFIED
                      929 ;
0210CC: 6100FF16      930          BSR     FIRSTEA        ;D4 = MODE
0210D0: 4A04          931          TST.B   D4             ;MODE = 'DN' ?
0210D2: 6618          932          BNE     BTSTSTAT       ;IF NOT
                      933 ;
                      934 ; BIT TEST DYNAMIC;  BTST DN,<EA>
                      935 ;
0210D4: 6100FE90      936          BSR     LASTEA         ;D4 MODE, D5 SIZE
0210D8: 5304          937          SUBQ.B  #1,D4          ;MODE = 'AN' ?
0210DA: 6724          938          BEQ     ERR22D         ;IF SO
                      939 ;
0210DC: 983C000A      940          SUB.B   #10,D4         ;IMM DATA ?
0210E0: 6600FE7E      941          BNE     ADDADR         ;IF NOT
                      942 ;
0210E4: 5405          943          ADDQ.B  #2,D5          ;ADJ FIELD SIZE
0210E6: 4EF900020F60  944          JMP     ADDADR         ;DONE
                      945 ;
                      946 ; BIT TEST STATIC;  BTST #<DATA>,<EA>
                      947 ;
0210EC: 6100FE78      948 BTSTSTAT BSR     LASTEA         ;D4 MODE, D5 SIZE
0210F0: 5405          949          ADDQ.B  #2,D5          ;SRC #<DATA> WORD
0210F2: 343C07FD      950          MOVE.W  #$7FD,D2       ;LEGAL ADR MODES
0210F6: 0902          951          BTST    D4,D2          ;LEGAL ADR MODE ?
0210F8: 6600FE66      952          BNE     ADDADR         ;IF LEGAL
                      953 ;
0210FC: 7E18          954 ERR24D   MOVEQ   #24,D7         ;BAD SIZE SPEC
0210FE: 6002          955          BRA     ERRD
                      956 ;
021100: 7E16          957 ERR22D   MOVEQ   #22,D7         ;ILLEGAL <EA>
021102: 6000F3A8      958 ERRD     BRA     ERROR
                      959 ;
                      961 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      962 ;
                      963 ;---------------------
                      964 ;-- OP CODE TYPE 11 --
                      965 ;---------------------
                      966 ;
                      967 ; THERE ARE THREE FORMS OF THESE MNEMONICS:
                      968 ; 'MNE.SIZE DX,DY',  'MNE.SIZE #M,DY',  'MNE <EA>'
                      969 ; THE 1ST TWO FORMS HAVE A SIZE OF B, W, L
                      970 ;-- THE 3RD FORM HAS AN IMPLICIT SIZE OF .W AND
                      971 ;   THE ADDRESS MODES ARE MEMORY ALTERABLE --
                      972 ;
                      973 ; ASL, ASR, LSL, LSR, ROL, ROR
                      974 ;
021106: 6100FD26      975 TYPE11   BSR     ONETWO         ;TWO ADR FIELDS ?
02110A: 6616          976          BNE     TYPE11C        ;IF SO
                      977 ;
                      978 ; WE HAVE 'MNE <EA>',  MEMORY ALTERABLE
                      979 ;
02110C: 4A381434      980          TST.B   SIZEID         ;SIZE SPEC'D ?
021110: 66EA          981          BNE     ERR24D         ;ERROR IF SO
                      982 ;
021112: 6100FE52      983          BSR     LASTEA         ;D4 MODE, D5 COUNT
021116: 343C01FC      984          MOVE.W  #$1FC,D2       ;LEGAL ADR MODES
02111A: 0902          985          BTST    D4,D2          ;ADR MODE LEGAL ?
02111C: 6600FE42      986          BNE     ADDADR         ;IF SO
021120: 67DE          987          BEQ     ERR22D         ;IF NOT
                      988 ;
                      989 ; WE HAVE 'MNE.SIZE FLD1,DY':  FLD1 = #<DATA> ?
                      990 ;
021122: 6124          991 TYPE11C  BSR     DN2ND          ;ADR FLD2 = 'DN' ?
021124: 66DA          992          BNE     ERR22D         ;IF NOT
                      993 ;
                      994 ; ADR FLD1 MUST BE 'DN' OR '#<1-8>'
                      995 ;
021126: 6100FEBC      996          BSR     FIRSTEA        ;D4 = MODE
02112A: 4A04          997          TST.B   D4             ;'DN' ?
02112C: 6704          998          BEQ     W1A            ;ONE WORD IF SO
                      999 ;
02112E: 204A         1000          MOVE.L  A2,A0          ;A0 = FLD1 PTR
021130: 6128         1001          BSR     QSRC           ;MUST BE '#<1-8>'
021132: 54B81418     1002 W1A      ADDQ.L  #2,ADDRESS     ;ONE WORD
021136: 4E75         1003          RTS                    ;DONE
                     1004 ;
                     1005 ;
                     1006 ; SUBROUTINE;  CONFIRM 1ST <EA> IS 'DN' ELSE ERROR
                     1007 ;
021138: 6100FB2A     1008 DN1ST    BSR     SRCSIZE        ;SRC FLD SIZE
02113C: 2448         1009          MOVE.L  A0,A2
02113E: 6100F960     1010          BSR     EA             ;GET SRC MODE
021142: 4A04         1011          TST.B   D4             ;'DN' ?
021144: 66BA         1012          BNE     ERR22D         ;IF NOT
                     1013 ;
021146: 4E75         1014          RTS                    ;DONE
                     1015 ;
                     1017 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1018 ;
                     1019 ; SUBROUTINE;  IS THE  2ND <EA> 'DN' ?
                     1020 ;
021148: 2F08         1021 DN2ND    MOVE.L  A0,-(A7)       ;SAVE TEXT PTR
02114A: 6100FB18     1022          BSR     SRCSIZE        ;SKIP SRC FIELD
02114E: C14A         1023          EXG     A0,A2          ;A0 = DEST PTR
021150: 6100FE14     1024          BSR     LASTEA         ;D4 = 2ND MODE
021154: 205F         1025          MOVE.L  (A7)+,A0       ;RESTORE TEXT PTR
021156: 4A04         1026          TST.B   D4             ;DEST = 'DN' ?
021158: 4E75         1027          RTS                    ;DONE
                     1028 ;
                     1029 ; 1ST ADR FIELD MUST BE #<DATA>, DATA = 1-8
                     1030 ;
02115A: 0C180023     1031 QSRC     CMPI.B  #"#",(A0)+     ;IMMEDIATE DATA ?
02115E: 66A0         1032          BNE     ERR22D         ;IF NOT
                     1033 ;
021160: 1C18         1034          MOVE.B  (A0)+,D6       ;NEXT CHAR
021162: 9C3C0031     1035          SUB.B   #"1",D6        ;MUST BE 1 TO 8
021166: 0C060007     1036          CMPI.B  #7,D6          ;1 TO 8 ?
02116A: 6240         1037          BHI     ERR11H         ;IF NOT
                     1038 ;
02116C: 0C18002C     1039          CMPI.B  #",",(A0)+     ;COMMA ?
021170: 663E         1040          BNE     ERR16H         ;IF NOT
                     1041 ;
021172: 4E75         1042          RTS                    ;DONE
                     1043 ;
                     1044 ; SYNTAX:  MOVEQ #<DATA>,DN
                     1045 ;
021174: 4A381434     1046 MOVEQ    TST.B   SIZEID         ;NO ID ALLOWED
021178: 6682         1047          BNE     ERR24D         ;IF SIZE SPEC'D
                     1048 ;
02117A: 6100FE68     1049          BSR     FIRSTEA        ;D4 MODE, D5 SIZE
02117E: 0C04000B     1050          CMPI.B  #11,D4         ;"<DATA> ?
021182: 6600FF7C     1051          BNE     ERR22D         ;IF NOT
                     1052 ;
021186: 6100FDDE     1053          BSR     LASTEA         ;D4 MODE, D5 SIZE
02118A: 4A04         1054          TST.B   D4             ;DN ?
02118C: 67A4         1055          BEQ     W1A            ;IF SO
02118E: 666E         1056          BNE     ERR22H         ;IF NOT
                     1057 ;
                     1058 ; SYNTAX:  LINK AN,#<DISPLACEMENT>
                     1059 ;
021190: 4A381434     1060 LINK     TST.B   SIZEID         ;NO ID ALLOWED
021194: 666C         1061          BNE     ERR24H         ;IF SIZE SPEC'D
                     1062 ;
021196: 6100FE4C     1063          BSR     FIRSTEA        ;D4 MODE
02119A: 5304         1064          SUBQ.B  #1,D4          ;MODE = AN ?
02119C: 6660         1065          BNE     ERR22H         ;IF NOT
                     1066 ;
02119E: 6100FDC6     1067          BSR     LASTEA         ;D4 MODE
0211A2: 0C04000B     1068          CMPI.B  #11,D4         ;#<DATA> ?
0211A6: 6700FD90     1069          BEQ     W2             ;IF SO
0211AA: 6652         1070          BNE     ERR22H         ;IF NOT
                     1071 ;
0211AC: 7E0B         1072 ERR11H   MOVEQ   #11,D7         ;BAD INTEGER
0211AE: 6054         1073          BRA     ERRH
                     1074 ;
0211B0: 7E10         1075 ERR16H   MOVEQ   #16,D7         ;BAD <EA>
0211B2: 6050         1076          BRA     ERRH
                     1077 ;
                     1079 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1080 ;
                     1081 ; SYNTAX:  ABCD DY,DX         (NO SIZE)
                     1082 ;     OR:  ABCD -(AY),-(AX)   (NO SIZE)
                     1083 ;
0211B4: 4A381434     1084 ABCD     TST.B   SIZEID         ;SIZE SPEC'D ?
0211B8: 6648         1085          BNE     ERR24H         ;IF SO
                     1086 ;
0211BA: 6100FE28     1087 ADDX     BSR     FIRSTEA        ;D4 = MODE
0211BE: 4A04         1088          TST.B   D4             ;MODE = DN ?
0211C0: 660A         1089          BNE     ABCD1          ;IF NOT
                     1090 ;
0211C2: 6100FDA2     1091          BSR     LASTEA         ;D4 = MODE
0211C6: 4A04         1092          TST.B   D4             ;MODE = DN ?
0211C8: 673E         1093          BEQ     W1B            ;IF SO
0211CA: 6632         1094          BNE     ERR22H         ;IF NOT
                     1095 ;
0211CC: 5904         1096 ABCD1    SUBQ.B  #4,D4          ;MODE = -(AN) ?
0211CE: 662E         1097          BNE     ERR22H         ;IF NOT
                     1098 ;
0211D0: 6100FD94     1099          BSR     LASTEA         ;D4 = MODE
0211D4: 5904         1100          SUBQ.B  #4,D4          ;MODE = -(AN) ?
0211D6: 6730         1101          BEQ     W1B            ;IF SO
0211D8: 6624         1102          BNE     ERR22H         ;IF NOT
                     1103 ;
                     1104 ; SYNTAX:  EXG RX,RY    (NO SIZE ALLOWED)
                     1105 ;
0211DA: 4A381434     1106 EXG      TST.B   SIZEID         ;SIZE SPEC'D ?
0211DE: 6622         1107          BNE     ERR24H         ;IF SO
                     1108 ;
0211E0: 6100FE02     1109          BSR     FIRSTEA        ;D4 = MODE
0211E4: 4A04         1110          TST.B   D4             ;MODE = DN ?
0211E6: 660A         1111          BNE     EXG1           ;IF NOT
                     1112 ;
                     1113 ; THE NEXT <EA> CAN BE 'DN' OR 'AN'
                     1114 ;
0211E8: 6100FD7C     1115          BSR     LASTEA         ;D4 = MODE
0211EC: 5504         1116          SUBQ.B  #2,D4          ;AN OR DN ?
0211EE: 6B18         1117          BMI     W1B            ;IF SO
0211F0: 6A0C         1118          BPL     ERR22H         ;IF NOT
                     1119 ;
                     1120 ; MUST BE 'EXG AN,AN'
                     1121 ;
0211F2: 5304         1122 EXG1     SUBQ.B  #1,D4          ;MODE = AN ?
0211F4: 6608         1123          BNE     ERR22H         ;IF NOT
                     1124 ;
0211F6: 6100FD6E     1125          BSR     LASTEA         ;D4 = MODE
0211FA: 5304         1126          SUBQ.B  #1,D4          ;MODE = AN ?
0211FC: 670A         1127          BEQ     W1B            ;IF SO
                     1128 ;
                     1129 ; (CONTINUE INTO 'ERR22H' IF NOT)
                     1130 ;
0211FE: 7E16         1131 ERR22H   MOVEQ   #22,D7         ;ILLEGAL <EA>
021200: 6002         1132          BRA     ERRH
                     1133 ;
021202: 7E18         1134 ERR24H   MOVEQ   #24,D7         ;BAD SIZE SPEC
021204: 6000F2A6     1135 ERRH     BRA     ERROR          ;REPORT ERROR
                     1136 ;
021208: 54B81418     1137 W1B      ADDQ.L  #2,ADDRESS     ;ONE WORD
02120C: 4E75         1138          RTS                    ;DONE
                     1139 ;
                        2 ; COPYRIGHT 1987 DTACK GROUNDED INC:   PASS1B
                        3 ;
                        4 ; SYNTAX:  TRAP #<VECTOR>  (NO SIZE ALLOWED)
                        5 ;
02120E: 4A381434        6 TRAP     TST.B   SIZEID         ;SIZE SPEC'D ?
021212: 66EE            7          BNE     ERR24H         ;IF SO
                        8 ;
021214: 6100FD50        9          BSR     LASTEA         ;D4 = MODE
021218: 0C04000B       10          CMPI.B  #11,D4         ;#<DATA> ?
02121C: 67EA           11          BEQ     W1B            ;IF SO
02121E: 66DE           12          BNE     ERR22H         ;IF NOT
                       13 ;
                       14 ; SYNTAX:  STOP #<DATA>   (NO SIZE ALLOWED)
                       15 ;
021220: 4A381434       16 STOP     TST.B   SIZEID         ;SIZE SPEC'D ?
021224: 66DC           17          BNE     ERR24H         ;IF SO
                       18 ;
021226: 6100FD3E       19          BSR     LASTEA         ;D4 = MODE
02122A: 0C04000B       20          CMPI.B  #11,D4         ;#<DATA> ?
02122E: 6700FD08       21          BEQ     W2             ;IF SO
021232: 66CA           22          BNE     ERR22H         ;IF NOT
                       23 ;
                       24 ; SYNTAX:  UNLK AN   (NO SIZE ALLOWED)
                       25 ;
021234: 4A381434       26 UNLK     TST.B   SIZEID         ;SIZE SPEC'D ?
021238: 66C8           27          BNE     ERR24H         ;IF SO
                       28 ;
02123A: 6100FD2A       29          BSR     LASTEA         ;D4 = MODE
02123E: 5304           30          SUBQ.B  #1,D4          ;MODE = AN ?
021240: 67C6           31          BEQ     W1B            ;IF SO
021242: 66BA           32          BNE     ERR22H         ;IF NOT
                       33 ;
                       34 ; SYNTAX:  EXT.SIZE DN     SIZE = .W OR .L
                       35 ;
021244: 4A381434       36 EXT      TST.B   SIZEID         ;SIZE = .B ?
021248: 6A08           37          BPL     SWAP1          ;IF NOT
02124A: 6BB6           38          BMI     ERR24H         ;IF SO
                       39 ;
                       40 ; SYNTAX:  SWAP DN     (NO SIZE ALLOWED)
                       41 ;
02124C: 4A381434       42 SWAP     TST.B   SIZEID         ;SIZE SPEC'D ?
021250: 66B0           43          BNE     ERR24H         ;IF SO
                       44 ;
021252: 6100FD12       45 SWAP1    BSR     LASTEA         ;D4 = MODE
021256: 4A04           46          TST.B   D4             ;MODE = DN ?
021258: 67AE           47          BEQ     W1B            ;IF SO
02125A: 66A2           48          BNE     ERR22H         ;IF NOT
                       49 ;
                       51 ; COPYRIGHT 1987 DTACK GROUNDED INC
                       52 ;
                       53 ; CHECK FOR A WEIRD LABEL (SP, SR, CCR, USP, SSP)
                       54 ; RETURN WITH Z FLAG SET IF NOT FOUND
                       55 ;
                       56 ; A0 = FIELD PTR         D0 = FIELD COUNT
                       57 ; (A0, A1, A2, D0 ARE PRESERVED)
                       58 ;
02125C: 47F90002128A   59 CHKWRD   LEA     WTBL,A3        ;PTR TO TABLE
021262: 7201           60          MOVEQ   #1,D1          ;INIT WEIRD I.D.
021264: 7C00           61          MOVEQ   #0,D6          ;CLR UPPER BITS
                       62 ;
021266: 1C1B           63 CW1      MOVE.B  (A3)+,D6       ;FETCH LINK
021268: 6718           64          BEQ     CWX            ;IF LINK IS ZERO
                       65 ;
02126A: BC00           66          CMP.B   D0,D6          ;LENGTH SAME ?
02126C: 6616           67          BNE     CW3            ;IF NOT
                       68 ;
02126E: 2A48           69          MOVE.L  A0,A5          ;PTR 1
021270: 2C4B           70          MOVE.L  A3,A6          ;PTR 2
021272: 1406           71          MOVE.B  D6,D2          ;STR COUNT
                       72 ;
021274: 161D           73 CW2      MOVE.B  (A5)+,D3       ;FETCH A CHAR
021276: B61E           74          CMP.B   (A6)+,D3       ;CHARS MATCH ?
021278: 660A           75          BNE     CW3            ;IF NOT
                       76 ;
02127A: 5302           77          SUBQ.B  #1,D2          ;DECR STR COUNT
02127C: 66F6           78          BNE     CW2            ;LOOP 'TIL ZERO
                       79 ;
                       80 ; A MATCH TO THE WEIRD STRING WAS FOUND !
                       81 ; (STORING THE I.D. CLEARS THE Z FLAG)
                       82 ;
02127E: 11C11437       83          MOVE.B  D1,WEIRD       ;STORE WEIRD I.D.
021282: 4E75           84 CWX      RTS                    ;DONE
                       85 ;
                       86 ; THE STRINGS (OR LENGTHS) DID NOT MATCH
                       87 ;
021284: D7C6           88 CW3      ADD.L   D6,A3          ;PTR TO NEXT STR
021286: 5201           89          ADDQ.B  #1,D1          ;INCR WEIRD I.D.
021288: 60DC           90          BRA     CW1            ;CHK NEXT STRING
                       91 ;
                       92 ; LINKED ASCII TABLE OF WEIRD LABELS
                       93 ;
02128A: 02             94 WTBL     DC.B    2
02128B: 5350           95          ASC     "SP"           ;I.D. #1
02128D: 03             96          DC.B    3
02128E: 555350         97          ASC     "USP"          ;I.D. #2
021291: 03             98          DC.B    3
021292: 535350         99          ASC     "SSP"          ;I.D. #3
021295: 03            100          DC.B    3
021296: 434352        101          ASC     "CCR"          ;I.D. #4
021299: 02            102          DC.B    2
02129A: 5352          103          ASC     "SR"           ;I.D. #5
02129C: 00            104          DC.B    0              ;TABLE END MARKER
02129D:               105          SYNC                   ;EVEN ADR
                      106 ;
                      108 ;COPYRIGHT 1986 DIGITAL ACOUSTICS INC
                      109 ;
02129E: 6100FA46      110 ASC      BSR     DESTSIZE       ;A0 PTR, D0 SIZE
0212A2: 7A22          111          MOVEQ   #$22,D5        ;D5 = QUOTE CHAR
0212A4: 7C00          112          MOVEQ   #0,D6          ;CLR UPPER BITS
0212A6: 1C18          113          MOVE.B  (A0)+,D6       ;1ST CHAR
0212A8: BC05          114          CMP.B   D5,D6          ;QUOTE CHAR ?
0212AA: 6706          115          BEQ     ASC1           ;IF SO
                      116 ;
0212AC: 7A27          117          MOVEQ   #"'",D5        ;D5 = APOSTROPHE
0212AE: BC05          118          CMP.B   D5,D6          ;APOSTROPHE ?
0212B0: 6618          119          BNE     ERR6A          ;IF NOT
                      120 ;
0212B2: 1C18          121 ASC1     MOVE.B  (A0)+,D6       ;NEXT CHAR
0212B4: 08860007      122          BCLR    #7,D6          ;SET MSB LOW
0212B8: 4A316000      123          TST.B   (A1,D6)        ;CHAR ATTR BYTE
0212BC: 6A10          124          BPL     ERR28A         ;IF NOT PRINTABLE
                      125 ;
0212BE: BC05          126          CMP.B   D5,D6          ;TERMINATOR ?
0212C0: 67C0          127          BEQ     CWX            ;DONE IF SO
                      128 ;
0212C2: 52B81418      129          ADDQ.L  #1,ADDRESS     ;INCR ADDRESS
0212C6: 5300          130          SUBQ.B  #1,D0          ;DECR FIELD CNT
0212C8: 66E8          131          BNE     ASC1           ;IF NOT ZERO
                      132 ;
                      133 ; END OF FIELD WITHOUT TERMINATOR
                      134 ;
0212CA: 7E06          135 ERR6A    MOVEQ   #6,D7          ;SYNTAX ERROR
0212CC: 6002          136          BRA     ERRA
                      137 ;
0212CE: 7E1C          138 ERR28A   MOVEQ   #28,D7         ;UNPRINTABLE CHAR
0212D0: 6000F1DA      139 ERRA     BRA     ERROR
                      140 ;
                      141 ;
                      142 ;
                      143 ; 'CMP <EA>,DN':  ALL ADR MODES;  .B, .W, .L
                      144 ;
0212D4: 6100FE72      145 CMP      BSR     DN2ND          ;2ND <EA> 'DN' ?
0212D8: 6700FD70      146          BEQ     TYPE8B         ;IF SO
                      147 ;
0212DC: 0C040001      148          CMPI.B  #1,D4          ;2ND <EA> 'AN' ?
0212E0: 6700FD60      149          BEQ     TYPE8A         ;IF SO
                      150 ;
0212E4: 0C100023      151          CMPI.B  #"#",(A0)      ;SRC = #<DATA> ?
0212E8: 6700FCAC      152          BEQ     TYPE5          ;IF SO
0212EC: 6600FF10      153          BNE     ERR22H         ;IF NOT
                      154 ;
                      155 ;
                      156 ;
0212F0: 7401          157 DC       MOVEQ   #1,D2          ;IN CASE .B
0212F2: 12381434      158          MOVE.B  SIZEID,D1      ;FETCH SIZE I.D.
0212F6: 6B08          159          BMI     DCX            ;IF .B
                      160 ;
0212F8: 7402          161          MOVEQ   #2,D2          ;IN CASE .W
0212FA: 6126          162          BSR     RNDADLBL       ;ROUND ADR, LABEL ADR
0212FC: 6602          163          BNE     DCX            ;IF NOT .L
                      164 ;
0212FE: 7404          165          MOVEQ   #4,D2          ;TWO WORDS
                      166 ;
021300: D5B81418      167 DCX      ADD.L   D2,ADDRESS     ;INCR THE ADDRESS
021304: 4E75          168          RTS                    ;DONE
                      169 ;
                      171 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      172 ;
021306: 615A          173 DS       BSR     SVCEXPR        ;RESULT IN D3.L
021308: 676C          174          BEQ     ERR41          ;ILLEG FWRD REF
                      175 ;
02130A: 7400          176          MOVEQ   #0,D2          ;IN CASE .B
02130C: 12381434      177          MOVE.B  SIZEID,D1      ;FETCH SIZE I.D.
021310: 6B08          178          BMI     DSX            ;IF .B
                      179 ;
021312: 7401          180          MOVEQ   #1,D2          ;IN CASE .W
021314: 610C          181          BSR     RNDADLBL       ;ROUND ADR, LABEL ADR
021316: 6602          182          BNE     DSX            ;IF NOT .L
                      183 ;
021318: 7402          184          MOVEQ   #2,D2          ;TWO WORDS
                      185 ;
02131A: E5A3          186 DSX      ASL.L   D2,D3          ;X 1, 2 OR 4
02131C: D7B81418      187          ADD.L   D3,ADDRESS     ;INCR THE ADDRESS
021320: 4E75          188          RTS                    ;DONE
                      189 ;
                      190 ;
                      191 ;
                      192 ; ROUND THE ADDRESS AND LABEL ADR IF PRESENT
                      193 ;
021322: 52B81418      194 RNDADLBL ADDQ.L  #1,ADDRESS     ;ROUND THE ADDRESS
021326: 08B80000141B  195          BCLR    #0,ADDRESS+3
02132C: 4A381436      196          TST.B   LBLFLG         ;LABEL PRESENT ?
021330: 6706          197          BEQ     RNDADLBX       ;IF NOT
                      198 ;
021332: 2AB81418      199          MOVE.L  ADDRESS,(A5)   ;ADR TO LBL ADR
021336: 4215          200          CLR.B   (A5)           ;CLR THE UPPER BYTE
                      201 ;
021338: 5501          202 RNDADLBX SUBQ.B  #2,D1          ;FOR 'DC' AND 'DS'
02133A: 4E75          203          RTS                    ;DONE
                      204 ;
                      205 ;
                      206 ;
                      207 ; EOR.SIZE DN,<EA>  (MODES 0, 2-8)
                      208 ;
02133C: 6100FDFA      209 EOR      BSR     DN1ST          ;CHK SRC = MODE 0
021340: 5688          210          ADDQ.L  #3,A0          ;CORRECT THE PTR
021342: 6000FC12      211          BRA     TYPE3          ;SVC DEST <EA>
                      212 ;
                      213 ;
                      214 ;
                      215 ; 'EQUATE' A LABEL:  LBL ADR = <EXPRESSION>
                      216 ;
021346: 42B81408      217 EQU      CLR.L   ADRTEMP        ;CLR REF ADR
02134A: 6116          218          BSR     SVCEXPR        ;D3.L = ADDRESS
02134C: 6728          219          BEQ     ERR41          ;ILLEGAL FWRD REF
                      220 ;
02134E: 21C31408      221          MOVE.L  D3,ADRTEMP     ;STORE REF ADR
                      222 ;
                      223 ; STORE THE NEW LABEL AND ITS DEFINED ADDRESS
                      224 ; IN THE LABEL TABLE, THEN DONE
                      225 ;
021352: 24381400      226 EQUX     MOVE.L  LBLTEMP,D2     ;RECALL LABEL TO
021356: 26381404      227          MOVE.L  LBLTEMP+4,D3   ;REGS D2 AND D3
02135A: 6100FA48      228          BSR     SVCLBL         ;STORE LABEL, ADR
02135E: 6000F54C      229          BRA     ASMLIN         ;NEXT LINE
                      230 ;
                      232 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      233 ;
                      234 ; EVALUATE AN <EXPRESSION>;  VALUE TO D3.L
                      235 ; RETURN WITH Z FLAG SET IF A FORWARD LBL REF
                      236 ;
021362: 6100F982      237 SVCEXPR  BSR     DESTSIZE       ;A0 PTR, D0 SIZE
021366: 1200          238          MOVE.B  D0,D1
021368: 2648          239          MOVE.L  A0,A3
02136A: 61000412      240          BSR.L   CHKEXPR        ;CHK <EXPR> SYNTAX
02136E: 1200          241          MOVE.B  D0,D1
021370: 2648          242          MOVE.L  A0,A3
021372: 6000023A      243          BRA.L   EVALEXPR       ;VALUE IN D3.L
                      244 ;
                      245 ;
021376: 7E29          246 ERR41    MOVEQ   #41,D7         ;ILLEGAL FORWARD REF
021378: 603A          247          BRA     ERRG
                      248 ;
                      249 ;
                      250 ; PSEUDO-OP;  FORWARD.L OR FORWARD.W
                      251 ;
02137A: 0C10004C      252 FWRD     CMPI.B  #"L",(A0)      ;FWRD L ?
02137E: 670C          253          BEQ     FWRDL          ;IF SO
                      254 ;
021380: 0C100057      255          CMPI.B  #"W",(A0)      ;FWRD W ?
021384: 6624          256          BNE     ERR25G         ;IF NOT
                      257 ;
021386: 42381435      258          CLR.B   FORWARD        ;FWRD W
02138A: 4E75          259          RTS
                      260 ;
02138C: 11FC00FF1435  261 FWRDL    MOVE.B  #$FF,FORWARD   ;FWRD L
021392: 4E75          262          RTS
                      263 ;
                      264 ;
021394: 6100F950      265 GAP      BSR     DESTSIZE       ;D3.W = GAPSIZE
021398: 0C8300010000  266          CMPI.L  #$10000,D3     ;GAP A WORD VALUE ?
02139E: 6412          267          BCC     ERR21G         ;IF NOT
                      268 ;
0213A0: 31C31430      269          MOVE.W  D3,GAPSIZE     ;NEW GAP SIZE
0213A4: 4E75          270          RTS                    ;'GAP' DONE
                      271 ;
                      272 ;
                      273 ; 'MOVEP' CANNOT BE USED ON A DTACK BOARD
                      274 ;
0213A6: 7E00          275 MOVEP    MOVEQ   #0,D7          ;NOT IMPLEMENTED
0213A8: 600A          276          BRA     ERRG
                      277 ;
                      278 ;
0213AA: 7E19          279 ERR25G   MOVEQ   #25,D7         ;BAD PSEUDO-OP
0213AC: 6006          280          BRA     ERRG
                      281 ;
0213AE: 7E14          282 ERR20G   MOVEQ   #20,D7         ;NEW ADR < OLD
0213B0: 6002          283          BRA     ERRG
                      284 ;
0213B2: 7E15          285 ERR21G   MOVEQ   #21,D7         ;CODE GAP TOO LARGE
0213B4: 6000F0F6      286 ERRG     BRA     ERROR
                      287 ;
                      289 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      290 ;
0213B8: 61A8          291 ORG      BSR     SVCEXPR        ;VALUE IN D3.L
0213BA: 67BA          292          BEQ     ERR41          ;IF FORWARD REF
                      293 ;
0213BC: 4A381438      294          TST.B   ORGFLG         ;1ST ORG ?
0213C0: 6728          295          BEQ     FIRSTORG       ;IF SO
                      296 ;
0213C2: 5238141B      297          ADDQ.B  #1,ADDRESS+3
0213C6: 08B80000141B  298          BCLR    #0,ADDRESS+3
0213CC: 2403          299          MOVE.L  D3,D2          ;ORG ADR TO D2
0213CE: 94B81418      300          SUB.L   ADDRESS,D2     ;D2 = GAP SIZE
0213D2: 6BDA          301          BMI     ERR20G         ;NEW ADR < OLD ADR
                      302 ;
0213D4: 0C8200010000  303          CMPI.L  #$10000,D2     ;D2 A WORD VALUE ?
0213DA: 62D6          304          BHI     ERR21G         ;IF NOT
                      305 ;
0213DC: B47900021394  306          CMP.W   GAP,D2         ;GAP TOO LARGE ?
0213E2: 62CE          307          BHI     ERR21G         ;IF SO
                      308 ;
0213E4: B6B81418      309          CMP.L   ADDRESS,D3     ;NEW < OLD ?
0213E8: 65C4          310          BCS     ERR20G         ;NEW ADR < OLD
                      311 ;
0213EA: 21C31418      312 FIRSTORG MOVE.L  D3,ADDRESS     ;STORE NEW ADDRESS
0213EE: 11FC00011438  313          MOVE.B  #1,ORGFLG      ;1ST ORG DONE
0213F4: 4E75          314          RTS                    ;'ORG' DONE
                      315 ;
                      316 ;
                      317 ; PSEUDO-OP;  SHORT $7FFF OR SHORT $FFFF
                      318 ;
0213F6: 0C100046      319 SHORT    CMPI.B  #"F",(A0)      ;SHORT $FFFF ?
0213FA: 6710          320          BEQ     SHORTF         ;IF SO
                      321 ;
0213FC: 0C100037      322          CMPI.B  #"7",(A0)      ;SHORT $7FFF ?
021400: 66A8          323          BNE     ERR25G         ;IF NOT
                      324 ;
021402: 21FC00007FFF  325          MOVE.L  #$7FFF,SHRT    ;SHORT 7
02140A: 4E75          326          RTS
                      327 ;
02140C: 21FC0000FFFF  328 SHORTF   MOVE.L  #$FFFF,SHRT    ;SHORT F
021414: 4E75          329          RTS
                      330 ;
                      331 ;
021416: 4E75          332 SYNC     RTS                    ;ADR ALREADY RNDED UP
                      333 ;
                      335 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      336 ;
021418: 21C81424      337 MOVE     MOVE.L  A0,RESTART     ;SAVE PTR A0
02141C: 6100FA10      338          BSR     ONETWO         ;TWO <EA> FLDS ?
021420: 6760          339          BEQ     ERR26E         ;IF NOT
                      340 ;
                      341 ; CHECK FOR SOURCE = A RESERVED WORD (E.G. SR)
                      342 ;
021422: 6100F840      343          BSR     SRCSIZE        ;A0 PTR  D0 SIZE
021426: 6100FE34      344          BSR     CHKWRD         ;USP, CCR, SP ?
02142A: 6664          345          BNE     MOVEWRD        ;IF SO
                      346 ;
                      347 ; CHECK FOR DEST = A RESERVED WORD (E.G. SR)
                      348 ;
02142C: C14A          349          EXG     A0,A2          ;A0 = DEST PTR
02142E: 6100F8B6      350          BSR     DESTSIZE       ;A0 PTR, D0 SIZE
021432: 6100FE28      351          BSR     CHKWRD         ;RESERVED WORD ?
021436: 6678          352          BNE     MOVEWRD2       ;IF SO
                      353 ;
                      354 ; NEITHER SRC OR DEST <EA>S ARE RESERVED WORDS;
                      355 ; BEGIN BY SERVICING THE SOURCE <EA>.
                      356 ;
021438: 20781424      357          MOVE.L  RESTART,A0     ;RESTORE PTR A0
02143C: 6100FBA6      358          BSR     FIRSTEA        ;D4 MODE  D5 SIZE
021440: 0C040001      359          CMPI.B  #1,D4          ;SRC = 'AN' ?
021444: 6606          360          BNE     MOVE1          ;IF NOT
                      361 ;
                      362 ; A SIZE OF .B IS ILLEGAL WHEN SRC = 'AN'
                      363 ;
021446: 4A381434      364          TST.B   SIZEID         ;.B ?
02144A: 6B32          365          BMI     ERR24E         ;IF SO
                      366 ;
                      367 ; SOURCE <EA>S:  ALL ADDRESSING MODES ALLOWED
                      368 ;
02144C: 0C04000B      369 MOVE1    CMPI.B  #11,D4         ;IMMEDIATE ?
021450: 660E          370          BNE     MOVE1B         ;DONE IF NOT
                      371 ;
021452: 0C3800021434  372          CMPI.B  #2,SIZEID      ;SIZE = .L ?
021458: 6704          373          BEQ     MOVE1A         ;IF NOT
                      374 ;
02145A: 7A04          375          MOVEQ   #4,D5          ;TWO WORDS
02145C: 6002          376          BRA     MOVE1B         ;CONTINUE
                      377 ;
02145E: 7A06          378 MOVE1A   MOVEQ   #6,D5          ;THREE WORDS
021460: DBB81418      379 MOVE1B   ADD.L   D5,ADDRESS     ;INCR THE ADR
                      380 ;
                      381 ; SERVICE THE DEST <EA>.  A0 = DEST FLD PTR.
                      382 ;
021464: 6100FB00      383          BSR     LASTEA         ;D4 MODE  D5 SIZE
021468: 5505          384          SUBQ.B  #2,D5          ;CORRECT DEST SIZE
02146A: 0C040008      385          CMPI.B  #8,D4          ;ILLEGAL MODE ?
02146E: 6216          386          BHI     ERR22E         ;IF SO
                      387 ;
021470: 5304          388          SUBQ.B  #1,D4          ;'AN' ?
021472: 6600FAEC      389          BNE     ADDADR         ;IF NOT
                      390 ;
021476: 4A381434      391          TST.B   SIZEID         ;.B ?
02147A: 6A00FAE4      392          BPL     ADDADR         ;DONE IF NOT
                      393 ;
                      394 ; (CONTINUE, REPORTING ERROR 24)
                      395 ;
                      397 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      398 ;
02147E: 7E18          399 ERR24E   MOVEQ   #24,D7         ;BAD SIZE SPEC
021480: 600A          400          BRA     ERRE
                      401 ;
021482: 7E1A          402 ERR26E   MOVEQ   #26,D7         ;<EA> MISSING
021484: 6006          403          BRA     ERRE
                      404 ;
021486: 7E16          405 ERR22E   MOVEQ   #22,D7         ;BAD <EA>
021488: 6002          406          BRA     ERRE
                      407 ;
02148A: 7E06          408 ERR6E    MOVEQ   #6,D7          ;SYNTAX ERROR
02148C: 6000F01E      409 ERRE     BRA     ERROR          ;REPORT ERROR
                      410 ;
                      411 ; WE HAVE ONE OF THE WEIRD SOURCE <EA>S:
                      412 ;
021490: 4A381434      413 MOVEWRD  TST.B   SIZEID         ;NO ID ALLOWED
021494: 66E8          414          BNE     ERR24E         ;IF ILLEGAL ID
                      415 ;
021496: 0C010003      416          CMPI.B  #3,D1          ;CCR OR SR ?
02149A: 6306          417          BLS     MOVEWRD1       ;IF NOT
                      418 ;
                      419 ; SRC = 'SR';  DEST <EA>S ARE DATA ALTERABLE
                      420 ;
02149C: C14A          421          EXG     A0,A2          ;A0 = DEST PTR
02149E: 6000FAB6      422          BRA     TYPE3          ;SVC DEST FLD
                      423 ;
0214A2: 0C010002      424 MOVEWRD1 CMPI.B  #2,D1          ;USP ?
0214A6: 66DE          425          BNE     ERR22E         ;IF NOT
                      426 ;
                      427 ; THE SRC <EA> IS 'USP',  DEST <EA> MUST BE 'AN'
                      428 ;
0214A8: C14A          429          EXG     A0,A2          ;A0 = DEST PTR
0214AA: 6100FABA      430          BSR     LASTEA         ;D4 = 2ND MODE
0214AE: 6022          431          BRA     MOVEWRD4       ;CONTINUE
                      432 ;
                      433 ; WE HAVE ONE OF THE WEIRD DESTINATION <EA>S:
                      434 ;
0214B0: 4A381434      435 MOVEWRD2 TST.B   SIZEID         ;NO ID ALLOWED
0214B4: 66C8          436          BNE     ERR24E         ;IF ILLEGAL ID
                      437 ;
0214B6: 0C010003      438          CMPI.B  #3,D1          ;CCR OR SR ?
0214BA: 6308          439          BLS     MOVEWRD3       ;IF NOT
                      440 ;
                      441 ; DEST = 'CCR' OR 'SR';  SRC <EA>S = DATA
                      442 ;
0214BC: 20781424      443          MOVE.L  RESTART,A0     ;RESTORE PTR A0
0214C0: 6000FBB0      444          BRA     DATAEA         ;SVC DATA SRC <EA>
                      445 ;
0214C4: 0C010002      446 MOVEWRD3 CMPI.B  #2,D1          ;USP ?
0214C8: 66B4          447          BNE     ERR24E         ;IF NOT
                      448 ;
                      449 ; THE DEST <EA> IS 'USP',  SRC <EA> MUST BE 'AN'
                      450 ;
0214CA: 20781424      451          MOVE.L  RESTART,A0     ;RESTORE PTR A0
0214CE: 6100FB14      452          BSR     FIRSTEA        ;D4 = SRC MODE
                      453 ;
0214D2: 0C040001      454 MOVEWRD4 CMPI.B  #1,D4          ;SRC <EA> = 'AN' ?
0214D6: 6700FA5A      455          BEQ     W1             ;IF SO
0214DA: 66A2          456          BNE     ERR24E         ;IF NOT
                      457 ;
                      459 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      460 ;
0214DC: 6100F950      461 MOVEM    BSR     ONETWO         ;TWO <EA> FLDS ?
0214E0: 674C          462          BEQ     ERR26F         ;IF NOT
                      463 ;
0214E2: 4A381434      464          TST.B   SIZEID         ;.B ?
0214E6: 6B4A          465          BMI     ERR24F         ;IF SO
                      466 ;
                      467 ; DETERMINE WHETHER REGS,<EA>  OR  <EA>,REGS
                      468 ;
0214E8: 2448          469          MOVE.L  A0,A2          ;A2 = SCRATCH PTR
0214EA: 1C1A          470          MOVE.B  (A2)+,D6       ;FIRST CHAR
0214EC: 0C060044      471          CMPI.B  #"D",D6        ;"D" ?
0214F0: 6706          472          BEQ     MOVEM1         ;IF SO
                      473 ;
0214F2: 0C060041      474          CMPI.B  #"A",D6        ;"A" ?
0214F6: 6650          475          BNE     MOVEM3         ;IF NOT
                      476 ;
0214F8: 1C1A          477 MOVEM1   MOVE.B  (A2)+,D6       ;2ND CHAR
0214FA: 16316000      478          MOVE.B  (A1,D6),D3     ;FETCH ATTR BYTE
0214FE: 08030004      479          BTST    #4,D3          ;NUMERIC ?
021502: 6744          480          BEQ     MOVEM3         ;IF NOT
                      481 ;
                      482 ; NOW TEST FOR A DELIMITER  (/ - ,)
                      483 ;
021504: 1C1A          484          MOVE.B  (A2)+,D6       ;NEXT CHAR
021506: 0C06002F      485          CMPI.B  #"/",D6        ;DELIMITER ?
02150A: 670C          486          BEQ     MOVEM2         ;IF SO
                      487 ;
02150C: 0C06002D      488          CMPI.B  #"-",D6        ;DELIMITER ?
021510: 6706          489          BEQ     MOVEM2         ;IF SO
                      490 ;
021512: 0C06002C      491          CMPI.B  #",",D6        ;DELIMITER ?
021516: 6630          492          BNE     MOVEM3         ;IF NOT
                      493 ;
                      494 ; WE HAVE MOVEM(.SIZE) REGS,<EA>
                      495 ;
021518: 742C          496 MOVEM2   MOVEQ   #",",D2        ;COMMA = TERM'TR
02151A: 6144          497          BSR     REGLIST        ;D5 = REG MASK
02151C: 6100FA48      498          BSR     LASTEA         ;D4 MODE  D5 SIZE
021520: 5405          499          ADDQ.B  #2,D5          ;INCLUDE REG LIST
021522: 343C01F4      500          MOVE.W  #$1F4,D2       ;LEGAL ADR MODES
021526: 0902          501          BTST    D4,D2          ;ADR MODE LEGAL ?
021528: 6600FA36      502          BNE     ADDADR         ;IF SO
02152C: 6714          503          BEQ     ERR22F         ;IF NOT
                      504 ;
02152E: 7E1A          505 ERR26F   MOVEQ   #26,D7         ;<EA> MISSING
021530: 6012          506          BRA     ERRF
                      507 ;
021532: 7E18          508 ERR24F   MOVEQ   #24,D7         ;BAD SIZE SPEC
021534: 600E          509          BRA     ERRF
                      510 ;
021536: 7E2F          511 ERR47F   MOVEQ   #47,D7         ;BAD DELIMITER
021538: 600A          512          BRA     ERRF
                      513 ;
                      515 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      516 ;
02153A: 7E2E          517 ERR46F   MOVEQ   #46,D7         ;SAME REGISTERS
02153C: 6006          518          BRA     ERRF
                      519 ;
02153E: 7E06          520 ERR6F    MOVEQ   #6,D7          ;SYNTAX ERROR
021540: 6002          521          BRA     ERRF
                      522 ;
021542: 7E16          523 ERR22F   MOVEQ   #22,D7         ;ILLEGAL MODE
021544: 6000EF66      524 ERRF     BRA     ERROR
                      525 ;
                      526 ; WE HAVE MOVEM(.SIZE) <EA>,REGS
                      527 ;
021548: 6100FA9A      528 MOVEM3   BSR     FIRSTEA        ;D4 MODE  D5 SIZE
02154C: 343C07EC      529          MOVE.W  #$7EC,D2       ;LEGAL ADR MODES
021550: 0902          530          BTST    D4,D2          ;ADR MODE LEGAL ?
021552: 67EE          531          BEQ     ERR22F         ;IF NOT
                      532 ;
021554: 5405          533          ADDQ.B  #2,D5          ;REG MASK = ONE WORD
021556: 6100FA08      534          BSR     ADDADR         ;IF LEGAL
                      535 ; NOW PREPARE TO SERVICE THE REGISTER MASK
                      536 ;
02155A: 6100F78A      537          BSR     DESTSIZE       ;D6 = TERM CHAR
02155E: 1406          538          MOVE.B  D6,D2          ;D2 = TERM CHAR
                      539 ;
                      540 ; SUBROUTINE;  SERVICE A REGISTER LIST
                      541 ; A0 = PTR TO TEXT    D2 = TERMINATION CHAR
                      542 ;
021560: 7A00          543 REGLIST  MOVEQ   #0,D5          ;CLR REG MASK
                      544 ;
021562: 6124          545 REGLST1  BSR     REGNUM         ;REG -> 0-15
021564: 09C5          546          BSET    D4,D5          ;SET REG 'D4' BIT
021566: 1C18          547          MOVE.B  (A0)+,D6       ;FETCH DELIMITER
021568: 0C06002D      548          CMPI.B  #"-",D6        ;HYPHEN ?
02156C: 670C          549          BEQ     REGLST3        ;SVC RANGE IF SO
                      550 ;
02156E: BC02          551 REGLST2  CMP.B   D2,D6          ;TERMINATION CHAR ?
021570: 6714          552          BEQ     REGLSTX        ;IF SO
                      553 ;
021572: 0C06002F      554          CMPI.B  #"/",D6        ;REGISTER DELIMTR ?
021576: 67EA          555          BEQ     REGLST1        ;CONTINUE IF SO
021578: 66BC          556          BNE     ERR47F         ;ERROR IF NOT
                      557 ;
                      558 ; SERVICE A RANGE OF REGISTERS
                      559 ;
02157A: 1604          560 REGLST3  MOVE.B  D4,D3          ;D3 = 1ST REG
02157C: 610A          561          BSR     REGNUM         ;REG -> 0-15
02157E: B803          562          CMP.B   D3,D4          ;COMPARE LIMITS
021580: 67B8          563          BEQ     ERR46F         ;IF REGS SAME
                      564 ;
021582: 1C18          565          MOVE.B  (A0)+,D6       ;FETCH NEXT CHAR
021584: 60E8          566          BRA     REGLST2        ;CONTINUE
                      567 ;
021586: 4E75          568 REGLSTX  RTS                    ;DONE
                      569 ;
                      571 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      572 ;
                      573 ; SUBROUTINE;  CONV A REG TO NUMBER 0 - 15
                      574 ; (E.G. D0 = 0,  D7 = 7,  A0 = 8,  A7 = 15)
                      575 ; A0 = PTR TO TEXT
                      576 ;
021588: 7800          577 REGNUM   MOVEQ   #0,D4          ;ASSUME "D"
02158A: 1C18          578          MOVE.B  (A0)+,D6       ;FETCH CHAR
02158C: 0C060044      579          CMPI.B  #"D",D6        ;"D" ?
021590: 6708          580          BEQ     REGNUM1        ;IF SO
                      581 ;
021592: 0C060041      582          CMPI.B  #"A",D6        ;"A" ?
021596: 66A6          583          BNE     ERR6F          ;IF NOT
                      584 ;
021598: 7808          585          MOVEQ   #8,D4          ;"A" = 8
                      586 ;
02159A: 1C18          587 REGNUM1  MOVE.B  (A0)+,D6       ;MUST BE #
02159C: 04060030      588          SUBI.B  #"0",D6        ;MUST BE 0 - 7
0215A0: 0C060008      589          CMPI.B  #8,D6          ;LEGAL REG # ?
0215A4: 6498          590          BCC     ERR6F          ;IF NOT
                      591 ;
0215A6: D806          592          ADD.B   D6,D4          ;REG CONVERTED
0215A8: 4E75          593          RTS                    ;DONE
                      594 ;
                      595 ;
                      596 ;
                      597 ; 'MOVEA <EA>,AN':  SIZE .W, .L;  ALL ADR MODES
                      598 ;
0215AA: 6000FA8A      599 MOVEA    BRA     TYPE8          ;SAME ON PASS1
                      600 ;
                      602 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      603 ;
                      604 ; EVALUATE AN <EXPRESSION> WHOSE SYNTAX HAS
                      605 ; ALREADY BEEN CHECKED AND BLESSED.
                      606 ;
                      607 ; A3 = <EXRESSION> PTR,  D1 = LENGTH
                      608 ;
0215AE: 42B81420      609 EVALEXPR CLR.L   EXPRVALU       ;CLR <EXPR> VALUE
0215B2: 42381439      610          CLR.B   OPERATOR       ;CLEAR OPERATOR
0215B6: 4238143A      611          CLR.B   NEGATE         ;CLR NEGATE FLG
0215BA: 4238143F      612          CLR.B   UDFFWD         ;CLR UNDEFINED FLG
0215BE: 7C00          613          MOVEQ   #0,D6          ;CLR UPPER BITS
0215C0: 0C13002D      614          CMPI.B  #"-",(A3)      ;MINUS SIGN ?
0215C4: 6608          615          BNE     EVEX1          ;IF NOT
                      616 ;
0215C6: 5338143A      617          SUBQ.B  #1,NEGATE      ;SET NEGATE FLG
0215CA: 5301          618          SUBQ.B  #1,D1          ;DECR LENGTH
0215CC: 528B          619          ADDQ.L  #1,A3          ;INCR POINTER
                      620 ;
                      621 ; ELEMENT = ASC STR (D7 HIGH) IF QUOTE
                      622 ;
0215CE: 1C1B          623 EVEX1    MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
0215D0: 0C060022      624          CMPI.B  #$22,D6        ;QUOTE ?
0215D4: 6762          625          BEQ     SVCQUOTE       ;IF SO
                      626 ;
                      627 ; ELEMENT = ASC STR (D7 LOW) IF APOSTROPHE
                      628 ;
0215D6: 0C060027      629          CMPI.B  #"'",D6        ;APOSTROPHE ?
0215DA: 6700007E      630          BEQ.L   SVCAPOST       ;IF SO
                      631 ;
                      632 ; ELEMENT = HEXADECIMAL NUMBER IF 1ST CHAR = "$"
                      633 ;
0215DE: 0C060024      634          CMPI.B  #"$",D6        ;HEXADECIMAL ?
0215E2: 67000094      635          BEQ.L   SVCHEX         ;IF SO
                      636 ;
                      637 ; ELEMENT = BINARY NUMBER IF 1ST CHAR = "%"
                      638 ;
0215E6: 0C060025      639          CMPI.B  #"%",D6        ;BINARY ?
0215EA: 670000B2      640          BEQ.L   SVCBIN         ;IF SO
                      641 ;
                      642 ; ELEMENT = DECIMAL NUMBER IF 1ST CHAR = DECIMAL
                      643 ;
0215EE: 16316000      644          MOVE.B  (A1,D6),D3     ;CHAR ATTR BYTE
0215F2: 08030004      645          BTST    #4,D3          ;DECIMAL ?
0215F6: 660000C4      646          BNE.L   SVCDEC         ;IF SO
                      647 ;
                      648 ; EVALUATE A LABEL REFERENCE;  FORWARD REF ?
                      649 ;
0215FA: 2E3C20202020  650          MOVE.L  #"    ",D7     ;SPACES
021600: 4BF81308      651          LEA     STR+8,A5       ;PTR TO STR BUFR
021604: 2B07          652          MOVE.L  D7,-(A5)       ;CLR STR BUFR
021606: 2B07          653          MOVE.L  D7,-(A5)
021608: 1AC6          654          MOVE.B  D6,(A5)+       ;STORE 1ST CHAR
02160A: 5301          655          SUBQ.B  #1,D1          ;DECR CHAR COUNT
02160C: 6712          656          BEQ     EVEX3          ;DONE IF ZERO
                      657 ;
02160E: 1C1B          658 EVEX2    MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
021610: 1E316000      659          MOVE.B  (A1,D6),D7     ;CHAR ATTR BYTE
021614: 02070030      660          ANDI.B  #$30,D7        ;ALPHANUMERIC ?
021618: 6712          661          BEQ     EVEX4          ;IF NOT
                      662 ;
                      664 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      665 ;
02161A: 1AC6          666          MOVE.B  D6,(A5)+       ;STORE REF CHAR
02161C: 5301          667          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
02161E: 66EE          668          BNE     EVEX2          ;LOOP 'TIL ZERO
                      669 ;
                      670 ; THE LABEL REFERENCE IS AT THE END OF THE
                      671 ; <EXPRESSION>.
                      672 ;
021620: 6100F71C      673 EVEX3    BSR     CHKLBL         ;SVC LBL REF
021624: 670000C6      674          BEQ.L   EVEXX          ;IF FORWARD REF
021628: 660000BE      675          BNE.L   EVEX9          ;IF NOT FORWARD
                      676 ;
                      677 ; AN OPERATOR HAS TERMINATED THE LABEL REF
                      678 ;
02162C: 6100F710      679 EVEX4    BSR     CHKLBL         ;SVC LBL REF
021630: 670000BA      680          BEQ.L   EVEXX          ;IF FORWARD REF
021634: 660000B8      681          BNE.L   EVEXT          ;IF NOT FORWARD
                      682 ;
                      683 ; EVALUATE AN ASCII STRING (D7 LOW)
                      684 ;
021638: 5301          685 SVCQUOTE SUBQ.B  #1,D1          ;DECR <EXPR> CNT
02163A: 7600          686          MOVEQ   #0,D3          ;CLR RESULT
                      687 ;
02163C: 1C1B          688 QUOTE1   MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
02163E: 0C060022      689          CMPI.B  #$22,D6        ;QUOTE ?
021642: 670C          690          BEQ     QUOTEX         ;IF SO
                      691 ;
021644: 08860007      692          BCLR    #7,D6          ;SET D7 HIGH
021648: E18B          693          LSL.L   #8,D3          ;SHIFT 8 BITS L
02164A: D606          694          ADD.B   D6,D3          ;ADD D6 TO D3
02164C: 5301          695          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
02164E: 60EC          696          BRA     QUOTE1         ;CONTINUE
                      697 ;
021650: 5301          698 QUOTEX   SUBQ.B  #1,D1          ;DECR CHAR CNT
021652: 6600009A      699          BNE.L   EVEXT          ;IF NOT ZERO
                      700 ;
                      701 ; THE ASC STR IS AT THE END OF THE <EXPRESSION>
                      702 ;
021656: 60000090      703          BRA.L   EVEX9          ;CONTINUE
                      704 ;
                      705 ; EVALUATE AN ASCII STRING (D7 HIGH)
                      706 ;
02165A: 5301          707 SVCAPOST SUBQ.B  #1,D1          ;DECR <EXPR> CNT
02165C: 7600          708          MOVEQ   #0,D3          ;CLR RESULT
                      709 ;
02165E: 1C1B          710 APOST1   MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
021660: 0C060027      711          CMPI.B  #"'",D6        ;APOSTROPHE ?
021664: 670C          712          BEQ     APOSTX         ;IF SO
                      713 ;
021666: 08C60007      714          BSET    #7,D6          ;SET D7 LOW
02166A: E18B          715          LSL.L   #8,D3          ;SHIFT 8 BITS L
02166C: D606          716          ADD.B   D6,D3          ;ADD D6 TO D3
02166E: 5301          717          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
021670: 60EC          718          BRA     APOST1         ;CONTINUE
                      719 ;
                      721 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      722 ;
021672: 5301          723 APOSTX   SUBQ.B  #1,D1          ;DECR CHAR CNT
021674: 6678          724          BNE     EVEXT          ;IF NOT ZERO
                      725 ;
                      726 ; THE ASC STR IS AT THE END OF THE <EXPRESSION>
                      727 ;
021676: 6070          728          BRA     EVEX9          ;CONTINUE
                      729 ;
                      730 ; EVALUATE A HEXADECIMAL NUMBER
                      731 ;
021678: 5301          732 SVCHEX   SUBQ.B  #1,D1          ;DECR <EXPR> CNT
02167A: 7600          733          MOVEQ   #0,D3          ;CLR RESULT
                      734 ;
02167C: 1C1B          735 EVEX5    MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
02167E: 1E316000      736          MOVE.B  (A1,D6),D7     ;CHAR ATTR BYTE
021682: 08070001      737          BTST    #1,D7          ;HEXADECIMAL ?
021686: 6766          738          BEQ     EVEXT          ;IF NOT
                      739 ;
021688: 04060030      740          SUBI.B  #"0",D6        ;SUBTRACT "0"
02168C: 0C06000A      741          CMPI.B  #10,D6         ;OVER #9 ?
021690: 6502          742          BCS     EVEX6          ;DONE IF NOT
                      743 ;
021692: 5F06          744          SUBQ.B  #7,D6          ;D6 = A - F
                      745 ;
021694: E98B          746 EVEX6    LSL.L   #4,D3          ;SHIFT 4 BITS L
021696: 8686          747          OR.L    D6,D3          ;ADD D6 TO D3
021698: 5301          748          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
02169A: 66E0          749          BNE     EVEX5          ;LOOP 'TIL ZERO
                      750 ;
                      751 ; THE HEXADECIMAL NUMBER IS AT THE END OF THE
                      752 ; <EXPRESSION>.
                      753 ;
02169C: 604A          754          BRA     EVEX9          ;CONTINUE
                      755 ;
                      756 ; EVALUATE A BINARY NUMBER
                      757 ;
02169E: 7400          758 SVCBIN   MOVEQ   #0,D2          ;INIT BIN CHAR CNT
0216A0: 7600          759          MOVEQ   #0,D3          ;CLEAR RESULT
                      760 ;
0216A2: 1C1B          761 EVEX7    MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
0216A4: 1606          762          MOVE.B  D6,D3          ;LEAVE CHAR IN D6
0216A6: 04070030      763          SUBI.B  #"0",D7        ;SUBTRACT OFFSET
0216AA: 0C070001      764          CMPI.B  #1,D7          ; "0" OR "1" ?
0216AE: 623E          765          BHI     EVEXT          ;IF NOT
                      766 ;
0216B0: E20E          767          LSR.B   #1,D6          ;LEAST BIT TO CY
0216B2: E393          768          ROXL.L  #1,D3          ;BIT INTO D3.L
0216B4: 5202          769          ADDQ.B  #1,D2          ;INCR BIN CHAR CNT
0216B6: 5301          770          SUBQ.B  #1,D1          ;DEXR <EXPR> CNT
0216B8: 66E8          771          BNE     EVEX7          ;LOOP 'TIL ZERO
                      772 ;
                      773 ; THE BINARY # IS AT THE END OF THE <EXPRESSION>
                      774 ;
0216BA: 602C          775          BRA     EVEX9          ;CONTINUE
                      776 ;
                      778 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      779 ;
                      780 ; EVALUATE A DECIMAL NUMBER
                      781 ;
0216BC: 7600          782 SVCDEC   MOVEQ   #0,D3          ;CLEAR D3
0216BE: 04060030      783          SUBI.B  #"0",D6        ;D6 = 0 TO 9
0216C2: 1606          784          MOVE.B  D6,D3          ;FIRST DEC #
0216C4: 7401          785          MOVEQ   #1,D2          ;DEC CHAR COUNT
0216C6: 5301          786          SUBQ.B  #1,D1          ;DECR CHAR COUNT
0216C8: 671E          787          BEQ     EVEX9          ;DONE IF ZERO
                      788 ;
0216CA: 1C1B          789 EVEX8    MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
0216CC: 1E316000      790          MOVE.B  (A1,D6),D7     ;CHAR ATTR BYTE
0216D0: 02070010      791          ANDI.B  #$10,D7        ;DECIMAL ?
0216D4: 6718          792          BEQ     EVEXT          ;IF NOT
                      793 ;
0216D6: D683          794          ADD.L   D3,D3          ;DOUBLE D3
0216D8: 2E03          795          MOVE.L  D3,D7
0216DA: E58B          796          LSL.L   #2,D3          ;D3 = D3 * 4
0216DC: D687          797          ADD.L   D7,D3          ;D3 = D3 * 10
0216DE: 04060030      798          SUBI.B  #"0",D6        ;D6 = 0 TO 9
0216E2: D686          799          ADD.L   D6,D3          ;ADD DECIMAL VALUE
0216E4: 5301          800          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
0216E6: 66E2          801          BNE     EVEX8          ;LOOP 'TIL ZERO
                      802 ;
                      803 ; THE DECIMAL # IS AT THE END OF THE <EXPRESSION>
                      804 ;
0216E8: 6110          805 EVEX9    BSR     SEVEXT         ;DO REQ'D OPS
0216EA: 7C01          806          MOVEQ   #1,D6          ;BACKWARD REF
0216EC: 4E75          807 EVEXX    RTS                    ;DONE
                      808 ;
                      809 ; AN OPERATOR HAS TERMINATED AN ELEMENT
                      810 ;
0216EE: 610A          811 EVEXT    BSR     SEVEXT         ;DO REQUIRED OPS
0216F0: 11C61439      812          MOVE.B  D6,OPERATOR    ;STORE NEW OPRTR
0216F4: 5301          813          SUBQ.B  #1,D1          ;DECR CHAR COUNT
0216F6: 6000FED6      814          BRA     EVEX1          ;IF NOT ZERO
                      815 ;
                      816 ; SUBROUTINE;  SVC PREVIOUS OPERATORS OR NEGATE
                      817 ;
0216FA: 4A381439      818 SEVEXT   TST.B   OPERATOR       ;FIRST ELEMENT ?
0216FE: 6702          819          BEQ     SEVEXT1        ;IF SO
                      820 ;
021700: 6116          821          BSR     OPERTN         ;DO PREV OPERATION
                      822 ;
021702: 4A38143A      823 SEVEXT1  TST.B   NEGATE         ;NEGATE FLG SET ?
021706: 670A          824          BEQ     SEVEXTX        ;IF NOT
                      825 ;
021708: 7400          826          MOVEQ   #0,D2
02170A: 9483          827          SUB.L   D3,D2          ;NEGATE D3.L
02170C: 2602          828          MOVE.L  D2,D3
02170E: 4238143A      829          CLR.B   NEGATE         ;CLR NEGATE FLG
                      830 ;
021712: 21C31420      831 SEVEXTX  MOVE.L  D3,EXPRVALU    ;STORE VALUE
021716: 4E75          832          RTS                    ;DONE
                      833 ;
                      835 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      836 ;
                      837 ; THE VALUE OF THE CURRENT <EXPR> ELEMENT IS IN
                      838 ; D3.L, AND THE PREVIOUS VALUE IS IN 'EXPRVALU'.
                      839 ; THE SEPARATING OPERATOR IS IN 'OPERATOR'.
                      840 ;
021718: 48E7EF00      841 OPERTN   MOVEM.L D0-D2/D4-D7,-(A7) ;SAVE REGS
02171C: 24381420      842          MOVE.L  EXPRVALU,D2    ;FETCH PREV VALUE
021720: 12381439      843          MOVE.B  OPERATOR,D1    ;FETCH OPERATOR
021724: 0C01002B      844          CMPI.B  #"+",D1        ;ADD ?
021728: 6604          845          BNE     OPERTN1        ;IF NOT
                      846 ;
02172A: D682          847          ADD.L   D2,D3          ;RESULT D3.L
02172C: 6046          848          BRA     OPERTNX        ;CONTINUE
                      849 ;
02172E: 0C01002D      850 OPERTN1  CMPI.B  #"-",D1        ;SUBTRACT ?
021732: 6606          851          BNE     OPERTN2        ;IF NOT
                      852 ;
021734: 9483          853          SUB.L   D3,D2          ;SUBTRACT
021736: 2602          854          MOVE.L  D2,D3          ;RESULT D3.L
021738: 603A          855          BRA     OPERTNX        ;CONTINUE
                      856 ;
02173A: 0C01002A      857 OPERTN2  CMPI.B  #"*",D1        ;MULTIPLY ?
02173E: 6620          858          BNE     OPERTN3        ;IF NOT
                      859 ;
                      860 ; MULTIPLY 32 BITS * 32 BITS, RESULT 32 BITS
                      861 ; D3 = A.HI B.LO,  D2 = C.HI D.LO
                      862 ;
021740: 3E02          863          MOVE.W  D2,D7          ;D7 = D
021742: 3C02          864          MOVE.W  D2,D6          ;D6 = D
021744: 4842          865          SWAP    D2             ;D2 = C
021746: CEC3          866          MULU    D3,D7          ;B * D
021748: C4C3          867          MULU    D3,D2          ;B * C
02174A: 4842          868          SWAP    D2
02174C: 4242          869          CLR.W   D2             ;REG'S ALIGNED
02174E: DE86          870          ADD.L   D6,D7          ;B*C + B*D
021750: 4843          871          SWAP    D3             ;D3 = A
021752: CCC3          872          MULU    D3,D6
021754: 4846          873          SWAP    D6
021756: 4246          874          CLR.W   D6             ;REG'S ALIGNED
021758: DE86          875          ADD.L   D6,D7          ;32-BIT PRODUCT
02175A: 2607          876          MOVE.L  D7,D3          ;RESULT D3.L
02175C: 7C00          877          MOVEQ   #0,D6          ;CLR UPPER BITS
02175E: 6014          878          BRA     OPERTNX        ;CONTINUE
                      879 ;
021760: 0C01002F      880 OPERTN3  CMPI.B  #"/",D1        ;DIVIDE ?
021764: 6602          881          BNE     OPERTN4        ;IF NOT
                      882 ;
021766: 4E71          883          NOP
                      884 ;
021768: 0C010026      885 OPERTN4  CMPI.B  #"&",D1        ;LOGICAL AND ?
02176C: 6604          886          BNE     OPERTN5        ;IF NOT
                      887 ;
02176E: C682          888          AND.L   D2,D3          ;PERFORM AND
021770: 6002          889          BRA     OPERTNX        ;CONTINUE
                      890 ;
                      891 ; MUST BE LOGICAL OR
                      892 ;
021772: 8682          893 OPERTN5  OR.L    D2,D3          ;PERFORM OR
                      894 ;
021774: 42381439      895 OPERTNX  CLR.B   OPERATOR
021778: 4CDF00F7      896          MOVEM.L (A7)+,D0-D2/D4-D7 ;RESTORE REGS
02177C: 4E75          897          RTS                    ;OPERATION DONE
                      898 ;
                      900 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      901 ;
                      902 ; CHECK THE SYNTAX OF AN <EXPRESSION>
                      903 ;
                      904 ; AN EXPRESSION COMPRISES ONE OR MORE ELEMENTS;
                      905 ; MULTIPLE ELEMENTS ARE SEPARATED BY OPERATORS.
                      906 ;
                      907 ; ELEMENTS ARE LABEL REFERENCES, DECIMAL NUMBERS,
                      908 ; HEXADECIMAL NUMBERS, BINARY NUMBERS, AND ASCII
                      909 ; STRINGS.
                      910 ;
                      911 ; OPERATORS INCLUDE THE FUNDAMENTAL FOUR MATH TYPES
                      912 ; (+,-,*,/) PLUS THE TWO BINARY LOGICAL OPERATORS
                      913 ; "&" (AND) AND "!" (OR).
                      914 ;
                      915 ; A LEADING "-" IS PERMITTED (NEGATION)
                      916 ;
                      917 ; A3 = <EXPRESSION> PTR,  D1 = LENGTH
                      918 ;
02177E: 0C13002D      919 CHKEXPR  CMPI.B  #"-",(A3)      ;MINUS SIGN ?
021782: 6606          920          BNE     CHKEX1         ;IF NOT
                      921 ;
021784: 528B          922          ADDQ.L  #1,A3          ;INCR POINTER
021786: 5301          923          SUBQ.B  #1,D1          ;DECR COUNT
021788: 6774          924          BEQ     ERR37J         ;<EXPR> MISSING
                      925 ;
                      926 ; ELEMENT = ASCII STR (D7 HIGH) IF QUOTE
                      927 ;
02178A: 1C1B          928 CHKEX1   MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
02178C: 0C060022      929          CMPI.B  #$22,D6        ;QUOTE ?
021790: 674C          930          BEQ     QUOTE          ;IF SO
                      931 ;
                      932 ; ELEMENT = ASCII STR (D7 LOW) IF APOSTROPHE
                      933 ;
021792: 0C060027      934          CMPI.B  #"'",D6        ;APOSTROPHE ?
021796: 67000086      935          BEQ.L   APOST          ;IF SO
                      936 ;
                      937 ; ELEMENT = HEXADECIMAL NUMBER IF 1ST CHAR = "$"
                      938 ;
02179A: 0C060024      939          CMPI.B  #"$",D6        ;HEXADECIMAL ?
02179E: 6700009C      940          BEQ.L   SVCHEX1        ;IF SO
                      941 ;
                      942 ; ELEMENT = BINARY NUMBER IF 1ST CHAR = "%"
                      943 ;
0217A2: 0C060025      944          CMPI.B  #"%",D6        ;BINARY ?
0217A6: 670000EA      945          BEQ.L   SVCBIN1        ;IF SO
                      946 ;
                      947 ; ELEMENT = DECIMAL NUMBER IF 1ST CHAR = DECIMAL
                      948 ;
0217AA: 16316000      949          MOVE.B  (A1,D6),D3     ;CHAR ATTR BYTE
0217AE: 08030004      950          BTST    #4,D3          ;DECIMAL ?
0217B2: 66000100      951          BNE.L   SVCDEC1        ;IF SO
                      952 ;
                      953 ;
                      954 ; CHECK SYNTAX OF LABEL REFERENCE
                      955 ;
0217B6: 08030005      956          BTST    #5,D3          ;ALPHABETIC ?
0217BA: 6746          957          BEQ     ERR39J         ;BAD <EXPR> CHAR
                      958 ;
                      960 ; COPYRIGHT 1987 DTACK GROUNDED INC
                      961 ;
0217BC: 7401          962          MOVEQ   #1,D2          ;REF CHAR COUNT
0217BE: 5301          963          SUBQ.B  #1,D1          ;DECR CHAR COUNT
0217C0: 671A          964          BEQ     CHKEXX         ;DONE IF ZERO
                      965 ;
0217C2: 1C1B          966 CHKEX2   MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
0217C4: 16316000      967          MOVE.B  (A1,D6),D3     ;CHAR ATTR BYTE
0217C8: 02030030      968          ANDI.B  #$30,D3        ;ALPHANUMERIC ?
0217CC: 67000108      969          BEQ.L   CHKEXT         ;IF NOT
                      970 ;
0217D0: 5202          971          ADDQ.B  #1,D2          ;INCR REF CHAR CNT
0217D2: 5301          972          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
0217D4: 66EC          973          BNE     CHKEX2         ;LOOP 'TIL ZERO
                      974 ;
0217D6: 0C020009      975          CMPI.B  #9,D2          ;TOO MANY CHARS ?
0217DA: 643E          976          BCC     ERR33J         ;IF SO
                      977 ;
0217DC: 4E75          978 CHKEXX   RTS                    ;NO <EXPR> ERRS
                      979 ;
                      980 ;
                      981 ; CHECK SYNTAX OF ASC STR (D7 = HIGH)
                      982 ;
0217DE: 7400          983 QUOTE    MOVEQ   #0,D2          ;INIT STR CHAR CNT
0217E0: 5301          984          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
0217E2: 671C          985          BEQ     ERR43J         ;NO STR CHARS
                      986 ;
0217E4: 1C1B          987 QUOT1    MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
0217E6: 0C060022      988          CMPI.B  #$22,D6        ;QUOTE ?
0217EA: 6718          989          BEQ     QUOTX          ;IF SO
                      990 ;
0217EC: 16316000      991          MOVE.B  (A1,D6),D3     ;CHAR ATTR BYTE
0217F0: 6A72          992          BPL     ERR28I         ;IF NOT PRINT'BL
                      993 ;
0217F2: 5202          994          ADDQ.B  #1,D2          ;INCR STR CHAR CNT
0217F4: 5301          995          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
0217F6: 66EC          996          BNE     QUOT1          ;IF NOT ZERO
                      997 ;
                      998 ; END OF <EXPRESSION>;  NO CLOSING QUOTE (")
                      999 ;
0217F8: 7E2C         1000          MOVEQ   #44,D7         ;NO LAST QUOTE
0217FA: 6000ECB0     1001 ERRJ     BRA     ERROR          ;REPORT ERROR
                     1002 ;
0217FE: 6016         1003 ERR37J   BRA     ERR37I
021800: 606A         1004 ERR43J   BRA     ERR43I
021802: 6074         1005 ERR39J   BRA     ERR39I
                     1006 ;
                     1007 ; CLOSING QUOTE FOUND;  CHK FOR 1 TO 4 CHARS
                     1008 ;
021804: 0C020005     1009 QUOTX    CMPI.B  #5,D2          ;TOO MANY CHARS ?
021808: 645E         1010          BCC     ERR42I         ;IF TOO MANY
                     1011 ;
02180A: 4A02         1012          TST.B   D2             ;CHARS ?
02180C: 675E         1013          BEQ     ERR43I         ;IF NO ASC CHARS
                     1014 ;
02180E: 5301         1015          SUBQ.B  #1,D1          ;ADJ FOR QUOTE
021810: 660000C4     1016          BNE.L   CHKEXT         ;IF NOT <EXPR> END
                     1017 ;
021814: 4E75         1018          RTS                    ;NO <EXPR> ERRS
                     1019 ;
                     1021 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1022 ;
021816: 7E25         1023 ERR37I   MOVEQ   #37,D7         ;<EXPR> MISSING
021818: 60E0         1024          BRA     ERRJ
                     1025 ;
02181A: 7E21         1026 ERR33J   MOVEQ   #33,D7         ;LBL REF TOO LONG
02181C: 60DC         1027          BRA     ERRJ
                     1028 ;
                     1029 ;
                     1030 ;
                     1031 ; CHECK SYNTAX OF ASCII STRING (D7 = LOW)
                     1032 ;
02181E: 7400         1033 APOST    MOVEQ   #0,D2          ;INIT STR CHAR CNT
021820: 5301         1034          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
021822: 6748         1035          BEQ     ERR43I         ;NO STR CHARS
                     1036 ;
021824: 1C1B         1037 APOS1    MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
021826: 0C060027     1038          CMPI.B  #"'",D6        ;APOSTROPHE ?
02182A: 67D8         1039          BEQ     QUOTX          ;IF SO
                     1040 ;
02182C: 4A316000     1041          TST.B   (A1,D6)        ;CHAR ATTR BYTE
021830: 6A32         1042          BPL     ERR28I         ;IF NOT PRINT'BL
                     1043 ;
021832: 5202         1044          ADDQ.B  #1,D2          ;INCR STR CHAR CNT
021834: 5301         1045          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
021836: 66EC         1046          BNE     APOS1          ;IF NOT ZERO
                     1047 ;
                     1048 ; END OF <EXPRESSION>;  NO CLOSING APOSTROPHE
                     1049 ;
021838: 7E2D         1050          MOVEQ   #45,D7         ;NO LAST APOST
02183A: 6052         1051          BRA     ERRI           ;REPORT ERROR
                     1052 ;
                     1053 ;
                     1054 ;
                     1055 ; CHECK SYNTAX OF HEXADECIMAL NUMBER
                     1056 ;
02183C: 7400         1057 SVCHEX1  MOVEQ   #0,D2          ;INIT HEX CHAR CNT
02183E: 5301         1058          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
021840: 672E         1059          BEQ     ERR17I         ;NO HEX CHARS
                     1060 ;
021842: 1C1B         1061 CHKEX3   MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
021844: 16316000     1062          MOVE.B  (A1,D6),D3     ;CHAR ATTR BYTE
021848: 08030001     1063          BTST    #1,D3          ;HEXADECIMAL ?
02184C: 670E         1064          BEQ     SVCHEXX        ;IF NOT
                     1065 ;
02184E: 5202         1066          ADDQ.B  #1,D2          ;INCR HEX CHAR CNT
021850: 5301         1067          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
021852: 66EE         1068          BNE     CHKEX3         ;LOOP 'TIL ZERO
                     1069 ;
                     1070 ; END OF <EXPRESSION>;  CHK HEX CHAR COUNT
                     1071 ;
021854: 0C020009     1072 SVCHEX2  CMPI.B  #9,D2          ;TOO MANY CHARS ?
021858: 641A         1073          BCC     ERR18I         ;IF TOO MANY
                     1074 ;
02185A: 4E75         1075          RTS                    ;NO <EXPR> ERRS
                     1076 ;
02185C: 61F6         1077 SVCHEXX  BSR     SVCHEX2        ;TOO MANY CHARS ?
02185E: 4A02         1078          TST.B   D2             ;CHARS ?
021860: 6674         1079          BNE     CHKEXT         ;IF SO
021862: 670C         1080          BEQ     ERR17I         ;IF NO HEX CHARS
                     1081 ;
                     1083 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1084 ;
021864: 7E1C         1085 ERR28I   MOVEQ   #28,D7         ;CHAR NOT PRNT'BL
021866: 6026         1086          BRA     ERRI
                     1087 ;
021868: 7E2A         1088 ERR42I   MOVEQ   #42,D7         ;TOO MANY CHARS
02186A: 6022         1089          BRA     ERRI
                     1090 ;
02186C: 7E2B         1091 ERR43I   MOVEQ   #43,D7         ;NO ASC CHARS
02186E: 601E         1092          BRA     ERRI
                     1093 ;
021870: 7E11         1094 ERR17I   MOVEQ   #17,D7         ;NO HEX CHARS
021872: 601A         1095          BRA     ERRI
                     1096 ;
021874: 7E12         1097 ERR18I   MOVEQ   #18,D7         ;TOO MANY CHARS
021876: 6016         1098          BRA     ERRI
                     1099 ;
021878: 7E27         1100 ERR39I   MOVEQ   #39,D7         ;BAD <EXPR> CHAR
02187A: 6012         1101          BRA     ERRI
                     1102 ;
02187C: 7E22         1103 ERR34I   MOVEQ   #34,D7         ;NO BINARY CHARS
02187E: 600E         1104          BRA     ERRI
                     1105 ;
021880: 7E23         1106 ERR35I   MOVEQ   #35,D7         ;TOO MANY CHARS
021882: 600A         1107          BRA     ERRI
                     1108 ;
021884: 7E24         1109 ERR36I   MOVEQ   #36,D7         ;TOO MANY CHARS
021886: 6006         1110          BRA     ERRI
                     1111 ;
021888: 7E26         1112 ERR38I   MOVEQ   #38,D7         ;OPERATOR EXP'CTD
02188A: 6002         1113          BRA     ERRI
                     1114 ;
02188C: 7E28         1115 ERR40I   MOVEQ   #40,D7         ;ELEMENT MISSING
02188E: 6000EC1C     1116 ERRI     BRA     ERROR
                     1117 ;
                     1118 ;
                     1119 ;
                     1120 ; CHECK SYNTAX OF BINARY NUMBER
                     1121 ;
021892: 7400         1122 SVCBIN1  MOVEQ   #0,D2          ;INIT BIN CHAR CNT
021894: 5301         1123          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
021896: 67E4         1124          BEQ     ERR34I         ;NO BINARY CHARS
                     1125 ;
021898: 1C1B         1126 CHKEX4   MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
02189A: 1606         1127          MOVE.B  D6,D3          ;LEAVE CHAR IN D6
02189C: 04030030     1128          SUBI.B  #"0",D3        ;SUBTRACT OFFSET
0218A0: 0C030001     1129          CMPI.B  #1,D3          ; "0" OR "1" ?
0218A4: 6230         1130          BHI     CHKEXT         ;IF NOT
                     1131 ;
0218A6: 5202         1132          ADDQ.B  #1,D2          ;INCR BIN CHAR CNT
0218A8: 5301         1133          SUBQ.B  #1,D1          ;DEXR <EXPR> CNT
0218AA: 66EC         1134          BNE     CHKEX4         ;LOOP 'TIL ZERO
                     1135 ;
                     1136 ; END OF <EXPRESSION>;  CHK BIN CHAR COUNT
                     1137 ;
0218AC: 0C020021     1138          CMPI.B  #33,D2         ;TOO MANY CHARS ?
0218B0: 64CE         1139          BCC     ERR35I         ;IF SO
                     1140 ;
0218B2: 4E75         1141          RTS                    ;NO <EXPR> ERRS
                     1142 ;
                     1144 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1145 ;
                     1146 ; CHECK SYNTAX OF DECIMAL NUMBER
                     1147 ;
0218B4: 7401         1148 SVCDEC1  MOVEQ   #1,D2          ;DEC CHAR COUNT
0218B6: 5301         1149          SUBQ.B  #1,D1          ;DECR CHAR COUNT
0218B8: 6700FF22     1150          BEQ     CHKEXX         ;DONE IF ZERO
                     1151 ;
0218BC: 1C1B         1152 CHKEX5   MOVE.B  (A3)+,D6       ;FETCH NEXT CHAR
0218BE: 16316000     1153          MOVE.B  (A1,D6),D3     ;CHAR ATTR BYTE
0218C2: 02030010     1154          ANDI.B  #$10,D3        ;DECIMAL ?
0218C6: 670E         1155          BEQ     CHKEXT         ;IF NOT
                     1156 ;
0218C8: 5202         1157          ADDQ.B  #1,D2          ;INCR DEC CHAR CNT
0218CA: 5301         1158          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
0218CC: 66EE         1159          BNE     CHKEX5         ;LOOP 'TIL ZERO
                     1160 ;
                     1161 ; END OF <EXPRESSION>;  CHK DEC CHAR COUNT
                     1162 ;
0218CE: 0C02000B     1163          CMPI.B  #11,D2         ;TOO MANY CHARS ?
0218D2: 64B0         1164          BCC     ERR36I         ;IF SO
                     1165 ;
0218D4: 4E75         1166          RTS                    ;NO <EXPR> ERRS
                     1167 ;
                     1168 ;
                     1169 ; WE HAVE FOUND THE END OF AN ELEMENT;  IS THIS
                     1170 ; CHARACTER A LEGAL TERMINATOR (OPERATOR) ?
                     1171 ;
                     1172 ; FIRST CHECK WHETHER A FIELD EXISTS  (CNT > 0 ?)
                     1173 ;
0218D6: 4A02         1174 CHKEXT   TST.B   D2             ;FIELD CNT ZERO ?
0218D8: 679E         1175          BEQ     ERR39I         ;BAD <EXPR> CHAR
                     1176 ;
                     1177 ; CHECK FOR AN OPERATOR  (+,-,*,/,&,!)
                     1178 ;
0218DA: 16316000     1179          MOVE.B  (A1,D6),D3     ;CHAR ATTR BYTE
0218DE: 08030002     1180          BTST    #2,D3          ;OPERATOR ?
0218E2: 67A4         1181          BEQ     ERR38I         ;OPERATOR EXP'CTD
                     1182 ;
                     1183 ; LEGAL OPERATOR FOUND;  CHK NEXT ELEMENT
                     1184 ;
0218E4: 5301         1185          SUBQ.B  #1,D1          ;DECR <EXPR> CNT
0218E6: 6600FEA2     1186          BNE     CHKEX1         ;CONTINUE
0218EA: 67A0         1187          BEQ     ERR40I         ;ELEMENT MISSING
                     1188 ;
                     1189 ;
0218EC: 20790000FFE0 1190 XFR      MOVE.L  SRC,A0         ;SRC PTR
0218F2: 2A790000FFE4 1191          MOVE.L  DEST,A5        ;DEST PTR
0218F8: 20381410     1192          MOVE.L  LINEPTR,D0     ;PTR TO NULL LINK
0218FC: 90B900020022 1193          SUB.L   TEXT,D0        ;D0 = BYTE COUNT
021902: E848         1194          LSR.W   #4,D0          ;DIVIDE BY 16
021904: 3AC0         1195          MOVE.W  D0,(A5)+       ;STORE 16 COUNT
                     1196 ;
021906: 2AD8         1197 XFR1     MOVE.L  (A0)+,(A5)+    ;MOVE 16 BYTES
021908: 2AD8         1198          MOVE.L  (A0)+,(A5)+
02190A: 2AD8         1199          MOVE.L  (A0)+,(A5)+
02190C: 2AD8         1200          MOVE.L  (A0)+,(A5)+
02190E: 51C8FFF6     1201          DBF     D0,XFR1        ;XFR 32K BYTES
                     1202 ;
021912: 4E75         1203          RTS                    ;DONE
                     1204 ;
                     1206 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1207 ;
                     1208 ; CHECK FOR A WEIRD LABEL (SP, SR, CCR, USP, SSP)
                     1209 ; RETURN WITH Z FLAG SET IF NOT FOUND
                     1210 ;
                     1211 ; A2 = FIELD PTR         D0 = FIELD COUNT
                     1212 ; (A0, A1, A2, D0 ARE PRESERVED)
                     1213 ;
021914: 47F90002128A 1214 CHKWEIRD LEA     WTBL,A3        ;PTR TO TABLE
02191A: 7201         1215          MOVEQ   #1,D1          ;INIT WEIRD I.D.
02191C: 7C00         1216          MOVEQ   #0,D6          ;CLR UPPER BITS
                     1217 ;
02191E: 1C1B         1218 CWE1     MOVE.B  (A3)+,D6       ;FETCH LINK
021920: 671A         1219          BEQ     CWEX           ;IF LINK IS ZERO
                     1220 ;
021922: BC00         1221          CMP.B   D0,D6          ;LENGTH SAME ?
021924: 6618         1222          BNE     CWE3           ;IF NOT
                     1223 ;
021926: 2A4A         1224          MOVE.L  A2,A5          ;PTR 1
021928: 2C4B         1225          MOVE.L  A3,A6          ;PTR 2
02192A: 1406         1226          MOVE.B  D6,D2          ;STR COUNT
                     1227 ;
02192C: 161D         1228 CWE2     MOVE.B  (A5)+,D3       ;FETCH A CHAR
02192E: B61E         1229          CMP.B   (A6)+,D3       ;CHARS MATCH ?
021930: 6600F952     1230          BNE     CW3            ;IF NOT
                     1231 ;
021934: 5302         1232          SUBQ.B  #1,D2          ;DECR STR COUNT
021936: 66F4         1233          BNE     CWE2           ;LOOP 'TIL ZERO
                     1234 ;
                     1235 ; A MATCH TO THE WEIRD STRING WAS FOUND !
                     1236 ; (STORING THE I.D. CLEARS THE Z FLAG)
                     1237 ;
021938: 11C11437     1238          MOVE.B  D1,WEIRD       ;STORE WEIRD I.D.
02193C: 4E75         1239 CWEX     RTS                    ;DONE
                     1240 ;
                     1241 ; THE STRINGS (OR LENGTHS) DID NOT MATCH
                     1242 ;
02193E: D7C6         1243 CWE3     ADD.L   D6,A3          ;PTR TO NEXT STR
021940: 5201         1244          ADDQ.B  #1,D1          ;INCR WEIRD I.D.
021942: 60DA         1245          BRA     CWE1           ;CHK NEXT STRING
                     1246 ;
                     1248 ; COPYRIGHT 1987 DTACK GROUNDED INC
                     1249 ;
0000FFFE:            1250 NUMFILE  EQU     $FFFE
                     1251 ;
021944: 2F0B         1252 FNMS     MOVE.L  A3,-(A7)       ;SAVE A3
021946: 207900020022 1253          MOVE.L  TEXT,A0
02194C: 267900020032 1254          MOVE.L  SHDW,A3        ;SHADOW ARRAY PTR
021952: 2A3900020036 1255          MOVE.L  FILETBL,D5     ;FILENAM$[] ADR
021958: 74FF         1256          MOVEQ   #$FF,D2
02195A: 7C10         1257          MOVEQ   #$10,D6
02195C: 7E7F         1258          MOVEQ   #$7F,D7        ;B7 MASK
                     1259 ;
                     1260 ; THE LABELS IN THE TEXT ARE FILENAMES
                     1261 ;
02195E: 2A45         1262 SVCLABL  MOVE.L  D5,A5          ;LABEL ADR TO A5
021960: 1218         1263          MOVE.B  (A0)+,D1       ;LBL CHAR CNT TO D1
021962: 6710         1264          BEQ     FNMSX          ;IF ZERO
                     1265 ;
                     1266 ; STORE THE FILENAME COUNT IN THE SHADOW ARRAY
                     1267 ;
021964: 16C1         1268          MOVE.B  D1,(A3)+       ;FILENAME COUNT
                     1269 ;
                     1270 ; STORE A FILENAME IN ARRAY FILNAM$[256]16
                     1271 ;
021966: CF10         1272 STORLBL  AND.B   D7,(A0)        ;MASK HI BIT
021968: 1AD8         1273          MOVE.B  (A0)+,(A5)+    ;STORE A CHAR
02196A: 5301         1274          SUBQ.B  #1,D1          ;DECR CHAR CNT
02196C: 66F8         1275          BNE     STORLBL        ;LOOP 'TIL ZERO
                     1276 ;
02196E: 5242         1277          ADDQ.W  #1,D2          ;INCR NUMFILES%
021970: DA86         1278          ADD.L   D6,D5          ;INCR ADR
021972: 60EA         1279          BRA     SVCLABL        ;NEXT LABEL
                     1280 ;
021974: 33C20000FFFE 1281 FNMSX    MOVE.W  D2,NUMFILE     ;STORE NUMFILES%
02197A: 265F         1282          MOVE.L  (A7)+,A3       ;RESTORE A3
02197C: 4E75         1283          RTS
                     1284 ;
                     1285 ; THIS IS USED AS A TEMPORARY LINE BUFFER
                     1286 ;
02197E: 4E71         1287 LINE     NOP                    ;TEMP LINE BUFFER

       A        02004C    CW2      021274    ERR37J   0217FE    FORWARD  001435
       ABCD     0211B4    CW3      021284    ERR38I   021888    FWRD     02137A
       ABCD1    0211CC    CWE1     02191E    ERR39I   021878    FWRDL    02138C
       ADDADR   020F60    CWE2     02192C    ERR39J   021802    GAP      021394
       ADDRESS  001418    CWE3     02193E    ERR40I   02188C    GAPSIZE  001430
       ADDX     0211BA    CWEX     02193C    ERR41    021376    INDEX    001434
       ADRLEN   00143E    CWX      021282    ERR42I   021868    INTVAL   001432
       ADRTEMP  001408    D        0200ED    ERR43I   02186C    J        020176
       APOS1    021824    DATAEA   021072    ERR43J   021800    JJ       020A32
       APOST    02181E    DB       020ECE    ERR44B   020CDC    JTBL68K  0202A0
       APOST1   02165E    DB1      020F04    ERR45B   020CE0    LABEL    020904
       APOSTX   021672    DC       0212F0    ERR46F   02153A    LASTEA   020F66
       ASC      02129E    DCX      021300    ERR47F   021536    LBL      020916
       ASC1     0212B2    DD       020A18    ERR48B   020CD8    LBLCNT   00142E
       ASM      020810    DEST     00FFE4    ERR4M    02096E    LBLEND   020930
       ASM1     020822    DESTSIZE 020CE6    ERR5M    02096A    LBLEND1  020934
       ASM2     020840    DN1ST    021138    ERR6A    0212CA    LBLFLG   001436
       ASM3     020848    DN2ND    021148    ERR6E   ?02148A    LBLFOUND 020D76
       ASM4     020856    DS       021306    ERR6F    02153E    LBLI     020012
       ASMFILE  020894    DSX      02131A    ERR8B    020CD4    LBLN     02000E
       ASML1    0208D0    DUPLBL   020DD4    ERRA     0212D0    LBLPTR   00140C
       ASMLIN   0208AC    E        020150    ERRB     020CE2    LBLTBL   02001E
       B        02007E    EA       020AA0    ERRC     020F10    LBLTEMP  001400
       BB       0209FC    EOR      02133C    ERRCA    020F8E    LEA      020F24
       BINSRCH  020DC8    EQU      021346    ERRCNT   001428    LINE     02197E
       BINSRCH1 020DDE    EQUX    ?021352    ERRD     021102    LINECNT  00142C
       BINSRCH2 020DE4    ERMSGARY 02002E    ERRE     02148C    LINEPTR  001410
       BINSRCH3 020DE6    ERR      02092E    ERRF     021544    LINK     021190
       BINSRCH4 020DF4    ERR11H   0211AC    ERRG     0213B4    LISTFLG  00143B
       BTST     0210C6    ERR16   ?020F84    ERRH     021204    LISTFLG1 00143C
       BTSTSTAT 0210EC    ERR16H   0211B0    ERRI     02188E    LISTFLG2 00143D
       C        0200D2    ERR17I   021870    ERRJ     0217FA    M        020194
       CHK610   020C14    ERR18I   021874    ERRM     020970    MASKTBL  002000
       CHK610A  020C28    ERR1M    020966    ERRMSG   0204DA    MM       0209C6
       CHK610B  020C50    ERR20G   0213AE    ERROR    0204AC    MNE      020940
       CHK610X  020C56    ERR21G   0213B2    ERRTBL   020026    MNE1     020948
       CHKA     020BE2    ERR22    020F88    EVALEXPR 0215AE    MNE2     020A3A
       CHKEX1   02178A    ERR22C   020F0E    EVEX1    0215CE    MNE3     020A44
       CHKEX2   0217C2    ERR22D   021100    EVEX2    02160E    MNE4     020A58
       CHKEX3   021842    ERR22E   021486    EVEX3    021620    MNE5     020A80
       CHKEX4   021898    ERR22F   021542    EVEX4    02162C    MNE6     020A98
       CHKEX5   0218BC    ERR22H   0211FE    EVEX5    02167C    MNEEND   020994
       CHKEXPR  02177E    ERR23A   020EC6    EVEX6    021694    MODE1    020ACC
       CHKEXT   0218D6    ERR24    020F8C    EVEX7    0216A2    MODE10   020C00
       CHKEXX   0217DC    ERR24A   020ECA    EVEX8    0216CA    MODE11   020C58
       CHKLBL   020D3E    ERR24D   0210FC    EVEX9    0216E8    MODE2    020AE6
       CHKLBL1  020D66    ERR24E   02147E    EVEXT    0216EE    MODE3    020B06
       CHKLBLX  020D96    ERR24F   021532    EVEXX    0216EC    MODE4    020B1A
       CHKN     020BE8    ERR24H   021202    EXG      0211DA    MODE5    020B34
       CHKSRCH  020D6A    ERR25G   0213AA    EXG1     0211F2    MODE5A   020B4A
       CHKSRCH1 020D80    ERR26E   021482    EXPRVALU 001420    MODE5B   020B58
       CHKSRCH2 020D86    ERR26F   02152E    EXT      021244    MODE6    020B78
       CHKSRCH3 020D88    ERR28A   0212CE    FILECNT  00142A    MODE7    020B98
       CHKWEIRD 021914    ERR28I   021864    FILEEND  0208EC    MODE7A   020BB8
       CHKWRD   02125C    ERR30B   020CD0    FILETBL  020036    MODE7B   020BBE
       CMP      0212D4    ERR33J   02181A    FIRSTEA  020FE4    MODE7C   020BC4
       CMPM     020F14    ERR34I   02187C    FIRSTORG 0213EA    MODE9    020BCA
       CODE    ?02001A    ERR35I   021880    FLAGLBL  02093A    MODEX    020B04
       CODSIZE ?020014    ERR36I   021884    FNMS     021944    MOVE     021418
       CW1      021266    ERR37I   021816    FNMSX    021974    MOVE1    02144C






       MOVE1A   02145E    QUOT1    0217E4    SRCZ     020C68    TRAP     02120E
       MOVE1B   021460    QUOTE    0217DE    SRCZ1    020C8A    TS       0209D0
       MOVEA    0215AA    QUOTE1   02163C    SRCZ2    020C8E    TT       0209E0
       MOVEM    0214DC    QUOTEX   021650    SRCZ3    020CA2    TYPE1    020E7C
       MOVEM1   0214F8    QUOTX    021804    SRCZ4    020CB6    TYPE10   02109E
       MOVEM2   021518    R        0201EC    SRCZX    020CCA    TYPE11   021106
       MOVEM3   021548    RAMDISK  020016    STKPTR   001414    TYPE11C  021122
       MOVEP    0213A6    REGLIST  021560    STOP     021220    TYPE1A   020EAE
       MOVEQ    021174    REGLST1  021562    STORLBL  021966    TYPE1F   020EBC
       MOVEWRD  021490    REGLST2  02156E    STR      001300    TYPE2    020F3E
       MOVEWRD1 0214A2    REGLST3  02157A    STYP5    020FCC    TYPE2A   020F46
       MOVEWRD2 0214B0    REGLSTX  021586    SVCAPOST 02165A    TYPE3    020F56
       MOVEWRD3 0214C4    REGNUM   021588    SVCBIN   02169E    TYPE4    020F72
       MOVEWRD4 0214D2    REGNUM1  02159A    SVCBIN1  021892    TYPE4A   020F78
       MSGSHDW  02002A    RESTART  001424    SVCDEC   0216BC    TYPE5    020F96
       N        0201BB    RNDADLBL 021322    SVCDEC1  0218B4    TYPE5A   020F9A
       NEGATE   00143A    RNDADLBX 021338    SVCEXPR  021362    TYPE5C   020FAC
       NLBLS    02000C    RR       0209BC    SVCHEX   021678    TYPE6    020FF0
       NUMFILE  00FFFE    RTYPE5   020F92    SVCHEX1  02183C    TYPE7    021000
       ONETWO   020E2E    RTYPE8   021032    SVCHEX2  021854    TYPE7A   021010
       ONETWO1  020E5A    S        020210    SVCHEXX  02185C    TYPE8    021036
       ONETWO2  020E5E    SCC      020F50    SVCLABL  02195E    TYPE8A   021042
       ONETWOA  020E3C    SEVEXT   0216FA    SVCLBL   020DA4    TYPE8B   02104A
       ONETWOB  020E62    SEVEXT1  021702    SVCLBL1  020DC4    TYPE8C   02105A
       ONETWOC  020E6C    SEVEXTX  021712    SVCLBL2  020E0E    TYPE9    021080
       ONETWOD  020E74    SHDW     020032    SVCLBL3  020E18    TYPE9A   021094
       OPCODE  ?001436    SHORT    0213F6    SVCLBLX  020DF8    UDFFWD   00143F
       OPERATOR 001439    SHORTF   02140C    SVCQUOTE 021638    UNLK     021234
       OPERTN   021718    SHRT     00141C    SWAP     02124C    W0       020F30
       OPERTN1  02172E    SIZEID   001434    SWAP1    021252    W1       020F32
       OPERTN2  02173A    SIZEND   02098E    SYNC     021416    W1A      021132
       OPERTN3  021760    SOI     ?001170    SYNER1   020B30    W1B      021208
       OPERTN4  021768    SRC      00FFE0    SYNER2   020BFC    W2       020F38
       OPERTN5  021772    SRCS     020CEA    SYNERR   020808    WEIRD    001437
       OPERTNX  021774    SRCS1    020D0C    T        020280    WTBL     02128A
       ORG      0213B8    SRCS2    020D10    TB       0209EA    XFR      0218EC
       ORGFLG   001438    SRCS3    020D24    TD       020A06    XFR1     021906
       PDLIM    020974    SRCSIZE  020C64    TEXT     020022
       QSRC     02115A    SRCSX    020D38    TJ       020A22

          THERE ARE 394 LABELS
       001170 SOI         0204AC ERROR       020BFC SYNER2      020F10 ERRC
       001300 STR         0204DA ERRMSG      020C00 MODE10      020F14 CMPM
       001400 LBLTEMP     020808 SYNERR      020C14 CHK610      020F24 LEA
       001408 ADRTEMP     020810 ASM         020C28 CHK610A     020F30 W0
       00140C LBLPTR      020822 ASM1        020C50 CHK610B     020F32 W1
       001410 LINEPTR     020840 ASM2        020C56 CHK610X     020F38 W2
       001414 STKPTR      020848 ASM3        020C58 MODE11      020F3E TYPE2
       001418 ADDRESS     020856 ASM4        020C64 SRCSIZE     020F46 TYPE2A
       00141C SHRT        020894 ASMFILE     020C68 SRCZ        020F50 SCC
       001420 EXPRVALU    0208AC ASMLIN      020C8A SRCZ1       020F56 TYPE3
       001424 RESTART     0208D0 ASML1       020C8E SRCZ2       020F60 ADDADR
       001428 ERRCNT      0208EC FILEEND     020CA2 SRCZ3       020F66 LASTEA
       00142A FILECNT     020904 LABEL       020CB6 SRCZ4       020F72 TYPE4
       00142C LINECNT     020916 LBL         020CCA SRCZX       020F78 TYPE4A
       00142E LBLCNT      02092E ERR         020CD0 ERR30B      020F84 ERR16
       001430 GAPSIZE     020930 LBLEND      020CD4 ERR8B       020F88 ERR22
       001432 INTVAL      020934 LBLEND1     020CD8 ERR48B      020F8C ERR24
       001434 INDEX       02093A FLAGLBL     020CDC ERR44B      020F8E ERRCA
       001434 SIZEID      020940 MNE         020CE0 ERR45B      020F92 RTYPE5
       001435 FORWARD     020948 MNE1        020CE2 ERRB        020F96 TYPE5
       001436 LBLFLG      020966 ERR1M       020CE6 DESTSIZE    020F9A TYPE5A
       001436 OPCODE      02096A ERR5M       020CEA SRCS        020FAC TYPE5C
       001437 WEIRD       02096E ERR4M       020D0C SRCS1       020FCC STYP5
       001438 ORGFLG      020970 ERRM        020D10 SRCS2       020FE4 FIRSTEA
       001439 OPERATOR    020974 PDLIM       020D24 SRCS3       020FF0 TYPE6
       00143A NEGATE      02098E SIZEND      020D38 SRCSX       021000 TYPE7
       00143B LISTFLG     020994 MNEEND      020D3E CHKLBL      021010 TYPE7A
       00143C LISTFLG1    0209BC RR          020D66 CHKLBL1     021032 RTYPE8
       00143D LISTFLG2    0209C6 MM          020D6A CHKSRCH     021036 TYPE8
       00143E ADRLEN      0209D0 TS          020D76 LBLFOUND    021042 TYPE8A
       00143F UDFFWD      0209E0 TT          020D80 CHKSRCH1    02104A TYPE8B
       002000 MASKTBL     0209EA TB          020D86 CHKSRCH2    02105A TYPE8C
       00FFE0 SRC         0209FC BB          020D88 CHKSRCH3    021072 DATAEA
       00FFE4 DEST        020A06 TD          020D96 CHKLBLX     021080 TYPE9
       00FFFE NUMFILE     020A18 DD          020DA4 SVCLBL      021094 TYPE9A
       02000C NLBLS       020A22 TJ          020DC4 SVCLBL1     02109E TYPE10
       02000E LBLN        020A32 JJ          020DC8 BINSRCH     0210C6 BTST
       020012 LBLI        020A3A MNE2        020DD4 DUPLBL      0210EC BTSTSTAT
       020014 CODSIZE     020A44 MNE3        020DDE BINSRCH1    0210FC ERR24D
       020016 RAMDISK     020A58 MNE4        020DE4 BINSRCH2    021100 ERR22D
       02001A CODE        020A80 MNE5        020DE6 BINSRCH3    021102 ERRD
       02001E LBLTBL      020A98 MNE6        020DF4 BINSRCH4    021106 TYPE11
       020022 TEXT        020AA0 EA          020DF8 SVCLBLX     021122 TYPE11C
       020026 ERRTBL      020ACC MODE1       020E0E SVCLBL2     021132 W1A
       02002A MSGSHDW     020AE6 MODE2       020E18 SVCLBL3     021138 DN1ST
       02002E ERMSGARY    020B04 MODEX       020E2E ONETWO      021148 DN2ND
       020032 SHDW        020B06 MODE3       020E3C ONETWOA     02115A QSRC
       020036 FILETBL     020B1A MODE4       020E5A ONETWO1     021174 MOVEQ
       02004C A           020B30 SYNER1      020E5E ONETWO2     021190 LINK
       02007E B           020B34 MODE5       020E62 ONETWOB     0211AC ERR11H
       0200D2 C           020B4A MODE5A      020E6C ONETWOC     0211B0 ERR16H
       0200ED D           020B58 MODE5B      020E74 ONETWOD     0211B4 ABCD
       020150 E           020B78 MODE6       020E7C TYPE1       0211BA ADDX
       020176 J           020B98 MODE7       020EAE TYPE1A      0211CC ABCD1
       020194 M           020BB8 MODE7A      020EBC TYPE1F      0211DA EXG
       0201BB N           020BBE MODE7B      020EC6 ERR23A      0211F2 EXG1
       0201EC R           020BC4 MODE7C      020ECA ERR24A      0211FE ERR22H
       020210 S           020BCA MODE9       020ECE DB          021202 ERR24H
       020280 T           020BE2 CHKA        020F04 DB1         021204 ERRH
       0202A0 JTBL68K     020BE8 CHKN        020F0E ERR22C      021208 W1B






       02120E TRAP        0213F6 SHORT       021620 EVEX3       021816 ERR37I
       021220 STOP        02140C SHORTF      02162C EVEX4       02181A ERR33J
       021234 UNLK        021416 SYNC        021638 SVCQUOTE    02181E APOST
       021244 EXT         021418 MOVE        02163C QUOTE1      021824 APOS1
       02124C SWAP        02144C MOVE1       021650 QUOTEX      02183C SVCHEX1
       021252 SWAP1       02145E MOVE1A      02165A SVCAPOST    021842 CHKEX3
       02125C CHKWRD      021460 MOVE1B      02165E APOST1      021854 SVCHEX2
       021266 CW1         02147E ERR24E      021672 APOSTX      02185C SVCHEXX
       021274 CW2         021482 ERR26E      021678 SVCHEX      021864 ERR28I
       021282 CWX         021486 ERR22E      02167C EVEX5       021868 ERR42I
       021284 CW3         02148A ERR6E       021694 EVEX6       02186C ERR43I
       02128A WTBL        02148C ERRE        02169E SVCBIN      021870 ERR17I
       02129E ASC         021490 MOVEWRD     0216A2 EVEX7       021874 ERR18I
       0212B2 ASC1        0214A2 MOVEWRD1    0216BC SVCDEC      021878 ERR39I
       0212CA ERR6A       0214B0 MOVEWRD2    0216CA EVEX8       02187C ERR34I
       0212CE ERR28A      0214C4 MOVEWRD3    0216E8 EVEX9       021880 ERR35I
       0212D0 ERRA        0214D2 MOVEWRD4    0216EC EVEXX       021884 ERR36I
       0212D4 CMP         0214DC MOVEM       0216EE EVEXT       021888 ERR38I
       0212F0 DC          0214F8 MOVEM1      0216FA SEVEXT      02188C ERR40I
       021300 DCX         021518 MOVEM2      021702 SEVEXT1     02188E ERRI
       021306 DS          02152E ERR26F      021712 SEVEXTX     021892 SVCBIN1
       02131A DSX         021532 ERR24F      021718 OPERTN      021898 CHKEX4
       021322 RNDADLBL    021536 ERR47F      02172E OPERTN1     0218B4 SVCDEC1
       021338 RNDADLBX    02153A ERR46F      02173A OPERTN2     0218BC CHKEX5
       02133C EOR         02153E ERR6F       021760 OPERTN3     0218D6 CHKEXT
       021346 EQU         021542 ERR22F      021768 OPERTN4     0218EC XFR
       021352 EQUX        021544 ERRF        021772 OPERTN5     021906 XFR1
       021362 SVCEXPR     021548 MOVEM3      021774 OPERTNX     021914 CHKWEIRD
       021376 ERR41       021560 REGLIST     02177E CHKEXPR     02191E CWE1
       02137A FWRD        021562 REGLST1     02178A CHKEX1      02192C CWE2
       02138C FWRDL       02156E REGLST2     0217C2 CHKEX2      02193C CWEX
       021394 GAP         02157A REGLST3     0217DC CHKEXX      02193E CWE3
       0213A6 MOVEP       021586 REGLSTX     0217DE QUOTE       021944 FNMS
       0213AA ERR25G      021588 REGNUM      0217E4 QUOT1       02195E SVCLABL
       0213AE ERR20G      02159A REGNUM1     0217FA ERRJ        021966 STORLBL
       0213B2 ERR21G      0215AA MOVEA       0217FE ERR37J      021974 FNMSX
       0213B4 ERRG        0215AE EVALEXPR    021800 ERR43J      02197E LINE
       0213B8 ORG         0215CE EVEX1       021802 ERR39J
       0213EA FIRSTORG    02160E EVEX2       021804 QUOTX

          THERE ARE 394 LABELS
