                          1 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          2 ;
                          3 ;        ********
                          4 ;        *      *
                          5 ;        * EDIT *
                          6 ;        *      *
                          7 ;        ********
                          8 ;
00001600:                 9 BUFFER   EQU     $1600
00001700:                10 TEMPB    EQU     $1700
00001800:                11 WRKBUF   EQU     $1800
00001600:                12 LINBUF   EQU     BUFFER
                         13 ;
000014FE:                14 FORSTK   EQU     $14FE          ;$1400 - $14FF
00001500:                15 INDEX    EQU     $1500
00001504:                16 INSADR   EQU     $1504
00001508:                17 SFLAG    EQU     $1508
                         18 ;
                         19 ; SFLAG BIT0 = CLIST INHIBITS NEXT LINE #
                         20 ; SFLAG BIT1 = LABEL FLAG (MUST BE 1ST STATEMENT)
                         21 ; SFLAG BIT2 = .LINE# FLAG
                         22 ; SFLAG BIT3 = SCREEN EDIT <CR> FLAG
                         23 ; SFLAG BIT4 = RUN-TIME/EXCEPTION CONDITION FLAG
                         24 ;
0000150C:                25 MADR     EQU     $150C
00001510:                26 PMTPOS   EQU     $1510
00001514:                27 WRKADR   EQU     $1514
00001516:                28 NUMWDS   EQU     $1516
00001518:                29 KBTEST   EQU     $1518
0000151A:                30 LBLTEMP  EQU     $151A          ;LONG WORD
0000151A:                31 COND     EQU     LBLTEMP        ;SHARED REG
0000151A:                32 COUNT    EQU     LBLTEMP        ;SHARED REG
0000151C:                33 TBUFF    EQU     $151C          ;BYTE
0000151D:                34 TLINE    EQU     $151D          ;BYTE
0000151E:                35 BUFR1    EQU     $151E          ;BYTE
00001530:                36 CTLCFLG  EQU     $1530
00001532:                37 TXTLEN   EQU     $1532
00001534:                38 PARM1    EQU     $1534
00001536:                39 PARM2    EQU     $1536
00001538:                40 TEMP     EQU     $1538          ;LONG WORD
                         41 ;
00001540:                42 LINE     EQU     $1540
00001542:                43 COLUMN   EQU     $1542
00001546:                44 SSFFLGS  EQU     $1546          ;LONG WORD PARM
                         45 ;
0000154A:                46 EDTLN    EQU     $154A
0000154C:                47 NLINES   EQU     $154C
0000154E:                48 STMTCNT  EQU     $154E          ;STATEMENTS/LINE
00001552:                49 SOBLCK   EQU     $1552          ;STRT OF MEM BLC
00001556:                50 EOBLCK   EQU     $1556          ;END OF MEM BLC
0000155A:                51 CDESIZE  EQU     $155A          ;HALGOL CODE SIZE
                         52 ;

00001580:                54 SOH      EQU     $1580          ;HALGOL OBJ CODE
00001584:                55 EOH      EQU     SOH+4
                         56 ;
00001588:                57 SOLN     EQU     SOH+8          ;LINE # TBL
0000158C:                58 EOLN     EQU     SOLN+4
                         59 ;
00001590:                60 SOLA     EQU     SOLN+8         ;LINE ADDRESS TBL
00001594:                61 EOLA     EQU     SOLA+4
                         62 ;
00001598:                63 SOLBN    EQU     SOLA+8         ;LABEL NAME TBL
0000159C:                64 EOLBN    EQU     SOLBN+4
                         65 ;
000015A0:                66 SOLBA    EQU     SOLBN+8        ;LABEL ADDRESS TBL
000015A4:                67 EOLBA    EQU     SOLBA+4
                         68 ;
000015A8:                69 SOIN     EQU     SOLBA+8        ;INTEGER NAME TBL
000015AC:                70 EOIN     EQU     SOIN+4
                         71 ;
000015B0:                72 SOCN     EQU     SOIN+8         ;CONST NAME TBL
000015B4:                73 EOCN     EQU     SOCN+4
                         74 ;
000015B8:                75 SOC      EQU     SOCN+8         ;CONST VALUE TBL
000015BC:                76 EOC      EQU     SOC+4
                         77 ;
000015C0:                78 SOVN     EQU     SOC+8          ;VAR NAME TBL
000015C4:                79 EOVN     EQU     SOVN+4
                         80 ;
000015C8:                81 SOAN     EQU     SOVN+8         ;ARRAY NAME TBL
000015CC:                82 EOAN     EQU     SOAN+4
                         83 ;
000015D0:                84 SOADT    EQU     SOAN+8         ;ARY DESCRIPTR TBL
000015D4:                85 EOADT    EQU     SOADT+4
                         86 ;
000015D8:                87 SOI      EQU     SOADT+8        ;INT VALUE TBL
000015DC:                88 EOI      EQU     SOI+4
                         89 ;
000015E0:                90 SOV      EQU     SOI+8          ;VAR VALUE TBL
000015E4:                91 EOV      EQU     SOV+4
                         92 ;
000015E8:                93 SOA      EQU     SOV+8          ;ARRAY VALUE TBL
000015EC:                94 EOA      EQU     SOA+4
                         95 ;
00001900:                96 MODE     EQU     $1900
00001902:                97 S1       EQU     $1902
00001912:                98 FPT      EQU     S1+16
0000191A:                99 FPU      EQU     S1+24
00001F80:               100 CHRMSK   EQU     $1F80          ;DUMMY OFFSET -128
00002080:               101 TBLA     EQU     $2080
000020B0:               102 LISTER   EQU     $20B0
000020B4:               103 PRINTER  EQU     LISTER+4
000020B8:               104 SYSOUT   EQU     LISTER+8
000020BC:               105 ACTIVE   EQU     LISTER+12
                        106 ;
00003600:               107 ACTTBL   EQU     $3600
000036E0:               108 ACTTBL2  EQU     $36E0
000037C0:               109 BEGIN    EQU     $37C0
000037E8:               110 KEY1     EQU     $37E8
                        111 ;

                        113 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        114 ;
000020C0:               115 JV1      EQU     $20C0          ;DISK 1 JUMP TBL
000020C0:               116 FPADD    EQU     JV1
000020C4:               117 CPFP1M   EQU     FPADD+4
000020C8:               118 CPFPOS   EQU     CPFP1M+4
000020CC:               119 PRNTFP   EQU     CPFPOS+4
000020D0:               120 PRSTRM   EQU     PRNTFP+4
000020D4:               121 NUMEVAL  EQU     PRSTRM+4
000020D8:               122 HPTBL    EQU     NUMEVAL+4
                        123 ;
00003A00:               124 JV2      EQU     $3A00          ;DISK 2 JUMP TBL
00003A00:               125 LBLADR   EQU     JV2
00003A04:               126 LOADS    EQU     LBLADR+4
00003A08:               127 END      EQU     LOADS+4
00003A0C:               128 INPUTS   EQU     END+4
00003A10:               129 PRINTCR  EQU     INPUTS+4
00003A14:               130 PRINTS   EQU     PRINTCR+4
00003A18:               131 PRINTSV  EQU     PRINTS+4
00003A1C:               132 FLIN1    EQU     PRINTSV+4
00003A20:               133 VTABC    EQU     FLIN1+4
00003A24:               134 VTABH    EQU     VTABC+4
00003A28:               135 CMD0     EQU     VTABH+4
00003A2C:               136 CMD1     EQU     CMD0+4
00003A30:               137 READKB   EQU     CMD1+4
00003A34:               138 BELL     EQU     READKB+4
00003A38:               139 CMD4     EQU     BELL+4
00003A3C:               140 CMD5     EQU     CMD4+4
00003A40:               141 CMD6     EQU     CMD5+4
00003A44:               142 CMD7     EQU     CMD6+4
00003A48:               143 CMD8     EQU     CMD7+4
00003A4C:               144 CMD9     EQU     CMD8+4
00003A50:               145 SETCSR   EQU     CMD9+4
00003A54:               146 CLRCSR   EQU     SETCSR+4
00003A58:               147 GETKEY   EQU     CLRCSR+4
00003A5C:               148 CLRKB    EQU     GETKEY+4
00003A60:               149 ECHO     EQU     CLRKB+4
00003A64:               150 CLRCRT   EQU     ECHO+4
00003A68:               151 PRNTVAR  EQU     CLRCRT+4
00003A6C:               152 PASCSTR  EQU     PRNTVAR+4
00003A70:               153 GETINDX  EQU     PASCSTR+4
00003A74:               154 LISTKEY  EQU     GETINDX+4
00003A78:               155 PRNTSTR  EQU     LISTKEY+4
00003A7C:               156 LASSIGN  EQU     PRNTSTR+4
00003A80:               157 PRHEX4   EQU     LASSIGN+4
00003A84:               158 PRHEX2   EQU     PRHEX4+4
00003A88:               159 LINFEED  EQU     PRHEX2+4
00003A8C:               160 OUTCHR   EQU     LINFEED+4
00003A90:               161 SHPRINT  EQU     OUTCHR+4
00003A94:               162 SHPR1    EQU     SHPRINT+4
00003A98:               163 FIX16    EQU     SHPR1+4
00003A9C:               164 SNDCHR   EQU     FIX16+4
                        165 ;

                        167 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        168 ;
00006000:               169 JV4      EQU     $6000
00006000:               170 COLDSTRT EQU     JV4
00006004:               171 WARMSTRT EQU     COLDSTRT+4
00006008:               172 ERROR    EQU     WARMSTRT+4
0000600C:               173 TRAP14   EQU     ERROR+4
                        174 ;
00007300:               175 JV5      EQU     $7300
00007300:               176 ELET     EQU     JV5
00007304:               177 LLET1    EQU     ELET+4
00007308:               178 ELET1    EQU     LLET1+4
0000730C:               179 MURK     EQU     ELET1+4
                        180 ;
