home *** CD-ROM | disk | FTP | other *** search
/ Programmer Power Tools / Programmer Power Tools.iso / crossasm / svasm02.arc / TEST02.ASM < prev    next >
Encoding:
Assembly Source File  |  1988-05-15  |  6.4 KB  |  395 lines

  1.     .PRINTC 15        ;CONTROL-O FOR EPSON 16.7 CPI
  2.     .PAGE            ;PAGING ON AT DEFAULT 58 LINES/PAGE
  3.     .WIDTH 132        ;WILL GET IT ALL ON WIDE PAPER
  4. ;
  5. ; Note:  .PRINTC and .PAGE were used in this file, but they don't print on
  6. ;        the output.  See the input TEST02.ASM.
  7. ;
  8. ;  TEST AND DEMONSTRATION FILE FOR SVASM02 6502/65C02 ASSEMBLER
  9. ;
  10.     * = $1000        ;TYPICAL START ADDRESS
  11. ;
  12.     .LISTF            ;LIST FALSE CONDITIONALS
  13.  
  14. ;  PRECEEDING BLANK LINE SHOULD BE COUNTED
  15. ;
  16. ;  EQUATES
  17. ;
  18.     START = *
  19. START2    * = * + 6        ;EQUIV TO INTEL DS 6
  20.     LOWBYT = <$1234        ;EXTRACT LOW BYTE...
  21.     HIBYT = >$1234        ;...AND THE HIGH
  22.     QUOTE1='G'        ;SINGLE QUOTE
  23.     QUOTE2 = 'CQ'        ;DOUBLE
  24.     ONEBYT = $25        ;ONE BYTE
  25.     TWOBYT = $4455        ;TWO BYTES
  26.     ZERO = $00        ;A ZERO
  27.     TSTINC = $FF        ;FOR COND. ASSEM. TEST
  28.     PORT1 = $3002        ;SAME
  29.     PORT3 = $3004
  30.     DAT1 = $3005
  31.     DAT3 = $3006
  32. ;
  33. ;  Lower case is OK in comments, but NOT for mnemonics or directives
  34. ;  It's also good in quoted strings, such as:
  35.     .BYTE 'This is a lower case string'
  36. ;
  37. ;  LEADING/TRAILING RADIX SPECIFIERS
  38. ;
  39.     DECI = 4095        ;NO SPECIFIER IS DECIMAL
  40. ;
  41.     BVAL1 = 10011101B    ;BINARY NUMBERS
  42.     BVAL2 = %10011101
  43. ;
  44.     OCTAL1 = @1377        ;OCTAL
  45.     OCTAL2 = 1377Q
  46. ;
  47.     HEX1 = $80        ;HEXADECIMAL
  48.     HEX2 = 80H
  49. ;
  50. ;  ARITHMETIC
  51. ;
  52.     DIFF = $120-$100
  53.     MINUS = $100 - $120
  54.     MIXED = OCTAL1+BVAL1-HEX1
  55.     BIAS = 'A'-'9'-1
  56.     MULT = 2 * 16
  57.     DIV = HEX1/2
  58.     SUM = BVAL2+HEX2
  59. ;
  60. ;  BYTE AND WORD DIRECTIVES
  61. ;
  62.     .BYTE $0D,$0A,'SVENSON ELECTRONICS','$'
  63.     .BYTE $45,$23,$31,$00
  64.     .WORD TWOBYT,ONEBYT
  65. ;
  66.     .INCLUDE TESTBOOL.ASM    ;TEST .INCLUDE, LOGICAL OPS
  67.     .INCLUDE ;TESB.ERR    ;AND AGAIN
  68.     .INCLUDE D:NODRIVE.ASM    ;STILL AGAIN
  69.     .INCLUDE TESTBOL.ASM    ;LAST TIME
  70. ;
  71. .IF TSTINC
  72. ;
  73. ;  THIS WILL ASSEMBLE, SINCE TSTINC IS NON-ZERO
  74. ;
  75.     LDA PORT1
  76.     AND #$FF
  77.     STA DAT1
  78. ;
  79.     .ELSE            ;THIS WILL NOT ASSEMBLE, BUT
  80.                 ;WILL LIST SINCE WE USED .LISTF
  81.     LDA PORT3
  82.     AND #$47
  83.     STA DAT3
  84. ;
  85.         .ENDIF        ;LOCATION ON THE LINE IS UNIMPORTANT
  86. ;
  87. .NOLIST                ;YOU SHOULDN'T SEE NEXT LINE
  88. ;THIS LINE SHOULD NOT LIST UNLESS THERE IS A BUG IN .NOLIST
  89. LIST    NOP            ;SEE IF LABEL IS DEFINED AND
  90.     BEQ *+6            ;LINES ADVANCE
  91. .LIST                ;TURN IT BACK ON
  92. ;
  93. ;  UNIQUE CMOS (65C02) INSTRUCTIONS.  .CMOS IS DEFAULTED
  94. ;  OFF, SO ALL THE FOLLOWING SHOULD PRODUCE ERRORS.
  95. ;
  96.     BRA *-126
  97. ;
  98.     STZ 56            ;ZERO PAGE
  99.     STZ 56,X        ;ZERO PAGE, INDEXED
  100.     STZ 5678        ;ABSOLUTE
  101.     STZ 5678,X        ;ABSOLUTE, X
  102. ;
  103.     TSB $FF
  104.     TRB $FF
  105.     TSB $2012
  106.     TRB $2012
  107. ;
  108.     INA
  109.     DEA
  110.     PHY
  111.     PLY
  112.     PHX
  113.     PLX
  114. ;
  115. ;  CMOS ADDRESSING MODES.  WILL ALSO PRODUCE ERRORS
  116. ;
  117.     ORA (90)
  118.     AND ($45)
  119.     EOR ($80)
  120.     ADC ($40)
  121.     STA ($44)
  122.     LDA ($90)
  123.     CMP ($2E)
  124.     SBC ($D4)
  125.     BIT 120,X
  126.     BIT #$34
  127.     BIT $4123,X
  128.     JMP ($4000,X)    
  129. ;
  130. ;  NOW TURN ON .CMOS, DO SAME INSTRUCTIONS
  131. ;
  132.     .CMOS            ;TURN ON CMOS
  133. ;
  134.     BRA *-126
  135. ;
  136.     STZ 56            ;ZERO PAGE
  137.     STZ 56,X        ;ZERO PAGE, INDEXED
  138.     STZ 5678        ;ABSOLUTE
  139.     STZ 5678,X        ;ABSOLUTE, X
  140. ;
  141.     TSB $FF
  142.     TRB $FF
  143.     TSB $2012
  144.     TRB $2012
  145. ;
  146.     INA
  147.     DEA
  148.     PHY
  149.     PLY
  150.     PHX
  151.     PLX
  152. ;
  153. ;  CMOS ADDRESSING MODES
  154. ;
  155.     ORA (90)
  156.     AND ($45)
  157.     EOR ($80)
  158.     ADC ($40)
  159.     STA ($44)
  160.     LDA ($90)
  161.     CMP ($2E)
  162.     SBC ($D4)
  163.     BIT 120,X
  164.     BIT #$34
  165.     BIT $4123,X
  166.     JMP ($4000,X)    
  167. ;
  168. ;  NON-CMOS (6502) INSTRUCTIONS
  169. ;
  170. ADCTST    ADC #40
  171.     ADC ONEBYT
  172.     ADC ONEBYT,X
  173.     ADC TWOBYT
  174.     ADC TWOBYT,X
  175.     ADC TWOBYT,Y
  176.     ADC ONEBYT,X)
  177.     ADC (ONEBYT),Y
  178. ;
  179. ANDTST    AND #40
  180.     AND ONEBYT
  181.     AND ONEBYT,X
  182.     AND TWOBYT
  183.     AND TWOBYT,X
  184.     AND TWOBYT,Y
  185.     AND (ONEBYT,X)
  186.     AND (ONEBYT),Y
  187. ;
  188. ASLTST    ASL A
  189.     ASL ONEBYT
  190.     ASL ONEBYT,X
  191.     ASL TWOBYT
  192.     ASL TWOBYT,X
  193. ;
  194. BRTEST    BCC BRTEST
  195.     BCS BRTEST
  196.     BEQ BRTEST
  197. ;
  198. BITEST    BIT ONEBYT
  199.     BIT TWOBYT
  200. ;
  201.     BMI BRTEST
  202.     BNE BRTEST
  203.     BPL BRTEST
  204. ;             The semicolon isn't required in blank lines, but it looks nice.
  205.     BRK
  206.  
  207.     BVC BRTEST
  208.     BVS BRTEST
  209.  
  210.     CLC
  211.     CLD
  212.     CLI
  213.     CLV
  214. ;
  215. CMPTST    CMP #40
  216.     CMP ONEBYT
  217.     CMP ONEBYT,X
  218.     CMP TWOBYT
  219.     CMP TWOBYT,X
  220.     CMP TWOBYT,Y
  221.     CMP (ONEBYT,X)
  222.     CMP (ONEBYT),Y
  223. ;
  224. CPXTST    CPX #40
  225.     CPX ONEBYT
  226.     CPX TWOBYT
  227.  
  228.     CPY #40
  229.     CPY ONEBYT
  230.     CPY TWOBYT
  231.  
  232.     DEC ONEBYT
  233.     DEC ONEBYT,X
  234.     DEC TWOBYT
  235.     DEC TWOBYT,X
  236.  
  237.     DEX
  238.     DEY
  239.  
  240.     EOR #40
  241.     EOR ONEBYT
  242.     EOR ONEBYT,X
  243.     EOR TWOBYT
  244.     EOR TWOBYT,X
  245.     EOR TWOBYT,Y
  246.     EOR (ONEBYT,X)
  247.     EOR (ONEBYT),Y
  248.  
  249.     INC ONEBYT
  250.     INC ONEBYT,X
  251.     INC TWOBYT
  252.     INC TWOBYT,X
  253.  
  254.     INX
  255.     INY
  256.  
  257.     JMP START
  258.     JMP (START)
  259.     JSR START
  260.  
  261.     LDA #40
  262.     LDA ONEBYT
  263.     LDA ONEBYT,X
  264.     LDA TWOBYT
  265.     LDA TWOBYT,X
  266.     LDA TWOBYT,Y
  267.     LDA (ONEBYT,X)
  268.     LDA (ONEBYT),Y
  269.  
  270.     LDX #40
  271.     LDX ONEBYT
  272.     LDX ONEBYT,Y
  273.     LDX TWOBYT
  274.     LDX TWOBYT,Y
  275.  
  276.     LDY #40
  277.     LDY ONEBYT
  278.     LDY ONEBYT,X
  279.     LDY TWOBYT
  280.     LDY TWOBYT,X
  281.  
  282.     LSR A
  283.     LSR ONEBYT
  284.     LSR ONEBYT,X
  285.     LSR TWOBYT
  286.     LSR TWOBYT,X
  287.  
  288.     NOP
  289. ;
  290.     * = $2000        ;SEE IF THE HEX FILE CATCHES A CHANGE IN PC
  291. ;
  292. START3                ;LABEL CAN BE ONLY THING ON A LINE, IF YOU LIKE
  293. ;
  294.     ORA #40
  295.     ORA ONEBYT
  296.     ORA ONEBYT,X
  297.     ORA TWOBYT
  298.     ORA TWOBYT,X
  299.     ORA TWOBYT,Y
  300.     ORA (ONEBYT,X)
  301.     ORA (ONEBYT),Y
  302.  
  303.     PHA
  304.     PHP
  305.     PLA
  306.     PLP
  307.  
  308.     ROL A
  309.     ROL ONEBYT
  310.     ROL ONEBYT,X
  311.     ROL TWOBYT
  312.     ROL TWOBYT,X
  313.  
  314.     ROR A
  315.     ROR ONEBYT    
  316.     ROR ONEBYT,X
  317.     ROR TWOBYT
  318.     ROR TWOBYT,X
  319.  
  320.     RTI
  321.     RTS
  322.  
  323.     SBC #40
  324.     SBC ONEBYT
  325.     SBC ONEBYT,X
  326.     SBC TWOBYT
  327.     SBC TWOBYT,X
  328.     SBC TWOBYT,Y
  329.     SBC (ONEBYT,X)
  330.     SBC (ONEBYT),Y
  331.  
  332.     SEC
  333.     SED
  334.     SEI
  335.  
  336.     STA ONEBYT
  337.     STA ONEBYT,X
  338.     STA TWOBYT
  339.     STA TWOBYT,X
  340.     STA TWOBYT,Y
  341.     STA (ONEBYT,X)
  342.     STA (ONEBYT),Y
  343.  
  344.     STX ONEBYT
  345.     STX ONEBYT,Y
  346.     STX TWOBYT
  347.  
  348.     STY ONEBYT
  349.     STY ONEBYT,X
  350.     STY TWOBYT
  351.  
  352.     TAX
  353.     TAY
  354.     TYA
  355.     TSX
  356.     TXA
  357.     TXS
  358. ;
  359. ;  EXAMPLES OF ERRORS NOT USED ELSEWHERE
  360. ;
  361.     LDA ONEBGT        ;UNDEFINED SYMBOL
  362.     ONEBYT = $45        ;SYMBOL PREVIOUSLY DEFINED
  363.     STA            ;SYNTAX ERROR
  364. $CHEM    LDA PORT1        ;ILLEGAL FIRST CHARACTER
  365.     LDA FWDREF        ;FORWARD REF TO PAGE ZERO
  366.     ORA TWOBYTE        ;SYMBOL >6 CHARACTERS
  367.     * = FWDREF        ;FORWARD REF IN EQUATE OR ORIGIN
  368.     .PSGE 58        ;UNIDENTIFIED DIRECTIVE
  369.     QUOTE = 'KM2H'        ;INVALID QUOTED STRING
  370.     BEQ START        ;BRANCH TARGET OUT OF RANGE
  371.     HEXNUM = $12DS        ;INVALID NUMERIC ARGUMENT
  372.     OVERF = $FFFF + 1    ;ARITHMETIC OVERFLOW
  373.     LDA #260        ;VALUE > 8 BITS
  374.     ZERO1 = ONEBYT/ZERO    ;DIVISION BY ZERO
  375.     .ELSE            ;NO OPEN IF
  376. ;
  377. ; MISC. TESTS
  378. ;
  379.     BEQ *-126        ;NO ERROR
  380.     BEQ *-127        ;BRANCH TARGET OUT OF RANGE
  381.     BEQ *+129        ;NO ERROR
  382.     BEQ *+130        ;BRANCH TARGET OUT OF RANGE
  383. ;
  384.     JMP ONEBYT        ;SHOULD USE ABSOLUTE
  385.     JMP (ONEBYT)        ;HERE TOO
  386.     SBC ONEBYT,Y        ;AND AGAIN
  387. ;
  388.     .IF FWDREF        ;FORWARD REFERENCE IN CONDITIONAL
  389. ;
  390.     FWDREF = 127        ;A PAGE ZERO DEFINITION
  391. ;
  392. CHECKP    NOP            ;ADDRESS AND VALUE IN TABLE SHOULD BE SAME
  393. ;
  394. ;    .END            ;.END DIRECTIVE IS LAST (IT'S COMMENTED OUT)
  395.