home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / enterprs / c128 / util / 128a.arc / UNASM-SOURCE < prev    next >
Encoding:
Text File  |  1993-03-04  |  17.4 KB  |  1,215 lines

  1. .ORG 60000
  2. .MEM:.BANK 1
  3. ;      ****** CONSTANT VALUES **********
  4. LENGTH =22
  5. CR =29
  6. CL =CR+128
  7. CU =17+128
  8. UPARO =174
  9. ;      ******* POINTERS *********
  10. BANK =59
  11. LIM =$1212
  12. SOB =45
  13. SOV =$1210
  14. BAS =251
  15. CODE =253
  16. YREG =255
  17. SYNTPTR =65
  18. MSGPTR =67
  19. BEG =71
  20. EOB =73
  21. ICRNCH =772
  22. ;      ******* ADDRESSES ********
  23. IBUFFER =$200
  24. KGETIN =$FFE4
  25. KPRINT =$FFD2
  26. CLR =$51FD
  27.  
  28. ;      ***START OF CODING***
  29.   SEI
  30.   LDY >CATCH
  31.   CPY ICRNCH+1
  32.   BEQ +
  33.  
  34.   LDA #$7E;      BANK 1 WITH I/O
  35.   STA $FF00
  36.   LDA $D506
  37.   PHA
  38.   ORA #%0110
  39.   STA $D506;      8K OF SHARED LOW RAM
  40.   LDA ICRNCH+1
  41.   STA CRNCHSRV+1
  42.   LDA ICRNCH
  43.   STA CRNCHSRV
  44.   STY ICRNCH+1
  45.   LDA <CATCH
  46.   STA ICRNCH
  47.   PLA
  48.   STA $D506;      RESTORE RAM CONFIGURATION
  49.   STA $FF02;      NORMAL BANK 1
  50.  
  51. + JSR MOVECODE
  52.  
  53.   JSR WRITE
  54.   .ASC "BUD UNASM (C)1986 CHRIS MILLER"
  55.   .BYT 0
  56.   JMP READY
  57.   
  58. WRITE =*
  59.     LDY #0
  60.     PLA
  61.     STA MSGPTR
  62.     PLA
  63.     STA MSGPTR+1
  64. MSGLOOP =*
  65.     INC MSGPTR
  66.     BNE +
  67.     INC MSGPTR+1
  68. +   LDA (MSGPTR),Y
  69.     BEQ MSGEND
  70.     JSR PRINT
  71.     BNE MSGLOOP
  72. MSGEND =*
  73.     LDA MSGPTR+1
  74.     PHA
  75.     LDA MSGPTR
  76.     PHA
  77.     RTS
  78.  
  79. PRINT =*
  80.   STY YREG
  81.   LDY <KPRINT
  82.   JMP CALLROM
  83.  
  84. GETIN =*
  85.   STY YREG
  86.   LDY <KGETIN
  87.   JMP CALLROM
  88.  
  89. UNASSEMBLE =*
  90.  JSR MOVECODE
  91.  JSR WRITE
  92.  .BYT CU,CR,CR
  93.  .ASC "ASSEMBLE FROM $":.BYT 0
  94.  JSR GETRANGE
  95.  
  96.  JSR GETBANK
  97.  
  98. WHATFORM =*
  99.  JSR GETSTYLE
  100.  ROR STYFLG
  101.  
  102.  JMP START
  103.  
  104. ;      ****START OF INPUT ANDM ADDRESS***
  105. GETRANGE =*
  106.  JSR READKEY
  107.  LDX #3
  108. MOV =*
  109.  LDA INPUTK,X
  110.  STA SOURCE,X
  111.  DEX
  112.  BPL MOV
  113.  
  114.  JSR READINP
  115.  LDA END+1
  116.  STA BEG+1
  117.  LDA END
  118.  STA BEG
  119.  
  120. RANGE =*
  121.  JSR WRITE
  122.  .ASC " TO $":.BYT 0
  123.  JSR READKEY
  124.  JMP READINP
  125.  
  126. GETBANK =*
  127.  JSR WRITE
  128.  .BYT 13:.ASC "WHICH BANK 0-F?":.BYT 164," ",0
  129.  
  130. - JSR GETIN
  131.   BEQ -
  132.  
  133.    LDX #15
  134. -  CMP HEX,X
  135.    BEQ +
  136.    DEX
  137.    BPL -
  138.    BMI --
  139.  
  140. +  JSR PRINT
  141.    LDA BANKSETS,X
  142.    STA BANK
  143.    RTS
  144.  
  145. GETSTYLE =*
  146.  JSR WRITE
  147.  .BYT 13:.ASC "STANDARD FORMAT Y/N?":.BYT 164," ",0
  148.  
  149. - JSR GETIN
  150.   CMP "N"
  151.   BEQ +
  152.   CMP "Y"
  153.   BNE -
  154.  
  155. + JSR PRINT
  156.   CMP "Y"
  157.   RTS
  158.  
  159. ;      ******GET HEXADDRESS/INPUT ASCI***
  160. READKEY =*
  161.  LDA #0
  162.  STA OFFSET
  163.  
  164. READLOOP =*
  165.   JSR WRITE
  166.   .BYT 164,CL,0
  167. - JSR GETIN
  168.   LDX #HEXLEN
  169. HEXCHK =*
  170.  CMP HEX,X
  171.  BEQ DELETE
  172.  DEX
  173.  BPL HEXCHK
  174.  BMI -
  175.  
  176. DELETE =*
  177.  CMP #20;      DEL KEY
  178.  BNE RETURN
  179.  LDX OFFSET
  180.  BEQ -
  181.  JSR PRINT
  182.  DEC OFFSET
  183.  BPL READLOOP
  184.  
  185. RETURN =*
  186.  CMP #13
  187.  BNE NUMBER
  188.  LDA OFFSET
  189.  CMP #4
  190.  BNE -
  191.  RTS
  192.  
  193. NUMBER =*
  194.  LDX OFFSET
  195.  CPX #4
  196.  BEQ -
  197.  STA INPUTK,X
  198.  JSR PRINT
  199.  INC OFFSET
  200.  BPL READLOOP
  201.  
  202. ;      START ACTUALLY DOING DISASSEMBLY**
  203. START =*
  204.  SEI
  205.  
  206. ;      MAINLINE MODULE FOR PROGRAM
  207.  JSR INIT
  208.  JSR PASS1
  209.  JSR INIT
  210.  
  211.  JSR WRITE
  212.  .BYT 13:.ASC "[2]":.BYT 13,0
  213.  JSR PASS2
  214.  JMP READY;      RETURN TO BASIC
  215.  
  216. MOVECODE =*
  217.   LDA #$7E
  218.   STA $FF00;      BANK 1 WITH I/O
  219.   LDA $D506
  220.   PHA
  221.   ORA #%0110
  222.   STA $D506
  223.  
  224.   LDX #0
  225. - LDA HCOD,X
  226.   STA CATCH,X
  227.   INX
  228.   CPX #HBYTS
  229.   BCC -
  230.  
  231.   LDX #0
  232. - LDA LCOD,X
  233.   STA INIT,X
  234.   INX
  235.   CPX #LBYTS
  236.   BCC -
  237.  
  238.   PLA
  239.   STA $D506
  240.   STA $FF02;      BANK 1
  241.   RTS
  242.  
  243. ;      CODE TO RELOCATE
  244. HCOD =*
  245. .OFF $1300;      FREE RAM 
  246.  
  247. CATCH =*
  248.    LDA IBUFFER
  249.    CMP #"U"
  250.    BNE +
  251.    LDA IBUFFER+1
  252.    CMP #"N"
  253.    BNE +
  254.  
  255.    LDX #0
  256. -  LDA INVOK,X
  257.    STA CALLUNASM,X
  258.    INX
  259.    CPX #UNLEN
  260.    BCC -
  261.    JMP CALLUNASM
  262.  
  263. INVOK =*
  264.    SEI
  265.    STA $FF02;      BANK 1
  266.    JMP UNASSEMBLE
  267. UNLEN =*-INVOK
  268.  
  269. +  JMP $00:CRNCHSRV =*-2;      SELF MODIFY JUMP
  270. .OFE
  271. HBYTS =*-HCOD-2;      DONT MOVE JMP DEST
  272.  
  273. LCOD =*
  274.   .OFF $140
  275. INIT =*
  276.   STA $FF01
  277.   LDX #1
  278. - LDA LIM,X
  279.   STA EOB,X
  280.   LDA SOB,X
  281.   STA BAS,X
  282.   LDA BEG,X
  283.   STA CODE,X
  284.   DEX
  285.   BPL -
  286.   STA $FF02
  287.   RTS
  288.  
  289. READY =*
  290.    LDA #0
  291.    STA $FF00
  292.    CLI
  293.    JSR CLR
  294.    JMP $4003
  295.   
  296. GETBYTE =*
  297.   LDA BANK
  298.   STA $FF00;      USER BANK
  299.   LDA (CODE),Y
  300.   STA $FF02;      BANK 1
  301.   RTS
  302.  
  303. GETSRC =*
  304.   STA $FF01;      BANK 0
  305.   LDA (BAS),Y
  306.   STA $FF02;      BANK 1
  307.   RTS
  308.  
  309. PUTBYTE =*
  310.   STA $FF01;      BANK 0
  311.   STA (BAS),Y
  312.   STA $FF02;      BANK 1
  313.   RTS
  314.  
  315. CALLROM =*
  316.    STY DEST
  317.    LDY #0
  318.    STY $FF00
  319.    LDY YREG
  320.    CLI
  321.    JSR $FFFF:DEST =*-2
  322.    SEI
  323.    STA $FF02;      BANK 1
  324.    RTS
  325.  
  326. PUTSOV =*
  327.    STA $FF01
  328.    STA SOV
  329.    STX SOV+1
  330.    STA $FF02
  331.    RTS
  332.  
  333. CALLUNASM =*
  334. .OFE
  335. LBYTS =*-LCOD
  336.  
  337. READINP =*
  338.  LDY #0
  339.  JSR CONVERT
  340.  ASL
  341.  ASL
  342.  ASL
  343.  ASL
  344.  STA END+1
  345.  JSR CONVERT
  346.  ORA END+1
  347.  STA END+1
  348.  JSR CONVERT
  349.  ASL
  350.  ASL
  351.  ASL
  352.  ASL
  353.  STA END
  354.  JSR CONVERT
  355.  ORA END
  356.  STA END
  357.  RTS
  358.  
  359. CONVERT =*
  360.   LDA INPUTK,Y
  361.   INY
  362.   SEC
  363.   SBC #48
  364.   CMP #10
  365.   BCC +
  366.   SBC #7
  367. + RTS
  368. ;      *****WORK IN BASIC'S BUFFER NOW***
  369. PASS1 =*
  370.  JSR GETOP
  371.  LDY #4
  372.  LDA #174;      BASIC ^
  373.  
  374. - JSR PUTBYTE
  375.   LDA #" "
  376.   INY
  377.   CPY #LENGTH-1
  378.   BCC -
  379.   LDA #0
  380.   JSR PUTBYTE
  381. ;      *******SEE IF BYTE NEEDED******
  382.  BIT BYTFLG
  383.  BPL LOCATEM
  384.  
  385.  LDX #0
  386.  LDY #10
  387.  
  388. A'BYTE =*
  389.  LDA BYTM,X;      PUT .BYTE
  390.  JSR PUTBYTE
  391.  INX
  392.  INY
  393.  CPX #6
  394.  BCC A'BYTE
  395.  
  396.  LDA #"$"
  397.  JSR PUTBYTE
  398.  INY
  399.  
  400.  LDA COMMAND
  401.  PHA
  402.  LSR:LSR:LSR:LSR
  403.  TAX
  404.  LDA HEX,X
  405.  JSR PUTBYTE
  406.  INY
  407.  
  408.  PLA
  409.  AND #15
  410.  TAX
  411.  LDA HEX,X
  412.  JSR PUTBYTE
  413.  BNE PUTLNK
  414.  
  415. ;      ***LOCATE ASCI STRING MNEMONIC****
  416. LOCATEM =*
  417.  LDA LO,X
  418.  STA SYNTPTR
  419.  LDA HI,X
  420.  STA SYNTPTR+1
  421.  LDY #3
  422. NAMEP =*
  423.  LDA (SYNTPTR),Y
  424.  PHA
  425.  DEY
  426.  BPL NAMEP
  427.  PLA
  428.  STA SYNTPTR
  429.  PLA
  430.  STA SYNTPTR+1
  431.  
  432.  LDY #0;      
  433. PUTNAM =*
  434.  LDA (SYNTPTR),Y
  435.  TAX
  436.  TYA
  437.  CLC
  438.  ADC #10
  439.  TAY
  440.  TXA
  441.  JSR PUTBYTE
  442.  TYA
  443.  SEC
  444.  SBC #9
  445.  TAY
  446.  CPY #3;      THREE LETTERS
  447.  BCC PUTNAM
  448.  
  449.  PLA;      POINT TO MODE
  450.  STA SYNTPTR
  451.  PLA
  452.  STA SYNTPTR+1
  453.  
  454. ;      *** PUT MODE PARTICULARS IN ******                                
  455.  LDY #0
  456. LOOKATMNE =*
  457.  LDA (SYNTPTR),Y
  458.  CMP #"$"
  459.  BNE QUIT
  460.  STY INDEX
  461. QUIT =*
  462.  CMP #"/"
  463.  BEQ PUTLNK
  464.  TAX
  465.  TYA
  466.  CLC
  467.  ADC #14
  468.  TAY
  469.  TXA
  470.  JSR PUTBYTE
  471.  TYA
  472.  SEC
  473.  SBC #13
  474.  TAY
  475.  BNE LOOKATMNE
  476.  
  477. ;      *****PUT IN LINK************
  478. PUTLNK =*
  479.  LDY #0
  480.  LDX BAS+1
  481.  LDA #LENGTH
  482.  CLC
  483.  ADC BAS
  484.  BCC +
  485.  INX
  486. + JSR PUTBYTE
  487.  TXA
  488.  INY
  489.  JSR PUTBYTE;      LINK SET
  490.  INX
  491.  CPX EOB+1
  492.  BCC +
  493.  LDA CODE:STA END
  494.  LDA CODE+1:STA END+1
  495.  
  496. ;      *****PUT IN THE LINENUMBER*****
  497. + LDA CODE;      
  498.  STA WHERE
  499.  INY
  500.  JSR PUTBYTE
  501.  LDA CODE+1
  502.  STA WHERE+1
  503.  INY
  504.  JSR PUTBYTE
  505.  BIT STYFLG
  506.  BPL ARGU
  507.  
  508.  LDY #4
  509.  LDA #"$"
  510.  JSR PUTBYTE
  511.  INY
  512.  JSR HEXIT
  513.  
  514. ;      ****PUT IN THE ADDRESS CODE****
  515. ARGU =*
  516.  LDY #0
  517.  LDA BYTES
  518.  CMP #1
  519.  BEQ NEXTPASS
  520.  CMP #2
  521.  PHP
  522.  PHP
  523.  INY
  524.  
  525. CNVHEX =*
  526.  JSR GETBYTE
  527.  STA ADDRESS
  528.  AND #15
  529.  TAX
  530.  LDA INDEX
  531.  CLC
  532.  ADC #16;      ADDRESS OFFSET
  533.  TAY
  534.  PLP
  535.  BEQ TWOBYTES
  536.  INY
  537.  INY
  538.  
  539. TWOBYTES =*
  540.  LDA HEX,X
  541.  JSR PUTBYTE
  542.  LDA ADDRESS
  543.  LSR
  544.  LSR
  545.  LSR
  546.  LSR
  547.  TAX
  548.  LDA HEX,X
  549.  DEY
  550.  JSR PUTBYTE
  551.  PLP
  552.  BEQ NEXTPASS
  553.  LDY #2
  554.  LDA #0
  555.  PHP
  556.  PHP
  557.  BEQ CNVHEX
  558. :
  559. NEXTPASS =*
  560.  JSR NEWOP
  561.  JMP PASS1
  562. ;      ****UPDATE THE POINTERS***********
  563. NEWOP =*
  564.  JSR NXTLNK
  565.  LDA CODE+1;      EOF TEST
  566.  CMP END+1
  567.  BCC AGAIN
  568.  BNE THROUGH
  569.  LDA CODE
  570.  CMP END
  571.  BCC AGAIN
  572. ;      *******WE ARE FINISHED/CLOSE UP***
  573. THROUGH =*
  574.  LDY #0
  575.  TYA
  576. ZEROS3 =*
  577.  JSR PUTBYTE
  578.  INY
  579.  CPY #3
  580.  BNE ZEROS3
  581.  LDA BAS
  582.  LDX BAS+1
  583.  CLC
  584.  ADC #2
  585.  BCC +
  586.  INX
  587. + JSR PUTSOV
  588.  PLA
  589.  PLA
  590.  RTS
  591. ;      **RESET THE CODE PTR/ DO AGAIN****
  592. AGAIN =*
  593.  LDY #0
  594.  LDA CODE
  595.  CLC
  596.  ADC BYTES
  597.  BCC *+4
  598.  INC CODE+1
  599.  STA CODE
  600.  RTS
  601. ;      ******BEGIN PASS TWO**************
  602. PASS2 =*
  603.  JSR GETOP
  604.  BIT STYFLG
  605.  BMI BRTEST
  606.  JSR ISADD;      SEE IF LABEL ADDRESS
  607. ;      *******SEE IF BRANCH COMMAND******
  608. BRTEST =*
  609.  LDA #0
  610.  STA BRAFLG
  611.  LDA COMMAND
  612.  LDX #7
  613.  
  614. CHKB =*
  615.  CMP BRANCHES,X
  616.  BEQ BRANCH
  617.  DEX
  618.  BPL CHKB
  619. ;      *******RESET THE POINTERS*********
  620. NEXTOP =*
  621.  JSR NXTLNK
  622.  LDA CODE+1;      THE EOF TEST
  623.  CMP END+1
  624.  BCC MORE
  625.  BNE EXIT
  626.  LDA CODE
  627.  CMP END
  628.  BCC MORE
  629. EXIT =*
  630.  RTS
  631.  
  632. MORE =*
  633.  LDA CODE
  634.  CLC
  635.  ADC BYTES
  636.  BCC +
  637.  INC CODE+1
  638. + STA CODE
  639.  JMP PASS2
  640.  
  641. ;      ****BRANCHING COMMAND****
  642. BRANCH =*
  643.  LDA #$FF
  644.  STA BRAFLG
  645.  LDY #1
  646.  JSR GETBYTE
  647.  BPL AHEAD
  648.  
  649. BACK =*
  650.  EOR #255
  651.  STA OFFSET
  652.  DEC OFFSET
  653.  LDX CODE+1
  654.  LDA CODE
  655.  SEC
  656.  SBC OFFSET
  657.  BCS SHOWWHERE
  658.  DEX
  659. SHOWWHERE =*
  660.  STX WHERE+1
  661.  STA WHERE
  662.  JSR DOIFIN
  663.  JMP NEXTOP
  664. ;      *******BRANCH IS FORWARD*********
  665. AHEAD =*
  666.  LDX CODE+1
  667.  STA OFFSET
  668.  CLC
  669.  ADC #2
  670.  ADC CODE
  671.  BCC SHOWWHERE
  672.  INX
  673.  BCS SHOWWHERE
  674.  
  675. ;      *******GET NEW OPERATOR**********
  676. GETOP =*
  677.  LDY #0
  678.  LDX #0
  679.  STX BYTFLG
  680.  JSR GETBYTE
  681.  STA COMMAND
  682.  
  683. FINDOPC =*
  684.  CMP OPCOD,X
  685.  BEQ FOUNDOPC
  686.  INX
  687.  CPX #OPCODENUM
  688.  BCC FINDOPC
  689.  
  690.  LDA #$FF
  691.  STA BYTFLG
  692.  
  693. FOUNDOPC =*
  694.  LDA BYTTAK,X
  695.  STA BYTES
  696. EXITO =*
  697.  RTS
  698. ;      *****SEE ABOUT ADDRESS LABELS*****
  699. ISADD =*
  700.  LDY #1
  701.  LDA BYTES
  702.  CMP #3
  703.  BCC EXITO
  704.  JSR GETBYTE
  705.  STA WHERE
  706.  INY
  707.  JSR GETBYTE
  708.  STA WHERE+1
  709. ;      *****SEE IF IN RANGE*************
  710. DOIFIN =*
  711.  BIT STYFLG
  712.  BPL MYWAY
  713.  
  714. HEXJUMP =*
  715.  LDY #15
  716.  JMP HEXIT
  717.  
  718. RETREAT =*
  719.  LDA BASHLD
  720.  STA BAS
  721.  LDA BASHLD+1
  722.  STA BAS+1
  723.  
  724. BTEST =*
  725.  BIT BRAFLG
  726.  BMI HEXJUMP
  727.  RTS
  728.  
  729. MYWAY =*
  730.  LDA WHERE+1
  731.  CMP BEG+1
  732.  BCC BTEST
  733.  BEQ BEGQ
  734.  CMP END+1
  735.  BEQ ENDQ
  736.  BCS BTEST
  737.  
  738. ;      *****FIND LINE FOR LABEL*********
  739. FINDLINE =*
  740.  LDA BAS;      *SAVE POINTER*
  741.  STA BASHLD
  742.  LDA BAS+1
  743.  STA BASHLD+1
  744.  LDY SOB+1
  745.  LDX SOB
  746.  STX BAS
  747.  STY BAS+1
  748. ;      ******FIND THE PAGE**************
  749. FINDHI =*
  750.  LDY #3
  751.  JSR GETSRC
  752.  CMP WHERE+1
  753.  BEQ FINDLO
  754.  BCS RETREAT
  755.  JSR NXTLNK
  756.  JMP FINDHI
  757. ;      ******FIND THE LINE**************
  758. FINDLO =*
  759.  LDY #2
  760.  JSR GETSRC
  761.  LDY #1
  762.  CMP WHERE
  763.  BEQ HAVELINE
  764.  BCS RETREAT
  765.  JSR NXTLNK
  766.  JMP FINDLO
  767. ;      ******FOUND THE LINE TO LABEL****
  768. :
  769. HAVELINE =*
  770.  JMP PUTLABEL
  771.  
  772. BEGQ =*
  773.  DEY
  774.  LDA WHERE
  775.  CMP BEG
  776.  BCC BTEST
  777.  LDA END+1
  778.  CMP BEG+1
  779.  BNE FINDLINE
  780.  
  781. ENDQ =*
  782.  LDY #1
  783.  LDA WHERE
  784.  CMP END
  785.  BCC FINDLINE
  786.  BCS BTEST
  787. ;      *******WRITE LABEL TO BUFFER*****
  788. PUTLABEL =*
  789.  LDY #4
  790.  
  791.  LDA "Z"
  792.  JSR PUTBYTE
  793.  INY
  794.  JSR HEXIT
  795.  
  796.  LDA BASHLD+1
  797.  STA BAS+1
  798.  LDA BASHLD
  799.  STA BAS
  800.  
  801.  LDY #14
  802.  LDA COMMAND
  803.  CMP #$6C;      *INDIRECT JUMP*
  804.  BNE +
  805.  INY
  806. + LDA "Z"
  807.   JSR PUTBYTE
  808.   INY
  809.  
  810. HEXIT =*
  811.  LDA WHERE+1
  812.  PHA
  813.  LSR:LSR:LSR:LSR
  814.  TAX
  815.  LDA HEX,X
  816.  JSR PUTBYTE
  817.  INY
  818.  PLA
  819.  AND #15
  820.  TAX
  821.  LDA HEX,X
  822.  JSR PUTBYTE
  823.  INY
  824.  LDA WHERE
  825.  PHA
  826.  LSR:LSR:LSR:LSR
  827.  TAX
  828.  LDA HEX,X
  829.  JSR PUTBYTE
  830.  INY
  831.  PLA
  832.  AND #15
  833.  TAX
  834.  LDA HEX,X
  835.  JSR PUTBYTE
  836.  RTS
  837.  
  838. NXTLNK =*
  839.  LDY #0
  840.  JSR GETSRC
  841.  TAX
  842.  INY
  843.  JSR GETSRC
  844.  STA BAS+1
  845.  STX BAS
  846.  RTS
  847.  
  848. OPCOD =*;      ************OPCODES*******
  849. .BYTE $69,$65,$75,$6D,$7D,$79,$61,$71;      ADC
  850. .BYTE $29,$25,$35,$2D,$3D,$39,$21,$31;      AND
  851. .BYTE $0A,$06,$16,$0E,$1E;      ASL
  852. .BYTE $90,$B0,$F0,$24,$2C,$30,$D0,$10,$00;      BCC-BCS-BEQ-BIT-BMI-BNE-BPL-BRK
  853. .BYTE $50,$70,$18,$D8,$58,$B8;      BVC-BVS-CLC-CLD-CLI-CLV
  854. .BYTE $C9,$C5,$D5,$CD,$DD,$D9,$C1,$D1;      CMP
  855. .BYTE $E0,$E4,$EC,$C0,$C4,$CC;      CPX-CPY
  856. .BYTE $C6,$D6,$CE,$DE,$CA,$88;      DEC-DEX-DEY
  857. .BYTE $49,$45,$55,$4D,$5D,$59,$41,$51;      EOR
  858. .BYTE $E6,$F6,$EE,$FE,$E8,$C8;      INC-INX-INY
  859. .BYTE $4C,$6C,$20;      JMP-JSR
  860. .BYTE $A9,$A5,$B5,$AD,$BD,$B9,$A1,$B1;      LDA
  861. .BYTE $A2,$A6,$B6,$AE,$BE;      LDX
  862. .BYTE $A0,$A4,$B4,$AC,$BC;      LDY
  863. .BYTE $4A,$46,$56,$4E,$5E,$EA;      LSR-NOP
  864. .BYTE $09,$05,$15,$0D,$1D,$19,$01,$11;      ORA
  865. .BYTE $48,$08,$68,$28;      PHA-PHP-PLA-PLP
  866. .BYTE $2A,$26,$36,$2E,$3E;      ROL
  867. .BYTE $6A,$66,$76,$6E,$7E;      ROR
  868. .BYTE $40,$60;      RTI-RTS
  869. .BYTE $E9,$E5,$F5,$ED,$FD,$F9,$E1,$F1;      SBC
  870. .BYTE $38,$F8,$78;      SEC-SED-SEI
  871. .BYTE $85,$95,$8D,$9D,$99,$81,$91;      STA
  872. .BYTE $86,$96,$8E,$84,$94,$8C;      STX-STY
  873. .BYTE $AA,$A8,$BA,$8A,$9A,$98;      TAX-TAY-TSX-TXA-TXS-TYA
  874. OPCODENUM =*-OPCOD
  875.  
  876. ;      ***LOW BYTE OF COMMAAND POINTER***
  877. LO =*
  878. .BYTE <ADC1,ADC2,ADC3,ADC4,ADC5,ADC6,ADC7,ADC8
  879. .BYTE <AND1,AND2,AND3,AND4,AND5,AND6,AND7,AND8
  880. .BYTE <ASL1,ASL2,ASL3,ASL4,ASL5
  881. .BYTE <BCC1,BCS1,BEQ1,BIT1,BIT2
  882. .BYTE <BMI1,BNE1,BPL1,BRK1,BVC1,BVS1
  883. .BYTE <CLC1,CLD1,CLI1,CLV1
  884. .BYTE <CMP1,CMP2,CMP3,CMP4,CMP5,CMP6,CMP7,CMP8
  885. .BYTE <CPX1,CPX2,CPX3,CPY1,CPY2,CPY3
  886. .BYTE <DEC1,DEC2,DEC3,DEC4,DEX1,DEY1
  887. .BYTE <EOR1,EOR2,EOR3,EOR4,EOR5,EOR6,EOR7,EOR8
  888. .BYTE <INC1,INC2,INC3,INC4
  889. .BYTE <INX1,INY1,JMP1,JMP2,JSR1
  890. .BYTE <LDA1,LDA2,LDA3,LDA4,LDA5,LDA6,LDA7,LDA8
  891. .BYTE <LDX1,LDX2,LDX3,LDX4,LDX5
  892. .BYTE <LDY1,LDY2,LDY3,LDY4,LDY5
  893. .BYTE <LSR1,LSR2,LSR3,LSR4,LSR5,NOP1
  894. .BYTE <ORA1,ORA2,ORA3,ORA4,ORA5,ORA6,ORA7,ORA8
  895. .BYTE <PHA1,PHP1,PLA1,PLP1
  896. .BYTE <ROL1,ROL2,ROL3,ROL4,ROL5
  897. .BYTE <ROR1,ROR2,ROR3,ROR4,ROR5,RTI1,RTS1
  898. .BYTE <SBC1,SBC2,SBC3,SBC4,SBC5,SBC6,SBC7,SBC8
  899. .BYTE <SEC1,SED1,SEI1
  900. .BYTE <STA1,STA2,STA3,STA4,STA5,STA6,STA7
  901. .BYTE <STX1,STX2,STX3,STY1,STY2,STY3
  902. .BYTE <TAX1,TAY1,TSX1,TXA1,TXS1,TYA1
  903.  
  904. ;      ***HI BYTE OF COMMAND POINTER******
  905. HI =*
  906. .BYTE >ADC1,ADC2,ADC3,ADC4,ADC5,ADC6,ADC7,ADC8
  907. .BYTE >AND1,AND2,AND3,AND4,AND5,AND6,AND7,AND8
  908. .BYTE >ASL1,ASL2,ASL3,ASL4,ASL5
  909. .BYTE >BCC1,BCS1,BEQ1,BIT1,BIT2
  910. .BYTE >BMI1,BNE1,BPL1,BRK1,BVC1,BVS1
  911. .BYTE >CLC1,CLD1,CLI1,CLV1
  912. .BYTE >CMP1,CMP2,CMP3,CMP4,CMP5,CMP6,CMP7,CMP8
  913. .BYTE >CPX1,CPX2,CPX3,CPY1,CPY2,CPY3
  914. .BYTE >DEC1,DEC2,DEC3,DEC4,DEX1,DEY1
  915. .BYTE >EOR1,EOR2,EOR3,EOR4,EOR5,EOR6,EOR7,EOR8
  916. .BYTE >INC1,INC2,INC3,INC4
  917. .BYTE >INX1,INY1,JMP1,JMP2,JSR1
  918. .BYTE >LDA1,LDA2,LDA3,LDA4,LDA5,LDA6,LDA7,LDA8
  919. .BYTE >LDX1,LDX2,LDX3,LDX4,LDX5
  920. .BYTE >LDY1,LDY2,LDY3,LDY4,LDY5
  921. .BYTE >LSR1,LSR2,LSR3,LSR4,LSR5,NOP1
  922. .BYTE >ORA1,ORA2,ORA3,ORA4,ORA5,ORA6,ORA7,ORA8
  923. .BYTE >PHA1,PHP1,PLA1,PLP1
  924. .BYTE >ROL1,ROL2,ROL3,ROL4,ROL5
  925. .BYTE >ROR1,ROR2,ROR3,ROR4,ROR5,RTI1,RTS1
  926. .BYTE >SBC1,SBC2,SBC3,SBC4,SBC5,SBC6,SBC7,SBC8
  927. .BYTE >SEC1,SED1,SEI1
  928. .BYTE >STA1,STA2,STA3,STA4,STA5,STA6,STA7
  929. .BYTE >STX1,STX2,STX3,STY1,STY2,STY3
  930. .BYTE >TAX1,TAY1,TSX1,TXA1,TXS1,TYA1
  931.  
  932. HEX =*
  933.  .ASC "0123456789ABCDEF"
  934.  .BYTE 20,13
  935. HEXLEN =*-HEX
  936.  
  937. BANKSETS =*;      FOR MMU
  938. .BYT 63,127,191,255,22,86,150,214,42,106,170,234,6,10,1,0
  939.  
  940. BYTTAK =*
  941. .BYTE 2,2,2,3,3,3,2,2
  942. .BYTE 2,2,2,3,3,3,2,2
  943. .BYTE 1,2,2,3,3,2,2,2,2,3,2
  944. .BYTE 2,2,1,2,2,1,1,1,1
  945. .BYTE 2,2,2,3,3,3,2,2
  946. .BYTE 2,2,3,2,2,3,2,2,3,3,1,1
  947. .BYTE 2,2,2,3,3,3,2,2,2,2,3,3
  948. .BYTE 1,1,3,3,3,2,2,2,3,3,3,2,2
  949. .BYTE 2,2,2,3,3,2,2,2,3,3
  950. .BYTE 1,2,2,3,3,1
  951. .BYTE 2,2,2,3,3,3,2,2
  952. .BYTE 1,1,1,1,1,2,2,3,3
  953. .BYTE 1,2,2,3,3,1,1
  954. .BYTE 2,2,2,3,3,3,2,2
  955. .BYTE 1,1,1,2,2,3,3,3,2,2
  956. .BYTE 2,2,3,2,2,3,1,1,1,1,1,1,1
  957.  
  958. BRANCHES =*
  959.  .BYTE $90,$B0,$F0,$30,$D0,$10,$50,$70
  960.  
  961. JMPTBL =*
  962. ADC1 .WORD ADCM,IMD
  963. ADC2 .WORD ADCM,ZPG
  964. ADC3 .WORD ADCM,ZPX
  965. ADC4 .WORD ADCM,ABS
  966. ADC5 .WORD ADCM,ABX
  967. ADC6 .WORD ADCM,ABY
  968. ADC7 .WORD ADCM,IDX
  969. ADC8 .WORD ADCM,IDY
  970. AND1 .WORD ANDM,IMD
  971. AND2 .WORD ANDM,ZPG
  972. AND3 .WORD ANDM,ZPX
  973. AND4 .WORD ANDM,ABS
  974. AND5 .WORD ANDM,ABX
  975. AND6 .WORD ANDM,ABY
  976. AND7 .WORD ANDM,IDX
  977. AND8 .WORD ANDM,IDY
  978. ASL1 .WORD ASLM,IMP
  979. ASL2 .WORD ASLM,ZPG
  980. ASL3 .WORD ASLM,ZPX
  981. ASL4 .WORD ASLM,ABS
  982. ASL5 .WORD ASLM,ABX
  983. BCC1 .WORD BCCM,REL
  984. BCS1 .WORD BCSM,REL
  985. BEQ1 .WORD BEQM,REL
  986. BIT1 .WORD BITM,ZPG
  987. BIT2 .WORD BITM,ABS
  988. BMI1 .WORD BMIM,REL
  989. BNE1 .WORD BNEM,REL
  990. BPL1 .WORD BPLM,REL
  991. BRK1 .WORD BRKM,IMP
  992. BVC1 .WORD BVCM,REL
  993. BVS1 .WORD BVSM,REL
  994. CLC1 .WORD CLCM,IMP
  995. CLD1 .WORD CLDM,IMP
  996. CLI1 .WORD CLIM,IMP
  997. CLV1 .WORD CLVM,IMP
  998. CMP1 .WORD CMPM,IMD
  999. CMP2 .WORD CMPM,ZPG
  1000. CMP3 .WORD CMPM,ZPX
  1001. CMP4 .WORD CMPM,ABS
  1002. CMP5 .WORD CMPM,ABX
  1003. CMP6 .WORD CMPM,ABY
  1004. CMP7 .WORD CMPM,IDX
  1005. CMP8 .WORD CMPM,IDY
  1006. CPX1 .WORD CPXM,IMD
  1007. CPX2 .WORD CPXM,ZPG
  1008. CPX3 .WORD CPXM,ABS
  1009. CPY1 .WORD CPYM,IMD
  1010. CPY2 .WORD CPYM,ZPG
  1011. CPY3 .WORD CPYM,ABS
  1012. DEC1 .WORD DECM,ZPG
  1013. DEC2 .WORD DECM,ZPX
  1014. DEC3 .WORD DECM,ABS
  1015. DEC4 .WORD DECM,ABX
  1016. DEX1 .WORD DEXM,IMP
  1017. DEY1 .WORD DEYM,IMP
  1018. EOR1 .WORD EORM,IMD
  1019. EOR2 .WORD EORM,ZPG
  1020. EOR3 .WORD EORM,ZPX
  1021. EOR4 .WORD EORM,ABS
  1022. EOR5 .WORD EORM,ABX
  1023. EOR6 .WORD EORM,ABY
  1024. EOR7 .WORD EORM,IDX
  1025. EOR8 .WORD EORM,IDY
  1026. INC1 .WORD INCM,ZPG
  1027. INC2 .WORD INCM,ZPX
  1028. INC3 .WORD INCM,ABS
  1029. INC4 .WORD INCM,ABX
  1030. INX1 .WORD INXM,IMP
  1031. INY1 .WORD INYM,IMP
  1032. JMP1 .WORD JMPM,ABS
  1033. JMP2 .WORD JMPM,IDJ
  1034. JSR1 .WORD JSRM,ABS
  1035. LDA1 .WORD LDAM,IMD
  1036. LDA2 .WORD LDAM,ZPG
  1037. LDA3 .WORD LDAM,ZPX
  1038. LDA4 .WORD LDAM,ABS
  1039. LDA5 .WORD LDAM,ABX
  1040. LDA6 .WORD LDAM,ABY
  1041. LDA7 .WORD LDAM,IDX
  1042. LDA8 .WORD LDAM,IDY
  1043. LDX1 .WORD LDXM,IMD
  1044. LDX2 .WORD LDXM,ZPG
  1045. LDX3 .WORD LDXM,ZPY
  1046. LDX4 .WORD LDXM,ABS
  1047. LDX5 .WORD LDXM,ABY
  1048. LDY1 .WORD LDYM,IMD
  1049. LDY2 .WORD LDYM,ZPG
  1050. LDY3 .WORD LDYM,ZPX
  1051. LDY4 .WORD LDYM,ABS
  1052. LDY5 .WORD LDYM,ABX
  1053. LSR1 .WORD LSRM,IMP
  1054. LSR2 .WORD LSRM,ZPG
  1055. LSR3 .WORD LSRM,ZPX
  1056. LSR4 .WORD LSRM,ABS
  1057. LSR5 .WORD LSRM,ABX
  1058. NOP1 .WORD NOPM,IMP
  1059. ORA1 .WORD ORAM,IMD
  1060. ORA2 .WORD ORAM,ZPG
  1061. ORA3 .WORD ORAM,ZPX
  1062. ORA4 .WORD ORAM,ABS
  1063. ORA5 .WORD ORAM,ABX
  1064. ORA6 .WORD ORAM,ABY
  1065. ORA7 .WORD ORAM,IDX
  1066. ORA8 .WORD ORAM,IDY
  1067. PHA1 .WORD PHAM,IMP
  1068. PHP1 .WORD PHPM,IMP
  1069. PLA1 .WORD PLAM,IMP
  1070. PLP1 .WORD PLPM,IMP
  1071. ROL1 .WORD ROLM,IMP
  1072. ROL2 .WORD ROLM,ZPG
  1073. ROL3 .WORD ROLM,ZPX
  1074. ROL4 .WORD ROLM,ABS
  1075. ROL5 .WORD ROLM,ABX
  1076. ROR1 .WORD RORM,IMP
  1077. ROR2 .WORD RORM,ZPG
  1078. ROR3 .WORD RORM,ZPX
  1079. ROR4 .WORD RORM,ABS
  1080. ROR5 .WORD RORM,ABX
  1081. RTI1 .WORD RTIM,IMP
  1082. RTS1 .WORD RTSM,IMP
  1083. SBC1 .WORD SBCM,IMD
  1084. SBC2 .WORD SBCM,ZPG
  1085. SBC3 .WORD SBCM,ZPX
  1086. SBC4 .WORD SBCM,ABS
  1087. SBC5 .WORD SBCM,ABX
  1088. SBC6 .WORD SBCM,ABY
  1089. SBC7 .WORD SBCM,IDX
  1090. SBC8 .WORD SBCM,IDY
  1091. SEC1 .WORD SECM,IMP
  1092. SED1 .WORD SEDM,IMP
  1093. SEI1 .WORD SEIM,IMP
  1094. STA1 .WORD STAM,ZPG
  1095. STA2 .WORD STAM,ZPX
  1096. STA3 .WORD STAM,ABS
  1097. STA4 .WORD STAM,ABX
  1098. STA5 .WORD STAM,ABY
  1099. STA6 .WORD STAM,IDX
  1100. STA7 .WORD STAM,IDY
  1101. STX1 .WORD STXM,ZPG
  1102. STX2 .WORD STXM,ZPY
  1103. STX3 .WORD STXM,ABS
  1104. STY1 .WORD STYM,ZPG
  1105. STY2 .WORD STYM,ZPX
  1106. STY3 .WORD STYM,ABS
  1107. TAX1 .WORD TAXM,IMP
  1108. TAY1 .WORD TAYM,IMP
  1109. TSX1 .WORD TSXM,IMP
  1110. TXA1 .WORD TXAM,IMP
  1111. TXS1 .WORD TXSM,IMP
  1112. TYA1 .WORD TYAM,IMP
  1113.  
  1114. BYTM .ASC ".BYTE "
  1115. ADCM .ASC "ADC"
  1116. ANDM .ASC "AND"
  1117. ASLM .ASC "ASL"
  1118. BCCM .ASC "BCC"
  1119. BCSM .ASC "BCS"
  1120. BEQM .ASC "BEQ"
  1121. BITM .ASC "BIT"
  1122. BMIM .ASC "BMI"
  1123. BNEM .ASC "BNE"
  1124. BPLM .ASC "BPL"
  1125. BRKM .ASC "BRK"
  1126. BVCM .ASC "BVC"
  1127. BVSM .ASC "BVS"
  1128. CLCM .ASC "CLC"
  1129. CLDM .ASC "CLD"
  1130. CLIM .ASC "CLI"
  1131. CLVM .ASC "CLV"
  1132. CMPM .ASC "CMP"
  1133. CPXM .ASC "CPX"
  1134. CPYM .ASC "CPY"
  1135. DECM .ASC "DEC"
  1136. DEXM .ASC "DEX"
  1137. DEYM .ASC "DEY"
  1138. EORM .ASC "EOR"
  1139. INCM .ASC "INC"
  1140. INXM .ASC "INX"
  1141. INYM .ASC "INY"
  1142. JMPM .ASC "JMP"
  1143. JSRM .ASC "JSR"
  1144. LDAM .ASC "LDA"
  1145. LDXM .ASC "LDX"
  1146. LDYM .ASC "LDY"
  1147. LSRM .ASC "LSR"
  1148. NOPM .ASC "NOP"
  1149. ORAM .ASC "ORA"
  1150. PHAM .ASC "PHA"
  1151. PHPM .ASC "PHP"
  1152. PLAM .ASC "PLA"
  1153. PLPM .ASC "PLP"
  1154. ROLM .ASC "ROL"
  1155. RORM .ASC "ROR"
  1156. RTIM .ASC "RTI"
  1157. RTSM .ASC "RTS"
  1158. SBCM .ASC "SBC"
  1159. SECM .ASC "SEC"
  1160. SEDM .ASC "SED"
  1161. SEIM .ASC "SEI"
  1162. STAM .ASC "STA"
  1163. STXM .ASC "STX"
  1164. STYM .ASC "STY"
  1165. TAXM .ASC "TAX"
  1166. TAYM .ASC "TAY"
  1167. TSXM .ASC "TSX"
  1168. TXAM .ASC "TXA"
  1169. TXSM .ASC "TXS"
  1170. TYAM .ASC "TYA"
  1171. IMP .ASC "/"
  1172. ZPG =*
  1173. ABS =*
  1174. REL =*
  1175. .ASC "$/"
  1176. ZPX .ASC "$  ,X/"
  1177. ZPY .ASC "$  ,Y/"
  1178. ABX .ASC "$    ,X/"
  1179. ABY .ASC "$    ,Y/"
  1180. IDX .ASC "($  ,X)/"
  1181. IDY .ASC "($  ),Y/"
  1182. IMD .ASC "#$/"
  1183. IDJ .ASC "($    )/"
  1184. ASK .ASC "+1/"
  1185.  
  1186. ;      *****VARIABLE TABLE*****
  1187. SOURCE =*;      STRING VARS
  1188. .ORG *+4
  1189. INPUTK =*
  1190. .ORG *+4
  1191. BASHLD =*;      POINTER VARS
  1192. .ORG *+2
  1193. END =*
  1194. .ORG *+2
  1195. WHERE =*
  1196. .ORG *+2
  1197. FND =*
  1198. .ORG *+2
  1199. OFFSET =*;      VARIABLES
  1200. .ORG *+1
  1201. BYTES =*
  1202. .ORG *+1
  1203. INDEX =*
  1204. .ORG *+1
  1205. ADDRESS =*
  1206. .ORG *+1
  1207. COMMAND =*
  1208. .ORG *+1
  1209. STYFLG =*
  1210. .ORG *+1
  1211. BRAFLG =*
  1212. .ORG *+1
  1213. BYTFLG =*
  1214.  
  1215.