--OBJECT: EDIT.OBJ0
  004C00:               181          ORG     $4C00
                        182 ; JUMP VECTOR LINKS TO ROUTINES
                        183 ;
  004C00: 4EF855EE      184 JV3      JMP     GETVAR
  004C04: 4EF84C80      185          JMP     SCREDIT
  004C08: 4EF84E0C      186          JMP     HOMCSR
  004C0C: 4EF85106      187          JMP     CHKLIST
  004C10: 4EF8514C      188          JMP     CHKLN
  004C14: 4EF85184      189          JMP     SRCH1
  004C18: 4EF85228      190          JMP     IPRINT1
  004C1C: 4EF8534C      191          JMP     GETFLD
  004C20: 4EF8534E      192          JMP     GETFLDA
  004C24: 4EF85364      193          JMP     EXAMN
  004C28: 4EF85386      194          JMP     HEXCHK
  004C2C: 4EF853A4      195          JMP     PACK
  004C30: 4EF853EA      196          JMP     PREPROC
  004C34: 4EF8544E      197          JMP     REMSPCE
  004C38: 4EF85498      198          JMP     ADDLIST
  004C3C: 4EF854AC      199          JMP     VARCHK
  004C40: 4EF854A8      200          JMP     VARCHK1
  004C44: 4EF854E6      201          JMP     CONCHK
  004C48: 4EF854E2      202          JMP     CONCHK1
  004C4C: 4EF8551A      203          JMP     GETLBL
  004C50: 4EF8557E      204          JMP     GETLBL1
  004C54: 4EF856E2      205          JMP     HEXGET
  004C58: 4EF852C2      206          JMP     VOIDLBL
  004C5C: 4EF857C2      207          JMP     REWIND
  004C60: 4EF85A2A      208          JMP     LIST
  004C64: 4EF8597C      209          JMP     DELFN
  004C68: 4EF85B3A      210          JMP     SELFN
  004C6C: 4EF85744      211          JMP     RUN
  004C70: 4EF85B10      212          JMP     INPTXT
  004C74: 4EF859C8      213          JMP     SNGLA
  004C78: 4EF855B0      214          JMP     ERR8
  004C7C: 4EF85BA6      215          JMP     RANGCHK
                        216 ;
                        217 ;NOLIST
                                     CHAIN   SCR1

                          2 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          3 ;
                          4 ;        ***********************
                          5 ;        *                     *
                          6 ;        * SUBROUTINE: SCREDIT *
                          7 ;        *                     *
                          8 ;        ***********************
                          9 ;
                         10 ; PURPOSE:  BUILD THE INPUT BUFFER THAT IS USED
                         11 ; IN ALL COMMAND AND INPUT PROCESSING.
                         12 ;
                         13 ; MOST REGISTERS ARE USED AS SCRATCH REGISTERS
                         14 ;
                         15 ; THIS ROUTINE PERFORMS THE FOLLOWING STEPS:
                         16 ;
                         17 ; 1ST) SET THE 'NO <CR>' FLAG
                         18 ;
                         19 ; 2ND) SET THE CURSOR AT THE CURRENT CURSOR POS'TN
                         20 ;      WHICH IS COMPUTED FROM THE CURRENT VALUES IN
                         21 ;      'COLUMN' AND 'LINE'.
                         22 ;
                         23 ; 3RD) WAIT FOR A KEYPRESS FROM THE USER
                         24 ;
                         25 ; 4TH) UPON RECEIPT OF A KEYPRESS CHECK IF IT WAS A
                         26 ;      PRINTABLE CHAR OR CONTROL FUNCTION.
                         27 ;
                         28 ; 5TH) IF PRINTABLE, THEN PRINT THE CHAR ON THE
                         29 ;      CRT AT THE CURRENT CURSOR POSITION AND THEN
                         30 ;      ADVANCE THE CURSOR ONE POSITION TO THE RIGHT
                         31 ;
                         32 ;      IF A SPECIAL CONTROL FUNCTION THEN PERFORM
                         33 ;      THE FUNCTION AND THEN GO TO STEP 1.
                         34 ;
                         35 ;      IF NEITHER A SPECIAL CTL CHAR NOR
                         36 ;      A PRINTABLE CHARACTER THEN IGNORE KEYPRESS.
                         37 ;
  004C80: 4280           38 SCREDIT  CLR.L   D0             ;READY WORK AREA
  004C82: 4281           39          CLR.L   D1             ;  "   "    "
  004C84: 4283           40          CLR.L   D3             ;  "   "    "
  004C86: 4287           41          CLR.L   D7             ;WORK AREA
  004C88: 24381546       42          MOVE.L  SSFFLGS,D2     ;FETCH LINE FLAGS
  004C8C: 08F800031508   43          BSET    #3,SFLAG       ;SET (NO CR) FLAG
  004C92: 4EB83A50       44          JSR     SETCSR         ;SET CURSOR
  004C96: 4EB83A58       45          JSR     GETKEY         ;GET KEYPRESS
  004C9A: 387C1F80       46          MOVEA.W #CHRMSK,A4     ;GET MASK TBL
  004C9E: 1A347000       47          MOVE.B  (A4,D7),D5     ;GET CHR FLAG
  004CA2: 6B12           48          BMI     PRINTX         ;CHARACTER FOUND
                         49 ;
                         50 ; NO PRINT CHARACTER FOUND, TRY SPECIAL CTL CHAR
                         51 ;
  004CA4: 307C4EB0       52          MOVEA.W #CMDTBL,A0     ;COMMAND TBL
  004CA8: 1018           53          MOVE.B  (A0)+,D0       ;LENGTH OF TBL
                         54 ;
                         55 ; LOOK FOR A SPECIAL CTL CHAR IN CMDTBL LIST
                         56 ;
  004CAA: BE18           57 LOOPA    CMP.B   (A0)+,D7       ;MATCH?
  004CAC: 675A           58          BEQ     PROC1          ;EXECUTE CMD
                         59 ;
  004CAE: 5401           60          ADDQ.B  #2,D1          ;TABLE INDEX
  004CB0: 51C8FFF8       61          DBF     D0,LOOPA       ;CONT SEARCH
                         62 ;

                         64 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         65 ;
                         66 ; NO SPECIAL CONTROL CHARACTER FOUND !!!
                         67 ; SO DO NOTHING, SET CURSOR & EXIT
                         68 ;
  004CB4: 6010           69          BRA     LOOPX          ;SET CURSOR & EXIT
                         70 ;
                         71 ; *** PRINTABLE CHARACTER FOUND ***
                         72 ;
  004CB6: 4EB83A60       73 PRINTX   JSR     ECHO           ;KEYPRESS TO CRT
  004CBA: 0C3800271542   74          CMPI.B  #39,COLUMN     ;RIGHT OF CRT?
  004CC0: 6708           75          BEQ     CLRFLG         ;CLEAR LINE FLAG
  004CC2: 52381542       76          ADDQ.B  #1,COLUMN      ;NEXT COL OVER
                         77 ;
  004CC6: 4EF83A50       78 LOOPX    JMP     SETCSR         ;SET CURSOR & EXIT
                         79 ;
  004CCA: 4240           80 CLRFLG   CLR.W   D0             ;READY WORK REG
  004CCC: 10381540       81          MOVE.B  LINE,D0        ;CURRENT LINE #
  004CD0: 26381546       82          MOVE.L  SSFFLGS,D3     ;SCREEN FLGS
  004CD4: 0103           83          BTST    D0,D3          ;LINE SELF-SUFF ?
  004CD6: 6710           84          BEQ     NXTLIN         ;IF YES
                         85 ;
  004CD8: 4EB84D4E       86          JSR     SCRTDN         ;SCROLL CRT DN
  004CDC: 4240           87          CLR.W   D0
  004CDE: 10381540       88          MOVE.B  LINE,D0        ;CURRENT LINE #
  004CE2: 0182           89          BCLR    D0,D2          ;CLEAR LINE FLAG
  004CE4: 21C21546       90          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
                         91 ;
  004CE8: 42381542       92 NXTLIN   CLR.B   COLUMN         ;RESET COLUMN
  004CEC: 0C3800171540   93          CMPI.B  #23,LINE       ;BOTTOM OF CRT?
  004CF2: 6706           94          BEQ     SCROLL         ;THEN SCROLL CRT
                         95 ;
  004CF4: 52381540       96 EXITA    ADDQ.B  #1,LINE        ;NEXT LINE DOWN
  004CF8: 60CC           97          BRA     LOOPX          ;SET CURSOR & EXIT
                         98 ;
                         99 ; NOTE - THE SCROLLING OF LINE FLAGS IS HANDLED
                        100 ; IN SUBROUTINE: 'SCROLL'
                        101 ;
                        102 ;-- SCROLL THE CRT DISPLAY UP --
                        103 ;
  004CFA: 4EB83A54      104 SCROLL   JSR     CLRCSR         ;CLEAR CURSOR
  004CFE: 4EB83A4C      105          JSR     CMD9           ;SCROLL CRT CMD
  004D02: 42381542      106          CLR.B   COLUMN         ;RESET COLUMN
  004D06: 60BE          107          BRA     LOOPX          ;SET CURSOR & EXIT
                        108 ;
                        109 ;-- PROCESS ANY CTL-KEY FUNCTION --
                        110 ;
  004D08: 307C4EC2      111 PROC1    MOVEA.W #CTLTBL,A0     ;ROUTINE TBL
  004D0C: 30701000      112          MOVEA.W (A0,D1),A0     ;ROUTINE ADR
  004D10: 4ED0          113          JMP     (A0)           ;EXECUTE KEY CMD
                        114 ;
                        115 ;-- PROCESS THE CARRIAGE RETURN --
                        116 ;
  004D12: 4EB83A54      117 KEY8D    JSR     CLRCSR         ;CLEAR CURSOR
  004D16: 08B800031508  118          BCLR    #3,SFLAG       ;SET CR FLAG
  004D1C: 7027          119          MOVEQ   #39,D0         ;CRT WIDTH
  004D1E: B0381542      120          CMP.B   COLUMN,D0      ;RIGHT OF CRT?
  004D22: 6502          121          BCS     KEY8DA         ;IF NO
  004D24: 600C          122          BRA     KEY8DB         ;IF YES
                        123 ;

                        125 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        126 ;
  004D26: 4280          127 KEY8DA   CLR.L   D0
  004D28: 10381540      128          MOVE.B  LINE,D0        ;CURRENT LINE #
  004D2C: 01C2          129          BSET    D0,D2          ;SET LINE FLAG
  004D2E: 21C21546      130          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
                        131 ;
  004D32: 42381542      132 KEY8DB   CLR.B   COLUMN         ;RESET COLUMN
  004D36: 4EB84EE2      133          JSR     BLDBUFR        ;GET INPUT LINE
  004D3A: 60AC          134          BRA     NXTLIN         ;CONTINUE
                        135 ;
                        136 ;-- PROCESS THE CTL-G KEY --
                        137 ;
  004D3C: 4EF83A34      138 KEY87    JMP     BELL           ;SOUND BELL
                        139 ;
                        140 ;-- PROCESS THE CTL-X KEYPRESS --
                        141 ;--  (CANCEL THE INPUT LINE ) --
                        142 ;
  004D40: 4EB83A54      143 KEY98    JSR     CLRCSR         ;CLEAR CURSOR
  004D44: 1E3C00DC      144          MOVE.B  #$DC,D7        ;BACK SLASH
  004D48: 4EB83A38      145          JSR     CMD4           ;SEND CHR IN D7
  004D4C: 609A          146          BRA     NXTLIN         ;GO DOWN 1 LINE
                        147 ;
                        148 ;-- SCROLL THE CRT DISPLAY DOWN --
                        149 ;
  004D4E: 0C3800171540  150 SCRTDN   CMPI.B  #23,LINE       ;BOTTOM OF CRT?
  004D54: 672E          151          BEQ     SCRTDA         ;THEN DO NOTHING
                        152 ;
                        153 ;   <ELSE PREPARE TO SCROLL SCREEN>
                        154 ;
  004D56: 11F81540151D  155          MOVE.B  LINE,TLINE     ;CURRENT LINE #
  004D5C: 5238151D      156          ADDQ.B  #1,TLINE       ;NEXT LINE DOWN
  004D60: 4EB83A54      157          JSR     CLRCSR         ;CLEAR CURSOR
  004D64: 4EB84F80      158          JSR     SCRLDN         ;MOVE ALL LINES DN
  004D68: 4240          159          CLR.W   D0             ;INIT WRK AREA
  004D6A: 1038151D      160          MOVE.B  TLINE,D0       ;NEW CURRENT LINE
  004D6E: 4246          161          CLR.W   D6
  004D70: 1C38151D      162          MOVE.B  TLINE,D6       ;CURRENT LINE
  004D74: 3A7C2080      163          MOVE.W  #TBLA,A5       ;LINE ADR TBL
  004D78: DC46          164          ADD.W   D6,D6          ;DOUBLE ADR
  004D7A: 3C356000      165          MOVE.W  (A5,D6),D6     ;GET LINE ADR
  004D7E: 7827          166          MOVEQ   #39,D4         ;CLR 40 COLMNS
  004D80: 4EB84E5A      167          JSR     PARCLR         ;CLEAR LINE
  004D84: 4E75          168 SCRTDA   RTS                    ;DONE
                        169 ;

                        171 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        172 ;
                        173 ;-------------------------------
                        174 ;-- ROUTINE: MOVE CURSOR LEFT --
                        175 ;-------------------------------
                        176 ;
  004D86: 4A381542      177 CSRLT    TST.B   COLUMN         ;AT COLUMN 0?
  004D8A: 6720          178          BEQ     KEY9BD         ;WRAP AROUND CRT
                        179 ;
  004D8C: 4EB83A54      180          JSR     CLRCSR         ;CLEAR CURSOR
  004D90: 53381542      181          SUBQ.B  #1,COLUMN      ;MOVE LEFT 1 POS
  004D94: 6000FF30      182          BRA     LOOPX          ;SET CURSOR & EXIT
                        183 ;
                        184 ;-----------------------------
                        185 ;-- ROUTINE: MOVE CURSOR UP --
                        186 ;-----------------------------
                        187 ;
  004D98: 4A381540      188 CSRUP    TST.B   LINE           ;LINE # = 0 ?
  004D9C: 670C          189          BEQ     KEY9BB         ;THEN DO NOTHING
                        190 ;
  004D9E: 4EB83A54      191          JSR     CLRCSR         ;ELSE CLR CURSOR
  004DA2: 53381540      192          SUBQ.B  #1,LINE        ;MOVE UP 1 LINE
  004DA6: 6000FF1E      193          BRA     LOOPX          ;SET CURSOR & EXIT
                        194 ;
  004DAA: 4E75          195 KEY9BB   RTS                    ;DONE
                        196 ;
  004DAC: 4A381540      197 KEY9BD   TST.B   LINE           ;LINE # = 0 ?
  004DB0: 6712          198          BEQ     KEY9BE         ;EXIT
                        199 ;
  004DB2: 4EB83A54      200          JSR     CLRCSR         ;CLEAR CURSOR
  004DB6: 53381540      201          SUBQ.B  #1,LINE        ;GO UP 1 LINE
  004DBA: 11FC00271542  202          MOVE.B  #39,COLUMN     ;NUMBER OF COL
  004DC0: 6000FF04      203          BRA     LOOPX          ;SET CURSOR & EXIT
                        204 ;
  004DC4: 4E75          205 KEY9BE   RTS                    ;DONE
                        206 ;
                        207 ;-------------------------------
                        208 ;-- ROUTINE: MOVE CURSOR DOWN --
                        209 ;-------------------------------
                        210 ;
  004DC6: 0C3800171540  211 CSRDN    CMPI.B  #$17,LINE      ;BOTTOM OF CRT?
  004DCC: 6708          212          BEQ     CSRDNA         ;IF YES,SCROLL CRT
                        213 ;
  004DCE: 4EB83A54      214          JSR     CLRCSR         ;CLEAR CURSOR
  004DD2: 6000FF20      215          BRA     EXITA          ;MOVE DOWN 1 LINE
                        216 ;
  004DD6: 4EB83A54      217 CSRDNA   JSR     CLRCSR         ;CLEAR CURSOR
  004DDA: 4EB83A4C      218          JSR     CMD9           ;SCROLL CRT CMD
  004DDE: 6000FEE6      219          BRA     LOOPX          ;SET CURSOR & EXIT
                        220 ;
                                     CHAIN   SCR2

                          2 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          3 ;
                          4 ;--------------------------------
                          5 ;-- ROUTINE: MOVE CURSOR RIGHT --
                          6 ;--------------------------------
                          7 ;
  004DE2: 0C3800271542    8 CSRRT    CMPI.B  #$27,COLUMN    ;RIGHT OF CRT?
  004DE8: 670C            9          BEQ     CSRRTA         ;CHECK LINE #
                         10 ;
  004DEA: 4EB83A54       11          JSR     CLRCSR         ;CLEAR CURSOR
  004DEE: 52381542       12          ADDQ.B  #1,COLUMN      ;GO RIGHT 1 POS
  004DF2: 6000FED2       13          BRA     LOOPX          ;SET CURSOR & EXIT
                         14 ;
  004DF6: 0C3800171540   15 CSRRTA   CMPI.B  #23,LINE       ;BOTTOM OF CRT?
  004DFC: 6700FEFC       16          BEQ     SCROLL         ;THEN SCROLL CRT
                         17 ;
  004E00: 4EB83A54       18          JSR     CLRCSR         ;CLEAR CURSOR
  004E04: 42381542       19          CLR.B   COLUMN         ;RESET COLUMN TO 0
  004E08: 6000FEEA       20          BRA     EXITA          ;GET NEXT LINE ADR
                         21 ;
                         22 ;------------------------
                         23 ;-- SUBROUTINE: HOMCSR --
                         24 ;------------------------
                         25 ;
                         26 ; THIS SUBROUTINE WILL HOME THE CURSOR AND CLEAR
                         27 ; THE CRT. THIS IS DONE BY CLEARING THE 'LINE' AND
                         28 ; 'COLUMN' MEMORY LOCATIONS AND THEN CALCULATION A
                         29 ; NEW LINE ADDRESS BY USING 'CLCSADR' ROUTINE.
                         30 ;
  004E0C: 4EB83A54       31 HOMCSR   JSR     CLRCSR         ;CLEAR CURSOR
  004E10: 4EB83A64       32          JSR     CLRCRT         ;CLEAR CRT
  004E14: 42381540       33          CLR.B   LINE           ;SET LINE # TO 0
  004E18: 42381542       34          CLR.B   COLUMN         ;SET COLUMN TO 0
  004E1C: 4EF83A50       35          JMP     SETCSR         ;SET CURSOR/EXIT
                         36 ;
                         37 ;------------------------
                         38 ;-- SUBROUTINE: CLREOL --
                         39 ;------------------------
                         40 ;
                         41 ; D7: IS USED FOR I/O OF CHARACTERS
                         42 ;
                         43 ; THIS SUBROUTINE CLEARS TO THE END OF THE CURRENT
                         44 ; LINE ON THE CRT.
                         45 ;
  004E20: 6104           46 CLREOL   BSR     CLRLIN         ;CLEAR  END OF LINE
  004E22: 4EF83A50       47          JMP     SETCSR         ;SET CURSOR/EXIT
                         48 ;
  004E26: 4280           49 CLRLIN   CLR.L   D0             ;WORK AREA
  004E28: 10381540       50          MOVE.B  LINE,D0        ;CURRENT LINE #
  004E2C: 3C00           51          MOVE.W  D0,D6          ;ALSO D6
  004E2E: 2F0D           52          MOVE.L  A5,-(A7)       ;SAVE A5
  004E30: 3A7C2080       53          MOVE.W  #TBLA,A5       ;LINE ADR TBL
  004E34: DC46           54          ADD.W   D6,D6          ;DOUBLE D6
  004E36: 3C356000       55          MOVE.W  (A5,D6),D6     ;GET LINE ADR
  004E3A: 2A5F           56          MOVE.L  (A7)+,A5       ;RESTORE A5
  004E3C: 24381546       57          MOVE.L  SSFFLGS,D2     ;FETCH LINE FLAGS
  004E40: DC381542       58          ADD.B   COLUMN,D6      ;POS OF CURSOR
                         59 ;
  004E44: 7827           60 CLRIN1   MOVEQ   #39,D4         ;CRT WIDTH
  004E46: 98381542       61          SUB.B   COLUMN,D4      ;COUNTER
                         62 ;

                         64 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         65 ;
                         66 ; THIS SECTION CHECKS FOR THE ENTIRE LINE BEING
                         67 ; CLEARED.  IF SO THEN SET THE PREVIOUS LINE
                         68 ; ABOVE AS INDICATING THAT IT IS SELF-SUFFICIENT.
                         69 ;
                         70 ; REGISTER ASSIGNMENTS:
                         71 ;
                         72 ; D0: CONTAINS THE CURRENT LINE #
                         73 ; D2: CONTAINS THE CRT FLAGS
                         74 ; D4: CONTAINS THE CRT WIDTH
                         75 ; D6: CONTAINS THE CURRENT COLUMN
                         76 ; D7: IS USED FOR I/O OF CHARACTERS
                         77 ;
  004E4A: 0C040027       78          CMPI.B  #39,D4         ;IF = THEN AT COL
  004E4E: 660A           79          BNE     PARCLR         ;ZERO,CLR LINE
                         80 ;
  004E50: 5300           81          SUBQ.B  #1,D0          ;GET NXT LINE UP
  004E52: 01C2           82          BSET    D0,D2          ;SET FLAG
  004E54: 21C21546       83          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
  004E58: 5200           84          ADDQ.B  #1,D0          ;RESTORE LINE #
                         85 ;
  004E5A: 7EA0           86 PARCLR   MOVEQ   #$A0,D7        ;A BLANK CHR$
                         87 ;
  004E5C: 4EB83A38       88 LOOPB    JSR     CMD4           ;SEND BYT TO HOST
  004E60: 5206           89          ADDQ.B  #1,D6          ;NEXT COLUMN OVR
  004E62: 51CCFFF8       90          DBF     D4,LOOPB       ;CONTINUE CLREOL
                         91 ;
  004E66: 01C2           92          BSET    D0,D2          ;SET LINE FLAG
  004E68: 21C21546       93          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
  004E6C: 4E75           94          RTS                    ;DONE
                         95 ;
                         96 ;------------------------
                         97 ;-- SUBROUTINE: CLREOS --
                         98 ;------------------------
                         99 ;
                        100 ; THIS SUBROUTINE CLRS TO THE END OF THE DISPLAY
                        101 ;
                        102 ;1ST) IT DOES A CALL TO THE CLREOL (CLEAR TO THE
                        103 ;     THE END OF THE LINE AT THE CURSOR POSITION).
                        104 ;2ND) THEN IT CLEARS THE REMAINING LINES DOWN FROM
                        105 ;     THE CURRENT LINE. ALL FLAGS ARE SET TO ONE
                        106 ;     FOR EACH LINE CLEARED.
                        107 ;
                        108 ; REGISTER ASSIGNMENTS:
                        109 ;
                        110 ;
  004E6E: 61B6          111 CLREOS   BSR     CLRLIN         ;CLEAR EOL FIRST
  004E70: 387C2080      112 CLREOSA  MOVEA   #TBLA,A4       ;BASE LINE ADR TBL
  004E74: 0C000017      113          CMPI.B  #23,D0         ;BOTTOM OF CRT?
  004E78: 6732          114          BEQ     DONEM          ;THEN DONE
                        115 ;
  004E7A: 5200          116          ADDQ.B  #1,D0          ;NEXT LINE DOWN
  004E7C: 0240003F      117          ANDI.W  #$003F,D0      ;MASK UPPER BITS
  004E80: 4281          118          CLR.L   D1             ;WORK AREA
  004E82: 4286          119          CLR.L   D6             ;WORK AREA
  004E84: 7817          120          MOVEQ   #23,D4         ;NUMBER OF LINES
  004E86: 9800          121          SUB.B   D0,D4          ;LINES TO CLR (D4)
  004E88: 1E3C00A0      122          MOVE.B  #$A0,D7        ;BLANK CHARACTER
                        123 ;

                        125 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        126 ;
  004E8C: 7227          127 LOOPC    MOVEQ   #39,D1         ;# OF COLUMNS
  004E8E: E308          128          LSL.B   #1,D0          ;ADJ FOR INDEX
  004E90: 3C340000      129          MOVE.W  (A4,D0),D6     ;LINE BASE ADR
  004E94: E208          130          LSR.B   #1,D0          ;RESET LINE #
                        131 ;
  004E96: 4EB83A38      132 LOOPD    JSR     CMD4           ;SEND SPACE TO CRT
  004E9A: 5206          133          ADDQ.B  #1,D6          ;NEXT COLUMN OVER
  004E9C: 51C9FFF8      134          DBF     D1,LOOPD       ;CONTINUE CLEAR
                        135 ;
  004EA0: 01C2          136          BSET    D0,D2          ;SET LINE FLAG
  004EA2: 21C21546      137          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
  004EA6: 5200          138          ADDQ.B  #1,D0          ;GET NEXT LINE #
  004EA8: 51CCFFE2      139          DBF     D4,LOOPC       ;CONTINUE
                        140 ;
  004EAC: 4EF83A50      141 DONEM    JMP     SETCSR         ;SET CURSOR/EXIT
                        142 ;
                        143 ; THIS TBL ASSIGNS FUNCTIONS TO SINGLE KEYPRESSES
                        144 ;
  004EB0: 10            145 CMDTBL   DC.B    $10            ;LENGTH OF TBL -1
  004EB1: 8D            146          DC.B    $8D            ;<CR>
  004EB2: 88            147          DC.B    $88            ;LEFT ARROW
  004EB3: 95            148          DC.B    $95            ;RIGTH ARROW
  004EB4: 87            149          DC.B    $87            ;SOUND BELL
  004EB5: 89            150          DC.B    $89            ;<CTL-I>
  004EB6: 8A            151          DC.B    $8A            ;<CTL-J>
  004EB7: 8B            152          DC.B    $8B            ;<CTL-K>
  004EB8: 8C            153          DC.B    $8C            ;<CTL-L>
  004EB9: 85            154          DC.B    $85            ;<CTL-E> CLR CRT
  004EBA: 90            155          DC.B    $90            ;<CTL-P> CLR EOL
  004EBB: 8E            156          DC.B    $8E            ;<CTL-E> CLR EOS
  004EBC: 91            157          DC.B    $91            ;<CTL-Q> INSERT
  004EBD: 84            158          DC.B    $84            ;<CTL-D> DELETE
  004EBE: 98            159          DC.B    $98            ;CTLX CANCL INPUT
  004EBF: 97            160          DC.B    $97            ;CTLW-CRTDMP
  004EC0: 96            161          DC.B    $96            ;CTLV-SCROLL DOWN
  004EC1: 00            162          DC.B    $00            ;EOL MARKER
                        163 ;
  004EC2: 4D12          164 CTLTBL   DC.W    KEY8D
  004EC4: 4D86          165          DC.W    CSRLT
  004EC6: 4DE2          166          DC.W    CSRRT
  004EC8: 4D3C          167          DC.W    KEY87
  004ECA: 4D98          168          DC.W    CSRUP
  004ECC: 4D86          169          DC.W    CSRLT
  004ECE: 4DC6          170          DC.W    CSRDN
  004ED0: 4DE2          171          DC.W    CSRRT
  004ED2: 4E0C          172          DC.W    HOMCSR
  004ED4: 4E20          173          DC.W    CLREOL
  004ED6: 4E6E          174          DC.W    CLREOS
  004ED8: 5014          175          DC.W    CINSERT
  004EDA: 5072          176          DC.W    CDELETE
  004EDC: 4D40          177          DC.W    KEY98
  004EDE: 5CA6          178          DC.W    CRTDUMP
  004EE0: 4D4E          179          DC.W    SCRTDN
                        180 ;
                                     CHAIN   SCR3

                          2 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          3 ;
                          4 ;-------------------------
                          5 ;-- SUBROUTINE: BLDBUFR --
                          6 ;-------------------------
                          7 ;
                          8 ; 1ST) FIND THE START OF THE INPUT LINE.
                          9 ; 2ND) FIND THE END OF THE INPUT LINE.
                         10 ; 3RD) BUILD THE INPUT BUFFER FROM THE START
                         11 ;      AND ENDING ADDRESSES.
                         12 ;
  004EE2: 307C1600       13 BLDBUFR  MOVEA   #BUFFER,A0     ;START OF BUFFER
  004EE6: 387C2080       14          MOVEA   #TBLA,A4       ;CRT LINE ADR TABLE
  004EEA: 4280           15          CLR.L   D0             ;WORK SPACE
  004EEC: 4281           16          CLR.L   D1             ;WORK SPACE
  004EEE: 10381540       17          MOVE.B  LINE,D0        ;CURRENT LINE #
  004EF2: 1200           18          MOVE.B  D0,D1          ;CURRENT LINE #
  004EF4: 76A0           19          MOVEQ   #$A0,D3        ;SEARCH CHRACTER
                         20 ;
                         21 ; THIS SECTION GETS THE STARTING ADDRESS OF THE
                         22 ; INPUT LINE.
                         23 ;
                         24 ;1ST) TEST CURRENT LINE NUMBER FOR TOP OF CRT,
                         25 ;     IF AT TOP OF CRT (LINE #=0) THEN USE THAT AS
                         26 ;     THE STARTING ADDRESS OF THE INPUT LINE.
                         27 ;
                         28 ;2ND) IF NOT AT TOP OF CRT THEN CHECK IF LINE IS
                         29 ;     SELF-SUFFICIENT. THIS IS DONE BY CHECKING
                         30 ;     THE PREVIOUS LINE (CURRENT LINE - 1) FLAG. IF
                         31 ;     THE FLAG IS CLEARED, THEN THE CURRENT LINE IS
                         32 ;     NOT SELF-SUFFICIENT. CONTINUE THIS PROCESS
                         33 ;     UNTIL A LINE IS DETERMINED SELF-SUFFICIENT
                         34 ;     (LINE FLAG NOT CLEARED).
                         35 ;
  004EF6: 4A00           36 GETLOR   TST.B   D0             ;TOP OF CRT?
  004EF8: 6712           37          BEQ     X2             ;GET STARTING ADR
                         38 ;
  004EFA: 5300           39 X1       SUBQ.B  #1,D0          ;CHK NXT LINE UP
  004EFC: 6706           40          BEQ     X1A
                         41 ;
  004EFE: 0102           42          BTST    D0,D2          ;SELF-SUFFICIENT?
  004F00: 67F8           43          BEQ     X1             ;CONTINUE SEARCH
                         44 ;
  004F02: 6004           45          BRA     X1B            ;GET STARTING ADR
                         46 ;
  004F04: 0102           47 X1A      BTST    D0,D2          ;TOP OF CRT?
  004F06: 6704           48          BEQ     X2             ;GET STARTING ADR
                         49 ;
                         50 ;
  004F08: 5200           51 X1B      ADDQ.B  #1,D0          ;GET CURRENT LINE
  004F0A: E308           52          LSL.B   #1,D0          ;ADJ FOR INDEX USE
  004F0C: 32740000       53 X2       MOVE.W  (A4,D0),A1     ;STARTING ADR
  004F10: E208           54          LSR.B   #1,D0          ;RESTORE LINE #
                         55 ;

                         57 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         58 ;
                         59 ; THIS SECTION GETS THE ENDING ADDR OF THE INPUT
                         60 ; LINE.  THIS IS DONE BY TAKING THE CURRENT LINE #
                         61 ; (IN REGISTER D1) AND CHECKING FOR A SET FLAG.
                         62 ; WHEN THE FLAG IS FOUND TO BE SET, THAT LINE IS
                         63 ; THEN DETERMINED TO BE SELF-SUFFICIENT.  THEN
                         64 ; THAT LINE IS SCANNED FOR THE FIRST OCCURANCE OF
                         65 ; A NON-BLANK CHARACTER.  THIS IS THEN CALLED THE
                         66 ; ENDING ADDRESS OF THE INPUT LINE.
                         67 ;
  004F12: 0302           68 GETUPR   BTST    D1,D2          ;LINE COMPLETE?
  004F14: 6604           69          BNE     Y1             ;IF YES GET ADR
  004F16: 5201           70          ADDQ.B  #1,D1          ;CHECK NEXT LINE
  004F18: 60F8           71          BRA     GETUPR         ;CONT FLAG CHECK
                         72 ;
                         73 ;
  004F1A: E309           74 Y1       LSL.B   #1,D1          ;ADJ FOR IND USE
  004F1C: 3C341000       75          MOVE.W  (A4,D1),D6     ;GET END ADR
  004F20: E209           76          LSR.B   #1,D1          ;RESTORE LINE #
  004F22: 06060027       77          ADDI.B  #39,D6         ;CRT WIDTH
  004F26: 7827           78          MOVEQ   #39,D4         ;LOOP COUNTER
                         79 ;
                         80 ;
  004F28: 4EB83A3C       81 LOOPJ    JSR     CMD5           ;READ CRT ADR
  004F2C: BE03           82          CMP.B   D3,D7          ;A BLANK?
  004F2E: 6628           83          BNE     Y2             ;THEN DO BUILD
                         84 ;
  004F30: 5306           85          SUBQ.B  #1,D6          ;ONE POS TO LEFT
  004F32: 51CCFFF4       86 Y1A      DBF     D4,LOOPJ       ;CONTINUE SEARCH
                         87 ;
  004F36: 5206           88          ADDQ.B  #1,D6          ;ADJUST ADR
  004F38: BC49           89          CMP.W   A1,D6          ;LOWER=UPPER?
  004F3A: 660A           90          BNE     Y1B            ;CHK LINE-1 FLG
  004F3C: 673E           91          BEQ     Y3B            ;ELSE <CR> - DONE
                         92 ;
  004F3E: 4A01           93          TST.B   D1             ;TOP OF CRT?
  004F40: 673A           94          BEQ     Y3B            ;THEN STOP SEARCH
                         95 ;
  004F42: 5301           96          SUBQ.B  #1,D1          ;GET NEXT LINE DN
  004F44: 60D4           97          BRA     Y1             ;GET LIN BASE ADR
                         98 ;
                         99 ;
  004F46: 5301          100 Y1B      SUBQ.B  #1,D1          ;NXT LINE UP
  004F48: 0302          101          BTST    D1,D2          ;FLAG CLEARED?
  004F4A: 6704          102          BEQ     Y1C            ;IF YES THEN SET
                        103 ;
  004F4C: 5201          104          ADDQ.B  #1,D1          ;ELSE <CR>
  004F4E: 602C          105          BRA     Y3B            ;THEN DONE
                        106 ;
  004F50: 03C2          107 Y1C      BSET    D1,D2          ;SET LINE FLAG
  004F52: 21C21546      108          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
  004F56: 60C2          109          BRA     Y1             ;GET ENDING ADR
                        110 ;

                        112 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        113 ;
                        114 ; THIS SECTION DOES THE ACTUAL BUILDING OF THE
                        115 ; INPUT BUFFER FROM INFORMATION FOUND.  IT USES
                        116 ; REG A1 AS THE STARTING INPUT LINE ADDRESS AND
                        117 ; REG D6 AS THE ENDING LINE INPUT ADDRESS (WHERE
                        118 ; THE FIRST NON-BLANK CHARACTER WAS FOUND).
                        119 ;
                        120 ;
  004F58: 3606          121 Y2       MOVE.W  D6,D3          ;SAVE END ADR
  004F5A: 1200          122          MOVE.B  D0,D1          ;BEGINNING LINE #
  004F5C: 3C09          123          MOVE.W  A1,D6          ;STARTING LN ADR
  004F5E: 7827          124 Y3       MOVEQ   #39,D4         ;LOOP COUNTER
                        125 ;
                        126 ;
  004F60: 4EB83A3C      127 LOOPK    JSR     CMD5           ;READ CRT ADR
  004F64: 10C7          128          MOVE.B  D7,(A0)+       ;BUILD BUFFER
  004F66: B646          129          CMP.W   D6,D3          ;LOWER=UPPER?
  004F68: 6712          130          BEQ     Y3B            ;THEN DONE
  004F6A: 5206          131          ADDQ.B  #1,D6          ;ONE POS TO RT
  004F6C: 51CCFFF2      132 Y3A      DBF     D4,LOOPK
                        133 ;
                        134 ; THIS SECTION GETS THE NEXT LINE DOWN'S BASE ADR
                        135 ;
  004F70: 5201          136          ADDQ.B  #1,D1          ;GET NEXT LINE DN
  004F72: E309          137          LSL.B   #1,D1          ;ADJ FOR INDEX USE
  004F74: 3C341000      138          MOVE.W  (A4,D1),D6     ;BASE ADR TO D6
  004F78: E209          139          LSR.B   #1,D1          ;RESTORE LINE #
  004F7A: 60E2          140          BRA     Y3             ;CONTINUE BUILD
                        141 ;
  004F7C: 4210          142 Y3B      CLR.B   (A0)           ;EOL MARKER
  004F7E: 4E75          143          RTS
                        144 ;
                        145 ;-----  SUBROUTINE;  SCROLL DOWN  -----
                        146 ;
                        147 ; TLINE = LINE TO BE SCROLLED DOWN
                        148 ; D2 = LINE FLAGS
                        149 ;
  004F80: 7217          150 SCRLDN   MOVEQ   #23,D1         ;D1 = 'THIS LINE'
  004F82: B238151D      151 SCRLDN1  CMP.B   TLINE,D1       ;TLINE = D1?
  004F86: 671C          152          BEQ     CLRTLIN        ;BRANCH IF EQ
                        153 ;
  004F88: 1001          154          MOVE.B  D1,D0
  004F8A: 5300          155          SUBQ.B  #1,D0          ;D0 = PREV LINE
  004F8C: 0102          156          BTST    D0,D2          ;PREV LINE FLG SET?
  004F8E: 6608          157          BNE     FLGSET         ;SKIP IF SO
                        158 ;
  004F90: 0382          159          BCLR    D1,D2          ;CLR THIS LINE FLG
  004F92: 21C21546      160          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
  004F96: 6002          161          BRA     FLGCLR         ;DO NOT SET FLAG
                        162 ;
  004F98: 03C2          163 FLGSET   BSET    D1,D2          ;SET THIS LINE FLAG
                        164 ;
  004F9A: 6126          165 FLGCLR   BSR     GETLINE        ;GET PREV LINE
  004F9C: 1001          166          MOVE.B  D1,D0          ;'THIS LINE' TO D0
  004F9E: 611C          167          BSR     SENDLIN        ;SEND THIS LINE
  004FA0: 5301          168          SUBQ.B  #1,D1          ;DECR 'THIS LINE'
  004FA2: 66DE          169          BNE     SCRLDN1        ;LOOP IF NOT ZERO
                        170 ;

                        172 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        173 ;
                        174 ; CLEAR THE LINE POINTED TO BY D1 ('THIS LINE')
                        175 ;
                        176 ; FIRST CLEAR THE LINE BUFFER
                        177 ;
  004FA4: 1001          178 CLRTLIN  MOVE.B  D1,D0          ;SET LINE POINTER
  004FA6: 7213          179 CLRLIN0  MOVEQ   #19,D1         ;SET FOR 20 WORDS
  004FA8: 387C1600      180          MOVE.W  #LINBUF,A4     ;PTR TO LINE BUFF
  004FAC: 38FCA0A0      181 CLRLIN1  MOVE.W  #$A0A0,(A4)+   ;STORE TWO SPACES
  004FB0: 51C9FFFA      182          DBF     D1,CLRLIN1     ;LOOP 20 TIMES
                        183 ;
                        184 ; THE CLEARED LINE IS SELF-SUFFICIENT
                        185 ;
  004FB4: 01C2          186          BSET    D0,D2          ;SET SELF-SUFF FLG
  004FB6: 21C21546      187          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
  004FBA: 4E75          188          RTS                    ;SCROLL COMPLETED
                        189 ;
                        190 ;-----  SUBROUTINE;  SEND A LINE TO HOST  -----
                        191 ;
                        192 ;  D0 = # OF LINE TO BE SENT
                        193 ;  LINBUF = LINE DATA TO BE SENT
                        194 ;  RETAIN D0, D1, D2, D3
                        195 ;
  004FBC: 610A          196 SENDLIN  BSR     LSETUP         ;SETUP LINE PARMS
  004FBE: 4EF83A48      197          JMP     CMD8           ;EXIT VIA CMD 8
                        198 ;
                        199 ;-----  SUBROUTINE;  GET A LINE FROM HOST  -----
                        200 ;
                        201 ;  D0 = # OF LINE TO BE FETCHED
                        202 ;  LINBUF = LINE DATA DESTINATION
                        203 ;  RETAIN D0, D1, D2, D3
                        204 ;
  004FC2: 6104          205 GETLINE  BSR     LSETUP         ;SET UP PARMS
  004FC4: 4EF83A44      206          JMP     CMD7           ;EXIT VIA CMD7
                        207 ;
                                     CHAIN   SCR4

                          2 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          3 ;
                          4 ; SUBR;  SET UP THE PARMS FOR GETLINE OR SENDLIN
                          5 ;
                          6 ;  D0 = # OF LINE
                          7 ;  A4 = LINE ADR IN 68000 MEMORY
                          8 ;  D6 = LINE ADR IN HOST
                          9 ;  D4 = CHARACTER COUNT
                         10 ;
  004FC8: 4246           11 LSETUP   CLR.W   D6             ;CLEAR SCRATCH REG
  004FCA: 1C00           12          MOVE.B  D0,D6
  004FCC: DC00           13          ADD.B   D0,D6          ;D6 = 2 X LINE #
  004FCE: 387C2080       14          MOVE.W  #TBLA,A4       ;LIN ADR TBL TO A4
  004FD2: 3C346000       15          MOVE.W  (A4,D6.W),D6   ;LINE ADR TO D6
  004FD6: 3A7C1600       16          MOVE.W  #LINBUF,A5     ;LINE BUFFER PTR
  004FDA: 7828           17          MOVEQ   #40,D4         ;SET FOR 40 CHARS
  004FDC: 4E75           18          RTS                    ;RETURN
                         19 ;
                         20 ; SUBROUTINE;  INSERT A SPACE IN A LINE
                         21 ;
                         22 ;  D0 = # OF LINE
                         23 ;  D3 = # OF COLUMN
                         24 ;
  004FDE: 61E2           25 CINS     BSR     GETLINE        ;FETCH CURRENT LINE
  004FE0: 7228           26          MOVEQ   #40,D1         ;D1 = # OF COLUMNS
  004FE2: 307C1628       27          MOVE.W  #LINBUF+40,A0  ;PTR A0 TO END +1
                         28 ;
  004FE6: 2848           29 CINS1    MOVE.L  A0,A4          ;A4 = DESTINATION
  004FE8: 18A0           30          MOVE.B  -(A0),(A4)     ;MOVE A BYTE FWD
  004FEA: 5301           31          SUBQ.B  #1,D1          ;DECR COL POS
  004FEC: B203           32          CMP.B   D3, D1         ;LAST BYTE MOVED?
  004FEE: 66F6           33          BNE     CINS1          ;LOOP IF NOT
                         34 ;
  004FF0: 4E75           35          RTS                    ;RETURN
                         36 ;
                         37 ; SUBROUTINE;  DELETE A CHAR FROM A LINE
                         38 ;
                         39 ;  D0 = # OF LINE
                         40 ;  D3 = # OF COLUMN
                         41 ;
  004FF2: 61CE           42 CDEL     BSR     GETLINE        ;FETCH CURRENT LINE
  004FF4: 383C1600       43          MOVE.W  #LINBUF,D4     ;START OF BUFFER
  004FF8: D803           44          ADD.B   D3,D4          ;ADD CURSOR POS'N
  004FFA: 3044           45          MOVE.W  D4,A0          ;A0 PTS TO CURPOS
  004FFC: 5244           46          ADDQ.W  #1,D4          ;INCR PTR
  004FFE: 3844           47          MOVE.W  D4,A4          ;A4 PTS TO NEXT CH
                         48 ;
  005000: 0C030027       49 CDEL1    CMPI.B  #39,D3         ;END OF LINE?
  005004: 6706           50          BEQ     CDEL2          ;SKIP IF END
  005006: 10DC           51          MOVE.B  (A4)+,(A0)+    ;DELETE 1 CHAR
  005008: 5203           52          ADDQ.B  #1,D3          ;INCR COLUMN POS
  00500A: 60F4           53          BRA     CDEL1          ;REPEAT
                         54 ;
  00500C: 11FC00A01627   55 CDEL2    MOVE.B  #$A0,LINBUF+39  ;SPACE TO LAST POS
  005012: 4E75           56          RTS                    ;RETURN
                         57 ;

                         59 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         60 ;
                         61 ;------------------------------------------------
                         62 ;          SCREEN EDITOR INSERT ROUTINE
                         63 ;------------------------------------------------
                         64 ;
  005014: 4EB83A54       65 CINSERT  JSR     CLRCSR         ;CLEAR THE CURSOR
  005018: 10381540       66          MOVE.B  LINE,D0        ;D0 = LINE PTR
  00501C: 16381542       67          MOVE.B  COLUMN,D3      ;D3 = COLUMN PTR
  005020: 61BC           68          BSR     CINS           ;INSERT SPACE
  005022: 10BC0060       69          MOVE.B  #$60,(A0)      ;(SETS CURSOR)
  005026: 6194           70 CINSER1  BSR     SENDLIN        ;RETN LINE TO HOST
  005028: 11F81628151C   71          MOVE.B  LINBUF+40,TBUFF  ;SAVE LAST CHAR
                         72 ;
  00502E: 0102           73          BTST    D0,D2          ;LINE SELF-SUFF?
  005030: 6614           74          BNE     SELSUF         ;SKIP IF SO
                         75 ;
                         76 ; THIS LINE NOT SELF-SUFFICIENT; WRAP CHAR AROUND
                         77 ;
  005032: 5200           78          ADDQ.B  #1,D0          ;INCR LINE PTR
  005034: 0C000018       79          CMPI.B  #24,D0         ;OFF SCREEN?
  005038: 670A           80          BEQ     CRTS           ;EXIT IF OFF SCREEN
                         81 ;
  00503A: 4243           82          CLR     D3             ;CURSOR POS ZERO
  00503C: 61A0           83          BSR     CINS           ;SHIFT LINE OVER
  00503E: 10B8151C       84          MOVE.B  TBUFF,(A0)     ;CHAR WRAP-AROUND
  005042: 60E2           85          BRA     CINSER1        ;CHECK THIS LINE
                         86 ;
  005044: 4E75           87 CRTS     RTS                    ;INSERT COMPLETED
                         88 ;
                         89 ; THE LINE IS SELF-SUFFICIENT.
                         90 ; IS THE LAST CHAR A SPACE?
                         91 ;
  005046: 0C3800A0151C   92 SELSUF   CMPI.B  #$A0,TBUFF     ;LAST CHAR SPACE?
  00504C: 67F6           93          BEQ     CRTS           ;DONE IF SO
                         94 ;
                         95 ; CLEAR 'SELF-SUFF' FLAG FOR THIS LINE AND SCROLL
                         96 ; THE NEXT LINE DOWN;  THEN DO WRAP-AROUND AND
                         97 ; RETURN THE NEXT LINE TO THE HOST.
                         98 ;
  00504E: 0182           99          BCLR    D0,D2          ;CLR LINE FLAG
  005050: 21C21546      100          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
  005054: 5200          101          ADDQ.B  #1,D0          ;INCR LINE PTR
  005056: 0C000018      102          CMPI.B  #24,D0         ;OFF SCREEN?
  00505A: 67E8          103          BEQ     CRTS           ;DONE IF OFF
                        104 ;
  00505C: 11C0151D      105          MOVE.B  D0,TLINE       ;'THIS LINE' PTR
  005060: 4EB84F80      106          JSR     SCRLDN         ;SCROLL CRT DOWN
  005064: 11F8151C1600  107          MOVE.B  TBUFF,LINBUF   ;DO WRAP-AROUND
  00506A: 1038151D      108          MOVE.B  TLINE,D0       ;PTR TO 'THISLINE'
  00506E: 4EF84FBC      109          JMP     SENDLIN        ;EXIT, SENDING LINE
                        110 ;

                        112 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        113 ;
                        114 ;------------------------------------------------
                        115 ;          SCREEN EDITOR DELETE ROUTINE
                        116 ;------------------------------------------------
                        117 ;
  005072: 10381540      118 CDELETE  MOVE.B  LINE,D0        ;D0 = LINE PTR
  005076: 16381542      119          MOVE.B  COLUMN,D3      ;D3 = COLUMN PTR
  00507A: 4EB84FF2      120          JSR     CDEL           ;DELETE CHAR
  00507E: 4EB84FBC      121 CDELET0  JSR     SENDLIN        ;RETURN THE LINE
  005082: 4EB83A50      122          JSR     SETCSR         ;SET THE CURSOR
  005086: 0102          123          BTST    D0,D2          ;LINE SELF-SUFF?
  005088: 6608          124          BNE     DRTS           ;RETURN IF SO
                        125 ;
                        126 ; THE LINE IS NOT SELF-SUFFICIENT;  SERVICE THE
                        127 ; FOLLOWING LINES UNLESS AT LAST LINE OF SCREEN.
                        128 ;
  00508A: 5200          129 CDELET1  ADDQ.B  #1,D0          ;INCR LINE PTR
  00508C: 0C000018      130          CMPI.B  #24,D0         ;OFF SCREEN?
  005090: 6602          131          BNE     CDELET2        ;SKIP IF NOT OFF
                        132 ;
  005092: 4E75          133 DRTS     RTS                    ;RETURN
                        134 ;
                        135 ; NOT LAST LINE; DO REVERSE WRAP-AROUND IF NEEDED
                        136 ;
  005094: 4EB84FC2      137 CDELET2  JSR     GETLINE        ;GET NEXT LINE
  005098: 0C3800A01600  138          CMP.B   #$A0,LINBUF    ;1ST CHAR SPACE?
  00509E: 671C          139          BEQ     CDELET3        ;SKIP IF SPACE
                        140 ;
  0050A0: 5300          141          SUBQ.B  #1,D0          ;PTR TO LAST LINE
  0050A2: 4EB84FC8      142          JSR     LSETUP         ;SET UP PARMS
  0050A6: 06460027      143          ADD.W   #39,D6         ;LAST COLUMN
  0050AA: 7801          144          MOVEQ   #1,D4          ;COUNT = 1 CHAR
  0050AC: 4EB83A48      145          JSR     CMD8           ;SEND THE CHAR
  0050B0: 0C030027      146          CMPI.B  #39,D3         ;CSR OVER-WRITE?
  0050B4: 6604          147          BNE     ADDD0          ;SKIP IF NOT
                        148 ;
  0050B6: 4EB83A50      149          JSR     SETCSR         ;RESET THE CURSOR
  0050BA: 5200          150 ADDD0    ADDQ.B  #1,D0          ;RESTORE LINE PTR
                        151 ;
                        152 ; FIRST SHIFT THE LINE LEFT AND THEN TEST WHETHER
                        153 ; THE LINE IS SELF-SUFFICIENT.
                        154 ;
  0050BC: 4243          155 CDELET3  CLR     D3             ;SET COLUMN POS 0
  0050BE: 4EB84FF2      156          JSR     CDEL           ;SHIFT LINE LEFT
  0050C2: 0102          157          BTST    D0,D2          ;LINE SELF-SUFF?
  0050C4: 67B8          158          BEQ     CDELET0        ;SKIP BACK IF NOT
                        159 ;
                        160 ; TEST WHETHER THE LINE IS CLEAR (ALL SPACES).
                        161 ;
  0050C6: 4EB84FC8      162          JSR     LSETUP         ;D4 COUNT, A4 PTR
                        163 ;
  0050CA: 0C1C00A0      164 CDELET4  CMPI.B  #$A0,(A4)+     ;SPACE?
  0050CE: 66AE          165          BNE     CDELET0        ;SKIP IF NOT SPACE
                        166 ;
  0050D0: 5304          167          SUBQ.B  #1,D4          ;DECR CHAR COUNT
  0050D2: 66F6          168          BNE     CDELET4        ;LOOP IF NOT ZERO
                        169 ;

                        171 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        172 ;
                        173 ; THE LINE IS CLEAR (ALL SPACES);  MARK THE
                        174 ; PRECEDING LINE AS SELF-SUFFICIENT AND PULL UP ALL
                        175 ; REMAINING LINES ON THE SCREEN AND PLACE A SELF-
                        176 ; SUFFICIENT BLANK LINE AT THE END OF THE SCREEN.
                        177 ;
  0050D4: 5300          178          SUBQ.B  #1,D0          ;PTR TO LAST LINE
  0050D6: 01C2          179 DFLGSET  BSET    D0,D2          ;SET SELF-SUF FLG
  0050D8: 21C21546      180          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
                        181 ;
  0050DC: 5400          182 CDELET5  ADDQ.B  #2,D0          ;PTR TO NEXT LINE
  0050DE: 0C000018      183          CMPI.B  #24,D0         ;OFF SCREEN?
  0050E2: 6718          184          BEQ     CLRLAST        ;SKIP IF OFF SCREEN
                        185 ;
  0050E4: 4EB84FC2      186          JSR     GETLINE        ;FETCH A LINE
  0050E8: 1200          187          MOVE.B  D0,D1          ;SAVE LINE PTR
  0050EA: 5300          188          SUBQ.B  #1,D0          ;PTR TO PREV LINE
  0050EC: 4EB84FBC      189          JSR     SENDLIN        ;SEND THE LINE
  0050F0: 0302          190          BTST    D1,D2          ;LINE FLAG SET?
  0050F2: 66E2          191          BNE     DFLGSET        ;SKIP IF SO
                        192 ;
  0050F4: 0182          193          BCLR    D0,D2          ;CLR PREV LINE FLG
  0050F6: 21C21546      194          MOVE.L  D2,SSFFLGS     ;KEEP A COPY
  0050FA: 60E0          195          BRA     CDELET5        ;SCROLL NEXT LINE
                        196 ;
                        197 ; CLR THE LAST LINE (ALL SPACES) AND SET LINE FLAG
                        198 ;
  0050FC: 7017          199 CLRLAST  MOVEQ   #23,D0         ;PTR TO LAST LINE
  0050FE: 4EB84FA6      200          JSR     CLRLIN0        ;CLR BUF, SET FLG
  005102: 4EF84FBC      201          JMP     SENDLIN        ;EXIT, SENDING LINE
                        202 ;
                                     CHAIN   LIBR1

                          2          LIST
                          3 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          4 ;
                          5 ;        ************
                          6 ;        *          *
                          7 ;        * LIBRARY1 *
                          8 ;        *          *
                          9 ;        ************
                         10 ;
                         11 ;
                         12 ;------------------------
                         13 ;-- SUBROUTINE: CHKLST --
                         14 ;------------------------
                         15 ;
                         16 ; THIS SUBROUTINE PERFORMS A SEARCH FOR A MATCHING
                         17 ; STRING TO A SEARCH KEY GIVEN BY THE CALLER.
                         18 ; THE SEARCH IS DONE BY DOING A TABLE LOOKUP.
                         19 ; IF THE SEARCH KEY IS NOT IN THE TABLE THEN BIT 0
                         20 ; OF 'D7' IS CLEARED.  THIS CAN BE USED BY THE
                         21 ; CALLER TO DETERMINE THE NEXT APPROPRIATE ACTION.
                         22 ;
                         23 ; REGISTER ASSIGNMENTS:
                         24 ;
                         25 ; A6: SHOULD CONTAIN THE STARTING ADDRESS OF THE
                         26 ;     SEARCH KEY.
                         27 ;
                         28 ; A2: SHOULD CONTAIN THE STARTING ADDRESS OF THE
                         29 ;     TABLE IN QUESTION.  EACH ENTRY IN THE TABLE
                         30 ;     SHOULD BE PRECEEDED BY A BYTE WHICH GIVES
                         31 ;     THE LENGTH OF THE ENTRY.
                         32 ;
                         33 ; D5: SHOULD CONTAIN THE LENGTH OF THE SEARCH KEY
                         34 ;
                         35 ;       <RESULTS>
                         36 ;
                         37 ; D3: SHOULD CONTAIN THE ENTRY'S INDEX IF FOUND
                         38 ;
                         39 ; D7: CONTAINS A '1' IF SEARCH WAS SUCCESSFUL
                         40 ;     CONTAINS A '0' IF SEARCH WAS UNSUCCESSFUL
                         41 ;
                         42 ; 1ST) SET UP WORK AREA NEED FOR THE ROUTINE.
                         43 ;
                         44 ; 2ND) START LOOKING ONLY AT THOSE ENTRIES THAT
                         45 ;      HAVE THE SAME LENGTH.
                         46 ;      IF A MATCHING LENGTH IS FOUND THEN SAVE THE
                         47 ;      CURRENT TABLE POSITION AND SEARCH KEY INFOR-
                         48 ;      MATION AND THEN EXAMINE ENTRY FOR A MATCH.
                         49 ;
                         50 ; 3RD) IF A NO MATCH FOUND THEN RESTORE THE SEARCH
                         51 ;      INFORMATION AND EXAMINE THE NEXT ENTRY.
                         52 ;
                         53 ; 4TH) IF SEARCH WAS UNSUCCESSFUL THEN CLEAR THE
                         54 ;      BYTE IN 'D7' TO INDICATE THAT THE KEY WAS
                         55 ;      NOT FOUND IN THE TABLE.
                         56 ;

                         58 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         59 ;
  005106: 324E           60 CHKLIST  MOVE.W  A6,A1          ;A1 = SCRATCH
  005108: 1005           61          MOVE.B  D5,D0          ;D0 = CTR
  00510A: 4242           62          CLR.W   D2             ;WORK AREA
  00510C: 4283           63          CLR.L   D3             ;WORK AREA
  00510E: 7E01           64          MOVEQ   #1,D7          ;SET COND FLAG
  005110: 1412           65 CHKA     MOVE.B  (A2),D2        ;GET  LENGTH
                         66 ;
  005112: 6732           67          BEQ     CHKD           ;THEN DONE
                         68 ;
  005114: B012           69          CMP.B   (A2),D0        ;ARE KEY LEN =?
  005116: 6708           70          BEQ     CHKIT          ;THEN EXAMINE TBL
                         71 ;
  005118: 45F22001       72 NXTCHK   LEA     $1(A2,D2),A2   ;GET NEXT STR ADR
  00511C: 5243           73          ADDQ.W  #1,D3          ;INC TBL INDEX
  00511E: 60F0           74          BRA     CHKA           ;CONTINUE CHECK
                         75 ;
  005120: 21C91912       76 CHKIT    MOVE.L  A1,FPT         ;SAVE PTRS
  005124: 21CA1916       77          MOVE.L  A2,FPT+4
  005128: 11C0191C       78          MOVE.B  D0,FPU+2       ;SAVE LENGTH
  00512C: 524A           79          ADDQ.W  #1,A2          ;ADJUST PTR
                         80 ;
  00512E: B509           81 CHKA2    CMPM.B  (A1)+,(A2)+    ;MATCH?
  005130: 6606           82          BNE     CHKB           ;NEXT STRING
                         83 ;
  005132: 5300           84          SUBQ.B  #1,D0          ;DECR CHAR COUNT
  005134: 66F8           85          BNE     CHKA2          ;NEXT CHAR
                         86 ;
  005136: 6010           87          BRA     CHKX           ;STR FOUND
                         88 ;
  005138: 22781912       89 CHKB     MOVEA.L FPT,A1         ;RESTORE PTR
  00513C: 24781916       90          MOVEA.L FPT+4,A2       ;RESTORE PTR
  005140: 1038191C       91          MOVE.B  FPU+2,D0       ;RESTORE LEN
  005144: 60D2           92          BRA     NXTCHK         ;CONTINUE CHK
                         93 ;
  005146: 4207           94 CHKD     CLR.B   D7             ;SET ERR FLAG
  005148: 4A07           95 CHKX     TST.B   D7             ;SET FLAGS
  00514A: 4E75           96          RTS                    ;CHKLIST DONE
                         97 ;

                         99 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        100 ;
                        101 ;-----------------------
                        102 ;-- SUBROUTINE: CHKLN --
                        103 ;-----------------------
                        104 ;
                        105 ; CONVERT A LINE NUMBER TO BINARY AND CHK LIMIT
                        106 ;
                        107 ; D5 = LENGTH OF LINE NUMBER IN ASCII DIGITS
                        108 ; D1 = THE RESULT IN BINARY
                        109 ;
  00514C: 0C050005      110 CHKLN    CMPI.B  #5,D5          ;OVER 5 DIGITS ?
  005150: 622C          111          BHI     BCDERR         ;IF YES
                        112 ;
  005152: 610A          113          BSR     BCDBIN         ;CONV TO BIN
  005154: 0C810000FFFE  114          CMPI.L  #$0000FFFE,D1  ;TOO HIGH ?
  00515A: 6222          115          BHI     BCDERR         ;IF YES
                        116 ;
  00515C: 4E75          117          RTS                    ;CONVERSION DONE
                        118 ;
                        119 ;------------------------
                        120 ;-- SUBROUTINE: BCDBIN --
                        121 ;------------------------
                        122 ;
                        123 ; THIS SUBROUTINE CONVERTS BCD TO BINARY.
                        124 ;
                        125 ; D5 = LENGTH OF THE BCD NUMBER
                        126 ; A6 = PTR TO START OF BCD NUMBER
                        127 ;
  00515E: 384E          128 BCDBIN   MOVEA.W A6,A4          ;STRT OF LIN #
  005160: 4281          129          CLR.L   D1             ;WORK AREA
  005162: 4282          130          CLR.L   D2             ;WORK AREA
  005164: 1805          131          MOVE.B  D5,D4          ;COUNTER
  005166: 6008          132          BRA     BCDA           ;SKIP MULT
                        133 ;
  005168: D281          134 BCDLP    ADD.L   D1,D1          ;2X
  00516A: 2601          135          MOVE.L  D1,D3
  00516C: E58B          136          LSL.L   #2,D3          ;8X=2X * 4
  00516E: D283          137          ADD.L   D3,D1          ;10X = 8X + 2X
                        138 ;
  005170: 141C          139 BCDA     MOVE.B  (A4)+,D2       ;NEXT BCD #
  005172: 0202000F      140          ANDI.B  #$0F,D2        ;REMOVE HI NIBBLE
  005176: D282          141          ADD.L   D2,D1          ;ADD NEXT #
  005178: 5304          142          SUBQ.B  #1,D4          ;DECR COUNT
  00517A: 66EC          143          BNE     BCDLP          ;UNTIL ZERO
  00517C: 4E75          144          RTS                    ;DONE
                        145 ;
  00517E: 7E02          146 BCDERR   MOVEQ   #2,D7          ;LINE # ERROR
  005180: 4EF86008      147          JMP     ERROR          ;REPORT ERROR
                        148 ;

                        150 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        151 ;
                        152 ;-----------------------
                        153 ;-- SUBROUTINE: SRCH1 --
                        154 ;-----------------------
                        155 ;
                        156 ; THIS SUBROUTINE PERFORMS A LINEAR SEARCH
                        157 ; FOR WORD SIZE SEARCH KEYS.
                        158 ;
                        159 ; A4: CONTAINS THE STARTING ADDRESS OF THE LIST
                        160 ;
                        161 ; D1: CONTAINS THE SEARCH KEY
                        162 ;
                        163 ;   <RESULT>
                        164 ;
                        165 ; MADR: IS THE ADDRESS OF THE SEARCH ITEM FOUND
                        166 ;       IN THE TABLE.
                        167 ;
                        168 ;       IF THE SEARCH FAILS THE 'MADR' WILL BE A
                        169 ;       ZERO ADDRESS ($0000).
                        170 ;
                        171 ; D7: CONTAINS THE CONDITION FLAG.
                        172 ;     1 IN D7 = SEARCH ITEM FOUND
                        173 ;     0 IN D7 = SEARCH ITEM NOT FOUND
                        174 ;
  005184: 4243          175 SRCH1    CLR.W   D3             ;INIT INDEX
  005186: 7E01          176          MOVEQ   #1,D7          ;SET COND FLAG
  005188: 3838154C      177          MOVE.W  NLINES,D4      ;# OF LINE #S
  00518C: 28781588      178          MOVEA.L SOLN,A4        ;LINE NUMBER TBL
  005190: 600C          179          BRA     SRCHB          ;START SEARCH
                        180 ;
  005192: 3414          181 SRCHA    MOVE.W  (A4),D2        ;LIST ITEM
  005194: B242          182          CMP.W   D2,D1          ;KEY=ITEM?
  005196: 670E          183          BEQ     SRCHC          ;IF YES
  005198: 6508          184          BCS     SRCHB1         ;KEY LESS THAN
                        185 ;
                        186 ;  <ELSE ADD 1 TO INDEX AND ADJUST LIST ADDRESS>
                        187 ;
  00519A: 5243          188          ADDQ    #1,D3          ;UPDATE INDEX
  00519C: 544C          189          ADDQ    #2,A4          ;ADJUST ADR
                        190 ;
  00519E: 51CCFFF2      191 SRCHB    DBF     D4,SRCHA       ;CONTINUE
                        192 ;
                        193 ;   <SEARCH ITEM NOT FOUND>
                        194 ;
  0051A2: 4207          195 SRCHB1   CLR.B   D7             ;SET COND FLAG
  0051A4: 4E75          196          RTS                    ;DONE
                        197 ;
  0051A6: 21CC150C      198 SRCHC    MOVE.L  A4,MADR        ;SAVE ADR
  0051AA: 4E75          199          RTS                    ;DONE
                        200 ;

                        202 ;-------------------------
                        203 ;-- SUBROUTINE: EXPAND0 --
                        204 ;-------------------------
                        205 ;
                        206 ; A2: CONTAINS THE START OF EXPANSION
                        207 ; D5: CONTAINS THE NUMBER OF BYTES TO EXPAND BY
                        208 ;
                        209 ; THIS ROUTINE IS USED TO ADJUST THE HALGOL TBLS
                        210 ; AND UPDATES THE HALGOL 'POINTER TABLE'
                        211 ;
  0051AC: 48E7FFFE      212 EXPAND0  MOVEM.L A0-A6/D0-D7,-(A7)  ;SAVE REGISTER
                        213 ;
                        214 ; SHIFT HALGOL MEMORY BLOCK & ADJUST TABLES ADRS
                        215 ;
  0051B0: 28781556      216          MOVEA.L EOBLCK,A4      ;END OF MEMORY
  0051B4: 02850000FFFF  217          ANDI.L  #$0000FFFF,D5  ;CLR UPPER WORD
  0051BA: E34D          218          LSL.W   #1,D5          ;BYTE->WORD CNT
  0051BC: 49F45000      219          LEA     (A4,D5),A4     ;DEST ADR
  0051C0: 4BF45000      220          LEA     (A4,D5),A5     ;SOURCE ADR
                        221 ;
                        222 ; SAVE THE NEW ENDING BLOCK ADDRESS
                        223 ;
  0051C4: 21CC1556      224          MOVE.L  A4,EOBLCK      ;SAVE NEW END ADR
                        225 ;
                        226 ; CALCULATE THE AMOUNT THAT NEEDS TO BE SHIFTED
                        227 ;
  0051C8: 200C          228          MOVE.L  A4,D0          ;GET RDY FOR CALC
  0051CA: 908A          229          SUB.L   A2,D0          ;AMT TO SHIFT BY
  0051CC: E288          230          LSR.L   #1,D0          ;BYTE->WORD CNT
                        231 ;
  0051CE: 5380          232 EXPANA   SUBQ.L  #1,D0          ;UPDATE COUNT
  0051D0: 6B04          233          BMI     EXPANA0        ;IF SHIFT DONE
                        234 ;
  0051D2: 3B24          235          MOVE.W  -(A4),-(A5)    ;MOVE TO NEXT ADR
  0051D4: 60F8          236          BRA     EXPANA         ;CONT 'TIL DONE
                        237 ;
                        238 ; ADJUST TABLES AFFECTED BY TABEL EXPANSION
                        239 ;
                        240 ; 1ST) SEARCH THE POINTER-TABLE FOR A MATCHING ADR
                        241 ;      OR ADR GREATER THAN THE INSERT ADR
                        242 ; 2ND) ADJ THE POINTER-TBL BY THE AMOUNT IN 'D5'
                        243 ;
  0051D6: 6118          244 EXPANA0  BSR     FINDADR        ;FIND TBL END ADR
                        245 ;
                        246 ; ADJUST ALL POINTERS STARTING AFTER THE ADR 'A2'
                        247 ;
  0051D8: 780E          248          MOVEQ   #14,D4         ;# OF TBLS - 1
  0051DA: 9843          249          SUB.W   D3,D4          ;# OF TBLS TO ADJ
  0051DC: 6004          250          BRA     EXPANB         ;START ADJUSTING
                        251 ;
  0051DE: DB9E          252 EXPNLP2  ADD.L   D5,(A6)+       ;ADJ START ADR
  0051E0: DB9E          253          ADD.L   D5,(A6)+       ;ADJ END ADR
  0051E2: 51CCFFFA      254 EXPANB   DBF     D4,EXPNLP2     ;CONT PROCESS
                        255 ;
                        256 ; UPDATE THE WORD COUNT TO REFLECT THE NEW
                        257 ; WORDS THAT WERE JUST ADDED TO THE MEMORY-FRAM
                        258 ;
  0051E6: DBB8155A      259          ADD.L   D5,CDESIZE     ;ADJ MEMORY USE
                        260 ;
  0051EA: 4CDF7FFF      261          MOVEM.L (A7)+,A0-A6/D0-D7  ;RESTORE REG
  0051EE: 4E75          262          RTS                    ;TBL ADJ DONE
                        263 ;

                        265 ;------------------------
                        266 ;-- SUBROUTINE: FINADR --
                        267 ;------------------------
                        268 ;
  0051F0: 4DF81580      269 FINDADR  LEA     SOH,A6         ;START OF TBLS
  0051F4: 781A          270          MOVEQ   #26,D4         ;2*(# OF TBLS-1)
  0051F6: 4243          271          CLR.W   D3             ;INIT ADR INDEX
                        272 ;
  0051F8: B5DE          273 FNDLP    CMPA.L  (A6)+,A2       ;END ADR FOUND?
  0051FA: 630C          274          BLS     FINDADX        ;CHK NEXT TBL ADR
  0051FC: 5243          275          ADDQ.W  #1,D3          ;UPDATE ADR INDX
  0051FE: 51CCFFF8      276          DBF     D4,FNDLP       ;CONT SEARCH
                        277 ;
                        278 ; SEARCH HAS BEEN EXHAUSTED. ADR NOT FOUND - ERR
                        279 ;
  005202: 7E00          280          MOVEQ   #0,D7          ;ERROR NUMBER
  005204: 4EF86008      281          JMP     ERROR          ;REPORT & EXIT
                        282 ;
  005208: E24B          283 FINDADX  LSR.W   #1,D3          ;ADJUST AMOUNT
  00520A: 4E75          284          RTS                    ;SEARCH DONE
                        285 ;
                        286 ;------------------------
                        287 ;-- SUBROUTINE: INSERT --
                        288 ;------------------------
                        289 ;
                        290 ; THIS ROUTINE IS USED TO INSERT LINE NUMBERS IN
                        291 ; THE 'LINE NUMBER' TABLE.
                        292 ;
                        293 ; A4: CONTAINS THE END OF THE TABLE BEING UPDATED
                        294 ; A2: CONTAINS THE INSERTION ADR
                        295 ; D4: CONTAINS THE WORD BEING INSERTED
                        296 ; D2: CONTAINS THE NUMBER OF WORDS BEING INSERTED
                        297 ;
                        298 ;    <RESULT>
                        299 ;
                        300 ; D2: WILL CONTAIN THE NEW LIST 'LOW' ADDRESS
                        301 ;
  00520C: 2A02          302 INSERT   MOVE.L  D2,D5          ;EXPANSION AMT
  00520E: 4EB851AC      303          JSR     EXPAND0        ;EXPAND MEM BLOCK
  005212: 3484          304          MOVE.W  D4,(A2)        ;STORE NEW LINE #
  005214: 4E75          305          RTS                    ;DONE
                        306 ;
                        307 ;---------------------
                        308 ;-- ROUTINE: EXPAND --
                        309 ;---------------------
                        310 ;
                        311 ; THIS SUBROUTINE IS USED TO EXPAND THE OBJECT
                        312 ; FILE BY THE NUMBER OF WORDS IN D2.
                        313 ;
                        314 ; A4: CONTAINS THE ENDING ADDRESS
                        315 ; A2: CONTAINS THE STARTING ADDRESS OF EXPANSION
                        316 ;
                        317 ; RESULT:  A1 = THE NEW ENDING ADR
                        318 ;
  005216: 2A02          319 EXPAND   MOVE.L  D2,D5          ;EXPANSION AMT
  005218: 4EB851AC      320          JSR     EXPAND0        ;EXPAND MEM BLOCK
  00521C: E34A          321          LSL.W   #1,D2          ;ADJ COUNT
  00521E: 4EB852E4      322          JSR     LBLADJU        ;ADJ LABEL'S ADR
  005222: 43F42000      323          LEA     (A4,D2),A1     ;NEW ENDING ADR
  005226: 4E75          324          RTS                    ;DONE
                        325 ;
                                     CHAIN   LIBR2

                          2 ;-------------------------------
                          3 ;-- SUBROUTINE: INTEGER PRINT --
                          4 ;-------------------------------
                          5 ;
                          6 ; 'ACTIVE' IS THE ACTIVE OUTPUT DEVICE SELECTED
                          7 ;
  005228: 2A7820BC        8 IPRINT1  MOVE.L  ACTIVE,A5      ;SET I/O DEVICE
  00522C: 3401            9          MOVE.W  D1,D2          ;TEST FOR ZERO
  00522E: 6606           10          BNE     IPR11          ;SKIP IF NOT 0
                         11 ;
  005230: 7EB0           12          MOVEQ   #$B0,D7        ;ZERO TO D7
  005232: 4E95           13          JSR     (A5)           ;PRINT & EXIT
  005234: 6022           14          BRA     IPR61          ;EXIT
                         15 ;
  005236: 7009           16 IPR11    MOVEQ   #$09,D0
  005238: 347C525E       17          MOVE.W  #BATBL1,A2
                         18 ;
  00523C: 5300           19 IPR21    SUBQ.B  #$01,D0
  00523E: 2A1A           20          MOVE.L  (A2)+,D5
  005240: B285           21          CMP.L   D5,D1
  005242: 65F8           22          BCS     IPR21
  005244: 6002           23          BRA     IPR41
                         24 ;
  005246: 2A1A           25 IPR31    MOVE.L  (A2)+,D5
                         26 ;
  005248: 7EAF           27 IPR41    MOVEQ   #$AF,D7
                         28 ;
  00524A: 5207           29 IPR51    ADDQ.B  #$01,D7
  00524C: 9285           30          SUB.L   D5,D1
  00524E: 64FA           31          BCC     IPR51
                         32 ;
  005250: D285           33          ADD.L   D5,D1
  005252: 4E95           34          JSR     (A5)           ;PRINT IT
  005254: 51C8FFF0       35          DBF     D0,IPR31
                         36 ;
  005258: 1E3C00A0       37 IPR61    MOVE.B  #$A0,D7        ;SPACE
  00525C: 4ED5           38          JMP     (A5)           ;PRINT & EXIT
                         39 ;
                         40 ;-------------------------------------
                         41 ;-- CONVERSION TABLE USED IN IPRINT --
                         42 ;-------------------------------------
                         43 ;
  00525E: 05F5E100       44 BATBL1   DC.L    $05F5E100
  005262: 00989680       45          DC.L    $00989680
  005266: 000F4240       46          DC.L    $000F4240
  00526A: 000186A0       47          DC.L    $000186A0
  00526E: 00002710       48 IBATBL1  DC.L    $00002710
  005272: 000003E8       49          DC.L    $000003E8
  005276: 00000064       50          DC.L    $00000064
  00527A: 0000000A       51          DC.L    $0000000A
  00527E: 00000001       52          DC.L    $00000001
                         53 ;

                         55 ;------------------------
                         56 ;-- SUBROUTINE: DELETE --
                         57 ;------------------------
                         58 ;
                         59 ; THIS ROUTINE IS USED TO DELETE A LINE NUMBER
                         60 ; FROM THE LINE NUMBER TABLE (LNTBL).
                         61 ; 1ST) MADR CONTAINS THE ADDRESS OF THE LINE NUMBER
                         62 ;      THAT IS BEING REMOVED.
                         63 ;
                         64 ; 2ND) 'LNTBLE' IS THE ENDING ADDRESS OF THE 'LINE
                         65 ;      NUMBER' TABLE.
                         66 ;
                         67 ; 3RD) ALL LINE NUMBERS AFTER 'MADR' WILL BE
                         68 ;      SHIFTED UP ONE POSITION.
                         69 ;
  005282: 2878150C       70 DELETE   MOVE.L  MADR,A4        ;DEL AT ADR
  005286: 224C           71          MOVEA.L A4,A1          ;SAVE ADR
  005288: 548C           72          ADDQ.L  #2,A4          ;ADJUST PTR
  00528A: 2638158C       73          MOVE.L  EOLN,D3        ;TABLE END ADR
  00528E: 9689           74          SUB.L   A1,D3          ;GET SHIFT AMT
  005290: E28B           75          LSR.L   #1,D3          ;ADJUST COUNT
  005292: 6004           76          BRA     STR2           ;BEGIN SHIFT
                         77 ;
  005294: 3914           78 LOOP2    MOVE.W  (A4),-(A4)     ;SHIFT WORD
  005296: 588C           79          ADDQ.L  #4,A4          ;ADJUST PTR
  005298: 51CBFFFA       80 STR2     DBF     D3,LOOP2       ;CONTINUE
                         81 ;
  00529C: 55B8158C       82          SUBQ.L  #2,EOLN        ;NEW END ADR
  0052A0: 5378154C       83          SUBQ.W  #1,NLINES      ;REDUCE LINE CNT
  0052A4: 4E75           84          RTS
                         85 ;
                         86 ;-----------------------
                         87 ;-- ROUTINE: CONTRACT --
                         88 ;-----------------------
                         89 ;
                         90 ; A2: CONTAINS THE STARTING ADDRESS
                         91 ; A4: CONTAINS THE ENDING ADDRESS
                         92 ; D2: CONTAINS THE NUMBER OF WORDS BEING REMOVED
                         93 ;
                         94 ; RESULT:  A2 = THE NEW ENDING ADDRESS
                         95 ;
  0052A6: E34A           96 CONTRACT LSL.W   #1,D2          ;ADJUST COUNT
  0052A8: 4EB85318       97          JSR     LBLADJD        ;ADJ LABEL ADRS'S
  0052AC: 4BF22000       98          LEA     (A2,D2),A5     ;STRT XFER ADR
  0052B0: 200C           99          MOVE.L  A4,D0          ;READY SHIFT CNT
  0052B2: 908D          100          SUB.L   A5,D0          ;SHIFT COUNT
  0052B4: 650A          101          BCS     CONRSB         ;IF NOT LEGAL
  0052B6: E288          102          LSR.L   #1,D0          ;ADJUST COUNT
                        103 ;
                        104 ; START THE SHIFTING PROCESS
                        105 ;
  0052B8: 34DD          106 CONRLP   MOVE.W  (A5)+,(A2)+
  0052BA: 51C8FFFC      107          DBF     D0,CONRLP
                        108 ;
                        109 ; NOW ADJUST THE LOW MEMORY ADDRESS
                        110 ;
  0052BE: 554A          111          SUBQ.W  #2,A2          ;NEW ENDING ADR
                        112 ;
  0052C0: 4E75          113 CONRSB   RTS                    ;DONE
                        114 ;

                        116 ;-------------------------
                        117 ;-- SUBROUTINE: VOIDLBL --
                        118 ;-------------------------
                        119 ;
                        120 ; A2 = POINTER TO LINE REPLACED/DELETED
                        121 ;
                        122 ; IF THIS LINE HAS A LABEL, VOID IT
                        123 ;
  0052C2: 31F83A0252CA  124 VOIDLBL  MOVE.W  LBLADR+2,VOIDLBL+8  ;<LABEL>
  0052C8: 0C520000      125          CMPI.W  #0,(A2)        ;LBL TO DELETE?
  0052CC: 6614          126          BNE     VOIDLBLX       ;SKIP IF NO LABEL
                        127 ;
                        128 ; WE ARE DELETING A LABEL; VOID ITS ADR
                        129 ;
  0052CE: 2F08          130          MOVE.L  A0,-(A7)       ;SAVE A0
  0052D0: 204A          131          MOVE.L  A2,A0
  0052D2: 5488          132          ADDQ.L  #2,A0          ;PTR TO LBL INDEX
  0052D4: 3050          133          MOVE.W  (A0),A0        ;FETCH INDEX
  0052D6: D1F815A0      134          ADD.L   SOLBA,A0       ;ADR OF LBL ADR
  0052DA: 20BC000055AE  135          MOVE.L  #ERR8-2,(A0)   ;MARK LABEL VOID
  0052E0: 205F          136          MOVE.L  (A7)+,A0       ;RESTORE A0
  0052E2: 4E75          137 VOIDLBLX RTS                    ;DONE
                        138 ;
                        139 ;-------------------------
                        140 ;-- SUBROUTINE: LBLADJU --
                        141 ;-------------------------
                        142 ;
                        143 ; A2 = STARTING ADDRESS FOR EXPANSION
                        144 ; D2 = # OF BYTES TO BE EXPANDED
                        145 ;
                        146 ; IF A2 >= LABEL ADR, TAKE NO ACTION
                        147 ; ELSE ADD D2 (BYTES) TO LABEL ADDRESS
                        148 ;
  0052E4: 48E74080      149 LBLADJU  MOVEM.L A0/D1,-(A7)    ;SAVE REGS
  0052E8: 207815A0      150          MOVE.L  SOLBA,A0       ;START OF TABLE
  0052EC: 203815A4      151          MOVE.L  EOLBA,D0       ;END OF TABLE
  0052F0: 9088          152          SUB.L   A0,D0          ;4 * # OF LBLS
  0052F2: 6718          153          BEQ     LBLADUX        ;END IF ZERO
                        154 ;
  0052F4: 02820000FFFF  155          ANDI.L  #$0000FFFF,D2  ;CLR UPPER WORD
                        156 ;
  0052FA: 2218          157 LBLADU1  MOVE.L  (A0)+,D1       ;GET LBL ADR
  0052FC: 6714          158          BEQ     LBLADU4        ;ZERO ADR (NEW)
                        159 ;
  0052FE: B28A          160          CMP.L   A2,D1          ;A2 >= D1 ?
  005300: 6306          161          BLS     LBLADU3        ;SKIP IF SO
                        162 ;
  005302: D282          163          ADD.L   D2,D1          ;ADJUST LBL ADR
  005304: 5988          164 LBLADU2  SUBQ.L  #4,A0          ;ADJ PTR
  005306: 20C1          165          MOVE.L  D1,(A0)+       ;STORE NEW LBL ADR
  005308: 5980          166 LBLADU3  SUBQ.L  #4,D0          ;DECR LBL COUNT
  00530A: 66EE          167          BNE     LBLADU1        ;NEXT LABEL
                        168 ;
  00530C: 4CDF0102      169 LBLADUX  MOVEM.L (A7)+,A0/D1    ;RESTORE REGS
  005310: 4E75          170          RTS                    ;LABELS ADJUSTED
                        171 ;
                        172 ; THIS INSTRUCTION IS ITSELF A LABEL; DON'T ADJ!
                        173 ;
  005312: 2238151A      174 LBLADU4  MOVE.L  LBLTEMP,D1     ;FETCH REAL ADR
  005316: 60EC          175          BRA     LBLADU2        ;STORE REAL ADDR
                        176 ;

                        178 ;-------------------------
                        179 ;-- SUBROUTINE: LBLADJD --
                        180 ;-------------------------
                        181 ;
                        182 ; A2 = STARTING ADDRESS FOR EXPANSION
                        183 ; D2 = # OF BYTES TO BE CONTRACTED
                        184 ;
                        185 ; IF A2 >= LABEL ADR, TAKE NO ACTION
                        186 ; ELSE SUBTRACT D2 (BYTES) FROM LABEL ADDRESS
                        187 ;
  005318: 48E74080      188 LBLADJD  MOVEM.L A0/D1,-(A7)    ;SAVE REGS
  00531C: 207815A0      189          MOVE.L  SOLBA,A0       ;START OF TABLE
  005320: 203815A4      190          MOVE.L  EOLBA,D0       ;END OF TABLE
  005324: 9088          191          SUB.L   A0,D0          ;4 * # OF LBLS
  005326: 6718          192          BEQ     LBLADDX        ;END IF ZERO
                        193 ;
  005328: 02820000FFFF  194          ANDI.L  #$0000FFFF,D2  ;CLR UPPER WORD
                        195 ;
  00532E: 2218          196 LBLADD1  MOVE.L  (A0)+,D1       ;GET LBL ADR
  005330: 6714          197          BEQ     LBLADD4        ;ZERO ADR (NEW)
                        198 ;
  005332: B28A          199          CMP.L   A2,D1          ;A2 >= D1 ?
  005334: 6306          200          BLS     LBLADD3        ;SKIP IF SO
                        201 ;
  005336: 9282          202          SUB.L   D2,D1          ;ADJUST LBL ADR
  005338: 5988          203 LBLADD2  SUBQ.L  #4,A0          ;ADJ PTR
  00533A: 20C1          204          MOVE.L  D1,(A0)+       ;STORE NEW LBL ADR
  00533C: 5980          205 LBLADD3  SUBQ.L  #4,D0          ;DECR LBL COUNT
  00533E: 66EE          206          BNE     LBLADD1        ;NEXT LABEL
                        207 ;
  005340: 4CDF0102      208 LBLADDX  MOVEM.L (A7)+,A0/D1    ;RESTORE REGS
  005344: 4E75          209          RTS                    ;LABELS ADJUSTED
                        210 ;
                        211 ; THIS INSTRUCTION IS ITSELF A LABEL; DON'T ADJ!
                        212 ;
  005346: 2238151A      213 LBLADD4  MOVE.L  LBLTEMP,D1     ;FETCH REAL ADR
  00534A: 60EC          214          BRA     LBLADD2        ;STORE REAL ADDR
                        215 ;
                                     CHAIN   LIBR3

                          2 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          3 ;
                          4 ;------------------------
                          5 ;-- SUBROUTINE: GETFLD --
                          6 ;------------------------
                          7 ;
                          8 ; THIS SUBROUTINE SETS THE POINTER (A6) TO THE
                          9 ; NEXT FIELD - A FIELD IS SEPARATED BY A SPACE
                         10 ; CHARACTER - AND ALSO GETS ITS LENGTH.
                         11 ;
                         12 ; A0: PTR TO THE CURRENT FIELD IN THE INPUT BUFR
                         13 ;
                         14 ; D7: CONTAINS THE CONDITION FLAG
                         15 ;     IF D7 = 1 THEN SEARCH KEY WAS FOUND
                         16 ;     IF D7 = 0 THEN SEARCH KEY WAS NOT FOUND
                         17 ;
  00534C: 7CA0           18 GETFLD   MOVEQ   #$A0,D6        ;SEARCH KEY
  00534E: 4245           19 GETFLDA  CLR.W   D5             ;READY FIELD LEN
  005350: 7E01           20          MOVEQ   #1,D7          ;INIT COND FLAG
  005352: 3C48           21          MOVEA.W A0,A6          ;SAVE CURRENT PTR
  005354: 4A10           22 GETLP    TST.B   (A0)           ;END OF LINE?
  005356: 6708           23          BEQ     GETA0          ;KEY NOT FOUND
                         24 ;
                         25 ; ELSE UPDATE FIELD COUNT & TEST FOR END OF LINE
                         26 ;
  005358: BC18           27          CMP.B   (A0)+,D6       ;SRCH KEY FOUND?
  00535A: 6706           28          BEQ     GETA1          ;DONE IF SO
                         29 ;
                         30 ; <UPDATE FIELD COUNT AGAIN>
                         31 ;
  00535C: 5245           32          ADDQ    #1,D5          ;FIELD LENGTH
  00535E: 60F4           33          BRA     GETLP          ;NEXT CHAR
                         34 ;
  005360: 4207           35 GETA0    CLR.B   D7             ;KEY NOT FOUND
  005362: 4E75           36 GETA1    RTS                    ;DONE
                         37 ;

                         39 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         40 ;
                         41 ;-----------------------
                         42 ;-- SUBROUTINE: EXAMN --
                         43 ;-----------------------
                         44 ;
                         45 ; THIS ROUTINE CHECKS TO SEE IF AN ASCII STRING
                         46 ; CONTAINS A NUMERIC VALUE (ASCII B0-B9).
                         47 ;
                         48 ; A6: CONTAINS THE PTR TO THE NUMBER BEING CHECKED
                         49 ; D5: CONTAINS THE NUMBER OF DIGITS TO BE CHECKED
                         50 ;
  005364: 4242           51 EXAMN    CLR.W   D2             ;READY WRK AREA
  005366: 7E01           52          MOVEQ   #1,D7          ;SET COND FLAG
  005368: 3A4E           53          MOVEA.W A6,A5          ;SAVE FLD PTR
  00536A: 387C1F80       54          MOVEA.W #CHRMSK,A4     ;START OF MASK
  00536E: 7804           55          MOVEQ   #4,D4          ;TESTING BIT 4
  005370: 3605           56          MOVE.W  D5,D3          ;FLD COUNT
  005372: 6008           57          BRA     EXAMB          ;START CHECK
                         58 ;
  005374: 141D           59 EXAMA    MOVE.B  (A5)+,D2       ;GET CHR
  005376: 09342000       60          BTST    D4,(A4,D2)     ;IF SET THEN A #
  00537A: 6706           61          BEQ     EXAMD          ;SET FLG TO ALPHA
                         62 ;
                         63 ;   <ELSE CONTINUE NUMERIC CHECK>
                         64 ;
  00537C: 51CBFFF6       65 EXAMB    DBF     D3,EXAMA
  005380: 4E75           66          RTS                    ;A NUMERIC FLD
                         67 ;
  005382: 4207           68 EXAMD    CLR.B   D7             ;MAYBE A CMD?
  005384: 4E75           69          RTS                    ;DONE
                         70 ;
                         71 ;---------------------
                         72 ;-- ROUTINE: HEXCHK --
                         73 ;---------------------
                         74 ;
                         75 ; THIS ROUTINE IS USED TO CHECK IF A GIVEN STRING
                         76 ; IS A LEGAL HEXADECIMAL NUMBER.
                         77 ;
                         78 ; A1: CONTAINS THE STARTING ADDRESS OF THE STRING
                         79 ; D0: SHOULD CONTAIN THE LENGTH OF THE STRING.
                         80 ;
                         81 ; RESULT:  D7  WILL CONTAIN THE CONDITION FLAG
                         82 ;     1 = HEX, 0 = NOT HEX
                         83 ;
  005386: 387C1F80       84 HEXCHK   MOVEA.W #CHRMSK,A4     ;MASK TBL
  00538A: 7E01           85          MOVEQ   #1,D7          ;SET COND FLAG
  00538C: 7401           86          MOVEQ   #1,D2          ;MASK BIT
  00538E: 4244           87          CLR.W   D4             ;READY WORK REG
  005390: 6008           88          BRA     HEX2           ;START CHECK
                         89 ;
  005392: 1819           90 HEXLP    MOVE.B  (A1)+,D4       ;GET ASCII BYTE
  005394: 05344000       91          BTST    D2,(A4,D4)     ;TEST MASK BIT
  005398: 6706           92          BEQ     HEXERR         ;IF NOT SET
                         93 ;
  00539A: 51C8FFF6       94 HEX2     DBF     D0,HEXLP       ;CONTINUE
  00539E: 4E75           95          RTS                    ;DONE
                         96 ;
  0053A0: 4207           97 HEXERR   CLR.B   D7             ;SET ERR COND
  0053A2: 4E75           98          RTS                    ;DONE
                         99 ;

                        101 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        102 ;
                        103 ;-------------------
                        104 ;-- ROUTINE: PACK --
                        105 ;-------------------
                        106 ;
                        107 ; THIS FUNCTION TAKES AN ASCII BYTE AND PACKS IT
                        108 ; INTO BINARY FORM.
                        109 ;
                        110 ; EXAMPLE: THE ASCII NUMBER (B0 B1 B2 B3) WILL
                        111 ;          BE CONVERTED TO THE BINARY NUMBER
                        112 ;          ($0123) AND PLACED IN 'D2'.
                        113 ;
                        114 ;
                        115 ; A1: POINTER THE START OF THE ASCII STRING BEING
                        116 ;     CONVERTED TO BINARY.
                        117 ;
                        118 ; A3: POINTER TO THE WORK BUFFER
                        119 ;
                        120 ; D4: CONTAINS THE NUMBER OF BYTES BEING CONVERTED
                        121 ;
  0053A4: 387C53E2      122 PACK     MOVEA.W #CMPTBL,A4     ;HEX TBL
  0053A8: 70B9          123          MOVEQ   #$B9,D0        ;FOR 0-9 CHECK
  0053AA: 7C0F          124          MOVEQ   #$0F,D6        ;MASKING BYTE
  0053AC: 4241          125          CLR.W   D1             ;READY WORK AREA
  0053AE: 4242          126          CLR.W   D2             ;READY WORK AREA
                        127 ;
                        128 ;START COMPACT PROCESS
                        129 ;
  0053B0: 1219          130 SXLP     MOVE.B  (A1)+,D1       ;GET BYTE
  0053B2: B001          131          CMP.B   D1,D0          ;IN 0-9 RANGE?
  0053B4: 6512          132          BCS     SXA
                        133 ;
                        134 ; <ELSE MASK BYTE>
                        135 ;
  0053B6: C206          136          AND.B   D6,D1          ;GET LOW NIBBLE
  0053B8: E909          137          LSL.B   #4,D1          ;SET TO HI NIBBLE
  0053BA: 1419          138          MOVE.B  (A1)+,D2       ;GET NEXT BYTE
  0053BC: B002          139          CMP.B   D2,D0          ;IN 0-9 RANGE?
  0053BE: 6516          140          BCS     SXA1           ;IF NOT CHECK A-F
                        141 ;
                        142 ; <ELSE MASK BYTE>
                        143 ;
  0053C0: C406          144 SSA      AND.B   D6,D2          ;GET LO NIBBLE
  0053C2: D202          145          ADD.B   D2,D1          ;ADD TO HI NIBBLE
  0053C4: 16C1          146          MOVE.B  D1,(A3)+       ;SAVE PACK BYTE
  0053C6: 6016          147          BRA     SXTRT          ;GET NEXT BYTE
                        148 ;
  0053C8: C206          149 SXA      AND.B   D6,D1          ;GET LO NIBBLE
  0053CA: 12341001      150          MOVE.B  $1(A4,D1),D1   ;GET NEXT BYTE
  0053CE: E909          151          LSL.B   #4,D1          ;SET TO HI NIBBLE
  0053D0: 1419          152          MOVE.B  (A1)+,D2       ;GET NEXT BYTE
  0053D2: B002          153          CMP.B   D2,D0          ;IN A-F RANGE?
  0053D4: 64EA          154          BCC     SSA            ;IF NOT
  0053D6: C406          155 SXA1     AND.B   D6,D2          ;GET LOW NIBBLE
  0053D8: D2342001      156          ADD.B   $1(A4,D2),D1   ;ADD TO HI NIBBLE
  0053DC: 16C1          157          MOVE.B  D1,(A3)+       ;STORE PACK BYTE
                        158 ;
  0053DE: 51CCFFD0      159 SXTRT    DBF     D4,SXLP        ;CONTINUE
  0053E2: 4E75          160          RTS                    ;DONE
                        161 ;

                        163 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        164 ;
                        165 ;TABLE USED IN COMPACTION PROCESS
                        166 ;
  0053E4: 0A            167 TEMPX    DC.B    $0A
  0053E5: 0B            168          DC.B    $0B
  0053E6: 0C            169          DC.B    $0C
  0053E7: 0D            170          DC.B    $0D
  0053E8: 0E            171          DC.B    $0E
  0053E9: 0F            172          DC.B    $0F
