AS65 Assembler for R6502 [1.42].  Copyright 1994-2007, Frank A. Kingswood                                                Page    1
---------------------------------------------------- 6502_functional_test.a65 ----------------------------------------------------

6104 lines read, no errors in pass 1.
                        ;
                        ; 6 5 0 2   F U N C T I O N A L   T E S T
                        ;
                        ; Copyright (C) 2012-2015  Klaus Dormann
                        ;
                        ; This program is free software: you can redistribute it and/or modify
                        ; it under the terms of the GNU General Public License as published by
                        ; the Free Software Foundation, either version 3 of the License, or
                        ; (at your option) any later version.
                        ;
                        ; This program is distributed in the hope that it will be useful,
                        ; but WITHOUT ANY WARRANTY; without even the implied warranty of
                        ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                        ; GNU General Public License for more details.
                        ;
                        ; You should have received a copy of the GNU General Public License
                        ; along with this program.  If not, see <http://www.gnu.org/licenses/>.
                        
                        
                        ; This program is designed to test all opcodes of a 6502 emulator using all
                        ; addressing modes with focus on propper setting of the processor status
                        ; register bits.
                        ; 
                        ; version 04-dec-2017
                        ; contact info at http://2m5.de or email K@2m5.de
                        ;
                        ; assembled with AS65 from http://www.kingswood-consulting.co.uk/assemblers/
                        ; command line switches: -l -m -s2 -w -h0
                        ;                         |  |  |   |  no page headers in listing
                        ;                         |  |  |   wide listing (133 char/col)
                        ;                         |  |  write intel hex file instead of binary
                        ;                         |  expand macros in listing
                        ;                         generate pass2 listing
                        ;
                        ; No IO - should be run from a monitor with access to registers.
                        ; To run load intel hex image with a load command, than alter PC to 400 hex
                        ; (code_segment) and enter a go command.
                        ; Loop on program counter determines error or successful completion of test.
                        ; Check listing for relevant traps (jump/branch *).
                        ; Please note that in early tests some instructions will have to be used before
                        ; they are actually tested!
                        ;
                        ; RESET, NMI or IRQ should not occur and will be trapped if vectors are enabled.
                        ; Tests documented behavior of the original NMOS 6502 only! No unofficial
                        ; opcodes. Additional opcodes of newer versions of the CPU (65C02, 65816) will
                        ; not be tested. Decimal ops will only be tested with valid BCD operands and
                        ; N V Z flags will be ignored.
                        ;
                        ; Debugging hints:
                        ;     Most of the code is written sequentially. if you hit a trap, check the
                        ;   immediately preceeding code for the instruction to be tested. Results are
                        ;   tested first, flags are checked second by pushing them onto the stack and
                        ;   pulling them to the accumulator after the result was checked. The "real"
                        ;   flags are no longer valid for the tested instruction at this time!
                        ;     If the tested instruction was indexed, the relevant index (X or Y) must
                        ;   also be checked. Opposed to the flags, X and Y registers are still valid.
                        ;
                        ; versions:
                        ;   28-jul-2012  1st version distributed for testing
                        ;   29-jul-2012  fixed references to location 0, now #0
                        ;                added license - GPLv3
                        ;   30-jul-2012  added configuration options
                        ;   01-aug-2012  added trap macro to allow user to change error handling
                        ;   01-dec-2012  fixed trap in branch field must be a branch
                        ;   02-mar-2013  fixed PLA flags not tested
                        ;   19-jul-2013  allowed ROM vectors to be loaded when load_data_direct = 0
                        ;                added test sequence check to detect if tests jump their fence
                        ;   23-jul-2013  added RAM integrity check option
                        ;   16-aug-2013  added error report to standard output option
                        ;   13-dec-2014  added binary/decimal opcode table switch test
                        ;   14-dec-2014  improved relative address test
                        ;   23-aug-2015  added option to disable self modifying tests
                        ;   24-aug-2015  all self modifying immediate opcodes now execute in data RAM
                        ;                added small branch offset pretest
                        ;   21-oct-2015  added option to disable decimal mode ADC & SBC tests
                        ;   04-dec-2017  fixed BRK only tested with interrupts enabled
                        ;                added option to skip the remainder of a failing test
                        ;                in report.i65
                        
                        
                        ; C O N F I G U R A T I O N
                        
                        ;ROM_vectors writable (0=no, 1=yes)
                        ;if ROM vectors can not be used interrupts will not be trapped
                        ;as a consequence BRK can not be tested but will be emulated to test RTI
0001 =                  ROM_vectors = 1
                        
                        ;load_data_direct (0=move from code segment, 1=load directly)
                        ;loading directly is preferred but may not be supported by your platform
                        ;0 produces only consecutive object code, 1 is not suitable for a binary image
0001 =                  load_data_direct = 1
                        
                        ;I_flag behavior (0=force enabled, 1=force disabled, 2=prohibit change, 3=allow
                        ;change) 2 requires extra code and is not recommended. SEI & CLI can only be
                        ;tested if you allow changing the interrupt status (I_flag = 3)
0003 =                  I_flag = 3
                        
                        ;configure memory - try to stay away from memory used by the system
                        ;zero_page memory start address, $50 (80) consecutive Bytes required
                        ;                                add 2 if I_flag = 2
000a =                  zero_page = $a  
                        
                        ;data_segment memory start address, $6A (106) consecutive Bytes required
0200 =                  data_segment = $200  
                            if (data_segment & $ff) != 0
                                ERROR ERROR ERROR low byte of data_segment MUST be $00 !!
                            endif  
                        
                        ;code_segment memory start address, 13kB of consecutive space required
                        ;                                   add 2.5 kB if I_flag = 2
0400 =                  code_segment = $400  
                        
                        ;self modifying code may be disabled to allow running in ROM
                        ;0=part of the code is self modifying and must reside in RAM
                        ;1=tests disabled: branch range
0000 =                  disable_selfmod = 0
                        
                        ;report errors through I/O channel (0=use standard self trap loops, 1=include
                        ;report.i65 as I/O channel, add 3.5 kB)
0000 =                  report = 0
                        
                        ;RAM integrity test option. Checks for undesired RAM writes.
                        ;set lowest non RAM or RAM mirror address page (-1=disable, 0=64k, $40=16k)
                        ;leave disabled if a monitor, OS or background interrupt is allowed to alter RAM
ffff =                  ram_top = -1
                        
                        ;disable test decimal mode ADC & SBC, 0=enable, 1=disable,
                        ;2=disable including decimal flag in processor status
0000 =                  disable_decimal = 0
                        
                                noopt       ;do not take shortcuts
                        
                        ;macros for error & success traps to allow user modification
                        ;example:
                        ;trap    macro
                        ;        jsr my_error_handler
                        ;        endm
                        ;trap_eq macro
                        ;        bne skip\?
                        ;        trap           ;failed equal (zero)
                        ;skip\?
                        ;        endm
                        ;
                        ; my_error_handler should pop the calling address from the stack and report it.
                        ; putting larger portions of code (more than 3 bytes) inside the trap macro
                        ; may lead to branch range problems for some tests.
                            if report = 0
                        trap    macro
                                jmp *           ;failed anyway
                                endm
                        trap_eq macro
                                beq *           ;failed equal (zero)
                                endm
                        trap_ne macro
                                bne *           ;failed not equal (non zero)
                                endm
                        trap_cs macro
                                bcs *           ;failed carry set
                                endm
                        trap_cc macro
                                bcc *           ;failed carry clear
                                endm
                        trap_mi macro
                                bmi *           ;failed minus (bit 7 set)
                                endm
                        trap_pl macro
                                bpl *           ;failed plus (bit 7 clear)
                                endm
                        trap_vs macro
                                bvs *           ;failed overflow set
                                endm
                        trap_vc macro
                                bvc *           ;failed overflow clear
                                endm
                        ; please observe that during the test the stack gets invalidated
                        ; therefore a RTS inside the success macro is not possible
                        success macro
                                jmp *           ;test passed, no errors
                                endm
                            endif
                            if report = 1
                        trap    macro
                                jsr report_error
                                endm
                        trap_eq macro
                                bne skip\?
                                trap           ;failed equal (zero)
                        skip\?
                                endm
                        trap_ne macro
                                beq skip\?
                                trap            ;failed not equal (non zero)
                        skip\?
                                endm
                        trap_cs macro
                                bcc skip\?
                                trap            ;failed carry set
                        skip\?
                                endm
                        trap_cc macro
                                bcs skip\?
                                trap            ;failed carry clear
                        skip\?
                                endm
                        trap_mi macro
                                bpl skip\?
                                trap            ;failed minus (bit 7 set)
                        skip\?
                                endm
                        trap_pl macro
                                bmi skip\?
                                trap            ;failed plus (bit 7 clear)
                        skip\?
                                endm
                        trap_vs macro
                                bvc skip\?
                                trap            ;failed overflow set
                        skip\?
                                endm
                        trap_vc macro
                                bvs skip\?
                                trap            ;failed overflow clear
                        skip\?
                                endm
                        ; please observe that during the test the stack gets invalidated
                        ; therefore a RTS inside the success macro is not possible
                        success macro
                                jsr report_success
                                endm
                            endif
                        
                        
0001 =                  carry   equ %00000001   ;flag bits in status
0002 =                  zero    equ %00000010
0004 =                  intdis  equ %00000100
0008 =                  decmode equ %00001000
0010 =                  break   equ %00010000
0020 =                  reserv  equ %00100000
0040 =                  overfl  equ %01000000
0080 =                  minus   equ %10000000
                        
0001 =                  fc      equ carry
0002 =                  fz      equ zero
0003 =                  fzc     equ carry+zero
0040 =                  fv      equ overfl
0042 =                  fvz     equ overfl+zero
0080 =                  fn      equ minus
0081 =                  fnc     equ minus+carry
0082 =                  fnz     equ minus+zero
0083 =                  fnzc    equ minus+zero+carry
00c0 =                  fnv     equ minus+overfl
                        
0030 =                  fao     equ break+reserv    ;bits always on after PHP, BRK
0034 =                  fai     equ fao+intdis      ;+ forced interrupt disable
0038 =                  faod    equ fao+decmode     ;+ ignore decimal
003c =                  faid    equ fai+decmode     ;+ ignore decimal
00ff =                  m8      equ $ff             ;8 bit mask
00fb =                  m8i     equ $ff&~intdis     ;8 bit mask - interrupt disable
                        
                        ;macros to allow masking of status bits.
                        ;masking test of decimal bit
                        ;masking of interrupt enable/disable on load and compare
                        ;masking of always on bits after PHP or BRK (unused & break) on compare
                            if disable_decimal < 2
                                if I_flag = 0
                        load_flag   macro
                                    lda #\1&m8i         ;force enable interrupts (mask I)
                                    endm
                        cmp_flag    macro
                                    cmp #(\1|fao)&m8i   ;I_flag is always enabled + always on bits
                                    endm
                        eor_flag    macro
                                    eor #(\1&m8i|fao)   ;mask I, invert expected flags + always on bits
                                    endm
                                endif
                                if I_flag = 1
                        load_flag   macro
                                    lda #\1|intdis      ;force disable interrupts
                                    endm
                        cmp_flag    macro
                                    cmp #(\1|fai)&m8    ;I_flag is always disabled + always on bits
                                    endm
                        eor_flag    macro
                                    eor #(\1|fai)       ;invert expected flags + always on bits + I
                                    endm
                                endif
                                if I_flag = 2
                        load_flag   macro
                                    lda #\1
                                    ora flag_I_on       ;restore I-flag
                                    and flag_I_off
                                    endm
                        cmp_flag    macro
                                    eor flag_I_on       ;I_flag is never changed
                                    cmp #(\1|fao)&m8i   ;expected flags + always on bits, mask I
                                    endm
                        eor_flag    macro
                                    eor flag_I_on       ;I_flag is never changed
                                    eor #(\1&m8i|fao)   ;mask I, invert expected flags + always on bits
                                    endm
                                endif
                                if I_flag = 3
                        load_flag   macro
                                    lda #\1             ;allow test to change I-flag (no mask)
                                    endm
                        cmp_flag    macro
                                    cmp #(\1|fao)&m8    ;expected flags + always on bits
                                    endm
                        eor_flag    macro
                                    eor #\1|fao         ;invert expected flags + always on bits
                                    endm
                                endif
                            else
                                if I_flag = 0
                        load_flag   macro
                                    lda #\1&m8i         ;force enable interrupts (mask I)
                                    endm
                        cmp_flag    macro
                                    ora #decmode        ;ignore decimal mode bit
                                    cmp #(\1|faod)&m8i  ;I_flag is always enabled + always on bits
                                    endm
                        eor_flag    macro
                                    ora #decmode        ;ignore decimal mode bit
                                    eor #(\1&m8i|faod)  ;mask I, invert expected flags + always on bits
                                    endm
                                endif
                                if I_flag = 1
                        load_flag   macro
                                    lda #\1|intdis      ;force disable interrupts
                                    endm
                        cmp_flag    macro
                                    ora #decmode        ;ignore decimal mode bit
                                    cmp #(\1|faid)&m8   ;I_flag is always disabled + always on bits
                                    endm
                        eor_flag    macro
                                    ora #decmode        ;ignore decimal mode bit
                                    eor #(\1|faid)      ;invert expected flags + always on bits + I
                                    endm
                                endif
                                if I_flag = 2
                        load_flag   macro
                                    lda #\1
                                    ora flag_I_on       ;restore I-flag
                                    and flag_I_off
                                    endm
                        cmp_flag    macro
                                    eor flag_I_on       ;I_flag is never changed
                                    ora #decmode        ;ignore decimal mode bit
                                    cmp #(\1|faod)&m8i  ;expected flags + always on bits, mask I
                                    endm
                        eor_flag    macro
                                    eor flag_I_on       ;I_flag is never changed
                                    ora #decmode        ;ignore decimal mode bit
                                    eor #(\1&m8i|faod)  ;mask I, invert expected flags + always on bits
                                    endm
                                endif
                                if I_flag = 3
                        load_flag   macro
                                    lda #\1             ;allow test to change I-flag (no mask)
                                    endm
                        cmp_flag    macro
                                    ora #decmode        ;ignore decimal mode bit
                                    cmp #(\1|faod)&m8   ;expected flags + always on bits
                                    endm
                        eor_flag    macro
                                    ora #decmode        ;ignore decimal mode bit
                                    eor #\1|faod        ;invert expected flags + always on bits
                                    endm
                                endif
                            endif
                        
                        ;macros to set (register|memory|zeropage) & status
                        set_stat    macro       ;setting flags in the processor status register
                                    load_flag \1
                                    pha         ;use stack to load status
                                    plp
                                    endm
                        
                        set_a       macro       ;precharging accu & status
                                    load_flag \2
                                    pha         ;use stack to load status
                                    lda #\1     ;precharge accu
                                    plp
                                    endm
                        
                        set_x       macro       ;precharging index & status
                                    load_flag \2
                                    pha         ;use stack to load status
                                    ldx #\1     ;precharge index x
                                    plp
                                    endm
                        
                        set_y       macro       ;precharging index & status
                                    load_flag \2
                                    pha         ;use stack to load status
                                    ldy #\1     ;precharge index y
                                    plp
                                    endm
                        
                        set_ax      macro       ;precharging indexed accu & immediate status
                                    load_flag \2
                                    pha         ;use stack to load status
                                    lda \1,x    ;precharge accu
                                    plp
                                    endm
                        
                        set_ay      macro       ;precharging indexed accu & immediate status
                                    load_flag \2
                                    pha         ;use stack to load status
                                    lda \1,y    ;precharge accu
                                    plp
                                    endm
                        
                        set_z       macro       ;precharging indexed zp & immediate status
                                    load_flag \2
                                    pha         ;use stack to load status
                                    lda \1,x    ;load to zeropage
                                    sta zpt
                                    plp
                                    endm
                        
                        set_zx      macro       ;precharging zp,x & immediate status
                                    load_flag \2
                                    pha         ;use stack to load status
                                    lda \1,x    ;load to indexed zeropage
                                    sta zpt,x
                                    plp
                                    endm
                        
                        set_abs     macro       ;precharging indexed memory & immediate status
                                    load_flag \2
                                    pha         ;use stack to load status
                                    lda \1,x    ;load to memory
                                    sta abst
                                    plp
                                    endm
                        
                        set_absx    macro       ;precharging abs,x & immediate status
                                    load_flag \2
                                    pha         ;use stack to load status
                                    lda \1,x    ;load to indexed memory
                                    sta abst,x
                                    plp
                                    endm
                        
                        ;macros to test (register|memory|zeropage) & status & (mask)
                        tst_stat    macro       ;testing flags in the processor status register
                                    php         ;save status
                                    pla         ;use stack to retrieve status
                                    pha
                                    cmp_flag \1
                                    trap_ne
                                    plp         ;restore status
                                    endm
                                    
                        tst_a       macro       ;testing result in accu & flags
                                    php         ;save flags
                                    cmp #\1     ;test result
                                    trap_ne
                                    pla         ;load status
                                    pha
                                    cmp_flag \2
                                    trap_ne
                                    plp         ;restore status
                                    endm
                        
                        tst_x       macro       ;testing result in x index & flags
                                    php         ;save flags
                                    cpx #\1     ;test result
                                    trap_ne
                                    pla         ;load status
                                    pha
                                    cmp_flag \2
                                    trap_ne
                                    plp         ;restore status
                                    endm
                        
                        tst_y       macro       ;testing result in y index & flags
                                    php         ;save flags
                                    cpy #\1     ;test result
                                    trap_ne
                                    pla         ;load status
                                    pha
                                    cmp_flag \2
                                    trap_ne
                                    plp         ;restore status
                                    endm
                        
                        tst_ax      macro       ;indexed testing result in accu & flags
                                    php         ;save flags
                                    cmp \1,x    ;test result
                                    trap_ne
                                    pla         ;load status
                                    eor_flag \3
                                    cmp \2,x    ;test flags
                                    trap_ne     ;
                                    endm
                        
                        tst_ay      macro       ;indexed testing result in accu & flags
                                    php         ;save flags
                                    cmp \1,y    ;test result
                                    trap_ne     ;
                                    pla         ;load status
                                    eor_flag \3
                                    cmp \2,y    ;test flags
                                    trap_ne
                                    endm
                                
                        tst_z       macro       ;indexed testing result in zp & flags
                                    php         ;save flags
                                    lda zpt
                                    cmp \1,x    ;test result
                                    trap_ne
                                    pla         ;load status
                                    eor_flag \3
                                    cmp \2,x    ;test flags
                                    trap_ne
                                    endm
                        
                        tst_zx      macro       ;testing result in zp,x & flags
                                    php         ;save flags
                                    lda zpt,x
                                    cmp \1,x    ;test result
                                    trap_ne
                                    pla         ;load status
                                    eor_flag \3
                                    cmp \2,x    ;test flags
                                    trap_ne
                                    endm
                        
                        tst_abs     macro       ;indexed testing result in memory & flags
                                    php         ;save flags
                                    lda abst
                                    cmp \1,x    ;test result
                                    trap_ne
                                    pla         ;load status
                                    eor_flag \3
                                    cmp \2,x    ;test flags
                                    trap_ne
                                    endm
                        
                        tst_absx    macro       ;testing result in abs,x & flags
                                    php         ;save flags
                                    lda abst,x
                                    cmp \1,x    ;test result
                                    trap_ne
                                    pla         ;load status
                                    eor_flag \3
                                    cmp \2,x    ;test flags
                                    trap_ne
                                    endm
                                    
                        ; RAM integrity test
                        ;   verifies that none of the previous tests has altered RAM outside of the
                        ;   designated write areas.
                        ;   uses zpt word as indirect pointer, zpt+2 word as checksum
                                if ram_top > -1
                        check_ram   macro 
                                    cld
                                    lda #0
                                    sta zpt         ;set low byte of indirect pointer
                                    sta zpt+3       ;checksum high byte
                                  if disable_selfmod = 0
                                    sta range_adr   ;reset self modifying code
                                  endif
                                    clc
                                    ldx #zp_bss-zero_page ;zeropage - write test area
                        ccs3\?      adc zero_page,x
                                    bcc ccs2\?
                                    inc zpt+3       ;carry to high byte
                                    clc
                        ccs2\?      inx
                                    bne ccs3\?
                                    ldx #hi(abs1)   ;set high byte of indirect pointer
                                    stx zpt+1
                                    ldy #lo(abs1)   ;data after write & execute test area
                        ccs5\?      adc (zpt),y
                                    bcc ccs4\?
                                    inc zpt+3       ;carry to high byte
                                    clc
                        ccs4\?      iny
                                    bne ccs5\?
                                    inx             ;advance RAM high address
                                    stx zpt+1
                                    cpx #ram_top
                                    bne ccs5\?
                                    sta zpt+2       ;checksum low is
                                    cmp ram_chksm   ;checksum low expected
                                    trap_ne         ;checksum mismatch
                                    lda zpt+3       ;checksum high is
                                    cmp ram_chksm+1 ;checksum high expected
                                    trap_ne         ;checksum mismatch
                                    endm            
                                else
                        check_ram   macro
                                    ;RAM check disabled - RAM size not set
                                    endm
                                endif
                        
                        next_test   macro           ;make sure, tests don't jump the fence
                                    lda test_case   ;previous test
                                    cmp #test_num
                                    trap_ne         ;test is out of sequence
                        test_num = test_num + 1
                                    lda #test_num   ;*** next tests' number
                                    sta test_case
                                    ;check_ram       ;uncomment to find altered RAM after each test
                                    endm
                        
                            if load_data_direct = 1
                                data
                            else
                                bss                 ;uninitialized segment, copy of data at end of code!
                            endif
                        ;        org zero_page
0000 =                          org 0               ;edited to provide binaries loading from 0
0000 : 00000000000000..         ds  zero_page
                        ;break test interrupt save
000a : 00               irq_a   ds  1               ;a register
000b : 00               irq_x   ds  1               ;x register
                            if I_flag = 2
                        ;masking for I bit in status
                        flag_I_on   ds  1           ;or mask to load flags   
                        flag_I_off  ds  1           ;and mask to load flags
                            endif
000c :                  zpt                         ;5 bytes store/modify test area
                        ;add/subtract operand generation and result/flag prediction
000c : 00               adfc    ds  1               ;carry flag before op
000d : 00               ad1     ds  1               ;operand 1 - accumulator
000e : 00               ad2     ds  1               ;operand 2 - memory / immediate
000f : 00               adrl    ds  1               ;expected result bits 0-7
0010 : 00               adrh    ds  1               ;expected result bit 8 (carry)
0011 : 00               adrf    ds  1               ;expected flags NV0000ZC (only binary mode)
0012 : 00               sb2     ds  1               ;operand 2 complemented for subtract
0013 :                  zp_bss
0013 : c3824100         zp1     db  $c3,$82,$41,0   ;test patterns for LDx BIT ROL ROR ASL LSR
0017 : 7f               zp7f    db  $7f             ;test pattern for compare  
                        ;logical zeropage operands
0018 : 001f7180         zpOR    db  0,$1f,$71,$80   ;test pattern for OR
001c : 0fff7f80         zpAN    db  $0f,$ff,$7f,$80 ;test pattern for AND
0020 : ff0f8f8f         zpEO    db  $ff,$0f,$8f,$8f ;test pattern for EOR
                        ;indirect addressing pointers
0024 : 1702             ind1    dw  abs1            ;indirect pointer to pattern in absolute memory
0026 : 1802                     dw  abs1+1
0028 : 1902                     dw  abs1+2
002a : 1a02                     dw  abs1+3
002c : 1b02                     dw  abs7f
002e : 1f01             inw1    dw  abs1-$f8        ;indirect pointer for wrap-test pattern
0030 : 0302             indt    dw  abst            ;indirect pointer to store area in absolute memory
0032 : 0402                     dw  abst+1
0034 : 0502                     dw  abst+2
0036 : 0602                     dw  abst+3
0038 : 0b01             inwt    dw  abst-$f8        ;indirect pointer for wrap-test store
003a : 4e02             indAN   dw  absAN           ;indirect pointer to AND pattern in absolute memory
003c : 4f02                     dw  absAN+1
003e : 5002                     dw  absAN+2
0040 : 5102                     dw  absAN+3
0042 : 5202             indEO   dw  absEO           ;indirect pointer to EOR pattern in absolute memory
0044 : 5302                     dw  absEO+1
0046 : 5402                     dw  absEO+2
0048 : 5502                     dw  absEO+3
004a : 4a02             indOR   dw  absOR           ;indirect pointer to OR pattern in absolute memory
004c : 4b02                     dw  absOR+1
004e : 4c02                     dw  absOR+2
0050 : 4d02                     dw  absOR+3
                        ;add/subtract indirect pointers
0052 : 0302             adi2    dw  ada2            ;indirect pointer to operand 2 in absolute memory
0054 : 0402             sbi2    dw  sba2            ;indirect pointer to complemented operand 2 (SBC)
0056 : 0401             adiy2   dw  ada2-$ff        ;with offset for indirect indexed
0058 : 0501             sbiy2   dw  sba2-$ff
005a :                  zp_bss_end
                           
0200 =                          org data_segment
0200 : 00               test_case   ds  1           ;current test number
0201 : 0000             ram_chksm   ds  2           ;checksum for RAM integrity test
                        ;add/subtract operand copy - abs tests write area
0203 :                  abst                        ;5 bytes store/modify test area
0203 : 00               ada2    ds  1               ;operand 2
0204 : 00               sba2    ds  1               ;operand 2 complemented for subtract
0205 : 000000                   ds  3               ;fill remaining bytes
0208 :                  data_bss
                            if load_data_direct = 1
0208 : 2900             ex_andi and #0              ;execute immediate opcodes
020a : 60                       rts
020b : 4900             ex_eori eor #0              ;execute immediate opcodes
020d : 60                       rts
020e : 0900             ex_orai ora #0              ;execute immediate opcodes
0210 : 60                       rts
0211 : 6900             ex_adci adc #0              ;execute immediate opcodes
0213 : 60                       rts
0214 : e900             ex_sbci sbc #0              ;execute immediate opcodes
0216 : 60                       rts
                            else
                        ex_andi ds  3
                        ex_eori ds  3
                        ex_orai ds  3
                        ex_adci ds  3
                        ex_sbci ds  3
                            endif
0217 : c3824100         abs1    db  $c3,$82,$41,0   ;test patterns for LDx BIT ROL ROR ASL LSR
021b : 7f               abs7f   db  $7f             ;test pattern for compare
                        ;loads
021c : 80800002         fLDx    db  fn,fn,0,fz      ;expected flags for load
                        ;shifts
0220 :                  rASL                        ;expected result ASL & ROL -carry  
0220 : 86048200         rROL    db  $86,$04,$82,0   ; "
0224 : 87058301         rROLc   db  $87,$05,$83,1   ;expected result ROL +carry
0228 :                  rLSR                        ;expected result LSR & ROR -carry
0228 : 61412000         rROR    db  $61,$41,$20,0   ; "
022c : e1c1a080         rRORc   db  $e1,$c1,$a0,$80 ;expected result ROR +carry
0230 :                  fASL                        ;expected flags for shifts
0230 : 81018002         fROL    db  fnc,fc,fn,fz    ;no carry in
0234 : 81018000         fROLc   db  fnc,fc,fn,0     ;carry in
0238 :                  fLSR
0238 : 01000102         fROR    db  fc,0,fc,fz      ;no carry in
023c : 81808180         fRORc   db  fnc,fn,fnc,fn   ;carry in
                        ;increments (decrements)
0240 : 7f80ff0001       rINC    db  $7f,$80,$ff,0,1 ;expected result for INC/DEC
0245 : 0080800200       fINC    db  0,fn,fn,fz,0    ;expected flags for INC/DEC
                        ;logical memory operand
024a : 001f7180         absOR   db  0,$1f,$71,$80   ;test pattern for OR
024e : 0fff7f80         absAN   db  $0f,$ff,$7f,$80 ;test pattern for AND
0252 : ff0f8f8f         absEO   db  $ff,$0f,$8f,$8f ;test pattern for EOR
                        ;logical accu operand
0256 : 00f11f00         absORa  db  0,$f1,$1f,0     ;test pattern for OR
025a : f0ffffff         absANa  db  $f0,$ff,$ff,$ff ;test pattern for AND
025e : fff0f00f         absEOa  db  $ff,$f0,$f0,$0f ;test pattern for EOR
                        ;logical results
0262 : 00ff7f80         absrlo  db  0,$ff,$7f,$80
0266 : 02800080         absflo  db  fz,fn,0,fn
026a :                  data_bss_end
                        
                        
                                code
0400 =                          org code_segment
0400 : d8               start   cld
0401 : a2ff                     ldx #$ff
0403 : 9a                       txs
0404 : a900                     lda #0          ;*** test 0 = initialize
0406 : 8d0002                   sta test_case
0000 =                  test_num = 0
                        
                        ;stop interrupts before initializing BSS
                            if I_flag = 1
                                sei
                            endif
                            
                        ;initialize I/O for report channel
                            if report = 1
                                jsr report_init
                            endif
                            
                        ;pretest small branch offset
0409 : a205                     ldx #5
040b : 4c3304                   jmp psb_test
040e :                  psb_bwok
040e : a005                     ldy #5
0410 : d008                     bne psb_forw
                                trap        ;branch should be taken
0412 : 4c1204          >        jmp *           ;failed anyway
                        
0415 : 88                       dey         ;forward landing zone
0416 : 88                       dey
0417 : 88                       dey
0418 : 88                       dey
0419 : 88                       dey
041a :                  psb_forw
041a : 88                       dey
041b : 88                       dey
041c : 88                       dey
041d : 88                       dey
041e : 88                       dey
041f : f017                     beq psb_fwok
                                trap        ;forward offset
0421 : 4c2104          >        jmp *           ;failed anyway
                        
                        
0424 : ca                       dex         ;backward landing zone
0425 : ca                       dex
0426 : ca                       dex
0427 : ca                       dex
0428 : ca                       dex
0429 :                  psb_back
0429 : ca                       dex
042a : ca                       dex
042b : ca                       dex
042c : ca                       dex
042d : ca                       dex
042e : f0de                     beq psb_bwok
                                trap        ;backward offset
0430 : 4c3004          >        jmp *           ;failed anyway
                        
0433 :                  psb_test
0433 : d0f4                     bne psb_back
                                trap        ;branch should be taken
0435 : 4c3504          >        jmp *           ;failed anyway
                        
0438 :                  psb_fwok
                                
                        ;initialize BSS segment
                            if load_data_direct != 1
                                ldx #zp_end-zp_init-1
                        ld_zp   lda zp_init,x
                                sta zp_bss,x
                                dex
                                bpl ld_zp
                                ldx #data_end-data_init-1
                        ld_data lda data_init,x
                                sta data_bss,x
                                dex
                                bpl ld_data
                              if ROM_vectors = 1
                                ldx #5
                        ld_vect lda vec_init,x
                                sta vec_bss,x
                                dex
                                bpl ld_vect
                              endif
                            endif
                        
                        ;retain status of interrupt flag
                            if I_flag = 2
                                php
                                pla
                                and #4          ;isolate flag
                                sta flag_I_on   ;or mask
                                eor #lo(~4)     ;reverse
                                sta flag_I_off  ;and mask
                            endif
                                
                        ;generate checksum for RAM integrity test
                            if ram_top > -1
                                lda #0 
                                sta zpt         ;set low byte of indirect pointer
                                sta ram_chksm+1 ;checksum high byte
                              if disable_selfmod = 0
                                sta range_adr   ;reset self modifying code
                              endif
                                clc
                                ldx #zp_bss-zero_page ;zeropage - write test area
                        gcs3    adc zero_page,x
                                bcc gcs2
                                inc ram_chksm+1 ;carry to high byte
                                clc
                        gcs2    inx
                                bne gcs3
                                ldx #hi(abs1)   ;set high byte of indirect pointer
                                stx zpt+1
                                ldy #lo(abs1)   ;data after write & execute test area
                        gcs5    adc (zpt),y
                                bcc gcs4
                                inc ram_chksm+1 ;carry to high byte
                                clc
                        gcs4    iny
                                bne gcs5
                                inx             ;advance RAM high address
                                stx zpt+1
                                cpx #ram_top
                                bne gcs5
                                sta ram_chksm   ;checksum complete
                            endif
                                next_test            
0438 : ad0002          >            lda test_case   ;previous test
043b : c900            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
043d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0001 =                 >test_num = test_num + 1
043f : a901            >            lda #test_num   ;*** next tests' number
0441 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                            if disable_selfmod = 0
                        ;testing relative addressing with BEQ
0444 : a0fe                     ldy #$fe        ;testing maximum range, not -1/-2 (invalid/self adr)
0446 :                  range_loop
0446 : 88                       dey             ;next relative address
0447 : 98                       tya
0448 : aa                       tax             ;precharge count to end of loop
0449 : 1008                     bpl range_fw    ;calculate relative address
044b : 18                       clc             ;avoid branch self or to relative address of branch
044c : 6902                     adc #2
044e : ea                       nop             ;offset landing zone - tolerate +/-5 offset to branch
044f : ea                       nop
0450 : ea                       nop
0451 : ea                       nop
0452 : ea                       nop
0453 :                  range_fw
0453 : ea                       nop
0454 : ea                       nop
0455 : ea                       nop
0456 : ea                       nop
0457 : ea                       nop
0458 : 497f                     eor #$7f        ;complement except sign
045a : 8de604                   sta range_adr   ;load into test target
045d : a900                     lda #0          ;should set zero flag in status register
045f : 4ce504                   jmp range_op
                                
0462 : ca                       dex             ; offset landing zone - backward branch too far
0463 : ca                       dex
0464 : ca                       dex
0465 : ca                       dex
0466 : ca                       dex
                                ;relative address target field with branch under test in the middle
0467 : ca                       dex             ;-128 - max backward
0468 : ca                       dex
0469 : ca                       dex
046a : ca                       dex
046b : ca                       dex
046c : ca                       dex
046d : ca                       dex
046e : ca                       dex
046f : ca                       dex             ;-120
0470 : ca                       dex
0471 : ca                       dex
0472 : ca                       dex
0473 : ca                       dex
0474 : ca                       dex
0475 : ca                       dex
0476 : ca                       dex
0477 : ca                       dex
0478 : ca                       dex
0479 : ca                       dex             ;-110
047a : ca                       dex
047b : ca                       dex
047c : ca                       dex
047d : ca                       dex
047e : ca                       dex
047f : ca                       dex
0480 : ca                       dex
0481 : ca                       dex
0482 : ca                       dex
0483 : ca                       dex             ;-100
0484 : ca                       dex
0485 : ca                       dex
0486 : ca                       dex
0487 : ca                       dex
0488 : ca                       dex
0489 : ca                       dex
048a : ca                       dex
048b : ca                       dex
048c : ca                       dex
048d : ca                       dex             ;-90
048e : ca                       dex
048f : ca                       dex
0490 : ca                       dex
0491 : ca                       dex
0492 : ca                       dex
0493 : ca                       dex
0494 : ca                       dex
0495 : ca                       dex
0496 : ca                       dex
0497 : ca                       dex             ;-80
0498 : ca                       dex
0499 : ca                       dex
049a : ca                       dex
049b : ca                       dex
049c : ca                       dex
049d : ca                       dex
049e : ca                       dex
049f : ca                       dex
04a0 : ca                       dex
04a1 : ca                       dex             ;-70
04a2 : ca                       dex
04a3 : ca                       dex
04a4 : ca                       dex
04a5 : ca                       dex
04a6 : ca                       dex
04a7 : ca                       dex
04a8 : ca                       dex
04a9 : ca                       dex
04aa : ca                       dex
04ab : ca                       dex             ;-60
04ac : ca                       dex
04ad : ca                       dex
04ae : ca                       dex
04af : ca                       dex
04b0 : ca                       dex
04b1 : ca                       dex
04b2 : ca                       dex
04b3 : ca                       dex
04b4 : ca                       dex
04b5 : ca                       dex             ;-50
04b6 : ca                       dex
04b7 : ca                       dex
04b8 : ca                       dex
04b9 : ca                       dex
04ba : ca                       dex
04bb : ca                       dex
04bc : ca                       dex
04bd : ca                       dex
04be : ca                       dex
04bf : ca                       dex             ;-40
04c0 : ca                       dex
04c1 : ca                       dex
04c2 : ca                       dex
04c3 : ca                       dex
04c4 : ca                       dex
04c5 : ca                       dex
04c6 : ca                       dex
04c7 : ca                       dex
04c8 : ca                       dex
04c9 : ca                       dex             ;-30
04ca : ca                       dex
04cb : ca                       dex
04cc : ca                       dex
04cd : ca                       dex
04ce : ca                       dex
04cf : ca                       dex
04d0 : ca                       dex
04d1 : ca                       dex
04d2 : ca                       dex
04d3 : ca                       dex             ;-20
04d4 : ca                       dex
04d5 : ca                       dex
04d6 : ca                       dex
04d7 : ca                       dex
04d8 : ca                       dex
04d9 : ca                       dex
04da : ca                       dex
04db : ca                       dex
04dc : ca                       dex
04dd : ca                       dex             ;-10
04de : ca                       dex
04df : ca                       dex
04e0 : ca                       dex
04e1 : ca                       dex
04e2 : ca                       dex
04e3 : ca                       dex
04e4 : ca                       dex             ;-3
04e5 :                  range_op                ;test target with zero flag=0, z=1 if previous dex
04e6 =                  range_adr   = *+1       ;modifiable relative address
04e5 : f03e                     beq *+64        ;+64 if called without modification
04e7 : ca                       dex             ;+0
04e8 : ca                       dex
04e9 : ca                       dex
04ea : ca                       dex
04eb : ca                       dex
04ec : ca                       dex
04ed : ca                       dex
04ee : ca                       dex
04ef : ca                       dex
04f0 : ca                       dex
04f1 : ca                       dex             ;+10
04f2 : ca                       dex
04f3 : ca                       dex
04f4 : ca                       dex
04f5 : ca                       dex
04f6 : ca                       dex
04f7 : ca                       dex
04f8 : ca                       dex
04f9 : ca                       dex
04fa : ca                       dex
04fb : ca                       dex             ;+20
04fc : ca                       dex
04fd : ca                       dex
04fe : ca                       dex
04ff : ca                       dex
0500 : ca                       dex
0501 : ca                       dex
0502 : ca                       dex
0503 : ca                       dex
0504 : ca                       dex
0505 : ca                       dex             ;+30
0506 : ca                       dex
0507 : ca                       dex
0508 : ca                       dex
0509 : ca                       dex
050a : ca                       dex
050b : ca                       dex
050c : ca                       dex
050d : ca                       dex
050e : ca                       dex
050f : ca                       dex             ;+40
0510 : ca                       dex
0511 : ca                       dex
0512 : ca                       dex
0513 : ca                       dex
0514 : ca                       dex
0515 : ca                       dex
0516 : ca                       dex
0517 : ca                       dex
0518 : ca                       dex
0519 : ca                       dex             ;+50
051a : ca                       dex
051b : ca                       dex
051c : ca                       dex
051d : ca                       dex
051e : ca                       dex
051f : ca                       dex
0520 : ca                       dex
0521 : ca                       dex
0522 : ca                       dex
0523 : ca                       dex             ;+60
0524 : ca                       dex
0525 : ca                       dex
0526 : ca                       dex
0527 : ca                       dex
0528 : ca                       dex
0529 : ca                       dex
052a : ca                       dex
052b : ca                       dex
052c : ca                       dex
052d : ca                       dex             ;+70
052e : ca                       dex
052f : ca                       dex
0530 : ca                       dex
0531 : ca                       dex
0532 : ca                       dex
0533 : ca                       dex
0534 : ca                       dex
0535 : ca                       dex
0536 : ca                       dex
0537 : ca                       dex             ;+80
0538 : ca                       dex
0539 : ca                       dex
053a : ca                       dex
053b : ca                       dex
053c : ca                       dex
053d : ca                       dex
053e : ca                       dex
053f : ca                       dex
0540 : ca                       dex
0541 : ca                       dex             ;+90
0542 : ca                       dex
0543 : ca                       dex
0544 : ca                       dex
0545 : ca                       dex
0546 : ca                       dex
0547 : ca                       dex
0548 : ca                       dex
0549 : ca                       dex
054a : ca                       dex
054b : ca                       dex             ;+100
054c : ca                       dex
054d : ca                       dex
054e : ca                       dex
054f : ca                       dex
0550 : ca                       dex
0551 : ca                       dex
0552 : ca                       dex
0553 : ca                       dex
0554 : ca                       dex
0555 : ca                       dex             ;+110
0556 : ca                       dex
0557 : ca                       dex
0558 : ca                       dex
0559 : ca                       dex
055a : ca                       dex
055b : ca                       dex
055c : ca                       dex
055d : ca                       dex
055e : ca                       dex
055f : ca                       dex             ;+120
0560 : ca                       dex
0561 : ca                       dex
0562 : ca                       dex
0563 : ca                       dex
0564 : ca                       dex
0565 : ca                       dex
0566 : ea                       nop             ;offset landing zone - forward branch too far
0567 : ea                       nop
0568 : ea                       nop
0569 : ea                       nop
056a : ea                       nop
056b : f008                     beq range_ok    ;+127 - max forward
                                trap            ; bad range
056d : 4c6d05          >        jmp *           ;failed anyway
                        
0570 : ea                       nop             ;offset landing zone - tolerate +/-5 offset to branch
0571 : ea                       nop
0572 : ea                       nop
0573 : ea                       nop
0574 : ea                       nop
0575 :                  range_ok
0575 : ea                       nop
0576 : ea                       nop
0577 : ea                       nop
0578 : ea                       nop
0579 : ea                       nop
057a : c000                     cpy #0
057c : f003                     beq range_end   
057e : 4c4604                   jmp range_loop
0581 :                  range_end               ;range test successful
                            endif
                                next_test
0581 : ad0002          >            lda test_case   ;previous test
0584 : c901            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0586 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0002 =                 >test_num = test_num + 1
0588 : a902            >            lda #test_num   ;*** next tests' number
058a : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ;partial test BNE & CMP, CPX, CPY immediate
058d : c001                     cpy #1          ;testing BNE true
058f : d003                     bne test_bne
                                trap 
0591 : 4c9105          >        jmp *           ;failed anyway
                        
0594 :                  test_bne
0594 : a900                     lda #0 
0596 : c900                     cmp #0          ;test compare immediate 
                                trap_ne
0598 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                trap_cc
059a : 90fe            >        bcc *           ;failed carry clear
                        
                                trap_mi
059c : 30fe            >        bmi *           ;failed minus (bit 7 set)
                        
059e : c901                     cmp #1
                                trap_eq 
05a0 : f0fe            >        beq *           ;failed equal (zero)
                        
                                trap_cs
05a2 : b0fe            >        bcs *           ;failed carry set
                        
                                trap_pl
05a4 : 10fe            >        bpl *           ;failed plus (bit 7 clear)
                        
05a6 : aa                       tax 
05a7 : e000                     cpx #0          ;test compare x immediate
                                trap_ne
05a9 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                trap_cc
05ab : 90fe            >        bcc *           ;failed carry clear
                        
                                trap_mi
05ad : 30fe            >        bmi *           ;failed minus (bit 7 set)
                        
05af : e001                     cpx #1
                                trap_eq 
05b1 : f0fe            >        beq *           ;failed equal (zero)
                        
                                trap_cs
05b3 : b0fe            >        bcs *           ;failed carry set
                        
                                trap_pl
05b5 : 10fe            >        bpl *           ;failed plus (bit 7 clear)
                        
05b7 : a8                       tay 
05b8 : c000                     cpy #0          ;test compare y immediate
                                trap_ne
05ba : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                trap_cc
05bc : 90fe            >        bcc *           ;failed carry clear
                        
                                trap_mi
05be : 30fe            >        bmi *           ;failed minus (bit 7 set)
                        
05c0 : c001                     cpy #1
                                trap_eq 
05c2 : f0fe            >        beq *           ;failed equal (zero)
                        
                                trap_cs
05c4 : b0fe            >        bcs *           ;failed carry set
                        
                                trap_pl
05c6 : 10fe            >        bpl *           ;failed plus (bit 7 clear)
                        
                                next_test
05c8 : ad0002          >            lda test_case   ;previous test
05cb : c902            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
05cd : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0003 =                 >test_num = test_num + 1
05cf : a903            >            lda #test_num   ;*** next tests' number
05d1 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        ;testing stack operations PHA PHP PLA PLP
                                    
05d4 : a2ff                     ldx #$ff        ;initialize stack
05d6 : 9a                       txs
05d7 : a955                     lda #$55
05d9 : 48                       pha
05da : a9aa                     lda #$aa
05dc : 48                       pha
05dd : cdfe01                   cmp $1fe        ;on stack ?
                                trap_ne
05e0 : d0fe            >        bne *           ;failed not equal (non zero)
                        
05e2 : ba                       tsx
05e3 : 8a                       txa             ;overwrite accu
05e4 : c9fd                     cmp #$fd        ;sp decremented?
                                trap_ne
05e6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
05e8 : 68                       pla
05e9 : c9aa                     cmp #$aa        ;successful retreived from stack?
                                trap_ne
05eb : d0fe            >        bne *           ;failed not equal (non zero)
                        
05ed : 68                       pla
05ee : c955                     cmp #$55
                                trap_ne
05f0 : d0fe            >        bne *           ;failed not equal (non zero)
                        
05f2 : cdff01                   cmp $1ff        ;remains on stack?
                                trap_ne
05f5 : d0fe            >        bne *           ;failed not equal (non zero)
                        
05f7 : ba                       tsx
05f8 : e0ff                     cpx #$ff        ;sp incremented?
                                trap_ne
05fa : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                next_test
05fc : ad0002          >            lda test_case   ;previous test
05ff : c903            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0601 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0004 =                 >test_num = test_num + 1
0603 : a904            >            lda #test_num   ;*** next tests' number
0605 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ;testing branch decisions BPL BMI BVC BVS BCC BCS BNE BEQ
                                set_stat $ff    ;all on
                       >            load_flag $ff    
0608 : a9ff            >            lda #$ff                 ;allow test to change I-flag (no mask)
                       >
060a : 48              >            pha         ;use stack to load status
060b : 28              >            plp
                        
060c : 101a                     bpl nbr1        ;branches should not be taken
060e : 501b                     bvc nbr2
0610 : 901c                     bcc nbr3
0612 : d01d                     bne nbr4
0614 : 3003                     bmi br1         ;branches should be taken
                                trap 
0616 : 4c1606          >        jmp *           ;failed anyway
                        
0619 : 7003             br1     bvs br2
                                trap 
061b : 4c1b06          >        jmp *           ;failed anyway
                        
061e : b003             br2     bcs br3
                                trap 
0620 : 4c2006          >        jmp *           ;failed anyway
                        
0623 : f00f             br3     beq br4
                                trap 
0625 : 4c2506          >        jmp *           ;failed anyway
                        
0628 :                  nbr1
                                trap            ;previous bpl taken 
0628 : 4c2806          >        jmp *           ;failed anyway
                        
062b :                  nbr2
                                trap            ;previous bvc taken
062b : 4c2b06          >        jmp *           ;failed anyway
                        
062e :                  nbr3
                                trap            ;previous bcc taken
062e : 4c2e06          >        jmp *           ;failed anyway
                        
0631 :                  nbr4
                                trap            ;previous bne taken
0631 : 4c3106          >        jmp *           ;failed anyway
                        
0634 : 08               br4     php
0635 : ba                       tsx
0636 : e0fe                     cpx #$fe        ;sp after php?
                                trap_ne
0638 : d0fe            >        bne *           ;failed not equal (non zero)
                        
063a : 68                       pla
                                cmp_flag $ff    ;returned all flags on?
063b : c9ff            >            cmp #($ff    |fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
063d : d0fe            >        bne *           ;failed not equal (non zero)
                        
063f : ba                       tsx
0640 : e0ff                     cpx #$ff        ;sp after php?
                                trap_ne
0642 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0      ;all off
                       >            load_flag 0      
0644 : a900            >            lda #0                   ;allow test to change I-flag (no mask)
                       >
0646 : 48              >            pha         ;use stack to load status
0647 : 28              >            plp
                        
0648 : 301a                     bmi nbr11       ;branches should not be taken
064a : 701b                     bvs nbr12
064c : b01c                     bcs nbr13
064e : f01d                     beq nbr14
0650 : 1003                     bpl br11        ;branches should be taken
                                trap 
0652 : 4c5206          >        jmp *           ;failed anyway
                        
0655 : 5003             br11    bvc br12
                                trap 
0657 : 4c5706          >        jmp *           ;failed anyway
                        
065a : 9003             br12    bcc br13
                                trap 
065c : 4c5c06          >        jmp *           ;failed anyway
                        
065f : d00f             br13    bne br14
                                trap 
0661 : 4c6106          >        jmp *           ;failed anyway
                        
0664 :                  nbr11
                                trap            ;previous bmi taken 
0664 : 4c6406          >        jmp *           ;failed anyway
                        
0667 :                  nbr12
                                trap            ;previous bvs taken 
0667 : 4c6706          >        jmp *           ;failed anyway
                        
066a :                  nbr13
                                trap            ;previous bcs taken 
066a : 4c6a06          >        jmp *           ;failed anyway
                        
066d :                  nbr14
                                trap            ;previous beq taken 
066d : 4c6d06          >        jmp *           ;failed anyway
                        
0670 : 08               br14    php
0671 : 68                       pla
                                cmp_flag 0      ;flags off except break (pushed by sw) + reserved?
0672 : c930            >            cmp #(0      |fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0674 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                ;crosscheck flags
                                set_stat zero
                       >            load_flag zero
0676 : a902            >            lda #zero             ;allow test to change I-flag (no mask)
                       >
0678 : 48              >            pha         ;use stack to load status
0679 : 28              >            plp
                        
067a : d002                     bne brzs1
067c : f003                     beq brzs2
067e :                  brzs1
                                trap            ;branch zero/non zero
067e : 4c7e06          >        jmp *           ;failed anyway
                        
0681 : b002             brzs2   bcs brzs3
0683 : 9003                     bcc brzs4
0685 :                  brzs3
                                trap            ;branch carry/no carry
0685 : 4c8506          >        jmp *           ;failed anyway
                        
0688 : 3002             brzs4   bmi brzs5
068a : 1003                     bpl brzs6
068c :                  brzs5
                                trap            ;branch minus/plus
068c : 4c8c06          >        jmp *           ;failed anyway
                        
068f : 7002             brzs6   bvs brzs7
0691 : 5003                     bvc brzs8
0693 :                  brzs7
                                trap            ;branch overflow/no overflow
0693 : 4c9306          >        jmp *           ;failed anyway
                        
0696 :                  brzs8
                                set_stat carry
                       >            load_flag carry
0696 : a901            >            lda #carry             ;allow test to change I-flag (no mask)
                       >
0698 : 48              >            pha         ;use stack to load status
0699 : 28              >            plp
                        
069a : f002                     beq brcs1
069c : d003                     bne brcs2
069e :                  brcs1
                                trap            ;branch zero/non zero
069e : 4c9e06          >        jmp *           ;failed anyway
                        
06a1 : 9002             brcs2   bcc brcs3
06a3 : b003                     bcs brcs4
06a5 :                  brcs3
                                trap            ;branch carry/no carry
06a5 : 4ca506          >        jmp *           ;failed anyway
                        
06a8 : 3002             brcs4   bmi brcs5
06aa : 1003                     bpl brcs6
06ac :                  brcs5
                                trap            ;branch minus/plus
06ac : 4cac06          >        jmp *           ;failed anyway
                        
06af : 7002             brcs6   bvs brcs7
06b1 : 5003                     bvc brcs8
06b3 :                  brcs7
                                trap            ;branch overflow/no overflow
06b3 : 4cb306          >        jmp *           ;failed anyway
                        
                        
06b6 :                  brcs8
                                set_stat minus
                       >            load_flag minus
06b6 : a980            >            lda #minus             ;allow test to change I-flag (no mask)
                       >
06b8 : 48              >            pha         ;use stack to load status
06b9 : 28              >            plp
                        
06ba : f002                     beq brmi1
06bc : d003                     bne brmi2
06be :                  brmi1
                                trap            ;branch zero/non zero
06be : 4cbe06          >        jmp *           ;failed anyway
                        
06c1 : b002             brmi2   bcs brmi3
06c3 : 9003                     bcc brmi4
06c5 :                  brmi3
                                trap            ;branch carry/no carry
06c5 : 4cc506          >        jmp *           ;failed anyway
                        
06c8 : 1002             brmi4   bpl brmi5
06ca : 3003                     bmi brmi6
06cc :                  brmi5
                                trap            ;branch minus/plus
06cc : 4ccc06          >        jmp *           ;failed anyway
                        
06cf : 7002             brmi6   bvs brmi7
06d1 : 5003                     bvc brmi8
06d3 :                  brmi7
                                trap            ;branch overflow/no overflow
06d3 : 4cd306          >        jmp *           ;failed anyway
                        
06d6 :                  brmi8
                                set_stat overfl
                       >            load_flag overfl
06d6 : a940            >            lda #overfl             ;allow test to change I-flag (no mask)
                       >
06d8 : 48              >            pha         ;use stack to load status
06d9 : 28              >            plp
                        
06da : f002                     beq brvs1
06dc : d003                     bne brvs2
06de :                  brvs1
                                trap            ;branch zero/non zero
06de : 4cde06          >        jmp *           ;failed anyway
                        
06e1 : b002             brvs2   bcs brvs3
06e3 : 9003                     bcc brvs4
06e5 :                  brvs3
                                trap            ;branch carry/no carry
06e5 : 4ce506          >        jmp *           ;failed anyway
                        
06e8 : 3002             brvs4   bmi brvs5
06ea : 1003                     bpl brvs6
06ec :                  brvs5
                                trap            ;branch minus/plus
06ec : 4cec06          >        jmp *           ;failed anyway
                        
06ef : 5002             brvs6   bvc brvs7
06f1 : 7003                     bvs brvs8
06f3 :                  brvs7
                                trap            ;branch overflow/no overflow
06f3 : 4cf306          >        jmp *           ;failed anyway
                        
06f6 :                  brvs8
                                set_stat $ff-zero
                       >            load_flag $ff-zero
06f6 : a9fd            >            lda #$ff-zero             ;allow test to change I-flag (no mask)
                       >
06f8 : 48              >            pha         ;use stack to load status
06f9 : 28              >            plp
                        
06fa : f002                     beq brzc1
06fc : d003                     bne brzc2
06fe :                  brzc1
                                trap            ;branch zero/non zero
06fe : 4cfe06          >        jmp *           ;failed anyway
                        
0701 : 9002             brzc2   bcc brzc3
0703 : b003                     bcs brzc4
0705 :                  brzc3
                                trap            ;branch carry/no carry
0705 : 4c0507          >        jmp *           ;failed anyway
                        
0708 : 1002             brzc4   bpl brzc5
070a : 3003                     bmi brzc6
070c :                  brzc5
                                trap            ;branch minus/plus
070c : 4c0c07          >        jmp *           ;failed anyway
                        
070f : 5002             brzc6   bvc brzc7
0711 : 7003                     bvs brzc8
0713 :                  brzc7
                                trap            ;branch overflow/no overflow
0713 : 4c1307          >        jmp *           ;failed anyway
                        
0716 :                  brzc8
                                set_stat $ff-carry
                       >            load_flag $ff-carry
0716 : a9fe            >            lda #$ff-carry             ;allow test to change I-flag (no mask)
                       >
0718 : 48              >            pha         ;use stack to load status
0719 : 28              >            plp
                        
071a : d002                     bne brcc1
071c : f003                     beq brcc2
071e :                  brcc1
                                trap            ;branch zero/non zero
071e : 4c1e07          >        jmp *           ;failed anyway
                        
0721 : b002             brcc2   bcs brcc3
0723 : 9003                     bcc brcc4
0725 :                  brcc3
                                trap            ;branch carry/no carry
0725 : 4c2507          >        jmp *           ;failed anyway
                        
0728 : 1002             brcc4   bpl brcc5
072a : 3003                     bmi brcc6
072c :                  brcc5
                                trap            ;branch minus/plus
072c : 4c2c07          >        jmp *           ;failed anyway
                        
072f : 5002             brcc6   bvc brcc7
0731 : 7003                     bvs brcc8
0733 :                  brcc7
                                trap            ;branch overflow/no overflow
0733 : 4c3307          >        jmp *           ;failed anyway
                        
0736 :                  brcc8
                                set_stat $ff-minus
                       >            load_flag $ff-minus
0736 : a97f            >            lda #$ff-minus             ;allow test to change I-flag (no mask)
                       >
0738 : 48              >            pha         ;use stack to load status
0739 : 28              >            plp
                        
073a : d002                     bne brpl1
073c : f003                     beq brpl2
073e :                  brpl1
                                trap            ;branch zero/non zero
073e : 4c3e07          >        jmp *           ;failed anyway
                        
0741 : 9002             brpl2   bcc brpl3
0743 : b003                     bcs brpl4
0745 :                  brpl3
                                trap            ;branch carry/no carry
0745 : 4c4507          >        jmp *           ;failed anyway
                        
0748 : 3002             brpl4   bmi brpl5
074a : 1003                     bpl brpl6
074c :                  brpl5
                                trap            ;branch minus/plus
074c : 4c4c07          >        jmp *           ;failed anyway
                        
074f : 5002             brpl6   bvc brpl7
0751 : 7003                     bvs brpl8
0753 :                  brpl7
                                trap            ;branch overflow/no overflow
0753 : 4c5307          >        jmp *           ;failed anyway
                        
0756 :                  brpl8
                                set_stat $ff-overfl
                       >            load_flag $ff-overfl
0756 : a9bf            >            lda #$ff-overfl             ;allow test to change I-flag (no mask)
                       >
0758 : 48              >            pha         ;use stack to load status
0759 : 28              >            plp
                        
075a : d002                     bne brvc1
075c : f003                     beq brvc2
075e :                  brvc1
                                trap            ;branch zero/non zero
075e : 4c5e07          >        jmp *           ;failed anyway
                        
0761 : 9002             brvc2   bcc brvc3
0763 : b003                     bcs brvc4
0765 :                  brvc3
                                trap            ;branch carry/no carry
0765 : 4c6507          >        jmp *           ;failed anyway
                        
0768 : 1002             brvc4   bpl brvc5
076a : 3003                     bmi brvc6
076c :                  brvc5
                                trap            ;branch minus/plus
076c : 4c6c07          >        jmp *           ;failed anyway
                        
076f : 7002             brvc6   bvs brvc7
0771 : 5003                     bvc brvc8
0773 :                  brvc7
                                trap            ;branch overflow/no overflow
0773 : 4c7307          >        jmp *           ;failed anyway
                        
0776 :                  brvc8
                                next_test
0776 : ad0002          >            lda test_case   ;previous test
0779 : c904            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
077b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0005 =                 >test_num = test_num + 1
077d : a905            >            lda #test_num   ;*** next tests' number
077f : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; test PHA does not alter flags or accumulator but PLA does
0782 : a255                     ldx #$55        ;x & y protected
0784 : a0aa                     ldy #$aa
                                set_a 1,$ff     ;push
                       >            load_flag $ff     
0786 : a9ff            >            lda #$ff                  ;allow test to change I-flag (no mask)
                       >
0788 : 48              >            pha         ;use stack to load status
0789 : a901            >            lda #1     ;precharge accu
078b : 28              >            plp
                        
078c : 48                       pha
                                tst_a 1,$ff
078d : 08              >            php         ;save flags
078e : c901            >            cmp #1     ;test result
                       >            trap_ne
0790 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0792 : 68              >            pla         ;load status
0793 : 48              >            pha
                       >            cmp_flag $ff
0794 : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0796 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0798 : 28              >            plp         ;restore status
                        
                                set_a 0,0
                       >            load_flag 0
0799 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
079b : 48              >            pha         ;use stack to load status
079c : a900            >            lda #0     ;precharge accu
079e : 28              >            plp
                        
079f : 48                       pha
                                tst_a 0,0
07a0 : 08              >            php         ;save flags
07a1 : c900            >            cmp #0     ;test result
                       >            trap_ne
07a3 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07a5 : 68              >            pla         ;load status
07a6 : 48              >            pha
                       >            cmp_flag 0
07a7 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
07a9 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07ab : 28              >            plp         ;restore status
                        
                                set_a $ff,$ff
                       >            load_flag $ff
07ac : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
07ae : 48              >            pha         ;use stack to load status
07af : a9ff            >            lda #$ff     ;precharge accu
07b1 : 28              >            plp
                        
07b2 : 48                       pha
                                tst_a $ff,$ff
07b3 : 08              >            php         ;save flags
07b4 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
07b6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07b8 : 68              >            pla         ;load status
07b9 : 48              >            pha
                       >            cmp_flag $ff
07ba : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
07bc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07be : 28              >            plp         ;restore status
                        
                                set_a 1,0
                       >            load_flag 0
07bf : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
07c1 : 48              >            pha         ;use stack to load status
07c2 : a901            >            lda #1     ;precharge accu
07c4 : 28              >            plp
                        
07c5 : 48                       pha
                                tst_a 1,0
07c6 : 08              >            php         ;save flags
07c7 : c901            >            cmp #1     ;test result
                       >            trap_ne
07c9 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07cb : 68              >            pla         ;load status
07cc : 48              >            pha
                       >            cmp_flag 0
07cd : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
07cf : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07d1 : 28              >            plp         ;restore status
                        
                                set_a 0,$ff
                       >            load_flag $ff
07d2 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
07d4 : 48              >            pha         ;use stack to load status
07d5 : a900            >            lda #0     ;precharge accu
07d7 : 28              >            plp
                        
07d8 : 48                       pha
                                tst_a 0,$ff
07d9 : 08              >            php         ;save flags
07da : c900            >            cmp #0     ;test result
                       >            trap_ne
07dc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07de : 68              >            pla         ;load status
07df : 48              >            pha
                       >            cmp_flag $ff
07e0 : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
07e2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07e4 : 28              >            plp         ;restore status
                        
                                set_a $ff,0
                       >            load_flag 0
07e5 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
07e7 : 48              >            pha         ;use stack to load status
07e8 : a9ff            >            lda #$ff     ;precharge accu
07ea : 28              >            plp
                        
07eb : 48                       pha
                                tst_a $ff,0
07ec : 08              >            php         ;save flags
07ed : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
07ef : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07f1 : 68              >            pla         ;load status
07f2 : 48              >            pha
                       >            cmp_flag 0
07f3 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
07f5 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
07f7 : 28              >            plp         ;restore status
                        
                                set_a 0,$ff     ;pull
                       >            load_flag $ff     
07f8 : a9ff            >            lda #$ff                  ;allow test to change I-flag (no mask)
                       >
07fa : 48              >            pha         ;use stack to load status
07fb : a900            >            lda #0     ;precharge accu
07fd : 28              >            plp
                        
07fe : 68                       pla
                                tst_a $ff,$ff-zero
07ff : 08              >            php         ;save flags
0800 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
0802 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0804 : 68              >            pla         ;load status
0805 : 48              >            pha
                       >            cmp_flag $ff-zero
0806 : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0808 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
080a : 28              >            plp         ;restore status
                        
                                set_a $ff,0
                       >            load_flag 0
080b : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
080d : 48              >            pha         ;use stack to load status
080e : a9ff            >            lda #$ff     ;precharge accu
0810 : 28              >            plp
                        
0811 : 68                       pla
                                tst_a 0,zero
0812 : 08              >            php         ;save flags
0813 : c900            >            cmp #0     ;test result
                       >            trap_ne
0815 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0817 : 68              >            pla         ;load status
0818 : 48              >            pha
                       >            cmp_flag zero
0819 : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
081b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
081d : 28              >            plp         ;restore status
                        
                                set_a $fe,$ff
                       >            load_flag $ff
081e : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0820 : 48              >            pha         ;use stack to load status
0821 : a9fe            >            lda #$fe     ;precharge accu
0823 : 28              >            plp
                        
0824 : 68                       pla
                                tst_a 1,$ff-zero-minus
0825 : 08              >            php         ;save flags
0826 : c901            >            cmp #1     ;test result
                       >            trap_ne
0828 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
082a : 68              >            pla         ;load status
082b : 48              >            pha
                       >            cmp_flag $ff-zero-minus
082c : c97d            >            cmp #($ff-zero-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
082e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0830 : 28              >            plp         ;restore status
                        
                                set_a 0,0
                       >            load_flag 0
0831 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0833 : 48              >            pha         ;use stack to load status
0834 : a900            >            lda #0     ;precharge accu
0836 : 28              >            plp
                        
0837 : 68                       pla
                                tst_a $ff,minus
0838 : 08              >            php         ;save flags
0839 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
083b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
083d : 68              >            pla         ;load status
083e : 48              >            pha
                       >            cmp_flag minus
083f : c9b0            >            cmp #(minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0841 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0843 : 28              >            plp         ;restore status
                        
                                set_a $ff,$ff
                       >            load_flag $ff
0844 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0846 : 48              >            pha         ;use stack to load status
0847 : a9ff            >            lda #$ff     ;precharge accu
0849 : 28              >            plp
                        
084a : 68                       pla
                                tst_a 0,$ff-minus
084b : 08              >            php         ;save flags
084c : c900            >            cmp #0     ;test result
                       >            trap_ne
084e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0850 : 68              >            pla         ;load status
0851 : 48              >            pha
                       >            cmp_flag $ff-minus
0852 : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0854 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0856 : 28              >            plp         ;restore status
                        
                                set_a $fe,0
                       >            load_flag 0
0857 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0859 : 48              >            pha         ;use stack to load status
085a : a9fe            >            lda #$fe     ;precharge accu
085c : 28              >            plp
                        
085d : 68                       pla
                                tst_a 1,0
085e : 08              >            php         ;save flags
085f : c901            >            cmp #1     ;test result
                       >            trap_ne
0861 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0863 : 68              >            pla         ;load status
0864 : 48              >            pha
                       >            cmp_flag 0
0865 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0867 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0869 : 28              >            plp         ;restore status
                        
086a : e055                     cpx #$55        ;x & y unchanged?
                                trap_ne
086c : d0fe            >        bne *           ;failed not equal (non zero)
                        
086e : c0aa                     cpy #$aa
                                trap_ne
0870 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                next_test
0872 : ad0002          >            lda test_case   ;previous test
0875 : c905            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0877 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0006 =                 >test_num = test_num + 1
0879 : a906            >            lda #test_num   ;*** next tests' number
087b : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                         
                        ; partial pretest EOR #
                                set_a $3c,0
                       >            load_flag 0
087e : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0880 : 48              >            pha         ;use stack to load status
0881 : a93c            >            lda #$3c     ;precharge accu
0883 : 28              >            plp
                        
0884 : 49c3                     eor #$c3
                                tst_a $ff,fn
0886 : 08              >            php         ;save flags
0887 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
0889 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
088b : 68              >            pla         ;load status
088c : 48              >            pha
                       >            cmp_flag fn
088d : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
088f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0891 : 28              >            plp         ;restore status
                        
                                set_a $c3,0
                       >            load_flag 0
0892 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0894 : 48              >            pha         ;use stack to load status
0895 : a9c3            >            lda #$c3     ;precharge accu
0897 : 28              >            plp
                        
0898 : 49c3                     eor #$c3
                                tst_a 0,fz
089a : 08              >            php         ;save flags
089b : c900            >            cmp #0     ;test result
                       >            trap_ne
089d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
089f : 68              >            pla         ;load status
08a0 : 48              >            pha
                       >            cmp_flag fz
08a1 : c932            >            cmp #(fz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
08a3 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
08a5 : 28              >            plp         ;restore status
                        
                                next_test
08a6 : ad0002          >            lda test_case   ;previous test
08a9 : c906            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
08ab : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0007 =                 >test_num = test_num + 1
08ad : a907            >            lda #test_num   ;*** next tests' number
08af : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; PC modifying instructions except branches (NOP, JMP, JSR, RTS, BRK, RTI)
                        ; testing NOP
08b2 : a224                     ldx #$24
08b4 : a042                     ldy #$42
                                set_a $18,0
                       >            load_flag 0
08b6 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
08b8 : 48              >            pha         ;use stack to load status
08b9 : a918            >            lda #$18     ;precharge accu
08bb : 28              >            plp
                        
08bc : ea                       nop
                                tst_a $18,0
08bd : 08              >            php         ;save flags
08be : c918            >            cmp #$18     ;test result
                       >            trap_ne
08c0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
08c2 : 68              >            pla         ;load status
08c3 : 48              >            pha
                       >            cmp_flag 0
08c4 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
08c6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
08c8 : 28              >            plp         ;restore status
                        
08c9 : e024                     cpx #$24
                                trap_ne
08cb : d0fe            >        bne *           ;failed not equal (non zero)
                        
08cd : c042                     cpy #$42
                                trap_ne
08cf : d0fe            >        bne *           ;failed not equal (non zero)
                        
08d1 : a2db                     ldx #$db
08d3 : a0bd                     ldy #$bd
                                set_a $e7,$ff
                       >            load_flag $ff
08d5 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
08d7 : 48              >            pha         ;use stack to load status
08d8 : a9e7            >            lda #$e7     ;precharge accu
08da : 28              >            plp
                        
08db : ea                       nop
                                tst_a $e7,$ff
08dc : 08              >            php         ;save flags
08dd : c9e7            >            cmp #$e7     ;test result
                       >            trap_ne
08df : d0fe            >        bne *           ;failed not equal (non zero)
                       >
08e1 : 68              >            pla         ;load status
08e2 : 48              >            pha
                       >            cmp_flag $ff
08e3 : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
08e5 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
08e7 : 28              >            plp         ;restore status
                        
08e8 : e0db                     cpx #$db
                                trap_ne
08ea : d0fe            >        bne *           ;failed not equal (non zero)
                        
08ec : c0bd                     cpy #$bd
                                trap_ne
08ee : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                next_test
08f0 : ad0002          >            lda test_case   ;previous test
08f3 : c907            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
08f5 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0008 =                 >test_num = test_num + 1
08f7 : a908            >            lda #test_num   ;*** next tests' number
08f9 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                                
                        ; jump absolute
                                set_stat $0
                       >            load_flag $0
08fc : a900            >            lda #$0             ;allow test to change I-flag (no mask)
                       >
08fe : 48              >            pha         ;use stack to load status
08ff : 28              >            plp
                        
0900 : a946                     lda #'F'
0902 : a241                     ldx #'A'
0904 : a052                     ldy #'R'        ;N=0, V=0, Z=0, C=0
0906 : 4cef36                   jmp test_far
0909 : ea                       nop
090a : ea                       nop
                                trap_ne         ;runover protection
090b : d0fe            >        bne *           ;failed not equal (non zero)
                        
090d : e8                       inx
090e : e8                       inx
090f :                  far_ret 
                                trap_eq         ;returned flags OK?
090f : f0fe            >        beq *           ;failed equal (zero)
                        
                                trap_pl
0911 : 10fe            >        bpl *           ;failed plus (bit 7 clear)
                        
                                trap_cc
0913 : 90fe            >        bcc *           ;failed carry clear
                        
                                trap_vc
0915 : 50fe            >        bvc *           ;failed overflow clear
                        
0917 : c9ec                     cmp #('F'^$aa)  ;returned registers OK?
                                trap_ne
0919 : d0fe            >        bne *           ;failed not equal (non zero)
                        
091b : e042                     cpx #('A'+1)
                                trap_ne
091d : d0fe            >        bne *           ;failed not equal (non zero)
                        
091f : c04f                     cpy #('R'-3)
                                trap_ne
0921 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0923 : ca                       dex
0924 : c8                       iny
0925 : c8                       iny
0926 : c8                       iny
0927 : 49aa                     eor #$aa        ;N=0, V=1, Z=0, C=1
0929 : 4c3209                   jmp test_near
092c : ea                       nop
092d : ea                       nop
                                trap_ne         ;runover protection
092e : d0fe            >        bne *           ;failed not equal (non zero)
                        
0930 : e8                       inx
0931 : e8                       inx
0932 :                  test_near
                                trap_eq         ;passed flags OK?
0932 : f0fe            >        beq *           ;failed equal (zero)
                        
                                trap_mi
0934 : 30fe            >        bmi *           ;failed minus (bit 7 set)
                        
                                trap_cc
0936 : 90fe            >        bcc *           ;failed carry clear
                        
                                trap_vc
0938 : 50fe            >        bvc *           ;failed overflow clear
                        
093a : c946                     cmp #'F'        ;passed registers OK?
                                trap_ne
093c : d0fe            >        bne *           ;failed not equal (non zero)
                        
093e : e041                     cpx #'A'
                                trap_ne
0940 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0942 : c052                     cpy #'R'
                                trap_ne
0944 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                next_test
0946 : ad0002          >            lda test_case   ;previous test
0949 : c908            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
094b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0009 =                 >test_num = test_num + 1
094d : a909            >            lda #test_num   ;*** next tests' number
094f : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                                
                        ; jump indirect
                                set_stat 0
                       >            load_flag 0
0952 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0954 : 48              >            pha         ;use stack to load status
0955 : 28              >            plp
                        
0956 : a949                     lda #'I'
0958 : a24e                     ldx #'N'
095a : a044                     ldy #'D'        ;N=0, V=0, Z=0, C=0
095c : 6c1e37                   jmp (ptr_tst_ind)
095f : ea                       nop
                                trap_ne         ;runover protection
0960 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0962 : 88                       dey
0963 : 88                       dey
0964 :                  ind_ret 
0964 : 08                       php             ;either SP or Y count will fail, if we do not hit
0965 : 88                       dey
0966 : 88                       dey
0967 : 88                       dey
0968 : 28                       plp
                                trap_eq         ;returned flags OK?
0969 : f0fe            >        beq *           ;failed equal (zero)
                        
                                trap_pl
096b : 10fe            >        bpl *           ;failed plus (bit 7 clear)
                        
                                trap_cc
096d : 90fe            >        bcc *           ;failed carry clear
                        
                                trap_vc
096f : 50fe            >        bvc *           ;failed overflow clear
                        
0971 : c9e3                     cmp #('I'^$aa)  ;returned registers OK?
                                trap_ne
0973 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0975 : e04f                     cpx #('N'+1)
                                trap_ne
0977 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0979 : c03e                     cpy #('D'-6)
                                trap_ne
097b : d0fe            >        bne *           ;failed not equal (non zero)
                        
097d : ba                       tsx             ;SP check
097e : e0ff                     cpx #$ff
                                trap_ne
0980 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                next_test
0982 : ad0002          >            lda test_case   ;previous test
0985 : c909            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0987 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
000a =                 >test_num = test_num + 1
0989 : a90a            >            lda #test_num   ;*** next tests' number
098b : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; jump subroutine & return from subroutine
                                set_stat 0
                       >            load_flag 0
098e : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0990 : 48              >            pha         ;use stack to load status
0991 : 28              >            plp
                        
0992 : a94a                     lda #'J'
0994 : a253                     ldx #'S'
0996 : a052                     ldy #'R'        ;N=0, V=0, Z=0, C=0
0998 : 205d37                   jsr test_jsr
099a =                  jsr_ret = *-1           ;last address of jsr = return address
099b : 08                       php             ;either SP or Y count will fail, if we do not hit
099c : 88                       dey
099d : 88                       dey
099e : 88                       dey
099f : 28                       plp
                                trap_eq         ;returned flags OK?
09a0 : f0fe            >        beq *           ;failed equal (zero)
                        
                                trap_pl
09a2 : 10fe            >        bpl *           ;failed plus (bit 7 clear)
                        
                                trap_cc
09a4 : 90fe            >        bcc *           ;failed carry clear
                        
                                trap_vc
09a6 : 50fe            >        bvc *           ;failed overflow clear
                        
09a8 : c9e0                     cmp #('J'^$aa)  ;returned registers OK?
                                trap_ne
09aa : d0fe            >        bne *           ;failed not equal (non zero)
                        
09ac : e054                     cpx #('S'+1)
                                trap_ne
09ae : d0fe            >        bne *           ;failed not equal (non zero)
                        
09b0 : c04c                     cpy #('R'-6)
                                trap_ne
09b2 : d0fe            >        bne *           ;failed not equal (non zero)
                        
09b4 : ba                       tsx             ;sp?
09b5 : e0ff                     cpx #$ff
                                trap_ne
09b7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                next_test
09b9 : ad0002          >            lda test_case   ;previous test
09bc : c90a            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
09be : d0fe            >        bne *           ;failed not equal (non zero)
                       >
000b =                 >test_num = test_num + 1
09c0 : a90b            >            lda #test_num   ;*** next tests' number
09c2 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; break & return from interrupt
                            if ROM_vectors = 1
                                load_flag 0     ;with interrupts enabled if allowed!
09c5 : a900            >            lda #0                  ;allow test to change I-flag (no mask)
                        
09c7 : 48                       pha
09c8 : a942                     lda #'B'
09ca : a252                     ldx #'R'
09cc : a04b                     ldy #'K'
09ce : 28                       plp             ;N=0, V=0, Z=0, C=0
09cf : 00                       brk
                            else
                                lda #hi brk_ret0 ;emulated break
                                pha
                                lda #lo brk_ret0
                                pha
                                load_flag fao    ;set break & unused on stack
                                pha
                                load_flag intdis ;during interrupt
                                pha
                                lda #'B'
                                ldx #'R'
                                ldy #'K'
                                plp             ;N=0, V=0, Z=0, C=0
                                jmp irq_trap
                            endif
09d0 : 88                       dey             ;should not be executed
09d1 :                  brk_ret0                ;address of break return
09d1 : 08                       php             ;either SP or Y count will fail, if we do not hit
09d2 : 88                       dey
09d3 : 88                       dey
09d4 : 88                       dey
09d5 : c9e8                     cmp #'B'^$aa    ;returned registers OK?
                                ;the IRQ vector was never executed if A & X stay unmodified
                                trap_ne
09d7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
09d9 : e053                     cpx #'R'+1
                                trap_ne
09db : d0fe            >        bne *           ;failed not equal (non zero)
                        
09dd : c045                     cpy #'K'-6
                                trap_ne
09df : d0fe            >        bne *           ;failed not equal (non zero)
                        
09e1 : 68                       pla             ;returned flags OK (unchanged)?
                                cmp_flag 0
09e2 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
09e4 : d0fe            >        bne *           ;failed not equal (non zero)
                        
09e6 : ba                       tsx             ;sp?
09e7 : e0ff                     cpx #$ff
                                trap_ne
09e9 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                            if ROM_vectors = 1
                                load_flag $ff   ;with interrupts disabled if allowed!
09eb : a9ff            >            lda #$ff                ;allow test to change I-flag (no mask)
                        
09ed : 48                       pha
09ee : a9bd                     lda #$ff-'B'
09f0 : a2ad                     ldx #$ff-'R'
09f2 : a0b4                     ldy #$ff-'K'
09f4 : 28                       plp             ;N=1, V=1, Z=1, C=1
09f5 : 00                       brk
                            else
                                lda #hi brk_ret1 ;emulated break
                                pha
                                lda #lo brk_ret1
                                pha
                                load_flag $ff
                                pha             ;set break & unused on stack
                                pha             ;actual flags
                                lda #$ff-'B'
                                ldx #$ff-'R'
                                ldy #$ff-'K'
                                plp             ;N=1, V=1, Z=1, C=1
                                jmp irq_trap
                            endif
09f6 : 88                       dey             ;should not be executed
09f7 :                  brk_ret1                ;address of break return
09f7 : 08                       php             ;either SP or Y count will fail, if we do not hit
09f8 : 88                       dey
09f9 : 88                       dey
09fa : 88                       dey
09fb : c917                     cmp #($ff-'B')^$aa  ;returned registers OK?
                                ;the IRQ vector was never executed if A & X stay unmodified
                                trap_ne
09fd : d0fe            >        bne *           ;failed not equal (non zero)
                        
09ff : e0ae                     cpx #$ff-'R'+1
                                trap_ne
0a01 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0a03 : c0ae                     cpy #$ff-'K'-6
                                trap_ne
0a05 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0a07 : 68                       pla             ;returned flags OK (unchanged)?
                                cmp_flag $ff
0a08 : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0a0a : d0fe            >        bne *           ;failed not equal (non zero)
                        
0a0c : ba                       tsx             ;sp?
0a0d : e0ff                     cpx #$ff
                                trap_ne
0a0f : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                next_test
0a11 : ad0002          >            lda test_case   ;previous test
0a14 : c90b            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0a16 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
000c =                 >test_num = test_num + 1
0a18 : a90c            >            lda #test_num   ;*** next tests' number
0a1a : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                         
                        ; test set and clear flags CLC CLI CLD CLV SEC SEI SED
                                set_stat $ff
                       >            load_flag $ff
0a1d : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0a1f : 48              >            pha         ;use stack to load status
0a20 : 28              >            plp
                        
0a21 : 18                       clc
                                tst_stat $ff-carry
0a22 : 08              >            php         ;save status
0a23 : 68              >            pla         ;use stack to retrieve status
0a24 : 48              >            pha
                       >            cmp_flag $ff-carry
0a25 : c9fe            >            cmp #($ff-carry|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a27 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a29 : 28              >            plp         ;restore status
                        
0a2a : 38                       sec
                                tst_stat $ff
0a2b : 08              >            php         ;save status
0a2c : 68              >            pla         ;use stack to retrieve status
0a2d : 48              >            pha
                       >            cmp_flag $ff
0a2e : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a30 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a32 : 28              >            plp         ;restore status
                        
                            if I_flag = 3
0a33 : 58                       cli
                                tst_stat $ff-intdis
0a34 : 08              >            php         ;save status
0a35 : 68              >            pla         ;use stack to retrieve status
0a36 : 48              >            pha
                       >            cmp_flag $ff-intdis
0a37 : c9fb            >            cmp #($ff-intdis|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a39 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a3b : 28              >            plp         ;restore status
                        
0a3c : 78                       sei
                                tst_stat $ff
0a3d : 08              >            php         ;save status
0a3e : 68              >            pla         ;use stack to retrieve status
0a3f : 48              >            pha
                       >            cmp_flag $ff
0a40 : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a42 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a44 : 28              >            plp         ;restore status
                        
                            endif
0a45 : d8                       cld
                                tst_stat $ff-decmode
0a46 : 08              >            php         ;save status
0a47 : 68              >            pla         ;use stack to retrieve status
0a48 : 48              >            pha
                       >            cmp_flag $ff-decmode
0a49 : c9f7            >            cmp #($ff-decmode|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a4b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a4d : 28              >            plp         ;restore status
                        
0a4e : f8                       sed
                                tst_stat $ff
0a4f : 08              >            php         ;save status
0a50 : 68              >            pla         ;use stack to retrieve status
0a51 : 48              >            pha
                       >            cmp_flag $ff
0a52 : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a54 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a56 : 28              >            plp         ;restore status
                        
0a57 : b8                       clv
                                tst_stat $ff-overfl
0a58 : 08              >            php         ;save status
0a59 : 68              >            pla         ;use stack to retrieve status
0a5a : 48              >            pha
                       >            cmp_flag $ff-overfl
0a5b : c9bf            >            cmp #($ff-overfl|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a5d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a5f : 28              >            plp         ;restore status
                        
                                set_stat 0
                       >            load_flag 0
0a60 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0a62 : 48              >            pha         ;use stack to load status
0a63 : 28              >            plp
                        
                                tst_stat 0
0a64 : 08              >            php         ;save status
0a65 : 68              >            pla         ;use stack to retrieve status
0a66 : 48              >            pha
                       >            cmp_flag 0
0a67 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a69 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a6b : 28              >            plp         ;restore status
                        
0a6c : 38                       sec
                                tst_stat carry
0a6d : 08              >            php         ;save status
0a6e : 68              >            pla         ;use stack to retrieve status
0a6f : 48              >            pha
                       >            cmp_flag carry
0a70 : c931            >            cmp #(carry|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a72 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a74 : 28              >            plp         ;restore status
                        
0a75 : 18                       clc
                                tst_stat 0  
0a76 : 08              >            php         ;save status
0a77 : 68              >            pla         ;use stack to retrieve status
0a78 : 48              >            pha
                       >            cmp_flag 0  
0a79 : c930            >            cmp #(0  |fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a7b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a7d : 28              >            plp         ;restore status
                        
                            if I_flag = 3
0a7e : 78                       sei
                                tst_stat intdis
0a7f : 08              >            php         ;save status
0a80 : 68              >            pla         ;use stack to retrieve status
0a81 : 48              >            pha
                       >            cmp_flag intdis
0a82 : c934            >            cmp #(intdis|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a84 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a86 : 28              >            plp         ;restore status
                        
0a87 : 58                       cli
                                tst_stat 0
0a88 : 08              >            php         ;save status
0a89 : 68              >            pla         ;use stack to retrieve status
0a8a : 48              >            pha
                       >            cmp_flag 0
0a8b : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a8d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a8f : 28              >            plp         ;restore status
                        
                            endif  
0a90 : f8                       sed
                                tst_stat decmode
0a91 : 08              >            php         ;save status
0a92 : 68              >            pla         ;use stack to retrieve status
0a93 : 48              >            pha
                       >            cmp_flag decmode
0a94 : c938            >            cmp #(decmode|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a96 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0a98 : 28              >            plp         ;restore status
                        
0a99 : d8                       cld
                                tst_stat 0  
0a9a : 08              >            php         ;save status
0a9b : 68              >            pla         ;use stack to retrieve status
0a9c : 48              >            pha
                       >            cmp_flag 0  
0a9d : c930            >            cmp #(0  |fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0a9f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0aa1 : 28              >            plp         ;restore status
                        
                                set_stat overfl
                       >            load_flag overfl
0aa2 : a940            >            lda #overfl             ;allow test to change I-flag (no mask)
                       >
0aa4 : 48              >            pha         ;use stack to load status
0aa5 : 28              >            plp
                        
                                tst_stat overfl
0aa6 : 08              >            php         ;save status
0aa7 : 68              >            pla         ;use stack to retrieve status
0aa8 : 48              >            pha
                       >            cmp_flag overfl
0aa9 : c970            >            cmp #(overfl|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0aab : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0aad : 28              >            plp         ;restore status
                        
0aae : b8                       clv
                                tst_stat 0
0aaf : 08              >            php         ;save status
0ab0 : 68              >            pla         ;use stack to retrieve status
0ab1 : 48              >            pha
                       >            cmp_flag 0
0ab2 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0ab4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0ab6 : 28              >            plp         ;restore status
                        
                                next_test
0ab7 : ad0002          >            lda test_case   ;previous test
0aba : c90c            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0abc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
000d =                 >test_num = test_num + 1
0abe : a90d            >            lda #test_num   ;*** next tests' number
0ac0 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        ; testing index register increment/decrement and transfer
                        ; INX INY DEX DEY TAX TXA TAY TYA 
0ac3 : a2fe                     ldx #$fe
                                set_stat $ff
                       >            load_flag $ff
0ac5 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0ac7 : 48              >            pha         ;use stack to load status
0ac8 : 28              >            plp
                        
0ac9 : e8                       inx             ;ff
                                tst_x $ff,$ff-zero
0aca : 08              >            php         ;save flags
0acb : e0ff            >            cpx #$ff     ;test result
                       >            trap_ne
0acd : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0acf : 68              >            pla         ;load status
0ad0 : 48              >            pha
                       >            cmp_flag $ff-zero
0ad1 : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0ad3 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0ad5 : 28              >            plp         ;restore status
                        
0ad6 : e8                       inx             ;00
                                tst_x 0,$ff-minus
0ad7 : 08              >            php         ;save flags
0ad8 : e000            >            cpx #0     ;test result
                       >            trap_ne
0ada : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0adc : 68              >            pla         ;load status
0add : 48              >            pha
                       >            cmp_flag $ff-minus
0ade : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0ae0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0ae2 : 28              >            plp         ;restore status
                        
0ae3 : e8                       inx             ;01
                                tst_x 1,$ff-minus-zero
0ae4 : 08              >            php         ;save flags
0ae5 : e001            >            cpx #1     ;test result
                       >            trap_ne
0ae7 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0ae9 : 68              >            pla         ;load status
0aea : 48              >            pha
                       >            cmp_flag $ff-minus-zero
0aeb : c97d            >            cmp #($ff-minus-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0aed : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0aef : 28              >            plp         ;restore status
                        
0af0 : ca                       dex             ;00
                                tst_x 0,$ff-minus
0af1 : 08              >            php         ;save flags
0af2 : e000            >            cpx #0     ;test result
                       >            trap_ne
0af4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0af6 : 68              >            pla         ;load status
0af7 : 48              >            pha
                       >            cmp_flag $ff-minus
0af8 : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0afa : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0afc : 28              >            plp         ;restore status
                        
0afd : ca                       dex             ;ff
                                tst_x $ff,$ff-zero
0afe : 08              >            php         ;save flags
0aff : e0ff            >            cpx #$ff     ;test result
                       >            trap_ne
0b01 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b03 : 68              >            pla         ;load status
0b04 : 48              >            pha
                       >            cmp_flag $ff-zero
0b05 : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b07 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b09 : 28              >            plp         ;restore status
                        
0b0a : ca                       dex             ;fe
                                set_stat 0
                       >            load_flag 0
0b0b : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0b0d : 48              >            pha         ;use stack to load status
0b0e : 28              >            plp
                        
0b0f : e8                       inx             ;ff
                                tst_x $ff,minus
0b10 : 08              >            php         ;save flags
0b11 : e0ff            >            cpx #$ff     ;test result
                       >            trap_ne
0b13 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b15 : 68              >            pla         ;load status
0b16 : 48              >            pha
                       >            cmp_flag minus
0b17 : c9b0            >            cmp #(minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b19 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b1b : 28              >            plp         ;restore status
                        
0b1c : e8                       inx             ;00
                                tst_x 0,zero
0b1d : 08              >            php         ;save flags
0b1e : e000            >            cpx #0     ;test result
                       >            trap_ne
0b20 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b22 : 68              >            pla         ;load status
0b23 : 48              >            pha
                       >            cmp_flag zero
0b24 : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b26 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b28 : 28              >            plp         ;restore status
                        
0b29 : e8                       inx             ;01
                                tst_x 1,0
0b2a : 08              >            php         ;save flags
0b2b : e001            >            cpx #1     ;test result
                       >            trap_ne
0b2d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b2f : 68              >            pla         ;load status
0b30 : 48              >            pha
                       >            cmp_flag 0
0b31 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b33 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b35 : 28              >            plp         ;restore status
                        
0b36 : ca                       dex             ;00
                                tst_x 0,zero
0b37 : 08              >            php         ;save flags
0b38 : e000            >            cpx #0     ;test result
                       >            trap_ne
0b3a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b3c : 68              >            pla         ;load status
0b3d : 48              >            pha
                       >            cmp_flag zero
0b3e : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b40 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b42 : 28              >            plp         ;restore status
                        
0b43 : ca                       dex             ;ff
                                tst_x $ff,minus
0b44 : 08              >            php         ;save flags
0b45 : e0ff            >            cpx #$ff     ;test result
                       >            trap_ne
0b47 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b49 : 68              >            pla         ;load status
0b4a : 48              >            pha
                       >            cmp_flag minus
0b4b : c9b0            >            cmp #(minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b4d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b4f : 28              >            plp         ;restore status
                        
                        
0b50 : a0fe                     ldy #$fe
                                set_stat $ff
                       >            load_flag $ff
0b52 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0b54 : 48              >            pha         ;use stack to load status
0b55 : 28              >            plp
                        
0b56 : c8                       iny             ;ff
                                tst_y $ff,$ff-zero
0b57 : 08              >            php         ;save flags
0b58 : c0ff            >            cpy #$ff     ;test result
                       >            trap_ne
0b5a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b5c : 68              >            pla         ;load status
0b5d : 48              >            pha
                       >            cmp_flag $ff-zero
0b5e : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b60 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b62 : 28              >            plp         ;restore status
                        
0b63 : c8                       iny             ;00
                                tst_y 0,$ff-minus
0b64 : 08              >            php         ;save flags
0b65 : c000            >            cpy #0     ;test result
                       >            trap_ne
0b67 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b69 : 68              >            pla         ;load status
0b6a : 48              >            pha
                       >            cmp_flag $ff-minus
0b6b : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b6d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b6f : 28              >            plp         ;restore status
                        
0b70 : c8                       iny             ;01
                                tst_y 1,$ff-minus-zero
0b71 : 08              >            php         ;save flags
0b72 : c001            >            cpy #1     ;test result
                       >            trap_ne
0b74 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b76 : 68              >            pla         ;load status
0b77 : 48              >            pha
                       >            cmp_flag $ff-minus-zero
0b78 : c97d            >            cmp #($ff-minus-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b7a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b7c : 28              >            plp         ;restore status
                        
0b7d : 88                       dey             ;00
                                tst_y 0,$ff-minus
0b7e : 08              >            php         ;save flags
0b7f : c000            >            cpy #0     ;test result
                       >            trap_ne
0b81 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b83 : 68              >            pla         ;load status
0b84 : 48              >            pha
                       >            cmp_flag $ff-minus
0b85 : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b87 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b89 : 28              >            plp         ;restore status
                        
0b8a : 88                       dey             ;ff
                                tst_y $ff,$ff-zero
0b8b : 08              >            php         ;save flags
0b8c : c0ff            >            cpy #$ff     ;test result
                       >            trap_ne
0b8e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b90 : 68              >            pla         ;load status
0b91 : 48              >            pha
                       >            cmp_flag $ff-zero
0b92 : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0b94 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0b96 : 28              >            plp         ;restore status
                        
0b97 : 88                       dey             ;fe
                                set_stat 0
                       >            load_flag 0
0b98 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0b9a : 48              >            pha         ;use stack to load status
0b9b : 28              >            plp
                        
0b9c : c8                       iny             ;ff
                                tst_y $ff,0+minus
0b9d : 08              >            php         ;save flags
0b9e : c0ff            >            cpy #$ff     ;test result
                       >            trap_ne
0ba0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0ba2 : 68              >            pla         ;load status
0ba3 : 48              >            pha
                       >            cmp_flag 0+minus
0ba4 : c9b0            >            cmp #(0+minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0ba6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0ba8 : 28              >            plp         ;restore status
                        
0ba9 : c8                       iny             ;00
                                tst_y 0,zero
0baa : 08              >            php         ;save flags
0bab : c000            >            cpy #0     ;test result
                       >            trap_ne
0bad : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0baf : 68              >            pla         ;load status
0bb0 : 48              >            pha
                       >            cmp_flag zero
0bb1 : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0bb3 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bb5 : 28              >            plp         ;restore status
                        
0bb6 : c8                       iny             ;01
                                tst_y 1,0
0bb7 : 08              >            php         ;save flags
0bb8 : c001            >            cpy #1     ;test result
                       >            trap_ne
0bba : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bbc : 68              >            pla         ;load status
0bbd : 48              >            pha
                       >            cmp_flag 0
0bbe : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0bc0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bc2 : 28              >            plp         ;restore status
                        
0bc3 : 88                       dey             ;00
                                tst_y 0,zero
0bc4 : 08              >            php         ;save flags
0bc5 : c000            >            cpy #0     ;test result
                       >            trap_ne
0bc7 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bc9 : 68              >            pla         ;load status
0bca : 48              >            pha
                       >            cmp_flag zero
0bcb : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0bcd : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bcf : 28              >            plp         ;restore status
                        
0bd0 : 88                       dey             ;ff
                                tst_y $ff,minus
0bd1 : 08              >            php         ;save flags
0bd2 : c0ff            >            cpy #$ff     ;test result
                       >            trap_ne
0bd4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bd6 : 68              >            pla         ;load status
0bd7 : 48              >            pha
                       >            cmp_flag minus
0bd8 : c9b0            >            cmp #(minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0bda : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bdc : 28              >            plp         ;restore status
                        
                                        
0bdd : a2ff                     ldx #$ff
                                set_stat $ff
                       >            load_flag $ff
0bdf : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0be1 : 48              >            pha         ;use stack to load status
0be2 : 28              >            plp
                        
0be3 : 8a                       txa
                                tst_a $ff,$ff-zero
0be4 : 08              >            php         ;save flags
0be5 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
0be7 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0be9 : 68              >            pla         ;load status
0bea : 48              >            pha
                       >            cmp_flag $ff-zero
0beb : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0bed : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bef : 28              >            plp         ;restore status
                        
0bf0 : 08                       php
0bf1 : e8                       inx             ;00
0bf2 : 28                       plp
0bf3 : 8a                       txa
                                tst_a 0,$ff-minus
0bf4 : 08              >            php         ;save flags
0bf5 : c900            >            cmp #0     ;test result
                       >            trap_ne
0bf7 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bf9 : 68              >            pla         ;load status
0bfa : 48              >            pha
                       >            cmp_flag $ff-minus
0bfb : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0bfd : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0bff : 28              >            plp         ;restore status
                        
0c00 : 08                       php
0c01 : e8                       inx             ;01
0c02 : 28                       plp
0c03 : 8a                       txa
                                tst_a 1,$ff-minus-zero
0c04 : 08              >            php         ;save flags
0c05 : c901            >            cmp #1     ;test result
                       >            trap_ne
0c07 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c09 : 68              >            pla         ;load status
0c0a : 48              >            pha
                       >            cmp_flag $ff-minus-zero
0c0b : c97d            >            cmp #($ff-minus-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0c0d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c0f : 28              >            plp         ;restore status
                        
                                set_stat 0
                       >            load_flag 0
0c10 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0c12 : 48              >            pha         ;use stack to load status
0c13 : 28              >            plp
                        
0c14 : 8a                       txa
                                tst_a 1,0
0c15 : 08              >            php         ;save flags
0c16 : c901            >            cmp #1     ;test result
                       >            trap_ne
0c18 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c1a : 68              >            pla         ;load status
0c1b : 48              >            pha
                       >            cmp_flag 0
0c1c : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0c1e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c20 : 28              >            plp         ;restore status
                        
0c21 : 08                       php
0c22 : ca                       dex             ;00
0c23 : 28                       plp
0c24 : 8a                       txa
                                tst_a 0,zero
0c25 : 08              >            php         ;save flags
0c26 : c900            >            cmp #0     ;test result
                       >            trap_ne
0c28 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c2a : 68              >            pla         ;load status
0c2b : 48              >            pha
                       >            cmp_flag zero
0c2c : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0c2e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c30 : 28              >            plp         ;restore status
                        
0c31 : 08                       php
0c32 : ca                       dex             ;ff
0c33 : 28                       plp
0c34 : 8a                       txa
                                tst_a $ff,minus
0c35 : 08              >            php         ;save flags
0c36 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
0c38 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c3a : 68              >            pla         ;load status
0c3b : 48              >            pha
                       >            cmp_flag minus
0c3c : c9b0            >            cmp #(minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0c3e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c40 : 28              >            plp         ;restore status
                        
                                                
0c41 : a0ff                     ldy #$ff
                                set_stat $ff
                       >            load_flag $ff
0c43 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0c45 : 48              >            pha         ;use stack to load status
0c46 : 28              >            plp
                        
0c47 : 98                       tya
                                tst_a $ff,$ff-zero
0c48 : 08              >            php         ;save flags
0c49 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
0c4b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c4d : 68              >            pla         ;load status
0c4e : 48              >            pha
                       >            cmp_flag $ff-zero
0c4f : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0c51 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c53 : 28              >            plp         ;restore status
                        
0c54 : 08                       php
0c55 : c8                       iny             ;00
0c56 : 28                       plp
0c57 : 98                       tya
                                tst_a 0,$ff-minus
0c58 : 08              >            php         ;save flags
0c59 : c900            >            cmp #0     ;test result
                       >            trap_ne
0c5b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c5d : 68              >            pla         ;load status
0c5e : 48              >            pha
                       >            cmp_flag $ff-minus
0c5f : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0c61 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c63 : 28              >            plp         ;restore status
                        
0c64 : 08                       php
0c65 : c8                       iny             ;01
0c66 : 28                       plp
0c67 : 98                       tya
                                tst_a 1,$ff-minus-zero
0c68 : 08              >            php         ;save flags
0c69 : c901            >            cmp #1     ;test result
                       >            trap_ne
0c6b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c6d : 68              >            pla         ;load status
0c6e : 48              >            pha
                       >            cmp_flag $ff-minus-zero
0c6f : c97d            >            cmp #($ff-minus-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0c71 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c73 : 28              >            plp         ;restore status
                        
                                set_stat 0
                       >            load_flag 0
0c74 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0c76 : 48              >            pha         ;use stack to load status
0c77 : 28              >            plp
                        
0c78 : 98                       tya
                                tst_a 1,0
0c79 : 08              >            php         ;save flags
0c7a : c901            >            cmp #1     ;test result
                       >            trap_ne
0c7c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c7e : 68              >            pla         ;load status
0c7f : 48              >            pha
                       >            cmp_flag 0
0c80 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0c82 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c84 : 28              >            plp         ;restore status
                        
0c85 : 08                       php
0c86 : 88                       dey             ;00
0c87 : 28                       plp
0c88 : 98                       tya
                                tst_a 0,zero
0c89 : 08              >            php         ;save flags
0c8a : c900            >            cmp #0     ;test result
                       >            trap_ne
0c8c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c8e : 68              >            pla         ;load status
0c8f : 48              >            pha
                       >            cmp_flag zero
0c90 : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0c92 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c94 : 28              >            plp         ;restore status
                        
0c95 : 08                       php
0c96 : 88                       dey             ;ff
0c97 : 28                       plp
0c98 : 98                       tya
                                tst_a $ff,minus
0c99 : 08              >            php         ;save flags
0c9a : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
0c9c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0c9e : 68              >            pla         ;load status
0c9f : 48              >            pha
                       >            cmp_flag minus
0ca0 : c9b0            >            cmp #(minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0ca2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0ca4 : 28              >            plp         ;restore status
                        
                        
                                load_flag $ff
0ca5 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                        
0ca7 : 48                       pha
0ca8 : a2ff                     ldx #$ff        ;ff
0caa : 8a                       txa
0cab : 28                       plp             
0cac : a8                       tay
                                tst_y $ff,$ff-zero
0cad : 08              >            php         ;save flags
0cae : c0ff            >            cpy #$ff     ;test result
                       >            trap_ne
0cb0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0cb2 : 68              >            pla         ;load status
0cb3 : 48              >            pha
                       >            cmp_flag $ff-zero
0cb4 : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0cb6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0cb8 : 28              >            plp         ;restore status
                        
0cb9 : 08                       php
0cba : e8                       inx             ;00
0cbb : 8a                       txa
0cbc : 28                       plp
0cbd : a8                       tay
                                tst_y 0,$ff-minus
0cbe : 08              >            php         ;save flags
0cbf : c000            >            cpy #0     ;test result
                       >            trap_ne
0cc1 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0cc3 : 68              >            pla         ;load status
0cc4 : 48              >            pha
                       >            cmp_flag $ff-minus
0cc5 : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0cc7 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0cc9 : 28              >            plp         ;restore status
                        
0cca : 08                       php
0ccb : e8                       inx             ;01
0ccc : 8a                       txa
0ccd : 28                       plp
0cce : a8                       tay
                                tst_y 1,$ff-minus-zero
0ccf : 08              >            php         ;save flags
0cd0 : c001            >            cpy #1     ;test result
                       >            trap_ne
0cd2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0cd4 : 68              >            pla         ;load status
0cd5 : 48              >            pha
                       >            cmp_flag $ff-minus-zero
0cd6 : c97d            >            cmp #($ff-minus-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0cd8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0cda : 28              >            plp         ;restore status
                        
                                load_flag 0
0cdb : a900            >            lda #0             ;allow test to change I-flag (no mask)
                        
0cdd : 48                       pha
0cde : a900                     lda #0
0ce0 : 8a                       txa
0ce1 : 28                       plp
0ce2 : a8                       tay
                                tst_y 1,0
0ce3 : 08              >            php         ;save flags
0ce4 : c001            >            cpy #1     ;test result
                       >            trap_ne
0ce6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0ce8 : 68              >            pla         ;load status
0ce9 : 48              >            pha
                       >            cmp_flag 0
0cea : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0cec : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0cee : 28              >            plp         ;restore status
                        
0cef : 08                       php
0cf0 : ca                       dex             ;00
0cf1 : 8a                       txa
0cf2 : 28                       plp
0cf3 : a8                       tay
                                tst_y 0,zero
0cf4 : 08              >            php         ;save flags
0cf5 : c000            >            cpy #0     ;test result
                       >            trap_ne
0cf7 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0cf9 : 68              >            pla         ;load status
0cfa : 48              >            pha
                       >            cmp_flag zero
0cfb : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0cfd : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0cff : 28              >            plp         ;restore status
                        
0d00 : 08                       php
0d01 : ca                       dex             ;ff
0d02 : 8a                       txa
0d03 : 28                       plp
0d04 : a8                       tay
                                tst_y $ff,minus
0d05 : 08              >            php         ;save flags
0d06 : c0ff            >            cpy #$ff     ;test result
                       >            trap_ne
0d08 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d0a : 68              >            pla         ;load status
0d0b : 48              >            pha
                       >            cmp_flag minus
0d0c : c9b0            >            cmp #(minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0d0e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d10 : 28              >            plp         ;restore status
                        
                        
                        
                                load_flag $ff
0d11 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                        
0d13 : 48                       pha
0d14 : a0ff                     ldy #$ff        ;ff
0d16 : 98                       tya
0d17 : 28                       plp
0d18 : aa                       tax
                                tst_x $ff,$ff-zero
0d19 : 08              >            php         ;save flags
0d1a : e0ff            >            cpx #$ff     ;test result
                       >            trap_ne
0d1c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d1e : 68              >            pla         ;load status
0d1f : 48              >            pha
                       >            cmp_flag $ff-zero
0d20 : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0d22 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d24 : 28              >            plp         ;restore status
                        
0d25 : 08                       php
0d26 : c8                       iny             ;00
0d27 : 98                       tya
0d28 : 28                       plp
0d29 : aa                       tax
                                tst_x 0,$ff-minus
0d2a : 08              >            php         ;save flags
0d2b : e000            >            cpx #0     ;test result
                       >            trap_ne
0d2d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d2f : 68              >            pla         ;load status
0d30 : 48              >            pha
                       >            cmp_flag $ff-minus
0d31 : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0d33 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d35 : 28              >            plp         ;restore status
                        
0d36 : 08                       php
0d37 : c8                       iny             ;01
0d38 : 98                       tya
0d39 : 28                       plp
0d3a : aa                       tax
                                tst_x 1,$ff-minus-zero
0d3b : 08              >            php         ;save flags
0d3c : e001            >            cpx #1     ;test result
                       >            trap_ne
0d3e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d40 : 68              >            pla         ;load status
0d41 : 48              >            pha
                       >            cmp_flag $ff-minus-zero
0d42 : c97d            >            cmp #($ff-minus-zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0d44 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d46 : 28              >            plp         ;restore status
                        
                                load_flag 0
0d47 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                        
0d49 : 48                       pha
0d4a : a900                     lda #0          ;preset status
0d4c : 98                       tya
0d4d : 28                       plp
0d4e : aa                       tax
                                tst_x 1,0
0d4f : 08              >            php         ;save flags
0d50 : e001            >            cpx #1     ;test result
                       >            trap_ne
0d52 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d54 : 68              >            pla         ;load status
0d55 : 48              >            pha
                       >            cmp_flag 0
0d56 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0d58 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d5a : 28              >            plp         ;restore status
                        
0d5b : 08                       php
0d5c : 88                       dey             ;00
0d5d : 98                       tya
0d5e : 28                       plp
0d5f : aa                       tax
                                tst_x 0,zero
0d60 : 08              >            php         ;save flags
0d61 : e000            >            cpx #0     ;test result
                       >            trap_ne
0d63 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d65 : 68              >            pla         ;load status
0d66 : 48              >            pha
                       >            cmp_flag zero
0d67 : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0d69 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d6b : 28              >            plp         ;restore status
                        
0d6c : 08                       php
0d6d : 88                       dey             ;ff
0d6e : 98                       tya
0d6f : 28                       plp
0d70 : aa                       tax
                                tst_x $ff,minus
0d71 : 08              >            php         ;save flags
0d72 : e0ff            >            cpx #$ff     ;test result
                       >            trap_ne
0d74 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d76 : 68              >            pla         ;load status
0d77 : 48              >            pha
                       >            cmp_flag minus
0d78 : c9b0            >            cmp #(minus|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
0d7a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0d7c : 28              >            plp         ;restore status
                        
                                next_test
0d7d : ad0002          >            lda test_case   ;previous test
0d80 : c90d            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0d82 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
000e =                 >test_num = test_num + 1
0d84 : a90e            >            lda #test_num   ;*** next tests' number
0d86 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                             
                        ;TSX sets NZ - TXS does not
                        ;  This section also tests for proper stack wrap around.
0d89 : a201                     ldx #1          ;01
                                set_stat $ff
                       >            load_flag $ff
0d8b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0d8d : 48              >            pha         ;use stack to load status
0d8e : 28              >            plp
                        
0d8f : 9a                       txs
0d90 : 08                       php
0d91 : ad0101                   lda $101
                                cmp_flag $ff
0d94 : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0d96 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
0d98 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0d9a : 48              >            pha         ;use stack to load status
0d9b : 28              >            plp
                        
0d9c : 9a                       txs
0d9d : 08                       php
0d9e : ad0101                   lda $101
                                cmp_flag 0
0da1 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0da3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0da5 : ca                       dex             ;00
                                set_stat $ff
                       >            load_flag $ff
0da6 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0da8 : 48              >            pha         ;use stack to load status
0da9 : 28              >            plp
                        
0daa : 9a                       txs
0dab : 08                       php
0dac : ad0001                   lda $100
                                cmp_flag $ff
0daf : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0db1 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
0db3 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0db5 : 48              >            pha         ;use stack to load status
0db6 : 28              >            plp
                        
0db7 : 9a                       txs
0db8 : 08                       php
0db9 : ad0001                   lda $100
                                cmp_flag 0
0dbc : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0dbe : d0fe            >        bne *           ;failed not equal (non zero)
                        
0dc0 : ca                       dex             ;ff
                                set_stat $ff
                       >            load_flag $ff
0dc1 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0dc3 : 48              >            pha         ;use stack to load status
0dc4 : 28              >            plp
                        
0dc5 : 9a                       txs
0dc6 : 08                       php
0dc7 : adff01                   lda $1ff
                                cmp_flag $ff
0dca : c9ff            >            cmp #($ff|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0dcc : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
0dce : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0dd0 : 48              >            pha         ;use stack to load status
0dd1 : 28              >            plp
                        
0dd2 : 9a                       txs
0dd3 : 08                       php
0dd4 : adff01                   lda $1ff
                                cmp_flag 0
0dd7 : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                        
                                
0dd9 : a201                     ldx #1
0ddb : 9a                       txs             ;sp=01
                                set_stat $ff
                       >            load_flag $ff
0ddc : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0dde : 48              >            pha         ;use stack to load status
0ddf : 28              >            plp
                        
0de0 : ba                       tsx             ;clears Z, N
0de1 : 08                       php             ;sp=00
0de2 : e001                     cpx #1
                                trap_ne
0de4 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0de6 : ad0101                   lda $101
                                cmp_flag $ff-minus-zero
0de9 : c97d            >            cmp #($ff-minus-zero|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0deb : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
0ded : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0def : 48              >            pha         ;use stack to load status
0df0 : 28              >            plp
                        
0df1 : ba                       tsx             ;clears N, sets Z
0df2 : 08                       php             ;sp=ff
0df3 : e000                     cpx #0
                                trap_ne
0df5 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0df7 : ad0001                   lda $100
                                cmp_flag $ff-minus
0dfa : c97f            >            cmp #($ff-minus|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0dfc : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
0dfe : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0e00 : 48              >            pha         ;use stack to load status
0e01 : 28              >            plp
                        
0e02 : ba                       tsx             ;clears N, sets Z
0e03 : 08                       php             ;sp=fe
0e04 : e0ff                     cpx #$ff
                                trap_ne
0e06 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0e08 : adff01                   lda $1ff
                                cmp_flag $ff-zero
0e0b : c9fd            >            cmp #($ff-zero|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0e0d : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                
0e0f : a201                     ldx #1
0e11 : 9a                       txs             ;sp=01
                                set_stat 0
                       >            load_flag 0
0e12 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0e14 : 48              >            pha         ;use stack to load status
0e15 : 28              >            plp
                        
0e16 : ba                       tsx             ;clears Z, N
0e17 : 08                       php             ;sp=00
0e18 : e001                     cpx #1
                                trap_ne
0e1a : d0fe            >        bne *           ;failed not equal (non zero)
                        
0e1c : ad0101                   lda $101
                                cmp_flag 0
0e1f : c930            >            cmp #(0|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0e21 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
0e23 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0e25 : 48              >            pha         ;use stack to load status
0e26 : 28              >            plp
                        
0e27 : ba                       tsx             ;clears N, sets Z
0e28 : 08                       php             ;sp=ff
0e29 : e000                     cpx #0
                                trap_ne
0e2b : d0fe            >        bne *           ;failed not equal (non zero)
                        
0e2d : ad0001                   lda $100
                                cmp_flag zero
0e30 : c932            >            cmp #(zero|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0e32 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
0e34 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0e36 : 48              >            pha         ;use stack to load status
0e37 : 28              >            plp
                        
0e38 : ba                       tsx             ;clears N, sets Z
0e39 : 08                       php             ;sp=fe
0e3a : e0ff                     cpx #$ff
                                trap_ne
0e3c : d0fe            >        bne *           ;failed not equal (non zero)
                        
0e3e : adff01                   lda $1ff
                                cmp_flag minus
0e41 : c9b0            >            cmp #(minus|fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
0e43 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0e45 : 68                       pla             ;sp=ff
                                next_test
0e46 : ad0002          >            lda test_case   ;previous test
0e49 : c90e            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0e4b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
000f =                 >test_num = test_num + 1
0e4d : a90f            >            lda #test_num   ;*** next tests' number
0e4f : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                                
                        ; testing index register load & store LDY LDX STY STX all addressing modes
                        ; LDX / STX - zp,y / abs,y
0e52 : a003                     ldy #3
0e54 :                  tldx    
                                set_stat 0
                       >            load_flag 0
0e54 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0e56 : 48              >            pha         ;use stack to load status
0e57 : 28              >            plp
                        
0e58 : b613                     ldx zp1,y
0e5a : 08                       php         ;test stores do not alter flags
0e5b : 8a                       txa
0e5c : 49c3                     eor #$c3
0e5e : 28                       plp
0e5f : 990302                   sta abst,y
0e62 : 08                       php         ;flags after load/store sequence
0e63 : 49c3                     eor #$c3
0e65 : d91702                   cmp abs1,y  ;test result
                                trap_ne
0e68 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0e6a : 68                       pla         ;load status
                                eor_flag 0
0e6b : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
0e6d : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
0e70 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0e72 : 88                       dey
0e73 : 10df                     bpl tldx                  
                        
0e75 : a003                     ldy #3
0e77 :                  tldx1   
                                set_stat $ff
                       >            load_flag $ff
0e77 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0e79 : 48              >            pha         ;use stack to load status
0e7a : 28              >            plp
                        
0e7b : b613                     ldx zp1,y
0e7d : 08                       php         ;test stores do not alter flags
0e7e : 8a                       txa
0e7f : 49c3                     eor #$c3
0e81 : 28                       plp
0e82 : 990302                   sta abst,y
0e85 : 08                       php         ;flags after load/store sequence
0e86 : 49c3                     eor #$c3
0e88 : d91702                   cmp abs1,y  ;test result
                                trap_ne
0e8b : d0fe            >        bne *           ;failed not equal (non zero)
                        
0e8d : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
0e8e : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
0e90 : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
0e93 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0e95 : 88                       dey
0e96 : 10df                     bpl tldx1                  
                        
0e98 : a003                     ldy #3
0e9a :                  tldx2   
                                set_stat 0
                       >            load_flag 0
0e9a : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0e9c : 48              >            pha         ;use stack to load status
0e9d : 28              >            plp
                        
0e9e : be1702                   ldx abs1,y
0ea1 : 08                       php         ;test stores do not alter flags
0ea2 : 8a                       txa
0ea3 : 49c3                     eor #$c3
0ea5 : aa                       tax
0ea6 : 28                       plp
0ea7 : 960c                     stx zpt,y
0ea9 : 08                       php         ;flags after load/store sequence
0eaa : 49c3                     eor #$c3
0eac : d91300                   cmp zp1,y   ;test result
                                trap_ne
0eaf : d0fe            >        bne *           ;failed not equal (non zero)
                        
0eb1 : 68                       pla         ;load status
                                eor_flag 0
0eb2 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
0eb4 : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
0eb7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0eb9 : 88                       dey
0eba : 10de                     bpl tldx2                  
                        
0ebc : a003                     ldy #3
0ebe :                  tldx3   
                                set_stat $ff
                       >            load_flag $ff
0ebe : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0ec0 : 48              >            pha         ;use stack to load status
0ec1 : 28              >            plp
                        
0ec2 : be1702                   ldx abs1,y
0ec5 : 08                       php         ;test stores do not alter flags
0ec6 : 8a                       txa
0ec7 : 49c3                     eor #$c3
0ec9 : aa                       tax
0eca : 28                       plp
0ecb : 960c                     stx zpt,y
0ecd : 08                       php         ;flags after load/store sequence
0ece : 49c3                     eor #$c3
0ed0 : d91300                   cmp zp1,y   ;test result
                                trap_ne
0ed3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0ed5 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
0ed6 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
0ed8 : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
0edb : d0fe            >        bne *           ;failed not equal (non zero)
                        
0edd : 88                       dey
0ede : 10de                     bpl tldx3
                                
0ee0 : a003                     ldy #3      ;testing store result
0ee2 : a200                     ldx #0
0ee4 : b90c00           tstx    lda zpt,y
0ee7 : 49c3                     eor #$c3
0ee9 : d91300                   cmp zp1,y
                                trap_ne     ;store to zp data
0eec : d0fe            >        bne *           ;failed not equal (non zero)
                        
0eee : 960c                     stx zpt,y   ;clear                
0ef0 : b90302                   lda abst,y
0ef3 : 49c3                     eor #$c3
0ef5 : d91702                   cmp abs1,y
                                trap_ne     ;store to abs data
0ef8 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0efa : 8a                       txa
0efb : 990302                   sta abst,y  ;clear                
0efe : 88                       dey
0eff : 10e3                     bpl tstx
                                next_test
0f01 : ad0002          >            lda test_case   ;previous test
0f04 : c90f            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0f06 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0010 =                 >test_num = test_num + 1
0f08 : a910            >            lda #test_num   ;*** next tests' number
0f0a : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                                
                        ; indexed wraparound test (only zp should wrap)
0f0d : a0fd                     ldy #3+$fa
0f0f : b619             tldx4   ldx zp1-$fa&$ff,y   ;wrap on indexed zp
0f11 : 8a                       txa
0f12 : 990901                   sta abst-$fa,y      ;no STX abs,y!
0f15 : 88                       dey
0f16 : c0fa                     cpy #$fa
0f18 : b0f5                     bcs tldx4                  
0f1a : a0fd                     ldy #3+$fa
0f1c : be1d01           tldx5   ldx abs1-$fa,y      ;no wrap on indexed abs
0f1f : 9612                     stx zpt-$fa&$ff,y
0f21 : 88                       dey
0f22 : c0fa                     cpy #$fa
0f24 : b0f6                     bcs tldx5                  
0f26 : a003                     ldy #3      ;testing wraparound result
0f28 : a200                     ldx #0
0f2a : b90c00           tstx1   lda zpt,y
0f2d : d91300                   cmp zp1,y
                                trap_ne     ;store to zp data
0f30 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0f32 : 960c                     stx zpt,y   ;clear                
0f34 : b90302                   lda abst,y
0f37 : d91702                   cmp abs1,y
                                trap_ne     ;store to abs data
0f3a : d0fe            >        bne *           ;failed not equal (non zero)
                        
0f3c : 8a                       txa
0f3d : 990302                   sta abst,y  ;clear                
0f40 : 88                       dey
0f41 : 10e7                     bpl tstx1
                                next_test
0f43 : ad0002          >            lda test_case   ;previous test
0f46 : c910            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0f48 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0011 =                 >test_num = test_num + 1
0f4a : a911            >            lda #test_num   ;*** next tests' number
0f4c : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                                
                        ; LDY / STY - zp,x / abs,x
0f4f : a203                     ldx #3
0f51 :                  tldy    
                                set_stat 0
                       >            load_flag 0
0f51 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0f53 : 48              >            pha         ;use stack to load status
0f54 : 28              >            plp
                        
0f55 : b413                     ldy zp1,x
0f57 : 08                       php         ;test stores do not alter flags
0f58 : 98                       tya
0f59 : 49c3                     eor #$c3
0f5b : 28                       plp
0f5c : 9d0302                   sta abst,x
0f5f : 08                       php         ;flags after load/store sequence
0f60 : 49c3                     eor #$c3
0f62 : dd1702                   cmp abs1,x  ;test result
                                trap_ne
0f65 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0f67 : 68                       pla         ;load status
                                eor_flag 0
0f68 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
0f6a : dd1c02                   cmp fLDx,x  ;test flags
                                trap_ne
0f6d : d0fe            >        bne *           ;failed not equal (non zero)
                        
0f6f : ca                       dex
0f70 : 10df                     bpl tldy                  
                        
0f72 : a203                     ldx #3
0f74 :                  tldy1   
                                set_stat $ff
                       >            load_flag $ff
0f74 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0f76 : 48              >            pha         ;use stack to load status
0f77 : 28              >            plp
                        
0f78 : b413                     ldy zp1,x
0f7a : 08                       php         ;test stores do not alter flags
0f7b : 98                       tya
0f7c : 49c3                     eor #$c3
0f7e : 28                       plp
0f7f : 9d0302                   sta abst,x
0f82 : 08                       php         ;flags after load/store sequence
0f83 : 49c3                     eor #$c3
0f85 : dd1702                   cmp abs1,x  ;test result
                                trap_ne
0f88 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0f8a : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
0f8b : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
0f8d : dd1c02                   cmp fLDx,x  ;test flags
                                trap_ne
0f90 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0f92 : ca                       dex
0f93 : 10df                     bpl tldy1                  
                        
0f95 : a203                     ldx #3
0f97 :                  tldy2   
                                set_stat 0
                       >            load_flag 0
0f97 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
0f99 : 48              >            pha         ;use stack to load status
0f9a : 28              >            plp
                        
0f9b : bc1702                   ldy abs1,x
0f9e : 08                       php         ;test stores do not alter flags
0f9f : 98                       tya
0fa0 : 49c3                     eor #$c3
0fa2 : a8                       tay
0fa3 : 28                       plp
0fa4 : 940c                     sty zpt,x
0fa6 : 08                       php         ;flags after load/store sequence
0fa7 : 49c3                     eor #$c3
0fa9 : d513                     cmp zp1,x   ;test result
                                trap_ne
0fab : d0fe            >        bne *           ;failed not equal (non zero)
                        
0fad : 68                       pla         ;load status
                                eor_flag 0
0fae : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
0fb0 : dd1c02                   cmp fLDx,x  ;test flags
                                trap_ne
0fb3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0fb5 : ca                       dex
0fb6 : 10df                     bpl tldy2                  
                        
0fb8 : a203                     ldx #3
0fba :                  tldy3
                                set_stat $ff
                       >            load_flag $ff
0fba : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
0fbc : 48              >            pha         ;use stack to load status
0fbd : 28              >            plp
                        
0fbe : bc1702                   ldy abs1,x
0fc1 : 08                       php         ;test stores do not alter flags
0fc2 : 98                       tya
0fc3 : 49c3                     eor #$c3
0fc5 : a8                       tay
0fc6 : 28                       plp
0fc7 : 940c                     sty zpt,x
0fc9 : 08                       php         ;flags after load/store sequence
0fca : 49c3                     eor #$c3
0fcc : d513                     cmp zp1,x   ;test result
                                trap_ne
0fce : d0fe            >        bne *           ;failed not equal (non zero)
                        
0fd0 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
0fd1 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
0fd3 : dd1c02                   cmp fLDx,x  ;test flags
                                trap_ne
0fd6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0fd8 : ca                       dex
0fd9 : 10df                     bpl tldy3
                        
0fdb : a203                     ldx #3      ;testing store result
0fdd : a000                     ldy #0
0fdf : b50c             tsty    lda zpt,x
0fe1 : 49c3                     eor #$c3
0fe3 : d513                     cmp zp1,x
                                trap_ne     ;store to zp,x data
0fe5 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0fe7 : 940c                     sty zpt,x   ;clear                
0fe9 : bd0302                   lda abst,x
0fec : 49c3                     eor #$c3
0fee : dd1702                   cmp abs1,x
                                trap_ne     ;store to abs,x data
0ff1 : d0fe            >        bne *           ;failed not equal (non zero)
                        
0ff3 : 8a                       txa
0ff4 : 9d0302                   sta abst,x  ;clear                
0ff7 : ca                       dex
0ff8 : 10e5                     bpl tsty
                                next_test
0ffa : ad0002          >            lda test_case   ;previous test
0ffd : c911            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
0fff : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0012 =                 >test_num = test_num + 1
1001 : a912            >            lda #test_num   ;*** next tests' number
1003 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; indexed wraparound test (only zp should wrap)
1006 : a2fd                     ldx #3+$fa
1008 : b419             tldy4   ldy zp1-$fa&$ff,x   ;wrap on indexed zp
100a : 98                       tya
100b : 9d0901                   sta abst-$fa,x      ;no STX abs,x!
100e : ca                       dex
100f : e0fa                     cpx #$fa
1011 : b0f5                     bcs tldy4                  
1013 : a2fd                     ldx #3+$fa
1015 : bc1d01           tldy5   ldy abs1-$fa,x      ;no wrap on indexed abs
1018 : 9412                     sty zpt-$fa&$ff,x
101a : ca                       dex
101b : e0fa                     cpx #$fa
101d : b0f6                     bcs tldy5                  
101f : a203                     ldx #3      ;testing wraparound result
1021 : a000                     ldy #0
1023 : b50c             tsty1   lda zpt,x
1025 : d513                     cmp zp1,x
                                trap_ne     ;store to zp,x data
1027 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1029 : 940c                     sty zpt,x   ;clear                
102b : bd0302                   lda abst,x
102e : dd1702                   cmp abs1,x
                                trap_ne     ;store to abs,x data
1031 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1033 : 8a                       txa
1034 : 9d0302                   sta abst,x  ;clear                
1037 : ca                       dex
1038 : 10e9                     bpl tsty1
                                next_test
103a : ad0002          >            lda test_case   ;previous test
103d : c912            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
103f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0013 =                 >test_num = test_num + 1
1041 : a913            >            lda #test_num   ;*** next tests' number
1043 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; LDX / STX - zp / abs / #
                                set_stat 0  
                       >            load_flag 0  
1046 : a900            >            lda #0               ;allow test to change I-flag (no mask)
                       >
1048 : 48              >            pha         ;use stack to load status
1049 : 28              >            plp
                        
104a : a613                     ldx zp1
104c : 08                       php         ;test stores do not alter flags
104d : 8a                       txa
104e : 49c3                     eor #$c3
1050 : aa                       tax
1051 : 28                       plp
1052 : 8e0302                   stx abst
1055 : 08                       php         ;flags after load/store sequence
1056 : 49c3                     eor #$c3
1058 : aa                       tax
1059 : e0c3                     cpx #$c3    ;test result
                                trap_ne
105b : d0fe            >        bne *           ;failed not equal (non zero)
                        
105d : 68                       pla         ;load status
                                eor_flag 0
105e : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1060 : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
1063 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1065 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1067 : 48              >            pha         ;use stack to load status
1068 : 28              >            plp
                        
1069 : a614                     ldx zp1+1
106b : 08                       php         ;test stores do not alter flags
106c : 8a                       txa
106d : 49c3                     eor #$c3
106f : aa                       tax
1070 : 28                       plp
1071 : 8e0402                   stx abst+1
1074 : 08                       php         ;flags after load/store sequence
1075 : 49c3                     eor #$c3
1077 : aa                       tax
1078 : e082                     cpx #$82    ;test result
                                trap_ne
107a : d0fe            >        bne *           ;failed not equal (non zero)
                        
107c : 68                       pla         ;load status
                                eor_flag 0
107d : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
107f : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
1082 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1084 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1086 : 48              >            pha         ;use stack to load status
1087 : 28              >            plp
                        
1088 : a615                     ldx zp1+2
108a : 08                       php         ;test stores do not alter flags
108b : 8a                       txa
108c : 49c3                     eor #$c3
108e : aa                       tax
108f : 28                       plp
1090 : 8e0502                   stx abst+2
1093 : 08                       php         ;flags after load/store sequence
1094 : 49c3                     eor #$c3
1096 : aa                       tax
1097 : e041                     cpx #$41    ;test result
                                trap_ne
1099 : d0fe            >        bne *           ;failed not equal (non zero)
                        
109b : 68                       pla         ;load status
                                eor_flag 0
109c : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
109e : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
10a1 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
10a3 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
10a5 : 48              >            pha         ;use stack to load status
10a6 : 28              >            plp
                        
10a7 : a616                     ldx zp1+3
10a9 : 08                       php         ;test stores do not alter flags
10aa : 8a                       txa
10ab : 49c3                     eor #$c3
10ad : aa                       tax
10ae : 28                       plp
10af : 8e0602                   stx abst+3
10b2 : 08                       php         ;flags after load/store sequence
10b3 : 49c3                     eor #$c3
10b5 : aa                       tax
10b6 : e000                     cpx #0      ;test result
                                trap_ne
10b8 : d0fe            >        bne *           ;failed not equal (non zero)
                        
10ba : 68                       pla         ;load status
                                eor_flag 0
10bb : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
10bd : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
10c0 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                                set_stat $ff
                       >            load_flag $ff
10c2 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
10c4 : 48              >            pha         ;use stack to load status
10c5 : 28              >            plp
                        
10c6 : a613                     ldx zp1  
10c8 : 08                       php         ;test stores do not alter flags
10c9 : 8a                       txa
10ca : 49c3                     eor #$c3
10cc : aa                       tax
10cd : 28                       plp
10ce : 8e0302                   stx abst  
10d1 : 08                       php         ;flags after load/store sequence
10d2 : 49c3                     eor #$c3
10d4 : aa                       tax
10d5 : e0c3                     cpx #$c3    ;test result
                                trap_ne     ;
10d7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
10d9 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
10da : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
10dc : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
10df : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
10e1 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
10e3 : 48              >            pha         ;use stack to load status
10e4 : 28              >            plp
                        
10e5 : a614                     ldx zp1+1
10e7 : 08                       php         ;test stores do not alter flags
10e8 : 8a                       txa
10e9 : 49c3                     eor #$c3
10eb : aa                       tax
10ec : 28                       plp
10ed : 8e0402                   stx abst+1
10f0 : 08                       php         ;flags after load/store sequence
10f1 : 49c3                     eor #$c3
10f3 : aa                       tax
10f4 : e082                     cpx #$82    ;test result
                                trap_ne
10f6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
10f8 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
10f9 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
10fb : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
10fe : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1100 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1102 : 48              >            pha         ;use stack to load status
1103 : 28              >            plp
                        
1104 : a615                     ldx zp1+2
1106 : 08                       php         ;test stores do not alter flags
1107 : 8a                       txa
1108 : 49c3                     eor #$c3
110a : aa                       tax
110b : 28                       plp
110c : 8e0502                   stx abst+2
110f : 08                       php         ;flags after load/store sequence
1110 : 49c3                     eor #$c3
1112 : aa                       tax
1113 : e041                     cpx #$41    ;test result
                                trap_ne     ;
1115 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1117 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1118 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
111a : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
111d : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
111f : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1121 : 48              >            pha         ;use stack to load status
1122 : 28              >            plp
                        
1123 : a616                     ldx zp1+3
1125 : 08                       php         ;test stores do not alter flags
1126 : 8a                       txa
1127 : 49c3                     eor #$c3
1129 : aa                       tax
112a : 28                       plp
112b : 8e0602                   stx abst+3
112e : 08                       php         ;flags after load/store sequence
112f : 49c3                     eor #$c3
1131 : aa                       tax
1132 : e000                     cpx #0      ;test result
                                trap_ne
1134 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1136 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1137 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1139 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
113c : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                                set_stat 0
                       >            load_flag 0
113e : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1140 : 48              >            pha         ;use stack to load status
1141 : 28              >            plp
                        
1142 : ae1702                   ldx abs1  
1145 : 08                       php         ;test stores do not alter flags
1146 : 8a                       txa
1147 : 49c3                     eor #$c3
1149 : aa                       tax
114a : 28                       plp
114b : 860c                     stx zpt  
114d : 08                       php         ;flags after load/store sequence
114e : 49c3                     eor #$c3
1150 : c513                     cmp zp1     ;test result
                                trap_ne
1152 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1154 : 68                       pla         ;load status
                                eor_flag 0
1155 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1157 : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
115a : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
115c : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
115e : 48              >            pha         ;use stack to load status
115f : 28              >            plp
                        
1160 : ae1802                   ldx abs1+1
1163 : 08                       php         ;test stores do not alter flags
1164 : 8a                       txa
1165 : 49c3                     eor #$c3
1167 : aa                       tax
1168 : 28                       plp
1169 : 860d                     stx zpt+1
116b : 08                       php         ;flags after load/store sequence
116c : 49c3                     eor #$c3
116e : c514                     cmp zp1+1   ;test result
                                trap_ne
1170 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1172 : 68                       pla         ;load status
                                eor_flag 0
1173 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1175 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
1178 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
117a : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
117c : 48              >            pha         ;use stack to load status
117d : 28              >            plp
                        
117e : ae1902                   ldx abs1+2
1181 : 08                       php         ;test stores do not alter flags
1182 : 8a                       txa
1183 : 49c3                     eor #$c3
1185 : aa                       tax
1186 : 28                       plp
1187 : 860e                     stx zpt+2
1189 : 08                       php         ;flags after load/store sequence
118a : 49c3                     eor #$c3
118c : c515                     cmp zp1+2   ;test result
                                trap_ne
118e : d0fe            >        bne *           ;failed not equal (non zero)
                        
1190 : 68                       pla         ;load status
                                eor_flag 0
1191 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1193 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
1196 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1198 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
119a : 48              >            pha         ;use stack to load status
119b : 28              >            plp
                        
119c : ae1a02                   ldx abs1+3
119f : 08                       php         ;test stores do not alter flags
11a0 : 8a                       txa
11a1 : 49c3                     eor #$c3
11a3 : aa                       tax
11a4 : 28                       plp
11a5 : 860f                     stx zpt+3
11a7 : 08                       php         ;flags after load/store sequence
11a8 : 49c3                     eor #$c3
11aa : c516                     cmp zp1+3   ;test result
                                trap_ne
11ac : d0fe            >        bne *           ;failed not equal (non zero)
                        
11ae : 68                       pla         ;load status
                                eor_flag 0
11af : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
11b1 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
11b4 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                                set_stat $ff
                       >            load_flag $ff
11b6 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
11b8 : 48              >            pha         ;use stack to load status
11b9 : 28              >            plp
                        
11ba : ae1702                   ldx abs1  
11bd : 08                       php         ;test stores do not alter flags
11be : 8a                       txa
11bf : 49c3                     eor #$c3
11c1 : aa                       tax
11c2 : 28                       plp
11c3 : 860c                     stx zpt  
11c5 : 08                       php         ;flags after load/store sequence
11c6 : 49c3                     eor #$c3
11c8 : aa                       tax
11c9 : e413                     cpx zp1     ;test result
                                trap_ne
11cb : d0fe            >        bne *           ;failed not equal (non zero)
                        
11cd : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
11ce : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
11d0 : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
11d3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
11d5 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
11d7 : 48              >            pha         ;use stack to load status
11d8 : 28              >            plp
                        
11d9 : ae1802                   ldx abs1+1
11dc : 08                       php         ;test stores do not alter flags
11dd : 8a                       txa
11de : 49c3                     eor #$c3
11e0 : aa                       tax
11e1 : 28                       plp
11e2 : 860d                     stx zpt+1
11e4 : 08                       php         ;flags after load/store sequence
11e5 : 49c3                     eor #$c3
11e7 : aa                       tax
11e8 : e414                     cpx zp1+1   ;test result
                                trap_ne
11ea : d0fe            >        bne *           ;failed not equal (non zero)
                        
11ec : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
11ed : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
11ef : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
11f2 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
11f4 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
11f6 : 48              >            pha         ;use stack to load status
11f7 : 28              >            plp
                        
11f8 : ae1902                   ldx abs1+2
11fb : 08                       php         ;test stores do not alter flags
11fc : 8a                       txa
11fd : 49c3                     eor #$c3
11ff : aa                       tax
1200 : 28                       plp
1201 : 860e                     stx zpt+2
1203 : 08                       php         ;flags after load/store sequence
1204 : 49c3                     eor #$c3
1206 : aa                       tax
1207 : e415                     cpx zp1+2   ;test result
                                trap_ne
1209 : d0fe            >        bne *           ;failed not equal (non zero)
                        
120b : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
120c : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
120e : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
1211 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1213 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1215 : 48              >            pha         ;use stack to load status
1216 : 28              >            plp
                        
1217 : ae1a02                   ldx abs1+3
121a : 08                       php         ;test stores do not alter flags
121b : 8a                       txa
121c : 49c3                     eor #$c3
121e : aa                       tax
121f : 28                       plp
1220 : 860f                     stx zpt+3
1222 : 08                       php         ;flags after load/store sequence
1223 : 49c3                     eor #$c3
1225 : aa                       tax
1226 : e416                     cpx zp1+3   ;test result
                                trap_ne
1228 : d0fe            >        bne *           ;failed not equal (non zero)
                        
122a : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
122b : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
122d : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
1230 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                                set_stat 0  
                       >            load_flag 0  
1232 : a900            >            lda #0               ;allow test to change I-flag (no mask)
                       >
1234 : 48              >            pha         ;use stack to load status
1235 : 28              >            plp
                        
1236 : a2c3                     ldx #$c3
1238 : 08                       php
1239 : ec1702                   cpx abs1    ;test result
                                trap_ne
123c : d0fe            >        bne *           ;failed not equal (non zero)
                        
123e : 68                       pla         ;load status
                                eor_flag 0
123f : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1241 : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
1244 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1246 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1248 : 48              >            pha         ;use stack to load status
1249 : 28              >            plp
                        
124a : a282                     ldx #$82
124c : 08                       php
124d : ec1802                   cpx abs1+1  ;test result
                                trap_ne
1250 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1252 : 68                       pla         ;load status
                                eor_flag 0
1253 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1255 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
1258 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
125a : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
125c : 48              >            pha         ;use stack to load status
125d : 28              >            plp
                        
125e : a241                     ldx #$41
1260 : 08                       php
1261 : ec1902                   cpx abs1+2  ;test result
                                trap_ne
1264 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1266 : 68                       pla         ;load status
                                eor_flag 0
1267 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1269 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
126c : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
126e : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1270 : 48              >            pha         ;use stack to load status
1271 : 28              >            plp
                        
1272 : a200                     ldx #0
1274 : 08                       php
1275 : ec1a02                   cpx abs1+3  ;test result
                                trap_ne
1278 : d0fe            >        bne *           ;failed not equal (non zero)
                        
127a : 68                       pla         ;load status
                                eor_flag 0
127b : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
127d : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
1280 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                                set_stat $ff
                       >            load_flag $ff
1282 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1284 : 48              >            pha         ;use stack to load status
1285 : 28              >            plp
                        
1286 : a2c3                     ldx #$c3  
1288 : 08                       php
1289 : ec1702                   cpx abs1    ;test result
                                trap_ne
128c : d0fe            >        bne *           ;failed not equal (non zero)
                        
128e : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
128f : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1291 : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
1294 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1296 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1298 : 48              >            pha         ;use stack to load status
1299 : 28              >            plp
                        
129a : a282                     ldx #$82
129c : 08                       php
129d : ec1802                   cpx abs1+1  ;test result
                                trap_ne
12a0 : d0fe            >        bne *           ;failed not equal (non zero)
                        
12a2 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
12a3 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
12a5 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
12a8 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
12aa : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
12ac : 48              >            pha         ;use stack to load status
12ad : 28              >            plp
                        
12ae : a241                     ldx #$41
12b0 : 08                       php
12b1 : ec1902                   cpx abs1+2  ;test result
                                trap_ne
12b4 : d0fe            >        bne *           ;failed not equal (non zero)
                        
12b6 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
12b7 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
12b9 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
12bc : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
12be : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
12c0 : 48              >            pha         ;use stack to load status
12c1 : 28              >            plp
                        
12c2 : a200                     ldx #0
12c4 : 08                       php
12c5 : ec1a02                   cpx abs1+3  ;test result
                                trap_ne
12c8 : d0fe            >        bne *           ;failed not equal (non zero)
                        
12ca : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
12cb : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
12cd : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
12d0 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
12d2 : a200                     ldx #0
12d4 : a50c                     lda zpt  
12d6 : 49c3                     eor #$c3
12d8 : c513                     cmp zp1  
                                trap_ne     ;store to zp data
12da : d0fe            >        bne *           ;failed not equal (non zero)
                        
12dc : 860c                     stx zpt     ;clear                
12de : ad0302                   lda abst  
12e1 : 49c3                     eor #$c3
12e3 : cd1702                   cmp abs1  
                                trap_ne     ;store to abs data
12e6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
12e8 : 8e0302                   stx abst    ;clear                
12eb : a50d                     lda zpt+1
12ed : 49c3                     eor #$c3
12ef : c514                     cmp zp1+1
                                trap_ne     ;store to zp data
12f1 : d0fe            >        bne *           ;failed not equal (non zero)
                        
12f3 : 860d                     stx zpt+1   ;clear                
12f5 : ad0402                   lda abst+1
12f8 : 49c3                     eor #$c3
12fa : cd1802                   cmp abs1+1
                                trap_ne     ;store to abs data
12fd : d0fe            >        bne *           ;failed not equal (non zero)
                        
12ff : 8e0402                   stx abst+1  ;clear                
1302 : a50e                     lda zpt+2
1304 : 49c3                     eor #$c3
1306 : c515                     cmp zp1+2
                                trap_ne     ;store to zp data
1308 : d0fe            >        bne *           ;failed not equal (non zero)
                        
130a : 860e                     stx zpt+2   ;clear                
130c : ad0502                   lda abst+2
130f : 49c3                     eor #$c3
1311 : cd1902                   cmp abs1+2
                                trap_ne     ;store to abs data
1314 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1316 : 8e0502                   stx abst+2  ;clear                
1319 : a50f                     lda zpt+3
131b : 49c3                     eor #$c3
131d : c516                     cmp zp1+3
                                trap_ne     ;store to zp data
131f : d0fe            >        bne *           ;failed not equal (non zero)
                        
1321 : 860f                     stx zpt+3   ;clear                
1323 : ad0602                   lda abst+3
1326 : 49c3                     eor #$c3
1328 : cd1a02                   cmp abs1+3
                                trap_ne     ;store to abs data
132b : d0fe            >        bne *           ;failed not equal (non zero)
                        
132d : 8e0602                   stx abst+3  ;clear                
                                next_test
1330 : ad0002          >            lda test_case   ;previous test
1333 : c913            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
1335 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0014 =                 >test_num = test_num + 1
1337 : a914            >            lda #test_num   ;*** next tests' number
1339 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; LDY / STY - zp / abs / #
                                set_stat 0
                       >            load_flag 0
133c : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
133e : 48              >            pha         ;use stack to load status
133f : 28              >            plp
                        
1340 : a413                     ldy zp1  
1342 : 08                       php         ;test stores do not alter flags
1343 : 98                       tya
1344 : 49c3                     eor #$c3
1346 : a8                       tay
1347 : 28                       plp
1348 : 8c0302                   sty abst  
134b : 08                       php         ;flags after load/store sequence
134c : 49c3                     eor #$c3
134e : a8                       tay
134f : c0c3                     cpy #$c3    ;test result
                                trap_ne
1351 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1353 : 68                       pla         ;load status
                                eor_flag 0
1354 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1356 : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
1359 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
135b : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
135d : 48              >            pha         ;use stack to load status
135e : 28              >            plp
                        
135f : a414                     ldy zp1+1
1361 : 08                       php         ;test stores do not alter flags
1362 : 98                       tya
1363 : 49c3                     eor #$c3
1365 : a8                       tay
1366 : 28                       plp
1367 : 8c0402                   sty abst+1
136a : 08                       php         ;flags after load/store sequence
136b : 49c3                     eor #$c3
136d : a8                       tay
136e : c082                     cpy #$82    ;test result
                                trap_ne
1370 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1372 : 68                       pla         ;load status
                                eor_flag 0
1373 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1375 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
1378 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
137a : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
137c : 48              >            pha         ;use stack to load status
137d : 28              >            plp
                        
137e : a415                     ldy zp1+2
1380 : 08                       php         ;test stores do not alter flags
1381 : 98                       tya
1382 : 49c3                     eor #$c3
1384 : a8                       tay
1385 : 28                       plp
1386 : 8c0502                   sty abst+2
1389 : 08                       php         ;flags after load/store sequence
138a : 49c3                     eor #$c3
138c : a8                       tay
138d : c041                     cpy #$41    ;test result
                                trap_ne
138f : d0fe            >        bne *           ;failed not equal (non zero)
                        
1391 : 68                       pla         ;load status
                                eor_flag 0
1392 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1394 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
1397 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1399 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
139b : 48              >            pha         ;use stack to load status
139c : 28              >            plp
                        
139d : a416                     ldy zp1+3
139f : 08                       php         ;test stores do not alter flags
13a0 : 98                       tya
13a1 : 49c3                     eor #$c3
13a3 : a8                       tay
13a4 : 28                       plp
13a5 : 8c0602                   sty abst+3
13a8 : 08                       php         ;flags after load/store sequence
13a9 : 49c3                     eor #$c3
13ab : a8                       tay
13ac : c000                     cpy #0      ;test result
                                trap_ne
13ae : d0fe            >        bne *           ;failed not equal (non zero)
                        
13b0 : 68                       pla         ;load status
                                eor_flag 0
13b1 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
13b3 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
13b6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                                set_stat $ff
                       >            load_flag $ff
13b8 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
13ba : 48              >            pha         ;use stack to load status
13bb : 28              >            plp
                        
13bc : a413                     ldy zp1  
13be : 08                       php         ;test stores do not alter flags
13bf : 98                       tya
13c0 : 49c3                     eor #$c3
13c2 : a8                       tay
13c3 : 28                       plp
13c4 : 8c0302                   sty abst  
13c7 : 08                       php         ;flags after load/store sequence
13c8 : 49c3                     eor #$c3
13ca : a8                       tay
13cb : c0c3                     cpy #$c3    ;test result
                                trap_ne
13cd : d0fe            >        bne *           ;failed not equal (non zero)
                        
13cf : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
13d0 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
13d2 : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
13d5 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
13d7 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
13d9 : 48              >            pha         ;use stack to load status
13da : 28              >            plp
                        
13db : a414                     ldy zp1+1
13dd : 08                       php         ;test stores do not alter flags
13de : 98                       tya
13df : 49c3                     eor #$c3
13e1 : a8                       tay
13e2 : 28                       plp
13e3 : 8c0402                   sty abst+1
13e6 : 08                       php         ;flags after load/store sequence
13e7 : 49c3                     eor #$c3
13e9 : a8                       tay
13ea : c082                     cpy #$82   ;test result
                                trap_ne
13ec : d0fe            >        bne *           ;failed not equal (non zero)
                        
13ee : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
13ef : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
13f1 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
13f4 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
13f6 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
13f8 : 48              >            pha         ;use stack to load status
13f9 : 28              >            plp
                        
13fa : a415                     ldy zp1+2
13fc : 08                       php         ;test stores do not alter flags
13fd : 98                       tya
13fe : 49c3                     eor #$c3
1400 : a8                       tay
1401 : 28                       plp
1402 : 8c0502                   sty abst+2
1405 : 08                       php         ;flags after load/store sequence
1406 : 49c3                     eor #$c3
1408 : a8                       tay
1409 : c041                     cpy #$41    ;test result
                                trap_ne
140b : d0fe            >        bne *           ;failed not equal (non zero)
                        
140d : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
140e : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1410 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
1413 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1415 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1417 : 48              >            pha         ;use stack to load status
1418 : 28              >            plp
                        
1419 : a416                     ldy zp1+3
141b : 08                       php         ;test stores do not alter flags
141c : 98                       tya
141d : 49c3                     eor #$c3
141f : a8                       tay
1420 : 28                       plp
1421 : 8c0602                   sty abst+3
1424 : 08                       php         ;flags after load/store sequence
1425 : 49c3                     eor #$c3
1427 : a8                       tay
1428 : c000                     cpy #0      ;test result
                                trap_ne
142a : d0fe            >        bne *           ;failed not equal (non zero)
                        
142c : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
142d : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
142f : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
1432 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                
                                set_stat 0
                       >            load_flag 0
1434 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1436 : 48              >            pha         ;use stack to load status
1437 : 28              >            plp
                        
1438 : ac1702                   ldy abs1  
143b : 08                       php         ;test stores do not alter flags
143c : 98                       tya
143d : 49c3                     eor #$c3
143f : a8                       tay
1440 : 28                       plp
1441 : 840c                     sty zpt  
1443 : 08                       php         ;flags after load/store sequence
1444 : 49c3                     eor #$c3
1446 : a8                       tay
1447 : c413                     cpy zp1     ;test result
                                trap_ne
1449 : d0fe            >        bne *           ;failed not equal (non zero)
                        
144b : 68                       pla         ;load status
                                eor_flag 0
144c : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
144e : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
1451 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1453 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1455 : 48              >            pha         ;use stack to load status
1456 : 28              >            plp
                        
1457 : ac1802                   ldy abs1+1
145a : 08                       php         ;test stores do not alter flags
145b : 98                       tya
145c : 49c3                     eor #$c3
145e : a8                       tay
145f : 28                       plp
1460 : 840d                     sty zpt+1
1462 : 08                       php         ;flags after load/store sequence
1463 : 49c3                     eor #$c3
1465 : a8                       tay
1466 : c414                     cpy zp1+1   ;test result
                                trap_ne
1468 : d0fe            >        bne *           ;failed not equal (non zero)
                        
146a : 68                       pla         ;load status
                                eor_flag 0
146b : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
146d : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
1470 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1472 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1474 : 48              >            pha         ;use stack to load status
1475 : 28              >            plp
                        
1476 : ac1902                   ldy abs1+2
1479 : 08                       php         ;test stores do not alter flags
147a : 98                       tya
147b : 49c3                     eor #$c3
147d : a8                       tay
147e : 28                       plp
147f : 840e                     sty zpt+2
1481 : 08                       php         ;flags after load/store sequence
1482 : 49c3                     eor #$c3
1484 : a8                       tay
1485 : c415                     cpy zp1+2   ;test result
                                trap_ne
1487 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1489 : 68                       pla         ;load status
                                eor_flag 0
148a : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
148c : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
148f : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1491 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1493 : 48              >            pha         ;use stack to load status
1494 : 28              >            plp
                        
1495 : ac1a02                   ldy abs1+3
1498 : 08                       php         ;test stores do not alter flags
1499 : 98                       tya
149a : 49c3                     eor #$c3
149c : a8                       tay
149d : 28                       plp
149e : 840f                     sty zpt+3
14a0 : 08                       php         ;flags after load/store sequence
14a1 : 49c3                     eor #$c3
14a3 : a8                       tay
14a4 : c416                     cpy zp1+3   ;test result
                                trap_ne
14a6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
14a8 : 68                       pla         ;load status
                                eor_flag 0
14a9 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
14ab : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
14ae : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                                set_stat $ff
                       >            load_flag $ff
14b0 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
14b2 : 48              >            pha         ;use stack to load status
14b3 : 28              >            plp
                        
14b4 : ac1702                   ldy abs1  
14b7 : 08                       php         ;test stores do not alter flags
14b8 : 98                       tya
14b9 : 49c3                     eor #$c3
14bb : a8                       tay
14bc : 28                       plp
14bd : 840c                     sty zpt  
14bf : 08                       php         ;flags after load/store sequence
14c0 : 49c3                     eor #$c3
14c2 : a8                       tay
14c3 : c513                     cmp zp1     ;test result
                                trap_ne
14c5 : d0fe            >        bne *           ;failed not equal (non zero)
                        
14c7 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
14c8 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
14ca : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
14cd : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
14cf : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
14d1 : 48              >            pha         ;use stack to load status
14d2 : 28              >            plp
                        
14d3 : ac1802                   ldy abs1+1
14d6 : 08                       php         ;test stores do not alter flags
14d7 : 98                       tya
14d8 : 49c3                     eor #$c3
14da : a8                       tay
14db : 28                       plp
14dc : 840d                     sty zpt+1
14de : 08                       php         ;flags after load/store sequence
14df : 49c3                     eor #$c3
14e1 : a8                       tay
14e2 : c514                     cmp zp1+1   ;test result
                                trap_ne
14e4 : d0fe            >        bne *           ;failed not equal (non zero)
                        
14e6 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
14e7 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
14e9 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
14ec : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
14ee : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
14f0 : 48              >            pha         ;use stack to load status
14f1 : 28              >            plp
                        
14f2 : ac1902                   ldy abs1+2
14f5 : 08                       php         ;test stores do not alter flags
14f6 : 98                       tya
14f7 : 49c3                     eor #$c3
14f9 : a8                       tay
14fa : 28                       plp
14fb : 840e                     sty zpt+2
14fd : 08                       php         ;flags after load/store sequence
14fe : 49c3                     eor #$c3
1500 : a8                       tay
1501 : c515                     cmp zp1+2   ;test result
                                trap_ne
1503 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1505 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1506 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1508 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
150b : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
150d : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
150f : 48              >            pha         ;use stack to load status
1510 : 28              >            plp
                        
1511 : ac1a02                   ldy abs1+3
1514 : 08                       php         ;test stores do not alter flags
1515 : 98                       tya
1516 : 49c3                     eor #$c3
1518 : a8                       tay
1519 : 28                       plp
151a : 840f                     sty zpt+3
151c : 08                       php         ;flags after load/store sequence
151d : 49c3                     eor #$c3
151f : a8                       tay
1520 : c516                     cmp zp1+3   ;test result
                                trap_ne
1522 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1524 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1525 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1527 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
152a : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                        
                                set_stat 0
                       >            load_flag 0
152c : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
152e : 48              >            pha         ;use stack to load status
152f : 28              >            plp
                        
1530 : a0c3                     ldy #$c3  
1532 : 08                       php
1533 : cc1702                   cpy abs1    ;test result
                                trap_ne
1536 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1538 : 68                       pla         ;load status
                                eor_flag 0
1539 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
153b : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
153e : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1540 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1542 : 48              >            pha         ;use stack to load status
1543 : 28              >            plp
                        
1544 : a082                     ldy #$82
1546 : 08                       php
1547 : cc1802                   cpy abs1+1  ;test result
                                trap_ne
154a : d0fe            >        bne *           ;failed not equal (non zero)
                        
154c : 68                       pla         ;load status
                                eor_flag 0
154d : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
154f : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
1552 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1554 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1556 : 48              >            pha         ;use stack to load status
1557 : 28              >            plp
                        
1558 : a041                     ldy #$41
155a : 08                       php
155b : cc1902                   cpy abs1+2  ;test result
                                trap_ne
155e : d0fe            >        bne *           ;failed not equal (non zero)
                        
1560 : 68                       pla         ;load status
                                eor_flag 0
1561 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1563 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
1566 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1568 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
156a : 48              >            pha         ;use stack to load status
156b : 28              >            plp
                        
156c : a000                     ldy #0
156e : 08                       php
156f : cc1a02                   cpy abs1+3  ;test result
                                trap_ne
1572 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1574 : 68                       pla         ;load status
                                eor_flag 0
1575 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1577 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
157a : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                                set_stat $ff
                       >            load_flag $ff
157c : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
157e : 48              >            pha         ;use stack to load status
157f : 28              >            plp
                        
1580 : a0c3                     ldy #$c3  
1582 : 08                       php
1583 : cc1702                   cpy abs1    ;test result
                                trap_ne
1586 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1588 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1589 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
158b : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
158e : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1590 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1592 : 48              >            pha         ;use stack to load status
1593 : 28              >            plp
                        
1594 : a082                     ldy #$82
1596 : 08                       php
1597 : cc1802                   cpy abs1+1  ;test result
                                trap_ne
159a : d0fe            >        bne *           ;failed not equal (non zero)
                        
159c : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
159d : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
159f : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
15a2 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
15a4 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
15a6 : 48              >            pha         ;use stack to load status
15a7 : 28              >            plp
                        
15a8 : a041                     ldy #$41
15aa : 08                       php
15ab : cc1902                   cpy abs1+2   ;test result
                                trap_ne
15ae : d0fe            >        bne *           ;failed not equal (non zero)
                        
15b0 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
15b1 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
15b3 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
15b6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
15b8 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
15ba : 48              >            pha         ;use stack to load status
15bb : 28              >            plp
                        
15bc : a000                     ldy #0
15be : 08                       php
15bf : cc1a02                   cpy abs1+3  ;test result
                                trap_ne
15c2 : d0fe            >        bne *           ;failed not equal (non zero)
                        
15c4 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
15c5 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
15c7 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
15ca : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                
15cc : a000                     ldy #0
15ce : a50c                     lda zpt  
15d0 : 49c3                     eor #$c3
15d2 : c513                     cmp zp1  
                                trap_ne     ;store to zp   data
15d4 : d0fe            >        bne *           ;failed not equal (non zero)
                        
15d6 : 840c                     sty zpt     ;clear                
15d8 : ad0302                   lda abst  
15db : 49c3                     eor #$c3
15dd : cd1702                   cmp abs1  
                                trap_ne     ;store to abs   data
15e0 : d0fe            >        bne *           ;failed not equal (non zero)
                        
15e2 : 8c0302                   sty abst    ;clear                
15e5 : a50d                     lda zpt+1
15e7 : 49c3                     eor #$c3
15e9 : c514                     cmp zp1+1
                                trap_ne     ;store to zp+1 data
15eb : d0fe            >        bne *           ;failed not equal (non zero)
                        
15ed : 840d                     sty zpt+1   ;clear                
15ef : ad0402                   lda abst+1
15f2 : 49c3                     eor #$c3
15f4 : cd1802                   cmp abs1+1
                                trap_ne     ;store to abs+1 data
15f7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
15f9 : 8c0402                   sty abst+1  ;clear                
15fc : a50e                     lda zpt+2
15fe : 49c3                     eor #$c3
1600 : c515                     cmp zp1+2
                                trap_ne     ;store to zp+2 data
1602 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1604 : 840e                     sty zpt+2   ;clear                
1606 : ad0502                   lda abst+2
1609 : 49c3                     eor #$c3
160b : cd1902                   cmp abs1+2
                                trap_ne     ;store to abs+2 data
160e : d0fe            >        bne *           ;failed not equal (non zero)
                        
1610 : 8c0502                   sty abst+2  ;clear                
1613 : a50f                     lda zpt+3
1615 : 49c3                     eor #$c3
1617 : c516                     cmp zp1+3
                                trap_ne     ;store to zp+3 data
1619 : d0fe            >        bne *           ;failed not equal (non zero)
                        
161b : 840f                     sty zpt+3   ;clear                
161d : ad0602                   lda abst+3
1620 : 49c3                     eor #$c3
1622 : cd1a02                   cmp abs1+3
                                trap_ne     ;store to abs+3 data
1625 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1627 : 8c0602                   sty abst+3  ;clear                
                                next_test
162a : ad0002          >            lda test_case   ;previous test
162d : c914            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
162f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0015 =                 >test_num = test_num + 1
1631 : a915            >            lda #test_num   ;*** next tests' number
1633 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; testing load / store accumulator LDA / STA all addressing modes
                        ; LDA / STA - zp,x / abs,x
1636 : a203                     ldx #3
1638 :                  tldax    
                                set_stat 0
                       >            load_flag 0
1638 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
163a : 48              >            pha         ;use stack to load status
163b : 28              >            plp
                        
163c : b513                     lda zp1,x
163e : 08                       php         ;test stores do not alter flags
163f : 49c3                     eor #$c3
1641 : 28                       plp
1642 : 9d0302                   sta abst,x
1645 : 08                       php         ;flags after load/store sequence
1646 : 49c3                     eor #$c3
1648 : dd1702                   cmp abs1,x  ;test result
                                trap_ne
164b : d0fe            >        bne *           ;failed not equal (non zero)
                        
164d : 68                       pla         ;load status
                                eor_flag 0
164e : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1650 : dd1c02                   cmp fLDx,x  ;test flags
                                trap_ne
1653 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1655 : ca                       dex
1656 : 10e0                     bpl tldax                  
                        
1658 : a203                     ldx #3
165a :                  tldax1   
                                set_stat $ff
                       >            load_flag $ff
165a : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
165c : 48              >            pha         ;use stack to load status
165d : 28              >            plp
                        
165e : b513                     lda zp1,x
1660 : 08                       php         ;test stores do not alter flags
1661 : 49c3                     eor #$c3
1663 : 28                       plp
1664 : 9d0302                   sta abst,x
1667 : 08                       php         ;flags after load/store sequence
1668 : 49c3                     eor #$c3
166a : dd1702                   cmp abs1,x   ;test result
                                trap_ne
166d : d0fe            >        bne *           ;failed not equal (non zero)
                        
166f : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1670 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1672 : dd1c02                   cmp fLDx,x  ;test flags
                                trap_ne
1675 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1677 : ca                       dex
1678 : 10e0                     bpl tldax1                  
                        
167a : a203                     ldx #3
167c :                  tldax2   
                                set_stat 0
                       >            load_flag 0
167c : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
167e : 48              >            pha         ;use stack to load status
167f : 28              >            plp
                        
1680 : bd1702                   lda abs1,x
1683 : 08                       php         ;test stores do not alter flags
1684 : 49c3                     eor #$c3
1686 : 28                       plp
1687 : 950c                     sta zpt,x
1689 : 08                       php         ;flags after load/store sequence
168a : 49c3                     eor #$c3
168c : d513                     cmp zp1,x   ;test result
                                trap_ne
168e : d0fe            >        bne *           ;failed not equal (non zero)
                        
1690 : 68                       pla         ;load status
                                eor_flag 0
1691 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1693 : dd1c02                   cmp fLDx,x  ;test flags
                                trap_ne
1696 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1698 : ca                       dex
1699 : 10e1                     bpl tldax2                  
                        
169b : a203                     ldx #3
169d :                  tldax3
                                set_stat $ff
                       >            load_flag $ff
169d : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
169f : 48              >            pha         ;use stack to load status
16a0 : 28              >            plp
                        
16a1 : bd1702                   lda abs1,x
16a4 : 08                       php         ;test stores do not alter flags
16a5 : 49c3                     eor #$c3
16a7 : 28                       plp
16a8 : 950c                     sta zpt,x
16aa : 08                       php         ;flags after load/store sequence
16ab : 49c3                     eor #$c3
16ad : d513                     cmp zp1,x   ;test result
                                trap_ne
16af : d0fe            >        bne *           ;failed not equal (non zero)
                        
16b1 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
16b2 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
16b4 : dd1c02                   cmp fLDx,x  ;test flags
                                trap_ne
16b7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
16b9 : ca                       dex
16ba : 10e1                     bpl tldax3
                        
16bc : a203                     ldx #3      ;testing store result
16be : a000                     ldy #0
16c0 : b50c             tstax   lda zpt,x
16c2 : 49c3                     eor #$c3
16c4 : d513                     cmp zp1,x
                                trap_ne     ;store to zp,x data
16c6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
16c8 : 940c                     sty zpt,x   ;clear                
16ca : bd0302                   lda abst,x
16cd : 49c3                     eor #$c3
16cf : dd1702                   cmp abs1,x
                                trap_ne     ;store to abs,x data
16d2 : d0fe            >        bne *           ;failed not equal (non zero)
                        
16d4 : 8a                       txa
16d5 : 9d0302                   sta abst,x  ;clear                
16d8 : ca                       dex
16d9 : 10e5                     bpl tstax
                                next_test
16db : ad0002          >            lda test_case   ;previous test
16de : c915            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
16e0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0016 =                 >test_num = test_num + 1
16e2 : a916            >            lda #test_num   ;*** next tests' number
16e4 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; LDA / STA - (zp),y / abs,y / (zp,x)
16e7 : a003                     ldy #3
16e9 :                  tlday    
                                set_stat 0
                       >            load_flag 0
16e9 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
16eb : 48              >            pha         ;use stack to load status
16ec : 28              >            plp
                        
16ed : b124                     lda (ind1),y
16ef : 08                       php         ;test stores do not alter flags
16f0 : 49c3                     eor #$c3
16f2 : 28                       plp
16f3 : 990302                   sta abst,y
16f6 : 08                       php         ;flags after load/store sequence
16f7 : 49c3                     eor #$c3
16f9 : d91702                   cmp abs1,y  ;test result
                                trap_ne
16fc : d0fe            >        bne *           ;failed not equal (non zero)
                        
16fe : 68                       pla         ;load status
                                eor_flag 0
16ff : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1701 : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
1704 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1706 : 88                       dey
1707 : 10e0                     bpl tlday                  
                        
1709 : a003                     ldy #3
170b :                  tlday1   
                                set_stat $ff
                       >            load_flag $ff
170b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
170d : 48              >            pha         ;use stack to load status
170e : 28              >            plp
                        
170f : b124                     lda (ind1),y
1711 : 08                       php         ;test stores do not alter flags
1712 : 49c3                     eor #$c3
1714 : 28                       plp
1715 : 990302                   sta abst,y
1718 : 08                       php         ;flags after load/store sequence
1719 : 49c3                     eor #$c3
171b : d91702                   cmp abs1,y  ;test result
                                trap_ne
171e : d0fe            >        bne *           ;failed not equal (non zero)
                        
1720 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1721 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1723 : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
1726 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1728 : 88                       dey
1729 : 10e0                     bpl tlday1                  
                        
172b : a003                     ldy #3      ;testing store result
172d : a200                     ldx #0
172f : b90302           tstay   lda abst,y
1732 : 49c3                     eor #$c3
1734 : d91702                   cmp abs1,y
                                trap_ne     ;store to abs data
1737 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1739 : 8a                       txa
173a : 990302                   sta abst,y  ;clear                
173d : 88                       dey
173e : 10ef                     bpl tstay
                        
1740 : a003                     ldy #3
1742 :                  tlday2   
                                set_stat 0
                       >            load_flag 0
1742 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1744 : 48              >            pha         ;use stack to load status
1745 : 28              >            plp
                        
1746 : b91702                   lda abs1,y
1749 : 08                       php         ;test stores do not alter flags
174a : 49c3                     eor #$c3
174c : 28                       plp
174d : 9130                     sta (indt),y
174f : 08                       php         ;flags after load/store sequence
1750 : 49c3                     eor #$c3
1752 : d124                     cmp (ind1),y    ;test result
                                trap_ne
1754 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1756 : 68                       pla         ;load status
                                eor_flag 0
1757 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1759 : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
175c : d0fe            >        bne *           ;failed not equal (non zero)
                        
175e : 88                       dey
175f : 10e1                     bpl tlday2                  
                        
1761 : a003                     ldy #3
1763 :                  tlday3   
                                set_stat $ff
                       >            load_flag $ff
1763 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1765 : 48              >            pha         ;use stack to load status
1766 : 28              >            plp
                        
1767 : b91702                   lda abs1,y
176a : 08                       php         ;test stores do not alter flags
176b : 49c3                     eor #$c3
176d : 28                       plp
176e : 9130                     sta (indt),y
1770 : 08                       php         ;flags after load/store sequence
1771 : 49c3                     eor #$c3
1773 : d124                     cmp (ind1),y   ;test result
                                trap_ne
1775 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1777 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1778 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
177a : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
177d : d0fe            >        bne *           ;failed not equal (non zero)
                        
177f : 88                       dey
1780 : 10e1                     bpl tlday3
                                
1782 : a003                     ldy #3      ;testing store result
1784 : a200                     ldx #0
1786 : b90302           tstay1  lda abst,y
1789 : 49c3                     eor #$c3
178b : d91702                   cmp abs1,y
                                trap_ne     ;store to abs data
178e : d0fe            >        bne *           ;failed not equal (non zero)
                        
1790 : 8a                       txa
1791 : 990302                   sta abst,y  ;clear                
1794 : 88                       dey
1795 : 10ef                     bpl tstay1
                                
1797 : a206                     ldx #6
1799 : a003                     ldy #3
179b :                  tldax4   
                                set_stat 0
                       >            load_flag 0
179b : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
179d : 48              >            pha         ;use stack to load status
179e : 28              >            plp
                        
179f : a124                     lda (ind1,x)
17a1 : 08                       php         ;test stores do not alter flags
17a2 : 49c3                     eor #$c3
17a4 : 28                       plp
17a5 : 8130                     sta (indt,x)
17a7 : 08                       php         ;flags after load/store sequence
17a8 : 49c3                     eor #$c3
17aa : d91702                   cmp abs1,y  ;test result
                                trap_ne
17ad : d0fe            >        bne *           ;failed not equal (non zero)
                        
17af : 68                       pla         ;load status
                                eor_flag 0
17b0 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
17b2 : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
17b5 : d0fe            >        bne *           ;failed not equal (non zero)
                        
17b7 : ca                       dex
17b8 : ca                       dex
17b9 : 88                       dey
17ba : 10df                     bpl tldax4                  
                        
17bc : a206                     ldx #6
17be : a003                     ldy #3
17c0 :                  tldax5
                                set_stat $ff
                       >            load_flag $ff
17c0 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
17c2 : 48              >            pha         ;use stack to load status
17c3 : 28              >            plp
                        
17c4 : a124                     lda (ind1,x)
17c6 : 08                       php         ;test stores do not alter flags
17c7 : 49c3                     eor #$c3
17c9 : 28                       plp
17ca : 8130                     sta (indt,x)
17cc : 08                       php         ;flags after load/store sequence
17cd : 49c3                     eor #$c3
17cf : d91702                   cmp abs1,y  ;test result
                                trap_ne
17d2 : d0fe            >        bne *           ;failed not equal (non zero)
                        
17d4 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
17d5 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
17d7 : d91c02                   cmp fLDx,y  ;test flags
                                trap_ne
17da : d0fe            >        bne *           ;failed not equal (non zero)
                        
17dc : ca                       dex
17dd : ca                       dex
17de : 88                       dey
17df : 10df                     bpl tldax5
                        
17e1 : a003                     ldy #3      ;testing store result
17e3 : a200                     ldx #0
17e5 : b90302           tstay2  lda abst,y
17e8 : 49c3                     eor #$c3
17ea : d91702                   cmp abs1,y
                                trap_ne     ;store to abs data
17ed : d0fe            >        bne *           ;failed not equal (non zero)
                        
17ef : 8a                       txa
17f0 : 990302                   sta abst,y  ;clear                
17f3 : 88                       dey
17f4 : 10ef                     bpl tstay2
                                next_test
17f6 : ad0002          >            lda test_case   ;previous test
17f9 : c916            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
17fb : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0017 =                 >test_num = test_num + 1
17fd : a917            >            lda #test_num   ;*** next tests' number
17ff : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; indexed wraparound test (only zp should wrap)
1802 : a2fd                     ldx #3+$fa
1804 : b519             tldax6  lda zp1-$fa&$ff,x   ;wrap on indexed zp
1806 : 9d0901                   sta abst-$fa,x      ;no STX abs,x!
1809 : ca                       dex
180a : e0fa                     cpx #$fa
180c : b0f6                     bcs tldax6                  
180e : a2fd                     ldx #3+$fa
1810 : bd1d01           tldax7  lda abs1-$fa,x      ;no wrap on indexed abs
1813 : 9512                     sta zpt-$fa&$ff,x
1815 : ca                       dex
1816 : e0fa                     cpx #$fa
1818 : b0f6                     bcs tldax7
                                                  
181a : a203                     ldx #3      ;testing wraparound result
181c : a000                     ldy #0
181e : b50c             tstax1  lda zpt,x
1820 : d513                     cmp zp1,x
                                trap_ne     ;store to zp,x data
1822 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1824 : 940c                     sty zpt,x   ;clear                
1826 : bd0302                   lda abst,x
1829 : dd1702                   cmp abs1,x
                                trap_ne     ;store to abs,x data
182c : d0fe            >        bne *           ;failed not equal (non zero)
                        
182e : 8a                       txa
182f : 9d0302                   sta abst,x  ;clear                
1832 : ca                       dex
1833 : 10e9                     bpl tstax1
                        
1835 : a0fb                     ldy #3+$f8
1837 : a2fe                     ldx #6+$f8
1839 : a12c             tlday4  lda (ind1-$f8&$ff,x) ;wrap on indexed zp indirect
183b : 990b01                   sta abst-$f8,y
183e : ca                       dex
183f : ca                       dex
1840 : 88                       dey
1841 : c0f8                     cpy #$f8
1843 : b0f4                     bcs tlday4
1845 : a003                     ldy #3      ;testing wraparound result
1847 : a200                     ldx #0
1849 : b90302           tstay4  lda abst,y
184c : d91702                   cmp abs1,y
                                trap_ne     ;store to abs data
184f : d0fe            >        bne *           ;failed not equal (non zero)
                        
1851 : 8a                       txa
1852 : 990302                   sta abst,y  ;clear                
1855 : 88                       dey
1856 : 10f1                     bpl tstay4
                                
1858 : a0fb                     ldy #3+$f8
185a : b91f01           tlday5  lda abs1-$f8,y  ;no wrap on indexed abs
185d : 9138                     sta (inwt),y
185f : 88                       dey
1860 : c0f8                     cpy #$f8
1862 : b0f6                     bcs tlday5                  
1864 : a003                     ldy #3      ;testing wraparound result
1866 : a200                     ldx #0
1868 : b90302           tstay5  lda abst,y
186b : d91702                   cmp abs1,y
                                trap_ne     ;store to abs data
186e : d0fe            >        bne *           ;failed not equal (non zero)
                        
1870 : 8a                       txa
1871 : 990302                   sta abst,y  ;clear                
1874 : 88                       dey
1875 : 10f1                     bpl tstay5
                        
1877 : a0fb                     ldy #3+$f8
1879 : a2fe                     ldx #6+$f8
187b : b12e             tlday6  lda (inw1),y    ;no wrap on zp indirect indexed 
187d : 8138                     sta (indt-$f8&$ff,x)
187f : ca                       dex
1880 : ca                       dex
1881 : 88                       dey
1882 : c0f8                     cpy #$f8
1884 : b0f5                     bcs tlday6
1886 : a003                     ldy #3      ;testing wraparound result
1888 : a200                     ldx #0
188a : b90302           tstay6  lda abst,y
188d : d91702                   cmp abs1,y
                                trap_ne     ;store to abs data
1890 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1892 : 8a                       txa
1893 : 990302                   sta abst,y  ;clear                
1896 : 88                       dey
1897 : 10f1                     bpl tstay6
                                next_test
1899 : ad0002          >            lda test_case   ;previous test
189c : c917            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
189e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0018 =                 >test_num = test_num + 1
18a0 : a918            >            lda #test_num   ;*** next tests' number
18a2 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; LDA / STA - zp / abs / #
                                set_stat 0  
                       >            load_flag 0  
18a5 : a900            >            lda #0               ;allow test to change I-flag (no mask)
                       >
18a7 : 48              >            pha         ;use stack to load status
18a8 : 28              >            plp
                        
18a9 : a513                     lda zp1
18ab : 08                       php         ;test stores do not alter flags
18ac : 49c3                     eor #$c3
18ae : 28                       plp
18af : 8d0302                   sta abst
18b2 : 08                       php         ;flags after load/store sequence
18b3 : 49c3                     eor #$c3
18b5 : c9c3                     cmp #$c3    ;test result
                                trap_ne
18b7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
18b9 : 68                       pla         ;load status
                                eor_flag 0
18ba : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
18bc : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
18bf : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
18c1 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
18c3 : 48              >            pha         ;use stack to load status
18c4 : 28              >            plp
                        
18c5 : a514                     lda zp1+1
18c7 : 08                       php         ;test stores do not alter flags
18c8 : 49c3                     eor #$c3
18ca : 28                       plp
18cb : 8d0402                   sta abst+1
18ce : 08                       php         ;flags after load/store sequence
18cf : 49c3                     eor #$c3
18d1 : c982                     cmp #$82    ;test result
                                trap_ne
18d3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
18d5 : 68                       pla         ;load status
                                eor_flag 0
18d6 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
18d8 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
18db : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
18dd : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
18df : 48              >            pha         ;use stack to load status
18e0 : 28              >            plp
                        
18e1 : a515                     lda zp1+2
18e3 : 08                       php         ;test stores do not alter flags
18e4 : 49c3                     eor #$c3
18e6 : 28                       plp
18e7 : 8d0502                   sta abst+2
18ea : 08                       php         ;flags after load/store sequence
18eb : 49c3                     eor #$c3
18ed : c941                     cmp #$41    ;test result
                                trap_ne
18ef : d0fe            >        bne *           ;failed not equal (non zero)
                        
18f1 : 68                       pla         ;load status
                                eor_flag 0
18f2 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
18f4 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
18f7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
18f9 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
18fb : 48              >            pha         ;use stack to load status
18fc : 28              >            plp
                        
18fd : a516                     lda zp1+3
18ff : 08                       php         ;test stores do not alter flags
1900 : 49c3                     eor #$c3
1902 : 28                       plp
1903 : 8d0602                   sta abst+3
1906 : 08                       php         ;flags after load/store sequence
1907 : 49c3                     eor #$c3
1909 : c900                     cmp #0      ;test result
                                trap_ne
190b : d0fe            >        bne *           ;failed not equal (non zero)
                        
190d : 68                       pla         ;load status
                                eor_flag 0
190e : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1910 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
1913 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1915 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1917 : 48              >            pha         ;use stack to load status
1918 : 28              >            plp
                        
1919 : a513                     lda zp1  
191b : 08                       php         ;test stores do not alter flags
191c : 49c3                     eor #$c3
191e : 28                       plp
191f : 8d0302                   sta abst  
1922 : 08                       php         ;flags after load/store sequence
1923 : 49c3                     eor #$c3
1925 : c9c3                     cmp #$c3    ;test result
                                trap_ne
1927 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1929 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
192a : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
192c : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
192f : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1931 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1933 : 48              >            pha         ;use stack to load status
1934 : 28              >            plp
                        
1935 : a514                     lda zp1+1
1937 : 08                       php         ;test stores do not alter flags
1938 : 49c3                     eor #$c3
193a : 28                       plp
193b : 8d0402                   sta abst+1
193e : 08                       php         ;flags after load/store sequence
193f : 49c3                     eor #$c3
1941 : c982                     cmp #$82    ;test result
                                trap_ne
1943 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1945 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1946 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1948 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
194b : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
194d : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
194f : 48              >            pha         ;use stack to load status
1950 : 28              >            plp
                        
1951 : a515                     lda zp1+2
1953 : 08                       php         ;test stores do not alter flags
1954 : 49c3                     eor #$c3
1956 : 28                       plp
1957 : 8d0502                   sta abst+2
195a : 08                       php         ;flags after load/store sequence
195b : 49c3                     eor #$c3
195d : c941                     cmp #$41    ;test result
                                trap_ne
195f : d0fe            >        bne *           ;failed not equal (non zero)
                        
1961 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1962 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1964 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
1967 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1969 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
196b : 48              >            pha         ;use stack to load status
196c : 28              >            plp
                        
196d : a516                     lda zp1+3
196f : 08                       php         ;test stores do not alter flags
1970 : 49c3                     eor #$c3
1972 : 28                       plp
1973 : 8d0602                   sta abst+3
1976 : 08                       php         ;flags after load/store sequence
1977 : 49c3                     eor #$c3
1979 : c900                     cmp #0      ;test result
                                trap_ne
197b : d0fe            >        bne *           ;failed not equal (non zero)
                        
197d : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
197e : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1980 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
1983 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1985 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1987 : 48              >            pha         ;use stack to load status
1988 : 28              >            plp
                        
1989 : ad1702                   lda abs1  
198c : 08                       php         ;test stores do not alter flags
198d : 49c3                     eor #$c3
198f : 28                       plp
1990 : 850c                     sta zpt  
1992 : 08                       php         ;flags after load/store sequence
1993 : 49c3                     eor #$c3
1995 : c513                     cmp zp1     ;test result
                                trap_ne
1997 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1999 : 68                       pla         ;load status
                                eor_flag 0
199a : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
199c : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
199f : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
19a1 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
19a3 : 48              >            pha         ;use stack to load status
19a4 : 28              >            plp
                        
19a5 : ad1802                   lda abs1+1
19a8 : 08                       php         ;test stores do not alter flags
19a9 : 49c3                     eor #$c3
19ab : 28                       plp
19ac : 850d                     sta zpt+1
19ae : 08                       php         ;flags after load/store sequence
19af : 49c3                     eor #$c3
19b1 : c514                     cmp zp1+1   ;test result
                                trap_ne
19b3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
19b5 : 68                       pla         ;load status
                                eor_flag 0
19b6 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
19b8 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
19bb : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
19bd : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
19bf : 48              >            pha         ;use stack to load status
19c0 : 28              >            plp
                        
19c1 : ad1902                   lda abs1+2
19c4 : 08                       php         ;test stores do not alter flags
19c5 : 49c3                     eor #$c3
19c7 : 28                       plp
19c8 : 850e                     sta zpt+2
19ca : 08                       php         ;flags after load/store sequence
19cb : 49c3                     eor #$c3
19cd : c515                     cmp zp1+2   ;test result
                                trap_ne
19cf : d0fe            >        bne *           ;failed not equal (non zero)
                        
19d1 : 68                       pla         ;load status
                                eor_flag 0
19d2 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
19d4 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
19d7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
19d9 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
19db : 48              >            pha         ;use stack to load status
19dc : 28              >            plp
                        
19dd : ad1a02                   lda abs1+3
19e0 : 08                       php         ;test stores do not alter flags
19e1 : 49c3                     eor #$c3
19e3 : 28                       plp
19e4 : 850f                     sta zpt+3
19e6 : 08                       php         ;flags after load/store sequence
19e7 : 49c3                     eor #$c3
19e9 : c516                     cmp zp1+3   ;test result
                                trap_ne
19eb : d0fe            >        bne *           ;failed not equal (non zero)
                        
19ed : 68                       pla         ;load status
                                eor_flag 0
19ee : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
19f0 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
19f3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
19f5 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
19f7 : 48              >            pha         ;use stack to load status
19f8 : 28              >            plp
                        
19f9 : ad1702                   lda abs1  
19fc : 08                       php         ;test stores do not alter flags
19fd : 49c3                     eor #$c3
19ff : 28                       plp
1a00 : 850c                     sta zpt  
1a02 : 08                       php         ;flags after load/store sequence
1a03 : 49c3                     eor #$c3
1a05 : c513                     cmp zp1     ;test result
                                trap_ne
1a07 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1a09 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1a0a : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1a0c : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
1a0f : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1a11 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1a13 : 48              >            pha         ;use stack to load status
1a14 : 28              >            plp
                        
1a15 : ad1802                   lda abs1+1
1a18 : 08                       php         ;test stores do not alter flags
1a19 : 49c3                     eor #$c3
1a1b : 28                       plp
1a1c : 850d                     sta zpt+1
1a1e : 08                       php         ;flags after load/store sequence
1a1f : 49c3                     eor #$c3
1a21 : c514                     cmp zp1+1   ;test result
                                trap_ne
1a23 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1a25 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1a26 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1a28 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
1a2b : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1a2d : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1a2f : 48              >            pha         ;use stack to load status
1a30 : 28              >            plp
                        
1a31 : ad1902                   lda abs1+2
1a34 : 08                       php         ;test stores do not alter flags
1a35 : 49c3                     eor #$c3
1a37 : 28                       plp
1a38 : 850e                     sta zpt+2
1a3a : 08                       php         ;flags after load/store sequence
1a3b : 49c3                     eor #$c3
1a3d : c515                     cmp zp1+2   ;test result
                                trap_ne
1a3f : d0fe            >        bne *           ;failed not equal (non zero)
                        
1a41 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1a42 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1a44 : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
1a47 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1a49 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1a4b : 48              >            pha         ;use stack to load status
1a4c : 28              >            plp
                        
1a4d : ad1a02                   lda abs1+3
1a50 : 08                       php         ;test stores do not alter flags
1a51 : 49c3                     eor #$c3
1a53 : 28                       plp
1a54 : 850f                     sta zpt+3
1a56 : 08                       php         ;flags after load/store sequence
1a57 : 49c3                     eor #$c3
1a59 : c516                     cmp zp1+3   ;test result
                                trap_ne
1a5b : d0fe            >        bne *           ;failed not equal (non zero)
                        
1a5d : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1a5e : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1a60 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
1a63 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0  
                       >            load_flag 0  
1a65 : a900            >            lda #0               ;allow test to change I-flag (no mask)
                       >
1a67 : 48              >            pha         ;use stack to load status
1a68 : 28              >            plp
                        
1a69 : a9c3                     lda #$c3
1a6b : 08                       php
1a6c : cd1702                   cmp abs1    ;test result
                                trap_ne
1a6f : d0fe            >        bne *           ;failed not equal (non zero)
                        
1a71 : 68                       pla         ;load status
                                eor_flag 0
1a72 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1a74 : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
1a77 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1a79 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1a7b : 48              >            pha         ;use stack to load status
1a7c : 28              >            plp
                        
1a7d : a982                     lda #$82
1a7f : 08                       php
1a80 : cd1802                   cmp abs1+1  ;test result
                                trap_ne
1a83 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1a85 : 68                       pla         ;load status
                                eor_flag 0
1a86 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1a88 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
1a8b : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1a8d : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1a8f : 48              >            pha         ;use stack to load status
1a90 : 28              >            plp
                        
1a91 : a941                     lda #$41
1a93 : 08                       php
1a94 : cd1902                   cmp abs1+2  ;test result
                                trap_ne
1a97 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1a99 : 68                       pla         ;load status
                                eor_flag 0
1a9a : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1a9c : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
1a9f : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat 0
                       >            load_flag 0
1aa1 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1aa3 : 48              >            pha         ;use stack to load status
1aa4 : 28              >            plp
                        
1aa5 : a900                     lda #0
1aa7 : 08                       php
1aa8 : cd1a02                   cmp abs1+3  ;test result
                                trap_ne
1aab : d0fe            >        bne *           ;failed not equal (non zero)
                        
1aad : 68                       pla         ;load status
                                eor_flag 0
1aae : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                        
1ab0 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
1ab3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
                                set_stat $ff
                       >            load_flag $ff
1ab5 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1ab7 : 48              >            pha         ;use stack to load status
1ab8 : 28              >            plp
                        
1ab9 : a9c3                     lda #$c3  
1abb : 08                       php
1abc : cd1702                   cmp abs1    ;test result
                                trap_ne
1abf : d0fe            >        bne *           ;failed not equal (non zero)
                        
1ac1 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1ac2 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1ac4 : cd1c02                   cmp fLDx    ;test flags
                                trap_ne
1ac7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1ac9 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1acb : 48              >            pha         ;use stack to load status
1acc : 28              >            plp
                        
1acd : a982                     lda #$82
1acf : 08                       php
1ad0 : cd1802                   cmp abs1+1  ;test result
                                trap_ne
1ad3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1ad5 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1ad6 : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1ad8 : cd1d02                   cmp fLDx+1  ;test flags
                                trap_ne
1adb : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1add : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1adf : 48              >            pha         ;use stack to load status
1ae0 : 28              >            plp
                        
1ae1 : a941                     lda #$41
1ae3 : 08                       php
1ae4 : cd1902                   cmp abs1+2  ;test result
                                trap_ne
1ae7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1ae9 : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1aea : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1aec : cd1e02                   cmp fLDx+2  ;test flags
                                trap_ne
1aef : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
1af1 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1af3 : 48              >            pha         ;use stack to load status
1af4 : 28              >            plp
                        
1af5 : a900                     lda #0
1af7 : 08                       php
1af8 : cd1a02                   cmp abs1+3  ;test result
                                trap_ne
1afb : d0fe            >        bne *           ;failed not equal (non zero)
                        
1afd : 68                       pla         ;load status
                                eor_flag lo~fnz ;mask bits not altered
1afe : 497d            >            eor #lo~fnz |fao         ;invert expected flags + always on bits
                        
1b00 : cd1f02                   cmp fLDx+3  ;test flags
                                trap_ne
1b03 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                        
1b05 : a200                     ldx #0
1b07 : a50c                     lda zpt  
1b09 : 49c3                     eor #$c3
1b0b : c513                     cmp zp1  
                                trap_ne     ;store to zp data
1b0d : d0fe            >        bne *           ;failed not equal (non zero)
                        
1b0f : 860c                     stx zpt     ;clear                
1b11 : ad0302                   lda abst  
1b14 : 49c3                     eor #$c3
1b16 : cd1702                   cmp abs1  
                                trap_ne     ;store to abs data
1b19 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1b1b : 8e0302                   stx abst    ;clear                
1b1e : a50d                     lda zpt+1
1b20 : 49c3                     eor #$c3
1b22 : c514                     cmp zp1+1
                                trap_ne     ;store to zp data
1b24 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1b26 : 860d                     stx zpt+1   ;clear                
1b28 : ad0402                   lda abst+1
1b2b : 49c3                     eor #$c3
1b2d : cd1802                   cmp abs1+1
                                trap_ne     ;store to abs data
1b30 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1b32 : 8e0402                   stx abst+1  ;clear                
1b35 : a50e                     lda zpt+2
1b37 : 49c3                     eor #$c3
1b39 : c515                     cmp zp1+2
                                trap_ne     ;store to zp data
1b3b : d0fe            >        bne *           ;failed not equal (non zero)
                        
1b3d : 860e                     stx zpt+2   ;clear                
1b3f : ad0502                   lda abst+2
1b42 : 49c3                     eor #$c3
1b44 : cd1902                   cmp abs1+2
                                trap_ne     ;store to abs data
1b47 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1b49 : 8e0502                   stx abst+2  ;clear                
1b4c : a50f                     lda zpt+3
1b4e : 49c3                     eor #$c3
1b50 : c516                     cmp zp1+3
                                trap_ne     ;store to zp data
1b52 : d0fe            >        bne *           ;failed not equal (non zero)
                        
1b54 : 860f                     stx zpt+3   ;clear                
1b56 : ad0602                   lda abst+3
1b59 : 49c3                     eor #$c3
1b5b : cd1a02                   cmp abs1+3
                                trap_ne     ;store to abs data
1b5e : d0fe            >        bne *           ;failed not equal (non zero)
                        
1b60 : 8e0602                   stx abst+3  ;clear                
                                next_test
1b63 : ad0002          >            lda test_case   ;previous test
1b66 : c918            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
1b68 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0019 =                 >test_num = test_num + 1
1b6a : a919            >            lda #test_num   ;*** next tests' number
1b6c : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; testing bit test & compares BIT CPX CPY CMP all addressing modes
                        ; BIT - zp / abs
                                set_a $ff,0
                       >            load_flag 0
1b6f : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1b71 : 48              >            pha         ;use stack to load status
1b72 : a9ff            >            lda #$ff     ;precharge accu
1b74 : 28              >            plp
                        
1b75 : 2416                     bit zp1+3   ;00 - should set Z / clear  NV
                                tst_a $ff,fz 
1b77 : 08              >            php         ;save flags
1b78 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
1b7a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1b7c : 68              >            pla         ;load status
1b7d : 48              >            pha
                       >            cmp_flag fz 
1b7e : c932            >            cmp #(fz |fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1b80 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1b82 : 28              >            plp         ;restore status
                        
                                set_a 1,0
                       >            load_flag 0
1b83 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1b85 : 48              >            pha         ;use stack to load status
1b86 : a901            >            lda #1     ;precharge accu
1b88 : 28              >            plp
                        
1b89 : 2415                     bit zp1+2   ;41 - should set V (M6) / clear NZ
                                tst_a 1,fv
1b8b : 08              >            php         ;save flags
1b8c : c901            >            cmp #1     ;test result
                       >            trap_ne
1b8e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1b90 : 68              >            pla         ;load status
1b91 : 48              >            pha
                       >            cmp_flag fv
1b92 : c970            >            cmp #(fv|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1b94 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1b96 : 28              >            plp         ;restore status
                        
                                set_a 1,0
                       >            load_flag 0
1b97 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1b99 : 48              >            pha         ;use stack to load status
1b9a : a901            >            lda #1     ;precharge accu
1b9c : 28              >            plp
                        
1b9d : 2414                     bit zp1+1   ;82 - should set N (M7) & Z / clear V
                                tst_a 1,fnz
1b9f : 08              >            php         ;save flags
1ba0 : c901            >            cmp #1     ;test result
                       >            trap_ne
1ba2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ba4 : 68              >            pla         ;load status
1ba5 : 48              >            pha
                       >            cmp_flag fnz
1ba6 : c9b2            >            cmp #(fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1ba8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1baa : 28              >            plp         ;restore status
                        
                                set_a 1,0
                       >            load_flag 0
1bab : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1bad : 48              >            pha         ;use stack to load status
1bae : a901            >            lda #1     ;precharge accu
1bb0 : 28              >            plp
                        
1bb1 : 2413                     bit zp1     ;c3 - should set N (M7) & V (M6) / clear Z
                                tst_a 1,fnv
1bb3 : 08              >            php         ;save flags
1bb4 : c901            >            cmp #1     ;test result
                       >            trap_ne
1bb6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1bb8 : 68              >            pla         ;load status
1bb9 : 48              >            pha
                       >            cmp_flag fnv
1bba : c9f0            >            cmp #(fnv|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1bbc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1bbe : 28              >            plp         ;restore status
                        
                                
                                set_a $ff,$ff
                       >            load_flag $ff
1bbf : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1bc1 : 48              >            pha         ;use stack to load status
1bc2 : a9ff            >            lda #$ff     ;precharge accu
1bc4 : 28              >            plp
                        
1bc5 : 2416                     bit zp1+3   ;00 - should set Z / clear  NV
                                tst_a $ff,~fnv 
1bc7 : 08              >            php         ;save flags
1bc8 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
1bca : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1bcc : 68              >            pla         ;load status
1bcd : 48              >            pha
                       >            cmp_flag ~fnv 
1bce : c93f            >            cmp #(~fnv |fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1bd0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1bd2 : 28              >            plp         ;restore status
                        
                                set_a 1,$ff
                       >            load_flag $ff
1bd3 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1bd5 : 48              >            pha         ;use stack to load status
1bd6 : a901            >            lda #1     ;precharge accu
1bd8 : 28              >            plp
                        
1bd9 : 2415                     bit zp1+2   ;41 - should set V (M6) / clear NZ
                                tst_a 1,~fnz
1bdb : 08              >            php         ;save flags
1bdc : c901            >            cmp #1     ;test result
                       >            trap_ne
1bde : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1be0 : 68              >            pla         ;load status
1be1 : 48              >            pha
                       >            cmp_flag ~fnz
1be2 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1be4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1be6 : 28              >            plp         ;restore status
                        
                                set_a 1,$ff
                       >            load_flag $ff
1be7 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1be9 : 48              >            pha         ;use stack to load status
1bea : a901            >            lda #1     ;precharge accu
1bec : 28              >            plp
                        
1bed : 2414                     bit zp1+1   ;82 - should set N (M7) & Z / clear V
                                tst_a 1,~fv
1bef : 08              >            php         ;save flags
1bf0 : c901            >            cmp #1     ;test result
                       >            trap_ne
1bf2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1bf4 : 68              >            pla         ;load status
1bf5 : 48              >            pha
                       >            cmp_flag ~fv
1bf6 : c9bf            >            cmp #(~fv|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1bf8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1bfa : 28              >            plp         ;restore status
                        
                                set_a 1,$ff
                       >            load_flag $ff
1bfb : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1bfd : 48              >            pha         ;use stack to load status
1bfe : a901            >            lda #1     ;precharge accu
1c00 : 28              >            plp
                        
1c01 : 2413                     bit zp1     ;c3 - should set N (M7) & V (M6) / clear Z
                                tst_a 1,~fz
1c03 : 08              >            php         ;save flags
1c04 : c901            >            cmp #1     ;test result
                       >            trap_ne
1c06 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c08 : 68              >            pla         ;load status
1c09 : 48              >            pha
                       >            cmp_flag ~fz
1c0a : c9fd            >            cmp #(~fz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1c0c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c0e : 28              >            plp         ;restore status
                        
                                
                                set_a $ff,0
                       >            load_flag 0
1c0f : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1c11 : 48              >            pha         ;use stack to load status
1c12 : a9ff            >            lda #$ff     ;precharge accu
1c14 : 28              >            plp
                        
1c15 : 2c1a02                   bit abs1+3  ;00 - should set Z / clear  NV
                                tst_a $ff,fz 
1c18 : 08              >            php         ;save flags
1c19 : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
1c1b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c1d : 68              >            pla         ;load status
1c1e : 48              >            pha
                       >            cmp_flag fz 
1c1f : c932            >            cmp #(fz |fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1c21 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c23 : 28              >            plp         ;restore status
                        
                                set_a 1,0
                       >            load_flag 0
1c24 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1c26 : 48              >            pha         ;use stack to load status
1c27 : a901            >            lda #1     ;precharge accu
1c29 : 28              >            plp
                        
1c2a : 2c1902                   bit abs1+2  ;41 - should set V (M6) / clear NZ
                                tst_a 1,fv
1c2d : 08              >            php         ;save flags
1c2e : c901            >            cmp #1     ;test result
                       >            trap_ne
1c30 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c32 : 68              >            pla         ;load status
1c33 : 48              >            pha
                       >            cmp_flag fv
1c34 : c970            >            cmp #(fv|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1c36 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c38 : 28              >            plp         ;restore status
                        
                                set_a 1,0
                       >            load_flag 0
1c39 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1c3b : 48              >            pha         ;use stack to load status
1c3c : a901            >            lda #1     ;precharge accu
1c3e : 28              >            plp
                        
1c3f : 2c1802                   bit abs1+1  ;82 - should set N (M7) & Z / clear V
                                tst_a 1,fnz
1c42 : 08              >            php         ;save flags
1c43 : c901            >            cmp #1     ;test result
                       >            trap_ne
1c45 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c47 : 68              >            pla         ;load status
1c48 : 48              >            pha
                       >            cmp_flag fnz
1c49 : c9b2            >            cmp #(fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1c4b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c4d : 28              >            plp         ;restore status
                        
                                set_a 1,0
                       >            load_flag 0
1c4e : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1c50 : 48              >            pha         ;use stack to load status
1c51 : a901            >            lda #1     ;precharge accu
1c53 : 28              >            plp
                        
1c54 : 2c1702                   bit abs1    ;c3 - should set N (M7) & V (M6) / clear Z
                                tst_a 1,fnv
1c57 : 08              >            php         ;save flags
1c58 : c901            >            cmp #1     ;test result
                       >            trap_ne
1c5a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c5c : 68              >            pla         ;load status
1c5d : 48              >            pha
                       >            cmp_flag fnv
1c5e : c9f0            >            cmp #(fnv|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1c60 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c62 : 28              >            plp         ;restore status
                        
                                
                                set_a $ff,$ff
                       >            load_flag $ff
1c63 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1c65 : 48              >            pha         ;use stack to load status
1c66 : a9ff            >            lda #$ff     ;precharge accu
1c68 : 28              >            plp
                        
1c69 : 2c1a02                   bit abs1+3  ;00 - should set Z / clear  NV
                                tst_a $ff,~fnv 
1c6c : 08              >            php         ;save flags
1c6d : c9ff            >            cmp #$ff     ;test result
                       >            trap_ne
1c6f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c71 : 68              >            pla         ;load status
1c72 : 48              >            pha
                       >            cmp_flag ~fnv 
1c73 : c93f            >            cmp #(~fnv |fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1c75 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c77 : 28              >            plp         ;restore status
                        
                                set_a 1,$ff
                       >            load_flag $ff
1c78 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1c7a : 48              >            pha         ;use stack to load status
1c7b : a901            >            lda #1     ;precharge accu
1c7d : 28              >            plp
                        
1c7e : 2c1902                   bit abs1+2  ;41 - should set V (M6) / clear NZ
                                tst_a 1,~fnz
1c81 : 08              >            php         ;save flags
1c82 : c901            >            cmp #1     ;test result
                       >            trap_ne
1c84 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c86 : 68              >            pla         ;load status
1c87 : 48              >            pha
                       >            cmp_flag ~fnz
1c88 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1c8a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c8c : 28              >            plp         ;restore status
                        
                                set_a 1,$ff
                       >            load_flag $ff
1c8d : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1c8f : 48              >            pha         ;use stack to load status
1c90 : a901            >            lda #1     ;precharge accu
1c92 : 28              >            plp
                        
1c93 : 2c1802                   bit abs1+1  ;82 - should set N (M7) & Z / clear V
                                tst_a 1,~fv
1c96 : 08              >            php         ;save flags
1c97 : c901            >            cmp #1     ;test result
                       >            trap_ne
1c99 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1c9b : 68              >            pla         ;load status
1c9c : 48              >            pha
                       >            cmp_flag ~fv
1c9d : c9bf            >            cmp #(~fv|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1c9f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ca1 : 28              >            plp         ;restore status
                        
                                set_a 1,$ff
                       >            load_flag $ff
1ca2 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1ca4 : 48              >            pha         ;use stack to load status
1ca5 : a901            >            lda #1     ;precharge accu
1ca7 : 28              >            plp
                        
1ca8 : 2c1702                   bit abs1    ;c3 - should set N (M7) & V (M6) / clear Z
                                tst_a 1,~fz
1cab : 08              >            php         ;save flags
1cac : c901            >            cmp #1     ;test result
                       >            trap_ne
1cae : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1cb0 : 68              >            pla         ;load status
1cb1 : 48              >            pha
                       >            cmp_flag ~fz
1cb2 : c9fd            >            cmp #(~fz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1cb4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1cb6 : 28              >            plp         ;restore status
                        
                                next_test
1cb7 : ad0002          >            lda test_case   ;previous test
1cba : c919            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
1cbc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
001a =                 >test_num = test_num + 1
1cbe : a91a            >            lda #test_num   ;*** next tests' number
1cc0 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                                
                        ; CPX - zp / abs / #         
                                set_x $80,0
                       >            load_flag 0
1cc3 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1cc5 : 48              >            pha         ;use stack to load status
1cc6 : a280            >            ldx #$80     ;precharge index x
1cc8 : 28              >            plp
                        
1cc9 : e417                     cpx zp7f
                                tst_stat fc
1ccb : 08              >            php         ;save status
1ccc : 68              >            pla         ;use stack to retrieve status
1ccd : 48              >            pha
                       >            cmp_flag fc
1cce : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1cd0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1cd2 : 28              >            plp         ;restore status
                        
1cd3 : ca                       dex
1cd4 : e417                     cpx zp7f
                                tst_stat fzc
1cd6 : 08              >            php         ;save status
1cd7 : 68              >            pla         ;use stack to retrieve status
1cd8 : 48              >            pha
                       >            cmp_flag fzc
1cd9 : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1cdb : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1cdd : 28              >            plp         ;restore status
                        
1cde : ca                       dex
1cdf : e417                     cpx zp7f
                                tst_x $7e,fn
1ce1 : 08              >            php         ;save flags
1ce2 : e07e            >            cpx #$7e     ;test result
                       >            trap_ne
1ce4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ce6 : 68              >            pla         ;load status
1ce7 : 48              >            pha
                       >            cmp_flag fn
1ce8 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1cea : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1cec : 28              >            plp         ;restore status
                        
                                set_x $80,$ff
                       >            load_flag $ff
1ced : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1cef : 48              >            pha         ;use stack to load status
1cf0 : a280            >            ldx #$80     ;precharge index x
1cf2 : 28              >            plp
                        
1cf3 : e417                     cpx zp7f
                                tst_stat ~fnz
1cf5 : 08              >            php         ;save status
1cf6 : 68              >            pla         ;use stack to retrieve status
1cf7 : 48              >            pha
                       >            cmp_flag ~fnz
1cf8 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1cfa : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1cfc : 28              >            plp         ;restore status
                        
1cfd : ca                       dex
1cfe : e417                     cpx zp7f
                                tst_stat ~fn
1d00 : 08              >            php         ;save status
1d01 : 68              >            pla         ;use stack to retrieve status
1d02 : 48              >            pha
                       >            cmp_flag ~fn
1d03 : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d05 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d07 : 28              >            plp         ;restore status
                        
1d08 : ca                       dex
1d09 : e417                     cpx zp7f
                                tst_x $7e,~fzc
1d0b : 08              >            php         ;save flags
1d0c : e07e            >            cpx #$7e     ;test result
                       >            trap_ne
1d0e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d10 : 68              >            pla         ;load status
1d11 : 48              >            pha
                       >            cmp_flag ~fzc
1d12 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d14 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d16 : 28              >            plp         ;restore status
                        
                        
                                set_x $80,0
                       >            load_flag 0
1d17 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1d19 : 48              >            pha         ;use stack to load status
1d1a : a280            >            ldx #$80     ;precharge index x
1d1c : 28              >            plp
                        
1d1d : ec1b02                   cpx abs7f
                                tst_stat fc
1d20 : 08              >            php         ;save status
1d21 : 68              >            pla         ;use stack to retrieve status
1d22 : 48              >            pha
                       >            cmp_flag fc
1d23 : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d25 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d27 : 28              >            plp         ;restore status
                        
1d28 : ca                       dex
1d29 : ec1b02                   cpx abs7f
                                tst_stat fzc
1d2c : 08              >            php         ;save status
1d2d : 68              >            pla         ;use stack to retrieve status
1d2e : 48              >            pha
                       >            cmp_flag fzc
1d2f : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d31 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d33 : 28              >            plp         ;restore status
                        
1d34 : ca                       dex
1d35 : ec1b02                   cpx abs7f
                                tst_x $7e,fn
1d38 : 08              >            php         ;save flags
1d39 : e07e            >            cpx #$7e     ;test result
                       >            trap_ne
1d3b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d3d : 68              >            pla         ;load status
1d3e : 48              >            pha
                       >            cmp_flag fn
1d3f : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d41 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d43 : 28              >            plp         ;restore status
                        
                                set_x $80,$ff
                       >            load_flag $ff
1d44 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1d46 : 48              >            pha         ;use stack to load status
1d47 : a280            >            ldx #$80     ;precharge index x
1d49 : 28              >            plp
                        
1d4a : ec1b02                   cpx abs7f
                                tst_stat ~fnz
1d4d : 08              >            php         ;save status
1d4e : 68              >            pla         ;use stack to retrieve status
1d4f : 48              >            pha
                       >            cmp_flag ~fnz
1d50 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d52 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d54 : 28              >            plp         ;restore status
                        
1d55 : ca                       dex
1d56 : ec1b02                   cpx abs7f
                                tst_stat ~fn
1d59 : 08              >            php         ;save status
1d5a : 68              >            pla         ;use stack to retrieve status
1d5b : 48              >            pha
                       >            cmp_flag ~fn
1d5c : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d5e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d60 : 28              >            plp         ;restore status
                        
1d61 : ca                       dex
1d62 : ec1b02                   cpx abs7f
                                tst_x $7e,~fzc
1d65 : 08              >            php         ;save flags
1d66 : e07e            >            cpx #$7e     ;test result
                       >            trap_ne
1d68 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d6a : 68              >            pla         ;load status
1d6b : 48              >            pha
                       >            cmp_flag ~fzc
1d6c : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d6e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d70 : 28              >            plp         ;restore status
                        
                        
                                set_x $80,0
                       >            load_flag 0
1d71 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1d73 : 48              >            pha         ;use stack to load status
1d74 : a280            >            ldx #$80     ;precharge index x
1d76 : 28              >            plp
                        
1d77 : e07f                     cpx #$7f
                                tst_stat fc
1d79 : 08              >            php         ;save status
1d7a : 68              >            pla         ;use stack to retrieve status
1d7b : 48              >            pha
                       >            cmp_flag fc
1d7c : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d7e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d80 : 28              >            plp         ;restore status
                        
1d81 : ca                       dex
1d82 : e07f                     cpx #$7f
                                tst_stat fzc
1d84 : 08              >            php         ;save status
1d85 : 68              >            pla         ;use stack to retrieve status
1d86 : 48              >            pha
                       >            cmp_flag fzc
1d87 : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d89 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d8b : 28              >            plp         ;restore status
                        
1d8c : ca                       dex
1d8d : e07f                     cpx #$7f
                                tst_x $7e,fn
1d8f : 08              >            php         ;save flags
1d90 : e07e            >            cpx #$7e     ;test result
                       >            trap_ne
1d92 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d94 : 68              >            pla         ;load status
1d95 : 48              >            pha
                       >            cmp_flag fn
1d96 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1d98 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1d9a : 28              >            plp         ;restore status
                        
                                set_x $80,$ff
                       >            load_flag $ff
1d9b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1d9d : 48              >            pha         ;use stack to load status
1d9e : a280            >            ldx #$80     ;precharge index x
1da0 : 28              >            plp
                        
1da1 : e07f                     cpx #$7f
                                tst_stat ~fnz
1da3 : 08              >            php         ;save status
1da4 : 68              >            pla         ;use stack to retrieve status
1da5 : 48              >            pha
                       >            cmp_flag ~fnz
1da6 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1da8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1daa : 28              >            plp         ;restore status
                        
1dab : ca                       dex
1dac : e07f                     cpx #$7f
                                tst_stat ~fn
1dae : 08              >            php         ;save status
1daf : 68              >            pla         ;use stack to retrieve status
1db0 : 48              >            pha
                       >            cmp_flag ~fn
1db1 : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1db3 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1db5 : 28              >            plp         ;restore status
                        
1db6 : ca                       dex
1db7 : e07f                     cpx #$7f
                                tst_x $7e,~fzc
1db9 : 08              >            php         ;save flags
1dba : e07e            >            cpx #$7e     ;test result
                       >            trap_ne
1dbc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1dbe : 68              >            pla         ;load status
1dbf : 48              >            pha
                       >            cmp_flag ~fzc
1dc0 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1dc2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1dc4 : 28              >            plp         ;restore status
                        
                                next_test
1dc5 : ad0002          >            lda test_case   ;previous test
1dc8 : c91a            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
1dca : d0fe            >        bne *           ;failed not equal (non zero)
                       >
001b =                 >test_num = test_num + 1
1dcc : a91b            >            lda #test_num   ;*** next tests' number
1dce : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; CPY - zp / abs / #         
                                set_y $80,0
                       >            load_flag 0
1dd1 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1dd3 : 48              >            pha         ;use stack to load status
1dd4 : a080            >            ldy #$80     ;precharge index y
1dd6 : 28              >            plp
                        
1dd7 : c417                     cpy zp7f
                                tst_stat fc
1dd9 : 08              >            php         ;save status
1dda : 68              >            pla         ;use stack to retrieve status
1ddb : 48              >            pha
                       >            cmp_flag fc
1ddc : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1dde : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1de0 : 28              >            plp         ;restore status
                        
1de1 : 88                       dey
1de2 : c417                     cpy zp7f
                                tst_stat fzc
1de4 : 08              >            php         ;save status
1de5 : 68              >            pla         ;use stack to retrieve status
1de6 : 48              >            pha
                       >            cmp_flag fzc
1de7 : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1de9 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1deb : 28              >            plp         ;restore status
                        
1dec : 88                       dey
1ded : c417                     cpy zp7f
                                tst_y $7e,fn
1def : 08              >            php         ;save flags
1df0 : c07e            >            cpy #$7e     ;test result
                       >            trap_ne
1df2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1df4 : 68              >            pla         ;load status
1df5 : 48              >            pha
                       >            cmp_flag fn
1df6 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1df8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1dfa : 28              >            plp         ;restore status
                        
                                set_y $80,$ff
                       >            load_flag $ff
1dfb : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1dfd : 48              >            pha         ;use stack to load status
1dfe : a080            >            ldy #$80     ;precharge index y
1e00 : 28              >            plp
                        
1e01 : c417                     cpy zp7f
                                tst_stat ~fnz
1e03 : 08              >            php         ;save status
1e04 : 68              >            pla         ;use stack to retrieve status
1e05 : 48              >            pha
                       >            cmp_flag ~fnz
1e06 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e08 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e0a : 28              >            plp         ;restore status
                        
1e0b : 88                       dey
1e0c : c417                     cpy zp7f
                                tst_stat ~fn
1e0e : 08              >            php         ;save status
1e0f : 68              >            pla         ;use stack to retrieve status
1e10 : 48              >            pha
                       >            cmp_flag ~fn
1e11 : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e13 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e15 : 28              >            plp         ;restore status
                        
1e16 : 88                       dey
1e17 : c417                     cpy zp7f
                                tst_y $7e,~fzc
1e19 : 08              >            php         ;save flags
1e1a : c07e            >            cpy #$7e     ;test result
                       >            trap_ne
1e1c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e1e : 68              >            pla         ;load status
1e1f : 48              >            pha
                       >            cmp_flag ~fzc
1e20 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e22 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e24 : 28              >            plp         ;restore status
                        
                        
                                set_y $80,0
                       >            load_flag 0
1e25 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1e27 : 48              >            pha         ;use stack to load status
1e28 : a080            >            ldy #$80     ;precharge index y
1e2a : 28              >            plp
                        
1e2b : cc1b02                   cpy abs7f
                                tst_stat fc
1e2e : 08              >            php         ;save status
1e2f : 68              >            pla         ;use stack to retrieve status
1e30 : 48              >            pha
                       >            cmp_flag fc
1e31 : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e33 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e35 : 28              >            plp         ;restore status
                        
1e36 : 88                       dey
1e37 : cc1b02                   cpy abs7f
                                tst_stat fzc
1e3a : 08              >            php         ;save status
1e3b : 68              >            pla         ;use stack to retrieve status
1e3c : 48              >            pha
                       >            cmp_flag fzc
1e3d : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e3f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e41 : 28              >            plp         ;restore status
                        
1e42 : 88                       dey
1e43 : cc1b02                   cpy abs7f
                                tst_y $7e,fn
1e46 : 08              >            php         ;save flags
1e47 : c07e            >            cpy #$7e     ;test result
                       >            trap_ne
1e49 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e4b : 68              >            pla         ;load status
1e4c : 48              >            pha
                       >            cmp_flag fn
1e4d : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e4f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e51 : 28              >            plp         ;restore status
                        
                                set_y $80,$ff
                       >            load_flag $ff
1e52 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1e54 : 48              >            pha         ;use stack to load status
1e55 : a080            >            ldy #$80     ;precharge index y
1e57 : 28              >            plp
                        
1e58 : cc1b02                   cpy abs7f
                                tst_stat ~fnz
1e5b : 08              >            php         ;save status
1e5c : 68              >            pla         ;use stack to retrieve status
1e5d : 48              >            pha
                       >            cmp_flag ~fnz
1e5e : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e60 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e62 : 28              >            plp         ;restore status
                        
1e63 : 88                       dey
1e64 : cc1b02                   cpy abs7f
                                tst_stat ~fn
1e67 : 08              >            php         ;save status
1e68 : 68              >            pla         ;use stack to retrieve status
1e69 : 48              >            pha
                       >            cmp_flag ~fn
1e6a : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e6c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e6e : 28              >            plp         ;restore status
                        
1e6f : 88                       dey
1e70 : cc1b02                   cpy abs7f
                                tst_y $7e,~fzc
1e73 : 08              >            php         ;save flags
1e74 : c07e            >            cpy #$7e     ;test result
                       >            trap_ne
1e76 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e78 : 68              >            pla         ;load status
1e79 : 48              >            pha
                       >            cmp_flag ~fzc
1e7a : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e7c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e7e : 28              >            plp         ;restore status
                        
                        
                                set_y $80,0
                       >            load_flag 0
1e7f : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1e81 : 48              >            pha         ;use stack to load status
1e82 : a080            >            ldy #$80     ;precharge index y
1e84 : 28              >            plp
                        
1e85 : c07f                     cpy #$7f
                                tst_stat fc
1e87 : 08              >            php         ;save status
1e88 : 68              >            pla         ;use stack to retrieve status
1e89 : 48              >            pha
                       >            cmp_flag fc
1e8a : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e8c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e8e : 28              >            plp         ;restore status
                        
1e8f : 88                       dey
1e90 : c07f                     cpy #$7f
                                tst_stat fzc
1e92 : 08              >            php         ;save status
1e93 : 68              >            pla         ;use stack to retrieve status
1e94 : 48              >            pha
                       >            cmp_flag fzc
1e95 : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1e97 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1e99 : 28              >            plp         ;restore status
                        
1e9a : 88                       dey
1e9b : c07f                     cpy #$7f
                                tst_y $7e,fn
1e9d : 08              >            php         ;save flags
1e9e : c07e            >            cpy #$7e     ;test result
                       >            trap_ne
1ea0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ea2 : 68              >            pla         ;load status
1ea3 : 48              >            pha
                       >            cmp_flag fn
1ea4 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1ea6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ea8 : 28              >            plp         ;restore status
                        
                                set_y $80,$ff
                       >            load_flag $ff
1ea9 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1eab : 48              >            pha         ;use stack to load status
1eac : a080            >            ldy #$80     ;precharge index y
1eae : 28              >            plp
                        
1eaf : c07f                     cpy #$7f
                                tst_stat ~fnz
1eb1 : 08              >            php         ;save status
1eb2 : 68              >            pla         ;use stack to retrieve status
1eb3 : 48              >            pha
                       >            cmp_flag ~fnz
1eb4 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1eb6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1eb8 : 28              >            plp         ;restore status
                        
1eb9 : 88                       dey
1eba : c07f                     cpy #$7f
                                tst_stat ~fn
1ebc : 08              >            php         ;save status
1ebd : 68              >            pla         ;use stack to retrieve status
1ebe : 48              >            pha
                       >            cmp_flag ~fn
1ebf : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1ec1 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ec3 : 28              >            plp         ;restore status
                        
1ec4 : 88                       dey
1ec5 : c07f                     cpy #$7f
                                tst_y $7e,~fzc
1ec7 : 08              >            php         ;save flags
1ec8 : c07e            >            cpy #$7e     ;test result
                       >            trap_ne
1eca : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ecc : 68              >            pla         ;load status
1ecd : 48              >            pha
                       >            cmp_flag ~fzc
1ece : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1ed0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ed2 : 28              >            plp         ;restore status
                        
                                next_test
1ed3 : ad0002          >            lda test_case   ;previous test
1ed6 : c91b            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
1ed8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
001c =                 >test_num = test_num + 1
1eda : a91c            >            lda #test_num   ;*** next tests' number
1edc : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; CMP - zp / abs / #         
                                set_a $80,0
                       >            load_flag 0
1edf : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1ee1 : 48              >            pha         ;use stack to load status
1ee2 : a980            >            lda #$80     ;precharge accu
1ee4 : 28              >            plp
                        
1ee5 : c517                     cmp zp7f
                                tst_a $80,fc
1ee7 : 08              >            php         ;save flags
1ee8 : c980            >            cmp #$80     ;test result
                       >            trap_ne
1eea : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1eec : 68              >            pla         ;load status
1eed : 48              >            pha
                       >            cmp_flag fc
1eee : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1ef0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ef2 : 28              >            plp         ;restore status
                        
                                set_a $7f,0
                       >            load_flag 0
1ef3 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1ef5 : 48              >            pha         ;use stack to load status
1ef6 : a97f            >            lda #$7f     ;precharge accu
1ef8 : 28              >            plp
                        
1ef9 : c517                     cmp zp7f
                                tst_a $7f,fzc
1efb : 08              >            php         ;save flags
1efc : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
1efe : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f00 : 68              >            pla         ;load status
1f01 : 48              >            pha
                       >            cmp_flag fzc
1f02 : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1f04 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f06 : 28              >            plp         ;restore status
                        
                                set_a $7e,0
                       >            load_flag 0
1f07 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1f09 : 48              >            pha         ;use stack to load status
1f0a : a97e            >            lda #$7e     ;precharge accu
1f0c : 28              >            plp
                        
1f0d : c517                     cmp zp7f
                                tst_a $7e,fn
1f0f : 08              >            php         ;save flags
1f10 : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
1f12 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f14 : 68              >            pla         ;load status
1f15 : 48              >            pha
                       >            cmp_flag fn
1f16 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1f18 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f1a : 28              >            plp         ;restore status
                        
                                set_a $80,$ff
                       >            load_flag $ff
1f1b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1f1d : 48              >            pha         ;use stack to load status
1f1e : a980            >            lda #$80     ;precharge accu
1f20 : 28              >            plp
                        
1f21 : c517                     cmp zp7f
                                tst_a $80,~fnz
1f23 : 08              >            php         ;save flags
1f24 : c980            >            cmp #$80     ;test result
                       >            trap_ne
1f26 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f28 : 68              >            pla         ;load status
1f29 : 48              >            pha
                       >            cmp_flag ~fnz
1f2a : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1f2c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f2e : 28              >            plp         ;restore status
                        
                                set_a $7f,$ff
                       >            load_flag $ff
1f2f : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1f31 : 48              >            pha         ;use stack to load status
1f32 : a97f            >            lda #$7f     ;precharge accu
1f34 : 28              >            plp
                        
1f35 : c517                     cmp zp7f
                                tst_a $7f,~fn
1f37 : 08              >            php         ;save flags
1f38 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
1f3a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f3c : 68              >            pla         ;load status
1f3d : 48              >            pha
                       >            cmp_flag ~fn
1f3e : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1f40 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f42 : 28              >            plp         ;restore status
                        
                                set_a $7e,$ff
                       >            load_flag $ff
1f43 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1f45 : 48              >            pha         ;use stack to load status
1f46 : a97e            >            lda #$7e     ;precharge accu
1f48 : 28              >            plp
                        
1f49 : c517                     cmp zp7f
                                tst_a $7e,~fzc
1f4b : 08              >            php         ;save flags
1f4c : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
1f4e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f50 : 68              >            pla         ;load status
1f51 : 48              >            pha
                       >            cmp_flag ~fzc
1f52 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1f54 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f56 : 28              >            plp         ;restore status
                        
                        
                                set_a $80,0
                       >            load_flag 0
1f57 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1f59 : 48              >            pha         ;use stack to load status
1f5a : a980            >            lda #$80     ;precharge accu
1f5c : 28              >            plp
                        
1f5d : cd1b02                   cmp abs7f
                                tst_a $80,fc
1f60 : 08              >            php         ;save flags
1f61 : c980            >            cmp #$80     ;test result
                       >            trap_ne
1f63 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f65 : 68              >            pla         ;load status
1f66 : 48              >            pha
                       >            cmp_flag fc
1f67 : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1f69 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f6b : 28              >            plp         ;restore status
                        
                                set_a $7f,0
                       >            load_flag 0
1f6c : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1f6e : 48              >            pha         ;use stack to load status
1f6f : a97f            >            lda #$7f     ;precharge accu
1f71 : 28              >            plp
                        
1f72 : cd1b02                   cmp abs7f
                                tst_a $7f,fzc
1f75 : 08              >            php         ;save flags
1f76 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
1f78 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f7a : 68              >            pla         ;load status
1f7b : 48              >            pha
                       >            cmp_flag fzc
1f7c : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1f7e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f80 : 28              >            plp         ;restore status
                        
                                set_a $7e,0
                       >            load_flag 0
1f81 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1f83 : 48              >            pha         ;use stack to load status
1f84 : a97e            >            lda #$7e     ;precharge accu
1f86 : 28              >            plp
                        
1f87 : cd1b02                   cmp abs7f
                                tst_a $7e,fn
1f8a : 08              >            php         ;save flags
1f8b : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
1f8d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f8f : 68              >            pla         ;load status
1f90 : 48              >            pha
                       >            cmp_flag fn
1f91 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1f93 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1f95 : 28              >            plp         ;restore status
                        
                                set_a $80,$ff
                       >            load_flag $ff
1f96 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1f98 : 48              >            pha         ;use stack to load status
1f99 : a980            >            lda #$80     ;precharge accu
1f9b : 28              >            plp
                        
1f9c : cd1b02                   cmp abs7f
                                tst_a $80,~fnz
1f9f : 08              >            php         ;save flags
1fa0 : c980            >            cmp #$80     ;test result
                       >            trap_ne
1fa2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1fa4 : 68              >            pla         ;load status
1fa5 : 48              >            pha
                       >            cmp_flag ~fnz
1fa6 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1fa8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1faa : 28              >            plp         ;restore status
                        
                                set_a $7f,$ff
                       >            load_flag $ff
1fab : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1fad : 48              >            pha         ;use stack to load status
1fae : a97f            >            lda #$7f     ;precharge accu
1fb0 : 28              >            plp
                        
1fb1 : cd1b02                   cmp abs7f
                                tst_a $7f,~fn
1fb4 : 08              >            php         ;save flags
1fb5 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
1fb7 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1fb9 : 68              >            pla         ;load status
1fba : 48              >            pha
                       >            cmp_flag ~fn
1fbb : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1fbd : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1fbf : 28              >            plp         ;restore status
                        
                                set_a $7e,$ff
                       >            load_flag $ff
1fc0 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
1fc2 : 48              >            pha         ;use stack to load status
1fc3 : a97e            >            lda #$7e     ;precharge accu
1fc5 : 28              >            plp
                        
1fc6 : cd1b02                   cmp abs7f
                                tst_a $7e,~fzc
1fc9 : 08              >            php         ;save flags
1fca : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
1fcc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1fce : 68              >            pla         ;load status
1fcf : 48              >            pha
                       >            cmp_flag ~fzc
1fd0 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1fd2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1fd4 : 28              >            plp         ;restore status
                        
                        
                                set_a $80,0
                       >            load_flag 0
1fd5 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1fd7 : 48              >            pha         ;use stack to load status
1fd8 : a980            >            lda #$80     ;precharge accu
1fda : 28              >            plp
                        
1fdb : c97f                     cmp #$7f
                                tst_a $80,fc
1fdd : 08              >            php         ;save flags
1fde : c980            >            cmp #$80     ;test result
                       >            trap_ne
1fe0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1fe2 : 68              >            pla         ;load status
1fe3 : 48              >            pha
                       >            cmp_flag fc
1fe4 : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1fe6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1fe8 : 28              >            plp         ;restore status
                        
                                set_a $7f,0
                       >            load_flag 0
1fe9 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1feb : 48              >            pha         ;use stack to load status
1fec : a97f            >            lda #$7f     ;precharge accu
1fee : 28              >            plp
                        
1fef : c97f                     cmp #$7f
                                tst_a $7f,fzc
1ff1 : 08              >            php         ;save flags
1ff2 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
1ff4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ff6 : 68              >            pla         ;load status
1ff7 : 48              >            pha
                       >            cmp_flag fzc
1ff8 : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
1ffa : d0fe            >        bne *           ;failed not equal (non zero)
                       >
1ffc : 28              >            plp         ;restore status
                        
                                set_a $7e,0
                       >            load_flag 0
1ffd : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
1fff : 48              >            pha         ;use stack to load status
2000 : a97e            >            lda #$7e     ;precharge accu
2002 : 28              >            plp
                        
2003 : c97f                     cmp #$7f
                                tst_a $7e,fn
2005 : 08              >            php         ;save flags
2006 : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
2008 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
200a : 68              >            pla         ;load status
200b : 48              >            pha
                       >            cmp_flag fn
200c : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
200e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2010 : 28              >            plp         ;restore status
                        
                                set_a $80,$ff
                       >            load_flag $ff
2011 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2013 : 48              >            pha         ;use stack to load status
2014 : a980            >            lda #$80     ;precharge accu
2016 : 28              >            plp
                        
2017 : c97f                     cmp #$7f
                                tst_a $80,~fnz
2019 : 08              >            php         ;save flags
201a : c980            >            cmp #$80     ;test result
                       >            trap_ne
201c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
201e : 68              >            pla         ;load status
201f : 48              >            pha
                       >            cmp_flag ~fnz
2020 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2022 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2024 : 28              >            plp         ;restore status
                        
                                set_a $7f,$ff
                       >            load_flag $ff
2025 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2027 : 48              >            pha         ;use stack to load status
2028 : a97f            >            lda #$7f     ;precharge accu
202a : 28              >            plp
                        
202b : c97f                     cmp #$7f
                                tst_a $7f,~fn
202d : 08              >            php         ;save flags
202e : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
2030 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2032 : 68              >            pla         ;load status
2033 : 48              >            pha
                       >            cmp_flag ~fn
2034 : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2036 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2038 : 28              >            plp         ;restore status
                        
                                set_a $7e,$ff
                       >            load_flag $ff
2039 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
203b : 48              >            pha         ;use stack to load status
203c : a97e            >            lda #$7e     ;precharge accu
203e : 28              >            plp
                        
203f : c97f                     cmp #$7f
                                tst_a $7e,~fzc
2041 : 08              >            php         ;save flags
2042 : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
2044 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2046 : 68              >            pla         ;load status
2047 : 48              >            pha
                       >            cmp_flag ~fzc
2048 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
204a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
204c : 28              >            plp         ;restore status
                        
                        
204d : a204                     ldx #4          ;with indexing by X
                                set_a $80,0
                       >            load_flag 0
204f : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2051 : 48              >            pha         ;use stack to load status
2052 : a980            >            lda #$80     ;precharge accu
2054 : 28              >            plp
                        
2055 : d513                     cmp zp1,x
                                tst_a $80,fc
2057 : 08              >            php         ;save flags
2058 : c980            >            cmp #$80     ;test result
                       >            trap_ne
205a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
205c : 68              >            pla         ;load status
205d : 48              >            pha
                       >            cmp_flag fc
205e : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2060 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2062 : 28              >            plp         ;restore status
                        
                                set_a $7f,0
                       >            load_flag 0
2063 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2065 : 48              >            pha         ;use stack to load status
2066 : a97f            >            lda #$7f     ;precharge accu
2068 : 28              >            plp
                        
2069 : d513                     cmp zp1,x
                                tst_a $7f,fzc
206b : 08              >            php         ;save flags
206c : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
206e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2070 : 68              >            pla         ;load status
2071 : 48              >            pha
                       >            cmp_flag fzc
2072 : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2074 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2076 : 28              >            plp         ;restore status
                        
                                set_a $7e,0
                       >            load_flag 0
2077 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2079 : 48              >            pha         ;use stack to load status
207a : a97e            >            lda #$7e     ;precharge accu
207c : 28              >            plp
                        
207d : d513                     cmp zp1,x
                                tst_a $7e,fn
207f : 08              >            php         ;save flags
2080 : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
2082 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2084 : 68              >            pla         ;load status
2085 : 48              >            pha
                       >            cmp_flag fn
2086 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2088 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
208a : 28              >            plp         ;restore status
                        
                                set_a $80,$ff
                       >            load_flag $ff
208b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
208d : 48              >            pha         ;use stack to load status
208e : a980            >            lda #$80     ;precharge accu
2090 : 28              >            plp
                        
2091 : d513                     cmp zp1,x
                                tst_a $80,~fnz
2093 : 08              >            php         ;save flags
2094 : c980            >            cmp #$80     ;test result
                       >            trap_ne
2096 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2098 : 68              >            pla         ;load status
2099 : 48              >            pha
                       >            cmp_flag ~fnz
209a : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
209c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
209e : 28              >            plp         ;restore status
                        
                                set_a $7f,$ff
                       >            load_flag $ff
209f : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
20a1 : 48              >            pha         ;use stack to load status
20a2 : a97f            >            lda #$7f     ;precharge accu
20a4 : 28              >            plp
                        
20a5 : d513                     cmp zp1,x
                                tst_a $7f,~fn
20a7 : 08              >            php         ;save flags
20a8 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
20aa : d0fe            >        bne *           ;failed not equal (non zero)
                       >
20ac : 68              >            pla         ;load status
20ad : 48              >            pha
                       >            cmp_flag ~fn
20ae : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
20b0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
20b2 : 28              >            plp         ;restore status
                        
                                set_a $7e,$ff
                       >            load_flag $ff
20b3 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
20b5 : 48              >            pha         ;use stack to load status
20b6 : a97e            >            lda #$7e     ;precharge accu
20b8 : 28              >            plp
                        
20b9 : d513                     cmp zp1,x
                                tst_a $7e,~fzc
20bb : 08              >            php         ;save flags
20bc : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
20be : d0fe            >        bne *           ;failed not equal (non zero)
                       >
20c0 : 68              >            pla         ;load status
20c1 : 48              >            pha
                       >            cmp_flag ~fzc
20c2 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
20c4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
20c6 : 28              >            plp         ;restore status
                        
                        
                                set_a $80,0
                       >            load_flag 0
20c7 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
20c9 : 48              >            pha         ;use stack to load status
20ca : a980            >            lda #$80     ;precharge accu
20cc : 28              >            plp
                        
20cd : dd1702                   cmp abs1,x
                                tst_a $80,fc
20d0 : 08              >            php         ;save flags
20d1 : c980            >            cmp #$80     ;test result
                       >            trap_ne
20d3 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
20d5 : 68              >            pla         ;load status
20d6 : 48              >            pha
                       >            cmp_flag fc
20d7 : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
20d9 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
20db : 28              >            plp         ;restore status
                        
                                set_a $7f,0
                       >            load_flag 0
20dc : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
20de : 48              >            pha         ;use stack to load status
20df : a97f            >            lda #$7f     ;precharge accu
20e1 : 28              >            plp
                        
20e2 : dd1702                   cmp abs1,x
                                tst_a $7f,fzc
20e5 : 08              >            php         ;save flags
20e6 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
20e8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
20ea : 68              >            pla         ;load status
20eb : 48              >            pha
                       >            cmp_flag fzc
20ec : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
20ee : d0fe            >        bne *           ;failed not equal (non zero)
                       >
20f0 : 28              >            plp         ;restore status
                        
                                set_a $7e,0
                       >            load_flag 0
20f1 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
20f3 : 48              >            pha         ;use stack to load status
20f4 : a97e            >            lda #$7e     ;precharge accu
20f6 : 28              >            plp
                        
20f7 : dd1702                   cmp abs1,x
                                tst_a $7e,fn
20fa : 08              >            php         ;save flags
20fb : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
20fd : d0fe            >        bne *           ;failed not equal (non zero)
                       >
20ff : 68              >            pla         ;load status
2100 : 48              >            pha
                       >            cmp_flag fn
2101 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2103 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2105 : 28              >            plp         ;restore status
                        
                                set_a $80,$ff
                       >            load_flag $ff
2106 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2108 : 48              >            pha         ;use stack to load status
2109 : a980            >            lda #$80     ;precharge accu
210b : 28              >            plp
                        
210c : dd1702                   cmp abs1,x
                                tst_a $80,~fnz
210f : 08              >            php         ;save flags
2110 : c980            >            cmp #$80     ;test result
                       >            trap_ne
2112 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2114 : 68              >            pla         ;load status
2115 : 48              >            pha
                       >            cmp_flag ~fnz
2116 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2118 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
211a : 28              >            plp         ;restore status
                        
                                set_a $7f,$ff
                       >            load_flag $ff
211b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
211d : 48              >            pha         ;use stack to load status
211e : a97f            >            lda #$7f     ;precharge accu
2120 : 28              >            plp
                        
2121 : dd1702                   cmp abs1,x
                                tst_a $7f,~fn
2124 : 08              >            php         ;save flags
2125 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
2127 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2129 : 68              >            pla         ;load status
212a : 48              >            pha
                       >            cmp_flag ~fn
212b : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
212d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
212f : 28              >            plp         ;restore status
                        
                                set_a $7e,$ff
                       >            load_flag $ff
2130 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2132 : 48              >            pha         ;use stack to load status
2133 : a97e            >            lda #$7e     ;precharge accu
2135 : 28              >            plp
                        
2136 : dd1702                   cmp abs1,x
                                tst_a $7e,~fzc
2139 : 08              >            php         ;save flags
213a : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
213c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
213e : 68              >            pla         ;load status
213f : 48              >            pha
                       >            cmp_flag ~fzc
2140 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2142 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2144 : 28              >            plp         ;restore status
                        
                        
2145 : a004                     ldy #4          ;with indexing by Y
2147 : a208                     ldx #8          ;with indexed indirect
                                set_a $80,0
                       >            load_flag 0
2149 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
214b : 48              >            pha         ;use stack to load status
214c : a980            >            lda #$80     ;precharge accu
214e : 28              >            plp
                        
214f : d91702                   cmp abs1,y
                                tst_a $80,fc
2152 : 08              >            php         ;save flags
2153 : c980            >            cmp #$80     ;test result
                       >            trap_ne
2155 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2157 : 68              >            pla         ;load status
2158 : 48              >            pha
                       >            cmp_flag fc
2159 : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
215b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
215d : 28              >            plp         ;restore status
                        
                                set_a $7f,0
                       >            load_flag 0
215e : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2160 : 48              >            pha         ;use stack to load status
2161 : a97f            >            lda #$7f     ;precharge accu
2163 : 28              >            plp
                        
2164 : d91702                   cmp abs1,y
                                tst_a $7f,fzc
2167 : 08              >            php         ;save flags
2168 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
216a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
216c : 68              >            pla         ;load status
216d : 48              >            pha
                       >            cmp_flag fzc
216e : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2170 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2172 : 28              >            plp         ;restore status
                        
                                set_a $7e,0
                       >            load_flag 0
2173 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2175 : 48              >            pha         ;use stack to load status
2176 : a97e            >            lda #$7e     ;precharge accu
2178 : 28              >            plp
                        
2179 : d91702                   cmp abs1,y
                                tst_a $7e,fn
217c : 08              >            php         ;save flags
217d : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
217f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2181 : 68              >            pla         ;load status
2182 : 48              >            pha
                       >            cmp_flag fn
2183 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2185 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2187 : 28              >            plp         ;restore status
                        
                                set_a $80,$ff
                       >            load_flag $ff
2188 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
218a : 48              >            pha         ;use stack to load status
218b : a980            >            lda #$80     ;precharge accu
218d : 28              >            plp
                        
218e : d91702                   cmp abs1,y
                                tst_a $80,~fnz
2191 : 08              >            php         ;save flags
2192 : c980            >            cmp #$80     ;test result
                       >            trap_ne
2194 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2196 : 68              >            pla         ;load status
2197 : 48              >            pha
                       >            cmp_flag ~fnz
2198 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
219a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
219c : 28              >            plp         ;restore status
                        
                                set_a $7f,$ff
                       >            load_flag $ff
219d : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
219f : 48              >            pha         ;use stack to load status
21a0 : a97f            >            lda #$7f     ;precharge accu
21a2 : 28              >            plp
                        
21a3 : d91702                   cmp abs1,y
                                tst_a $7f,~fn
21a6 : 08              >            php         ;save flags
21a7 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
21a9 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
21ab : 68              >            pla         ;load status
21ac : 48              >            pha
                       >            cmp_flag ~fn
21ad : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
21af : d0fe            >        bne *           ;failed not equal (non zero)
                       >
21b1 : 28              >            plp         ;restore status
                        
                                set_a $7e,$ff
                       >            load_flag $ff
21b2 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
21b4 : 48              >            pha         ;use stack to load status
21b5 : a97e            >            lda #$7e     ;precharge accu
21b7 : 28              >            plp
                        
21b8 : d91702                   cmp abs1,y
                                tst_a $7e,~fzc
21bb : 08              >            php         ;save flags
21bc : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
21be : d0fe            >        bne *           ;failed not equal (non zero)
                       >
21c0 : 68              >            pla         ;load status
21c1 : 48              >            pha
                       >            cmp_flag ~fzc
21c2 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
21c4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
21c6 : 28              >            plp         ;restore status
                        
                        
                                set_a $80,0
                       >            load_flag 0
21c7 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
21c9 : 48              >            pha         ;use stack to load status
21ca : a980            >            lda #$80     ;precharge accu
21cc : 28              >            plp
                        
21cd : c124                     cmp (ind1,x)
                                tst_a $80,fc
21cf : 08              >            php         ;save flags
21d0 : c980            >            cmp #$80     ;test result
                       >            trap_ne
21d2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
21d4 : 68              >            pla         ;load status
21d5 : 48              >            pha
                       >            cmp_flag fc
21d6 : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
21d8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
21da : 28              >            plp         ;restore status
                        
                                set_a $7f,0
                       >            load_flag 0
21db : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
21dd : 48              >            pha         ;use stack to load status
21de : a97f            >            lda #$7f     ;precharge accu
21e0 : 28              >            plp
                        
21e1 : c124                     cmp (ind1,x)
                                tst_a $7f,fzc
21e3 : 08              >            php         ;save flags
21e4 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
21e6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
21e8 : 68              >            pla         ;load status
21e9 : 48              >            pha
                       >            cmp_flag fzc
21ea : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
21ec : d0fe            >        bne *           ;failed not equal (non zero)
                       >
21ee : 28              >            plp         ;restore status
                        
                                set_a $7e,0
                       >            load_flag 0
21ef : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
21f1 : 48              >            pha         ;use stack to load status
21f2 : a97e            >            lda #$7e     ;precharge accu
21f4 : 28              >            plp
                        
21f5 : c124                     cmp (ind1,x)
                                tst_a $7e,fn
21f7 : 08              >            php         ;save flags
21f8 : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
21fa : d0fe            >        bne *           ;failed not equal (non zero)
                       >
21fc : 68              >            pla         ;load status
21fd : 48              >            pha
                       >            cmp_flag fn
21fe : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2200 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2202 : 28              >            plp         ;restore status
                        
                                set_a $80,$ff
                       >            load_flag $ff
2203 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2205 : 48              >            pha         ;use stack to load status
2206 : a980            >            lda #$80     ;precharge accu
2208 : 28              >            plp
                        
2209 : c124                     cmp (ind1,x)
                                tst_a $80,~fnz
220b : 08              >            php         ;save flags
220c : c980            >            cmp #$80     ;test result
                       >            trap_ne
220e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2210 : 68              >            pla         ;load status
2211 : 48              >            pha
                       >            cmp_flag ~fnz
2212 : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2214 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2216 : 28              >            plp         ;restore status
                        
                                set_a $7f,$ff
                       >            load_flag $ff
2217 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2219 : 48              >            pha         ;use stack to load status
221a : a97f            >            lda #$7f     ;precharge accu
221c : 28              >            plp
                        
221d : c124                     cmp (ind1,x)
                                tst_a $7f,~fn
221f : 08              >            php         ;save flags
2220 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
2222 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2224 : 68              >            pla         ;load status
2225 : 48              >            pha
                       >            cmp_flag ~fn
2226 : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2228 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
222a : 28              >            plp         ;restore status
                        
                                set_a $7e,$ff
                       >            load_flag $ff
222b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
222d : 48              >            pha         ;use stack to load status
222e : a97e            >            lda #$7e     ;precharge accu
2230 : 28              >            plp
                        
2231 : c124                     cmp (ind1,x)
                                tst_a $7e,~fzc
2233 : 08              >            php         ;save flags
2234 : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
2236 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2238 : 68              >            pla         ;load status
2239 : 48              >            pha
                       >            cmp_flag ~fzc
223a : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
223c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
223e : 28              >            plp         ;restore status
                        
                        
                                set_a $80,0
                       >            load_flag 0
223f : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2241 : 48              >            pha         ;use stack to load status
2242 : a980            >            lda #$80     ;precharge accu
2244 : 28              >            plp
                        
2245 : d124                     cmp (ind1),y
                                tst_a $80,fc
2247 : 08              >            php         ;save flags
2248 : c980            >            cmp #$80     ;test result
                       >            trap_ne
224a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
224c : 68              >            pla         ;load status
224d : 48              >            pha
                       >            cmp_flag fc
224e : c931            >            cmp #(fc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2250 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2252 : 28              >            plp         ;restore status
                        
                                set_a $7f,0
                       >            load_flag 0
2253 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2255 : 48              >            pha         ;use stack to load status
2256 : a97f            >            lda #$7f     ;precharge accu
2258 : 28              >            plp
                        
2259 : d124                     cmp (ind1),y
                                tst_a $7f,fzc
225b : 08              >            php         ;save flags
225c : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
225e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2260 : 68              >            pla         ;load status
2261 : 48              >            pha
                       >            cmp_flag fzc
2262 : c933            >            cmp #(fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2264 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2266 : 28              >            plp         ;restore status
                        
                                set_a $7e,0
                       >            load_flag 0
2267 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2269 : 48              >            pha         ;use stack to load status
226a : a97e            >            lda #$7e     ;precharge accu
226c : 28              >            plp
                        
226d : d124                     cmp (ind1),y
                                tst_a $7e,fn
226f : 08              >            php         ;save flags
2270 : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
2272 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2274 : 68              >            pla         ;load status
2275 : 48              >            pha
                       >            cmp_flag fn
2276 : c9b0            >            cmp #(fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
2278 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
227a : 28              >            plp         ;restore status
                        
                                set_a $80,$ff
                       >            load_flag $ff
227b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
227d : 48              >            pha         ;use stack to load status
227e : a980            >            lda #$80     ;precharge accu
2280 : 28              >            plp
                        
2281 : d124                     cmp (ind1),y
                                tst_a $80,~fnz
2283 : 08              >            php         ;save flags
2284 : c980            >            cmp #$80     ;test result
                       >            trap_ne
2286 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2288 : 68              >            pla         ;load status
2289 : 48              >            pha
                       >            cmp_flag ~fnz
228a : c97d            >            cmp #(~fnz|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
228c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
228e : 28              >            plp         ;restore status
                        
                                set_a $7f,$ff
                       >            load_flag $ff
228f : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2291 : 48              >            pha         ;use stack to load status
2292 : a97f            >            lda #$7f     ;precharge accu
2294 : 28              >            plp
                        
2295 : d124                     cmp (ind1),y
                                tst_a $7f,~fn
2297 : 08              >            php         ;save flags
2298 : c97f            >            cmp #$7f     ;test result
                       >            trap_ne
229a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
229c : 68              >            pla         ;load status
229d : 48              >            pha
                       >            cmp_flag ~fn
229e : c97f            >            cmp #(~fn|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
22a0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
22a2 : 28              >            plp         ;restore status
                        
                                set_a $7e,$ff
                       >            load_flag $ff
22a3 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
22a5 : 48              >            pha         ;use stack to load status
22a6 : a97e            >            lda #$7e     ;precharge accu
22a8 : 28              >            plp
                        
22a9 : d124                     cmp (ind1),y
                                tst_a $7e,~fzc
22ab : 08              >            php         ;save flags
22ac : c97e            >            cmp #$7e     ;test result
                       >            trap_ne
22ae : d0fe            >        bne *           ;failed not equal (non zero)
                       >
22b0 : 68              >            pla         ;load status
22b1 : 48              >            pha
                       >            cmp_flag ~fzc
22b2 : c9fc            >            cmp #(~fzc|fao)&m8    ;expected flags + always on bits
                       >
                       >            trap_ne
22b4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
22b6 : 28              >            plp         ;restore status
                        
                                next_test
22b7 : ad0002          >            lda test_case   ;previous test
22ba : c91c            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
22bc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
001d =                 >test_num = test_num + 1
22be : a91d            >            lda #test_num   ;*** next tests' number
22c0 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; testing shifts - ASL LSR ROL ROR all addressing modes
                        ; shifts - accumulator
22c3 : a203                     ldx #3
22c5 :                  tasl
                                set_ax zp1,0
                       >            load_flag 0
22c5 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
22c7 : 48              >            pha         ;use stack to load status
22c8 : b513            >            lda zp1,x    ;precharge accu
22ca : 28              >            plp
                        
22cb : 0a                       asl a
                                tst_ax rASL,fASL,0
22cc : 08              >            php         ;save flags
22cd : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
22d0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
22d2 : 68              >            pla         ;load status
                       >            eor_flag 0
22d3 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
22d5 : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne     ;
22d8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
22da : ca                       dex
22db : 10e8                     bpl tasl
22dd : a203                     ldx #3
22df :                  tasl1
                                set_ax zp1,$ff
                       >            load_flag $ff
22df : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
22e1 : 48              >            pha         ;use stack to load status
22e2 : b513            >            lda zp1,x    ;precharge accu
22e4 : 28              >            plp
                        
22e5 : 0a                       asl a
                                tst_ax rASL,fASL,$ff-fnzc
22e6 : 08              >            php         ;save flags
22e7 : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
22ea : d0fe            >        bne *           ;failed not equal (non zero)
                       >
22ec : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
22ed : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
22ef : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne     ;
22f2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
22f4 : ca                       dex
22f5 : 10e8                     bpl tasl1
                        
22f7 : a203                     ldx #3
22f9 :                  tlsr
                                set_ax zp1,0
                       >            load_flag 0
22f9 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
22fb : 48              >            pha         ;use stack to load status
22fc : b513            >            lda zp1,x    ;precharge accu
22fe : 28              >            plp
                        
22ff : 4a                       lsr a
                                tst_ax rLSR,fLSR,0
2300 : 08              >            php         ;save flags
2301 : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
2304 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2306 : 68              >            pla         ;load status
                       >            eor_flag 0
2307 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2309 : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne     ;
230c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
230e : ca                       dex
230f : 10e8                     bpl tlsr
2311 : a203                     ldx #3
2313 :                  tlsr1
                                set_ax zp1,$ff
                       >            load_flag $ff
2313 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2315 : 48              >            pha         ;use stack to load status
2316 : b513            >            lda zp1,x    ;precharge accu
2318 : 28              >            plp
                        
2319 : 4a                       lsr a
                                tst_ax rLSR,fLSR,$ff-fnzc
231a : 08              >            php         ;save flags
231b : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
231e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2320 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2321 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2323 : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne     ;
2326 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2328 : ca                       dex
2329 : 10e8                     bpl tlsr1
                        
232b : a203                     ldx #3
232d :                  trol
                                set_ax zp1,0
                       >            load_flag 0
232d : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
232f : 48              >            pha         ;use stack to load status
2330 : b513            >            lda zp1,x    ;precharge accu
2332 : 28              >            plp
                        
2333 : 2a                       rol a
                                tst_ax rROL,fROL,0
2334 : 08              >            php         ;save flags
2335 : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
2338 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
233a : 68              >            pla         ;load status
                       >            eor_flag 0
233b : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
233d : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne     ;
2340 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2342 : ca                       dex
2343 : 10e8                     bpl trol
2345 : a203                     ldx #3
2347 :                  trol1
                                set_ax zp1,$ff-fc
                       >            load_flag $ff-fc
2347 : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
2349 : 48              >            pha         ;use stack to load status
234a : b513            >            lda zp1,x    ;precharge accu
234c : 28              >            plp
                        
234d : 2a                       rol a
                                tst_ax rROL,fROL,$ff-fnzc
234e : 08              >            php         ;save flags
234f : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
2352 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2354 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2355 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2357 : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne     ;
235a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
235c : ca                       dex
235d : 10e8                     bpl trol1
                        
235f : a203                     ldx #3
2361 :                  trolc
                                set_ax zp1,fc
                       >            load_flag fc
2361 : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
2363 : 48              >            pha         ;use stack to load status
2364 : b513            >            lda zp1,x    ;precharge accu
2366 : 28              >            plp
                        
2367 : 2a                       rol a
                                tst_ax rROLc,fROLc,0
2368 : 08              >            php         ;save flags
2369 : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
236c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
236e : 68              >            pla         ;load status
                       >            eor_flag 0
236f : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2371 : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne     ;
2374 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2376 : ca                       dex
2377 : 10e8                     bpl trolc
2379 : a203                     ldx #3
237b :                  trolc1
                                set_ax zp1,$ff
                       >            load_flag $ff
237b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
237d : 48              >            pha         ;use stack to load status
237e : b513            >            lda zp1,x    ;precharge accu
2380 : 28              >            plp
                        
2381 : 2a                       rol a
                                tst_ax rROLc,fROLc,$ff-fnzc
2382 : 08              >            php         ;save flags
2383 : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
2386 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2388 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2389 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
238b : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne     ;
238e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2390 : ca                       dex
2391 : 10e8                     bpl trolc1
                        
2393 : a203                     ldx #3
2395 :                  tror
                                set_ax zp1,0
                       >            load_flag 0
2395 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2397 : 48              >            pha         ;use stack to load status
2398 : b513            >            lda zp1,x    ;precharge accu
239a : 28              >            plp
                        
239b : 6a                       ror a
                                tst_ax rROR,fROR,0
239c : 08              >            php         ;save flags
239d : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
23a0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
23a2 : 68              >            pla         ;load status
                       >            eor_flag 0
23a3 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
23a5 : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne     ;
23a8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
23aa : ca                       dex
23ab : 10e8                     bpl tror
23ad : a203                     ldx #3
23af :                  tror1
                                set_ax zp1,$ff-fc
                       >            load_flag $ff-fc
23af : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
23b1 : 48              >            pha         ;use stack to load status
23b2 : b513            >            lda zp1,x    ;precharge accu
23b4 : 28              >            plp
                        
23b5 : 6a                       ror a
                                tst_ax rROR,fROR,$ff-fnzc
23b6 : 08              >            php         ;save flags
23b7 : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
23ba : d0fe            >        bne *           ;failed not equal (non zero)
                       >
23bc : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
23bd : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
23bf : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne     ;
23c2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
23c4 : ca                       dex
23c5 : 10e8                     bpl tror1
                        
23c7 : a203                     ldx #3
23c9 :                  trorc
                                set_ax zp1,fc
                       >            load_flag fc
23c9 : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
23cb : 48              >            pha         ;use stack to load status
23cc : b513            >            lda zp1,x    ;precharge accu
23ce : 28              >            plp
                        
23cf : 6a                       ror a
                                tst_ax rRORc,fRORc,0
23d0 : 08              >            php         ;save flags
23d1 : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
23d4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
23d6 : 68              >            pla         ;load status
                       >            eor_flag 0
23d7 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
23d9 : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne     ;
23dc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
23de : ca                       dex
23df : 10e8                     bpl trorc
23e1 : a203                     ldx #3
23e3 :                  trorc1
                                set_ax zp1,$ff
                       >            load_flag $ff
23e3 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
23e5 : 48              >            pha         ;use stack to load status
23e6 : b513            >            lda zp1,x    ;precharge accu
23e8 : 28              >            plp
                        
23e9 : 6a                       ror a
                                tst_ax rRORc,fRORc,$ff-fnzc
23ea : 08              >            php         ;save flags
23eb : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
23ee : d0fe            >        bne *           ;failed not equal (non zero)
                       >
23f0 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
23f1 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
23f3 : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne     ;
23f6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
23f8 : ca                       dex
23f9 : 10e8                     bpl trorc1
                                next_test
23fb : ad0002          >            lda test_case   ;previous test
23fe : c91d            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
2400 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
001e =                 >test_num = test_num + 1
2402 : a91e            >            lda #test_num   ;*** next tests' number
2404 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; shifts - zeropage
2407 : a203                     ldx #3
2409 :                  tasl2
                                set_z zp1,0
                       >            load_flag 0
2409 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
240b : 48              >            pha         ;use stack to load status
240c : b513            >            lda zp1,x    ;load to zeropage
240e : 850c            >            sta zpt
2410 : 28              >            plp
                        
2411 : 060c                     asl zpt
                                tst_z rASL,fASL,0
2413 : 08              >            php         ;save flags
2414 : a50c            >            lda zpt
2416 : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
2419 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
241b : 68              >            pla         ;load status
                       >            eor_flag 0
241c : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
241e : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne
2421 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2423 : ca                       dex
2424 : 10e3                     bpl tasl2
2426 : a203                     ldx #3
2428 :                  tasl3
                                set_z zp1,$ff
                       >            load_flag $ff
2428 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
242a : 48              >            pha         ;use stack to load status
242b : b513            >            lda zp1,x    ;load to zeropage
242d : 850c            >            sta zpt
242f : 28              >            plp
                        
2430 : 060c                     asl zpt
                                tst_z rASL,fASL,$ff-fnzc
2432 : 08              >            php         ;save flags
2433 : a50c            >            lda zpt
2435 : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
2438 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
243a : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
243b : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
243d : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne
2440 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2442 : ca                       dex
2443 : 10e3                     bpl tasl3
                        
2445 : a203                     ldx #3
2447 :                  tlsr2
                                set_z zp1,0
                       >            load_flag 0
2447 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2449 : 48              >            pha         ;use stack to load status
244a : b513            >            lda zp1,x    ;load to zeropage
244c : 850c            >            sta zpt
244e : 28              >            plp
                        
244f : 460c                     lsr zpt
                                tst_z rLSR,fLSR,0
2451 : 08              >            php         ;save flags
2452 : a50c            >            lda zpt
2454 : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
2457 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2459 : 68              >            pla         ;load status
                       >            eor_flag 0
245a : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
245c : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne
245f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2461 : ca                       dex
2462 : 10e3                     bpl tlsr2
2464 : a203                     ldx #3
2466 :                  tlsr3
                                set_z zp1,$ff
                       >            load_flag $ff
2466 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2468 : 48              >            pha         ;use stack to load status
2469 : b513            >            lda zp1,x    ;load to zeropage
246b : 850c            >            sta zpt
246d : 28              >            plp
                        
246e : 460c                     lsr zpt
                                tst_z rLSR,fLSR,$ff-fnzc
2470 : 08              >            php         ;save flags
2471 : a50c            >            lda zpt
2473 : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
2476 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2478 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2479 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
247b : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne
247e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2480 : ca                       dex
2481 : 10e3                     bpl tlsr3
                        
2483 : a203                     ldx #3
2485 :                  trol2
                                set_z zp1,0
                       >            load_flag 0
2485 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2487 : 48              >            pha         ;use stack to load status
2488 : b513            >            lda zp1,x    ;load to zeropage
248a : 850c            >            sta zpt
248c : 28              >            plp
                        
248d : 260c                     rol zpt
                                tst_z rROL,fROL,0
248f : 08              >            php         ;save flags
2490 : a50c            >            lda zpt
2492 : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
2495 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2497 : 68              >            pla         ;load status
                       >            eor_flag 0
2498 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
249a : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne
249d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
249f : ca                       dex
24a0 : 10e3                     bpl trol2
24a2 : a203                     ldx #3
24a4 :                  trol3
                                set_z zp1,$ff-fc
                       >            load_flag $ff-fc
24a4 : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
24a6 : 48              >            pha         ;use stack to load status
24a7 : b513            >            lda zp1,x    ;load to zeropage
24a9 : 850c            >            sta zpt
24ab : 28              >            plp
                        
24ac : 260c                     rol zpt
                                tst_z rROL,fROL,$ff-fnzc
24ae : 08              >            php         ;save flags
24af : a50c            >            lda zpt
24b1 : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
24b4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
24b6 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
24b7 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
24b9 : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne
24bc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
24be : ca                       dex
24bf : 10e3                     bpl trol3
                        
24c1 : a203                     ldx #3
24c3 :                  trolc2
                                set_z zp1,fc
                       >            load_flag fc
24c3 : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
24c5 : 48              >            pha         ;use stack to load status
24c6 : b513            >            lda zp1,x    ;load to zeropage
24c8 : 850c            >            sta zpt
24ca : 28              >            plp
                        
24cb : 260c                     rol zpt
                                tst_z rROLc,fROLc,0
24cd : 08              >            php         ;save flags
24ce : a50c            >            lda zpt
24d0 : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
24d3 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
24d5 : 68              >            pla         ;load status
                       >            eor_flag 0
24d6 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
24d8 : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne
24db : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
24dd : ca                       dex
24de : 10e3                     bpl trolc2
24e0 : a203                     ldx #3
24e2 :                  trolc3
                                set_z zp1,$ff
                       >            load_flag $ff
24e2 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
24e4 : 48              >            pha         ;use stack to load status
24e5 : b513            >            lda zp1,x    ;load to zeropage
24e7 : 850c            >            sta zpt
24e9 : 28              >            plp
                        
24ea : 260c                     rol zpt
                                tst_z rROLc,fROLc,$ff-fnzc
24ec : 08              >            php         ;save flags
24ed : a50c            >            lda zpt
24ef : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
24f2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
24f4 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
24f5 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
24f7 : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne
24fa : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
24fc : ca                       dex
24fd : 10e3                     bpl trolc3
                        
24ff : a203                     ldx #3
2501 :                  tror2
                                set_z zp1,0
                       >            load_flag 0
2501 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2503 : 48              >            pha         ;use stack to load status
2504 : b513            >            lda zp1,x    ;load to zeropage
2506 : 850c            >            sta zpt
2508 : 28              >            plp
                        
2509 : 660c                     ror zpt
                                tst_z rROR,fROR,0
250b : 08              >            php         ;save flags
250c : a50c            >            lda zpt
250e : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
2511 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2513 : 68              >            pla         ;load status
                       >            eor_flag 0
2514 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2516 : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne
2519 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
251b : ca                       dex
251c : 10e3                     bpl tror2
251e : a203                     ldx #3
2520 :                  tror3
                                set_z zp1,$ff-fc
                       >            load_flag $ff-fc
2520 : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
2522 : 48              >            pha         ;use stack to load status
2523 : b513            >            lda zp1,x    ;load to zeropage
2525 : 850c            >            sta zpt
2527 : 28              >            plp
                        
2528 : 660c                     ror zpt
                                tst_z rROR,fROR,$ff-fnzc
252a : 08              >            php         ;save flags
252b : a50c            >            lda zpt
252d : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
2530 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2532 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2533 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2535 : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne
2538 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
253a : ca                       dex
253b : 10e3                     bpl tror3
                        
253d : a203                     ldx #3
253f :                  trorc2
                                set_z zp1,fc
                       >            load_flag fc
253f : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
2541 : 48              >            pha         ;use stack to load status
2542 : b513            >            lda zp1,x    ;load to zeropage
2544 : 850c            >            sta zpt
2546 : 28              >            plp
                        
2547 : 660c                     ror zpt
                                tst_z rRORc,fRORc,0
2549 : 08              >            php         ;save flags
254a : a50c            >            lda zpt
254c : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
254f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2551 : 68              >            pla         ;load status
                       >            eor_flag 0
2552 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2554 : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne
2557 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2559 : ca                       dex
255a : 10e3                     bpl trorc2
255c : a203                     ldx #3
255e :                  trorc3
                                set_z zp1,$ff
                       >            load_flag $ff
255e : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2560 : 48              >            pha         ;use stack to load status
2561 : b513            >            lda zp1,x    ;load to zeropage
2563 : 850c            >            sta zpt
2565 : 28              >            plp
                        
2566 : 660c                     ror zpt
                                tst_z rRORc,fRORc,$ff-fnzc
2568 : 08              >            php         ;save flags
2569 : a50c            >            lda zpt
256b : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
256e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2570 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2571 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2573 : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne
2576 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2578 : ca                       dex
2579 : 10e3                     bpl trorc3
                                next_test
257b : ad0002          >            lda test_case   ;previous test
257e : c91e            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
2580 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
001f =                 >test_num = test_num + 1
2582 : a91f            >            lda #test_num   ;*** next tests' number
2584 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; shifts - absolute
2587 : a203                     ldx #3
2589 :                  tasl4
                                set_abs zp1,0
                       >            load_flag 0
2589 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
258b : 48              >            pha         ;use stack to load status
258c : b513            >            lda zp1,x    ;load to memory
258e : 8d0302          >            sta abst
2591 : 28              >            plp
                        
2592 : 0e0302                   asl abst
                                tst_abs rASL,fASL,0
2595 : 08              >            php         ;save flags
2596 : ad0302          >            lda abst
2599 : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
259c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
259e : 68              >            pla         ;load status
                       >            eor_flag 0
259f : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
25a1 : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne
25a4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
25a6 : ca                       dex
25a7 : 10e0                     bpl tasl4
25a9 : a203                     ldx #3
25ab :                  tasl5
                                set_abs zp1,$ff
                       >            load_flag $ff
25ab : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
25ad : 48              >            pha         ;use stack to load status
25ae : b513            >            lda zp1,x    ;load to memory
25b0 : 8d0302          >            sta abst
25b3 : 28              >            plp
                        
25b4 : 0e0302                   asl abst
                                tst_abs rASL,fASL,$ff-fnzc
25b7 : 08              >            php         ;save flags
25b8 : ad0302          >            lda abst
25bb : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
25be : d0fe            >        bne *           ;failed not equal (non zero)
                       >
25c0 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
25c1 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
25c3 : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne
25c6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
25c8 : ca                       dex
25c9 : 10e0                     bpl tasl5
                        
25cb : a203                     ldx #3
25cd :                  tlsr4
                                set_abs zp1,0
                       >            load_flag 0
25cd : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
25cf : 48              >            pha         ;use stack to load status
25d0 : b513            >            lda zp1,x    ;load to memory
25d2 : 8d0302          >            sta abst
25d5 : 28              >            plp
                        
25d6 : 4e0302                   lsr abst
                                tst_abs rLSR,fLSR,0
25d9 : 08              >            php         ;save flags
25da : ad0302          >            lda abst
25dd : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
25e0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
25e2 : 68              >            pla         ;load status
                       >            eor_flag 0
25e3 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
25e5 : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne
25e8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
25ea : ca                       dex
25eb : 10e0                     bpl tlsr4
25ed : a203                     ldx #3
25ef :                  tlsr5
                                set_abs zp1,$ff
                       >            load_flag $ff
25ef : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
25f1 : 48              >            pha         ;use stack to load status
25f2 : b513            >            lda zp1,x    ;load to memory
25f4 : 8d0302          >            sta abst
25f7 : 28              >            plp
                        
25f8 : 4e0302                   lsr abst
                                tst_abs rLSR,fLSR,$ff-fnzc
25fb : 08              >            php         ;save flags
25fc : ad0302          >            lda abst
25ff : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
2602 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2604 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2605 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2607 : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne
260a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
260c : ca                       dex
260d : 10e0                     bpl tlsr5
                        
260f : a203                     ldx #3
2611 :                  trol4
                                set_abs zp1,0
                       >            load_flag 0
2611 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2613 : 48              >            pha         ;use stack to load status
2614 : b513            >            lda zp1,x    ;load to memory
2616 : 8d0302          >            sta abst
2619 : 28              >            plp
                        
261a : 2e0302                   rol abst
                                tst_abs rROL,fROL,0
261d : 08              >            php         ;save flags
261e : ad0302          >            lda abst
2621 : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
2624 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2626 : 68              >            pla         ;load status
                       >            eor_flag 0
2627 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2629 : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne
262c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
262e : ca                       dex
262f : 10e0                     bpl trol4
2631 : a203                     ldx #3
2633 :                  trol5
                                set_abs zp1,$ff-fc
                       >            load_flag $ff-fc
2633 : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
2635 : 48              >            pha         ;use stack to load status
2636 : b513            >            lda zp1,x    ;load to memory
2638 : 8d0302          >            sta abst
263b : 28              >            plp
                        
263c : 2e0302                   rol abst
                                tst_abs rROL,fROL,$ff-fnzc
263f : 08              >            php         ;save flags
2640 : ad0302          >            lda abst
2643 : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
2646 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2648 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2649 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
264b : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne
264e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2650 : ca                       dex
2651 : 10e0                     bpl trol5
                        
2653 : a203                     ldx #3
2655 :                  trolc4
                                set_abs zp1,fc
                       >            load_flag fc
2655 : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
2657 : 48              >            pha         ;use stack to load status
2658 : b513            >            lda zp1,x    ;load to memory
265a : 8d0302          >            sta abst
265d : 28              >            plp
                        
265e : 2e0302                   rol abst
                                tst_abs rROLc,fROLc,0
2661 : 08              >            php         ;save flags
2662 : ad0302          >            lda abst
2665 : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
2668 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
266a : 68              >            pla         ;load status
                       >            eor_flag 0
266b : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
266d : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne
2670 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2672 : ca                       dex
2673 : 10e0                     bpl trolc4
2675 : a203                     ldx #3
2677 :                  trolc5
                                set_abs zp1,$ff
                       >            load_flag $ff
2677 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2679 : 48              >            pha         ;use stack to load status
267a : b513            >            lda zp1,x    ;load to memory
267c : 8d0302          >            sta abst
267f : 28              >            plp
                        
2680 : 2e0302                   rol abst
                                tst_abs rROLc,fROLc,$ff-fnzc
2683 : 08              >            php         ;save flags
2684 : ad0302          >            lda abst
2687 : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
268a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
268c : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
268d : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
268f : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne
2692 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2694 : ca                       dex
2695 : 10e0                     bpl trolc5
                        
2697 : a203                     ldx #3
2699 :                  tror4
                                set_abs zp1,0
                       >            load_flag 0
2699 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
269b : 48              >            pha         ;use stack to load status
269c : b513            >            lda zp1,x    ;load to memory
269e : 8d0302          >            sta abst
26a1 : 28              >            plp
                        
26a2 : 6e0302                   ror abst
                                tst_abs rROR,fROR,0
26a5 : 08              >            php         ;save flags
26a6 : ad0302          >            lda abst
26a9 : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
26ac : d0fe            >        bne *           ;failed not equal (non zero)
                       >
26ae : 68              >            pla         ;load status
                       >            eor_flag 0
26af : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
26b1 : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne
26b4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
26b6 : ca                       dex
26b7 : 10e0                     bpl tror4
26b9 : a203                     ldx #3
26bb :                  tror5
                                set_abs zp1,$ff-fc
                       >            load_flag $ff-fc
26bb : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
26bd : 48              >            pha         ;use stack to load status
26be : b513            >            lda zp1,x    ;load to memory
26c0 : 8d0302          >            sta abst
26c3 : 28              >            plp
                        
26c4 : 6e0302                   ror abst
                                tst_abs rROR,fROR,$ff-fnzc
26c7 : 08              >            php         ;save flags
26c8 : ad0302          >            lda abst
26cb : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
26ce : d0fe            >        bne *           ;failed not equal (non zero)
                       >
26d0 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
26d1 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
26d3 : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne
26d6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
26d8 : ca                       dex
26d9 : 10e0                     bpl tror5
                        
26db : a203                     ldx #3
26dd :                  trorc4
                                set_abs zp1,fc
                       >            load_flag fc
26dd : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
26df : 48              >            pha         ;use stack to load status
26e0 : b513            >            lda zp1,x    ;load to memory
26e2 : 8d0302          >            sta abst
26e5 : 28              >            plp
                        
26e6 : 6e0302                   ror abst
                                tst_abs rRORc,fRORc,0
26e9 : 08              >            php         ;save flags
26ea : ad0302          >            lda abst
26ed : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
26f0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
26f2 : 68              >            pla         ;load status
                       >            eor_flag 0
26f3 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
26f5 : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne
26f8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
26fa : ca                       dex
26fb : 10e0                     bpl trorc4
26fd : a203                     ldx #3
26ff :                  trorc5
                                set_abs zp1,$ff
                       >            load_flag $ff
26ff : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2701 : 48              >            pha         ;use stack to load status
2702 : b513            >            lda zp1,x    ;load to memory
2704 : 8d0302          >            sta abst
2707 : 28              >            plp
                        
2708 : 6e0302                   ror abst
                                tst_abs rRORc,fRORc,$ff-fnzc
270b : 08              >            php         ;save flags
270c : ad0302          >            lda abst
270f : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
2712 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2714 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2715 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2717 : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne
271a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
271c : ca                       dex
271d : 10e0                     bpl trorc5
                                next_test
271f : ad0002          >            lda test_case   ;previous test
2722 : c91f            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
2724 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0020 =                 >test_num = test_num + 1
2726 : a920            >            lda #test_num   ;*** next tests' number
2728 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; shifts - zp indexed
272b : a203                     ldx #3
272d :                  tasl6
                                set_zx zp1,0
                       >            load_flag 0
272d : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
272f : 48              >            pha         ;use stack to load status
2730 : b513            >            lda zp1,x    ;load to indexed zeropage
2732 : 950c            >            sta zpt,x
2734 : 28              >            plp
                        
2735 : 160c                     asl zpt,x
                                tst_zx rASL,fASL,0
2737 : 08              >            php         ;save flags
2738 : b50c            >            lda zpt,x
273a : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
273d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
273f : 68              >            pla         ;load status
                       >            eor_flag 0
2740 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2742 : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne
2745 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2747 : ca                       dex
2748 : 10e3                     bpl tasl6
274a : a203                     ldx #3
274c :                  tasl7
                                set_zx zp1,$ff
                       >            load_flag $ff
274c : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
274e : 48              >            pha         ;use stack to load status
274f : b513            >            lda zp1,x    ;load to indexed zeropage
2751 : 950c            >            sta zpt,x
2753 : 28              >            plp
                        
2754 : 160c                     asl zpt,x
                                tst_zx rASL,fASL,$ff-fnzc
2756 : 08              >            php         ;save flags
2757 : b50c            >            lda zpt,x
2759 : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
275c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
275e : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
275f : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2761 : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne
2764 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2766 : ca                       dex
2767 : 10e3                     bpl tasl7
                        
2769 : a203                     ldx #3
276b :                  tlsr6
                                set_zx zp1,0
                       >            load_flag 0
276b : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
276d : 48              >            pha         ;use stack to load status
276e : b513            >            lda zp1,x    ;load to indexed zeropage
2770 : 950c            >            sta zpt,x
2772 : 28              >            plp
                        
2773 : 560c                     lsr zpt,x
                                tst_zx rLSR,fLSR,0
2775 : 08              >            php         ;save flags
2776 : b50c            >            lda zpt,x
2778 : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
277b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
277d : 68              >            pla         ;load status
                       >            eor_flag 0
277e : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2780 : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne
2783 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2785 : ca                       dex
2786 : 10e3                     bpl tlsr6
2788 : a203                     ldx #3
278a :                  tlsr7
                                set_zx zp1,$ff
                       >            load_flag $ff
278a : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
278c : 48              >            pha         ;use stack to load status
278d : b513            >            lda zp1,x    ;load to indexed zeropage
278f : 950c            >            sta zpt,x
2791 : 28              >            plp
                        
2792 : 560c                     lsr zpt,x
                                tst_zx rLSR,fLSR,$ff-fnzc
2794 : 08              >            php         ;save flags
2795 : b50c            >            lda zpt,x
2797 : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
279a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
279c : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
279d : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
279f : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne
27a2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
27a4 : ca                       dex
27a5 : 10e3                     bpl tlsr7
                        
27a7 : a203                     ldx #3
27a9 :                  trol6
                                set_zx zp1,0
                       >            load_flag 0
27a9 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
27ab : 48              >            pha         ;use stack to load status
27ac : b513            >            lda zp1,x    ;load to indexed zeropage
27ae : 950c            >            sta zpt,x
27b0 : 28              >            plp
                        
27b1 : 360c                     rol zpt,x
                                tst_zx rROL,fROL,0
27b3 : 08              >            php         ;save flags
27b4 : b50c            >            lda zpt,x
27b6 : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
27b9 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
27bb : 68              >            pla         ;load status
                       >            eor_flag 0
27bc : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
27be : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne
27c1 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
27c3 : ca                       dex
27c4 : 10e3                     bpl trol6
27c6 : a203                     ldx #3
27c8 :                  trol7
                                set_zx zp1,$ff-fc
                       >            load_flag $ff-fc
27c8 : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
27ca : 48              >            pha         ;use stack to load status
27cb : b513            >            lda zp1,x    ;load to indexed zeropage
27cd : 950c            >            sta zpt,x
27cf : 28              >            plp
                        
27d0 : 360c                     rol zpt,x
                                tst_zx rROL,fROL,$ff-fnzc
27d2 : 08              >            php         ;save flags
27d3 : b50c            >            lda zpt,x
27d5 : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
27d8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
27da : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
27db : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
27dd : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne
27e0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
27e2 : ca                       dex
27e3 : 10e3                     bpl trol7
                        
27e5 : a203                     ldx #3
27e7 :                  trolc6
                                set_zx zp1,fc
                       >            load_flag fc
27e7 : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
27e9 : 48              >            pha         ;use stack to load status
27ea : b513            >            lda zp1,x    ;load to indexed zeropage
27ec : 950c            >            sta zpt,x
27ee : 28              >            plp
                        
27ef : 360c                     rol zpt,x
                                tst_zx rROLc,fROLc,0
27f1 : 08              >            php         ;save flags
27f2 : b50c            >            lda zpt,x
27f4 : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
27f7 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
27f9 : 68              >            pla         ;load status
                       >            eor_flag 0
27fa : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
27fc : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne
27ff : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2801 : ca                       dex
2802 : 10e3                     bpl trolc6
2804 : a203                     ldx #3
2806 :                  trolc7
                                set_zx zp1,$ff
                       >            load_flag $ff
2806 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2808 : 48              >            pha         ;use stack to load status
2809 : b513            >            lda zp1,x    ;load to indexed zeropage
280b : 950c            >            sta zpt,x
280d : 28              >            plp
                        
280e : 360c                     rol zpt,x
                                tst_zx rROLc,fROLc,$ff-fnzc
2810 : 08              >            php         ;save flags
2811 : b50c            >            lda zpt,x
2813 : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
2816 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2818 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2819 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
281b : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne
281e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2820 : ca                       dex
2821 : 10e3                     bpl trolc7
                        
2823 : a203                     ldx #3
2825 :                  tror6
                                set_zx zp1,0
                       >            load_flag 0
2825 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2827 : 48              >            pha         ;use stack to load status
2828 : b513            >            lda zp1,x    ;load to indexed zeropage
282a : 950c            >            sta zpt,x
282c : 28              >            plp
                        
282d : 760c                     ror zpt,x
                                tst_zx rROR,fROR,0
282f : 08              >            php         ;save flags
2830 : b50c            >            lda zpt,x
2832 : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
2835 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2837 : 68              >            pla         ;load status
                       >            eor_flag 0
2838 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
283a : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne
283d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
283f : ca                       dex
2840 : 10e3                     bpl tror6
2842 : a203                     ldx #3
2844 :                  tror7
                                set_zx zp1,$ff-fc
                       >            load_flag $ff-fc
2844 : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
2846 : 48              >            pha         ;use stack to load status
2847 : b513            >            lda zp1,x    ;load to indexed zeropage
2849 : 950c            >            sta zpt,x
284b : 28              >            plp
                        
284c : 760c                     ror zpt,x
                                tst_zx rROR,fROR,$ff-fnzc
284e : 08              >            php         ;save flags
284f : b50c            >            lda zpt,x
2851 : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
2854 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2856 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2857 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2859 : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne
285c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
285e : ca                       dex
285f : 10e3                     bpl tror7
                        
2861 : a203                     ldx #3
2863 :                  trorc6
                                set_zx zp1,fc
                       >            load_flag fc
2863 : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
2865 : 48              >            pha         ;use stack to load status
2866 : b513            >            lda zp1,x    ;load to indexed zeropage
2868 : 950c            >            sta zpt,x
286a : 28              >            plp
                        
286b : 760c                     ror zpt,x
                                tst_zx rRORc,fRORc,0
286d : 08              >            php         ;save flags
286e : b50c            >            lda zpt,x
2870 : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
2873 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2875 : 68              >            pla         ;load status
                       >            eor_flag 0
2876 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2878 : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne
287b : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
287d : ca                       dex
287e : 10e3                     bpl trorc6
2880 : a203                     ldx #3
2882 :                  trorc7
                                set_zx zp1,$ff
                       >            load_flag $ff
2882 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2884 : 48              >            pha         ;use stack to load status
2885 : b513            >            lda zp1,x    ;load to indexed zeropage
2887 : 950c            >            sta zpt,x
2889 : 28              >            plp
                        
288a : 760c                     ror zpt,x
                                tst_zx rRORc,fRORc,$ff-fnzc
288c : 08              >            php         ;save flags
288d : b50c            >            lda zpt,x
288f : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
2892 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2894 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2895 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2897 : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne
289a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
289c : ca                       dex
289d : 10e3                     bpl trorc7
                                next_test
289f : ad0002          >            lda test_case   ;previous test
28a2 : c920            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
28a4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0021 =                 >test_num = test_num + 1
28a6 : a921            >            lda #test_num   ;*** next tests' number
28a8 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                                
                        ; shifts - abs indexed
28ab : a203                     ldx #3
28ad :                  tasl8
                                set_absx zp1,0
                       >            load_flag 0
28ad : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
28af : 48              >            pha         ;use stack to load status
28b0 : b513            >            lda zp1,x    ;load to indexed memory
28b2 : 9d0302          >            sta abst,x
28b5 : 28              >            plp
                        
28b6 : 1e0302                   asl abst,x
                                tst_absx rASL,fASL,0
28b9 : 08              >            php         ;save flags
28ba : bd0302          >            lda abst,x
28bd : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
28c0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
28c2 : 68              >            pla         ;load status
                       >            eor_flag 0
28c3 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
28c5 : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne
28c8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
28ca : ca                       dex
28cb : 10e0                     bpl tasl8
28cd : a203                     ldx #3
28cf :                  tasl9
                                set_absx zp1,$ff
                       >            load_flag $ff
28cf : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
28d1 : 48              >            pha         ;use stack to load status
28d2 : b513            >            lda zp1,x    ;load to indexed memory
28d4 : 9d0302          >            sta abst,x
28d7 : 28              >            plp
                        
28d8 : 1e0302                   asl abst,x
                                tst_absx rASL,fASL,$ff-fnzc
28db : 08              >            php         ;save flags
28dc : bd0302          >            lda abst,x
28df : dd2002          >            cmp rASL,x    ;test result
                       >            trap_ne
28e2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
28e4 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
28e5 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
28e7 : dd3002          >            cmp fASL,x    ;test flags
                       >            trap_ne
28ea : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
28ec : ca                       dex
28ed : 10e0                     bpl tasl9
                        
28ef : a203                     ldx #3
28f1 :                  tlsr8
                                set_absx zp1,0
                       >            load_flag 0
28f1 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
28f3 : 48              >            pha         ;use stack to load status
28f4 : b513            >            lda zp1,x    ;load to indexed memory
28f6 : 9d0302          >            sta abst,x
28f9 : 28              >            plp
                        
28fa : 5e0302                   lsr abst,x
                                tst_absx rLSR,fLSR,0
28fd : 08              >            php         ;save flags
28fe : bd0302          >            lda abst,x
2901 : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
2904 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2906 : 68              >            pla         ;load status
                       >            eor_flag 0
2907 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2909 : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne
290c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
290e : ca                       dex
290f : 10e0                     bpl tlsr8
2911 : a203                     ldx #3
2913 :                  tlsr9
                                set_absx zp1,$ff
                       >            load_flag $ff
2913 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2915 : 48              >            pha         ;use stack to load status
2916 : b513            >            lda zp1,x    ;load to indexed memory
2918 : 9d0302          >            sta abst,x
291b : 28              >            plp
                        
291c : 5e0302                   lsr abst,x
                                tst_absx rLSR,fLSR,$ff-fnzc
291f : 08              >            php         ;save flags
2920 : bd0302          >            lda abst,x
2923 : dd2802          >            cmp rLSR,x    ;test result
                       >            trap_ne
2926 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2928 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2929 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
292b : dd3802          >            cmp fLSR,x    ;test flags
                       >            trap_ne
292e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2930 : ca                       dex
2931 : 10e0                     bpl tlsr9
                        
2933 : a203                     ldx #3
2935 :                  trol8
                                set_absx zp1,0
                       >            load_flag 0
2935 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2937 : 48              >            pha         ;use stack to load status
2938 : b513            >            lda zp1,x    ;load to indexed memory
293a : 9d0302          >            sta abst,x
293d : 28              >            plp
                        
293e : 3e0302                   rol abst,x
                                tst_absx rROL,fROL,0
2941 : 08              >            php         ;save flags
2942 : bd0302          >            lda abst,x
2945 : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
2948 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
294a : 68              >            pla         ;load status
                       >            eor_flag 0
294b : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
294d : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne
2950 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2952 : ca                       dex
2953 : 10e0                     bpl trol8
2955 : a203                     ldx #3
2957 :                  trol9
                                set_absx zp1,$ff-fc
                       >            load_flag $ff-fc
2957 : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
2959 : 48              >            pha         ;use stack to load status
295a : b513            >            lda zp1,x    ;load to indexed memory
295c : 9d0302          >            sta abst,x
295f : 28              >            plp
                        
2960 : 3e0302                   rol abst,x
                                tst_absx rROL,fROL,$ff-fnzc
2963 : 08              >            php         ;save flags
2964 : bd0302          >            lda abst,x
2967 : dd2002          >            cmp rROL,x    ;test result
                       >            trap_ne
296a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
296c : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
296d : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
296f : dd3002          >            cmp fROL,x    ;test flags
                       >            trap_ne
2972 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2974 : ca                       dex
2975 : 10e0                     bpl trol9
                        
2977 : a203                     ldx #3
2979 :                  trolc8
                                set_absx zp1,fc
                       >            load_flag fc
2979 : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
297b : 48              >            pha         ;use stack to load status
297c : b513            >            lda zp1,x    ;load to indexed memory
297e : 9d0302          >            sta abst,x
2981 : 28              >            plp
                        
2982 : 3e0302                   rol abst,x
                                tst_absx rROLc,fROLc,0
2985 : 08              >            php         ;save flags
2986 : bd0302          >            lda abst,x
2989 : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
298c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
298e : 68              >            pla         ;load status
                       >            eor_flag 0
298f : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2991 : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne
2994 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2996 : ca                       dex
2997 : 10e0                     bpl trolc8
2999 : a203                     ldx #3
299b :                  trolc9
                                set_absx zp1,$ff
                       >            load_flag $ff
299b : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
299d : 48              >            pha         ;use stack to load status
299e : b513            >            lda zp1,x    ;load to indexed memory
29a0 : 9d0302          >            sta abst,x
29a3 : 28              >            plp
                        
29a4 : 3e0302                   rol abst,x
                                tst_absx rROLc,fROLc,$ff-fnzc
29a7 : 08              >            php         ;save flags
29a8 : bd0302          >            lda abst,x
29ab : dd2402          >            cmp rROLc,x    ;test result
                       >            trap_ne
29ae : d0fe            >        bne *           ;failed not equal (non zero)
                       >
29b0 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
29b1 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
29b3 : dd3402          >            cmp fROLc,x    ;test flags
                       >            trap_ne
29b6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
29b8 : ca                       dex
29b9 : 10e0                     bpl trolc9
                        
29bb : a203                     ldx #3
29bd :                  tror8
                                set_absx zp1,0
                       >            load_flag 0
29bd : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
29bf : 48              >            pha         ;use stack to load status
29c0 : b513            >            lda zp1,x    ;load to indexed memory
29c2 : 9d0302          >            sta abst,x
29c5 : 28              >            plp
                        
29c6 : 7e0302                   ror abst,x
                                tst_absx rROR,fROR,0
29c9 : 08              >            php         ;save flags
29ca : bd0302          >            lda abst,x
29cd : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
29d0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
29d2 : 68              >            pla         ;load status
                       >            eor_flag 0
29d3 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
29d5 : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne
29d8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
29da : ca                       dex
29db : 10e0                     bpl tror8
29dd : a203                     ldx #3
29df :                  tror9
                                set_absx zp1,$ff-fc
                       >            load_flag $ff-fc
29df : a9fe            >            lda #$ff-fc             ;allow test to change I-flag (no mask)
                       >
29e1 : 48              >            pha         ;use stack to load status
29e2 : b513            >            lda zp1,x    ;load to indexed memory
29e4 : 9d0302          >            sta abst,x
29e7 : 28              >            plp
                        
29e8 : 7e0302                   ror abst,x
                                tst_absx rROR,fROR,$ff-fnzc
29eb : 08              >            php         ;save flags
29ec : bd0302          >            lda abst,x
29ef : dd2802          >            cmp rROR,x    ;test result
                       >            trap_ne
29f2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
29f4 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
29f5 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
29f7 : dd3802          >            cmp fROR,x    ;test flags
                       >            trap_ne
29fa : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
29fc : ca                       dex
29fd : 10e0                     bpl tror9
                        
29ff : a203                     ldx #3
2a01 :                  trorc8
                                set_absx zp1,fc
                       >            load_flag fc
2a01 : a901            >            lda #fc             ;allow test to change I-flag (no mask)
                       >
2a03 : 48              >            pha         ;use stack to load status
2a04 : b513            >            lda zp1,x    ;load to indexed memory
2a06 : 9d0302          >            sta abst,x
2a09 : 28              >            plp
                        
2a0a : 7e0302                   ror abst,x
                                tst_absx rRORc,fRORc,0
2a0d : 08              >            php         ;save flags
2a0e : bd0302          >            lda abst,x
2a11 : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
2a14 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2a16 : 68              >            pla         ;load status
                       >            eor_flag 0
2a17 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2a19 : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne
2a1c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2a1e : ca                       dex
2a1f : 10e0                     bpl trorc8
2a21 : a203                     ldx #3
2a23 :                  trorc9
                                set_absx zp1,$ff
                       >            load_flag $ff
2a23 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2a25 : 48              >            pha         ;use stack to load status
2a26 : b513            >            lda zp1,x    ;load to indexed memory
2a28 : 9d0302          >            sta abst,x
2a2b : 28              >            plp
                        
2a2c : 7e0302                   ror abst,x
                                tst_absx rRORc,fRORc,$ff-fnzc
2a2f : 08              >            php         ;save flags
2a30 : bd0302          >            lda abst,x
2a33 : dd2c02          >            cmp rRORc,x    ;test result
                       >            trap_ne
2a36 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2a38 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnzc
2a39 : 497c            >            eor #$ff-fnzc|fao         ;invert expected flags + always on bits
                       >
2a3b : dd3c02          >            cmp fRORc,x    ;test flags
                       >            trap_ne
2a3e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2a40 : ca                       dex
2a41 : 10e0                     bpl trorc9
                                next_test
2a43 : ad0002          >            lda test_case   ;previous test
2a46 : c921            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
2a48 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0022 =                 >test_num = test_num + 1
2a4a : a922            >            lda #test_num   ;*** next tests' number
2a4c : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; testing memory increment/decrement - INC DEC all addressing modes
                        ; zeropage
2a4f : a200                     ldx #0
2a51 : a97e                     lda #$7e
2a53 : 850c                     sta zpt
2a55 :                  tinc    
                                set_stat 0
                       >            load_flag 0
2a55 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2a57 : 48              >            pha         ;use stack to load status
2a58 : 28              >            plp
                        
2a59 : e60c                     inc zpt
                                tst_z rINC,fINC,0
2a5b : 08              >            php         ;save flags
2a5c : a50c            >            lda zpt
2a5e : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2a61 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2a63 : 68              >            pla         ;load status
                       >            eor_flag 0
2a64 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2a66 : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2a69 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2a6b : e8                       inx
2a6c : e002                     cpx #2
2a6e : d004                     bne tinc1
2a70 : a9fe                     lda #$fe
2a72 : 850c                     sta zpt
2a74 : e005             tinc1   cpx #5
2a76 : d0dd                     bne tinc
2a78 : ca                       dex
2a79 : e60c                     inc zpt
2a7b :                  tdec    
                                set_stat 0
                       >            load_flag 0
2a7b : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2a7d : 48              >            pha         ;use stack to load status
2a7e : 28              >            plp
                        
2a7f : c60c                     dec zpt
                                tst_z rINC,fINC,0
2a81 : 08              >            php         ;save flags
2a82 : a50c            >            lda zpt
2a84 : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2a87 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2a89 : 68              >            pla         ;load status
                       >            eor_flag 0
2a8a : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2a8c : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2a8f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2a91 : ca                       dex
2a92 : 300a                     bmi tdec1
2a94 : e001                     cpx #1
2a96 : d0e3                     bne tdec
2a98 : a981                     lda #$81
2a9a : 850c                     sta zpt
2a9c : d0dd                     bne tdec
2a9e :                  tdec1
2a9e : a200                     ldx #0
2aa0 : a97e                     lda #$7e
2aa2 : 850c                     sta zpt
2aa4 :                  tinc10    
                                set_stat $ff
                       >            load_flag $ff
2aa4 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2aa6 : 48              >            pha         ;use stack to load status
2aa7 : 28              >            plp
                        
2aa8 : e60c                     inc zpt
                                tst_z rINC,fINC,$ff-fnz
2aaa : 08              >            php         ;save flags
2aab : a50c            >            lda zpt
2aad : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2ab0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2ab2 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2ab3 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2ab5 : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2ab8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2aba : e8                       inx
2abb : e002                     cpx #2
2abd : d004                     bne tinc11
2abf : a9fe                     lda #$fe
2ac1 : 850c                     sta zpt
2ac3 : e005             tinc11  cpx #5
2ac5 : d0dd                     bne tinc10
2ac7 : ca                       dex
2ac8 : e60c                     inc zpt
2aca :                  tdec10    
                                set_stat $ff
                       >            load_flag $ff
2aca : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2acc : 48              >            pha         ;use stack to load status
2acd : 28              >            plp
                        
2ace : c60c                     dec zpt
                                tst_z rINC,fINC,$ff-fnz
2ad0 : 08              >            php         ;save flags
2ad1 : a50c            >            lda zpt
2ad3 : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2ad6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2ad8 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2ad9 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2adb : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2ade : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2ae0 : ca                       dex
2ae1 : 300a                     bmi tdec11
2ae3 : e001                     cpx #1
2ae5 : d0e3                     bne tdec10
2ae7 : a981                     lda #$81
2ae9 : 850c                     sta zpt
2aeb : d0dd                     bne tdec10
2aed :                  tdec11
                                next_test
2aed : ad0002          >            lda test_case   ;previous test
2af0 : c922            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
2af2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0023 =                 >test_num = test_num + 1
2af4 : a923            >            lda #test_num   ;*** next tests' number
2af6 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; absolute memory
2af9 : a200                     ldx #0
2afb : a97e                     lda #$7e
2afd : 8d0302                   sta abst
2b00 :                  tinc2    
                                set_stat 0
                       >            load_flag 0
2b00 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2b02 : 48              >            pha         ;use stack to load status
2b03 : 28              >            plp
                        
2b04 : ee0302                   inc abst
                                tst_abs rINC,fINC,0
2b07 : 08              >            php         ;save flags
2b08 : ad0302          >            lda abst
2b0b : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2b0e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2b10 : 68              >            pla         ;load status
                       >            eor_flag 0
2b11 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2b13 : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2b16 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2b18 : e8                       inx
2b19 : e002                     cpx #2
2b1b : d005                     bne tinc3
2b1d : a9fe                     lda #$fe
2b1f : 8d0302                   sta abst
2b22 : e005             tinc3   cpx #5
2b24 : d0da                     bne tinc2
2b26 : ca                       dex
2b27 : ee0302                   inc abst
2b2a :                  tdec2    
                                set_stat 0
                       >            load_flag 0
2b2a : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2b2c : 48              >            pha         ;use stack to load status
2b2d : 28              >            plp
                        
2b2e : ce0302                   dec abst
                                tst_abs rINC,fINC,0
2b31 : 08              >            php         ;save flags
2b32 : ad0302          >            lda abst
2b35 : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2b38 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2b3a : 68              >            pla         ;load status
                       >            eor_flag 0
2b3b : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2b3d : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2b40 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2b42 : ca                       dex
2b43 : 300b                     bmi tdec3
2b45 : e001                     cpx #1
2b47 : d0e1                     bne tdec2
2b49 : a981                     lda #$81
2b4b : 8d0302                   sta abst
2b4e : d0da                     bne tdec2
2b50 :                  tdec3
2b50 : a200                     ldx #0
2b52 : a97e                     lda #$7e
2b54 : 8d0302                   sta abst
2b57 :                  tinc12    
                                set_stat $ff
                       >            load_flag $ff
2b57 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2b59 : 48              >            pha         ;use stack to load status
2b5a : 28              >            plp
                        
2b5b : ee0302                   inc abst
                                tst_abs rINC,fINC,$ff-fnz
2b5e : 08              >            php         ;save flags
2b5f : ad0302          >            lda abst
2b62 : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2b65 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2b67 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2b68 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2b6a : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2b6d : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2b6f : e8                       inx
2b70 : e002                     cpx #2
2b72 : d005                     bne tinc13
2b74 : a9fe                     lda #$fe
2b76 : 8d0302                   sta abst
2b79 : e005             tinc13   cpx #5
2b7b : d0da                     bne tinc12
2b7d : ca                       dex
2b7e : ee0302                   inc abst
2b81 :                  tdec12    
                                set_stat $ff
                       >            load_flag $ff
2b81 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2b83 : 48              >            pha         ;use stack to load status
2b84 : 28              >            plp
                        
2b85 : ce0302                   dec abst
                                tst_abs rINC,fINC,$ff-fnz
2b88 : 08              >            php         ;save flags
2b89 : ad0302          >            lda abst
2b8c : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2b8f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2b91 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2b92 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2b94 : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2b97 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2b99 : ca                       dex
2b9a : 300b                     bmi tdec13
2b9c : e001                     cpx #1
2b9e : d0e1                     bne tdec12
2ba0 : a981                     lda #$81
2ba2 : 8d0302                   sta abst
2ba5 : d0da                     bne tdec12
2ba7 :                  tdec13
                                next_test
2ba7 : ad0002          >            lda test_case   ;previous test
2baa : c923            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
2bac : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0024 =                 >test_num = test_num + 1
2bae : a924            >            lda #test_num   ;*** next tests' number
2bb0 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; zeropage indexed
2bb3 : a200                     ldx #0
2bb5 : a97e                     lda #$7e
2bb7 : 950c             tinc4   sta zpt,x
                                set_stat 0
                       >            load_flag 0
2bb9 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2bbb : 48              >            pha         ;use stack to load status
2bbc : 28              >            plp
                        
2bbd : f60c                     inc zpt,x
                                tst_zx rINC,fINC,0
2bbf : 08              >            php         ;save flags
2bc0 : b50c            >            lda zpt,x
2bc2 : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2bc5 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2bc7 : 68              >            pla         ;load status
                       >            eor_flag 0
2bc8 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2bca : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2bcd : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2bcf : b50c                     lda zpt,x
2bd1 : e8                       inx
2bd2 : e002                     cpx #2
2bd4 : d002                     bne tinc5
2bd6 : a9fe                     lda #$fe
2bd8 : e005             tinc5   cpx #5
2bda : d0db                     bne tinc4
2bdc : ca                       dex
2bdd : a902                     lda #2
2bdf : 950c             tdec4   sta zpt,x 
                                set_stat 0
                       >            load_flag 0
2be1 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2be3 : 48              >            pha         ;use stack to load status
2be4 : 28              >            plp
                        
2be5 : d60c                     dec zpt,x
                                tst_zx rINC,fINC,0
2be7 : 08              >            php         ;save flags
2be8 : b50c            >            lda zpt,x
2bea : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2bed : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2bef : 68              >            pla         ;load status
                       >            eor_flag 0
2bf0 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2bf2 : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2bf5 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2bf7 : b50c                     lda zpt,x
2bf9 : ca                       dex
2bfa : 3008                     bmi tdec5
2bfc : e001                     cpx #1
2bfe : d0df                     bne tdec4
2c00 : a981                     lda #$81
2c02 : d0db                     bne tdec4
2c04 :                  tdec5
2c04 : a200                     ldx #0
2c06 : a97e                     lda #$7e
2c08 : 950c             tinc14  sta zpt,x
                                set_stat $ff
                       >            load_flag $ff
2c0a : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2c0c : 48              >            pha         ;use stack to load status
2c0d : 28              >            plp
                        
2c0e : f60c                     inc zpt,x
                                tst_zx rINC,fINC,$ff-fnz
2c10 : 08              >            php         ;save flags
2c11 : b50c            >            lda zpt,x
2c13 : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2c16 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2c18 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2c19 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2c1b : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2c1e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2c20 : b50c                     lda zpt,x
2c22 : e8                       inx
2c23 : e002                     cpx #2
2c25 : d002                     bne tinc15
2c27 : a9fe                     lda #$fe
2c29 : e005             tinc15  cpx #5
2c2b : d0db                     bne tinc14
2c2d : ca                       dex
2c2e : a902                     lda #2
2c30 : 950c             tdec14  sta zpt,x 
                                set_stat $ff
                       >            load_flag $ff
2c32 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2c34 : 48              >            pha         ;use stack to load status
2c35 : 28              >            plp
                        
2c36 : d60c                     dec zpt,x
                                tst_zx rINC,fINC,$ff-fnz
2c38 : 08              >            php         ;save flags
2c39 : b50c            >            lda zpt,x
2c3b : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2c3e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2c40 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2c41 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2c43 : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2c46 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2c48 : b50c                     lda zpt,x
2c4a : ca                       dex
2c4b : 3008                     bmi tdec15
2c4d : e001                     cpx #1
2c4f : d0df                     bne tdec14
2c51 : a981                     lda #$81
2c53 : d0db                     bne tdec14
2c55 :                  tdec15
                                next_test
2c55 : ad0002          >            lda test_case   ;previous test
2c58 : c924            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
2c5a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0025 =                 >test_num = test_num + 1
2c5c : a925            >            lda #test_num   ;*** next tests' number
2c5e : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; memory indexed
2c61 : a200                     ldx #0
2c63 : a97e                     lda #$7e
2c65 : 9d0302           tinc6   sta abst,x
                                set_stat 0
                       >            load_flag 0
2c68 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2c6a : 48              >            pha         ;use stack to load status
2c6b : 28              >            plp
                        
2c6c : fe0302                   inc abst,x
                                tst_absx rINC,fINC,0
2c6f : 08              >            php         ;save flags
2c70 : bd0302          >            lda abst,x
2c73 : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2c76 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2c78 : 68              >            pla         ;load status
                       >            eor_flag 0
2c79 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2c7b : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2c7e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2c80 : bd0302                   lda abst,x
2c83 : e8                       inx
2c84 : e002                     cpx #2
2c86 : d002                     bne tinc7
2c88 : a9fe                     lda #$fe
2c8a : e005             tinc7   cpx #5
2c8c : d0d7                     bne tinc6
2c8e : ca                       dex
2c8f : a902                     lda #2
2c91 : 9d0302           tdec6   sta abst,x 
                                set_stat 0
                       >            load_flag 0
2c94 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2c96 : 48              >            pha         ;use stack to load status
2c97 : 28              >            plp
                        
2c98 : de0302                   dec abst,x
                                tst_absx rINC,fINC,0
2c9b : 08              >            php         ;save flags
2c9c : bd0302          >            lda abst,x
2c9f : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2ca2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2ca4 : 68              >            pla         ;load status
                       >            eor_flag 0
2ca5 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2ca7 : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2caa : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2cac : bd0302                   lda abst,x
2caf : ca                       dex
2cb0 : 3008                     bmi tdec7
2cb2 : e001                     cpx #1
2cb4 : d0db                     bne tdec6
2cb6 : a981                     lda #$81
2cb8 : d0d7                     bne tdec6
2cba :                  tdec7
2cba : a200                     ldx #0
2cbc : a97e                     lda #$7e
2cbe : 9d0302           tinc16  sta abst,x
                                set_stat $ff
                       >            load_flag $ff
2cc1 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2cc3 : 48              >            pha         ;use stack to load status
2cc4 : 28              >            plp
                        
2cc5 : fe0302                   inc abst,x
                                tst_absx rINC,fINC,$ff-fnz
2cc8 : 08              >            php         ;save flags
2cc9 : bd0302          >            lda abst,x
2ccc : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2ccf : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2cd1 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2cd2 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2cd4 : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2cd7 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2cd9 : bd0302                   lda abst,x
2cdc : e8                       inx
2cdd : e002                     cpx #2
2cdf : d002                     bne tinc17
2ce1 : a9fe                     lda #$fe
2ce3 : e005             tinc17  cpx #5
2ce5 : d0d7                     bne tinc16
2ce7 : ca                       dex
2ce8 : a902                     lda #2
2cea : 9d0302           tdec16  sta abst,x 
                                set_stat $ff
                       >            load_flag $ff
2ced : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2cef : 48              >            pha         ;use stack to load status
2cf0 : 28              >            plp
                        
2cf1 : de0302                   dec abst,x
                                tst_absx rINC,fINC,$ff-fnz
2cf4 : 08              >            php         ;save flags
2cf5 : bd0302          >            lda abst,x
2cf8 : dd4002          >            cmp rINC,x    ;test result
                       >            trap_ne
2cfb : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2cfd : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2cfe : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2d00 : dd4502          >            cmp fINC,x    ;test flags
                       >            trap_ne
2d03 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2d05 : bd0302                   lda abst,x
2d08 : ca                       dex
2d09 : 3008                     bmi tdec17
2d0b : e001                     cpx #1
2d0d : d0db                     bne tdec16
2d0f : a981                     lda #$81
2d11 : d0d7                     bne tdec16
2d13 :                  tdec17
                                next_test
2d13 : ad0002          >            lda test_case   ;previous test
2d16 : c925            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
2d18 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0026 =                 >test_num = test_num + 1
2d1a : a926            >            lda #test_num   ;*** next tests' number
2d1c : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; testing logical instructions - AND EOR ORA all addressing modes
                        ; AND
2d1f : a203                     ldx #3          ;immediate
2d21 : b51c             tand    lda zpAN,x
2d23 : 8d0902                   sta ex_andi+1   ;set AND # operand
                                set_ax  absANa,0
                       >            load_flag 0
2d26 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2d28 : 48              >            pha         ;use stack to load status
2d29 : bd5a02          >            lda absANa,x    ;precharge accu
2d2c : 28              >            plp
                        
2d2d : 200802                   jsr ex_andi     ;execute AND # in RAM
                                tst_ax  absrlo,absflo,0
2d30 : 08              >            php         ;save flags
2d31 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2d34 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2d36 : 68              >            pla         ;load status
                       >            eor_flag 0
2d37 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2d39 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2d3c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2d3e : ca                       dex
2d3f : 10e0                     bpl tand
2d41 : a203                     ldx #3
2d43 : b51c             tand1   lda zpAN,x
2d45 : 8d0902                   sta ex_andi+1   ;set AND # operand
                                set_ax  absANa,$ff
                       >            load_flag $ff
2d48 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2d4a : 48              >            pha         ;use stack to load status
2d4b : bd5a02          >            lda absANa,x    ;precharge accu
2d4e : 28              >            plp
                        
2d4f : 200802                   jsr ex_andi     ;execute AND # in RAM
                                tst_ax  absrlo,absflo,$ff-fnz
2d52 : 08              >            php         ;save flags
2d53 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2d56 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2d58 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2d59 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2d5b : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2d5e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2d60 : ca                       dex
2d61 : 10e0                     bpl tand1
                            
2d63 : a203                     ldx #3      ;zp
2d65 : b51c             tand2   lda zpAN,x
2d67 : 850c                     sta zpt
                                set_ax  absANa,0
                       >            load_flag 0
2d69 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2d6b : 48              >            pha         ;use stack to load status
2d6c : bd5a02          >            lda absANa,x    ;precharge accu
2d6f : 28              >            plp
                        
2d70 : 250c                     and zpt
                                tst_ax  absrlo,absflo,0
2d72 : 08              >            php         ;save flags
2d73 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2d76 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2d78 : 68              >            pla         ;load status
                       >            eor_flag 0
2d79 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2d7b : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2d7e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2d80 : ca                       dex
2d81 : 10e2                     bpl tand2
2d83 : a203                     ldx #3
2d85 : b51c             tand3   lda zpAN,x
2d87 : 850c                     sta zpt
                                set_ax  absANa,$ff
                       >            load_flag $ff
2d89 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2d8b : 48              >            pha         ;use stack to load status
2d8c : bd5a02          >            lda absANa,x    ;precharge accu
2d8f : 28              >            plp
                        
2d90 : 250c                     and zpt
                                tst_ax  absrlo,absflo,$ff-fnz
2d92 : 08              >            php         ;save flags
2d93 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2d96 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2d98 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2d99 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2d9b : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2d9e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2da0 : ca                       dex
2da1 : 10e2                     bpl tand3
                        
2da3 : a203                     ldx #3      ;abs
2da5 : b51c             tand4   lda zpAN,x
2da7 : 8d0302                   sta abst
                                set_ax  absANa,0
                       >            load_flag 0
2daa : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2dac : 48              >            pha         ;use stack to load status
2dad : bd5a02          >            lda absANa,x    ;precharge accu
2db0 : 28              >            plp
                        
2db1 : 2d0302                   and abst
                                tst_ax  absrlo,absflo,0
2db4 : 08              >            php         ;save flags
2db5 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2db8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2dba : 68              >            pla         ;load status
                       >            eor_flag 0
2dbb : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2dbd : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2dc0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2dc2 : ca                       dex
2dc3 : 10e0                     bpl tand4
2dc5 : a203                     ldx #3
2dc7 : b51c             tand5   lda zpAN,x
2dc9 : 8d0302                   sta abst
                                set_ax  absANa,$ff
                       >            load_flag $ff
2dcc : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2dce : 48              >            pha         ;use stack to load status
2dcf : bd5a02          >            lda absANa,x    ;precharge accu
2dd2 : 28              >            plp
                        
2dd3 : 2d0302                   and abst
                                tst_ax  absrlo,absflo,$ff-fnz
2dd6 : 08              >            php         ;save flags
2dd7 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2dda : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2ddc : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2ddd : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2ddf : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2de2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2de4 : ca                       dex
2de5 : 1002                     bpl tand6
                        
2de7 : a203                     ldx #3      ;zp,x
2de9 :                  tand6
                                set_ax  absANa,0
                       >            load_flag 0
2de9 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2deb : 48              >            pha         ;use stack to load status
2dec : bd5a02          >            lda absANa,x    ;precharge accu
2def : 28              >            plp
                        
2df0 : 351c                     and zpAN,x
                                tst_ax  absrlo,absflo,0
2df2 : 08              >            php         ;save flags
2df3 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2df6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2df8 : 68              >            pla         ;load status
                       >            eor_flag 0
2df9 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2dfb : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2dfe : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2e00 : ca                       dex
2e01 : 10e6                     bpl tand6
2e03 : a203                     ldx #3
2e05 :                  tand7
                                set_ax  absANa,$ff
                       >            load_flag $ff
2e05 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2e07 : 48              >            pha         ;use stack to load status
2e08 : bd5a02          >            lda absANa,x    ;precharge accu
2e0b : 28              >            plp
                        
2e0c : 351c                     and zpAN,x
                                tst_ax  absrlo,absflo,$ff-fnz
2e0e : 08              >            php         ;save flags
2e0f : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2e12 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2e14 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2e15 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2e17 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2e1a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2e1c : ca                       dex
2e1d : 10e6                     bpl tand7
                        
2e1f : a203                     ldx #3      ;abs,x
2e21 :                  tand8
                                set_ax  absANa,0
                       >            load_flag 0
2e21 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2e23 : 48              >            pha         ;use stack to load status
2e24 : bd5a02          >            lda absANa,x    ;precharge accu
2e27 : 28              >            plp
                        
2e28 : 3d4e02                   and absAN,x
                                tst_ax  absrlo,absflo,0
2e2b : 08              >            php         ;save flags
2e2c : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2e2f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2e31 : 68              >            pla         ;load status
                       >            eor_flag 0
2e32 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2e34 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2e37 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2e39 : ca                       dex
2e3a : 10e5                     bpl tand8
2e3c : a203                     ldx #3
2e3e :                  tand9
                                set_ax  absANa,$ff
                       >            load_flag $ff
2e3e : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2e40 : 48              >            pha         ;use stack to load status
2e41 : bd5a02          >            lda absANa,x    ;precharge accu
2e44 : 28              >            plp
                        
2e45 : 3d4e02                   and absAN,x
                                tst_ax  absrlo,absflo,$ff-fnz
2e48 : 08              >            php         ;save flags
2e49 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2e4c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2e4e : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2e4f : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2e51 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2e54 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2e56 : ca                       dex
2e57 : 10e5                     bpl tand9
                        
2e59 : a003                     ldy #3      ;abs,y
2e5b :                  tand10
                                set_ay  absANa,0
                       >            load_flag 0
2e5b : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2e5d : 48              >            pha         ;use stack to load status
2e5e : b95a02          >            lda absANa,y    ;precharge accu
2e61 : 28              >            plp
                        
2e62 : 394e02                   and absAN,y
                                tst_ay  absrlo,absflo,0
2e65 : 08              >            php         ;save flags
2e66 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
2e69 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2e6b : 68              >            pla         ;load status
                       >            eor_flag 0
2e6c : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2e6e : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
2e71 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2e73 : 88                       dey
2e74 : 10e5                     bpl tand10
2e76 : a003                     ldy #3
2e78 :                  tand11
                                set_ay  absANa,$ff
                       >            load_flag $ff
2e78 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2e7a : 48              >            pha         ;use stack to load status
2e7b : b95a02          >            lda absANa,y    ;precharge accu
2e7e : 28              >            plp
                        
2e7f : 394e02                   and absAN,y
                                tst_ay  absrlo,absflo,$ff-fnz
2e82 : 08              >            php         ;save flags
2e83 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
2e86 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2e88 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2e89 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2e8b : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
2e8e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2e90 : 88                       dey
2e91 : 10e5                     bpl tand11
                        
2e93 : a206                     ldx #6      ;(zp,x)
2e95 : a003                     ldy #3
2e97 :                  tand12
                                set_ay  absANa,0
                       >            load_flag 0
2e97 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2e99 : 48              >            pha         ;use stack to load status
2e9a : b95a02          >            lda absANa,y    ;precharge accu
2e9d : 28              >            plp
                        
2e9e : 213a                     and (indAN,x)
                                tst_ay  absrlo,absflo,0
2ea0 : 08              >            php         ;save flags
2ea1 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
2ea4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2ea6 : 68              >            pla         ;load status
                       >            eor_flag 0
2ea7 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2ea9 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
2eac : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2eae : ca                       dex
2eaf : ca                       dex
2eb0 : 88                       dey
2eb1 : 10e4                     bpl tand12
2eb3 : a206                     ldx #6
2eb5 : a003                     ldy #3
2eb7 :                  tand13
                                set_ay  absANa,$ff
                       >            load_flag $ff
2eb7 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2eb9 : 48              >            pha         ;use stack to load status
2eba : b95a02          >            lda absANa,y    ;precharge accu
2ebd : 28              >            plp
                        
2ebe : 213a                     and (indAN,x)
                                tst_ay  absrlo,absflo,$ff-fnz
2ec0 : 08              >            php         ;save flags
2ec1 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
2ec4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2ec6 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2ec7 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2ec9 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
2ecc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2ece : ca                       dex
2ecf : ca                       dex
2ed0 : 88                       dey
2ed1 : 10e4                     bpl tand13
                        
2ed3 : a003                     ldy #3      ;(zp),y
2ed5 :                  tand14
                                set_ay  absANa,0
                       >            load_flag 0
2ed5 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2ed7 : 48              >            pha         ;use stack to load status
2ed8 : b95a02          >            lda absANa,y    ;precharge accu
2edb : 28              >            plp
                        
2edc : 313a                     and (indAN),y
                                tst_ay  absrlo,absflo,0
2ede : 08              >            php         ;save flags
2edf : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
2ee2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2ee4 : 68              >            pla         ;load status
                       >            eor_flag 0
2ee5 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2ee7 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
2eea : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2eec : 88                       dey
2eed : 10e6                     bpl tand14
2eef : a003                     ldy #3
2ef1 :                  tand15
                                set_ay  absANa,$ff
                       >            load_flag $ff
2ef1 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2ef3 : 48              >            pha         ;use stack to load status
2ef4 : b95a02          >            lda absANa,y    ;precharge accu
2ef7 : 28              >            plp
                        
2ef8 : 313a                     and (indAN),y
                                tst_ay  absrlo,absflo,$ff-fnz
2efa : 08              >            php         ;save flags
2efb : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
2efe : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2f00 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2f01 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2f03 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
2f06 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2f08 : 88                       dey
2f09 : 10e6                     bpl tand15
                                next_test
2f0b : ad0002          >            lda test_case   ;previous test
2f0e : c926            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
2f10 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0027 =                 >test_num = test_num + 1
2f12 : a927            >            lda #test_num   ;*** next tests' number
2f14 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; EOR
2f17 : a203                     ldx #3          ;immediate - self modifying code
2f19 : b520             teor    lda zpEO,x
2f1b : 8d0c02                   sta ex_eori+1   ;set EOR # operand
                                set_ax  absEOa,0
                       >            load_flag 0
2f1e : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2f20 : 48              >            pha         ;use stack to load status
2f21 : bd5e02          >            lda absEOa,x    ;precharge accu
2f24 : 28              >            plp
                        
2f25 : 200b02                   jsr ex_eori     ;execute EOR # in RAM
                                tst_ax  absrlo,absflo,0
2f28 : 08              >            php         ;save flags
2f29 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2f2c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2f2e : 68              >            pla         ;load status
                       >            eor_flag 0
2f2f : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2f31 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2f34 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2f36 : ca                       dex
2f37 : 10e0                     bpl teor
2f39 : a203                     ldx #3
2f3b : b520             teor1   lda zpEO,x
2f3d : 8d0c02                   sta ex_eori+1   ;set EOR # operand
                                set_ax  absEOa,$ff
                       >            load_flag $ff
2f40 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2f42 : 48              >            pha         ;use stack to load status
2f43 : bd5e02          >            lda absEOa,x    ;precharge accu
2f46 : 28              >            plp
                        
2f47 : 200b02                   jsr ex_eori     ;execute EOR # in RAM
                                tst_ax  absrlo,absflo,$ff-fnz
2f4a : 08              >            php         ;save flags
2f4b : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2f4e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2f50 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2f51 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2f53 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2f56 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2f58 : ca                       dex
2f59 : 10e0                     bpl teor1
                            
2f5b : a203                     ldx #3      ;zp
2f5d : b520             teor2    lda zpEO,x
2f5f : 850c                     sta zpt
                                set_ax  absEOa,0
                       >            load_flag 0
2f61 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2f63 : 48              >            pha         ;use stack to load status
2f64 : bd5e02          >            lda absEOa,x    ;precharge accu
2f67 : 28              >            plp
                        
2f68 : 450c                     eor zpt
                                tst_ax  absrlo,absflo,0
2f6a : 08              >            php         ;save flags
2f6b : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2f6e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2f70 : 68              >            pla         ;load status
                       >            eor_flag 0
2f71 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2f73 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2f76 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2f78 : ca                       dex
2f79 : 10e2                     bpl teor2
2f7b : a203                     ldx #3
2f7d : b520             teor3   lda zpEO,x
2f7f : 850c                     sta zpt
                                set_ax  absEOa,$ff
                       >            load_flag $ff
2f81 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2f83 : 48              >            pha         ;use stack to load status
2f84 : bd5e02          >            lda absEOa,x    ;precharge accu
2f87 : 28              >            plp
                        
2f88 : 450c                     eor zpt
                                tst_ax  absrlo,absflo,$ff-fnz
2f8a : 08              >            php         ;save flags
2f8b : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2f8e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2f90 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2f91 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2f93 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2f96 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2f98 : ca                       dex
2f99 : 10e2                     bpl teor3
                        
2f9b : a203                     ldx #3      ;abs
2f9d : b520             teor4   lda zpEO,x
2f9f : 8d0302                   sta abst
                                set_ax  absEOa,0
                       >            load_flag 0
2fa2 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2fa4 : 48              >            pha         ;use stack to load status
2fa5 : bd5e02          >            lda absEOa,x    ;precharge accu
2fa8 : 28              >            plp
                        
2fa9 : 4d0302                   eor abst
                                tst_ax  absrlo,absflo,0
2fac : 08              >            php         ;save flags
2fad : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2fb0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2fb2 : 68              >            pla         ;load status
                       >            eor_flag 0
2fb3 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2fb5 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2fb8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2fba : ca                       dex
2fbb : 10e0                     bpl teor4
2fbd : a203                     ldx #3
2fbf : b520             teor5   lda zpEO,x
2fc1 : 8d0302                   sta abst
                                set_ax  absEOa,$ff
                       >            load_flag $ff
2fc4 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2fc6 : 48              >            pha         ;use stack to load status
2fc7 : bd5e02          >            lda absEOa,x    ;precharge accu
2fca : 28              >            plp
                        
2fcb : 4d0302                   eor abst
                                tst_ax  absrlo,absflo,$ff-fnz
2fce : 08              >            php         ;save flags
2fcf : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2fd2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2fd4 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
2fd5 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
2fd7 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2fda : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2fdc : ca                       dex
2fdd : 1002                     bpl teor6
                        
2fdf : a203                     ldx #3      ;zp,x
2fe1 :                  teor6
                                set_ax  absEOa,0
                       >            load_flag 0
2fe1 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
2fe3 : 48              >            pha         ;use stack to load status
2fe4 : bd5e02          >            lda absEOa,x    ;precharge accu
2fe7 : 28              >            plp
                        
2fe8 : 5520                     eor zpEO,x
                                tst_ax  absrlo,absflo,0
2fea : 08              >            php         ;save flags
2feb : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
2fee : d0fe            >        bne *           ;failed not equal (non zero)
                       >
2ff0 : 68              >            pla         ;load status
                       >            eor_flag 0
2ff1 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
2ff3 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
2ff6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
2ff8 : ca                       dex
2ff9 : 10e6                     bpl teor6
2ffb : a203                     ldx #3
2ffd :                  teor7
                                set_ax  absEOa,$ff
                       >            load_flag $ff
2ffd : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
2fff : 48              >            pha         ;use stack to load status
3000 : bd5e02          >            lda absEOa,x    ;precharge accu
3003 : 28              >            plp
                        
3004 : 5520                     eor zpEO,x
                                tst_ax  absrlo,absflo,$ff-fnz
3006 : 08              >            php         ;save flags
3007 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
300a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
300c : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
300d : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
300f : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
3012 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3014 : ca                       dex
3015 : 10e6                     bpl teor7
                        
3017 : a203                     ldx #3      ;abs,x
3019 :                  teor8
                                set_ax  absEOa,0
                       >            load_flag 0
3019 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
301b : 48              >            pha         ;use stack to load status
301c : bd5e02          >            lda absEOa,x    ;precharge accu
301f : 28              >            plp
                        
3020 : 5d5202                   eor absEO,x
                                tst_ax  absrlo,absflo,0
3023 : 08              >            php         ;save flags
3024 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
3027 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3029 : 68              >            pla         ;load status
                       >            eor_flag 0
302a : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
302c : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
302f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3031 : ca                       dex
3032 : 10e5                     bpl teor8
3034 : a203                     ldx #3
3036 :                  teor9
                                set_ax  absEOa,$ff
                       >            load_flag $ff
3036 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
3038 : 48              >            pha         ;use stack to load status
3039 : bd5e02          >            lda absEOa,x    ;precharge accu
303c : 28              >            plp
                        
303d : 5d5202                   eor absEO,x
                                tst_ax  absrlo,absflo,$ff-fnz
3040 : 08              >            php         ;save flags
3041 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
3044 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3046 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
3047 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
3049 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
304c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
304e : ca                       dex
304f : 10e5                     bpl teor9
                        
3051 : a003                     ldy #3      ;abs,y
3053 :                  teor10
                                set_ay  absEOa,0
                       >            load_flag 0
3053 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
3055 : 48              >            pha         ;use stack to load status
3056 : b95e02          >            lda absEOa,y    ;precharge accu
3059 : 28              >            plp
                        
305a : 595202                   eor absEO,y
                                tst_ay  absrlo,absflo,0
305d : 08              >            php         ;save flags
305e : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
3061 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3063 : 68              >            pla         ;load status
                       >            eor_flag 0
3064 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
3066 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
3069 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
306b : 88                       dey
306c : 10e5                     bpl teor10
306e : a003                     ldy #3
3070 :                  teor11
                                set_ay  absEOa,$ff
                       >            load_flag $ff
3070 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
3072 : 48              >            pha         ;use stack to load status
3073 : b95e02          >            lda absEOa,y    ;precharge accu
3076 : 28              >            plp
                        
3077 : 595202                   eor absEO,y
                                tst_ay  absrlo,absflo,$ff-fnz
307a : 08              >            php         ;save flags
307b : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
307e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3080 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
3081 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
3083 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
3086 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3088 : 88                       dey
3089 : 10e5                     bpl teor11
                        
308b : a206                     ldx #6      ;(zp,x)
308d : a003                     ldy #3
308f :                  teor12
                                set_ay  absEOa,0
                       >            load_flag 0
308f : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
3091 : 48              >            pha         ;use stack to load status
3092 : b95e02          >            lda absEOa,y    ;precharge accu
3095 : 28              >            plp
                        
3096 : 4142                     eor (indEO,x)
                                tst_ay  absrlo,absflo,0
3098 : 08              >            php         ;save flags
3099 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
309c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
309e : 68              >            pla         ;load status
                       >            eor_flag 0
309f : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
30a1 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
30a4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
30a6 : ca                       dex
30a7 : ca                       dex
30a8 : 88                       dey
30a9 : 10e4                     bpl teor12
30ab : a206                     ldx #6
30ad : a003                     ldy #3
30af :                  teor13
                                set_ay  absEOa,$ff
                       >            load_flag $ff
30af : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
30b1 : 48              >            pha         ;use stack to load status
30b2 : b95e02          >            lda absEOa,y    ;precharge accu
30b5 : 28              >            plp
                        
30b6 : 4142                     eor (indEO,x)
                                tst_ay  absrlo,absflo,$ff-fnz
30b8 : 08              >            php         ;save flags
30b9 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
30bc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
30be : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
30bf : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
30c1 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
30c4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
30c6 : ca                       dex
30c7 : ca                       dex
30c8 : 88                       dey
30c9 : 10e4                     bpl teor13
                        
30cb : a003                     ldy #3      ;(zp),y
30cd :                  teor14
                                set_ay  absEOa,0
                       >            load_flag 0
30cd : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
30cf : 48              >            pha         ;use stack to load status
30d0 : b95e02          >            lda absEOa,y    ;precharge accu
30d3 : 28              >            plp
                        
30d4 : 5142                     eor (indEO),y
                                tst_ay  absrlo,absflo,0
30d6 : 08              >            php         ;save flags
30d7 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
30da : d0fe            >        bne *           ;failed not equal (non zero)
                       >
30dc : 68              >            pla         ;load status
                       >            eor_flag 0
30dd : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
30df : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
30e2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
30e4 : 88                       dey
30e5 : 10e6                     bpl teor14
30e7 : a003                     ldy #3
30e9 :                  teor15
                                set_ay  absEOa,$ff
                       >            load_flag $ff
30e9 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
30eb : 48              >            pha         ;use stack to load status
30ec : b95e02          >            lda absEOa,y    ;precharge accu
30ef : 28              >            plp
                        
30f0 : 5142                     eor (indEO),y
                                tst_ay  absrlo,absflo,$ff-fnz
30f2 : 08              >            php         ;save flags
30f3 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
30f6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
30f8 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
30f9 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
30fb : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
30fe : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3100 : 88                       dey
3101 : 10e6                     bpl teor15
                                next_test
3103 : ad0002          >            lda test_case   ;previous test
3106 : c927            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
3108 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0028 =                 >test_num = test_num + 1
310a : a928            >            lda #test_num   ;*** next tests' number
310c : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; OR
310f : a203                     ldx #3          ;immediate - self modifying code
3111 : b518             tora    lda zpOR,x
3113 : 8d0f02                   sta ex_orai+1   ;set ORA # operand
                                set_ax  absORa,0
                       >            load_flag 0
3116 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
3118 : 48              >            pha         ;use stack to load status
3119 : bd5602          >            lda absORa,x    ;precharge accu
311c : 28              >            plp
                        
311d : 200e02                   jsr ex_orai     ;execute ORA # in RAM
                                tst_ax  absrlo,absflo,0
3120 : 08              >            php         ;save flags
3121 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
3124 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3126 : 68              >            pla         ;load status
                       >            eor_flag 0
3127 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
3129 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
312c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
312e : ca                       dex
312f : 10e0                     bpl tora
3131 : a203                     ldx #3
3133 : b518             tora1   lda zpOR,x
3135 : 8d0f02                   sta ex_orai+1   ;set ORA # operand
                                set_ax  absORa,$ff
                       >            load_flag $ff
3138 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
313a : 48              >            pha         ;use stack to load status
313b : bd5602          >            lda absORa,x    ;precharge accu
313e : 28              >            plp
                        
313f : 200e02                   jsr ex_orai     ;execute ORA # in RAM
                                tst_ax  absrlo,absflo,$ff-fnz
3142 : 08              >            php         ;save flags
3143 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
3146 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3148 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
3149 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
314b : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
314e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3150 : ca                       dex
3151 : 10e0                     bpl tora1
                            
3153 : a203                     ldx #3      ;zp
3155 : b518             tora2   lda zpOR,x
3157 : 850c                     sta zpt
                                set_ax  absORa,0
                       >            load_flag 0
3159 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
315b : 48              >            pha         ;use stack to load status
315c : bd5602          >            lda absORa,x    ;precharge accu
315f : 28              >            plp
                        
3160 : 050c                     ora zpt
                                tst_ax  absrlo,absflo,0
3162 : 08              >            php         ;save flags
3163 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
3166 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3168 : 68              >            pla         ;load status
                       >            eor_flag 0
3169 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
316b : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
316e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3170 : ca                       dex
3171 : 10e2                     bpl tora2
3173 : a203                     ldx #3
3175 : b518             tora3   lda zpOR,x
3177 : 850c                     sta zpt
                                set_ax  absORa,$ff
                       >            load_flag $ff
3179 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
317b : 48              >            pha         ;use stack to load status
317c : bd5602          >            lda absORa,x    ;precharge accu
317f : 28              >            plp
                        
3180 : 050c                     ora zpt
                                tst_ax  absrlo,absflo,$ff-fnz
3182 : 08              >            php         ;save flags
3183 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
3186 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3188 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
3189 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
318b : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
318e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3190 : ca                       dex
3191 : 10e2                     bpl tora3
                        
3193 : a203                     ldx #3      ;abs
3195 : b518             tora4   lda zpOR,x
3197 : 8d0302                   sta abst
                                set_ax  absORa,0
                       >            load_flag 0
319a : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
319c : 48              >            pha         ;use stack to load status
319d : bd5602          >            lda absORa,x    ;precharge accu
31a0 : 28              >            plp
                        
31a1 : 0d0302                   ora abst
                                tst_ax  absrlo,absflo,0
31a4 : 08              >            php         ;save flags
31a5 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
31a8 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
31aa : 68              >            pla         ;load status
                       >            eor_flag 0
31ab : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
31ad : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
31b0 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
31b2 : ca                       dex
31b3 : 10e0                     bpl tora4
31b5 : a203                     ldx #3
31b7 : b518             tora5   lda zpOR,x
31b9 : 8d0302                   sta abst
                                set_ax  absORa,$ff
                       >            load_flag $ff
31bc : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
31be : 48              >            pha         ;use stack to load status
31bf : bd5602          >            lda absORa,x    ;precharge accu
31c2 : 28              >            plp
                        
31c3 : 0d0302                   ora abst
                                tst_ax  absrlo,absflo,$ff-fnz
31c6 : 08              >            php         ;save flags
31c7 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
31ca : d0fe            >        bne *           ;failed not equal (non zero)
                       >
31cc : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
31cd : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
31cf : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
31d2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
31d4 : ca                       dex
31d5 : 1002                     bpl tora6
                        
31d7 : a203                     ldx #3      ;zp,x
31d9 :                  tora6
                                set_ax  absORa,0
                       >            load_flag 0
31d9 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
31db : 48              >            pha         ;use stack to load status
31dc : bd5602          >            lda absORa,x    ;precharge accu
31df : 28              >            plp
                        
31e0 : 1518                     ora zpOR,x
                                tst_ax  absrlo,absflo,0
31e2 : 08              >            php         ;save flags
31e3 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
31e6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
31e8 : 68              >            pla         ;load status
                       >            eor_flag 0
31e9 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
31eb : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
31ee : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
31f0 : ca                       dex
31f1 : 10e6                     bpl tora6
31f3 : a203                     ldx #3
31f5 :                  tora7
                                set_ax  absORa,$ff
                       >            load_flag $ff
31f5 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
31f7 : 48              >            pha         ;use stack to load status
31f8 : bd5602          >            lda absORa,x    ;precharge accu
31fb : 28              >            plp
                        
31fc : 1518                     ora zpOR,x
                                tst_ax  absrlo,absflo,$ff-fnz
31fe : 08              >            php         ;save flags
31ff : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
3202 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3204 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
3205 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
3207 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
320a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
320c : ca                       dex
320d : 10e6                     bpl tora7
                        
320f : a203                     ldx #3      ;abs,x
3211 :                  tora8
                                set_ax  absORa,0
                       >            load_flag 0
3211 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
3213 : 48              >            pha         ;use stack to load status
3214 : bd5602          >            lda absORa,x    ;precharge accu
3217 : 28              >            plp
                        
3218 : 1d4a02                   ora absOR,x
                                tst_ax  absrlo,absflo,0
321b : 08              >            php         ;save flags
321c : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
321f : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3221 : 68              >            pla         ;load status
                       >            eor_flag 0
3222 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
3224 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
3227 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3229 : ca                       dex
322a : 10e5                     bpl tora8
322c : a203                     ldx #3
322e :                  tora9
                                set_ax  absORa,$ff
                       >            load_flag $ff
322e : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
3230 : 48              >            pha         ;use stack to load status
3231 : bd5602          >            lda absORa,x    ;precharge accu
3234 : 28              >            plp
                        
3235 : 1d4a02                   ora absOR,x
                                tst_ax  absrlo,absflo,$ff-fnz
3238 : 08              >            php         ;save flags
3239 : dd6202          >            cmp absrlo,x    ;test result
                       >            trap_ne
323c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
323e : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
323f : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
3241 : dd6602          >            cmp absflo,x    ;test flags
                       >            trap_ne     ;
3244 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3246 : ca                       dex
3247 : 10e5                     bpl tora9
                        
3249 : a003                     ldy #3      ;abs,y
324b :                  tora10
                                set_ay  absORa,0
                       >            load_flag 0
324b : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
324d : 48              >            pha         ;use stack to load status
324e : b95602          >            lda absORa,y    ;precharge accu
3251 : 28              >            plp
                        
3252 : 194a02                   ora absOR,y
                                tst_ay  absrlo,absflo,0
3255 : 08              >            php         ;save flags
3256 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
3259 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
325b : 68              >            pla         ;load status
                       >            eor_flag 0
325c : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
325e : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
3261 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3263 : 88                       dey
3264 : 10e5                     bpl tora10
3266 : a003                     ldy #3
3268 :                  tora11
                                set_ay  absORa,$ff
                       >            load_flag $ff
3268 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
326a : 48              >            pha         ;use stack to load status
326b : b95602          >            lda absORa,y    ;precharge accu
326e : 28              >            plp
                        
326f : 194a02                   ora absOR,y
                                tst_ay  absrlo,absflo,$ff-fnz
3272 : 08              >            php         ;save flags
3273 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
3276 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3278 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
3279 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
327b : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
327e : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
3280 : 88                       dey
3281 : 10e5                     bpl tora11
                        
3283 : a206                     ldx #6      ;(zp,x)
3285 : a003                     ldy #3
3287 :                  tora12
                                set_ay  absORa,0
                       >            load_flag 0
3287 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
3289 : 48              >            pha         ;use stack to load status
328a : b95602          >            lda absORa,y    ;precharge accu
328d : 28              >            plp
                        
328e : 014a                     ora (indOR,x)
                                tst_ay  absrlo,absflo,0
3290 : 08              >            php         ;save flags
3291 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
3294 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
3296 : 68              >            pla         ;load status
                       >            eor_flag 0
3297 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
3299 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
329c : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
329e : ca                       dex
329f : ca                       dex
32a0 : 88                       dey
32a1 : 10e4                     bpl tora12
32a3 : a206                     ldx #6
32a5 : a003                     ldy #3
32a7 :                  tora13
                                set_ay  absORa,$ff
                       >            load_flag $ff
32a7 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
32a9 : 48              >            pha         ;use stack to load status
32aa : b95602          >            lda absORa,y    ;precharge accu
32ad : 28              >            plp
                        
32ae : 014a                     ora (indOR,x)
                                tst_ay  absrlo,absflo,$ff-fnz
32b0 : 08              >            php         ;save flags
32b1 : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
32b4 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
32b6 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
32b7 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
32b9 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
32bc : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
32be : ca                       dex
32bf : ca                       dex
32c0 : 88                       dey
32c1 : 10e4                     bpl tora13
                        
32c3 : a003                     ldy #3      ;(zp),y
32c5 :                  tora14
                                set_ay  absORa,0
                       >            load_flag 0
32c5 : a900            >            lda #0             ;allow test to change I-flag (no mask)
                       >
32c7 : 48              >            pha         ;use stack to load status
32c8 : b95602          >            lda absORa,y    ;precharge accu
32cb : 28              >            plp
                        
32cc : 114a                     ora (indOR),y
                                tst_ay  absrlo,absflo,0
32ce : 08              >            php         ;save flags
32cf : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
32d2 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
32d4 : 68              >            pla         ;load status
                       >            eor_flag 0
32d5 : 4930            >            eor #0|fao         ;invert expected flags + always on bits
                       >
32d7 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
32da : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
32dc : 88                       dey
32dd : 10e6                     bpl tora14
32df : a003                     ldy #3
32e1 :                  tora15
                                set_ay  absORa,$ff
                       >            load_flag $ff
32e1 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
32e3 : 48              >            pha         ;use stack to load status
32e4 : b95602          >            lda absORa,y    ;precharge accu
32e7 : 28              >            plp
                        
32e8 : 114a                     ora (indOR),y
                                tst_ay  absrlo,absflo,$ff-fnz
32ea : 08              >            php         ;save flags
32eb : d96202          >            cmp absrlo,y    ;test result
                       >            trap_ne     ;
32ee : d0fe            >        bne *           ;failed not equal (non zero)
                       >
32f0 : 68              >            pla         ;load status
                       >            eor_flag $ff-fnz
32f1 : 497d            >            eor #$ff-fnz|fao         ;invert expected flags + always on bits
                       >
32f3 : d96602          >            cmp absflo,y    ;test flags
                       >            trap_ne
32f6 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
                        
32f8 : 88                       dey
32f9 : 10e6                     bpl tora15
                            if I_flag = 3
32fb : 58                       cli
                            endif                
                                next_test
32fc : ad0002          >            lda test_case   ;previous test
32ff : c928            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
3301 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
0029 =                 >test_num = test_num + 1
3303 : a929            >            lda #test_num   ;*** next tests' number
3305 : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; full binary add/subtract test
                        ; iterates through all combinations of operands and carry input
                        ; uses increments/decrements to predict result & result flags
3308 : d8                       cld
3309 : a20e                     ldx #ad2        ;for indexed test
330b : a0ff                     ldy #$ff        ;max range
330d : a900                     lda #0          ;start with adding zeroes & no carry
330f : 850c                     sta adfc        ;carry in - for diag
3311 : 850d                     sta ad1         ;operand 1 - accumulator
3313 : 850e                     sta ad2         ;operand 2 - memory or immediate
3315 : 8d0302                   sta ada2        ;non zp
3318 : 850f                     sta adrl        ;expected result bits 0-7
331a : 8510                     sta adrh        ;expected result bit 8 (carry out)
331c : a9ff                     lda #$ff        ;complemented operand 2 for subtract
331e : 8512                     sta sb2
3320 : 8d0402                   sta sba2        ;non zp
3323 : a902                     lda #2          ;expected Z-flag
3325 : 8511                     sta adrf
3327 : 18               tadd    clc             ;test with carry clear
3328 : 20a235                   jsr chkadd
332b : e60c                     inc adfc        ;now with carry
332d : e60f                     inc adrl        ;result +1
332f : 08                       php             ;save N & Z from low result
3330 : 08                       php
3331 : 68                       pla             ;accu holds expected flags
3332 : 2982                     and #$82        ;mask N & Z
3334 : 28                       plp
3335 : d002                     bne tadd1
3337 : e610                     inc adrh        ;result bit 8 - carry
3339 : 0510             tadd1   ora adrh        ;merge C to expected flags
333b : 8511                     sta adrf        ;save expected flags except overflow
333d : 38                       sec             ;test with carry set
333e : 20a235                   jsr chkadd
3341 : c60c                     dec adfc        ;same for operand +1 but no carry
3343 : e60d                     inc ad1
3345 : d0e0                     bne tadd        ;iterate op1
3347 : a900                     lda #0          ;preset result to op2 when op1 = 0
3349 : 8510                     sta adrh
334b : ee0302                   inc ada2
334e : e60e                     inc ad2
3350 : 08                       php             ;save NZ as operand 2 becomes the new result
3351 : 68                       pla
3352 : 2982                     and #$82        ;mask N00000Z0
3354 : 8511                     sta adrf        ;no need to check carry as we are adding to 0
3356 : c612                     dec sb2         ;complement subtract operand 2
3358 : ce0402                   dec sba2
335b : a50e                     lda ad2         
335d : 850f                     sta adrl
335f : d0c6                     bne tadd        ;iterate op2
                            if disable_decimal < 1
                                next_test
3361 : ad0002          >            lda test_case   ;previous test
3364 : c929            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
3366 : d0fe            >        bne *           ;failed not equal (non zero)
                       >
002a =                 >test_num = test_num + 1
3368 : a92a            >            lda #test_num   ;*** next tests' number
336a : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; decimal add/subtract test
                        ; *** WARNING - tests documented behavior only! ***
                        ;   only valid BCD operands are tested, N V Z flags are ignored
                        ; iterates through all valid combinations of operands and carry input
                        ; uses increments/decrements to predict result & carry flag
336d : f8                       sed 
336e : a20e                     ldx #ad2        ;for indexed test
3370 : a0ff                     ldy #$ff        ;max range
3372 : a999                     lda #$99        ;start with adding 99 to 99 with carry
3374 : 850d                     sta ad1         ;operand 1 - accumulator
3376 : 850e                     sta ad2         ;operand 2 - memory or immediate
3378 : 8d0302                   sta ada2        ;non zp
337b : 850f                     sta adrl        ;expected result bits 0-7
337d : a901                     lda #1          ;set carry in & out
337f : 850c                     sta adfc        ;carry in - for diag
3381 : 8510                     sta adrh        ;expected result bit 8 (carry out)
3383 : a900                     lda #0          ;complemented operand 2 for subtract
3385 : 8512                     sta sb2
3387 : 8d0402                   sta sba2        ;non zp
338a : 38               tdad    sec             ;test with carry set
338b : 206f34                   jsr chkdad
338e : c60c                     dec adfc        ;now with carry clear
3390 : a50f                     lda adrl        ;decimal adjust result
3392 : d008                     bne tdad1       ;skip clear carry & preset result 99 (9A-1)
3394 : c610                     dec adrh
3396 : a999                     lda #$99
3398 : 850f                     sta adrl
339a : d012                     bne tdad3
339c : 290f             tdad1   and #$f         ;lower nibble mask
339e : d00c                     bne tdad2       ;no decimal adjust needed
33a0 : c60f                     dec adrl        ;decimal adjust (?0-6)
33a2 : c60f                     dec adrl
33a4 : c60f                     dec adrl
33a6 : c60f                     dec adrl
33a8 : c60f                     dec adrl
33aa : c60f                     dec adrl
33ac : c60f             tdad2   dec adrl        ;result -1
33ae : 18               tdad3   clc             ;test with carry clear
33af : 206f34                   jsr chkdad
33b2 : e60c                     inc adfc        ;same for operand -1 but with carry
33b4 : a50d                     lda ad1         ;decimal adjust operand 1
33b6 : f015                     beq tdad5       ;iterate operand 2
33b8 : 290f                     and #$f         ;lower nibble mask
33ba : d00c                     bne tdad4       ;skip decimal adjust
33bc : c60d                     dec ad1         ;decimal adjust (?0-6)
33be : c60d                     dec ad1
33c0 : c60d                     dec ad1
33c2 : c60d                     dec ad1
33c4 : c60d                     dec ad1
33c6 : c60d                     dec ad1
33c8 : c60d             tdad4   dec ad1         ;operand 1 -1
33ca : 4c8a33                   jmp tdad        ;iterate op1
                        
33cd : a999             tdad5   lda #$99        ;precharge op1 max
33cf : 850d                     sta ad1
33d1 : a50e                     lda ad2         ;decimal adjust operand 2
33d3 : f030                     beq tdad7       ;end of iteration
33d5 : 290f                     and #$f         ;lower nibble mask
33d7 : d018                     bne tdad6       ;skip decimal adjust
33d9 : c60e                     dec ad2         ;decimal adjust (?0-6)
33db : c60e                     dec ad2
33dd : c60e                     dec ad2
33df : c60e                     dec ad2
33e1 : c60e                     dec ad2
33e3 : c60e                     dec ad2
33e5 : e612                     inc sb2         ;complemented decimal adjust for subtract (?9+6)
33e7 : e612                     inc sb2
33e9 : e612                     inc sb2
33eb : e612                     inc sb2
33ed : e612                     inc sb2
33ef : e612                     inc sb2
33f1 : c60e             tdad6   dec ad2         ;operand 2 -1
33f3 : e612                     inc sb2         ;complemented operand for subtract
33f5 : a512                     lda sb2
33f7 : 8d0402                   sta sba2        ;copy as non zp operand
33fa : a50e                     lda ad2
33fc : 8d0302                   sta ada2        ;copy as non zp operand
33ff : 850f                     sta adrl        ;new result since op1+carry=00+carry +op2=op2
3401 : e610                     inc adrh        ;result carry
3403 : d085                     bne tdad        ;iterate op2
3405 :                  tdad7
                                next_test
3405 : ad0002          >            lda test_case   ;previous test
3408 : c92a            >            cmp #test_num
                       >            trap_ne         ;test is out of sequence
340a : d0fe            >        bne *           ;failed not equal (non zero)
                       >
002b =                 >test_num = test_num + 1
340c : a92b            >            lda #test_num   ;*** next tests' number
340e : 8d0002          >            sta test_case
                       >            ;check_ram       ;uncomment to find altered RAM after each test
                        
                        
                        ; decimal/binary switch test
                        ; tests CLD, SED, PLP, RTI to properly switch between decimal & binary opcode
                        ;   tables
3411 : 18                       clc
3412 : d8                       cld
3413 : 08                       php
3414 : a955                     lda #$55
3416 : 6955                     adc #$55
3418 : c9aa                     cmp #$aa
                                trap_ne         ;expected binary result after cld
341a : d0fe            >        bne *           ;failed not equal (non zero)
                        
341c : 18                       clc
341d : f8                       sed
341e : 08                       php
341f : a955                     lda #$55
3421 : 6955                     adc #$55
3423 : c910                     cmp #$10
                                trap_ne         ;expected decimal result after sed
3425 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3427 : d8                       cld
3428 : 28                       plp
3429 : a955                     lda #$55
342b : 6955                     adc #$55
342d : c910                     cmp #$10
                                trap_ne         ;expected decimal result after plp D=1
342f : d0fe            >        bne *           ;failed not equal (non zero)
                        
3431 : 28                       plp
3432 : a955                     lda #$55
3434 : 6955                     adc #$55
3436 : c9aa                     cmp #$aa
                                trap_ne         ;expected binary result after plp D=0
3438 : d0fe            >        bne *           ;failed not equal (non zero)
                        
343a : 18                       clc
343b : a934                     lda #hi bin_rti_ret ;emulated interrupt for rti
343d : 48                       pha
343e : a955                     lda #lo bin_rti_ret
3440 : 48                       pha
3441 : 08                       php
3442 : f8                       sed
3443 : a934                     lda #hi dec_rti_ret ;emulated interrupt for rti
3445 : 48                       pha
3446 : a94c                     lda #lo dec_rti_ret
3448 : 48                       pha
3449 : 08                       php
344a : d8                       cld
344b : 40                       rti
344c :                  dec_rti_ret
344c : a955                     lda #$55
344e : 6955                     adc #$55
3450 : c910                     cmp #$10
                                trap_ne         ;expected decimal result after rti D=1
3452 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3454 : 40                       rti
3455 :                  bin_rti_ret        
3455 : a955                     lda #$55
3457 : 6955                     adc #$55
3459 : c9aa                     cmp #$aa
                                trap_ne         ;expected binary result after rti D=0
345b : d0fe            >        bne *           ;failed not equal (non zero)
                        
                            endif
                            
345d : ad0002                   lda test_case
3460 : c92b                     cmp #test_num
                                trap_ne         ;previous test is out of sequence
3462 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3464 : a9f0                     lda #$f0        ;mark opcode testing complete
3466 : 8d0002                   sta test_case
                                
                        ; final RAM integrity test
                        ;   verifies that none of the previous tests has altered RAM outside of the
                        ;   designated write areas.
                                check_ram
                       >            ;RAM check disabled - RAM size not set
                        
                        ; *** DEBUG INFO ***
                        ; to debug checksum errors uncomment check_ram in the next_test macro to
                        ; narrow down the responsible opcode.
                        ; may give false errors when monitor, OS or other background activity is
                        ; allowed during previous tests.
                        
                        
                        ; S U C C E S S ************************************************
                        ; -------------       
                                success         ;if you get here everything went well
3469 : 4c6934          >        jmp *           ;test passed, no errors
                        
                        ; -------------       
                        ; S U C C E S S ************************************************
346c : 4c0004                   jmp start       ;run again      
                        
                            if disable_decimal < 1
                        ; core subroutine of the decimal add/subtract test
                        ; *** WARNING - tests documented behavior only! ***
                        ;   only valid BCD operands are tested, N V Z flags are ignored
                        ; iterates through all valid combinations of operands and carry input
                        ; uses increments/decrements to predict result & carry flag
346f :                  chkdad
                        ; decimal ADC / SBC zp
346f : 08                       php             ;save carry for subtract
3470 : a50d                     lda ad1
3472 : 650e                     adc ad2         ;perform add
3474 : 08                       php          
3475 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3477 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3479 : 68                       pla             ;check flags
347a : 2901                     and #1          ;mask carry
347c : c510                     cmp adrh
                                trap_ne         ;bad carry
347e : d0fe            >        bne *           ;failed not equal (non zero)
                        
3480 : 28                       plp
3481 : 08                       php             ;save carry for next add
3482 : a50d                     lda ad1
3484 : e512                     sbc sb2         ;perform subtract
3486 : 08                       php          
3487 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3489 : d0fe            >        bne *           ;failed not equal (non zero)
                        
348b : 68                       pla             ;check flags
348c : 2901                     and #1          ;mask carry
348e : c510                     cmp adrh
                                trap_ne         ;bad flags
3490 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3492 : 28                       plp
                        ; decimal ADC / SBC abs
3493 : 08                       php             ;save carry for subtract
3494 : a50d                     lda ad1
3496 : 6d0302                   adc ada2        ;perform add
3499 : 08                       php          
349a : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
349c : d0fe            >        bne *           ;failed not equal (non zero)
                        
349e : 68                       pla             ;check flags
349f : 2901                     and #1          ;mask carry
34a1 : c510                     cmp adrh
                                trap_ne         ;bad carry
34a3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
34a5 : 28                       plp
34a6 : 08                       php             ;save carry for next add
34a7 : a50d                     lda ad1
34a9 : ed0402                   sbc sba2        ;perform subtract
34ac : 08                       php          
34ad : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
34af : d0fe            >        bne *           ;failed not equal (non zero)
                        
34b1 : 68                       pla             ;check flags
34b2 : 2901                     and #1          ;mask carry
34b4 : c510                     cmp adrh
                                trap_ne         ;bad carry
34b6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
34b8 : 28                       plp
                        ; decimal ADC / SBC #
34b9 : 08                       php             ;save carry for subtract
34ba : a50e                     lda ad2
34bc : 8d1202                   sta ex_adci+1   ;set ADC # operand
34bf : a50d                     lda ad1
34c1 : 201102                   jsr ex_adci     ;execute ADC # in RAM
34c4 : 08                       php          
34c5 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
34c7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
34c9 : 68                       pla             ;check flags
34ca : 2901                     and #1          ;mask carry
34cc : c510                     cmp adrh
                                trap_ne         ;bad carry
34ce : d0fe            >        bne *           ;failed not equal (non zero)
                        
34d0 : 28                       plp
34d1 : 08                       php             ;save carry for next add
34d2 : a512                     lda sb2
34d4 : 8d1502                   sta ex_sbci+1   ;set SBC # operand
34d7 : a50d                     lda ad1
34d9 : 201402                   jsr ex_sbci     ;execute SBC # in RAM
34dc : 08                       php          
34dd : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
34df : d0fe            >        bne *           ;failed not equal (non zero)
                        
34e1 : 68                       pla             ;check flags
34e2 : 2901                     and #1          ;mask carry
34e4 : c510                     cmp adrh
                                trap_ne         ;bad carry
34e6 : d0fe            >        bne *           ;failed not equal (non zero)
                        
34e8 : 28                       plp
                        ; decimal ADC / SBC zp,x
34e9 : 08                       php             ;save carry for subtract
34ea : a50d                     lda ad1
34ec : 7500                     adc 0,x         ;perform add
34ee : 08                       php          
34ef : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
34f1 : d0fe            >        bne *           ;failed not equal (non zero)
                        
34f3 : 68                       pla             ;check flags
34f4 : 2901                     and #1          ;mask carry
34f6 : c510                     cmp adrh
                                trap_ne         ;bad carry
34f8 : d0fe            >        bne *           ;failed not equal (non zero)
                        
34fa : 28                       plp
34fb : 08                       php             ;save carry for next add
34fc : a50d                     lda ad1
34fe : f504                     sbc sb2-ad2,x   ;perform subtract
3500 : 08                       php          
3501 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3503 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3505 : 68                       pla             ;check flags
3506 : 2901                     and #1          ;mask carry
3508 : c510                     cmp adrh
                                trap_ne         ;bad carry
350a : d0fe            >        bne *           ;failed not equal (non zero)
                        
350c : 28                       plp
                        ; decimal ADC / SBC abs,x
350d : 08                       php             ;save carry for subtract
350e : a50d                     lda ad1
3510 : 7df501                   adc ada2-ad2,x  ;perform add
3513 : 08                       php          
3514 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3516 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3518 : 68                       pla             ;check flags
3519 : 2901                     and #1          ;mask carry
351b : c510                     cmp adrh
                                trap_ne         ;bad carry
351d : d0fe            >        bne *           ;failed not equal (non zero)
                        
351f : 28                       plp
3520 : 08                       php             ;save carry for next add
3521 : a50d                     lda ad1
3523 : fdf601                   sbc sba2-ad2,x  ;perform subtract
3526 : 08                       php          
3527 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3529 : d0fe            >        bne *           ;failed not equal (non zero)
                        
352b : 68                       pla             ;check flags
352c : 2901                     and #1          ;mask carry
352e : c510                     cmp adrh
                                trap_ne         ;bad carry
3530 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3532 : 28                       plp
                        ; decimal ADC / SBC abs,y
3533 : 08                       php             ;save carry for subtract
3534 : a50d                     lda ad1
3536 : 790401                   adc ada2-$ff,y  ;perform add
3539 : 08                       php          
353a : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
353c : d0fe            >        bne *           ;failed not equal (non zero)
                        
353e : 68                       pla             ;check flags
353f : 2901                     and #1          ;mask carry
3541 : c510                     cmp adrh
                                trap_ne         ;bad carry
3543 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3545 : 28                       plp
3546 : 08                       php             ;save carry for next add
3547 : a50d                     lda ad1
3549 : f90501                   sbc sba2-$ff,y  ;perform subtract
354c : 08                       php          
354d : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
354f : d0fe            >        bne *           ;failed not equal (non zero)
                        
3551 : 68                       pla             ;check flags
3552 : 2901                     and #1          ;mask carry
3554 : c510                     cmp adrh
                                trap_ne         ;bad carry
3556 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3558 : 28                       plp
                        ; decimal ADC / SBC (zp,x)
3559 : 08                       php             ;save carry for subtract
355a : a50d                     lda ad1
355c : 6144                     adc (lo adi2-ad2,x) ;perform add
355e : 08                       php          
355f : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3561 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3563 : 68                       pla             ;check flags
3564 : 2901                     and #1          ;mask carry
3566 : c510                     cmp adrh
                                trap_ne         ;bad carry
3568 : d0fe            >        bne *           ;failed not equal (non zero)
                        
356a : 28                       plp
356b : 08                       php             ;save carry for next add
356c : a50d                     lda ad1
356e : e146                     sbc (lo sbi2-ad2,x) ;perform subtract
3570 : 08                       php          
3571 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3573 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3575 : 68                       pla             ;check flags
3576 : 2901                     and #1          ;mask carry
3578 : c510                     cmp adrh
                                trap_ne         ;bad carry
357a : d0fe            >        bne *           ;failed not equal (non zero)
                        
357c : 28                       plp
                        ; decimal ADC / SBC (abs),y
357d : 08                       php             ;save carry for subtract
357e : a50d                     lda ad1
3580 : 7156                     adc (adiy2),y   ;perform add
3582 : 08                       php          
3583 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3585 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3587 : 68                       pla             ;check flags
3588 : 2901                     and #1          ;mask carry
358a : c510                     cmp adrh
                                trap_ne         ;bad carry
358c : d0fe            >        bne *           ;failed not equal (non zero)
                        
358e : 28                       plp
358f : 08                       php             ;save carry for next add
3590 : a50d                     lda ad1
3592 : f158                     sbc (sbiy2),y   ;perform subtract
3594 : 08                       php          
3595 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3597 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3599 : 68                       pla             ;check flags
359a : 2901                     and #1          ;mask carry
359c : c510                     cmp adrh
                                trap_ne         ;bad carry
359e : d0fe            >        bne *           ;failed not equal (non zero)
                        
35a0 : 28                       plp
35a1 : 60                       rts
                            endif
                        
                        ; core subroutine of the full binary add/subtract test
                        ; iterates through all combinations of operands and carry input
                        ; uses increments/decrements to predict result & result flags
35a2 : a511             chkadd  lda adrf        ;add V-flag if overflow
35a4 : 2983                     and #$83        ;keep N-----ZC / clear V
35a6 : 48                       pha
35a7 : a50d                     lda ad1         ;test sign unequal between operands
35a9 : 450e                     eor ad2
35ab : 300a                     bmi ckad1       ;no overflow possible - operands have different sign
35ad : a50d                     lda ad1         ;test sign equal between operands and result
35af : 450f                     eor adrl
35b1 : 1004                     bpl ckad1       ;no overflow occured - operand and result have same sign
35b3 : 68                       pla
35b4 : 0940                     ora #$40        ;set V
35b6 : 48                       pha
35b7 : 68               ckad1   pla
35b8 : 8511                     sta adrf        ;save expected flags
                        ; binary ADC / SBC zp
35ba : 08                       php             ;save carry for subtract
35bb : a50d                     lda ad1
35bd : 650e                     adc ad2         ;perform add
35bf : 08                       php          
35c0 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
35c2 : d0fe            >        bne *           ;failed not equal (non zero)
                        
35c4 : 68                       pla             ;check flags
35c5 : 29c3                     and #$c3        ;mask NV----ZC
35c7 : c511                     cmp adrf
                                trap_ne         ;bad flags
35c9 : d0fe            >        bne *           ;failed not equal (non zero)
                        
35cb : 28                       plp
35cc : 08                       php             ;save carry for next add
35cd : a50d                     lda ad1
35cf : e512                     sbc sb2         ;perform subtract
35d1 : 08                       php          
35d2 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
35d4 : d0fe            >        bne *           ;failed not equal (non zero)
                        
35d6 : 68                       pla             ;check flags
35d7 : 29c3                     and #$c3        ;mask NV----ZC
35d9 : c511                     cmp adrf
                                trap_ne         ;bad flags
35db : d0fe            >        bne *           ;failed not equal (non zero)
                        
35dd : 28                       plp
                        ; binary ADC / SBC abs
35de : 08                       php             ;save carry for subtract
35df : a50d                     lda ad1
35e1 : 6d0302                   adc ada2        ;perform add
35e4 : 08                       php          
35e5 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
35e7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
35e9 : 68                       pla             ;check flags
35ea : 29c3                     and #$c3        ;mask NV----ZC
35ec : c511                     cmp adrf
                                trap_ne         ;bad flags
35ee : d0fe            >        bne *           ;failed not equal (non zero)
                        
35f0 : 28                       plp
35f1 : 08                       php             ;save carry for next add
35f2 : a50d                     lda ad1
35f4 : ed0402                   sbc sba2        ;perform subtract
35f7 : 08                       php          
35f8 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
35fa : d0fe            >        bne *           ;failed not equal (non zero)
                        
35fc : 68                       pla             ;check flags
35fd : 29c3                     and #$c3        ;mask NV----ZC
35ff : c511                     cmp adrf
                                trap_ne         ;bad flags
3601 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3603 : 28                       plp
                        ; binary ADC / SBC #
3604 : 08                       php             ;save carry for subtract
3605 : a50e                     lda ad2
3607 : 8d1202                   sta ex_adci+1   ;set ADC # operand
360a : a50d                     lda ad1
360c : 201102                   jsr ex_adci     ;execute ADC # in RAM
360f : 08                       php          
3610 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3612 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3614 : 68                       pla             ;check flags
3615 : 29c3                     and #$c3        ;mask NV----ZC
3617 : c511                     cmp adrf
                                trap_ne         ;bad flags
3619 : d0fe            >        bne *           ;failed not equal (non zero)
                        
361b : 28                       plp
361c : 08                       php             ;save carry for next add
361d : a512                     lda sb2
361f : 8d1502                   sta ex_sbci+1   ;set SBC # operand
3622 : a50d                     lda ad1
3624 : 201402                   jsr ex_sbci     ;execute SBC # in RAM
3627 : 08                       php          
3628 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
362a : d0fe            >        bne *           ;failed not equal (non zero)
                        
362c : 68                       pla             ;check flags
362d : 29c3                     and #$c3        ;mask NV----ZC
362f : c511                     cmp adrf
                                trap_ne         ;bad flags
3631 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3633 : 28                       plp
                        ; binary ADC / SBC zp,x
3634 : 08                       php             ;save carry for subtract
3635 : a50d                     lda ad1
3637 : 7500                     adc 0,x         ;perform add
3639 : 08                       php          
363a : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
363c : d0fe            >        bne *           ;failed not equal (non zero)
                        
363e : 68                       pla             ;check flags
363f : 29c3                     and #$c3        ;mask NV----ZC
3641 : c511                     cmp adrf
                                trap_ne         ;bad flags
3643 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3645 : 28                       plp
3646 : 08                       php             ;save carry for next add
3647 : a50d                     lda ad1
3649 : f504                     sbc sb2-ad2,x   ;perform subtract
364b : 08                       php          
364c : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
364e : d0fe            >        bne *           ;failed not equal (non zero)
                        
3650 : 68                       pla             ;check flags
3651 : 29c3                     and #$c3        ;mask NV----ZC
3653 : c511                     cmp adrf
                                trap_ne         ;bad flags
3655 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3657 : 28                       plp
                        ; binary ADC / SBC abs,x
3658 : 08                       php             ;save carry for subtract
3659 : a50d                     lda ad1
365b : 7df501                   adc ada2-ad2,x  ;perform add
365e : 08                       php          
365f : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3661 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3663 : 68                       pla             ;check flags
3664 : 29c3                     and #$c3        ;mask NV----ZC
3666 : c511                     cmp adrf
                                trap_ne         ;bad flags
3668 : d0fe            >        bne *           ;failed not equal (non zero)
                        
366a : 28                       plp
366b : 08                       php             ;save carry for next add
366c : a50d                     lda ad1
366e : fdf601                   sbc sba2-ad2,x  ;perform subtract
3671 : 08                       php          
3672 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3674 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3676 : 68                       pla             ;check flags
3677 : 29c3                     and #$c3        ;mask NV----ZC
3679 : c511                     cmp adrf
                                trap_ne         ;bad flags
367b : d0fe            >        bne *           ;failed not equal (non zero)
                        
367d : 28                       plp
                        ; binary ADC / SBC abs,y
367e : 08                       php             ;save carry for subtract
367f : a50d                     lda ad1
3681 : 790401                   adc ada2-$ff,y  ;perform add
3684 : 08                       php          
3685 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
3687 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3689 : 68                       pla             ;check flags
368a : 29c3                     and #$c3        ;mask NV----ZC
368c : c511                     cmp adrf
                                trap_ne         ;bad flags
368e : d0fe            >        bne *           ;failed not equal (non zero)
                        
3690 : 28                       plp
3691 : 08                       php             ;save carry for next add
3692 : a50d                     lda ad1
3694 : f90501                   sbc sba2-$ff,y  ;perform subtract
3697 : 08                       php          
3698 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
369a : d0fe            >        bne *           ;failed not equal (non zero)
                        
369c : 68                       pla             ;check flags
369d : 29c3                     and #$c3        ;mask NV----ZC
369f : c511                     cmp adrf
                                trap_ne         ;bad flags
36a1 : d0fe            >        bne *           ;failed not equal (non zero)
                        
36a3 : 28                       plp
                        ; binary ADC / SBC (zp,x)
36a4 : 08                       php             ;save carry for subtract
36a5 : a50d                     lda ad1
36a7 : 6144                     adc (lo adi2-ad2,x) ;perform add
36a9 : 08                       php          
36aa : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
36ac : d0fe            >        bne *           ;failed not equal (non zero)
                        
36ae : 68                       pla             ;check flags
36af : 29c3                     and #$c3        ;mask NV----ZC
36b1 : c511                     cmp adrf
                                trap_ne         ;bad flags
36b3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
36b5 : 28                       plp
36b6 : 08                       php             ;save carry for next add
36b7 : a50d                     lda ad1
36b9 : e146                     sbc (lo sbi2-ad2,x) ;perform subtract
36bb : 08                       php          
36bc : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
36be : d0fe            >        bne *           ;failed not equal (non zero)
                        
36c0 : 68                       pla             ;check flags
36c1 : 29c3                     and #$c3        ;mask NV----ZC
36c3 : c511                     cmp adrf
                                trap_ne         ;bad flags
36c5 : d0fe            >        bne *           ;failed not equal (non zero)
                        
36c7 : 28                       plp
                        ; binary ADC / SBC (abs),y
36c8 : 08                       php             ;save carry for subtract
36c9 : a50d                     lda ad1
36cb : 7156                     adc (adiy2),y   ;perform add
36cd : 08                       php          
36ce : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
36d0 : d0fe            >        bne *           ;failed not equal (non zero)
                        
36d2 : 68                       pla             ;check flags
36d3 : 29c3                     and #$c3        ;mask NV----ZC
36d5 : c511                     cmp adrf
                                trap_ne         ;bad flags
36d7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
36d9 : 28                       plp
36da : 08                       php             ;save carry for next add
36db : a50d                     lda ad1
36dd : f158                     sbc (sbiy2),y   ;perform subtract
36df : 08                       php          
36e0 : c50f                     cmp adrl        ;check result
                                trap_ne         ;bad result
36e2 : d0fe            >        bne *           ;failed not equal (non zero)
                        
36e4 : 68                       pla             ;check flags
36e5 : 29c3                     and #$c3        ;mask NV----ZC
36e7 : c511                     cmp adrf
                                trap_ne         ;bad flags
36e9 : d0fe            >        bne *           ;failed not equal (non zero)
                        
36eb : 28                       plp
36ec : 60                       rts
                        
                        ; target for the jump absolute test
36ed : 88                       dey
36ee : 88                       dey
36ef :                  test_far
36ef : 08                       php             ;either SP or Y count will fail, if we do not hit
36f0 : 88                       dey
36f1 : 88                       dey
36f2 : 88                       dey
36f3 : 28                       plp
                                trap_cs         ;flags loaded?
36f4 : b0fe            >        bcs *           ;failed carry set
                        
                                trap_vs
36f6 : 70fe            >        bvs *           ;failed overflow set
                        
                                trap_mi
36f8 : 30fe            >        bmi *           ;failed minus (bit 7 set)
                        
                                trap_eq 
36fa : f0fe            >        beq *           ;failed equal (zero)
                        
36fc : c946                     cmp #'F'        ;registers loaded?
                                trap_ne
36fe : d0fe            >        bne *           ;failed not equal (non zero)
                        
3700 : e041                     cpx #'A'
                                trap_ne        
3702 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3704 : c04f                     cpy #('R'-3)
                                trap_ne
3706 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3708 : 48                       pha             ;save a,x
3709 : 8a                       txa
370a : 48                       pha
370b : ba                       tsx
370c : e0fd                     cpx #$fd        ;check SP
                                trap_ne
370e : d0fe            >        bne *           ;failed not equal (non zero)
                        
3710 : 68                       pla             ;restore x
3711 : aa                       tax
                                set_stat $ff
                       >            load_flag $ff
3712 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
3714 : 48              >            pha         ;use stack to load status
3715 : 28              >            plp
                        
3716 : 68                       pla             ;restore a
3717 : e8                       inx             ;return registers with modifications
3718 : 49aa                     eor #$aa        ;N=1, V=1, Z=0, C=1
371a : 4c0f09                   jmp far_ret
                                
                        ; target for the jump indirect test
371d : 00                       align
371e : 2737             ptr_tst_ind dw test_ind
3720 : 6409             ptr_ind_ret dw ind_ret
                                trap            ;runover protection
3722 : 4c2237          >        jmp *           ;failed anyway
                        
3725 : 88                       dey
3726 : 88                       dey
3727 :                  test_ind
3727 : 08                       php             ;either SP or Y count will fail, if we do not hit
3728 : 88                       dey
3729 : 88                       dey
372a : 88                       dey
372b : 28                       plp
                                trap_cs         ;flags loaded?
372c : b0fe            >        bcs *           ;failed carry set
                        
                                trap_vs
372e : 70fe            >        bvs *           ;failed overflow set
                        
                                trap_mi
3730 : 30fe            >        bmi *           ;failed minus (bit 7 set)
                        
                                trap_eq 
3732 : f0fe            >        beq *           ;failed equal (zero)
                        
3734 : c949                     cmp #'I'        ;registers loaded?
                                trap_ne
3736 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3738 : e04e                     cpx #'N'
                                trap_ne        
373a : d0fe            >        bne *           ;failed not equal (non zero)
                        
373c : c041                     cpy #('D'-3)
                                trap_ne
373e : d0fe            >        bne *           ;failed not equal (non zero)
                        
3740 : 48                       pha             ;save a,x
3741 : 8a                       txa
3742 : 48                       pha
3743 : ba                       tsx
3744 : e0fd                     cpx #$fd        ;check SP
                                trap_ne
3746 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3748 : 68                       pla             ;restore x
3749 : aa                       tax
                                set_stat $ff
                       >            load_flag $ff
374a : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
374c : 48              >            pha         ;use stack to load status
374d : 28              >            plp
                        
374e : 68                       pla             ;restore a
374f : e8                       inx             ;return registers with modifications
3750 : 49aa                     eor #$aa        ;N=1, V=1, Z=0, C=1
3752 : 6c2037                   jmp (ptr_ind_ret)
                                trap            ;runover protection
3755 : 4c5537          >        jmp *           ;failed anyway
                        
3758 : 4c0004                   jmp start       ;catastrophic error - cannot continue
                        
                        ; target for the jump subroutine test
375b : 88                       dey
375c : 88                       dey
375d :                  test_jsr
375d : 08                       php             ;either SP or Y count will fail, if we do not hit
375e : 88                       dey
375f : 88                       dey
3760 : 88                       dey
3761 : 28                       plp
                                trap_cs         ;flags loaded?
3762 : b0fe            >        bcs *           ;failed carry set
                        
                                trap_vs
3764 : 70fe            >        bvs *           ;failed overflow set
                        
                                trap_mi
3766 : 30fe            >        bmi *           ;failed minus (bit 7 set)
                        
                                trap_eq 
3768 : f0fe            >        beq *           ;failed equal (zero)
                        
376a : c94a                     cmp #'J'        ;registers loaded?
                                trap_ne
376c : d0fe            >        bne *           ;failed not equal (non zero)
                        
376e : e053                     cpx #'S'
                                trap_ne        
3770 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3772 : c04f                     cpy #('R'-3)
                                trap_ne
3774 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3776 : 48                       pha             ;save a,x
3777 : 8a                       txa
3778 : 48                       pha       
3779 : ba                       tsx             ;sp -4? (return addr,a,x)
377a : e0fb                     cpx #$fb
                                trap_ne
377c : d0fe            >        bne *           ;failed not equal (non zero)
                        
377e : adff01                   lda $1ff        ;propper return on stack
3781 : c909                     cmp #hi(jsr_ret)
                                trap_ne
3783 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3785 : adfe01                   lda $1fe
3788 : c99a                     cmp #lo(jsr_ret)
                                trap_ne
378a : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                set_stat $ff
                       >            load_flag $ff
378c : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                       >
378e : 48              >            pha         ;use stack to load status
378f : 28              >            plp
                        
3790 : 68                       pla             ;pull x,a
3791 : aa                       tax
3792 : 68                       pla
3793 : e8                       inx             ;return registers with modifications
3794 : 49aa                     eor #$aa        ;N=1, V=1, Z=0, C=1
3796 : 60                       rts
                                trap            ;runover protection
3797 : 4c9737          >        jmp *           ;failed anyway
                        
379a : 4c0004                   jmp start       ;catastrophic error - cannot continue
                                
                        ;trap in case of unexpected IRQ, NMI, BRK, RESET - BRK test target
379d :                  nmi_trap
                                trap            ;check stack for conditions at NMI
379d : 4c9d37          >        jmp *           ;failed anyway
                        
37a0 : 4c0004                   jmp start       ;catastrophic error - cannot continue
37a3 :                  res_trap
                                trap            ;unexpected RESET
37a3 : 4ca337          >        jmp *           ;failed anyway
                        
37a6 : 4c0004                   jmp start       ;catastrophic error - cannot continue
                                
37a9 : 88                       dey
37aa : 88                       dey
37ab :                  irq_trap                ;BRK test or unextpected BRK or IRQ
37ab : 08                       php             ;either SP or Y count will fail, if we do not hit
37ac : 88                       dey
37ad : 88                       dey
37ae : 88                       dey
                                ;next traps could be caused by unexpected BRK or IRQ
                                ;check stack for BREAK and originating location
                                ;possible jump/branch into weeds (uninitialized space)
37af : c9bd                     cmp #$ff-'B'    ;BRK pass 2 registers loaded?
37b1 : f042                     beq break2
37b3 : c942                     cmp #'B'        ;BRK pass 1 registers loaded?
                                trap_ne
37b5 : d0fe            >        bne *           ;failed not equal (non zero)
                        
37b7 : e052                     cpx #'R'
                                trap_ne        
37b9 : d0fe            >        bne *           ;failed not equal (non zero)
                        
37bb : c048                     cpy #'K'-3
                                trap_ne
37bd : d0fe            >        bne *           ;failed not equal (non zero)
                        
37bf : 850a                     sta irq_a       ;save registers during break test
37c1 : 860b                     stx irq_x
37c3 : ba                       tsx             ;test break on stack
37c4 : bd0201                   lda $102,x
                                cmp_flag 0      ;break test should have B=1 & unused=1 on stack
37c7 : c930            >            cmp #(0      |fao)&m8    ;expected flags + always on bits
                        
                                trap_ne         ; - no break flag on stack
37c9 : d0fe            >        bne *           ;failed not equal (non zero)
                        
37cb : 68                       pla
                                cmp_flag intdis ;should have added interrupt disable
37cc : c934            >            cmp #(intdis |fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
37ce : d0fe            >        bne *           ;failed not equal (non zero)
                        
37d0 : ba                       tsx
37d1 : e0fc                     cpx #$fc        ;sp -3? (return addr, flags)
                                trap_ne
37d3 : d0fe            >        bne *           ;failed not equal (non zero)
                        
37d5 : adff01                   lda $1ff        ;propper return on stack
37d8 : c909                     cmp #hi(brk_ret0)
                                trap_ne
37da : d0fe            >        bne *           ;failed not equal (non zero)
                        
37dc : adfe01                   lda $1fe
37df : c9d1                     cmp #lo(brk_ret0)
                                trap_ne
37e1 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                load_flag $ff
37e3 : a9ff            >            lda #$ff             ;allow test to change I-flag (no mask)
                        
37e5 : 48                       pha
37e6 : a60b                     ldx irq_x
37e8 : e8                       inx             ;return registers with modifications
37e9 : a50a                     lda irq_a
37eb : 49aa                     eor #$aa
37ed : 28                       plp             ;N=1, V=1, Z=1, C=1 but original flags should be restored
37ee : 40                       rti
                                trap            ;runover protection
37ef : 4cef37          >        jmp *           ;failed anyway
                        
37f2 : 4c0004                   jmp start       ;catastrophic error - cannot continue
                                
37f5 :                  break2                  ;BRK pass 2        
37f5 : e0ad                     cpx #$ff-'R'
                                trap_ne        
37f7 : d0fe            >        bne *           ;failed not equal (non zero)
                        
37f9 : c0b1                     cpy #$ff-'K'-3
                                trap_ne
37fb : d0fe            >        bne *           ;failed not equal (non zero)
                        
37fd : 850a                     sta irq_a       ;save registers during break test
37ff : 860b                     stx irq_x
3801 : ba                       tsx             ;test break on stack
3802 : bd0201                   lda $102,x
                                cmp_flag $ff    ;break test should have B=1
3805 : c9ff            >            cmp #($ff    |fao)&m8    ;expected flags + always on bits
                        
                                trap_ne         ; - no break flag on stack
3807 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3809 : 68                       pla
380a : 0908                     ora #decmode    ;ignore decmode cleared if 65c02
                                cmp_flag $ff    ;actual passed flags
380c : c9ff            >            cmp #($ff    |fao)&m8    ;expected flags + always on bits
                        
                                trap_ne
380e : d0fe            >        bne *           ;failed not equal (non zero)
                        
3810 : ba                       tsx
3811 : e0fc                     cpx #$fc        ;sp -3? (return addr, flags)
                                trap_ne
3813 : d0fe            >        bne *           ;failed not equal (non zero)
                        
3815 : adff01                   lda $1ff        ;propper return on stack
3818 : c909                     cmp #hi(brk_ret1)
                                trap_ne
381a : d0fe            >        bne *           ;failed not equal (non zero)
                        
381c : adfe01                   lda $1fe
381f : c9f7                     cmp #lo(brk_ret1)
                                trap_ne
3821 : d0fe            >        bne *           ;failed not equal (non zero)
                        
                                load_flag intdis
3823 : a904            >            lda #intdis             ;allow test to change I-flag (no mask)
                        
3825 : 48                       pha      
3826 : a60b                     ldx irq_x
3828 : e8                       inx             ;return registers with modifications
3829 : a50a                     lda irq_a
382b : 49aa                     eor #$aa
382d : 28                       plp             ;N=0, V=0, Z=0, C=0 but original flags should be restored
382e : 40                       rti
                                trap            ;runover protection
382f : 4c2f38          >        jmp *           ;failed anyway
                        
3832 : 4c0004                   jmp start       ;catastrophic error - cannot continue
                        
                            if report = 1
                                include "report.i65"
                            endif
                                
                        ;copy of data to initialize BSS segment
                            if load_data_direct != 1
                        zp_init
                        zp1_    db  $c3,$82,$41,0   ;test patterns for LDx BIT ROL ROR ASL LSR
                        zp7f_   db  $7f             ;test pattern for compare
                        ;logical zeropage operands
                        zpOR_   db  0,$1f,$71,$80   ;test pattern for OR
                        zpAN_   db  $0f,$ff,$7f,$80 ;test pattern for AND
                        zpEO_   db  $ff,$0f,$8f,$8f ;test pattern for EOR
                        ;indirect addressing pointers
                        ind1_   dw  abs1            ;indirect pointer to pattern in absolute memory
                                dw  abs1+1
                                dw  abs1+2
                                dw  abs1+3
                                dw  abs7f
                        inw1_   dw  abs1-$f8        ;indirect pointer for wrap-test pattern
                        indt_   dw  abst            ;indirect pointer to store area in absolute memory
                                dw  abst+1
                                dw  abst+2
                                dw  abst+3
                        inwt_   dw  abst-$f8        ;indirect pointer for wrap-test store
                        indAN_  dw  absAN           ;indirect pointer to AND pattern in absolute memory
                                dw  absAN+1
                                dw  absAN+2
                                dw  absAN+3
                        indEO_  dw  absEO           ;indirect pointer to EOR pattern in absolute memory
                                dw  absEO+1
                                dw  absEO+2
                                dw  absEO+3
                        indOR_  dw  absOR           ;indirect pointer to OR pattern in absolute memory
                                dw  absOR+1
                                dw  absOR+2
                                dw  absOR+3
                        ;add/subtract indirect pointers
                        adi2_   dw  ada2            ;indirect pointer to operand 2 in absolute memory
                        sbi2_   dw  sba2            ;indirect pointer to complemented operand 2 (SBC)
                        adiy2_  dw  ada2-$ff        ;with offset for indirect indexed
                        sbiy2_  dw  sba2-$ff
                        zp_end
                            if (zp_end - zp_init) != (zp_bss_end - zp_bss)   
                                ;force assembler error if size is different   
                                ERROR ERROR ERROR   ;mismatch between bss and zeropage data
                            endif 
                        data_init
                        ex_and_ and #0              ;execute immediate opcodes
                                rts
                        ex_eor_ eor #0              ;execute immediate opcodes
                                rts
                        ex_ora_ ora #0              ;execute immediate opcodes
                                rts
                        ex_adc_ adc #0              ;execute immediate opcodes
                                rts
                        ex_sbc_ sbc #0              ;execute immediate opcodes
                                rts
                        abs1_   db  $c3,$82,$41,0   ;test patterns for LDx BIT ROL ROR ASL LSR
                        abs7f_  db  $7f             ;test pattern for compare
                        ;loads
                        fLDx_   db  fn,fn,0,fz      ;expected flags for load
                        ;shifts
                        rASL_                       ;expected result ASL & ROL -carry
                        rROL_   db  $86,$04,$82,0   ; "
                        rROLc_  db  $87,$05,$83,1   ;expected result ROL +carry
                        rLSR_                       ;expected result LSR & ROR -carry
                        rROR_   db  $61,$41,$20,0   ; "
                        rRORc_  db  $e1,$c1,$a0,$80 ;expected result ROR +carry
                        fASL_                       ;expected flags for shifts
                        fROL_   db  fnc,fc,fn,fz    ;no carry in
                        fROLc_  db  fnc,fc,fn,0     ;carry in
                        fLSR_
                        fROR_   db  fc,0,fc,fz      ;no carry in
                        fRORc_  db  fnc,fn,fnc,fn   ;carry in
                        ;increments (decrements)
                        rINC_   db  $7f,$80,$ff,0,1 ;expected result for INC/DEC
                        fINC_   db  0,fn,fn,fz,0    ;expected flags for INC/DEC
                        ;logical memory operand
                        absOR_  db  0,$1f,$71,$80   ;test pattern for OR
                        absAN_  db  $0f,$ff,$7f,$80 ;test pattern for AND
                        absEO_  db  $ff,$0f,$8f,$8f ;test pattern for EOR
                        ;logical accu operand
                        absORa_ db  0,$f1,$1f,0     ;test pattern for OR
                        absANa_ db  $f0,$ff,$ff,$ff ;test pattern for AND
                        absEOa_ db  $ff,$f0,$f0,$0f ;test pattern for EOR
                        ;logical results
                        absrlo_ db  0,$ff,$7f,$80
                        absflo_ db  fz,fn,0,fn
                        data_end
                            if (data_end - data_init) != (data_bss_end - data_bss)
                                ;force assembler error if size is different   
                                ERROR ERROR ERROR   ;mismatch between bss and data
                            endif 
                        
                        vec_init
                                dw  nmi_trap
                                dw  res_trap
                                dw  irq_trap
                        vec_bss equ $fffa
                            endif                   ;end of RAM init data
                            
                            if (load_data_direct = 1) & (ROM_vectors = 1)  
fffa =                          org $fffa       ;vectors
fffa : 9d37                     dw  nmi_trap
fffc : a337                     dw  res_trap
fffe : ab37                     dw  irq_trap
                            endif
                        
fffa =                          end start
                                    
No errors in pass 2.
Wrote binary from address $0000 through $ffff.
Total size 65536 bytes.
Program start address is at $0400 (1024).