000053E2:               173 CMPTBL   EQU     TEMPX-2
                        174 ;
                        175 ;-------------------------
                        176 ;-- SUBROUTINE: PREPROC --
                        177 ;-------------------------
                        178 ;
                        179 ; THIS ROUTINE IS USED TO CONVERT ANY TWO SPACES TO
                        180 ; ONE.  HOWEVER THIS PROCESS IS INGNORED ON THOSE
                        181 ; STRINGS THAT ARE WITHIN QUOTES ("S).
                        182 ;
                        183 ; A0: CONTAIN THE POINTER TO THE INPUT BUFFER
                        184 ; A3: CONTAINS THE TEMPORY WORK BUFFER.
                        185 ;
  0053EA: 7601          186 PREPROC  MOVEQ   #1,D3          ;INIT STMT COUNT
  0053EC: 4EB8546C      187          JSR     REMCHK         ;CHECK IF 'REM'
  0053F0: 4A07          188          TST.B   D7             ;REMARK STATEMENT?
  0053F2: 6750          189          BEQ     PREPRX2        ;IF YES,THEN DONE
                        190 ;
  0053F4: 47F81800      191          LEA     WRKBUF,A3      ;TEMP WORK SPACE
  0053F8: 0C1800A0      192 PREPR0   CMPI.B  #$A0,(A0)+     ;LEADING SPACE
  0053FC: 67FA          193          BEQ     PREPR0         ;IF YES, IGNORE
                        194 ;
  0053FE: 5348          195          SUBQ.W  #1,A0          ;PTR = PTR - 1
  005400: 0C1000A2      196 PREPLP   CMPI.B  #$A2,(A0)      ;START OF LBT?
  005404: 6722          197          BEQ     PREPRD         ;IF YES,COPY IT
                        198 ;
  005406: 0C1000A0      199          CMPI.B  #$A0,(A0)      ;SPACE CHAR?
  00540A: 670E          200          BEQ     PREPRC         ;STORE & CONT
                        201 ;
  00540C: 0C1000BA      202          CMPI.B  #":",(A0)      ;STMNT SEPERATOR?
  005410: 6602          203          BNE     PREPRA         ;IF NOT, CONT
                        204 ;
  005412: 5243          205          ADDQ.W  #1,D3          ;UPDATE STMNT CNT
                        206 ;
                        207 ;! START OF BIT ROT [005414-005497]
                        208 ;! CODE RECOVERED BY DISASSEMBLY
                        209 ;
  005414: 16D8          210 PREPRA   MOVE.B  (A0)+,(A3)+
  005416: 671C          211          BEQ     H5434
  005418: 60E6          212          BRA     PREPLP
                        213 ;
  00541A: 16D8          214 PREPRC   MOVE.B  (A0)+,(A3)+
  00541C: 6716          215          BEQ     H5434
  00541E: 0C1000A0      216 H541E    CMPI.B  #$A0,(A0)
  005422: 66DC          217          BNE     PREPLP
  005424: 5248          218          ADDQ.W  #1,A0
  005426: 60F6          219          BRA     H541E
                        220 ;
  005428: 16D8          221 PREPRD   MOVE.B  (A0)+,(A3)+
  00542A: 6708          222          BEQ     H5434
  00542C: 0C1000A2      223          CMPI.B  #$A2,(A0)
  005430: 66F6          224          BNE     PREPRD
  005432: 60E0          225          BRA     PREPRA
                        226 ;
  005434: 4213          227 H5434    CLR.B   (A3)
  005436: 41F81600      228          LEA     BUFFER,A0
  00543A: 47F81800      229          LEA     WRKBUF,A3
  00543E: 10DB          230 H543E    MOVE.B  (A3)+,(A0)+
  005440: 6702          231          BEQ     PREPRX2
  005442: 60FA          232          BRA     H543E
                        233 ;
  005444: 31C3154E      234 PREPRX2  MOVE.W  D3,STMTCNT
  005448: 41F81600      235          LEA     BUFFER,A0
  00544C: 4E75          236          RTS
                        237 ;
  00544E: 4245          238 REMSPCE  CLR.W   D5
  005450: 7CA0          239          MOVEQ   #$A0,D6
  005452: 324E          240          MOVEA.W A6,A1
  005454: 344E          241          MOVEA.W A6,A2
  005456: BC11          242 H5456    CMP.B   (A1),D6
  005458: 670A          243          BEQ     H5464
  00545A: 4A11          244          TST.B   (A1)
  00545C: 670A          245          BEQ     H5468
  00545E: 5245          246          ADDQ.W  #1,D5
  005460: 14D9          247          MOVE.B  (A1)+,(A2)+
  005462: 60F2          248          BRA     H5456
                        249 ;
  005464: 5249          250 H5464    ADDQ.W  #1,A1
  005466: 60EE          251          BRA     H5456
                        252 ;
  005468: 4212          253 H5468    CLR.B   (A2)
  00546A: 4E75          254          RTS
                        255 ;
  00546C: 4EB85C72      256 REMCHK   JSR     FETCHR
  005470: 08070004      257          BTST    #$04,D7
  005474: 66F6          258          BNE     REMCHK
  005476: 7E01          259          MOVEQ   #1,D7
  005478: 0C0600A0      260          CMPI.B  #$A0,D6
  00547C: 6610          261          BNE     H548E
  00547E: 47F85494      262          LEA     H5494,A3
  005482: 7C03          263          MOVEQ   #3,D6
  005484: B10B          264 H5484    CMPM.B  (A3)+,(A0)+
  005486: 56CEFFFC      265          DBNE    D6,H5484
  00548A: 6602          266          BNE     H548E
  00548C: 4207          267          CLR.B   D7
  00548E: 41F81600      268 H548E    LEA     BUFFER,A0
  005492: 4E75          269          RTS
                        270 ;
  005494: D2C5CDA0      271 H5494    ASC     "REM "
                        272 ;
                        273 ;! END OF BIT ROT
                        274 ;
                                     CHAIN   LIBR4

                          2 ;------------------------
                          3 ;-- SUBROUTINE: ADDLST --
                          4 ;------------------------
                          5 ;
                          6 ; ADD 'NEW STRING' TO THE END OF THE LIST.
                          7 ;
                          8 ; A2 = PTR TO END OF LIST
                          9 ; A6 = PTR TO START OF 'NEW STRING'
                         10 ; D5 = CHAR COUNT
                         11 ;
  005498: 14C5           12 ADDLIST  MOVE.B  D5,(A2)+       ;ENTRY'S LENGTH
  00549A: 1005           13          MOVE.B  D5,D0          ;D0 = COUNTER
  00549C: 324E           14          MOVE.W  A6,A1          ;A1 = SCRATCH PTR
  00549E: 14D9           15 ADDL1    MOVE.B  (A1)+,(A2)+    ;XFER ENTRY TO
  0054A0: 5300           16          SUBQ.B  #1,D0          ;DECR CHAR COUNT
  0054A2: 66FA           17          BNE     ADDL1          ;IF NOT ZERO
                         18 ;
                         19 ; MARK THE END OF THE LIST WITH A $00
                         20 ;
  0054A4: 4212           21          CLR.B   (A2)           ;SET EOL MARKER
  0054A6: 4E75           22          RTS                    ;DONE
                         23 ;
                         24 ;------------------------
                         25 ;-- SUBROUTINE: VARCHK --
                         26 ;------------------------
                         27 ;
                         28 ; THIS ROUTINE CHECKS IF A VARIABLE NAME EXISTS IN
                         29 ; THE VARIABLE NAME TABLE.  IF NOT IT THEN ADDS
                         30 ; IT TO THE VARIABLE NAME TABLE AND ADDS 8 TO THE
                         31 ; VALUE TABLE END PTR.
                         32 ;
                         33 ; A6: CONTAINS THE POINTER TO THE START OF THE
                         34 ;     VARIABLE NAME.
                         35 ;
                         36 ; D5: CONTAINS THE LENGTH OF THE VARIABLE NAME
                         37 ;
  0054A8: 7C01           38 VARCHK1  MOVEQ   #1,D6          ;VARCHK1 FLAG
  0054AA: 6002           39          BRA     VCHK
                         40 ;
  0054AC: 4246           41 VARCHK   CLR     D6             ;VARCHK FLAG
                         42 ;
  0054AE: 247815C0       43 VCHK     MOVEA.L SOVN,A2        ;VAR NAME TBL
  0054B2: 4EB855B6       44          JSR     NAMECHK        ;LEGAL VARN ?
  0054B6: 4EB85106       45          JSR     CHKLIST        ;SEARCH VARTBL
  0054BA: 6620           46          BNE     VCHKA          ;SKIP IF IN LIST
                         47 ;
                         48 ; <ELSE ADD VARIABLE NAME TO TABLE>
                         49 ;
  0054BC: 4EB851AC       50          JSR     EXPAND0        ;ADJ TBL PTRS
  0054C0: 4EB85498       51          JSR     ADDLIST        ;SAVE VARN
  0054C4: 21CA15C4       52          MOVE.L  A2,EOVN        ;SAVE NEW LOW ADR
                         53 ;
                         54 ; ADJUST THE FLOATING POINT VALUE TABLE
                         55 ;
  0054C8: 247815E4       56          MOVEA.L EOV,A2         ;EXPANSION ADR
  0054CC: 7A04           57          MOVEQ   #4,D5          ;-EXPAND VARN TBL
  0054CE: 4EB851AC       58          JSR     EXPAND0        ;BY 2 X D5 WRDS -
  0054D2: E34D           59          LSL.W   #1,D5          ;ADJUST OFFSET
  0054D4: 48725000       60          PEA     (A2,D5)        ;- CALC & STORE
  0054D8: 21DF15E4       61          MOVE.L  (A7)+,EOV      ;NEW ENDING ADR -
                         62 ;

                         64 ;
                         65 ;  <GET OFFSET VALUE & STORE IT>
                         66 ;
  0054DC: 4A06           67 VCHKA    TST.B   D6             ;VARCHK1 ?
  0054DE: 6638           68          BNE     CCHKX          ;IF YES
  0054E0: 602C           69          BRA     CCHKA          ;IF NO
                         70 ;
                         71 ;------------------------
                         72 ;-- SUBROUTINE: CONCHK --
                         73 ;------------------------
                         74 ;
                         75 ; THIS ROUTINE CHECKS IF A CONSTANT VARIABLE
                         76 ;
  0054E2: 7C01           77 CONCHK1  MOVEQ   #1,D6          ;CONCHK1 FLAG
  0054E4: 6002           78          BRA     CCHK
  0054E6: 4246           79 CONCHK   CLR     D6             ;CONCHK FLAG
  0054E8: 247815B0       80 CCHK     MOVEA.L SOCN,A2        ;VAR NAME TBL
  0054EC: 4EB85106       81          JSR     CHKLIST        ;SEARCH VARTBL
  0054F0: 661C           82          BNE     CCHKA          ;IF IN LIST
                         83 ;
                         84 ; <ELSE ADD CONSTANT NAME TO TABLE>
                         85 ;
  0054F2: 4EB851AC       86          JSR     EXPAND0        ;ADJ TBL PTRS
  0054F6: 4EB85498       87          JSR     ADDLIST
  0054FA: 21CA15B4       88          MOVE.L  A2,EOCN        ;SAVE NEW LOW ADR
  0054FE: 227815BC       89          MOVEA.L EOC,A1         ;END OF TABLE
  005502: 22F81902       90          MOVE.L  S1,(A1)+       ;1ST PART
  005506: 22F81906       91          MOVE.L  S1+4,(A1)+     ;2ND PART
  00550A: 21C915BC       92          MOVE.L  A1,EOC         ;NEW VAL TBL END
                         93 ;
  00550E: 4A06           94 CCHKA    TST.B   D6             ;CONCHK1 ?
  005510: 6606           95          BNE     CCHKX          ;IF YES
                         96 ;
  005512: E74B           97          LSL.W   #3,D3          ;GET OFFSET
  005514: 36C3           98          MOVE.W  D3,(A3)+       ;STORE OFFSET
  005516: E64B           99          LSR.W   #3,D3          ;RESTORE INDEX
  005518: 4E75          100 CCHKX    RTS                    ;DONE
                        101 ;

                        103 ;------------------------
                        104 ;-- SUBROUTINE: GETLBL --
                        105 ;------------------------
                        106 ;
                        107 ; A6 POINTS TO THE START OF THE LABEL
                        108 ;
                        109 ; CHECK IF THE LABEL IS IN THE LABEL NAME TABLE
                        110 ; AND THE INDEX OF THE NEXT TBL POS IF IT IS NOT.
                        111 ;
  00551A: 0C1E00A2      112 GETLBL   CMPI.B  #$A2,(A6)+     ;QUOTE ?
  00551E: 66000090      113          BNE.L   ERR8           ;IF NOT
  005522: 324E          114          MOVEA.W A6,A1          ;A1 = SCRATCH PTR
  005524: 4245          115          CLR.W   D5             ;INIT LBL LENGTH
  005526: 4A11          116 GETLB1   TST.B   (A1)           ;BUFFER END ?
  005528: 67000086      117          BEQ.L   ERR8           ;IF SO
                        118 ;
  00552C: 0C1900A2      119          CMPI.B  #$A2,(A1)+     ;LABEL END ?
  005530: 6704          120          BEQ     GETLBL2        ;IF END
                        121 ;
  005532: 5245          122          ADDQ    #1,D5          ;INCR CHAR COUNT
  005534: 60F0          123          BRA     GETLB1         ;NEXT CHAR
                        124 ;
  005536: 4A45          125 GETLBL2  TST     D5             ;LABEL PRESENT ?
  005538: 6776          126          BEQ     ERR8           ;IF NOT
                        127 ;
  00553A: 24781598      128          MOVEA.L SOLBN,A2       ;START OF TABLE
  00553E: 4EB85106      129          JSR     CHKLIST        ;IS LABEL IN TABLE?
  005542: E54B          130          LSL.W   #2,D3          ;ADJUST LABEL INDEX
  005544: 4A07          131          TST.B   D7             ;ZERO = NO
  005546: 4E75          132          RTS                    ;BEQ = N; BNE = Y
                        133 ;
                        134 ;-------------------------
                        135 ;-- SUBROUTINE: STORLBL --
                        136 ;-------------------------
                        137 ;
                        138 ; A6 = THE START OF THE LABEL NAME STRING
                        139 ; D5 = THE LENGTH OF THE LABEL STRING
                        140 ;
                        141 ; STORE THE LABEL AT THE END OF THE LABEL TABLE
                        142 ;
                        143 ;
                        144 ;
  005548: 4EB851AC      145 STORLBL  JSR     EXPAND0        ;ADJ TBL PTRS
  00554C: 4EB85498      146          JSR     ADDLIST        ;ADD TO TABLE
  005550: 21CA159C      147          MOVE.L  A2,EOLBN       ;NEW ENDING ADR
  005554: 58B815A4      148          ADDQ.L  #4,EOLBA       ;NEW ADR TBL END
                        149 ;
                        150 ; STORE THE ADDRESS OF THE LABEL
                        151 ;
  005558: 36F83A02      152 STORLBA  MOVE.W  LBLADR+2,(A3)+  ;LABEL ACTION ADR
                        153 ;
                        154 ; FIND THE START OF THE OBJ CODE TO CALC LBL'S ADR
                        155 ;
  00555C: 2A781590      156          MOVEA.L SOLA,A5        ;LINE ADR TBL
  005560: 3C2BFFFA      157          MOVE.W  -6(A3),D6      ;FETCH LINE INDEX
  005564: E54E          158          LSL.W   #2,D6          ;INDEX -> OFFSET
  005566: 2C356000      159          MOVE.L  (A5,D6),D6     ;LABEL'S ADR
  00556A: 5886          160          ADDQ.L  #4,D6          ;PTR TO NEXT ADR
  00556C: 21C6151A      161          MOVE.L  D6,LBLTEMP     ;LBL'S REAL ADR
                        162 ;

                        164 ; STORE THE LABEL INDEX AND THE LABEL ADDRESS
                        165 ;
  005570: 36C3          166          MOVE.W  D3,(A3)+       ;SAVE LBL'S INDEX
  005572: 2A7815A0      167          MOVEA.L SOLBA,A5       ;LABEL ADR TBL
  005576: 4BF53000      168          LEA     (A5,D3),A5     ;LABEL ADR PTR
  00557A: 4295          169          CLR.L   (A5)           ;FAKE ADR (NEW)
  00557C: 4E75          170          RTS                    ;DONE
                        171 ;
                        172 ;----------------------
                        173 ;-- ROUTINE: GETLBL1 --
                        174 ;----------------------
                        175 ;
                        176 ; SERVICE A LABEL PROGRAM LINE.  FIRST CHECK
                        177 ; WHETHER THE LABEL IS IN THE LABEL NAME TABLE.
                        178 ;
  00557E: 083800011508  179 GETLBL1  BTST    #1,SFLAG       ;LBL 1ST STMNT ?
  005584: 6606          180          BNE     GETLBL1A       ;IF YES, CONTINUE
                        181 ;
  005586: 7E2E          182          MOVEQ   #46,D7         ;LBL NOT 1ST STMNT
  005588: 4EF86008      183          JMP     ERROR          ;REPORT ERROR
                        184 ;
  00558C: 618C          185 GETLBL1A BSR     GETLBL         ;LABEL IN TABLE?
  00558E: 6604          186          BNE     LBLGOT         ;SKIP IF SO
                        187 ;
  005590: 61B6          188          BSR     STORLBL        ;ADD LBL TO TABLE
  005592: 4E75          189          RTS                    ;RETN TO PARSER
                        190 ;
                        191 ; THE LABEL NAME IS ALREADY IN THE TABLE.  IS IT
                        192 ; AN ILLEGAL DUPLICATE OR A LEGAL DUMMY?
                        193 ;
  005594: 207815A0      194 LBLGOT   MOVEA.L SOLBA,A0       ;LABEL ADR TABLE
  005598: D1C3          195          ADD.L   D3,A0          ;THIS LBL ADR
  00559A: 203C000055AE  196          MOVE.L  #ERR8-2,D0     ;MISSING LBL ADR
  0055A0: B090          197          CMP.L   (A0),D0        ;DUMMY ADR ?
  0055A2: 6606          198          BNE     ERR7           ;NO, REPORT ERROR
                        199 ;
                        200 ; THE STORED LABEL ADDRESS IS A DUMMY; REPLACE
                        201 ; THE DUMMY ADDRESS WITH THE REAL ADDRESS.
                        202 ;
                        203 ; A0 POINTS TO THE LABEL ADDRESS
                        204 ;
  0055A4: 4EB85558      205          JSR     STORLBA        ;STORE THE ADR
  0055A8: 4E75          206          RTS                    ;RETURN TO PARSER
                        207 ;
                        208 ; WE HAVE A REAL CONFLICT, REPORT ERROR
                        209 ;
  0055AA: 7E07          210 ERR7     MOVEQ   #7,D7          ;DUPLICATE LABEL
  0055AC: 6004          211          BRA     ERR8+2
                        212 ;
  0055AE: 55B0          213          DC.W    ERR8           ;(ADR FOR HALGOL)
  0055B0: 7E08          214 ERR8     MOVEQ   #8,D7          ;MISSING LABEL
  0055B2: 4EF86008      215          JMP     ERROR          ;REPORT ERROR
                        216 ;
                        217 ; CHECK FOR A LEGAL VARIABLE NAME
                        218 ;
  0055B6: 48E71C0C      219 NAMECHK  MOVEM.L D3-D5/A4/A5,-(A7)  ;SAVE REGS
  0055BA: 3A4E          220          MOVE.W  A6,A5          ;A5 = SCRATCH PTR
  0055BC: 49F81F80      221          LEA     CHRMSK,A4      ;PTR TO MASK TBL
  0055C0: 4244          222          CLR.W   D4             ;INIT INDEX REG
                        223 ;

                        225 ; THE FIRST CHARACTER MUST BE AN ALPHA (A-Z)
                        226 ;
  0055C2: 181D          227          MOVE.B  (A5)+,D4       ;FIRST CHAR
  0055C4: 671C          228          BEQ     NSE            ;IF END
                        229 ;
  0055C6: 16344000      230          MOVE.B  (A4,D4),D3     ;CHR MASK BITS
  0055CA: 02030020      231          ANDI.B  #$20,D3        ;ALPHA ?
  0055CE: 6712          232          BEQ     NSE            ;IF NOT
                        233 ;
                        234 ; 1ST CHAR IS O.K.
                        235 ;
  0055D0: 5345          236 NCHK1    SUBQ    #1,D5          ;DECR CHAR COUNT
  0055D2: 6714          237          BEQ     NCHKX          ;DONE IF ZERO
                        238 ;
  0055D4: 181D          239          MOVE.B  (A5)+,D4       ;FETCH A CHAR
  0055D6: 670A          240          BEQ     NSE            ;IF END
                        241 ;
  0055D8: 16344000      242          MOVE.B  (A4,D4),D3     ;CHR MASK BITS
  0055DC: 02030030      243          ANDI.B  #$30,D3        ;ALPHNUM?
  0055E0: 66EE          244          BNE     NCHK1          ;IF SO
                        245 ;
  0055E2: 7E2B          246 NSE      MOVEQ   #43,D7         ;ILLEGAL VARN
  0055E4: 4EF86008      247          JMP     ERROR
                        248 ;
  0055E8: 4CDF3038      249 NCHKX    MOVEM.L (A7)+,D3-D5/A4/A5  ;RESTORE REGS
  0055EC: 4E75          250          RTS                    ;CHK DONE
                        251 ;
                                     CHAIN   LIBR5

                          2 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          3 ;
                          4 ;--------------------
                          5 ;-- ROUTINE: GETVAR --
                          6 ;--------------------
                          7 ;
                          8 ; THIS ROUTINE EXECUTES THE HALGOL 'INPUT' FN'
                          9 ;
  0055EE: 48E7FFFE       10 GETVAR   MOVEM.L D0-D7/A0-A6,-(A7)  ;AVE REG
                         11 ;
  0055F2: 43F81700       12          LEA     TEMPB,A1       ;STRT OF BUFR
  0055F6: 47F81F80       13          LEA     CHRMSK,A3      ;CHARACTER MASK
  0055FA: 14381542       14          MOVE.B  COLUMN,D2      ;PROMPT POS
  0055FE: 42381510       15          CLR.B   PMTPOS         ;INIT PROMPT POS
                         16 ;
  005602: 4EB83A50       17 GETVR0   JSR     SETCSR         ;SET CURSOR
  005606: 4EB83A58       18          JSR     GETKEY         ;GET KEYPRSS
                         19 ;
  00560A: 1A337000       20          MOVE.B  (A3,D7),D5     ;GET CHRMSK BYTE
  00560E: 6B20           21          BMI     GETVRC         ;PRNT NON-CTL CHR
                         22 ;
                         23 ;   <CHECK FOR SPECIAL CTL-CHR$>
                         24 ;
  005610: 41F856D8       25          LEA     CTLBLX,A0      ;CTL-KEY TBL
  005614: 4241           26          CLR.W   D1             ;INIT TBL INDEX
  005616: 4240           27          CLR.W   D0             ;INIT WORK REG
  005618: 1018           28          MOVE.B  (A0)+,D0       ;LEN OF TBL
                         29 ;
  00561A: BE18           30 GETVRA   CMP.B   (A0)+,D7       ;CTL-CHR FOUND?
  00561C: 6708           31          BEQ     GETVRB         ;PERFORM FN
                         32 ;
                         33 ;   <CONTINUE CHECKING LIST>
                         34 ;
  00561E: 5401           35          ADDQ.B  #2,D1          ;UPDATE TBL IND
  005620: 51C8FFF8       36          DBF     D0,GETVRA      ;CONT SEARCH
                         37 ;
                         38 ; SPECIAL CTL-CHR NOT IN LIST, SO IGNOR KEYPRESS
                         39 ;
  005624: 60DC           40          BRA     GETVR0         ;GET A KEYPRESS
                         41 ;
  005626: 41F856DC       42 GETVRB   LEA     FNTBLX,A0      ;FN TBL
  00562A: 30701000       43          MOVEA.W (A0,D1),A0     ;FN ADR
  00562E: 4ED0           44          JMP     (A0)           ;PERFORM FN
                         45 ;
  005630: 0C07008D       46 GETVRC   CMPI.B  #$8D,D7        ;<CR> ?
  005634: 67000078       47          BEQ.L   GET8D          ;SKIP IF SO
                         48 ;
  005638: 0C0700A0       49          CMPI.B  #$A0,D7        ;A SPACE CHR?
  00563C: 67C4           50          BEQ     GETVR0         ;IGNORE IT
                         51 ;
  00563E: 12C7           52          MOVE.B  D7,(A1)+       ;BUILD BUFR
  005640: 4211           53          CLR.B   (A1)           ;SET EOL MARKER
  005642: 49F81700       54          LEA     TEMPB,A4       ;START OF BUFR
  005646: 4EB820D4       55          JSR     NUMEVAL        ;EVALUATE INPUT
  00564A: 4A07           56          TST.B   D7             ;ERROR FOUND?
  00564C: 6610           57          BNE     GETVRD         ;SOUND ERR BELL
                         58 ;

                         60 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         61 ;
                         62 ; KEYPRESS IS A VALID NUMERIC CONSTANT, CONTINUE
                         63 ;
                         64 ;
  00564E: 1E29FFFF       65          MOVE.B  -$1(A1),D7     ;GET BYTE
  005652: 52381510       66          ADDQ.B  #1,PMTPOS      ;UPDATE STR COUNT
  005656: 65AA           67          BCS     GETVR0         ;IGNORE IF > 255
                         68 ;
  005658: 4EB84CB6       69          JSR     PRINTX         ;ECHO BYTE TO CRT
  00565C: 60A4           70          BRA     GETVR0         ;GET ANOTHER BYTE
                         71 ;
  00565E: 4EB83A34       72 GETVRD   JSR     BELL           ;SOUND BELL
  005662: 4221           73          CLR.B   -(A1)          ;REMOVE ERR BYTE
  005664: 609C           74          BRA     GETVR0         ;GET ANOTHER BYTE
                         75 ;
                         76 ;  <** MOVE THE CURSOR LEFT **>
                         77 ;
  005666: 4EB83A54       78 LTCSR    JSR     CLRCSR         ;CLEAR THE CURSOR
  00566A: 4A381510       79          TST.B   PMTPOS         ;AT PROMPT POS?
  00566E: 6792           80          BEQ     GETVR0         ;IF YES, IGNORE CMD
                         81 ;
  005670: 4A381542       82          TST.B   COLUMN         ;AT COLUMN 0 ?
  005674: 660A           83          BNE     LTCSRB         ;CONT ON SAME LN
                         84 ;
  005676: 53381540       85          SUBQ.B  #1,LINE        ;NXT LN UP ON CRT
  00567A: 11FC00281542   86          MOVE.B  #40,COLUMN     ;RIGHT OF CRT
                         87 ;
                         88 ;   <MOVE THE CURSOR LEFT ONE POSITION>
                         89 ;
  005680: 4221           90 LTCSRB   CLR.B   -(A1)          ;SET NEW EOL MARK
  005682: 53381542       91          SUBQ.B  #1,COLUMN
  005686: 7EA0           92          MOVEQ   #$A0,D7        ;A SPACE CHR$
  005688: 4EB83A9C       93          JSR     SNDCHR         ;BLANK DIGIT
  00568C: 4EB83A54       94          JSR     CLRCSR         ;CLEAR CURSOR
  005690: 53381542       95          SUBQ.B  #1,COLUMN      ;BACK UP COLUMN
  005694: 53381510       96          SUBQ.B  #1,PMTPOS      ;UPDATE STR LENGHT
  005698: 4EB83A50       97          JSR     SETCSR         ;SET THE CURSOR
  00569C: 6000FF64       98          BRA     GETVR0         ;GET A KEYPRESS
                         99 ;
                        100 ;<** PROCESS CTRL-C **>
                        101 ;
  0056A0: 4EB83A54      102 CTLC     JSR     CLRCSR         ;CLEAR CURSOR
  0056A4: 42381530      103          CLR.B   CTLCFLG        ;SET STOP FLAG
  0056A8: 42381542      104          CLR.B   COLUMN         ;RESET COLUMN
  0056AC: 601C          105          BRA     GET8DB         ;EXIT INPUT FN
                        106 ;
                        107 ;   <** PROCESS CARRIAGE RETURN **>
                        108 ;
  0056AE: 4211          109 GET8D    CLR.B   (A1)           ;SET EOL MARKER
  0056B0: 49F81700      110          LEA     TEMPB,A4       ;START OF BUFR
  0056B4: 4A14          111          TST.B   (A4)           ;BUFR EMPTY?
  0056B6: 6718          112          BEQ     GET8G          ;SOUND BELL
                        113 ;

                        115 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        116 ;
                        117 ;  PROCESS THE INPUT BUFFER
                        118 ;
  0056B8: 4EB820D4      119          JSR     NUMEVAL        ;EVALUATE INPUT
                        120 ;
  0056BC: 4EB83A54      121          JSR     CLRCSR         ;CLEAR CURSOR
  0056C0: 7E0D          122          MOVEQ   #$0D,D7        ;<CR>
  0056C2: 4EB83A9C      123          JSR     SNDCHR         ;SEND TO CRT
  0056C6: 42381542      124          CLR.B   COLUMN         ;RESET COL POS
                        125 ;
  0056CA: 4CDF7FFF      126 GET8DB   MOVEM.L (A7)+,D0-D7/A0-A6  ;RESTORE REGS
  0056CE: 4E75          127          RTS                    ;INPUT FN DONE
                        128 ;
  0056D0: 4EB83A34      129 GET8G    JSR     BELL           ;SOUND BELL
  0056D4: 6000FF2C      130          BRA     GETVR0
                        131 ;
  0056D8: 02            132 CTLBLX   DC.B    $02            ;LEN OF TBL
  0056D9: 8D            133          DC.B    $8D            ;<CR>
  0056DA: 88            134          DC.B    $88            ;LEFT ARROW
  0056DB: 83            135          DC.B    $83            ;CTL-C
  0056DC: 56AE          136 FNTBLX   DC.W    GET8D
  0056DE: 5666          137          DC.W    LTCSR
  0056E0: 56A0          138          DC.W    CTLC           ;EXIT
                        139 ;
                        140 ;---------------------
                        141 ;-- EDIT FN: HEXGET --
                        142 ;---------------------
                        143 ;
                        144 ; THIS CODE EVALUATES A HEXADECIMAL NUMBER AND
                        145 ; CHECKS CONFORMANCE WITH A MAX AND MIN LENGTH.
                        146 ;
                        147 ; THE ABSOLUTE MAXIMUM PERMISSIBLE LENGTH IS 16,
                        148 ; THE MINIMUM PERMISSIBLE LENGTH IS 0 HEX CHARS.
                        149 ; A6 POINTS TO THE TEXT BUFFER
                        150 ; D1 CONTAINS THE MAXIMUM LENGTH OF THE HEX NUMBER
                        151 ; D2 CONTAINS THE MINIMUM LENTH OF THE HEX NUMBER
                        152 ;
                        153 ; THE VALUE (64 BITS MAX) IS RET'D IN D3.L, D4.L.
                        154 ; D4.L CONTAINS THE LOW ORDER LONG WORD.
                        155 ;
  0056E2: 1E1E          156 HEXGET   MOVE.B  (A6)+,D7       ;SHOULD BE $
  0056E4: 0C0700A4      157          CMPI.B  #"$",D7
  0056E8: 6654          158          BNE     NOTDOL         ;ERROR IF NOT
                        159 ;
  0056EA: 4240          160          CLR.W   D0             ;CLR CHAR COUNT
  0056EC: 4283          161          CLR.L   D3             ;CLEAR VALUE IN
  0056EE: 4284          162          CLR.L   D4             ;D3.L, D4.L
                        163 ;

                        165 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        166 ;
                        167 ; EVALUATE HEX CHARS UNTIL TERMINATOR FOUND
                        168 ;
  0056F0: 1E1E          169 HEXGET1  MOVE.B  (A6)+,D7
  0056F2: 671C          170          BEQ     HEXGETX        ;DONE IF ZERO
                        171 ;
  0056F4: 0C0700AC      172          CMPI.B  #",",D7        ;COMMA?
  0056F8: 6716          173          BEQ     HEXGETX        ;DONE IF SO
                        174 ;
  0056FA: 4EB8571A      175          JSR     CHKHEX         ;HEX ?
  0056FE: E907          176          ASL.B   #4,D7          ;VALUE TO B7 - B4
                        177 ;
                        178 ; SHIFT THE 4 BIT VALUE INTO THE RESULT FIELD
                        179 ;
  005700: 7C04          180          MOVEQ   #4,D6          ;SET FOR 4 BITS
  005702: DE07          181 HEXGET2  ADD.B   D7,D7          ;SHIFT LEFT
  005704: D984          182          ADDX.L  D4,D4          ;SHIFT LEFT
  005706: D783          183          ADDX.L  D3,D3          ;SHIFT LEFT
  005708: 5306          184          SUBQ.B  #1,D6          ;DECR BIT COUNT
  00570A: 66F6          185          BNE     HEXGET2        ;SHIFT 4 BITS
                        186 ;
  00570C: 5240          187          ADDQ.W  #1,D0          ;INCR HEX CHAR CNT
  00570E: 60E0          188          BRA     HEXGET1        ;NEXT CHAR
                        189 ;
                        190 ; TERMINATOR FOUND, CHECK FOR LEGAL # CHARS
                        191 ;
  005710: B200          192 HEXGETX  CMP.B   D0,D1          ;> MAX ?
  005712: 6526          193          BCS     WRONGN         ;ERROR IF SO
                        194 ;
  005714: B400          195          CMP.B   D0,D2          ;< MIN ?
  005716: 6222          196          BHI     WRONGN         ;ERROR IF SO
                        197 ;
  005718: 4E75          198          RTS                    ;RETURN WITH VALUE
                        199 ;
                        200 ; CHECK FOR A LEGAL HEX CHAR & RET'N VALUE
                        201 ;
  00571A: 0C0700B0      202 CHKHEX   CMPI.B  #$B0,D7        ;LESS THAN $B0?
  00571E: 6516          203          BCS     NOTHEX         ;NOT HEX IF SO
                        204 ;
  005720: 040700B0      205          SUBI.B  #$B0,D7        ;SUBTRACT $B0
  005724: 0C07000A      206          CMPI.B  #$0A,D7        ;OVER #9 ?
  005728: 6402          207          BCC     CHKHX1         ;SKIP IF SO
                        208 ;
  00572A: 4E75          209 CHKHXX   RTS                    ;RETURN WITH VALUE
                        210 ;
  00572C: 5F07          211 CHKHX1   SUBQ.B  #7,D7          ;SUBTRACT #7
  00572E: 6B06          212          BMI     NOTHEX         ;NOT HEX IF UNDFL
                        213 ;
  005730: 0C070010      214          CMPI.B  #$10,D7        ;OVER $0F ?
  005734: 65F4          215          BCS     CHKHXX         ;O.K. IF NOT
                        216 ;
  005736: 7E05          217 NOTHEX   MOVEQ   #5,D7          ;NOT A HEX CHAR
  005738: 6006          218          BRA     ERR6
  00573A: 7E0B          219 WRONGN   MOVEQ   #11,D7         ;WRONG # CHARS
  00573C: 6002          220          BRA     ERR6
  00573E: 7E0C          221 NOTDOL   MOVEQ   #12,D7         ;NOT A "$"
  005740: 4EF86008      222 ERR6     JMP     ERROR          ;REPORT ERROR
                        223 ;
                                     CHAIN   LIBR6

                          2          LIST
                          3 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          4 ;
                          5 ;-------------------
                          6 ;-- COMMAND: RUN  --
                          7 ;-------------------
                          8 ;
                          9 ; RUN THE COMPILED HALGOL PROGRAM !
                         10 ;
                         11 ; 1ST) CLEAR THE CURSOR & SEND <CR> TO CONSOLE
                         12 ;
                         13 ; 2ND) SET UP TABLE PTRS & CTL-C FLAG
                         14 ;
                         15 ; 3RD) SET A3 AS THE HALGOL STACK PTR
                         16 ;
                         17 ; 4TH) INIT THE VARIABLES TO ZERO AND GO !
                         18 ;
                         19 ; 5TH) SET THE RUN-TIME ERROR REPORTING FLAG
                         20 ;
  005744: 11FC00011900   21 RUN      MOVE.B  #1,MODE        ;ONE = RUN MODE
  00574A: 4EB83A54       22          JSR     CLRCSR         ;CLEAR CURSOR
  00574E: 21F820B820BC   23          MOVE.L  SYSOUT,ACTIVE  ;CONSOLE ACTIVE
  005754: 4EB83A88       24          JSR     LINFEED        ;<CR>
                         25 ;
                         26 ; SET THE CTL-C FLAG
                         27 ;
  005758: 11FC00011530   28          MOVE.B  #1,CTLCFLG     ;SET FLG
                         29 ;
                         30 ; ASK IF KB IS TO BE POLLED?
                         31 ;
  00575E: 42381518       32          CLR.B   KBTEST         ;FOR NOW
                         33 ;
                         34 ; SET UP THE HALGOL STACK POINTER
                         35 ;
  005762: 47F81900       36          LEA     WRKBUF+256,A3  ;INIT A3
  005766: 42A3           37          CLR.L   -(A3)          ;0S TO MARK "RETN
  005768: 4263           38          CLR.W   -(A3)          ;W/O GOSUB" ERROR
  00576A: 31FC14FE14FE   39          MOVE.W  #FORSTK,FORSTK  ;INIT 'FOR' STK PTR
                         40 ;
                         41 ; INITIALIZE THE FLOATING POINT VARIABLES TO ZERO
                         42 ;
  005770: 203815E4       43          MOVE.L  EOV,D0         ;END OF FP TBL
  005774: 2C7815E0       44          MOVEA.L SOV,A6         ;START OF FP #S
  005778: 908E           45          SUB.L   A6,D0          ;END - START
  00577A: E648           46          LSR.W   #3,D0          ;# OF FP #S
  00577C: 6004           47          BRA     INITVAR        ;START CLR PROCESS
                         48 ;
  00577E: 429E           49 INITLP   CLR.L   (A6)+          ;1ST HALF OF FP #
  005780: 429E           50          CLR.L   (A6)+          ;2ND HALF OF FP #
  005782: 51C8FFFA       51 INITVAR  DBF     D0,INITLP      ;CONTINUE
                         52 ;
                         53 ; THE VARIABLES HAVE BEEN INITIALIZED.  GO !
                         54 ;
                         55 ; SET THE RUN-TIME ERROR REPORTING FLAG
                         56 ;
  005786: 08B800041508   57          BCLR    #4,SFLAG       ;REPORT LN # ERR
                         58 ;

  00578C: 4EB8534C       60          JSR     GETFLD         ;LOOK FOR PARM
  005790: 4A05           61          TST.B   D5             ;PARM PRESENT ?
  005792: 6724           62          BEQ     RUNB           ;IF NO PARM FLD
                         63 ;
                         64 ; CHECK TO SEE IF PARM IS A PROGRAM LINE
                         65 ;
  005794: 4EB85364       66          JSR     EXAMN          ;SEE IF VALID LN
  005798: 4A07           67          TST.B   D7             ;VALID LINE # ?
  00579A: 6720           68          BEQ     RUNX           ;EXIT IF NOT
                         69 ;
                         70 ; CHECK TO SEE IF LINE NUMBER IS IN RANGE (0 - 65534)
                         71 ;
  00579C: 4EB8514C       72          JSR     CHKLN          ;CHK LINE RANGE
                         73 ;
                         74 ; 'D1' CONTAINS THE LINE NUMBER FOR THE START OF
                         75 ; THE HALGOL PROGRAM. SEARCH THE LINE NUMBER TABLE
                         76 ; AND LOOK FOR THE CORRESPONDING LINE ADDRESS
                         77 ;
  0057A0: 4EB85184       78          JSR     SRCH1          ;SEE IF IN LN TBL
  0057A4: 4A07           79          TST.B   D7             ;LINE # FOUND ?
  0057A6: 6714           80          BEQ     RUNX           ;IF NOT, THEN EXIT
                         81 ;
                         82 ; SEARCH FOR THE START OF THE HALGOL OBJECT CODE
                         83 ;
  0057A8: 2C781590       84          MOVEA.L SOLA,A6        ;LINE ADDRESS TBL
  0057AC: E54B           85          LSL.W   #2,D3          ;INDEX -> OFFSET
  0057AE: 4DF63000       86          LEA     (A6,D3),A6     ;ADDRESS POINTER
  0057B2: 2C56           87          MOVEA.L (A6),A6        ;OBJECT ADDRESS
  0057B4: 4EF837C4       88          JMP     BEGIN+4        ;EXECUTE HALGOL
                         89 ;
  0057B8: 4EF837C0       90 RUNB     JMP     BEGIN          ;EXECUTE HALGOL
                         91 ;
  0057BC: 4E75           92 RUNX     RTS                    ;DONE
  0057BE: 4EF837C0       93          JMP     BEGIN          ;EXEC HALGOL
                         94 ;
                         95          LIST

                         97 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         98 ;
                         99 ;---------------------
                        100 ;-- ROUTINE: REWIND --
                        101 ;---------------------
                        102 ;
                        103 ; COMPILATION IS DONE, NOW STORE THE HALGOL CODE.
                        104 ; CALCULATE AND STORE THE OBJECT CODE SIZE.
                        105 ;
  0057C2: 240B          106 REWIND   MOVE.L  A3,D2          ;WORK BUFF END
  0057C4: 47F81800      107          LEA     WRKBUF,A3      ;REWIND BUFFER
  0057C8: 948B          108          SUB.L   A3,D2          ;WORK BUFFER LENGTH
  0057CA: 5182          109          SUBQ.L  #8,D2          ;ADJ FOR LINE, FLG
  0057CC: E28A          110          LSR.L   #1,D2          ;BYTES TO WORDS
  0057CE: 31C21516      111          MOVE.W  D2,NUMWDS      ;STORE # WORDS
                        112 ;
                        113 ; ADD NEW LINE OR REPLACE OLD LINE ?
                        114 ;
  0057D2: 2878158C      115          MOVEA.L EOLN,A4        ;END OF LN TBL
  0057D6: 381B          116          MOVE.W  (A3)+,D4       ;FETCH LINE #
  0057D8: 3E1B          117          MOVE.W  (A3)+,D7       ;COND FLG = 1 OR 0
  0057DA: 676C          118          BEQ     NEWLINE        ;INSERT NEW LINE
                        119 ;
                        120 ; REPLACE EXISTING CODE FOR CURRENT LINE NUMBER
                        121 ;
                        122 ; 1ST) CALCULATE EXISTING CODE SIZE
                        123 ; 2ND) REPLACE EXISTING WITH NEW CODE IN WRKBUF
                        124 ;
  0057DC: 361B          125          MOVE.W  (A3)+,D3       ;GET LINE # INDEX
  0057DE: 544B          126          ADDQ.W  #2,A3          ;ADJ BUFFER PTR
  0057E0: 22781590      127          MOVEA.L SOLA,A1        ;LINE ADDR TABLE
  0057E4: E54B          128          LSL.W   #2,D3          ;INDEX -> OFFSET
  0057E6: 24713000      129          MOVE.L  (A1,D3),A2     ;STRT OF OBJ CODE
  0057EA: 21CA1534      130          MOVE.L  A2,PARM1       ;SAVE FOR LATER
  0057EE: E44B          131          LSR.W   #2,D3          ;RESTORE INDEX
                        132 ;
                        133 ; GET START OF NEXT PROGRAM LINE CODE ADDRESS
                        134 ;
  0057F0: 3003          135          MOVE.W  D3,D0          ;CURRENT CODE INDX
  0057F2: 5240          136          ADDQ.W  #1,D0          ;NEXT CODE INDX
  0057F4: E548          137          LSL.W   #2,D0          ;INDEX -> OFFSET
  0057F6: 28310000      138          MOVE.L  (A1,D0),D4     ;NEXT OBJ CODE ADR
                        139 ;
                        140 ; COMPARE NEW CODE TO OLD CODE SIZE
                        141 ;
  0057FA: 988A          142          SUB.L   A2,D4          ;START-END ADDR
  0057FC: E24C          143          LSR.W   #1,D4          ;BYTE -> WORD CNT
  0057FE: B8781516      144          CMP.W   NUMWDS,D4      ;COMPARE SIZE
  005802: 40F8150A      145          MOVE    SR,SFLAG+2     ;SAVE STATUS FLGS
  005806: 67000086      146          BEQ.L   STASIS         ;REPLACE AS IS
  00580A: 6418          147          BCC     CMPRCOD        ;SKIP TO COMPRESS
                        148 ;
                        149 ; THE NEW CODE IS LARGER;  EXPAND THE OBJ CODE.
                        150 ;
  00580C: 34381516      151          MOVE.W  NUMWDS,D2      ;NEW CODE SIZE
  005810: 9444          152          SUB.W   D4,D2          ;OLD-NEW=SIZE
  005812: 21C21538      153          MOVE.L  D2,TEMP        ;SAVE FOR LATER
  005816: 28781584      154          MOVEA.L EOH,A4         ;END OF OBJ CODE
  00581A: 4EB85216      155          JSR     EXPAND         ;EXPAND OBJ CODE
  00581E: 21C91584      156          MOVE.L  A1,EOH         ;NEW ENDING ADR
  005822: 6070          157          BRA     STASIS1        ;STORE OBJ CODE
                        158 ;

                        160 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        161 ;
                        162 ; THE NEW CODE IS SMALLER; CONTRACT THE OBJ CODE.
                        163 ;
  005824: 3404          164 CMPRCOD  MOVE.W  D4,D2          ;OLD CODE SIZE
  005826: 94781516      165          SUB.W   NUMWDS,D2      ;OLD-NEW=DEL AMT
  00582A: 9842          166          SUB.W   D2,D4          ;CALC DEL ADR INDX
  00582C: 21C21538      167          MOVE.L  D2,TEMP        ;SAVE FOR TBL ADJ
  005830: E34C          168          LSL.W   #1,D4          ;INDEX -> OFFSET
  005832: 45F24000      169          LEA     (A2,D4),A2     ;CONTRACT @ 'A2'
  005836: 28781584      170          MOVEA.L EOH,A4         ;END OF OBJ CODE
  00583A: 4EB852A6      171          JSR     CONTRACT       ;DEL 'D2' WORDS
  00583E: 21CA1584      172          MOVE.L  A2,EOH         ;NEW ENDING ADR
  005842: 24781534      173          MOVEA.L PARM1,A2       ;GET OBJ CODE ADR
  005846: 6046          174          BRA     STASIS         ;STORE OBJ CODE
                        175 ;
                        176 ;   ADD A NEW LINE # TO THE LINE # TABLE.
                        177 ;
  005848: 5278154C      178 NEWLINE  ADDQ.W  #1,NLINES      ;NEW LINE COUNT
  00584C: 4287          179          CLR.L   D7             ;INIT WRK REG
  00584E: 7401          180          MOVEQ   #1,D2          ;INSERT 1 WORD
  005850: 361B          181          MOVE.W  (A3)+,D3       ;GET ENTRY INDEX
  005852: 3E1B          182          MOVE.W  (A3)+,D7       ;GET INSERT ADR
  005854: CF8A          183          EXG     D7,A2          ;EXPANSION ADR
  005856: 4EB8520C      184          JSR     INSERT         ;ADD TO LINE LIST
  00585A: 24781588      185          MOVEA.L SOLN,A2        ;START OF TBL
  00585E: 3438154C      186          MOVE.W  NLINES,D2      ;NUMBER OF LINES
  005862: E34A          187          LSL.W   #1,D2          ;INDEX -> OFFSET
  005864: 48722000      188          PEA     (A2,D2)        ;-CALCULATE AND
  005868: 21DF158C      189          MOVE.L  (A7)+,EOLN     ;STORE NEW ADR -
                        190 ;
                        191 ; FETCH THE CURRENT PROGRAM LINE ADDRESS
                        192 ;
  00586C: 24781590      193          MOVEA.L SOLA,A2        ;START OF TABLE
  005870: E54B          194          LSL.W   #2,D3          ;INDEX -> OFFSET
  005872: 24723000      195          MOVE.L  (A2,D3),A2     ;INSERT ADR
  005876: E44B          196          LSR.W   #2,D3          ;RESTORE INDEX
                        197 ;
                        198 ; CALCULATE THE DIFFERENCE BETWEEN NEW & OLD
                        199 ;
  005878: 21CA1534      200          MOVE.L  A2,PARM1       ;SAVE INSRT ADR
  00587C: 28781584      201          MOVEA.L EOH,A4         ;OBJ CODE END ADR
  005880: 34381516      202          MOVE.W  NUMWDS,D2      ;EXPAND BY 'D2'
  005884: 4EB85216      203          JSR     EXPAND         ;EXPAND OBJ CODE
  005888: 21C91584      204          MOVE.L  A1,EOH         ;NEW ENDING ADR
  00588C: 6006          205          BRA     STASIS1        ;STORE OBJ CODE
                        206 ;
  00588E: 4282          207 STASIS   CLR.L   D2             ;DIFF = 0
  005890: 4EB852E4      208          JSR     LBLADJU        ;SVC NEW LABEL
                        209 ;
  005894: 34381516      210 STASIS1  MOVE.W  NUMWDS,D2      ;GET # OF WORDS
  005898: 34DB          211          MOVE.W  (A3)+,(A2)+    ;STORE A WORD
  00589A: 5342          212          SUBQ.W  #1,D2          ;DECR WORD COUNT
  00589C: 66FA          213          BNE     STASIS1+4      ;LOOP TIL ZERO
                        214 ;

                        216 ;-------------------------
                        217 ;-- SUBROUTINE: REWIND2 --
                        218 ;-------------------------
                        219 ;
  00589E: 47F81800      220 REWIND2  LEA     WRKBUF,A3      ;REWIND WRKBUF
  0058A2: 4A6B0002      221          TST.W   $2(A3)         ;NEW LINE ADDED ?
  0058A6: 6638          222          BNE     REWNDZ         ;IF NOT, CHK CODE
                        223 ;
                        224 ;   ADD NEW LINE ADDRESS TO TBL
                        225 ;
  0058A8: 24781590      226          MOVEA.L SOLA,A2        ;START OF TBL
  0058AC: E54B          227          LSL.W   #2,D3          ;INDEX -> OFFSET
  0058AE: 45F23000      228          LEA     (A2,D3),A2     ;EXPAND ADR
  0058B2: E44B          229          LSR.W   #2,D3          ;RESTORE INDEX
  0058B4: 28781594      230          MOVEA.L EOLA,A4        ;TBL END ADR
  0058B8: 7402          231          MOVEQ   #2,D2          ;EXPAND BY 2 WRDS
  0058BA: 4EB85216      232          JSR     EXPAND         ;EXPAND TABLE
  0058BE: 21C91594      233          MOVE.L  A1,EOLA        ;NEW TBL END ADR
  0058C2: 24B81534      234          MOVE.L  PARM1,(A2)     ;LINE ADR TO TBL
                        235 ;
                        236 ;   ADJUST THE LINE ADDRESS TABLE ENTRIES
                        237 ;
  0058C6: 4282          238          CLR.L   D2             ;INIT WORK REG
  0058C8: 34381516      239          MOVE.W  NUMWDS,D2      ;CODE SIZE
  0058CC: E38A          240          LSL.L   #1,D2          ;BYTE -> WORD CNT
  0058CE: 584A          241          ADDQ    #4,A2          ;ADJUST TBL ADR
  0058D0: 3838154C      242          MOVE.W  NLINES,D4      ;# OF ENTRIES
  0058D4: 9843          243          SUB.W   D3,D4          ;AMT TO ADJUST
  0058D6: 6002          244          BRA     REWIN2B        ;BEGIN PROCESS
                        245 ;
  0058D8: D59A          246 REWIN2A  ADD.L   D2,(A2)+       ;ADD OFFSET VALUE
  0058DA: 51CCFFFC      247 REWIN2B  DBF     D4,REWIN2A
                        248 ;
  0058DE: 6032          249          BRA     EXITLN         ;EXIT PGM LINE
                        250 ;
  0058E0: 24781590      251 REWNDZ   MOVE.L  SOLA,A2        ;STRT OF TBL
  0058E4: E54B          252          LSL.W   #2,D3          ;INDEX -> OFFSET
  0058E6: 45F23000      253          LEA     $0(A2,D3),A2   ;ADJUSTMENT ADR
  0058EA: E44B          254          LSR.W   #2,D3          ;RESTORE INDEX
  0058EC: 24B81534      255          MOVE.L  PARM1,(A2)     ;STORE NEW ADR
  0058F0: 588A          256          ADDQ.L  #4,A2          ;ADJUST ADR
  0058F2: 4282          257          CLR.L   D2             ;INIT WORK REG
  0058F4: 24381538      258          MOVE.L  TEMP,D2        ;CODE SIZE
  0058F8: E38A          259          LSL.L   #1,D2          ;ADR SHIFT AMOUNT
  0058FA: 3838154C      260          MOVE.W  NLINES,D4      ;LINE # TBL SIZE
  0058FE: 9843          261          SUB.W   D3,D4          ;ADJUST 'D4' ADRS
  005900: 46F8150A      262          MOVE    SFLAG+2,SR     ;CODE STATUS
  005904: 670C          263          BEQ     EXITLN         ;IF CODE SAME SIZE
  005906: 6506          264          BCS     REWNC          ;IF CODE LARGER
  005908: 4482          265          NEG.L   D2             ;CODE SMALLER
  00590A: 6002          266          BRA     REWNC          ;BEGIN TBL ADJMNT
                        267 ;
  00590C: D59A          268 REWND    ADD.L   D2,(A2)+       ;ADD OFFSET VALUE
  00590E: 51CCFFFC      269 REWNC    DBF     D4,REWND
                        270 ;

                        272 ;------------------------
                        273 ;-- SUBROUTINE: EXITLN --
                        274 ;------------------------
                        275 ;
                        276 ; THIS ROUTINE EXITS THE PROGRAM LINE COMPLETLY
                        277 ;
                        278 ; 1ST) LOOK FOR THE START OF THE LINE
                        279 ; 2ND) LOOK FOR THE END OF THE LINE AND EXIT.
                        280 ;
  005912: 4EB83A54      281 EXITLN   JSR     CLRCSR         ;CLEAR THE CURSOR
  005916: 083800001508  282          BTST    #0,SFLAG       ;CLIST ?
  00591C: 675C          283          BEQ     REWX           ;IF CLIST
                        284 ;
  00591E: 48A7C000      285          MOVEM.W D0-D1,-(A7)    ;SAVE REGISTERS
  005922: 4280          286          CLR.L   D0             ;INIT WORK REG
  005924: 22381546      287          MOVE.L  SSFFLGS,D1     ;CRT LINE FLAGS
  005928: 10381540      288          MOVE.B  LINE,D0        ;CURRENT LINE
  00592C: 5300          289          SUBQ.B  #1,D0          ;NEXT LINE UP
                        290 ;
  00592E: 0101          291          BTST    D0,D1          ;LINE SELF-SUF?
  005930: 6618          292          BNE     EXTLB          ;IF YES
                        293 ;
  005932: 5200          294 EXTLA    ADDQ.B  #1,D0          ;NEXT LINE DOWN
  005934: 0101          295          BTST    D0,D1          ;LINE SELF-SUF?
  005936: 67FA          296          BEQ     EXTLA          ;IF NOT
                        297 ;
                        298 ; CHECK TO SEE IF AT BOTTOM OF THE CRT
                        299 ;
  005938: 0C000017      300          CMPI.B  #23,D0         ;BOTTEM OF CRT?
  00593C: 6606          301          BNE     EXTLA0         ;IF NOT AT BOTTOM
                        302 ;
  00593E: 4EB83A4C      303          JSR     CMD9           ;SCROLL THE CRT
  005942: 6002          304          BRA     EXTLA1         ;STORE NEW LINE
                        305 ;
  005944: 5200          306 EXTLA0   ADDQ.B  #1,D0          ;NEXT LINE DOWN
                        307 ;
  005946: 11C01540      308 EXTLA1   MOVE.B  D0,LINE        ;SET NEW LINE #
                        309 ;
  00594A: 4C9F0003      310 EXTLB    MOVEM.W (A7)+,D0-D1    ;RESTORE REGS
                        311 ;
                        312 ; TEST IF THE '.NNN' COMMAND WAS GIVEN, IF NOT
                        313 ; AUTO INCREMENT FROM THE LAST LINE NUMBER BY 10
                        314 ; AND SEND IT TO THE CRT & EXIT
                        315 ;
                        316 ;
  00594E: 083800021508  317          BTST    #2,SFLAG       ;EDIT CMD GIVEN?
  005954: 671E          318          BEQ     STASIX         ;IF YES, THEN EXIT
                        319 ;
  005956: 24781588      320          MOVEA.L SOLN,A2        ;START OF LN TBL
  00595A: 2878158C      321          MOVEA.L EOLN,A4        ;END OF LN TBL
  00595E: 322CFFFE      322          MOVE.W  -2(A4),D1      ;FETCH LAST LINE
  005962: E34B          323          LSL.W   #1,D3          ;INDEX -> OFFSET
  005964: B2723000      324          CMP.W   (A2,D3),D1     ;EDIT # = LAST #?
  005968: 660A          325          BNE     STASIX         ;EXIT IF NOT
                        326 ;
  00596A: 0641000A      327          ADDI.W  #10,D1         ;NEXT LINE #
  00596E: 6504          328          BCS     STASIX         ;EXIT IF > 65535
                        329 ;
  005970: 4EB85228      330          JSR     IPRINT1        ;SEND TO I/O
                        331 ;
  005974: 08F800021508  332 STASIX   BSET    #2,SFLAG       ;RESET EDIT FLG
  00597A: 4E75          333 REWX     RTS                    ;DONE
                        334 ;

                        336 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        337 ;
                        338 ;---------------------
                        339 ;-- ROUTINE: DELETE --
                        340 ;---------------------
                        341 ;
                        342 ; THIS ROUTINE IS USED TO DELETE HALGOL OBJECT CODE
                        343 ;
                        344 ; A0: CONTAINS THE POINTER TO THE 'INPUT' BUFFER
                        345 ;
  00597C: 3838154C      346 DELFN    MOVE.W  NLINES,D4      ;# OF LINE #S
  005980: 673C          347          BEQ     DELFNX         ;IF 0, THEN DONE
                        348 ;
  005982: 4EB85BA6      349          JSR     RANGCHK        ;SERVICE RANGE
                        350 ;
                        351 ; GET START OF OBJECT CODE THAT IS TO BE DELETED
                        352 ;
  005986: 32381534      353          MOVE.W  PARM1,D1       ;1ST PARM FLD
  00598A: 4EB85184      354          JSR     SRCH1          ;SEARCH LN # TBL
                        355 ;
  00598E: 4A07          356          TST.B   D7             ;LN # FOUND ?
  005990: 6610          357          BNE     DELFN0         ;DEL LINE IF YES
                        358 ;
  005992: 4A04          359          TST.B   D4             ;RANGE EXCEEDED?
  005994: 6B28          360          BMI     DELFNX         ;IF YES, THEN DONE
                        361 ;
  005996: 34381534      362          MOVE.W  PARM1,D2       ;1ST PARM FLD
  00599A: 94781536      363          SUB.W   PARM2,D2       ;1ST-2ND PARM FLD
  00599E: 641E          364          BCC     DELFNX         ;IF RANGE EXCEEDED
  0059A0: 671C          365          BEQ     DELFNX         ;IF LINE NOT FOUND
                        366 ;
  0059A2: E34B          367 DELFN0   LSL.W   #1,D3          ;INDEX -> OFFSET
  0059A4: 20781588      368          MOVEA.L SOLN,A0        ;STRT OF LN TBL
  0059A8: 41F03000      369          LEA     (A0,D3),A0     ;LN ADDRPTR
                        370 ;
  0059AC: 3210          371 DELFLP   MOVE.W  (A0),D1        ;FETCH LN #
  0059AE: 0C41FFFF      372          CMPI.W  #$FFFF,D1      ;MAX LINE #?
  0059B2: 670A          373          BEQ     DELFNX         ;IF YES, THEN DONE
                        374 ;
  0059B4: B2781536      375          CMP.W   PARM2,D1       ;RANGE EXCEEDED?
  0059B8: 6204          376          BHI     DELFNX         ;IF YES, THEN DONE
                        377 ;
  0059BA: 6104          378          BSR     DELFA          ;DELETE OBJ CODE
                        379 ;
  0059BC: 60EE          380          BRA     DELFLP         ;CONTINUE
                        381 ;
  0059BE: 4E75          382 DELFNX   RTS                    ;DONE
                        383 ;
  0059C0: 4EB85184      384 DELFA    JSR     SRCH1          ;LOOKUP LIN #
  0059C4: 4A07          385          TST.B   D7             ;LIN # FOUND?
  0059C6: 6760          386          BEQ     SNGLX          ;LIN # NOT FOUND
                        387 ;

                        389 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        390 ;
                        391 ; LOOK UP CORRESPONDING OBJECT CODE
                        392 ;
  0059C8: 2C781590      393 SNGLA    MOVEA.L SOLA,A6        ;START OF TBL
  0059CC: 3203          394          MOVE.W  D3,D1          ;PROG LINE INDEX
  0059CE: E549          395          LSL.W   #2,D1          ;INDEX -> OFFSET
  0059D0: 24761000      396          MOVEA.L (A6,D1),A2     ;STRT DEL @ 'A2'
  0059D4: 21CA1538      397          MOVE.L  A2,TEMP        ;SAVE START ADR
                        398 ;
                        399 ; GET THE START OF THE NEXT PROGRAM LINE
                        400 ;
  0059D8: 3203          401          MOVE.W  D3,D1          ;CURRNT PROG LINE
  0059DA: 5241          402          ADDQ.W  #1,D1          ;NEXT PROG LINE
  0059DC: E549          403          LSL.W   #2,D1          ;INDEX -> OFFSET
  0059DE: 24361000      404          MOVE.L  (A6,D1),D2     ;NXT PRG LINE ADR
                        405 ;
                        406 ; CALCULATE THE AMOUNT TO BE DELETED
                        407 ;
  0059E2: 944A          408          SUB.W   A2,D2          ;DELETE 'D2' WORDS
  0059E4: E24A          409          LSR.W   #1,D2          ;BYTE -> WORD CNT
                        410 ;
                        411 ; ADJUST ANY STATEMENT LABELS AS NEEDED
                        412 ;
  0059E6: 24781538      413          MOVEA.L TEMP,A2        ;START OF LBL ADJ
  0059EA: 4EB852C2      414          JSR     VOIDLBL        ;ADJ LABEL ADRS
                        415 ;
                        416 ; ADJUST THE HALGOL CODE TO REFLECT NEW CHANGES
                        417 ;
  0059EE: 28781584      418          MOVEA.L EOH,A4         ;END OF OBJ CODE
  0059F2: 4EB852A6      419          JSR     CONTRACT       ;OBJECT CODE
  0059F6: 21CA1584      420          MOVE.L  A2,EOH         ;NEW END ADR
                        421 ;
                        422 ; ADJUST THE 'LINE ADDRESS TABLE'
                        423 ;
  0059FA: 24781590      424 ADJTBL   MOVEA.L SOLA,A2        ;START OF TBL
  0059FE: E54B          425          LSL.W   #2,D3          ;INDEX -> OFFSET
  005A00: 45F23000      426          LEA     (A2,D3),A2     ;DELETION ADR
  005A04: E44B          427          LSR.W   #2,D3          ;RESTORE INDEX
  005A06: 3838154C      428          MOVE.W  NLINES,D4      ;NUMBER OF LINES
  005A0A: 9843          429          SUB.W   D3,D4          ;ADJ 'D4' ENTRIES
  005A0C: 4482          430          NEG.L   D2             ;ADD NEG OFFSET
  005A0E: 49EA0004      431          LEA     $4(A2),A4      ;STRT OF SHIFT ADR
  005A12: 6004          432          BRA     ADJTA1         ;BEGIN
                        433 ;
  005A14: 249C          434 ADJTA0   MOVE.L  (A4)+,(A2)     ;XFER WORD
  005A16: D59A          435          ADD.L   D2,(A2)+       ;ADD SHIFT AMOUNT
  005A18: 51CCFFFA      436 ADJTA1   DBF     D4,ADJTA0      ;CONT 'TILL DONE
  005A1C: 486AFFFC      437          PEA     -4(A2)         ;- CALCULATE &
  005A20: 21DF1594      438          MOVE.L  (A7)+,EOLA     ;STORE END ADR -
                        439 ;
                        440 ; DELETE PROGRAM LINE FROM THE 'LINE NUMBER TABLE'
                        441 ;
  005A24: 4EB85282      442          JSR     DELETE         ;DEL LINE NUMBER
                        443 ;
  005A28: 4E75          444 SNGLX    RTS                    ;DONE
                        445 ;
                                     CHAIN   LIBR7

                          2 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          3 ;
                          4 ;-------------------
                          5 ;-- COMMAND: LIST --
                          6 ;-------------------
                          7 ;
                          8 ; THIS ROUTINE PERFORMS THE LIST COMMAND
                          9 ;
                         10 ; A0: CONTAINS THE POINTER TO THE 'INPUT' BUFFER
                         11 ;
  005A2A: 21F820B020BC   12 LIST     MOVE.L  LISTER,ACTIVE  ;LIST ACTIVE
  005A30: 2A7820BC       13          MOVEA.L ACTIVE,A5      ;SET UP I/O
  005A34: 42381900       14          CLR.B   MODE           ;SET EDIT MODE
  005A38: 3838154C       15          MOVE.W  NLINES,D4      ;# OF LINES
  005A3C: 670000CA       16          BEQ.L   LISTX          ;DONE
                         17 ;
  005A40: 4EB85BA6       18          JSR     RANGCHK        ;SERVICE RANGE
                         19 ;
                         20 ; GET START OF OBJECT CODE THAT IS TO BE LISTED
                         21 ;
  005A44: 32381534       22          MOVE.W  PARM1,D1       ;SERCH KEY
  005A48: 4EB85184       23          JSR     SRCH1          ;LOOK IN LN TBL
  005A4C: 4A07           24          TST.B   D7             ;LINE # FOUND ?
  005A4E: 6616           25          BNE     LISTB          ;IF YES, THEN STRT
                         26 ;
  005A50: 4A04           27          TST.B   D4             ;RANGE EXCEEDED?
  005A52: 6B0000B4       28          BMI.L   LISTX          ;IF YES, THEN DONE
                         29 ;
  005A56: 34381534       30          MOVE.W  PARM1,D2       ;1ST PARM FLD
  005A5A: 94781536       31          SUB.W   PARM2,D2       ;1ST-2ND PARM FLD
  005A5E: 640000A8       32          BCC.L   LISTX          ;IF RANGE EXCEEDED
  005A62: 670000A4       33          BEQ.L   LISTX          ;IF LINE NOT FOUND
                         34 ;
                         35 ; SETUP NEEDED TABLES FOR THE LISTING PROCESS
                         36 ;
  005A66: 227815C0       37 LISTB    MOVEA.L SOVN,A1        ;FP NAME TBL
  005A6A: E34B           38          LSL.W   #1,D3          ;LN INDX->OFFSET
  005A6C: 20781588       39          MOVEA.L SOLN,A0        ;START OF LNTBL
  005A70: 41F03000       40          LEA     (A0,D3),A0     ;LINE # ADDR
  005A74: E24B           41          LSR.W   #1,D3          ;RESTORE INDEX
  005A76: 7E0D           42 LISTLP   MOVEQ   #$0D,D7        ;<CR> TO I/O
  005A78: 4E95           43          JSR     (A5)           ;SEND TO I/O
  005A7A: 3218           44          MOVE.W  (A0)+,D1       ;FETCH LINE #
  005A7C: 0C41FFFF       45          CMPI.W  #$FFFF,D1      ;MAX LINE # ?
  005A80: 67000086       46          BEQ.L   LISTX          ;IF YES,THEN DONE
                         47 ;
  005A84: B2781536       48          CMP.W   PARM2,D1       ;RANGE EXCEEDED ?
  005A88: 627E           49          BHI     LISTX          ;IF YES, THEN DONE
                         50 ;
                         51 ; PRINT THE PROGRAM LINE NUMBER ON THE CRT
                         52 ;
  005A8A: 4EB85228       53          JSR     IPRINT1        ;PRINT LINE NUMBER
                         54 ;
                         55 ; SET UP START OF OBJECT CODE FOR LINE # 'D3'
                         56 ;
  005A8E: 2C781590       57          MOVEA.L SOLA,A6        ;START OF TBL
  005A92: E54B           58          LSL.W   #2,D3          ;INDEX -> OFFSET
  005A94: 47F63000       59          LEA     (A6,D3),A3     ;START OF OBJ CODE
  005A98: E44B           60          LSR.W   #2,D3          ;RESETORE INDEX
  005A9A: 2653           61          MOVEA.L (A3),A3        ;OBJ START ADDR
                         62 ;

                         64 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         65 ;
                         66 ; FETCH THE ADDRESS FOR THE NEXT PROGRAM LINE
                         67 ;
  005A9C: 5243           68          ADDQ.W  #1,D3          ;NEXT LINE INDEX
  005A9E: E54B           69          LSL.W   #2,D3          ;INDEX -> OFFSET
  005AA0: 45F63000       70          LEA     (A6,D3),A2     ;NEXT PGM LINE ADR
  005AA4: E44B           71          LSR.W   #2,D3          ;RESTORE INDEX
  005AA6: 2452           72          MOVEA.L (A2),A2        ;NEXT PGM LINE ADR
                         73 ;
                         74 ; FETCH THE START OF THE OBJECT CODE
                         75 ;
  005AA8: 48A73000       76 LISTC    MOVEM.W D2-D3,-(A7)    ;LN & PARM
                         77 ;
                         78 ;! START OF BIT ROT [005AAC-005C63]
                         79 ;! CODE RECOVERED BY DISASSEMBLY
                         80 ;
  005AAC: 385B           81          MOVEA.W (A3)+,A4
  005AAE: 594C           82          SUBQ.W  #4,A4
  005AB0: 3854           83          MOVEA.W (A4),A4
  005AB2: 4E94           84          JSR     (A4)
  005AB4: 4C9F000C       85          MOVEM.W (SP)+,D2-D3
  005AB8: B5CB           86          CMPA.L  A3,A2
  005ABA: 6706           87          BEQ     H5AC2
  005ABC: 7EBA           88          MOVEQ   #$BA,D7
  005ABE: 4E95           89          JSR     (A5)
  005AC0: 60E6           90          BRA     LISTC
                         91 ;
  005AC2: 4EB83A30       92 H5AC2    JSR     READKB
  005AC6: 6B02           93          BMI     H5ACA
  005AC8: 60AC           94          BRA     LISTLP
                         95 ;
  005ACA: 0C070093       96 H5ACA    CMPI.B  #$93,D7
  005ACE: 6708           97          BEQ     H5AD8
  005AD0: 0C070083       98          CMPI.B  #$83,D7
  005AD4: 6732           99          BEQ     LISTX
  005AD6: 609E          100          BRA     LISTLP
                        101 ;
  005AD8: 4EB83A58      102 H5AD8    JSR     GETKEY
  005ADC: 0C070091      103          CMPI.B  #$91,D7
  005AE0: 6794          104          BEQ     LISTLP
  005AE2: 0C070083      105          CMPI.B  #$83,D7
  005AE6: 6720          106          BEQ     LISTX
  005AE8: 0C0700A0      107          CMPI.B  #$A0,D7
  005AEC: 6702          108          BEQ     H5AF0
  005AEE: 60E8          109          BRA     H5AD8
                        110 ;
  005AF0: 3218          111 H5AF0    MOVE.W  (A0)+,D1
  005AF2: 0C41FFFF      112          CMPI.W  #$FFFF,D1
  005AF6: 6710          113          BEQ     LISTX
  005AF8: 4EB85228      114          JSR     IPRINT1
  005AFC: 385B          115          MOVEA.W (A3)+,A4
  005AFE: 594C          116          SUBQ.W  #4,A4
  005B00: 3854          117          MOVEA.W (A4),A4
  005B02: 4E94          118          JSR     (A4)
  005B04: 5344          119          SUBQ.W  #1,D4
  005B06: 66D0          120          BNE     H5AD8
  005B08: 4EB83A54      121 LISTX    JSR     CLRCSR
  005B0C: 7E0D          122          MOVEQ   #$0D,D7
  005B0E: 4ED5          123          JMP     (A5)
                        124 ;
  005B10: 7E84          125 INPTXT   MOVEQ   #$84,D7
  005B12: 5248          126          ADDQ.W  #1,A0
  005B14: 0C1000A2      127 H5B14    CMPI.B  #$A2,(A0)
  005B18: 670C          128          BEQ     H5B26
  005B1A: 16D8          129          MOVE.B  (A0)+,(A3)+
  005B1C: 6716          130          BEQ     H5B34
  005B1E: 5307          131          SUBQ.B  #1,D7
  005B20: 66F2          132          BNE     H5B14
  005B22: 7E1C          133          MOVEQ   #$1C,D7
  005B24: 6010          134          BRA     H5B36
                        135 ;
  005B26: 5248          136 H5B26    ADDQ.W  #1,A0
  005B28: 421B          137          CLR.B   (A3)+
  005B2A: 3E0B          138          MOVE.W  A3,D7
  005B2C: E24F          139          LSR.W   #$01,D7
  005B2E: 6402          140          BCC     H5B32
  005B30: 421B          141          CLR.B   (A3)+
  005B32: 4E75          142 H5B32    RTS
                        143 ;
  005B34: 7E1B          144 H5B34    MOVEQ   #$1B,D7
  005B36: 4EF86008      145 H5B36    JMP     ERROR
                        146 ;
  005B3A: 4EB8534C      147 SELFN    JSR     GETFLD
  005B3E: 4A05          148          TST.B   D5
  005B40: 6752          149          BEQ     H5B94
  005B42: 45F85B7C      150          LEA     H5B7C,A2
  005B46: 4EB85106      151          JSR     CHKLIST
  005B4A: 6748          152          BEQ     H5B94
  005B4C: 4EB8534C      153          JSR     GETFLD
  005B50: 0C050001      154          CMPI.B  #$01,D5
  005B54: 6544          155          BCS     H5B9A
  005B56: 6648          156          BNE     H5BA0
  005B58: 4246          157          CLR.W   D6
  005B5A: 1C16          158          MOVE.B  (A6),D6
  005B5C: 040600B0      159          SUBI.B  #$B0,D6
  005B60: 0C060002      160          CMPI.B  #$02,D6
  005B64: 643A          161          BCC     H5BA0
  005B66: E30E          162          LSL.B   #$01,D6
  005B68: 45F85B90      163          LEA     H5B90,A2
  005B6C: 34726000      164          MOVEA.W (A2,D6.W),A2
  005B70: 41F820B0      165          LEA     LISTER,A0
  005B74: E54B          166          LSL.W   #$02,D3
  005B76: 218A3000      167          MOVE.L  A2,(A0,D3.W)
  005B7A: 4E75          168          RTS
                        169 ;
  005B7C: 04            170 H5B7C    DC.B    4
  005B7D: CCC9D3D4      171          ASC     "LIST"
  005B81: 05            172          DC.B    5
  005B82: D0D2C9CED4    173          ASC     "PRINT"
  005B87: 06            174          DC.B    6
  005B88: D3D9D3CFD5D4  175          ASC     "SYSOUT"
  005B8E: 0000          176          DC.W    $0000
                        177 ;
  005B90: 3A9C          178 H5B90    DC.W    $3A9C
  005B92: 3A40          179          DC.W    $3A40
                        180 ;
  005B94: 7E11          181 H5B94    MOVEQ   #$11,D7
  005B96: 60000470      182          BRA.L   ERROR
                        183 ;
  005B9A: 7E12          184 H5B9A    MOVEQ   #$12,D7
  005B9C: 6000046A      185          BRA.L   ERROR
                        186 ;
  005BA0: 7E13          187 H5BA0    MOVEQ   #$13,D7
  005BA2: 4EF86008      188          JMP     ERROR
                        189 ;
  005BA6: 21C81700      190 RANGCHK  MOVE.L  A0,TEMPB
  005BAA: 42781538      191          CLR.W   TEMP
  005BAE: 4245          192          CLR.W   D5
  005BB0: 4EB85C72      193          JSR     FETCHR
  005BB4: 670000A6      194          BEQ.L   H5C5C
  005BB8: 08070004      195          BTST    #$04,D7
  005BBC: 661E          196          BNE     H5BDC
  005BBE: 0C0600AD      197          CMPI.B  #$AD,D6
  005BC2: 6706          198          BEQ     H5BCA
  005BC4: 0C0600AC      199          CMPI.B  #$AC,D6
  005BC8: 662C          200          BNE     H5BF6
  005BCA: 2C781588      201 H5BCA    MOVEA.L SOLN,A6
  005BCE: 31D61534      202          MOVE.W  (A6),PARM1
  005BD2: 4A10          203          TST.B   (A0)
  005BD4: 6720          204          BEQ     H5BF6
  005BD6: 21C81700      205          MOVE.L  A0,TEMPB
  005BDA: 604A          206          BRA     H5C26
                        207 ;
  005BDC: 5245          208 H5BDC    ADDQ.W  #1,D5
  005BDE: 4EB85C72      209          JSR     FETCHR
  005BE2: 6718          210          BEQ     H5BFC
  005BE4: 08070004      211          BTST    #$04,D7
  005BE8: 66F2          212          BNE     H5BDC
  005BEA: 0C0600AC      213          CMPI.B  #$AC,D6
  005BEE: 670C          214          BEQ     H5BFC
  005BF0: 0C0600AD      215          CMPI.B  #$AD,D6
  005BF4: 6706          216          BEQ     H5BFC
  005BF6: 7E03          217 H5BF6    MOVEQ   #3,D7
  005BF8: 4EF86008      218          JMP     ERROR
                        219 ;
  005BFC: 2C781700      220 H5BFC    MOVEA.L TEMPB,A6
  005C00: 4EB8514C      221          JSR     CHKLN
  005C04: 4A07          222          TST.B   D7
  005C06: 67EE          223          BEQ     H5BF6
  005C08: 31C11534      224          MOVE.W  D1,PARM1
  005C0C: 4A28FFFF      225          TST.B   -1(A0)
  005C10: 6742          226          BEQ     H5C54
  005C12: 21C81700      227          MOVE.L  A0,TEMPB
  005C16: 4245          228          CLR.W   D5
  005C18: 4EB85C72      229          JSR     FETCHR
  005C1C: 672C          230          BEQ     H5C4A
  005C1E: 08070004      231          BTST    #$04,D7
  005C22: 67D2          232          BEQ     H5BF6
  005C24: 5245          233 H5C24    ADDQ.W  #1,D5
  005C26: 4EB85C72      234 H5C26    JSR     FETCHR
  005C2A: 6708          235          BEQ     H5C34
  005C2C: 08070004      236          BTST    #$04,D7
  005C30: 66F2          237          BNE     H5C24
  005C32: 60C2          238          BRA     H5BF6
                        239 ;
  005C34: 2C781700      240 H5C34    MOVEA.L TEMPB,A6
  005C38: 4EB8514C      241          JSR     CHKLN
  005C3C: 4A07          242          TST.B   D7
  005C3E: 67B6          243          BEQ     H5BF6
  005C40: 31C11536      244          MOVE.W  D1,PARM2
  005C44: 31C11538      245          MOVE.W  D1,TEMP
  005C48: 4E75          246          RTS
                        247 ;
  005C4A: 2C78158C      248 H5C4A    MOVEA.L EOLN,A6
  005C4E: 31D61536      249          MOVE.W  (A6),PARM2
  005C52: 4E75          250          RTS
                        251 ;
  005C54: 31F815341536  252 H5C54    MOVE.W  PARM1,PARM2
  005C5A: 4E75          253          RTS
                        254 ;
  005C5C: 2C781588      255 H5C5C    MOVEA.L SOLN,A6
  005C60: 31D61534      256          MOVE.W  (A6),PARM1
                        257 ;
                        258 ;! END OF BIT ROT
                        259 ;
  005C64: 2C78158C      260          MOVEA.L EOLN,A6        ;PTR TO LAST #
  005C68: 31D61536      261          MOVE.W  (A6),PARM2     ;STORE 2ND PARM
  005C6C: 42781538      262          CLR.W   TEMP           ;USED BY 'RENUM'
  005C70: 4E75          263          RTS                    ;DONE
                        264 ;
  005C72: 49F81F80      265 FETCHR   LEA     CHRMSK,A4      ;GET MASK TBL
  005C76: 4246          266          CLR.W   D6             ;INIT INDEX REG
  005C78: 1C18          267          MOVE.B  (A0)+,D6       ;GET CHARACTER
  005C7A: 6704          268          BEQ     FETCHX         ;EMPTY BUFFER
  005C7C: 1E346000      269          MOVE.B  (A4,D6),D7     ;GET CHR MASK
  005C80: 4E75          270 FETCHX   RTS                    ;DONE
                        271 ;
                                     CHAIN   DEBUG

                          2 ;        *********
                          3 ;        *       *
                          4 ;        * DEBUG *
                          5 ;        *       *
                          6 ;        *********
                          7 ;
                          8 ; THIS CODE IS USED FOR TESTING ONLY
                          9 ;
  005C82: 307C1600       10 PRINTIT  MOVEA   #BUFFER,A0
  005C86: 7014           11          MOVEQ   #$14,D0
  005C88: E308           12 PRNTA    LSL.B   #1,D0
  005C8A: 3C350000       13          MOVE.W  $0(A5,D0.W),D6
  005C8E: 7827           14          MOVEQ   #$27,D4
                         15 ;
  005C90: 1E18           16 LOOPE    MOVE.B  (A0)+,D7
  005C92: 6710           17          BEQ     DONEU
  005C94: 4EB83A38       18          JSR     CMD4
  005C98: 5206           19          ADDQ.B  #1,D6
  005C9A: 51CCFFF4       20 TP1      DBF     D4,LOOPE
                         21 ;
  005C9E: E208           22          LSR.B   #1,D0
  005CA0: 5200           23          ADDQ.B  #1,D0
  005CA2: 60E4           24          BRA     PRNTA
                         25 ;
  005CA4: 4E75           26 DONEU    RTS
                         27 ;
  005CA6: 4EB83A54       28 CRTDUMP  JSR     CLRCSR         ;CLEAR CURSOR
  005CAA: 3A7C2080       29          MOVEA.W #TBLA,A5       ;START OF ADR TBL
  005CAE: 4280           30          CLR.L   D0             ;WORK AREA
  005CB0: 7817           31          MOVEQ   #23,D4         ;NUMBER OF LINES
                         32 ;
  005CB2: E308           33 CRTLPA   LSL.B   #1,D0          ;ADJUST FOR INDEX
  005CB4: 3C350000       34          MOVE.W  (A5,D0),D6     ;CRT ADR
  005CB8: E208           35          LSR.B   #1,D0          ;RESET LINE #
  005CBA: 7627           36          MOVEQ   #39,D3         ;# OF COL
                         37 ;
  005CBC: 4EB83A3C       38 CRTLPB   JSR     CMD5           ;READ CRT
  005CC0: 4EB83A40       39          JSR     CMD6           ;SEND TO PRINTER
  005CC4: 5206           40          ADDQ.B  #1,D6          ;NEXT COL OVER
  005CC6: 51CBFFF4       41          DBF     D3,CRTLPB
                         42 ;
  005CCA: 7E0D           43          MOVEQ   #$0D,D7        ;LINE FEED
  005CCC: 4EB83A40       44          JSR     CMD6           ;SEND COMMAND
                         45 ;
                         46 ;
  005CD0: 5200           47          ADDQ.B  #1,D0          ;NEXT LINE DOWN
  005CD2: 51CCFFDE       48          DBF     D4,CRTLPA      ;CONTINUE
                         49 ;
  005CD6: 7E0D           50          MOVEQ   #$0D,D7        ;LINE FEED
  005CD8: 4EB83A40       51          JSR     CMD6           ;SEND COMMAND
                         52 ;
  005CDC: 7E0D           53          MOVEQ   #$0D,D7        ;<CR>
  005CDE: 4EB83A40       54          JSR     CMD6           ;SEND COMMAND
                         55 ;
  005CE2: 4E75           56          RTS
                         57 ;

  005CE4: 3A7C2080       59 CLRTST   MOVEA   #TBLA,A5
  005CE8: 7014           60          MOVEQ   #$14,D0
  005CEA: 4281           61          CLR.L   D1
  005CEC: 4286           62          CLR.L   D6
  005CEE: 7817           63          MOVEQ   #$17,D4
                         64 ;
  005CF0: 9800           65          SUB.B   D0,D4
  005CF2: 1E3C00A0       66          MOVE.B  #$A0,D7
                         67 ;
  005CF6: 7227           68 LOPC     MOVEQ   #$27,D1
  005CF8: E308           69          LSL.B   #1,D0
  005CFA: 3C350000       70          MOVE.W  (A5,D0),D6
  005CFE: E208           71          LSR.B   #1,D0
                         72 ;
  005D00: 4EB83A38       73 LOPD     JSR     CMD4
  005D04: 5206           74          ADDQ.B  #1,D6
  005D06: 51C9FFF8       75          DBF     D1,LOPD
                         76 ;
  005D0A: 01C2           77          BSET    D0,D2
  005D0C: 5200           78          ADDQ.B  #1,D0
  005D0E: 51CCFFE6       79          DBF     D4,LOPC
                         80 ;
  005D12: 4E75           81          RTS
                         82 ;

          SYMBOL TABLE (ALPHABETICAL)

ACTIVE    000020BC  ACTTBL   ?00003600  ACTTBL2  ?000036E0  ADDD0     000050BA  ADDL1
ADDLIST   00005498  ADJTA0    00005A14  ADJTA1    00005A18  ADJTBL   ?000059FA  BATBL
BCDA      00005170  BCDBIN    0000515E  BCDERR    0000517E  BCDLP     00005168  BEGIN
BELL      00003A34  BLDBUFR   00004EE2  BUFFER    00001600  BUFR1    ?0000151E  CCHK
CCHKA     0000550E  CCHKX     00005518  CDEL      00004FF2  CDEL1     00005000  CDEL2
CDELET0   0000507E  CDELET1  ?0000508A  CDELET2   00005094  CDELET3   000050BC  CDELE
CDELET5   000050DC  CDELETE   00005072  CDESIZE   0000155A  CHKA      00005110  CHKA2
CHKB      00005138  CHKD      00005146  CHKHEX    0000571A  CHKHX1    0000572C  CHKHX
CHKIT     00005120  CHKLIST   00005106  CHKLN     0000514C  CHKX      00005148  CHRMS
CINS      00004FDE  CINS1     00004FE6  CINSER1   00005026  CINSERT   00005014  CLRCR
CLRCSR    00003A54  CLREOL    00004E20  CLREOS    00004E6E  CLREOSA  ?00004E70  CLRFL
CLRIN1   ?00004E44  CLRKB     00003A5C  CLRLAST   000050FC  CLRLIN    00004E26  CLRLI
CLRLIN1   00004FAC  CLRTLIN   00004FA4  CLRTST   ?00005CE4  CMD0      00003A28  CMD1
CMD4      00003A38  CMD5      00003A3C  CMD6      00003A40  CMD7      00003A44  CMD8
CMD9      00003A4C  CMDTBL    00004EB0  CMPRCOD   00005824  CMPTBL    000053E2  COLDS
COLUMN    00001542  CONCHK    000054E6  CONCHK1   000054E2  COND     ?0000151A  CONRL
CONRSB    000052C0  CONTRACT  000052A6  COUNT    ?0000151A  CPFP1M    000020C4  CPFPO
CRTDUMP   00005CA6  CRTLPA    00005CB2  CRTLPB    00005CBC  CRTS      00005044  CSRDN
CSRDNA    00004DD6  CSRLT     00004D86  CSRRT     00004DE2  CSRRTA    00004DF6  CSRUP
CTLBLX    000056D8  CTLC      000056A0  CTLCFLG   00001530  CTLTBL    00004EC2  DELET
DELFA     000059C0  DELFLP    000059AC  DELFN     0000597C  DELFN0    000059A2  DELFN
DFLGSET   000050D6  DONEM     00004EAC  DONEU     00005CA4  DRTS      00005092  ECHO
EDTLN    ?0000154A  ELET      00007300  ELET1     00007308  END       00003A08  EOA
EOADT    ?000015D4  EOAN     ?000015CC  EOBLCK    00001556  EOC       000015BC  EOCN
EOH       00001584  EOI      ?000015DC  EOIN     ?000015AC  EOLA      00001594  EOLBA
EOLBN     0000159C  EOLN      0000158C  EOV       000015E4  EOVN      000015C4  ERR6
ERR7      000055AA  ERR8      000055B0  ERROR     00006008  EXAMA     00005374  EXAMB
EXAMD     00005382  EXAMN     00005364  EXITA     00004CF4  EXITLN    00005912  EXPAN
EXPANA0   000051D6  EXPANB    000051E2  EXPAND    00005216  EXPAND0   000051AC  EXPNL
EXTLA     00005932  EXTLA0    00005944  EXTLA1    00005946  EXTLB     0000594A  FETCH
FETCHX    00005C80  FINDADR   000051F0  FINDADX   00005208  FIX16     00003A98  FLGCL
FLGSET    00004F98  FLIN1     00003A1C  FNDLP     000051F8  FNTBLX    000056DC  FORST
FPADD     000020C0  FPT       00001912  FPU       0000191A  GET8D     000056AE  GET8D
GET8G     000056D0  GETA0     00005360  GETA1     00005362  GETFLD    0000534C  GETFL
GETINDX   00003A70  GETKEY    00003A58  GETLB1    00005526  GETLBL    0000551A  GETLB
GETLBL1A  0000558C  GETLBL2   00005536  GETLINE   00004FC2  GETLOR   ?00004EF6  GETLP
GETUPR    00004F12  GETVAR    000055EE  GETVR0    00005602  GETVRA    0000561A  GETVR
GETVRC    00005630  GETVRD    0000565E  H541E     0000541E  H5434     00005434  H543E
H5456     00005456  H5464     00005464  H5468     00005468  H5484     00005484  H548E
H5494     00005494  H5AC2     00005AC2  H5ACA     00005ACA  H5AD8     00005AD8  H5AF0
H5B14     00005B14  H5B26     00005B26  H5B32     00005B32  H5B34     00005B34  H5B36
H5B7C     00005B7C  H5B90     00005B90  H5B94     00005B94  H5B9A     00005B9A  H5BA0
H5BCA     00005BCA  H5BDC     00005BDC  H5BF6     00005BF6  H5BFC     00005BFC  H5C24
H5C26     00005C26  H5C34     00005C34  H5C4A     00005C4A  H5C54     00005C54  H5C5C
HEX2      0000539A  HEXCHK    00005386  HEXERR    000053A0  HEXGET    000056E2  HEXGE
HEXGET2   00005702  HEXGETX   00005710  HEXLP     00005392  HOMCSR    00004E0C  HPTBL
IBATBL1  ?0000526E  INDEX    ?00001500  INITLP    0000577E  INITVAR   00005782  INPTX
INPUTS    00003A0C  INSADR   ?00001504  INSERT    0000520C  IPR11     00005236  IPR21
IPR31     00005246  IPR41     00005248  IPR51     0000524A  IPR61     00005258  IPRIN
JV1       000020C0  JV2       00003A00  JV3      ?00004C00  JV4       00006000  JV5
KBTEST    00001518  KEY1     ?000037E8  KEY87     00004D3C  KEY8D     00004D12  KEY8D
KEY8DB    00004D32  KEY98     00004D40  KEY9BB    00004DAA  KEY9BD    00004DAC  KEY9B
LASSIGN   00003A7C  LBLADD1   0000532E  LBLADD2   00005338  LBLADD3   0000533C  LBLAD
LBLADDX   00005340  LBLADJD   00005318  LBLADJU   000052E4  LBLADR    00003A00  LBLAD
LBLADU2   00005304  LBLADU3   00005308  LBLADU4   00005312  LBLADUX   0000530C  LBLGO
LBLTEMP   0000151A  LINBUF    00001600  LINE      00001540  LINFEED   00003A88  LIST
LISTB     00005A66  LISTC     00005AA8  LISTER    000020B0  LISTKEY   00003A74  LISTL
LISTX     00005B08  LLET1     00007304  LOADS     00003A04  LOOP2     00005294  LOOPA
LOOPB     00004E5C  LOOPC     00004E8C  LOOPD     00004E96  LOOPE     00005C90  LOOPJ
LOOPK     00004F60  LOOPX     00004CC6  LOPC      00005CF6  LOPD      00005D00  LSETU
LTCSR     00005666  LTCSRB    00005680  MADR      0000150C  MODE      00001900  MURK
NAMECHK   000055B6  NCHK1     000055D0  NCHKX     000055E8  NEWLINE   00005848  NLINE
NOTDOL    0000573E  NOTHEX    00005736  NSE       000055E2  NUMEVAL   000020D4  NUMWD
NXTCHK    00005118  NXTLIN    00004CE8  OUTCHR    00003A8C  PACK      000053A4  PARCL
PARM1     00001534  PARM2     00001536  PASCSTR   00003A6C  PMTPOS    00001510  PREPL
PREPR0    000053F8  PREPRA    00005414  PREPRC    0000541A  PREPRD    00005428  PREPR
PREPRX2   00005444  PRHEX2    00003A84  PRHEX4    00003A80  PRINTCR   00003A10  PRINT
PRINTIT  ?00005C82  PRINTS    00003A14  PRINTSV   00003A18  PRINTX    00004CB6  PRNTA
PRNTFP    000020CC  PRNTSTR   00003A78  PRNTVAR   00003A68  PROC1     00004D08  PRSTR
RANGCHK   00005BA6  READKB    00003A30  REMCHK    0000546C  REMSPCE   0000544E  REWIN
REWIN2B   000058DA  REWIND    000057C2  REWIND2  ?0000589E  REWNC     0000590E  REWND
REWNDZ    000058E0  REWX      0000597A  RUN       00005744  RUNB      000057B8  RUNX
S1        00001902  SCREDIT   00004C80  SCRLDN    00004F80  SCRLDN1   00004F82  SCROL
SCRTDA    00004D84  SCRTDN    00004D4E  SELFN     00005B3A  SELSUF    00005046  SENDL
SETCSR    00003A50  SFLAG     00001508  SHPR1     00003A94  SHPRINT   00003A90  SNDCH
SNGLA     000059C8  SNGLX     00005A28  SOA       000015E8  SOADT     000015D0  SOAN
SOBLCK   ?00001552  SOC       000015B8  SOCN      000015B0  SOH       00001580  SOI
SOIN      000015A8  SOLA      00001590  SOLBA     000015A0  SOLBN     00001598  SOLN
SOV       000015E0  SOVN      000015C0  SRCH1     00005184  SRCHA     00005192  SRCHB
SRCHB1    000051A2  SRCHC     000051A6  SSA       000053C0  SSFFLGS   00001546  STASI
STASIS1   00005894  STASIX    00005974  STMTCNT   0000154E  STORLBA   00005558  STORL
STR2      00005298  SXA       000053C8  SXA1      000053D6  SXLP      000053B0  SXTRT
SYSOUT    000020B8  TBLA      00002080  TBUFF     0000151C  TEMP      00001538  TEMPB
TEMPX     000053E4  TLINE     0000151D  TP1      ?00005C9A  TRAP14   ?0000600C  TXTLE
VARCHK    000054AC  VARCHK1   000054A8  VCHK      000054AE  VCHKA     000054DC  VOIDL
VOIDLBLX  000052E2  VTABC     00003A20  VTABH     00003A24  WARMSTRT  00006004  WRKAD
WRKBUF    00001800  WRONGN    0000573A  X1        00004EFA  X1A       00004F04  X1B
X2        00004F0C  Y1        00004F1A  Y1A      ?00004F32  Y1B       00004F46  Y1C
Y2        00004F58  Y3        00004F5E  Y3A      ?00004F6C  Y3B       00004F7C

          SYMBOL TABLE (NUMERICAL)

FORSTK    000014FE  INDEX    ?00001500  INSADR   ?00001504  SFLAG     00001508  MADR
PMTPOS    00001510  WRKADR   ?00001514  NUMWDS    00001516  KBTEST    00001518  COUNT
COND     ?0000151A  LBLTEMP   0000151A  TBUFF     0000151C  TLINE     0000151D  BUFR1
CTLCFLG   00001530  TXTLEN   ?00001532  PARM1     00001534  PARM2     00001536  TEMP
LINE      00001540  COLUMN    00001542  SSFFLGS   00001546  EDTLN    ?0000154A  NLINE
STMTCNT   0000154E  SOBLCK   ?00001552  EOBLCK    00001556  CDESIZE   0000155A  SOH
EOH       00001584  SOLN      00001588  EOLN      0000158C  SOLA      00001590  EOLA
SOLBN     00001598  EOLBN     0000159C  SOLBA     000015A0  EOLBA     000015A4  SOIN
EOIN     ?000015AC  SOCN      000015B0  EOCN      000015B4  SOC       000015B8  EOC
SOVN      000015C0  EOVN      000015C4  SOAN      000015C8  EOAN     ?000015CC  SOADT
EOADT    ?000015D4  SOI       000015D8  EOI      ?000015DC  SOV       000015E0  EOV
SOA       000015E8  EOA      ?000015EC  BUFFER    00001600  LINBUF    00001600  TEMPB
WRKBUF    00001800  MODE      00001900  S1        00001902  FPT       00001912  FPU
CHRMSK    00001F80  TBLA      00002080  LISTER    000020B0  PRINTER  ?000020B4  SYSOU
ACTIVE    000020BC  JV1       000020C0  FPADD     000020C0  CPFP1M    000020C4  CPFPO
PRNTFP    000020CC  PRSTRM    000020D0  NUMEVAL   000020D4  HPTBL    ?000020D8  ACTTB
ACTTBL2  ?000036E0  BEGIN     000037C0  KEY1     ?000037E8  JV2       00003A00  LBLAD
LOADS     00003A04  END       00003A08  INPUTS    00003A0C  PRINTCR   00003A10  PRINT
PRINTSV   00003A18  FLIN1     00003A1C  VTABC     00003A20  VTABH     00003A24  CMD0
CMD1      00003A2C  READKB    00003A30  BELL      00003A34  CMD4      00003A38  CMD5
CMD6      00003A40  CMD7      00003A44  CMD8      00003A48  CMD9      00003A4C  SETCS
CLRCSR    00003A54  GETKEY    00003A58  CLRKB     00003A5C  ECHO      00003A60  CLRCR
PRNTVAR   00003A68  PASCSTR   00003A6C  GETINDX   00003A70  LISTKEY   00003A74  PRNTS
LASSIGN   00003A7C  PRHEX4    00003A80  PRHEX2    00003A84  LINFEED   00003A88  OUTCH
SHPRINT   00003A90  SHPR1     00003A94  FIX16     00003A98  SNDCHR    00003A9C  JV3
SCREDIT   00004C80  LOOPA     00004CAA  PRINTX    00004CB6  LOOPX     00004CC6  CLRFL
NXTLIN    00004CE8  EXITA     00004CF4  SCROLL    00004CFA  PROC1     00004D08  KEY8D
KEY8DA    00004D26  KEY8DB    00004D32  KEY87     00004D3C  KEY98     00004D40  SCRTD
SCRTDA    00004D84  CSRLT     00004D86  CSRUP     00004D98  KEY9BB    00004DAA  KEY9B
KEY9BE    00004DC4  CSRDN     00004DC6  CSRDNA    00004DD6  CSRRT     00004DE2  CSRRT
HOMCSR    00004E0C  CLREOL    00004E20  CLRLIN    00004E26  CLRIN1   ?00004E44  PARCL
LOOPB     00004E5C  CLREOS    00004E6E  CLREOSA  ?00004E70  LOOPC     00004E8C  LOOPD
DONEM     00004EAC  CMDTBL    00004EB0  CTLTBL    00004EC2  BLDBUFR   00004EE2  GETLO
X1        00004EFA  X1A       00004F04  X1B       00004F08  X2        00004F0C  GETUP
Y1        00004F1A  LOOPJ     00004F28  Y1A      ?00004F32  Y1B       00004F46  Y1C
Y2        00004F58  Y3        00004F5E  LOOPK     00004F60  Y3A      ?00004F6C  Y3B
SCRLDN    00004F80  SCRLDN1   00004F82  FLGSET    00004F98  FLGCLR    00004F9A  CLRTL
CLRLIN0   00004FA6  CLRLIN1   00004FAC  SENDLIN   00004FBC  GETLINE   00004FC2  LSETU
CINS      00004FDE  CINS1     00004FE6  CDEL      00004FF2  CDEL1     00005000  CDEL2
CINSERT   00005014  CINSER1   00005026  CRTS      00005044  SELSUF    00005046  CDELE
CDELET0   0000507E  CDELET1  ?0000508A  DRTS      00005092  CDELET2   00005094  ADDD0
CDELET3   000050BC  CDELET4   000050CA  DFLGSET   000050D6  CDELET5   000050DC  CLRLA
CHKLIST   00005106  CHKA      00005110  NXTCHK    00005118  CHKIT     00005120  CHKA2
CHKB      00005138  CHKD      00005146  CHKX      00005148  CHKLN     0000514C  BCDBI
BCDLP     00005168  BCDA      00005170  BCDERR    0000517E  SRCH1     00005184  SRCHA
SRCHB     0000519E  SRCHB1    000051A2  SRCHC     000051A6  EXPAND0   000051AC  EXPAN
EXPANA0   000051D6  EXPNLP2   000051DE  EXPANB    000051E2  FINDADR   000051F0  FNDLP
FINDADX   00005208  INSERT    0000520C  EXPAND    00005216  IPRINT1   00005228  IPR11
IPR21     0000523C  IPR31     00005246  IPR41     00005248  IPR51     0000524A  IPR61
BATBL1    0000525E  IBATBL1  ?0000526E  DELETE    00005282  LOOP2     00005294  STR2
CONTRACT  000052A6  CONRLP    000052B8  CONRSB    000052C0  VOIDLBL   000052C2  VOIDL
LBLADJU   000052E4  LBLADU1   000052FA  LBLADU2   00005304  LBLADU3   00005308  LBLAD
LBLADU4   00005312  LBLADJD   00005318  LBLADD1   0000532E  LBLADD2   00005338  LBLAD
LBLADDX   00005340  LBLADD4   00005346  GETFLD    0000534C  GETFLDA   0000534E  GETLP
GETA0     00005360  GETA1     00005362  EXAMN     00005364  EXAMA     00005374  EXAMB
EXAMD     00005382  HEXCHK    00005386  HEXLP     00005392  HEX2      0000539A  HEXER
PACK      000053A4  SXLP      000053B0  SSA       000053C0  SXA       000053C8  SXA1
SXTRT     000053DE  CMPTBL    000053E2  TEMPX     000053E4  PREPROC   000053EA  PREPR
PREPLP    00005400  PREPRA    00005414  PREPRC    0000541A  H541E     0000541E  PREPR
H5434     00005434  H543E     0000543E  PREPRX2   00005444  REMSPCE   0000544E  H5456
H5464     00005464  H5468     00005468  REMCHK    0000546C  H5484     00005484  H548E
H5494     00005494  ADDLIST   00005498  ADDL1     0000549E  VARCHK1   000054A8  VARCH
VCHK      000054AE  VCHKA     000054DC  CONCHK1   000054E2  CONCHK    000054E6  CCHK
CCHKA     0000550E  CCHKX     00005518  GETLBL    0000551A  GETLB1    00005526  GETLB
STORLBL   00005548  STORLBA   00005558  GETLBL1   0000557E  GETLBL1A  0000558C  LBLGO
ERR7      000055AA  ERR8      000055B0  NAMECHK   000055B6  NCHK1     000055D0  NSE
NCHKX     000055E8  GETVAR    000055EE  GETVR0    00005602  GETVRA    0000561A  GETVR
GETVRC    00005630  GETVRD    0000565E  LTCSR     00005666  LTCSRB    00005680  CTLC
GET8D     000056AE  GET8DB    000056CA  GET8G     000056D0  CTLBLX    000056D8  FNTBL
HEXGET    000056E2  HEXGET1   000056F0  HEXGET2   00005702  HEXGETX   00005710  CHKHE
CHKHXX    0000572A  CHKHX1    0000572C  NOTHEX    00005736  WRONGN    0000573A  NOTDO
ERR6      00005740  RUN       00005744  INITLP    0000577E  INITVAR   00005782  RUNB
RUNX      000057BC  REWIND    000057C2  CMPRCOD   00005824  NEWLINE   00005848  STASI
STASIS1   00005894  REWIND2  ?0000589E  REWIN2A   000058D8  REWIN2B   000058DA  REWND
REWND     0000590C  REWNC     0000590E  EXITLN    00005912  EXTLA     00005932  EXTLA
EXTLA1    00005946  EXTLB     0000594A  STASIX    00005974  REWX      0000597A  DELFN
DELFN0    000059A2  DELFLP    000059AC  DELFNX    000059BE  DELFA     000059C0  SNGLA
ADJTBL   ?000059FA  ADJTA0    00005A14  ADJTA1    00005A18  SNGLX     00005A28  LIST
LISTB     00005A66  LISTLP    00005A76  LISTC     00005AA8  H5AC2     00005AC2  H5ACA
H5AD8     00005AD8  H5AF0     00005AF0  LISTX     00005B08  INPTXT    00005B10  H5B14
H5B26     00005B26  H5B32     00005B32  H5B34     00005B34  H5B36     00005B36  SELFN
H5B7C     00005B7C  H5B90     00005B90  H5B94     00005B94  H5B9A     00005B9A  H5BA0
RANGCHK   00005BA6  H5BCA     00005BCA  H5BDC     00005BDC  H5BF6     00005BF6  H5BFC
H5C24     00005C24  H5C26     00005C26  H5C34     00005C34  H5C4A     00005C4A  H5C54
H5C5C     00005C5C  FETCHR    00005C72  FETCHX    00005C80  PRINTIT  ?00005C82  PRNTA
LOOPE     00005C90  TP1      ?00005C9A  DONEU     00005CA4  CRTDUMP   00005CA6  CRTLP
CRTLPB    00005CBC  CLRTST   ?00005CE4  LOPC      00005CF6  LOPD      00005D00  JV4
COLDSTRT  00006000  WARMSTRT  00006004  ERROR     00006008  TRAP14   ?0000600C  JV5
ELET      00007300  LLET1     00007304  ELET1     00007308  MURK     ?0000730C



* EDIT.O                               START  $00004C00
*                                      LENGTH $00001114

004C00  4E F8 55 EE 4E F8 4C 80 4E F8 4E 0C 4E F8 51 06
004C10  4E F8 51 4C 4E F8 51 84 4E F8 52 28 4E F8 53 4C
004C20  4E F8 53 4E 4E F8 53 64 4E F8 53 86 4E F8 53 A4
004C30  4E F8 53 EA 4E F8 54 4E 4E F8 54 98 4E F8 54 AC
004C40  4E F8 54 A8 4E F8 54 E6 4E F8 54 E2 4E F8 55 1A
004C50  4E F8 55 7E 4E F8 56 E2 4E F8 52 C2 4E F8 57 C2
004C60  4E F8 5A 2A 4E F8 59 7C 4E F8 5B 3A 4E F8 57 44
004C70  4E F8 5B 10 4E F8 59 C8 4E F8 55 B0 4E F8 5B A6
004C80  42 80 42 81 42 83 42 87 24 38 15 46 08 F8 00 03
004C90  15 08 4E B8 3A 50 4E B8 3A 58 38 7C 1F 80 1A 34
004CA0  70 00 6B 12 30 7C 4E B0 10 18 BE 18 67 5A 54 01
004CB0  51 C8 FF F8 60 10 4E B8 3A 60 0C 38 00 27 15 42
004CC0  67 08 52 38 15 42 4E F8 3A 50 42 40 10 38 15 40
004CD0  26 38 15 46 01 03 67 10 4E B8 4D 4E 42 40 10 38
004CE0  15 40 01 82 21 C2 15 46 42 38 15 42 0C 38 00 17
004CF0  15 40 67 06 52 38 15 40 60 CC 4E B8 3A 54 4E B8
004D00  3A 4C 42 38 15 42 60 BE 30 7C 4E C2 30 70 10 00
004D10  4E D0 4E B8 3A 54 08 B8 00 03 15 08 70 27 B0 38
004D20  15 42 65 02 60 0C 42 80 10 38 15 40 01 C2 21 C2
004D30  15 46 42 38 15 42 4E B8 4E E2 60 AC 4E F8 3A 34
004D40  4E B8 3A 54 1E 3C 00 DC 4E B8 3A 38 60 9A 0C 38
004D50  00 17 15 40 67 2E 11 F8 15 40 15 1D 52 38 15 1D
004D60  4E B8 3A 54 4E B8 4F 80 42 40 10 38 15 1D 42 46
004D70  1C 38 15 1D 3A 7C 20 80 DC 46 3C 35 60 00 78 27
004D80  4E B8 4E 5A 4E 75 4A 38 15 42 67 20 4E B8 3A 54
004D90  53 38 15 42 60 00 FF 30 4A 38 15 40 67 0C 4E B8
004DA0  3A 54 53 38 15 40 60 00 FF 1E 4E 75 4A 38 15 40
004DB0  67 12 4E B8 3A 54 53 38 15 40 11 FC 00 27 15 42
004DC0  60 00 FF 04 4E 75 0C 38 00 17 15 40 67 08 4E B8
004DD0  3A 54 60 00 FF 20 4E B8 3A 54 4E B8 3A 4C 60 00
004DE0  FE E6 0C 38 00 27 15 42 67 0C 4E B8 3A 54 52 38
004DF0  15 42 60 00 FE D2 0C 38 00 17 15 40 67 00 FE FC
004E00  4E B8 3A 54 42 38 15 42 60 00 FE EA 4E B8 3A 54
004E10  4E B8 3A 64 42 38 15 40 42 38 15 42 4E F8 3A 50
004E20  61 04 4E F8 3A 50 42 80 10 38 15 40 3C 00 2F 0D
004E30  3A 7C 20 80 DC 46 3C 35 60 00 2A 5F 24 38 15 46
004E40  DC 38 15 42 78 27 98 38 15 42 0C 04 00 27 66 0A
004E50  53 00 01 C2 21 C2 15 46 52 00 7E A0 4E B8 3A 38
004E60  52 06 51 CC FF F8 01 C2 21 C2 15 46 4E 75 61 B6
004E70  38 7C 20 80 0C 00 00 17 67 32 52 00 02 40 00 3F
004E80  42 81 42 86 78 17 98 00 1E 3C 00 A0 72 27 E3 08
004E90  3C 34 00 00 E2 08 4E B8 3A 38 52 06 51 C9 FF F8
004EA0  01 C2 21 C2 15 46 52 00 51 CC FF E2 4E F8 3A 50
004EB0  10 8D 88 95 87 89 8A 8B 8C 85 90 8E 91 84 98 97
004EC0  96 00 4D 12 4D 86 4D E2 4D 3C 4D 98 4D 86 4D C6
004ED0  4D E2 4E 0C 4E 20 4E 6E 50 14 50 72 4D 40 5C A6
004EE0  4D 4E 30 7C 16 00 38 7C 20 80 42 80 42 81 10 38
004EF0  15 40 12 00 76 A0 4A 00 67 12 53 00 67 06 01 02
004F00  67 F8 60 04 01 02 67 04 52 00 E3 08 32 74 00 00
004F10  E2 08 03 02 66 04 52 01 60 F8 E3 09 3C 34 10 00
004F20  E2 09 06 06 00 27 78 27 4E B8 3A 3C BE 03 66 28
004F30  53 06 51 CC FF F4 52 06 BC 49 66 0A 67 3E 4A 01
004F40  67 3A 53 01 60 D4 53 01 03 02 67 04 52 01 60 2C
004F50  03 C2 21 C2 15 46 60 C2 36 06 12 00 3C 09 78 27
004F60  4E B8 3A 3C 10 C7 B6 46 67 12 52 06 51 CC FF F2
004F70  52 01 E3 09 3C 34 10 00 E2 09 60 E2 42 10 4E 75
004F80  72 17 B2 38 15 1D 67 1C 10 01 53 00 01 02 66 08
004F90  03 82 21 C2 15 46 60 02 03 C2 61 26 10 01 61 1C
004FA0  53 01 66 DE 10 01 72 13 38 7C 16 00 38 FC A0 A0
004FB0  51 C9 FF FA 01 C2 21 C2 15 46 4E 75 61 0A 4E F8
004FC0  3A 48 61 04 4E F8 3A 44 42 46 1C 00 DC 00 38 7C
004FD0  20 80 3C 34 60 00 3A 7C 16 00 78 28 4E 75 61 E2
004FE0  72 28 30 7C 16 28 28 48 18 A0 53 01 B2 03 66 F6
004FF0  4E 75 61 CE 38 3C 16 00 D8 03 30 44 52 44 38 44
005000  0C 03 00 27 67 06 10 DC 52 03 60 F4 11 FC 00 A0
005010  16 27 4E 75 4E B8 3A 54 10 38 15 40 16 38 15 42
005020  61 BC 10 BC 00 60 61 94 11 F8 16 28 15 1C 01 02
005030  66 14 52 00 0C 00 00 18 67 0A 42 43 61 A0 10 B8
005040  15 1C 60 E2 4E 75 0C 38 00 A0 15 1C 67 F6 01 82
005050  21 C2 15 46 52 00 0C 00 00 18 67 E8 11 C0 15 1D
005060  4E B8 4F 80 11 F8 15 1C 16 00 10 38 15 1D 4E F8
005070  4F BC 10 38 15 40 16 38 15 42 4E B8 4F F2 4E B8
005080  4F BC 4E B8 3A 50 01 02 66 08 52 00 0C 00 00 18
005090  66 02 4E 75 4E B8 4F C2 0C 38 00 A0 16 00 67 1C
0050A0  53 00 4E B8 4F C8 06 46 00 27 78 01 4E B8 3A 48
0050B0  0C 03 00 27 66 04 4E B8 3A 50 52 00 42 43 4E B8
0050C0  4F F2 01 02 67 B8 4E B8 4F C8 0C 1C 00 A0 66 AE
0050D0  53 04 66 F6 53 00 01 C2 21 C2 15 46 54 00 0C 00
0050E0  00 18 67 18 4E B8 4F C2 12 00 53 00 4E B8 4F BC
0050F0  03 02 66 E2 01 82 21 C2 15 46 60 E0 70 17 4E B8
005100  4F A6 4E F8 4F BC 32 4E 10 05 42 42 42 83 7E 01
005110  14 12 67 32 B0 12 67 08 45 F2 20 01 52 43 60 F0
005120  21 C9 19 12 21 CA 19 16 11 C0 19 1C 52 4A B5 09
005130  66 06 53 00 66 F8 60 10 22 78 19 12 24 78 19 16
005140  10 38 19 1C 60 D2 42 07 4A 07 4E 75 0C 05 00 05
005150  62 2C 61 0A 0C 81 00 00 FF FE 62 22 4E 75 38 4E
005160  42 81 42 82 18 05 60 08 D2 81 26 01 E5 8B D2 83
005170  14 1C 02 02 00 0F D2 82 53 04 66 EC 4E 75 7E 02
005180  4E F8 60 08 42 43 7E 01 38 38 15 4C 28 78 15 88
005190  60 0C 34 14 B2 42 67 0E 65 08 52 43 54 4C 51 CC
0051A0  FF F2 42 07 4E 75 21 CC 15 0C 4E 75 48 E7 FF FE
0051B0  28 78 15 56 02 85 00 00 FF FF E3 4D 49 F4 50 00
0051C0  4B F4 50 00 21 CC 15 56 20 0C 90 8A E2 88 53 80
0051D0  6B 04 3B 24 60 F8 61 18 78 0E 98 43 60 04 DB 9E
0051E0  DB 9E 51 CC FF FA DB B8 15 5A 4C DF 7F FF 4E 75
0051F0  4D F8 15 80 78 1A 42 43 B5 DE 63 0C 52 43 51 CC
005200  FF F8 7E 00 4E F8 60 08 E2 4B 4E 75 2A 02 4E B8
005210  51 AC 34 84 4E 75 2A 02 4E B8 51 AC E3 4A 4E B8
005220  52 E4 43 F4 20 00 4E 75 2A 78 20 BC 34 01 66 06
005230  7E B0 4E 95 60 22 70 09 34 7C 52 5E 53 00 2A 1A
005240  B2 85 65 F8 60 02 2A 1A 7E AF 52 07 92 85 64 FA
005250  D2 85 4E 95 51 C8 FF F0 1E 3C 00 A0 4E D5 05 F5
005260  E1 00 00 98 96 80 00 0F 42 40 00 01 86 A0 00 00
005270  27 10 00 00 03 E8 00 00 00 64 00 00 00 0A 00 00
005280  00 01 28 78 15 0C 22 4C 54 8C 26 38 15 8C 96 89
005290  E2 8B 60 04 39 14 58 8C 51 CB FF FA 55 B8 15 8C
0052A0  53 78 15 4C 4E 75 E3 4A 4E B8 53 18 4B F2 20 00
0052B0  20 0C 90 8D 65 0A E2 88 34 DD 51 C8 FF FC 55 4A
0052C0  4E 75 31 F8 3A 02 52 CA 0C 52 00 00 66 14 2F 08
0052D0  20 4A 54 88 30 50 D1 F8 15 A0 20 BC 00 00 55 AE
0052E0  20 5F 4E 75 48 E7 40 80 20 78 15 A0 20 38 15 A4
0052F0  90 88 67 18 02 82 00 00 FF FF 22 18 67 14 B2 8A
005300  63 06 D2 82 59 88 20 C1 59 80 66 EE 4C DF 01 02
005310  4E 75 22 38 15 1A 60 EC 48 E7 40 80 20 78 15 A0
005320  20 38 15 A4 90 88 67 18 02 82 00 00 FF FF 22 18
005330  67 14 B2 8A 63 06 92 82 59 88 20 C1 59 80 66 EE
005340  4C DF 01 02 4E 75 22 38 15 1A 60 EC 7C A0 42 45
005350  7E 01 3C 48 4A 10 67 08 BC 18 67 06 52 45 60 F4
005360  42 07 4E 75 42 42 7E 01 3A 4E 38 7C 1F 80 78 04
005370  36 05 60 08 14 1D 09 34 20 00 67 06 51 CB FF F6
005380  4E 75 42 07 4E 75 38 7C 1F 80 7E 01 74 01 42 44
005390  60 08 18 19 05 34 40 00 67 06 51 C8 FF F6 4E 75
0053A0  42 07 4E 75 38 7C 53 E2 70 B9 7C 0F 42 41 42 42
0053B0  12 19 B0 01 65 12 C2 06 E9 09 14 19 B0 02 65 16
0053C0  C4 06 D2 02 16 C1 60 16 C2 06 12 34 10 01 E9 09
0053D0  14 19 B0 02 64 EA C4 06 D2 34 20 01 16 C1 51 CC
0053E0  FF D0 4E 75 0A 0B 0C 0D 0E 0F 76 01 4E B8 54 6C
0053F0  4A 07 67 50 47 F8 18 00 0C 18 00 A0 67 FA 53 48
005400  0C 10 00 A2 67 22 0C 10 00 A0 67 0E 0C 10 00 BA
005410  66 02 52 43 16 D8 67 1C 60 E6 16 D8 67 16 0C 10
005420  00 A0 66 DC 52 48 60 F6 16 D8 67 08 0C 10 00 A2
005430  66 F6 60 E0 42 13 41 F8 16 00 47 F8 18 00 10 DB
005440  67 02 60 FA 31 C3 15 4E 41 F8 16 00 4E 75 42 45
005450  7C A0 32 4E 34 4E BC 11 67 0A 4A 11 67 0A 52 45
005460  14 D9 60 F2 52 49 60 EE 42 12 4E 75 4E B8 5C 72
005470  08 07 00 04 66 F6 7E 01 0C 06 00 A0 66 10 47 F8
005480  54 94 7C 03 B1 0B 56 CE FF FC 66 02 42 07 41 F8
005490  16 00 4E 75 D2 C5 CD A0 14 C5 10 05 32 4E 14 D9
0054A0  53 00 66 FA 42 12 4E 75 7C 01 60 02 42 46 24 78
0054B0  15 C0 4E B8 55 B6 4E B8 51 06 66 20 4E B8 51 AC
0054C0  4E B8 54 98 21 CA 15 C4 24 78 15 E4 7A 04 4E B8
0054D0  51 AC E3 4D 48 72 50 00 21 DF 15 E4 4A 06 66 38
0054E0  60 2C 7C 01 60 02 42 46 24 78 15 B0 4E B8 51 06
0054F0  66 1C 4E B8 51 AC 4E B8 54 98 21 CA 15 B4 22 78
005500  15 BC 22 F8 19 02 22 F8 19 06 21 C9 15 BC 4A 06
005510  66 06 E7 4B 36 C3 E6 4B 4E 75 0C 1E 00 A2 66 00
005520  00 90 32 4E 42 45 4A 11 67 00 00 86 0C 19 00 A2
005530  67 04 52 45 60 F0 4A 45 67 76 24 78 15 98 4E B8
005540  51 06 E5 4B 4A 07 4E 75 4E B8 51 AC 4E B8 54 98
005550  21 CA 15 9C 58 B8 15 A4 36 F8 3A 02 2A 78 15 90
005560  3C 2B FF FA E5 4E 2C 35 60 00 58 86 21 C6 15 1A
005570  36 C3 2A 78 15 A0 4B F5 30 00 42 95 4E 75 08 38
005580  00 01 15 08 66 06 7E 2E 4E F8 60 08 61 8C 66 04
005590  61 B6 4E 75 20 78 15 A0 D1 C3 20 3C 00 00 55 AE
0055A0  B0 90 66 06 4E B8 55 58 4E 75 7E 07 60 04 55 B0
0055B0  7E 08 4E F8 60 08 48 E7 1C 0C 3A 4E 49 F8 1F 80
0055C0  42 44 18 1D 67 1C 16 34 40 00 02 03 00 20 67 12
0055D0  53 45 67 14 18 1D 67 0A 16 34 40 00 02 03 00 30
0055E0  66 EE 7E 2B 4E F8 60 08 4C DF 30 38 4E 75 48 E7
0055F0  FF FE 43 F8 17 00 47 F8 1F 80 14 38 15 42 42 38
005600  15 10 4E B8 3A 50 4E B8 3A 58 1A 33 70 00 6B 20
005610  41 F8 56 D8 42 41 42 40 10 18 BE 18 67 08 54 01
005620  51 C8 FF F8 60 DC 41 F8 56 DC 30 70 10 00 4E D0
005630  0C 07 00 8D 67 00 00 78 0C 07 00 A0 67 C4 12 C7
005640  42 11 49 F8 17 00 4E B8 20 D4 4A 07 66 10 1E 29
005650  FF FF 52 38 15 10 65 AA 4E B8 4C B6 60 A4 4E B8
005660  3A 34 42 21 60 9C 4E B8 3A 54 4A 38 15 10 67 92
005670  4A 38 15 42 66 0A 53 38 15 40 11 FC 00 28 15 42
005680  42 21 53 38 15 42 7E A0 4E B8 3A 9C 4E B8 3A 54
005690  53 38 15 42 53 38 15 10 4E B8 3A 50 60 00 FF 64
0056A0  4E B8 3A 54 42 38 15 30 42 38 15 42 60 1C 42 11
0056B0  49 F8 17 00 4A 14 67 18 4E B8 20 D4 4E B8 3A 54
0056C0  7E 0D 4E B8 3A 9C 42 38 15 42 4C DF 7F FF 4E 75
0056D0  4E B8 3A 34 60 00 FF 2C 02 8D 88 83 56 AE 56 66
0056E0  56 A0 1E 1E 0C 07 00 A4 66 54 42 40 42 83 42 84
0056F0  1E 1E 67 1C 0C 07 00 AC 67 16 4E B8 57 1A E9 07
005700  7C 04 DE 07 D9 84 D7 83 53 06 66 F6 52 40 60 E0
005710  B2 00 65 26 B4 00 62 22 4E 75 0C 07 00 B0 65 16
005720  04 07 00 B0 0C 07 00 0A 64 02 4E 75 5F 07 6B 06
005730  0C 07 00 10 65 F4 7E 05 60 06 7E 0B 60 02 7E 0C
005740  4E F8 60 08 11 FC 00 01 19 00 4E B8 3A 54 21 F8
005750  20 B8 20 BC 4E B8 3A 88 11 FC 00 01 15 30 42 38
005760  15 18 47 F8 19 00 42 A3 42 63 31 FC 14 FE 14 FE
005770  20 38 15 E4 2C 78 15 E0 90 8E E6 48 60 04 42 9E
005780  42 9E 51 C8 FF FA 08 B8 00 04 15 08 4E B8 53 4C
005790  4A 05 67 24 4E B8 53 64 4A 07 67 20 4E B8 51 4C
0057A0  4E B8 51 84 4A 07 67 14 2C 78 15 90 E5 4B 4D F6
0057B0  30 00 2C 56 4E F8 37 C4 4E F8 37 C0 4E 75 4E F8
0057C0  37 C0 24 0B 47 F8 18 00 94 8B 51 82 E2 8A 31 C2
0057D0  15 16 28 78 15 8C 38 1B 3E 1B 67 6C 36 1B 54 4B
0057E0  22 78 15 90 E5 4B 24 71 30 00 21 CA 15 34 E4 4B
0057F0  30 03 52 40 E5 48 28 31 00 00 98 8A E2 4C B8 78
005800  15 16 40 F8 15 0A 67 00 00 86 64 18 34 38 15 16
005810  94 44 21 C2 15 38 28 78 15 84 4E B8 52 16 21 C9
005820  15 84 60 70 34 04 94 78 15 16 98 42 21 C2 15 38
005830  E3 4C 45 F2 40 00 28 78 15 84 4E B8 52 A6 21 CA
005840  15 84 24 78 15 34 60 46 52 78 15 4C 42 87 74 01
005850  36 1B 3E 1B CF 8A 4E B8 52 0C 24 78 15 88 34 38
005860  15 4C E3 4A 48 72 20 00 21 DF 15 8C 24 78 15 90
005870  E5 4B 24 72 30 00 E4 4B 21 CA 15 34 28 78 15 84
005880  34 38 15 16 4E B8 52 16 21 C9 15 84 60 06 42 82
005890  4E B8 52 E4 34 38 15 16 34 DB 53 42 66 FA 47 F8
0058A0  18 00 4A 6B 00 02 66 38 24 78 15 90 E5 4B 45 F2
0058B0  30 00 E4 4B 28 78 15 94 74 02 4E B8 52 16 21 C9
0058C0  15 94 24 B8 15 34 42 82 34 38 15 16 E3 8A 58 4A
0058D0  38 38 15 4C 98 43 60 02 D5 9A 51 CC FF FC 60 32
0058E0  24 78 15 90 E5 4B 45 F2 30 00 E4 4B 24 B8 15 34
0058F0  58 8A 42 82 24 38 15 38 E3 8A 38 38 15 4C 98 43
005900  46 F8 15 0A 67 0C 65 06 44 82 60 02 D5 9A 51 CC
005910  FF FC 4E B8 3A 54 08 38 00 00 15 08 67 5C 48 A7
005920  C0 00 42 80 22 38 15 46 10 38 15 40 53 00 01 01
005930  66 18 52 00 01 01 67 FA 0C 00 00 17 66 06 4E B8
005940  3A 4C 60 02 52 00 11 C0 15 40 4C 9F 00 03 08 38
005950  00 02 15 08 67 1E 24 78 15 88 28 78 15 8C 32 2C
005960  FF FE E3 4B B2 72 30 00 66 0A 06 41 00 0A 65 04
005970  4E B8 52 28 08 F8 00 02 15 08 4E 75 38 38 15 4C
005980  67 3C 4E B8 5B A6 32 38 15 34 4E B8 51 84 4A 07
005990  66 10 4A 04 6B 28 34 38 15 34 94 78 15 36 64 1E
0059A0  67 1C E3 4B 20 78 15 88 41 F0 30 00 32 10 0C 41
0059B0  FF FF 67 0A B2 78 15 36 62 04 61 04 60 EE 4E 75
0059C0  4E B8 51 84 4A 07 67 60 2C 78 15 90 32 03 E5 49
0059D0  24 76 10 00 21 CA 15 38 32 03 52 41 E5 49 24 36
0059E0  10 00 94 4A E2 4A 24 78 15 38 4E B8 52 C2 28 78
0059F0  15 84 4E B8 52 A6 21 CA 15 84 24 78 15 90 E5 4B
005A00  45 F2 30 00 E4 4B 38 38 15 4C 98 43 44 82 49 EA
005A10  00 04 60 04 24 9C D5 9A 51 CC FF FA 48 6A FF FC
005A20  21 DF 15 94 4E B8 52 82 4E 75 21 F8 20 B0 20 BC
005A30  2A 78 20 BC 42 38 19 00 38 38 15 4C 67 00 00 CA
005A40  4E B8 5B A6 32 38 15 34 4E B8 51 84 4A 07 66 16
005A50  4A 04 6B 00 00 B4 34 38 15 34 94 78 15 36 64 00
005A60  00 A8 67 00 00 A4 22 78 15 C0 E3 4B 20 78 15 88
005A70  41 F0 30 00 E2 4B 7E 0D 4E 95 32 18 0C 41 FF FF
005A80  67 00 00 86 B2 78 15 36 62 7E 4E B8 52 28 2C 78
005A90  15 90 E5 4B 47 F6 30 00 E4 4B 26 53 52 43 E5 4B
005AA0  45 F6 30 00 E4 4B 24 52 48 A7 30 00 38 5B 59 4C
005AB0  38 54 4E 94 4C 9F 00 0C B5 CB 67 06 7E BA 4E 95
005AC0  60 E6 4E B8 3A 30 6B 02 60 AC 0C 07 00 93 67 08
005AD0  0C 07 00 83 67 32 60 9E 4E B8 3A 58 0C 07 00 91
005AE0  67 94 0C 07 00 83 67 20 0C 07 00 A0 67 02 60 E8
005AF0  32 18 0C 41 FF FF 67 10 4E B8 52 28 38 5B 59 4C
005B00  38 54 4E 94 53 44 66 D0 4E B8 3A 54 7E 0D 4E D5
005B10  7E 84 52 48 0C 10 00 A2 67 0C 16 D8 67 16 53 07
005B20  66 F2 7E 1C 60 10 52 48 42 1B 3E 0B E2 4F 64 02
005B30  42 1B 4E 75 7E 1B 4E F8 60 08 4E B8 53 4C 4A 05
005B40  67 52 45 F8 5B 7C 4E B8 51 06 67 48 4E B8 53 4C
005B50  0C 05 00 01 65 44 66 48 42 46 1C 16 04 06 00 B0
005B60  0C 06 00 02 64 3A E3 0E 45 F8 5B 90 34 72 60 00
005B70  41 F8 20 B0 E5 4B 21 8A 30 00 4E 75 04 CC C9 D3
005B80  D4 05 D0 D2 C9 CE D4 06 D3 D9 D3 CF D5 D4 00 00
005B90  3A 9C 3A 40 7E 11 60 00 04 70 7E 12 60 00 04 6A
005BA0  7E 13 4E F8 60 08 21 C8 17 00 42 78 15 38 42 45
005BB0  4E B8 5C 72 67 00 00 A6 08 07 00 04 66 1E 0C 06
005BC0  00 AD 67 06 0C 06 00 AC 66 2C 2C 78 15 88 31 D6
005BD0  15 34 4A 10 67 20 21 C8 17 00 60 4A 52 45 4E B8
005BE0  5C 72 67 18 08 07 00 04 66 F2 0C 06 00 AC 67 0C
005BF0  0C 06 00 AD 67 06 7E 03 4E F8 60 08 2C 78 17 00
005C00  4E B8 51 4C 4A 07 67 EE 31 C1 15 34 4A 28 FF FF
005C10  67 42 21 C8 17 00 42 45 4E B8 5C 72 67 2C 08 07
005C20  00 04 67 D2 52 45 4E B8 5C 72 67 08 08 07 00 04
005C30  66 F2 60 C2 2C 78 17 00 4E B8 51 4C 4A 07 67 B6
005C40  31 C1 15 36 31 C1 15 38 4E 75 2C 78 15 8C 31 D6
005C50  15 36 4E 75 31 F8 15 34 15 36 4E 75 2C 78 15 88
005C60  31 D6 15 34 2C 78 15 8C 31 D6 15 36 42 78 15 38
005C70  4E 75 49 F8 1F 80 42 46 1C 18 67 04 1E 34 60 00
005C80  4E 75 30 7C 16 00 70 14 E3 08 3C 35 00 00 78 27
005C90  1E 18 67 10 4E B8 3A 38 52 06 51 CC FF F4 E2 08
005CA0  52 00 60 E4 4E 75 4E B8 3A 54 3A 7C 20 80 42 80
005CB0  78 17 E3 08 3C 35 00 00 E2 08 76 27 4E B8 3A 3C
005CC0  4E B8 3A 40 52 06 51 CB FF F4 7E 0D 4E B8 3A 40
005CD0  52 00 51 CC FF DE 7E 0D 4E B8 3A 40 7E 0D 4E B8
005CE0  3A 40 4E 75 3A 7C 20 80 70 14 42 81 42 86 78 17
005CF0  98 00 1E 3C 00 A0 72 27 E3 08 3C 35 00 00 E2 08
005D00  4E B8 3A 38 52 06 51 C9 FF F8 01 C2 52 00 51 CC
005D10  FF E6 4E 75
