Steve2/65C02_extended_opcodes_test...

11510 lines
574 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

AS65 Assembler for R6502 [1.42]. Copyright 1994-2007, Frank A. Kingswood Page 1
------------------------------------------------ 65C02_extended_opcodes_test.a65c ------------------------------------------------
2884 lines read, no errors in pass 1.
;
; 6 5 C 0 2 E X T E N D E D O P C O D E S T E S T
;
; Copyright (C) 2013-2017 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 additional 65C02 opcodes, addressing
; modes and functionality not available in the NMOS version of the 6502.
; The 6502_functional_test is a prerequisite to this test.
; NMI, IRQ, STP & WAI are covered in the 6502_interrupt_test.
;
; 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 -x -h0
; | | | | | no page headers in listing
; | | | | 65C02 extensions
; | | | 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 65C02 only!
; Decimal ops will only be tested with valid BCD operands and the V flag will
; be ignored as it is absolutely useless in decimal mode.
;
; 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:
; 19-jul-2013 1st version distributed for testing
; 23-jul-2013 fixed BRA out of range due to larger trap macros
; added RAM integrity check
; 16-aug-2013 added error report to standard output option
; 23-aug-2015 change revoked
; 24-aug-2015 all self modifying immediate opcodes now execute in data RAM
; 28-aug-2015 fixed decimal adc/sbc immediate only testing carry
; 09-feb-2017 fixed RMB/SMB tested when they shouldn't be tested
; 04-dec-2017 fixed BRK not tested for actually going through the IRQ vector
; added option to skip the remainder of a failing test
; in report.i65
; added skip override to undefined opcode as NOP test
; 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.
0003 = I_flag = 3
;configure memory - try to stay away from memory used by the system
;zero_page memory start address, $4e (78) consecutive Bytes required
; add 2 if I_flag = 2
000a = zero_page = $a
;data_segment memory start address, $63 (99) consecutive Bytes required
; + 12 Bytes at data_segment + $f9 (JMP indirect page cross test)
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, 10kB of consecutive space required
; add 1 kB if I_flag = 2
0400 = code_segment = $400
;added WDC only opcodes WAI & STP (0=test as NOPs, >0=no test)
0001 = wdc_op = 1
;added Rockwell & WDC opcodes BBR, BBS, RMB & SMB
;(0=test as NOPs, 1=full test, >1=no test)
0001 = rkwl_wdc_op = 1
;skip testing all undefined opcodes override
;0=test as NOP, >0=skip
0000 = skip_nop = 0
;report errors through I/O channel (0=use standard self trap loops, 1=include
;report.i65 as I/O channel, add 3 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
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
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 of interrupt enable/disable on load and compare
;masking of always on bits after PHP or BRK (unused & break) on compare
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
;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_as macro ;testing result in accu & flags, save accu
pha
php ;save flags
cmp #\1 ;test result
trap_ne
pla ;load status
pha
cmp_flag \2
trap_ne
plp ;restore status
pla
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
ldx #11 ;reset modifiable RAM
ccs1\? sta jxi_tab,x ;JMP indirect page cross area
dex
bpl ccs1\?
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 (-V in decimal 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 : 1002 ind1 dw abs1 ;indirect pointer to pattern in absolute memory
0026 : 1102 dw abs1+1
0028 : 1202 dw abs1+2
002a : 1302 dw abs1+3
002c : 1402 dw abs7f
002e : 1801 inw1 dw abs1-$f8 ;indirect pointer for wrap-test pattern
0030 : 0502 indt dw abst ;indirect pointer to store area in absolute memory
0032 : 0602 dw abst+1
0034 : 0702 dw abst+2
0036 : 0802 dw abst+3
0038 : 0d01 inwt dw abst-$f8 ;indirect pointer for wrap-test store
003a : 4702 indAN dw absAN ;indirect pointer to AND pattern in absolute memory
003c : 4802 dw absAN+1
003e : 4902 dw absAN+2
0040 : 4a02 dw absAN+3
0042 : 4b02 indEO dw absEO ;indirect pointer to EOR pattern in absolute memory
0044 : 4c02 dw absEO+1
0046 : 4d02 dw absEO+2
0048 : 4e02 dw absEO+3
004a : 4302 indOR dw absOR ;indirect pointer to OR pattern in absolute memory
004c : 4402 dw absOR+1
004e : 4502 dw absOR+2
0050 : 4602 dw absOR+3
;add/subtract indirect pointers
0052 : 0502 adi2 dw ada2 ;indirect pointer to operand 2 in absolute memory
0054 : 0602 sbi2 dw sba2 ;indirect pointer to complemented operand 2 (SBC)
0056 : 0601 adiy2 dw ada2-$ff ;with offset for indirect indexed
0058 : 0701 sbiy2 dw sba2-$ff
005a : zp_bss_end
0200 = org data_segment
0200 : 0000 pg_x ds 2 ;high JMP indirect address for page cross bug
0202 : 00 test_case ds 1 ;current test number
0203 : 0000 ram_chksm ds 2 ;checksum for RAM integrity test
;add/subtract operand copy - abs tests write area
0205 : abst ;5 bytes store/modify test area
0205 : 00 ada2 ds 1 ;operand 2
0206 : 00 sba2 ds 1 ;operand 2 complemented for subtract
0207 : 000000 ds 3 ;fill remaining bytes
020a : data_bss
if load_data_direct = 1
020a : 6900 ex_adci adc #0 ;execute immediate opcodes
020c : 60 rts
020d : e900 ex_sbci sbc #0 ;execute immediate opcodes
020f : 60 rts
else
ex_adci ds 3
ex_sbci ds 3
endif
0210 : c3824100 abs1 db $c3,$82,$41,0 ;test patterns for LDx BIT ROL ROR ASL LSR
0214 : 7f abs7f db $7f ;test pattern for compare
;loads
0215 : 80800002 fLDx db fn,fn,0,fz ;expected flags for load
;shifts
0219 : rASL ;expected result ASL & ROL -carry
0219 : 86048200 rROL db $86,$04,$82,0 ; "
021d : 87058301 rROLc db $87,$05,$83,1 ;expected result ROL +carry
0221 : rLSR ;expected result LSR & ROR -carry
0221 : 61412000 rROR db $61,$41,$20,0 ; "
0225 : e1c1a080 rRORc db $e1,$c1,$a0,$80 ;expected result ROR +carry
0229 : fASL ;expected flags for shifts
0229 : 81018002 fROL db fnc,fc,fn,fz ;no carry in
022d : 81018000 fROLc db fnc,fc,fn,0 ;carry in
0231 : fLSR
0231 : 01000102 fROR db fc,0,fc,fz ;no carry in
0235 : 81808180 fRORc db fnc,fn,fnc,fn ;carry in
;increments (decrements)
0239 : 7f80ff0001 rINC db $7f,$80,$ff,0,1 ;expected result for INC/DEC
023e : 0080800200 fINC db 0,fn,fn,fz,0 ;expected flags for INC/DEC
;logical memory operand
0243 : 001f7180 absOR db 0,$1f,$71,$80 ;test pattern for OR
0247 : 0fff7f80 absAN db $0f,$ff,$7f,$80 ;test pattern for AND
024b : ff0f8f8f absEO db $ff,$0f,$8f,$8f ;test pattern for EOR
;logical accu operand
024f : 00f11f00 absORa db 0,$f1,$1f,0 ;test pattern for OR
0253 : f0ffffff absANa db $f0,$ff,$ff,$ff ;test pattern for AND
0257 : fff0f00f absEOa db $ff,$f0,$f0,$0f ;test pattern for EOR
;logical results
025b : 00ff7f80 absrlo db 0,$ff,$7f,$80
025f : 02800080 absflo db fz,fn,0,fn
0263 : data_bss_end
;define area for page crossing JMP (abs) & JMP (abs,x) test
02f9 = jxi_tab equ data_segment + $100 - 7 ;JMP (jxi_tab,x) x=6
02fd = ji_tab equ data_segment + $100 - 3 ;JMP (ji_tab+2)
0300 = jxp_tab equ data_segment + $100 ;JMP (jxp_tab-255) x=255
code
0400 = org code_segment
0400 : d8 start cld
0401 : a2ff ldx #$ff
0403 : 9a txs
0404 : a900 lda #0 ;*** test 0 = initialize
0406 : 8d0202 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
;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
ldx #11 ;reset modifiable RAM
gcs1 sta jxi_tab,x ;JMP indirect page cross area
dex
bpl gcs1
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
0409 : ad0202 > lda test_case ;previous test
040c : c900 > cmp #test_num
> trap_ne ;test is out of sequence
040e : d0fe > bne * ;failed not equal (non zero)
>
0001 = >test_num = test_num + 1
0410 : a901 > lda #test_num ;*** next tests' number
0412 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
;testing stack operations PHX PHY PLX PLY
0415 : a999 lda #$99 ;protect a
0417 : a2ff ldx #$ff ;initialize stack
0419 : 9a txs
041a : a255 ldx #$55
041c : da phx
041d : a2aa ldx #$aa
041f : da phx
0420 : ecfe01 cpx $1fe ;on stack ?
trap_ne
0423 : d0fe > bne * ;failed not equal (non zero)
0425 : ba tsx
0426 : e0fd cpx #$fd ;sp decremented?
trap_ne
0428 : d0fe > bne * ;failed not equal (non zero)
042a : 7a ply
042b : c0aa cpy #$aa ;successful retreived from stack?
trap_ne
042d : d0fe > bne * ;failed not equal (non zero)
042f : 7a ply
0430 : c055 cpy #$55
trap_ne
0432 : d0fe > bne * ;failed not equal (non zero)
0434 : ccff01 cpy $1ff ;remains on stack?
trap_ne
0437 : d0fe > bne * ;failed not equal (non zero)
0439 : ba tsx
043a : e0ff cpx #$ff ;sp incremented?
trap_ne
043c : d0fe > bne * ;failed not equal (non zero)
043e : a0a5 ldy #$a5
0440 : 5a phy
0441 : a05a ldy #$5a
0443 : 5a phy
0444 : ccfe01 cpy $1fe ;on stack ?
trap_ne
0447 : d0fe > bne * ;failed not equal (non zero)
0449 : ba tsx
044a : e0fd cpx #$fd ;sp decremented?
trap_ne
044c : d0fe > bne * ;failed not equal (non zero)
044e : fa plx
044f : e05a cpx #$5a ;successful retreived from stack?
trap_ne
0451 : d0fe > bne * ;failed not equal (non zero)
0453 : fa plx
0454 : e0a5 cpx #$a5
trap_ne
0456 : d0fe > bne * ;failed not equal (non zero)
0458 : ecff01 cpx $1ff ;remains on stack?
trap_ne
045b : d0fe > bne * ;failed not equal (non zero)
045d : ba tsx
045e : e0ff cpx #$ff ;sp incremented?
trap_ne
0460 : d0fe > bne * ;failed not equal (non zero)
0462 : c999 cmp #$99 ;unchanged?
trap_ne
0464 : d0fe > bne * ;failed not equal (non zero)
next_test
0466 : ad0202 > lda test_case ;previous test
0469 : c901 > cmp #test_num
> trap_ne ;test is out of sequence
046b : d0fe > bne * ;failed not equal (non zero)
>
0002 = >test_num = test_num + 1
046d : a902 > lda #test_num ;*** next tests' number
046f : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
; test PHX does not alter flags or X but PLX does
0472 : a0aa ldy #$aa ;protect y
set_x 1,$ff ;push
> load_flag $ff
0474 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0476 : 48 > pha ;use stack to load status
0477 : a201 > ldx #1 ;precharge index x
0479 : 28 > plp
047a : da phx
tst_x 1,$ff
047b : 08 > php ;save flags
047c : e001 > cpx #1 ;test result
> trap_ne
047e : d0fe > bne * ;failed not equal (non zero)
>
0480 : 68 > pla ;load status
0481 : 48 > pha
> cmp_flag $ff
0482 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0484 : d0fe > bne * ;failed not equal (non zero)
>
0486 : 28 > plp ;restore status
set_x 0,0
> load_flag 0
0487 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0489 : 48 > pha ;use stack to load status
048a : a200 > ldx #0 ;precharge index x
048c : 28 > plp
048d : da phx
tst_x 0,0
048e : 08 > php ;save flags
048f : e000 > cpx #0 ;test result
> trap_ne
0491 : d0fe > bne * ;failed not equal (non zero)
>
0493 : 68 > pla ;load status
0494 : 48 > pha
> cmp_flag 0
0495 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0497 : d0fe > bne * ;failed not equal (non zero)
>
0499 : 28 > plp ;restore status
set_x $ff,$ff
> load_flag $ff
049a : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
049c : 48 > pha ;use stack to load status
049d : a2ff > ldx #$ff ;precharge index x
049f : 28 > plp
04a0 : da phx
tst_x $ff,$ff
04a1 : 08 > php ;save flags
04a2 : e0ff > cpx #$ff ;test result
> trap_ne
04a4 : d0fe > bne * ;failed not equal (non zero)
>
04a6 : 68 > pla ;load status
04a7 : 48 > pha
> cmp_flag $ff
04a8 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
04aa : d0fe > bne * ;failed not equal (non zero)
>
04ac : 28 > plp ;restore status
set_x 1,0
> load_flag 0
04ad : a900 > lda #0 ;allow test to change I-flag (no mask)
>
04af : 48 > pha ;use stack to load status
04b0 : a201 > ldx #1 ;precharge index x
04b2 : 28 > plp
04b3 : da phx
tst_x 1,0
04b4 : 08 > php ;save flags
04b5 : e001 > cpx #1 ;test result
> trap_ne
04b7 : d0fe > bne * ;failed not equal (non zero)
>
04b9 : 68 > pla ;load status
04ba : 48 > pha
> cmp_flag 0
04bb : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
04bd : d0fe > bne * ;failed not equal (non zero)
>
04bf : 28 > plp ;restore status
set_x 0,$ff
> load_flag $ff
04c0 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
04c2 : 48 > pha ;use stack to load status
04c3 : a200 > ldx #0 ;precharge index x
04c5 : 28 > plp
04c6 : da phx
tst_x 0,$ff
04c7 : 08 > php ;save flags
04c8 : e000 > cpx #0 ;test result
> trap_ne
04ca : d0fe > bne * ;failed not equal (non zero)
>
04cc : 68 > pla ;load status
04cd : 48 > pha
> cmp_flag $ff
04ce : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
04d0 : d0fe > bne * ;failed not equal (non zero)
>
04d2 : 28 > plp ;restore status
set_x $ff,0
> load_flag 0
04d3 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
04d5 : 48 > pha ;use stack to load status
04d6 : a2ff > ldx #$ff ;precharge index x
04d8 : 28 > plp
04d9 : da phx
tst_x $ff,0
04da : 08 > php ;save flags
04db : e0ff > cpx #$ff ;test result
> trap_ne
04dd : d0fe > bne * ;failed not equal (non zero)
>
04df : 68 > pla ;load status
04e0 : 48 > pha
> cmp_flag 0
04e1 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
04e3 : d0fe > bne * ;failed not equal (non zero)
>
04e5 : 28 > plp ;restore status
set_x 0,$ff ;pull
> load_flag $ff
04e6 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
04e8 : 48 > pha ;use stack to load status
04e9 : a200 > ldx #0 ;precharge index x
04eb : 28 > plp
04ec : fa plx
tst_x $ff,$ff-zero
04ed : 08 > php ;save flags
04ee : e0ff > cpx #$ff ;test result
> trap_ne
04f0 : d0fe > bne * ;failed not equal (non zero)
>
04f2 : 68 > pla ;load status
04f3 : 48 > pha
> cmp_flag $ff-zero
04f4 : c9fd > cmp #($ff-zero|fao)&m8 ;expected flags + always on bits
>
> trap_ne
04f6 : d0fe > bne * ;failed not equal (non zero)
>
04f8 : 28 > plp ;restore status
set_x $ff,0
> load_flag 0
04f9 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
04fb : 48 > pha ;use stack to load status
04fc : a2ff > ldx #$ff ;precharge index x
04fe : 28 > plp
04ff : fa plx
tst_x 0,zero
0500 : 08 > php ;save flags
0501 : e000 > cpx #0 ;test result
> trap_ne
0503 : d0fe > bne * ;failed not equal (non zero)
>
0505 : 68 > pla ;load status
0506 : 48 > pha
> cmp_flag zero
0507 : c932 > cmp #(zero|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0509 : d0fe > bne * ;failed not equal (non zero)
>
050b : 28 > plp ;restore status
set_x $fe,$ff
> load_flag $ff
050c : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
050e : 48 > pha ;use stack to load status
050f : a2fe > ldx #$fe ;precharge index x
0511 : 28 > plp
0512 : fa plx
tst_x 1,$ff-zero-minus
0513 : 08 > php ;save flags
0514 : e001 > cpx #1 ;test result
> trap_ne
0516 : d0fe > bne * ;failed not equal (non zero)
>
0518 : 68 > pla ;load status
0519 : 48 > pha
> cmp_flag $ff-zero-minus
051a : c97d > cmp #($ff-zero-minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
051c : d0fe > bne * ;failed not equal (non zero)
>
051e : 28 > plp ;restore status
set_x 0,0
> load_flag 0
051f : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0521 : 48 > pha ;use stack to load status
0522 : a200 > ldx #0 ;precharge index x
0524 : 28 > plp
0525 : fa plx
tst_x $ff,minus
0526 : 08 > php ;save flags
0527 : e0ff > cpx #$ff ;test result
> trap_ne
0529 : d0fe > bne * ;failed not equal (non zero)
>
052b : 68 > pla ;load status
052c : 48 > pha
> cmp_flag minus
052d : c9b0 > cmp #(minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
052f : d0fe > bne * ;failed not equal (non zero)
>
0531 : 28 > plp ;restore status
set_x $ff,$ff
> load_flag $ff
0532 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0534 : 48 > pha ;use stack to load status
0535 : a2ff > ldx #$ff ;precharge index x
0537 : 28 > plp
0538 : fa plx
tst_x 0,$ff-minus
0539 : 08 > php ;save flags
053a : e000 > cpx #0 ;test result
> trap_ne
053c : d0fe > bne * ;failed not equal (non zero)
>
053e : 68 > pla ;load status
053f : 48 > pha
> cmp_flag $ff-minus
0540 : c97f > cmp #($ff-minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0542 : d0fe > bne * ;failed not equal (non zero)
>
0544 : 28 > plp ;restore status
set_x $fe,0
> load_flag 0
0545 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0547 : 48 > pha ;use stack to load status
0548 : a2fe > ldx #$fe ;precharge index x
054a : 28 > plp
054b : fa plx
tst_x 1,0
054c : 08 > php ;save flags
054d : e001 > cpx #1 ;test result
> trap_ne
054f : d0fe > bne * ;failed not equal (non zero)
>
0551 : 68 > pla ;load status
0552 : 48 > pha
> cmp_flag 0
0553 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0555 : d0fe > bne * ;failed not equal (non zero)
>
0557 : 28 > plp ;restore status
0558 : c0aa cpy #$aa ;Y unchanged
trap_ne
055a : d0fe > bne * ;failed not equal (non zero)
next_test
055c : ad0202 > lda test_case ;previous test
055f : c902 > cmp #test_num
> trap_ne ;test is out of sequence
0561 : d0fe > bne * ;failed not equal (non zero)
>
0003 = >test_num = test_num + 1
0563 : a903 > lda #test_num ;*** next tests' number
0565 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
; test PHY does not alter flags or Y but PLY does
0568 : a255 ldx #$55 ;x & a protected
set_y 1,$ff ;push
> load_flag $ff
056a : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
056c : 48 > pha ;use stack to load status
056d : a001 > ldy #1 ;precharge index y
056f : 28 > plp
0570 : 5a phy
tst_y 1,$ff
0571 : 08 > php ;save flags
0572 : c001 > cpy #1 ;test result
> trap_ne
0574 : d0fe > bne * ;failed not equal (non zero)
>
0576 : 68 > pla ;load status
0577 : 48 > pha
> cmp_flag $ff
0578 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
057a : d0fe > bne * ;failed not equal (non zero)
>
057c : 28 > plp ;restore status
set_y 0,0
> load_flag 0
057d : a900 > lda #0 ;allow test to change I-flag (no mask)
>
057f : 48 > pha ;use stack to load status
0580 : a000 > ldy #0 ;precharge index y
0582 : 28 > plp
0583 : 5a phy
tst_y 0,0
0584 : 08 > php ;save flags
0585 : c000 > cpy #0 ;test result
> trap_ne
0587 : d0fe > bne * ;failed not equal (non zero)
>
0589 : 68 > pla ;load status
058a : 48 > pha
> cmp_flag 0
058b : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
058d : d0fe > bne * ;failed not equal (non zero)
>
058f : 28 > plp ;restore status
set_y $ff,$ff
> load_flag $ff
0590 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0592 : 48 > pha ;use stack to load status
0593 : a0ff > ldy #$ff ;precharge index y
0595 : 28 > plp
0596 : 5a phy
tst_y $ff,$ff
0597 : 08 > php ;save flags
0598 : c0ff > cpy #$ff ;test result
> trap_ne
059a : d0fe > bne * ;failed not equal (non zero)
>
059c : 68 > pla ;load status
059d : 48 > pha
> cmp_flag $ff
059e : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
05a0 : d0fe > bne * ;failed not equal (non zero)
>
05a2 : 28 > plp ;restore status
set_y 1,0
> load_flag 0
05a3 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
05a5 : 48 > pha ;use stack to load status
05a6 : a001 > ldy #1 ;precharge index y
05a8 : 28 > plp
05a9 : 5a phy
tst_y 1,0
05aa : 08 > php ;save flags
05ab : c001 > cpy #1 ;test result
> trap_ne
05ad : d0fe > bne * ;failed not equal (non zero)
>
05af : 68 > pla ;load status
05b0 : 48 > pha
> cmp_flag 0
05b1 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
05b3 : d0fe > bne * ;failed not equal (non zero)
>
05b5 : 28 > plp ;restore status
set_y 0,$ff
> load_flag $ff
05b6 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
05b8 : 48 > pha ;use stack to load status
05b9 : a000 > ldy #0 ;precharge index y
05bb : 28 > plp
05bc : 5a phy
tst_y 0,$ff
05bd : 08 > php ;save flags
05be : c000 > cpy #0 ;test result
> trap_ne
05c0 : d0fe > bne * ;failed not equal (non zero)
>
05c2 : 68 > pla ;load status
05c3 : 48 > pha
> cmp_flag $ff
05c4 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
05c6 : d0fe > bne * ;failed not equal (non zero)
>
05c8 : 28 > plp ;restore status
set_y $ff,0
> load_flag 0
05c9 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
05cb : 48 > pha ;use stack to load status
05cc : a0ff > ldy #$ff ;precharge index y
05ce : 28 > plp
05cf : 5a phy
tst_y $ff,0
05d0 : 08 > php ;save flags
05d1 : c0ff > cpy #$ff ;test result
> trap_ne
05d3 : d0fe > bne * ;failed not equal (non zero)
>
05d5 : 68 > pla ;load status
05d6 : 48 > pha
> cmp_flag 0
05d7 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
05d9 : d0fe > bne * ;failed not equal (non zero)
>
05db : 28 > plp ;restore status
set_y 0,$ff ;pull
> load_flag $ff
05dc : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
05de : 48 > pha ;use stack to load status
05df : a000 > ldy #0 ;precharge index y
05e1 : 28 > plp
05e2 : 7a ply
tst_y $ff,$ff-zero
05e3 : 08 > php ;save flags
05e4 : c0ff > cpy #$ff ;test result
> trap_ne
05e6 : d0fe > bne * ;failed not equal (non zero)
>
05e8 : 68 > pla ;load status
05e9 : 48 > pha
> cmp_flag $ff-zero
05ea : c9fd > cmp #($ff-zero|fao)&m8 ;expected flags + always on bits
>
> trap_ne
05ec : d0fe > bne * ;failed not equal (non zero)
>
05ee : 28 > plp ;restore status
set_y $ff,0
> load_flag 0
05ef : a900 > lda #0 ;allow test to change I-flag (no mask)
>
05f1 : 48 > pha ;use stack to load status
05f2 : a0ff > ldy #$ff ;precharge index y
05f4 : 28 > plp
05f5 : 7a ply
tst_y 0,zero
05f6 : 08 > php ;save flags
05f7 : c000 > cpy #0 ;test result
> trap_ne
05f9 : d0fe > bne * ;failed not equal (non zero)
>
05fb : 68 > pla ;load status
05fc : 48 > pha
> cmp_flag zero
05fd : c932 > cmp #(zero|fao)&m8 ;expected flags + always on bits
>
> trap_ne
05ff : d0fe > bne * ;failed not equal (non zero)
>
0601 : 28 > plp ;restore status
set_y $fe,$ff
> load_flag $ff
0602 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0604 : 48 > pha ;use stack to load status
0605 : a0fe > ldy #$fe ;precharge index y
0607 : 28 > plp
0608 : 7a ply
tst_y 1,$ff-zero-minus
0609 : 08 > php ;save flags
060a : c001 > cpy #1 ;test result
> trap_ne
060c : d0fe > bne * ;failed not equal (non zero)
>
060e : 68 > pla ;load status
060f : 48 > pha
> cmp_flag $ff-zero-minus
0610 : c97d > cmp #($ff-zero-minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0612 : d0fe > bne * ;failed not equal (non zero)
>
0614 : 28 > plp ;restore status
set_y 0,0
> load_flag 0
0615 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0617 : 48 > pha ;use stack to load status
0618 : a000 > ldy #0 ;precharge index y
061a : 28 > plp
061b : 7a ply
tst_y $ff,minus
061c : 08 > php ;save flags
061d : c0ff > cpy #$ff ;test result
> trap_ne
061f : d0fe > bne * ;failed not equal (non zero)
>
0621 : 68 > pla ;load status
0622 : 48 > pha
> cmp_flag minus
0623 : c9b0 > cmp #(minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0625 : d0fe > bne * ;failed not equal (non zero)
>
0627 : 28 > plp ;restore status
set_y $ff,$ff
> load_flag $ff
0628 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
062a : 48 > pha ;use stack to load status
062b : a0ff > ldy #$ff ;precharge index y
062d : 28 > plp
062e : 7a ply
tst_y 0,$ff-minus
062f : 08 > php ;save flags
0630 : c000 > cpy #0 ;test result
> trap_ne
0632 : d0fe > bne * ;failed not equal (non zero)
>
0634 : 68 > pla ;load status
0635 : 48 > pha
> cmp_flag $ff-minus
0636 : c97f > cmp #($ff-minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0638 : d0fe > bne * ;failed not equal (non zero)
>
063a : 28 > plp ;restore status
set_y $fe,0
> load_flag 0
063b : a900 > lda #0 ;allow test to change I-flag (no mask)
>
063d : 48 > pha ;use stack to load status
063e : a0fe > ldy #$fe ;precharge index y
0640 : 28 > plp
0641 : 7a ply
tst_y 1,0
0642 : 08 > php ;save flags
0643 : c001 > cpy #1 ;test result
> trap_ne
0645 : d0fe > bne * ;failed not equal (non zero)
>
0647 : 68 > pla ;load status
0648 : 48 > pha
> cmp_flag 0
0649 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
064b : d0fe > bne * ;failed not equal (non zero)
>
064d : 28 > plp ;restore status
064e : e055 cpx #$55 ;x unchanged?
trap_ne
0650 : d0fe > bne * ;failed not equal (non zero)
next_test
0652 : ad0202 > lda test_case ;previous test
0655 : c903 > cmp #test_num
> trap_ne ;test is out of sequence
0657 : d0fe > bne * ;failed not equal (non zero)
>
0004 = >test_num = test_num + 1
0659 : a904 > lda #test_num ;*** next tests' number
065b : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
; PC modifying instructions (BRA, BBR, BBS, 1, 2, 3 byte NOPs, JMP(abs,x))
; testing unconditional branch BRA
065e : a281 ldx #$81 ;protect unused registers
0660 : a07e ldy #$7e
set_a 0,$ff
> load_flag $ff
0662 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0664 : 48 > pha ;use stack to load status
0665 : a900 > lda #0 ;precharge accu
0667 : 28 > plp
0668 : 8003 bra br1 ;branch should always be taken
trap
066a : 4c6a06 > jmp * ;failed anyway
066d : br1
tst_a 0,$ff
066d : 08 > php ;save flags
066e : c900 > cmp #0 ;test result
> trap_ne
0670 : d0fe > bne * ;failed not equal (non zero)
>
0672 : 68 > pla ;load status
0673 : 48 > pha
> cmp_flag $ff
0674 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0676 : d0fe > bne * ;failed not equal (non zero)
>
0678 : 28 > plp ;restore status
set_a $ff,0
> load_flag 0
0679 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
067b : 48 > pha ;use stack to load status
067c : a9ff > lda #$ff ;precharge accu
067e : 28 > plp
067f : 8003 bra br2 ;branch should always be taken
trap
0681 : 4c8106 > jmp * ;failed anyway
0684 : br2
tst_a $ff,0
0684 : 08 > php ;save flags
0685 : c9ff > cmp #$ff ;test result
> trap_ne
0687 : d0fe > bne * ;failed not equal (non zero)
>
0689 : 68 > pla ;load status
068a : 48 > pha
> cmp_flag 0
068b : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
068d : d0fe > bne * ;failed not equal (non zero)
>
068f : 28 > plp ;restore status
0690 : e081 cpx #$81
trap_ne
0692 : d0fe > bne * ;failed not equal (non zero)
0694 : c07e cpy #$7e
trap_ne
0696 : d0fe > bne * ;failed not equal (non zero)
next_test
0698 : ad0202 > lda test_case ;previous test
069b : c904 > cmp #test_num
> trap_ne ;test is out of sequence
069d : d0fe > bne * ;failed not equal (non zero)
>
0005 = >test_num = test_num + 1
069f : a905 > lda #test_num ;*** next tests' number
06a1 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
06a4 : a000 ldy #0 ;branch range test
06a6 : 8061 bra bra0
06a8 : c001 bra1 cpy #1
trap_ne ;long range backward
06aa : d0fe > bne * ;failed not equal (non zero)
06ac : c8 iny
06ad : 8053 bra bra2
06af : c003 bra3 cpy #3
trap_ne ;long range backward
06b1 : d0fe > bne * ;failed not equal (non zero)
06b3 : c8 iny
06b4 : 8045 bra bra4
06b6 : c005 bra5 cpy #5
trap_ne ;long range backward
06b8 : d0fe > bne * ;failed not equal (non zero)
06ba : c8 iny
06bb : a000 ldy #0
06bd : 8004 bra brf0
06bf : c8 iny
06c0 : c8 iny
06c1 : c8 iny
06c2 : c8 iny
06c3 : 8003 brf0 bra brf1
06c5 : c8 iny
06c6 : c8 iny
06c7 : c8 iny
06c8 : c8 brf1 iny
06c9 : 8002 bra brf2
06cb : c8 iny
06cc : c8 iny
06cd : c8 brf2 iny
06ce : c8 iny
06cf : 8001 bra brf3
06d1 : c8 iny
06d2 : c8 brf3 iny
06d3 : c8 iny
06d4 : c8 iny
06d5 : 8000 bra brf4
06d7 : c8 brf4 iny
06d8 : c8 iny
06d9 : c8 iny
06da : c8 iny
06db : c00a cpy #10
trap_ne ;short range forward
06dd : d0fe > bne * ;failed not equal (non zero)
06df : 8012 bra brb0
06e1 : 88 brb4 dey
06e2 : 88 dey
06e3 : 88 dey
06e4 : 88 dey
06e5 : 800e bra brb5
06e7 : 88 brb3 dey
06e8 : 88 dey
06e9 : 88 dey
06ea : 80f5 bra brb4
06ec : 88 brb2 dey
06ed : 88 dey
06ee : 80f7 bra brb3
06f0 : 88 brb1 dey
06f1 : 80f9 bra brb2
06f3 : 80fb brb0 bra brb1
06f5 : c000 brb5 cpy #0
trap_ne ;short range backward
06f7 : d0fe > bne * ;failed not equal (non zero)
06f9 : 8015 bra bra6
06fb : c004 bra4 cpy #4
trap_ne ;long range forward
06fd : d0fe > bne * ;failed not equal (non zero)
06ff : c8 iny
0700 : 80b4 bra bra5
0702 : c002 bra2 cpy #2
trap_ne ;long range forward
0704 : d0fe > bne * ;failed not equal (non zero)
0706 : c8 iny
0707 : 80a6 bra bra3
0709 : c000 bra0 cpy #0
trap_ne ;long range forward
070b : d0fe > bne * ;failed not equal (non zero)
070d : c8 iny
070e : 8098 bra bra1
0710 : bra6
next_test
0710 : ad0202 > lda test_case ;previous test
0713 : c905 > cmp #test_num
> trap_ne ;test is out of sequence
0715 : d0fe > bne * ;failed not equal (non zero)
>
0006 = >test_num = test_num + 1
0717 : a906 > lda #test_num ;*** next tests' number
0719 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
if rkwl_wdc_op = 1
; testing BBR & BBS
bbt macro ;\1 = bitnum
lda #(1<<\1) ;testing 1 bit on
sta zpt
set_a $33,0 ;with flags off
bbr \1,zpt,fail1\?
bbs \1,zpt,ok1\?
trap ;bbs branch not taken
fail1\?
trap ;bbr branch taken
ok1\?
tst_a $33,0
set_a $cc,$ff ;with flags on
bbr \1,zpt,fail2\?
bbs \1,zpt,ok2\?
trap ;bbs branch not taken
fail2\?
trap ;bbr branch taken
ok2\?
tst_a $cc,$ff
lda zpt
cmp #(1<<\1)
trap_ne ;zp altered
lda #$ff-(1<<\1) ;testing 1 bit off
sta zpt
set_a $33,0 ;with flags off
bbs \1,zpt,fail3\?
bbr \1,zpt,ok3\?
trap ;bbr branch not taken
fail3\?
trap ;bbs branch taken
ok3\?
tst_a $33,0
set_a $cc,$ff ;with flags on
bbs \1,zpt,fail4\?
bbr \1,zpt,ok4\?
trap ;bbr branch not taken
fail4\?
trap ;bbs branch taken
ok4\?
tst_a $cc,$ff
lda zpt
cmp #$ff-(1<<\1)
trap_ne ;zp altered
endm
071c : a211 ldx #$11 ;test bbr/bbs integrity
071e : a022 ldy #$22
bbt 0
0720 : a901 > lda #(1<<0) ;testing 1 bit on
0722 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
0724 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0726 : 48 > pha ;use stack to load status
0727 : a933 > lda #$33 ;precharge accu
0729 : 28 > plp
>
072a : 0f0c06 > bbr 0,zpt,fail10196
072d : 8f0c06 > bbs 0,zpt,ok10196
> trap ;bbs branch not taken
0730 : 4c3007 > jmp * ;failed anyway
>
0733 : >fail10196
> trap ;bbr branch taken
0733 : 4c3307 > jmp * ;failed anyway
>
0736 : >ok10196
> tst_a $33,0
0736 : 08 > php ;save flags
0737 : c933 > cmp #$33 ;test result
> trap_ne
0739 : d0fe > bne * ;failed not equal (non zero)
>
073b : 68 > pla ;load status
073c : 48 > pha
> cmp_flag 0
073d : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
073f : d0fe > bne * ;failed not equal (non zero)
>
0741 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
0742 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0744 : 48 > pha ;use stack to load status
0745 : a9cc > lda #$cc ;precharge accu
0747 : 28 > plp
>
0748 : 0f0c06 > bbr 0,zpt,fail20196
074b : 8f0c06 > bbs 0,zpt,ok20196
> trap ;bbs branch not taken
074e : 4c4e07 > jmp * ;failed anyway
>
0751 : >fail20196
> trap ;bbr branch taken
0751 : 4c5107 > jmp * ;failed anyway
>
0754 : >ok20196
> tst_a $cc,$ff
0754 : 08 > php ;save flags
0755 : c9cc > cmp #$cc ;test result
> trap_ne
0757 : d0fe > bne * ;failed not equal (non zero)
>
0759 : 68 > pla ;load status
075a : 48 > pha
> cmp_flag $ff
075b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
075d : d0fe > bne * ;failed not equal (non zero)
>
075f : 28 > plp ;restore status
>
0760 : a50c > lda zpt
0762 : c901 > cmp #(1<<0)
> trap_ne ;zp altered
0764 : d0fe > bne * ;failed not equal (non zero)
>
0766 : a9fe > lda #$ff-(1<<0) ;testing 1 bit off
0768 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
076a : a900 > lda #0 ;allow test to change I-flag (no mask)
>
076c : 48 > pha ;use stack to load status
076d : a933 > lda #$33 ;precharge accu
076f : 28 > plp
>
0770 : 8f0c06 > bbs 0,zpt,fail30196
0773 : 0f0c06 > bbr 0,zpt,ok30196
> trap ;bbr branch not taken
0776 : 4c7607 > jmp * ;failed anyway
>
0779 : >fail30196
> trap ;bbs branch taken
0779 : 4c7907 > jmp * ;failed anyway
>
077c : >ok30196
> tst_a $33,0
077c : 08 > php ;save flags
077d : c933 > cmp #$33 ;test result
> trap_ne
077f : d0fe > bne * ;failed not equal (non zero)
>
0781 : 68 > pla ;load status
0782 : 48 > pha
> cmp_flag 0
0783 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0785 : d0fe > bne * ;failed not equal (non zero)
>
0787 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
0788 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
078a : 48 > pha ;use stack to load status
078b : a9cc > lda #$cc ;precharge accu
078d : 28 > plp
>
078e : 8f0c06 > bbs 0,zpt,fail40196
0791 : 0f0c06 > bbr 0,zpt,ok40196
> trap ;bbr branch not taken
0794 : 4c9407 > jmp * ;failed anyway
>
0797 : >fail40196
> trap ;bbs branch taken
0797 : 4c9707 > jmp * ;failed anyway
>
079a : >ok40196
> tst_a $cc,$ff
079a : 08 > php ;save flags
079b : c9cc > cmp #$cc ;test result
> trap_ne
079d : d0fe > bne * ;failed not equal (non zero)
>
079f : 68 > pla ;load status
07a0 : 48 > pha
> cmp_flag $ff
07a1 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
07a3 : d0fe > bne * ;failed not equal (non zero)
>
07a5 : 28 > plp ;restore status
>
07a6 : a50c > lda zpt
07a8 : c9fe > cmp #$ff-(1<<0)
> trap_ne ;zp altered
07aa : d0fe > bne * ;failed not equal (non zero)
>
bbt 1
07ac : a902 > lda #(1<<1) ;testing 1 bit on
07ae : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
07b0 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
07b2 : 48 > pha ;use stack to load status
07b3 : a933 > lda #$33 ;precharge accu
07b5 : 28 > plp
>
07b6 : 1f0c06 > bbr 1,zpt,fail10231
07b9 : 9f0c06 > bbs 1,zpt,ok10231
> trap ;bbs branch not taken
07bc : 4cbc07 > jmp * ;failed anyway
>
07bf : >fail10231
> trap ;bbr branch taken
07bf : 4cbf07 > jmp * ;failed anyway
>
07c2 : >ok10231
> tst_a $33,0
07c2 : 08 > php ;save flags
07c3 : c933 > cmp #$33 ;test result
> trap_ne
07c5 : d0fe > bne * ;failed not equal (non zero)
>
07c7 : 68 > pla ;load status
07c8 : 48 > pha
> cmp_flag 0
07c9 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
07cb : d0fe > bne * ;failed not equal (non zero)
>
07cd : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
07ce : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
07d0 : 48 > pha ;use stack to load status
07d1 : a9cc > lda #$cc ;precharge accu
07d3 : 28 > plp
>
07d4 : 1f0c06 > bbr 1,zpt,fail20231
07d7 : 9f0c06 > bbs 1,zpt,ok20231
> trap ;bbs branch not taken
07da : 4cda07 > jmp * ;failed anyway
>
07dd : >fail20231
> trap ;bbr branch taken
07dd : 4cdd07 > jmp * ;failed anyway
>
07e0 : >ok20231
> tst_a $cc,$ff
07e0 : 08 > php ;save flags
07e1 : c9cc > cmp #$cc ;test result
> trap_ne
07e3 : d0fe > bne * ;failed not equal (non zero)
>
07e5 : 68 > pla ;load status
07e6 : 48 > pha
> cmp_flag $ff
07e7 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
07e9 : d0fe > bne * ;failed not equal (non zero)
>
07eb : 28 > plp ;restore status
>
07ec : a50c > lda zpt
07ee : c902 > cmp #(1<<1)
> trap_ne ;zp altered
07f0 : d0fe > bne * ;failed not equal (non zero)
>
07f2 : a9fd > lda #$ff-(1<<1) ;testing 1 bit off
07f4 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
07f6 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
07f8 : 48 > pha ;use stack to load status
07f9 : a933 > lda #$33 ;precharge accu
07fb : 28 > plp
>
07fc : 9f0c06 > bbs 1,zpt,fail30231
07ff : 1f0c06 > bbr 1,zpt,ok30231
> trap ;bbr branch not taken
0802 : 4c0208 > jmp * ;failed anyway
>
0805 : >fail30231
> trap ;bbs branch taken
0805 : 4c0508 > jmp * ;failed anyway
>
0808 : >ok30231
> tst_a $33,0
0808 : 08 > php ;save flags
0809 : c933 > cmp #$33 ;test result
> trap_ne
080b : d0fe > bne * ;failed not equal (non zero)
>
080d : 68 > pla ;load status
080e : 48 > pha
> cmp_flag 0
080f : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0811 : d0fe > bne * ;failed not equal (non zero)
>
0813 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
0814 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0816 : 48 > pha ;use stack to load status
0817 : a9cc > lda #$cc ;precharge accu
0819 : 28 > plp
>
081a : 9f0c06 > bbs 1,zpt,fail40231
081d : 1f0c06 > bbr 1,zpt,ok40231
> trap ;bbr branch not taken
0820 : 4c2008 > jmp * ;failed anyway
>
0823 : >fail40231
> trap ;bbs branch taken
0823 : 4c2308 > jmp * ;failed anyway
>
0826 : >ok40231
> tst_a $cc,$ff
0826 : 08 > php ;save flags
0827 : c9cc > cmp #$cc ;test result
> trap_ne
0829 : d0fe > bne * ;failed not equal (non zero)
>
082b : 68 > pla ;load status
082c : 48 > pha
> cmp_flag $ff
082d : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
082f : d0fe > bne * ;failed not equal (non zero)
>
0831 : 28 > plp ;restore status
>
0832 : a50c > lda zpt
0834 : c9fd > cmp #$ff-(1<<1)
> trap_ne ;zp altered
0836 : d0fe > bne * ;failed not equal (non zero)
>
bbt 2
0838 : a904 > lda #(1<<2) ;testing 1 bit on
083a : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
083c : a900 > lda #0 ;allow test to change I-flag (no mask)
>
083e : 48 > pha ;use stack to load status
083f : a933 > lda #$33 ;precharge accu
0841 : 28 > plp
>
0842 : 2f0c06 > bbr 2,zpt,fail10266
0845 : af0c06 > bbs 2,zpt,ok10266
> trap ;bbs branch not taken
0848 : 4c4808 > jmp * ;failed anyway
>
084b : >fail10266
> trap ;bbr branch taken
084b : 4c4b08 > jmp * ;failed anyway
>
084e : >ok10266
> tst_a $33,0
084e : 08 > php ;save flags
084f : c933 > cmp #$33 ;test result
> trap_ne
0851 : d0fe > bne * ;failed not equal (non zero)
>
0853 : 68 > pla ;load status
0854 : 48 > pha
> cmp_flag 0
0855 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0857 : d0fe > bne * ;failed not equal (non zero)
>
0859 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
085a : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
085c : 48 > pha ;use stack to load status
085d : a9cc > lda #$cc ;precharge accu
085f : 28 > plp
>
0860 : 2f0c06 > bbr 2,zpt,fail20266
0863 : af0c06 > bbs 2,zpt,ok20266
> trap ;bbs branch not taken
0866 : 4c6608 > jmp * ;failed anyway
>
0869 : >fail20266
> trap ;bbr branch taken
0869 : 4c6908 > jmp * ;failed anyway
>
086c : >ok20266
> tst_a $cc,$ff
086c : 08 > php ;save flags
086d : c9cc > cmp #$cc ;test result
> trap_ne
086f : d0fe > bne * ;failed not equal (non zero)
>
0871 : 68 > pla ;load status
0872 : 48 > pha
> cmp_flag $ff
0873 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0875 : d0fe > bne * ;failed not equal (non zero)
>
0877 : 28 > plp ;restore status
>
0878 : a50c > lda zpt
087a : c904 > cmp #(1<<2)
> trap_ne ;zp altered
087c : d0fe > bne * ;failed not equal (non zero)
>
087e : a9fb > lda #$ff-(1<<2) ;testing 1 bit off
0880 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
0882 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0884 : 48 > pha ;use stack to load status
0885 : a933 > lda #$33 ;precharge accu
0887 : 28 > plp
>
0888 : af0c06 > bbs 2,zpt,fail30266
088b : 2f0c06 > bbr 2,zpt,ok30266
> trap ;bbr branch not taken
088e : 4c8e08 > jmp * ;failed anyway
>
0891 : >fail30266
> trap ;bbs branch taken
0891 : 4c9108 > jmp * ;failed anyway
>
0894 : >ok30266
> tst_a $33,0
0894 : 08 > php ;save flags
0895 : c933 > cmp #$33 ;test result
> trap_ne
0897 : d0fe > bne * ;failed not equal (non zero)
>
0899 : 68 > pla ;load status
089a : 48 > pha
> cmp_flag 0
089b : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
089d : d0fe > bne * ;failed not equal (non zero)
>
089f : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
08a0 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
08a2 : 48 > pha ;use stack to load status
08a3 : a9cc > lda #$cc ;precharge accu
08a5 : 28 > plp
>
08a6 : af0c06 > bbs 2,zpt,fail40266
08a9 : 2f0c06 > bbr 2,zpt,ok40266
> trap ;bbr branch not taken
08ac : 4cac08 > jmp * ;failed anyway
>
08af : >fail40266
> trap ;bbs branch taken
08af : 4caf08 > jmp * ;failed anyway
>
08b2 : >ok40266
> tst_a $cc,$ff
08b2 : 08 > php ;save flags
08b3 : c9cc > cmp #$cc ;test result
> trap_ne
08b5 : d0fe > bne * ;failed not equal (non zero)
>
08b7 : 68 > pla ;load status
08b8 : 48 > pha
> cmp_flag $ff
08b9 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
08bb : d0fe > bne * ;failed not equal (non zero)
>
08bd : 28 > plp ;restore status
>
08be : a50c > lda zpt
08c0 : c9fb > cmp #$ff-(1<<2)
> trap_ne ;zp altered
08c2 : d0fe > bne * ;failed not equal (non zero)
>
bbt 3
08c4 : a908 > lda #(1<<3) ;testing 1 bit on
08c6 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
08c8 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
08ca : 48 > pha ;use stack to load status
08cb : a933 > lda #$33 ;precharge accu
08cd : 28 > plp
>
08ce : 3f0c06 > bbr 3,zpt,fail10301
08d1 : bf0c06 > bbs 3,zpt,ok10301
> trap ;bbs branch not taken
08d4 : 4cd408 > jmp * ;failed anyway
>
08d7 : >fail10301
> trap ;bbr branch taken
08d7 : 4cd708 > jmp * ;failed anyway
>
08da : >ok10301
> tst_a $33,0
08da : 08 > php ;save flags
08db : c933 > cmp #$33 ;test result
> trap_ne
08dd : d0fe > bne * ;failed not equal (non zero)
>
08df : 68 > pla ;load status
08e0 : 48 > pha
> cmp_flag 0
08e1 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
08e3 : d0fe > bne * ;failed not equal (non zero)
>
08e5 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
08e6 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
08e8 : 48 > pha ;use stack to load status
08e9 : a9cc > lda #$cc ;precharge accu
08eb : 28 > plp
>
08ec : 3f0c06 > bbr 3,zpt,fail20301
08ef : bf0c06 > bbs 3,zpt,ok20301
> trap ;bbs branch not taken
08f2 : 4cf208 > jmp * ;failed anyway
>
08f5 : >fail20301
> trap ;bbr branch taken
08f5 : 4cf508 > jmp * ;failed anyway
>
08f8 : >ok20301
> tst_a $cc,$ff
08f8 : 08 > php ;save flags
08f9 : c9cc > cmp #$cc ;test result
> trap_ne
08fb : d0fe > bne * ;failed not equal (non zero)
>
08fd : 68 > pla ;load status
08fe : 48 > pha
> cmp_flag $ff
08ff : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0901 : d0fe > bne * ;failed not equal (non zero)
>
0903 : 28 > plp ;restore status
>
0904 : a50c > lda zpt
0906 : c908 > cmp #(1<<3)
> trap_ne ;zp altered
0908 : d0fe > bne * ;failed not equal (non zero)
>
090a : a9f7 > lda #$ff-(1<<3) ;testing 1 bit off
090c : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
090e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0910 : 48 > pha ;use stack to load status
0911 : a933 > lda #$33 ;precharge accu
0913 : 28 > plp
>
0914 : bf0c06 > bbs 3,zpt,fail30301
0917 : 3f0c06 > bbr 3,zpt,ok30301
> trap ;bbr branch not taken
091a : 4c1a09 > jmp * ;failed anyway
>
091d : >fail30301
> trap ;bbs branch taken
091d : 4c1d09 > jmp * ;failed anyway
>
0920 : >ok30301
> tst_a $33,0
0920 : 08 > php ;save flags
0921 : c933 > cmp #$33 ;test result
> trap_ne
0923 : d0fe > bne * ;failed not equal (non zero)
>
0925 : 68 > pla ;load status
0926 : 48 > pha
> cmp_flag 0
0927 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0929 : d0fe > bne * ;failed not equal (non zero)
>
092b : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
092c : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
092e : 48 > pha ;use stack to load status
092f : a9cc > lda #$cc ;precharge accu
0931 : 28 > plp
>
0932 : bf0c06 > bbs 3,zpt,fail40301
0935 : 3f0c06 > bbr 3,zpt,ok40301
> trap ;bbr branch not taken
0938 : 4c3809 > jmp * ;failed anyway
>
093b : >fail40301
> trap ;bbs branch taken
093b : 4c3b09 > jmp * ;failed anyway
>
093e : >ok40301
> tst_a $cc,$ff
093e : 08 > php ;save flags
093f : c9cc > cmp #$cc ;test result
> trap_ne
0941 : d0fe > bne * ;failed not equal (non zero)
>
0943 : 68 > pla ;load status
0944 : 48 > pha
> cmp_flag $ff
0945 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0947 : d0fe > bne * ;failed not equal (non zero)
>
0949 : 28 > plp ;restore status
>
094a : a50c > lda zpt
094c : c9f7 > cmp #$ff-(1<<3)
> trap_ne ;zp altered
094e : d0fe > bne * ;failed not equal (non zero)
>
bbt 4
0950 : a910 > lda #(1<<4) ;testing 1 bit on
0952 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
0954 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0956 : 48 > pha ;use stack to load status
0957 : a933 > lda #$33 ;precharge accu
0959 : 28 > plp
>
095a : 4f0c06 > bbr 4,zpt,fail10336
095d : cf0c06 > bbs 4,zpt,ok10336
> trap ;bbs branch not taken
0960 : 4c6009 > jmp * ;failed anyway
>
0963 : >fail10336
> trap ;bbr branch taken
0963 : 4c6309 > jmp * ;failed anyway
>
0966 : >ok10336
> tst_a $33,0
0966 : 08 > php ;save flags
0967 : c933 > cmp #$33 ;test result
> trap_ne
0969 : d0fe > bne * ;failed not equal (non zero)
>
096b : 68 > pla ;load status
096c : 48 > pha
> cmp_flag 0
096d : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
096f : d0fe > bne * ;failed not equal (non zero)
>
0971 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
0972 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0974 : 48 > pha ;use stack to load status
0975 : a9cc > lda #$cc ;precharge accu
0977 : 28 > plp
>
0978 : 4f0c06 > bbr 4,zpt,fail20336
097b : cf0c06 > bbs 4,zpt,ok20336
> trap ;bbs branch not taken
097e : 4c7e09 > jmp * ;failed anyway
>
0981 : >fail20336
> trap ;bbr branch taken
0981 : 4c8109 > jmp * ;failed anyway
>
0984 : >ok20336
> tst_a $cc,$ff
0984 : 08 > php ;save flags
0985 : c9cc > cmp #$cc ;test result
> trap_ne
0987 : d0fe > bne * ;failed not equal (non zero)
>
0989 : 68 > pla ;load status
098a : 48 > pha
> cmp_flag $ff
098b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
098d : d0fe > bne * ;failed not equal (non zero)
>
098f : 28 > plp ;restore status
>
0990 : a50c > lda zpt
0992 : c910 > cmp #(1<<4)
> trap_ne ;zp altered
0994 : d0fe > bne * ;failed not equal (non zero)
>
0996 : a9ef > lda #$ff-(1<<4) ;testing 1 bit off
0998 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
099a : a900 > lda #0 ;allow test to change I-flag (no mask)
>
099c : 48 > pha ;use stack to load status
099d : a933 > lda #$33 ;precharge accu
099f : 28 > plp
>
09a0 : cf0c06 > bbs 4,zpt,fail30336
09a3 : 4f0c06 > bbr 4,zpt,ok30336
> trap ;bbr branch not taken
09a6 : 4ca609 > jmp * ;failed anyway
>
09a9 : >fail30336
> trap ;bbs branch taken
09a9 : 4ca909 > jmp * ;failed anyway
>
09ac : >ok30336
> tst_a $33,0
09ac : 08 > php ;save flags
09ad : c933 > cmp #$33 ;test result
> trap_ne
09af : d0fe > bne * ;failed not equal (non zero)
>
09b1 : 68 > pla ;load status
09b2 : 48 > pha
> cmp_flag 0
09b3 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
09b5 : d0fe > bne * ;failed not equal (non zero)
>
09b7 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
09b8 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
09ba : 48 > pha ;use stack to load status
09bb : a9cc > lda #$cc ;precharge accu
09bd : 28 > plp
>
09be : cf0c06 > bbs 4,zpt,fail40336
09c1 : 4f0c06 > bbr 4,zpt,ok40336
> trap ;bbr branch not taken
09c4 : 4cc409 > jmp * ;failed anyway
>
09c7 : >fail40336
> trap ;bbs branch taken
09c7 : 4cc709 > jmp * ;failed anyway
>
09ca : >ok40336
> tst_a $cc,$ff
09ca : 08 > php ;save flags
09cb : c9cc > cmp #$cc ;test result
> trap_ne
09cd : d0fe > bne * ;failed not equal (non zero)
>
09cf : 68 > pla ;load status
09d0 : 48 > pha
> cmp_flag $ff
09d1 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
09d3 : d0fe > bne * ;failed not equal (non zero)
>
09d5 : 28 > plp ;restore status
>
09d6 : a50c > lda zpt
09d8 : c9ef > cmp #$ff-(1<<4)
> trap_ne ;zp altered
09da : d0fe > bne * ;failed not equal (non zero)
>
bbt 5
09dc : a920 > lda #(1<<5) ;testing 1 bit on
09de : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
09e0 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
09e2 : 48 > pha ;use stack to load status
09e3 : a933 > lda #$33 ;precharge accu
09e5 : 28 > plp
>
09e6 : 5f0c06 > bbr 5,zpt,fail10371
09e9 : df0c06 > bbs 5,zpt,ok10371
> trap ;bbs branch not taken
09ec : 4cec09 > jmp * ;failed anyway
>
09ef : >fail10371
> trap ;bbr branch taken
09ef : 4cef09 > jmp * ;failed anyway
>
09f2 : >ok10371
> tst_a $33,0
09f2 : 08 > php ;save flags
09f3 : c933 > cmp #$33 ;test result
> trap_ne
09f5 : d0fe > bne * ;failed not equal (non zero)
>
09f7 : 68 > pla ;load status
09f8 : 48 > pha
> cmp_flag 0
09f9 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
09fb : d0fe > bne * ;failed not equal (non zero)
>
09fd : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
09fe : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0a00 : 48 > pha ;use stack to load status
0a01 : a9cc > lda #$cc ;precharge accu
0a03 : 28 > plp
>
0a04 : 5f0c06 > bbr 5,zpt,fail20371
0a07 : df0c06 > bbs 5,zpt,ok20371
> trap ;bbs branch not taken
0a0a : 4c0a0a > jmp * ;failed anyway
>
0a0d : >fail20371
> trap ;bbr branch taken
0a0d : 4c0d0a > jmp * ;failed anyway
>
0a10 : >ok20371
> tst_a $cc,$ff
0a10 : 08 > php ;save flags
0a11 : c9cc > cmp #$cc ;test result
> trap_ne
0a13 : d0fe > bne * ;failed not equal (non zero)
>
0a15 : 68 > pla ;load status
0a16 : 48 > pha
> cmp_flag $ff
0a17 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0a19 : d0fe > bne * ;failed not equal (non zero)
>
0a1b : 28 > plp ;restore status
>
0a1c : a50c > lda zpt
0a1e : c920 > cmp #(1<<5)
> trap_ne ;zp altered
0a20 : d0fe > bne * ;failed not equal (non zero)
>
0a22 : a9df > lda #$ff-(1<<5) ;testing 1 bit off
0a24 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
0a26 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0a28 : 48 > pha ;use stack to load status
0a29 : a933 > lda #$33 ;precharge accu
0a2b : 28 > plp
>
0a2c : df0c06 > bbs 5,zpt,fail30371
0a2f : 5f0c06 > bbr 5,zpt,ok30371
> trap ;bbr branch not taken
0a32 : 4c320a > jmp * ;failed anyway
>
0a35 : >fail30371
> trap ;bbs branch taken
0a35 : 4c350a > jmp * ;failed anyway
>
0a38 : >ok30371
> tst_a $33,0
0a38 : 08 > php ;save flags
0a39 : c933 > cmp #$33 ;test result
> trap_ne
0a3b : d0fe > bne * ;failed not equal (non zero)
>
0a3d : 68 > pla ;load status
0a3e : 48 > pha
> cmp_flag 0
0a3f : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0a41 : d0fe > bne * ;failed not equal (non zero)
>
0a43 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
0a44 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0a46 : 48 > pha ;use stack to load status
0a47 : a9cc > lda #$cc ;precharge accu
0a49 : 28 > plp
>
0a4a : df0c06 > bbs 5,zpt,fail40371
0a4d : 5f0c06 > bbr 5,zpt,ok40371
> trap ;bbr branch not taken
0a50 : 4c500a > jmp * ;failed anyway
>
0a53 : >fail40371
> trap ;bbs branch taken
0a53 : 4c530a > jmp * ;failed anyway
>
0a56 : >ok40371
> tst_a $cc,$ff
0a56 : 08 > php ;save flags
0a57 : c9cc > cmp #$cc ;test result
> trap_ne
0a59 : d0fe > bne * ;failed not equal (non zero)
>
0a5b : 68 > pla ;load status
0a5c : 48 > pha
> cmp_flag $ff
0a5d : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0a5f : d0fe > bne * ;failed not equal (non zero)
>
0a61 : 28 > plp ;restore status
>
0a62 : a50c > lda zpt
0a64 : c9df > cmp #$ff-(1<<5)
> trap_ne ;zp altered
0a66 : d0fe > bne * ;failed not equal (non zero)
>
bbt 6
0a68 : a940 > lda #(1<<6) ;testing 1 bit on
0a6a : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
0a6c : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0a6e : 48 > pha ;use stack to load status
0a6f : a933 > lda #$33 ;precharge accu
0a71 : 28 > plp
>
0a72 : 6f0c06 > bbr 6,zpt,fail10406
0a75 : ef0c06 > bbs 6,zpt,ok10406
> trap ;bbs branch not taken
0a78 : 4c780a > jmp * ;failed anyway
>
0a7b : >fail10406
> trap ;bbr branch taken
0a7b : 4c7b0a > jmp * ;failed anyway
>
0a7e : >ok10406
> tst_a $33,0
0a7e : 08 > php ;save flags
0a7f : c933 > cmp #$33 ;test result
> trap_ne
0a81 : d0fe > bne * ;failed not equal (non zero)
>
0a83 : 68 > pla ;load status
0a84 : 48 > pha
> cmp_flag 0
0a85 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0a87 : d0fe > bne * ;failed not equal (non zero)
>
0a89 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
0a8a : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0a8c : 48 > pha ;use stack to load status
0a8d : a9cc > lda #$cc ;precharge accu
0a8f : 28 > plp
>
0a90 : 6f0c06 > bbr 6,zpt,fail20406
0a93 : ef0c06 > bbs 6,zpt,ok20406
> trap ;bbs branch not taken
0a96 : 4c960a > jmp * ;failed anyway
>
0a99 : >fail20406
> trap ;bbr branch taken
0a99 : 4c990a > jmp * ;failed anyway
>
0a9c : >ok20406
> tst_a $cc,$ff
0a9c : 08 > php ;save flags
0a9d : c9cc > cmp #$cc ;test result
> trap_ne
0a9f : d0fe > bne * ;failed not equal (non zero)
>
0aa1 : 68 > pla ;load status
0aa2 : 48 > pha
> cmp_flag $ff
0aa3 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0aa5 : d0fe > bne * ;failed not equal (non zero)
>
0aa7 : 28 > plp ;restore status
>
0aa8 : a50c > lda zpt
0aaa : c940 > cmp #(1<<6)
> trap_ne ;zp altered
0aac : d0fe > bne * ;failed not equal (non zero)
>
0aae : a9bf > lda #$ff-(1<<6) ;testing 1 bit off
0ab0 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
0ab2 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0ab4 : 48 > pha ;use stack to load status
0ab5 : a933 > lda #$33 ;precharge accu
0ab7 : 28 > plp
>
0ab8 : ef0c06 > bbs 6,zpt,fail30406
0abb : 6f0c06 > bbr 6,zpt,ok30406
> trap ;bbr branch not taken
0abe : 4cbe0a > jmp * ;failed anyway
>
0ac1 : >fail30406
> trap ;bbs branch taken
0ac1 : 4cc10a > jmp * ;failed anyway
>
0ac4 : >ok30406
> tst_a $33,0
0ac4 : 08 > php ;save flags
0ac5 : c933 > cmp #$33 ;test result
> trap_ne
0ac7 : d0fe > bne * ;failed not equal (non zero)
>
0ac9 : 68 > pla ;load status
0aca : 48 > pha
> cmp_flag 0
0acb : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0acd : d0fe > bne * ;failed not equal (non zero)
>
0acf : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
0ad0 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0ad2 : 48 > pha ;use stack to load status
0ad3 : a9cc > lda #$cc ;precharge accu
0ad5 : 28 > plp
>
0ad6 : ef0c06 > bbs 6,zpt,fail40406
0ad9 : 6f0c06 > bbr 6,zpt,ok40406
> trap ;bbr branch not taken
0adc : 4cdc0a > jmp * ;failed anyway
>
0adf : >fail40406
> trap ;bbs branch taken
0adf : 4cdf0a > jmp * ;failed anyway
>
0ae2 : >ok40406
> tst_a $cc,$ff
0ae2 : 08 > php ;save flags
0ae3 : c9cc > cmp #$cc ;test result
> trap_ne
0ae5 : d0fe > bne * ;failed not equal (non zero)
>
0ae7 : 68 > pla ;load status
0ae8 : 48 > pha
> cmp_flag $ff
0ae9 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0aeb : d0fe > bne * ;failed not equal (non zero)
>
0aed : 28 > plp ;restore status
>
0aee : a50c > lda zpt
0af0 : c9bf > cmp #$ff-(1<<6)
> trap_ne ;zp altered
0af2 : d0fe > bne * ;failed not equal (non zero)
>
bbt 7
0af4 : a980 > lda #(1<<7) ;testing 1 bit on
0af6 : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
0af8 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0afa : 48 > pha ;use stack to load status
0afb : a933 > lda #$33 ;precharge accu
0afd : 28 > plp
>
0afe : 7f0c06 > bbr 7,zpt,fail10441
0b01 : ff0c06 > bbs 7,zpt,ok10441
> trap ;bbs branch not taken
0b04 : 4c040b > jmp * ;failed anyway
>
0b07 : >fail10441
> trap ;bbr branch taken
0b07 : 4c070b > jmp * ;failed anyway
>
0b0a : >ok10441
> tst_a $33,0
0b0a : 08 > php ;save flags
0b0b : c933 > cmp #$33 ;test result
> trap_ne
0b0d : d0fe > bne * ;failed not equal (non zero)
>
0b0f : 68 > pla ;load status
0b10 : 48 > pha
> cmp_flag 0
0b11 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0b13 : d0fe > bne * ;failed not equal (non zero)
>
0b15 : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
0b16 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0b18 : 48 > pha ;use stack to load status
0b19 : a9cc > lda #$cc ;precharge accu
0b1b : 28 > plp
>
0b1c : 7f0c06 > bbr 7,zpt,fail20441
0b1f : ff0c06 > bbs 7,zpt,ok20441
> trap ;bbs branch not taken
0b22 : 4c220b > jmp * ;failed anyway
>
0b25 : >fail20441
> trap ;bbr branch taken
0b25 : 4c250b > jmp * ;failed anyway
>
0b28 : >ok20441
> tst_a $cc,$ff
0b28 : 08 > php ;save flags
0b29 : c9cc > cmp #$cc ;test result
> trap_ne
0b2b : d0fe > bne * ;failed not equal (non zero)
>
0b2d : 68 > pla ;load status
0b2e : 48 > pha
> cmp_flag $ff
0b2f : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0b31 : d0fe > bne * ;failed not equal (non zero)
>
0b33 : 28 > plp ;restore status
>
0b34 : a50c > lda zpt
0b36 : c980 > cmp #(1<<7)
> trap_ne ;zp altered
0b38 : d0fe > bne * ;failed not equal (non zero)
>
0b3a : a97f > lda #$ff-(1<<7) ;testing 1 bit off
0b3c : 850c > sta zpt
> set_a $33,0 ;with flags off
> load_flag 0
0b3e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0b40 : 48 > pha ;use stack to load status
0b41 : a933 > lda #$33 ;precharge accu
0b43 : 28 > plp
>
0b44 : ff0c06 > bbs 7,zpt,fail30441
0b47 : 7f0c06 > bbr 7,zpt,ok30441
> trap ;bbr branch not taken
0b4a : 4c4a0b > jmp * ;failed anyway
>
0b4d : >fail30441
> trap ;bbs branch taken
0b4d : 4c4d0b > jmp * ;failed anyway
>
0b50 : >ok30441
> tst_a $33,0
0b50 : 08 > php ;save flags
0b51 : c933 > cmp #$33 ;test result
> trap_ne
0b53 : d0fe > bne * ;failed not equal (non zero)
>
0b55 : 68 > pla ;load status
0b56 : 48 > pha
> cmp_flag 0
0b57 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0b59 : d0fe > bne * ;failed not equal (non zero)
>
0b5b : 28 > plp ;restore status
>
> set_a $cc,$ff ;with flags on
> load_flag $ff
0b5c : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0b5e : 48 > pha ;use stack to load status
0b5f : a9cc > lda #$cc ;precharge accu
0b61 : 28 > plp
>
0b62 : ff0c06 > bbs 7,zpt,fail40441
0b65 : 7f0c06 > bbr 7,zpt,ok40441
> trap ;bbr branch not taken
0b68 : 4c680b > jmp * ;failed anyway
>
0b6b : >fail40441
> trap ;bbs branch taken
0b6b : 4c6b0b > jmp * ;failed anyway
>
0b6e : >ok40441
> tst_a $cc,$ff
0b6e : 08 > php ;save flags
0b6f : c9cc > cmp #$cc ;test result
> trap_ne
0b71 : d0fe > bne * ;failed not equal (non zero)
>
0b73 : 68 > pla ;load status
0b74 : 48 > pha
> cmp_flag $ff
0b75 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0b77 : d0fe > bne * ;failed not equal (non zero)
>
0b79 : 28 > plp ;restore status
>
0b7a : a50c > lda zpt
0b7c : c97f > cmp #$ff-(1<<7)
> trap_ne ;zp altered
0b7e : d0fe > bne * ;failed not equal (non zero)
>
0b80 : e011 cpx #$11
trap_ne ;x overwritten
0b82 : d0fe > bne * ;failed not equal (non zero)
0b84 : c022 cpy #$22
trap_ne ;y overwritten
0b86 : d0fe > bne * ;failed not equal (non zero)
next_test
0b88 : ad0202 > lda test_case ;previous test
0b8b : c906 > cmp #test_num
> trap_ne ;test is out of sequence
0b8d : d0fe > bne * ;failed not equal (non zero)
>
0007 = >test_num = test_num + 1
0b8f : a907 > lda #test_num ;*** next tests' number
0b91 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
bbrc macro ;\1 = bitnum
bbr \1,zpt,skip\?
eor #(1<<\1)
skip\?
endm
bbsc macro ;\1 = bitnum
bbs \1,zpt,skip\?
eor #(1<<\1)
skip\?
endm
0b94 : a900 lda #0 ;combined bit test
0b96 : 850c sta zpt
0b98 : a900 bbcl lda #0
bbrc 0
0b9a : 0f0c02 > bbr 0,zpt,skip0480
0b9d : 4901 > eor #(1<<0)
0b9f : >skip0480
bbrc 1
0b9f : 1f0c02 > bbr 1,zpt,skip0481
0ba2 : 4902 > eor #(1<<1)
0ba4 : >skip0481
bbrc 2
0ba4 : 2f0c02 > bbr 2,zpt,skip0482
0ba7 : 4904 > eor #(1<<2)
0ba9 : >skip0482
bbrc 3
0ba9 : 3f0c02 > bbr 3,zpt,skip0483
0bac : 4908 > eor #(1<<3)
0bae : >skip0483
bbrc 4
0bae : 4f0c02 > bbr 4,zpt,skip0484
0bb1 : 4910 > eor #(1<<4)
0bb3 : >skip0484
bbrc 5
0bb3 : 5f0c02 > bbr 5,zpt,skip0485
0bb6 : 4920 > eor #(1<<5)
0bb8 : >skip0485
bbrc 6
0bb8 : 6f0c02 > bbr 6,zpt,skip0486
0bbb : 4940 > eor #(1<<6)
0bbd : >skip0486
bbrc 7
0bbd : 7f0c02 > bbr 7,zpt,skip0487
0bc0 : 4980 > eor #(1<<7)
0bc2 : >skip0487
0bc2 : 450c eor zpt
trap_ne ;failed bbr bitnum in accu
0bc4 : d0fe > bne * ;failed not equal (non zero)
0bc6 : a9ff lda #$ff
bbsc 0
0bc8 : 8f0c02 > bbs 0,zpt,skip0489
0bcb : 4901 > eor #(1<<0)
0bcd : >skip0489
bbsc 1
0bcd : 9f0c02 > bbs 1,zpt,skip0490
0bd0 : 4902 > eor #(1<<1)
0bd2 : >skip0490
bbsc 2
0bd2 : af0c02 > bbs 2,zpt,skip0491
0bd5 : 4904 > eor #(1<<2)
0bd7 : >skip0491
bbsc 3
0bd7 : bf0c02 > bbs 3,zpt,skip0492
0bda : 4908 > eor #(1<<3)
0bdc : >skip0492
bbsc 4
0bdc : cf0c02 > bbs 4,zpt,skip0493
0bdf : 4910 > eor #(1<<4)
0be1 : >skip0493
bbsc 5
0be1 : df0c02 > bbs 5,zpt,skip0494
0be4 : 4920 > eor #(1<<5)
0be6 : >skip0494
bbsc 6
0be6 : ef0c02 > bbs 6,zpt,skip0495
0be9 : 4940 > eor #(1<<6)
0beb : >skip0495
bbsc 7
0beb : ff0c02 > bbs 7,zpt,skip0496
0bee : 4980 > eor #(1<<7)
0bf0 : >skip0496
0bf0 : 450c eor zpt
trap_ne ;failed bbs bitnum in accu
0bf2 : d0fe > bne * ;failed not equal (non zero)
0bf4 : e60c inc zpt
0bf6 : d0a0 bne bbcl
next_test
0bf8 : ad0202 > lda test_case ;previous test
0bfb : c907 > cmp #test_num
> trap_ne ;test is out of sequence
0bfd : d0fe > bne * ;failed not equal (non zero)
>
0008 = >test_num = test_num + 1
0bff : a908 > lda #test_num ;*** next tests' number
0c01 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
endif
; testing NOP
nop_test macro ;\1 = opcode, \2 = # of bytes
ldy #$42
ldx #4-\2
db \1 ;test nop length
if \2 = 1
dex
dex
endif
if \2 = 2
iny
dex
endif
if \2 = 3
iny
iny
endif
dex
trap_ne ;wrong number of bytes
set_a $ff-\1,0
db \1 ;test nop integrity - flags off
nop
nop
tst_a $ff-\1,0
set_a $aa-\1,$ff
db \1 ;test nop integrity - flags on
nop
nop
tst_a $aa-\1,$ff
cpy #$42
trap_ne ;y changed
cpx #0
trap_ne ;x changed
endm
if skip_nop = 0
nop_test $02,2
0c04 : a042 > ldy #$42
0c06 : a202 > ldx #4-2
0c08 : 02 > db $02 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0c09 : c8 > iny
0c0a : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0c0b : ca > dex
> trap_ne ;wrong number of bytes
0c0c : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$02,0
> load_flag 0
0c0e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0c10 : 48 > pha ;use stack to load status
0c11 : a9fd > lda #$ff-$02 ;precharge accu
0c13 : 28 > plp
>
0c14 : 02 > db $02 ;test nop integrity - flags off
0c15 : ea > nop
0c16 : ea > nop
> tst_a $ff-$02,0
0c17 : 08 > php ;save flags
0c18 : c9fd > cmp #$ff-$02 ;test result
> trap_ne
0c1a : d0fe > bne * ;failed not equal (non zero)
>
0c1c : 68 > pla ;load status
0c1d : 48 > pha
> cmp_flag 0
0c1e : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0c20 : d0fe > bne * ;failed not equal (non zero)
>
0c22 : 28 > plp ;restore status
>
> set_a $aa-$02,$ff
> load_flag $ff
0c23 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0c25 : 48 > pha ;use stack to load status
0c26 : a9a8 > lda #$aa-$02 ;precharge accu
0c28 : 28 > plp
>
0c29 : 02 > db $02 ;test nop integrity - flags on
0c2a : ea > nop
0c2b : ea > nop
> tst_a $aa-$02,$ff
0c2c : 08 > php ;save flags
0c2d : c9a8 > cmp #$aa-$02 ;test result
> trap_ne
0c2f : d0fe > bne * ;failed not equal (non zero)
>
0c31 : 68 > pla ;load status
0c32 : 48 > pha
> cmp_flag $ff
0c33 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0c35 : d0fe > bne * ;failed not equal (non zero)
>
0c37 : 28 > plp ;restore status
>
0c38 : c042 > cpy #$42
> trap_ne ;y changed
0c3a : d0fe > bne * ;failed not equal (non zero)
>
0c3c : e000 > cpx #0
> trap_ne ;x changed
0c3e : d0fe > bne * ;failed not equal (non zero)
>
nop_test $22,2
0c40 : a042 > ldy #$42
0c42 : a202 > ldx #4-2
0c44 : 22 > db $22 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0c45 : c8 > iny
0c46 : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0c47 : ca > dex
> trap_ne ;wrong number of bytes
0c48 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$22,0
> load_flag 0
0c4a : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0c4c : 48 > pha ;use stack to load status
0c4d : a9dd > lda #$ff-$22 ;precharge accu
0c4f : 28 > plp
>
0c50 : 22 > db $22 ;test nop integrity - flags off
0c51 : ea > nop
0c52 : ea > nop
> tst_a $ff-$22,0
0c53 : 08 > php ;save flags
0c54 : c9dd > cmp #$ff-$22 ;test result
> trap_ne
0c56 : d0fe > bne * ;failed not equal (non zero)
>
0c58 : 68 > pla ;load status
0c59 : 48 > pha
> cmp_flag 0
0c5a : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0c5c : d0fe > bne * ;failed not equal (non zero)
>
0c5e : 28 > plp ;restore status
>
> set_a $aa-$22,$ff
> load_flag $ff
0c5f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0c61 : 48 > pha ;use stack to load status
0c62 : a988 > lda #$aa-$22 ;precharge accu
0c64 : 28 > plp
>
0c65 : 22 > db $22 ;test nop integrity - flags on
0c66 : ea > nop
0c67 : ea > nop
> tst_a $aa-$22,$ff
0c68 : 08 > php ;save flags
0c69 : c988 > cmp #$aa-$22 ;test result
> trap_ne
0c6b : d0fe > bne * ;failed not equal (non zero)
>
0c6d : 68 > pla ;load status
0c6e : 48 > pha
> cmp_flag $ff
0c6f : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0c71 : d0fe > bne * ;failed not equal (non zero)
>
0c73 : 28 > plp ;restore status
>
0c74 : c042 > cpy #$42
> trap_ne ;y changed
0c76 : d0fe > bne * ;failed not equal (non zero)
>
0c78 : e000 > cpx #0
> trap_ne ;x changed
0c7a : d0fe > bne * ;failed not equal (non zero)
>
nop_test $42,2
0c7c : a042 > ldy #$42
0c7e : a202 > ldx #4-2
0c80 : 42 > db $42 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0c81 : c8 > iny
0c82 : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0c83 : ca > dex
> trap_ne ;wrong number of bytes
0c84 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$42,0
> load_flag 0
0c86 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0c88 : 48 > pha ;use stack to load status
0c89 : a9bd > lda #$ff-$42 ;precharge accu
0c8b : 28 > plp
>
0c8c : 42 > db $42 ;test nop integrity - flags off
0c8d : ea > nop
0c8e : ea > nop
> tst_a $ff-$42,0
0c8f : 08 > php ;save flags
0c90 : c9bd > cmp #$ff-$42 ;test result
> trap_ne
0c92 : d0fe > bne * ;failed not equal (non zero)
>
0c94 : 68 > pla ;load status
0c95 : 48 > pha
> cmp_flag 0
0c96 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0c98 : d0fe > bne * ;failed not equal (non zero)
>
0c9a : 28 > plp ;restore status
>
> set_a $aa-$42,$ff
> load_flag $ff
0c9b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0c9d : 48 > pha ;use stack to load status
0c9e : a968 > lda #$aa-$42 ;precharge accu
0ca0 : 28 > plp
>
0ca1 : 42 > db $42 ;test nop integrity - flags on
0ca2 : ea > nop
0ca3 : ea > nop
> tst_a $aa-$42,$ff
0ca4 : 08 > php ;save flags
0ca5 : c968 > cmp #$aa-$42 ;test result
> trap_ne
0ca7 : d0fe > bne * ;failed not equal (non zero)
>
0ca9 : 68 > pla ;load status
0caa : 48 > pha
> cmp_flag $ff
0cab : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0cad : d0fe > bne * ;failed not equal (non zero)
>
0caf : 28 > plp ;restore status
>
0cb0 : c042 > cpy #$42
> trap_ne ;y changed
0cb2 : d0fe > bne * ;failed not equal (non zero)
>
0cb4 : e000 > cpx #0
> trap_ne ;x changed
0cb6 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $62,2
0cb8 : a042 > ldy #$42
0cba : a202 > ldx #4-2
0cbc : 62 > db $62 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0cbd : c8 > iny
0cbe : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0cbf : ca > dex
> trap_ne ;wrong number of bytes
0cc0 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$62,0
> load_flag 0
0cc2 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0cc4 : 48 > pha ;use stack to load status
0cc5 : a99d > lda #$ff-$62 ;precharge accu
0cc7 : 28 > plp
>
0cc8 : 62 > db $62 ;test nop integrity - flags off
0cc9 : ea > nop
0cca : ea > nop
> tst_a $ff-$62,0
0ccb : 08 > php ;save flags
0ccc : c99d > cmp #$ff-$62 ;test result
> trap_ne
0cce : d0fe > bne * ;failed not equal (non zero)
>
0cd0 : 68 > pla ;load status
0cd1 : 48 > pha
> cmp_flag 0
0cd2 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0cd4 : d0fe > bne * ;failed not equal (non zero)
>
0cd6 : 28 > plp ;restore status
>
> set_a $aa-$62,$ff
> load_flag $ff
0cd7 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0cd9 : 48 > pha ;use stack to load status
0cda : a948 > lda #$aa-$62 ;precharge accu
0cdc : 28 > plp
>
0cdd : 62 > db $62 ;test nop integrity - flags on
0cde : ea > nop
0cdf : ea > nop
> tst_a $aa-$62,$ff
0ce0 : 08 > php ;save flags
0ce1 : c948 > cmp #$aa-$62 ;test result
> trap_ne
0ce3 : d0fe > bne * ;failed not equal (non zero)
>
0ce5 : 68 > pla ;load status
0ce6 : 48 > pha
> cmp_flag $ff
0ce7 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0ce9 : d0fe > bne * ;failed not equal (non zero)
>
0ceb : 28 > plp ;restore status
>
0cec : c042 > cpy #$42
> trap_ne ;y changed
0cee : d0fe > bne * ;failed not equal (non zero)
>
0cf0 : e000 > cpx #0
> trap_ne ;x changed
0cf2 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $82,2
0cf4 : a042 > ldy #$42
0cf6 : a202 > ldx #4-2
0cf8 : 82 > db $82 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0cf9 : c8 > iny
0cfa : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0cfb : ca > dex
> trap_ne ;wrong number of bytes
0cfc : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$82,0
> load_flag 0
0cfe : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0d00 : 48 > pha ;use stack to load status
0d01 : a97d > lda #$ff-$82 ;precharge accu
0d03 : 28 > plp
>
0d04 : 82 > db $82 ;test nop integrity - flags off
0d05 : ea > nop
0d06 : ea > nop
> tst_a $ff-$82,0
0d07 : 08 > php ;save flags
0d08 : c97d > cmp #$ff-$82 ;test result
> trap_ne
0d0a : d0fe > bne * ;failed not equal (non zero)
>
0d0c : 68 > pla ;load status
0d0d : 48 > pha
> cmp_flag 0
0d0e : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0d10 : d0fe > bne * ;failed not equal (non zero)
>
0d12 : 28 > plp ;restore status
>
> set_a $aa-$82,$ff
> load_flag $ff
0d13 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0d15 : 48 > pha ;use stack to load status
0d16 : a928 > lda #$aa-$82 ;precharge accu
0d18 : 28 > plp
>
0d19 : 82 > db $82 ;test nop integrity - flags on
0d1a : ea > nop
0d1b : ea > nop
> tst_a $aa-$82,$ff
0d1c : 08 > php ;save flags
0d1d : c928 > cmp #$aa-$82 ;test result
> trap_ne
0d1f : d0fe > bne * ;failed not equal (non zero)
>
0d21 : 68 > pla ;load status
0d22 : 48 > pha
> cmp_flag $ff
0d23 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0d25 : d0fe > bne * ;failed not equal (non zero)
>
0d27 : 28 > plp ;restore status
>
0d28 : c042 > cpy #$42
> trap_ne ;y changed
0d2a : d0fe > bne * ;failed not equal (non zero)
>
0d2c : e000 > cpx #0
> trap_ne ;x changed
0d2e : d0fe > bne * ;failed not equal (non zero)
>
nop_test $c2,2
0d30 : a042 > ldy #$42
0d32 : a202 > ldx #4-2
0d34 : c2 > db $c2 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0d35 : c8 > iny
0d36 : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0d37 : ca > dex
> trap_ne ;wrong number of bytes
0d38 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$c2,0
> load_flag 0
0d3a : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0d3c : 48 > pha ;use stack to load status
0d3d : a93d > lda #$ff-$c2 ;precharge accu
0d3f : 28 > plp
>
0d40 : c2 > db $c2 ;test nop integrity - flags off
0d41 : ea > nop
0d42 : ea > nop
> tst_a $ff-$c2,0
0d43 : 08 > php ;save flags
0d44 : c93d > cmp #$ff-$c2 ;test result
> trap_ne
0d46 : d0fe > bne * ;failed not equal (non zero)
>
0d48 : 68 > pla ;load status
0d49 : 48 > pha
> cmp_flag 0
0d4a : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0d4c : d0fe > bne * ;failed not equal (non zero)
>
0d4e : 28 > plp ;restore status
>
> set_a $aa-$c2,$ff
> load_flag $ff
0d4f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0d51 : 48 > pha ;use stack to load status
0d52 : a9e8 > lda #$aa-$c2 ;precharge accu
0d54 : 28 > plp
>
0d55 : c2 > db $c2 ;test nop integrity - flags on
0d56 : ea > nop
0d57 : ea > nop
> tst_a $aa-$c2,$ff
0d58 : 08 > php ;save flags
0d59 : c9e8 > cmp #$aa-$c2 ;test result
> trap_ne
0d5b : d0fe > bne * ;failed not equal (non zero)
>
0d5d : 68 > pla ;load status
0d5e : 48 > pha
> cmp_flag $ff
0d5f : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0d61 : d0fe > bne * ;failed not equal (non zero)
>
0d63 : 28 > plp ;restore status
>
0d64 : c042 > cpy #$42
> trap_ne ;y changed
0d66 : d0fe > bne * ;failed not equal (non zero)
>
0d68 : e000 > cpx #0
> trap_ne ;x changed
0d6a : d0fe > bne * ;failed not equal (non zero)
>
nop_test $e2,2
0d6c : a042 > ldy #$42
0d6e : a202 > ldx #4-2
0d70 : e2 > db $e2 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0d71 : c8 > iny
0d72 : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0d73 : ca > dex
> trap_ne ;wrong number of bytes
0d74 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$e2,0
> load_flag 0
0d76 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0d78 : 48 > pha ;use stack to load status
0d79 : a91d > lda #$ff-$e2 ;precharge accu
0d7b : 28 > plp
>
0d7c : e2 > db $e2 ;test nop integrity - flags off
0d7d : ea > nop
0d7e : ea > nop
> tst_a $ff-$e2,0
0d7f : 08 > php ;save flags
0d80 : c91d > cmp #$ff-$e2 ;test result
> trap_ne
0d82 : d0fe > bne * ;failed not equal (non zero)
>
0d84 : 68 > pla ;load status
0d85 : 48 > pha
> cmp_flag 0
0d86 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0d88 : d0fe > bne * ;failed not equal (non zero)
>
0d8a : 28 > plp ;restore status
>
> set_a $aa-$e2,$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 : a9c8 > lda #$aa-$e2 ;precharge accu
0d90 : 28 > plp
>
0d91 : e2 > db $e2 ;test nop integrity - flags on
0d92 : ea > nop
0d93 : ea > nop
> tst_a $aa-$e2,$ff
0d94 : 08 > php ;save flags
0d95 : c9c8 > cmp #$aa-$e2 ;test result
> trap_ne
0d97 : d0fe > bne * ;failed not equal (non zero)
>
0d99 : 68 > pla ;load status
0d9a : 48 > pha
> cmp_flag $ff
0d9b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0d9d : d0fe > bne * ;failed not equal (non zero)
>
0d9f : 28 > plp ;restore status
>
0da0 : c042 > cpy #$42
> trap_ne ;y changed
0da2 : d0fe > bne * ;failed not equal (non zero)
>
0da4 : e000 > cpx #0
> trap_ne ;x changed
0da6 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $44,2
0da8 : a042 > ldy #$42
0daa : a202 > ldx #4-2
0dac : 44 > db $44 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0dad : c8 > iny
0dae : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0daf : ca > dex
> trap_ne ;wrong number of bytes
0db0 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$44,0
> load_flag 0
0db2 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0db4 : 48 > pha ;use stack to load status
0db5 : a9bb > lda #$ff-$44 ;precharge accu
0db7 : 28 > plp
>
0db8 : 44 > db $44 ;test nop integrity - flags off
0db9 : ea > nop
0dba : ea > nop
> tst_a $ff-$44,0
0dbb : 08 > php ;save flags
0dbc : c9bb > cmp #$ff-$44 ;test result
> trap_ne
0dbe : d0fe > bne * ;failed not equal (non zero)
>
0dc0 : 68 > pla ;load status
0dc1 : 48 > pha
> cmp_flag 0
0dc2 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0dc4 : d0fe > bne * ;failed not equal (non zero)
>
0dc6 : 28 > plp ;restore status
>
> set_a $aa-$44,$ff
> load_flag $ff
0dc7 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0dc9 : 48 > pha ;use stack to load status
0dca : a966 > lda #$aa-$44 ;precharge accu
0dcc : 28 > plp
>
0dcd : 44 > db $44 ;test nop integrity - flags on
0dce : ea > nop
0dcf : ea > nop
> tst_a $aa-$44,$ff
0dd0 : 08 > php ;save flags
0dd1 : c966 > cmp #$aa-$44 ;test result
> trap_ne
0dd3 : d0fe > bne * ;failed not equal (non zero)
>
0dd5 : 68 > pla ;load status
0dd6 : 48 > pha
> cmp_flag $ff
0dd7 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0dd9 : d0fe > bne * ;failed not equal (non zero)
>
0ddb : 28 > plp ;restore status
>
0ddc : c042 > cpy #$42
> trap_ne ;y changed
0dde : d0fe > bne * ;failed not equal (non zero)
>
0de0 : e000 > cpx #0
> trap_ne ;x changed
0de2 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $54,2
0de4 : a042 > ldy #$42
0de6 : a202 > ldx #4-2
0de8 : 54 > db $54 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0de9 : c8 > iny
0dea : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0deb : ca > dex
> trap_ne ;wrong number of bytes
0dec : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$54,0
> load_flag 0
0dee : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0df0 : 48 > pha ;use stack to load status
0df1 : a9ab > lda #$ff-$54 ;precharge accu
0df3 : 28 > plp
>
0df4 : 54 > db $54 ;test nop integrity - flags off
0df5 : ea > nop
0df6 : ea > nop
> tst_a $ff-$54,0
0df7 : 08 > php ;save flags
0df8 : c9ab > cmp #$ff-$54 ;test result
> trap_ne
0dfa : d0fe > bne * ;failed not equal (non zero)
>
0dfc : 68 > pla ;load status
0dfd : 48 > pha
> cmp_flag 0
0dfe : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0e00 : d0fe > bne * ;failed not equal (non zero)
>
0e02 : 28 > plp ;restore status
>
> set_a $aa-$54,$ff
> load_flag $ff
0e03 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0e05 : 48 > pha ;use stack to load status
0e06 : a956 > lda #$aa-$54 ;precharge accu
0e08 : 28 > plp
>
0e09 : 54 > db $54 ;test nop integrity - flags on
0e0a : ea > nop
0e0b : ea > nop
> tst_a $aa-$54,$ff
0e0c : 08 > php ;save flags
0e0d : c956 > cmp #$aa-$54 ;test result
> trap_ne
0e0f : d0fe > bne * ;failed not equal (non zero)
>
0e11 : 68 > pla ;load status
0e12 : 48 > pha
> cmp_flag $ff
0e13 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0e15 : d0fe > bne * ;failed not equal (non zero)
>
0e17 : 28 > plp ;restore status
>
0e18 : c042 > cpy #$42
> trap_ne ;y changed
0e1a : d0fe > bne * ;failed not equal (non zero)
>
0e1c : e000 > cpx #0
> trap_ne ;x changed
0e1e : d0fe > bne * ;failed not equal (non zero)
>
nop_test $d4,2
0e20 : a042 > ldy #$42
0e22 : a202 > ldx #4-2
0e24 : d4 > db $d4 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0e25 : c8 > iny
0e26 : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0e27 : ca > dex
> trap_ne ;wrong number of bytes
0e28 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$d4,0
> load_flag 0
0e2a : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0e2c : 48 > pha ;use stack to load status
0e2d : a92b > lda #$ff-$d4 ;precharge accu
0e2f : 28 > plp
>
0e30 : d4 > db $d4 ;test nop integrity - flags off
0e31 : ea > nop
0e32 : ea > nop
> tst_a $ff-$d4,0
0e33 : 08 > php ;save flags
0e34 : c92b > cmp #$ff-$d4 ;test result
> trap_ne
0e36 : d0fe > bne * ;failed not equal (non zero)
>
0e38 : 68 > pla ;load status
0e39 : 48 > pha
> cmp_flag 0
0e3a : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0e3c : d0fe > bne * ;failed not equal (non zero)
>
0e3e : 28 > plp ;restore status
>
> set_a $aa-$d4,$ff
> load_flag $ff
0e3f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0e41 : 48 > pha ;use stack to load status
0e42 : a9d6 > lda #$aa-$d4 ;precharge accu
0e44 : 28 > plp
>
0e45 : d4 > db $d4 ;test nop integrity - flags on
0e46 : ea > nop
0e47 : ea > nop
> tst_a $aa-$d4,$ff
0e48 : 08 > php ;save flags
0e49 : c9d6 > cmp #$aa-$d4 ;test result
> trap_ne
0e4b : d0fe > bne * ;failed not equal (non zero)
>
0e4d : 68 > pla ;load status
0e4e : 48 > pha
> cmp_flag $ff
0e4f : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0e51 : d0fe > bne * ;failed not equal (non zero)
>
0e53 : 28 > plp ;restore status
>
0e54 : c042 > cpy #$42
> trap_ne ;y changed
0e56 : d0fe > bne * ;failed not equal (non zero)
>
0e58 : e000 > cpx #0
> trap_ne ;x changed
0e5a : d0fe > bne * ;failed not equal (non zero)
>
nop_test $f4,2
0e5c : a042 > ldy #$42
0e5e : a202 > ldx #4-2
0e60 : f4 > db $f4 ;test nop length
> if 2 = 1
> dex
> dex
> endif
> if 2 = 2
0e61 : c8 > iny
0e62 : ca > dex
> endif
> if 2 = 3
> iny
> iny
> endif
0e63 : ca > dex
> trap_ne ;wrong number of bytes
0e64 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$f4,0
> load_flag 0
0e66 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0e68 : 48 > pha ;use stack to load status
0e69 : a90b > lda #$ff-$f4 ;precharge accu
0e6b : 28 > plp
>
0e6c : f4 > db $f4 ;test nop integrity - flags off
0e6d : ea > nop
0e6e : ea > nop
> tst_a $ff-$f4,0
0e6f : 08 > php ;save flags
0e70 : c90b > cmp #$ff-$f4 ;test result
> trap_ne
0e72 : d0fe > bne * ;failed not equal (non zero)
>
0e74 : 68 > pla ;load status
0e75 : 48 > pha
> cmp_flag 0
0e76 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0e78 : d0fe > bne * ;failed not equal (non zero)
>
0e7a : 28 > plp ;restore status
>
> set_a $aa-$f4,$ff
> load_flag $ff
0e7b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0e7d : 48 > pha ;use stack to load status
0e7e : a9b6 > lda #$aa-$f4 ;precharge accu
0e80 : 28 > plp
>
0e81 : f4 > db $f4 ;test nop integrity - flags on
0e82 : ea > nop
0e83 : ea > nop
> tst_a $aa-$f4,$ff
0e84 : 08 > php ;save flags
0e85 : c9b6 > cmp #$aa-$f4 ;test result
> trap_ne
0e87 : d0fe > bne * ;failed not equal (non zero)
>
0e89 : 68 > pla ;load status
0e8a : 48 > pha
> cmp_flag $ff
0e8b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0e8d : d0fe > bne * ;failed not equal (non zero)
>
0e8f : 28 > plp ;restore status
>
0e90 : c042 > cpy #$42
> trap_ne ;y changed
0e92 : d0fe > bne * ;failed not equal (non zero)
>
0e94 : e000 > cpx #0
> trap_ne ;x changed
0e96 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $5c,3
0e98 : a042 > ldy #$42
0e9a : a201 > ldx #4-3
0e9c : 5c > db $5c ;test nop length
> if 3 = 1
> dex
> dex
> endif
> if 3 = 2
> iny
> dex
> endif
> if 3 = 3
0e9d : c8 > iny
0e9e : c8 > iny
> endif
0e9f : ca > dex
> trap_ne ;wrong number of bytes
0ea0 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$5c,0
> load_flag 0
0ea2 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0ea4 : 48 > pha ;use stack to load status
0ea5 : a9a3 > lda #$ff-$5c ;precharge accu
0ea7 : 28 > plp
>
0ea8 : 5c > db $5c ;test nop integrity - flags off
0ea9 : ea > nop
0eaa : ea > nop
> tst_a $ff-$5c,0
0eab : 08 > php ;save flags
0eac : c9a3 > cmp #$ff-$5c ;test result
> trap_ne
0eae : d0fe > bne * ;failed not equal (non zero)
>
0eb0 : 68 > pla ;load status
0eb1 : 48 > pha
> cmp_flag 0
0eb2 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0eb4 : d0fe > bne * ;failed not equal (non zero)
>
0eb6 : 28 > plp ;restore status
>
> set_a $aa-$5c,$ff
> load_flag $ff
0eb7 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0eb9 : 48 > pha ;use stack to load status
0eba : a94e > lda #$aa-$5c ;precharge accu
0ebc : 28 > plp
>
0ebd : 5c > db $5c ;test nop integrity - flags on
0ebe : ea > nop
0ebf : ea > nop
> tst_a $aa-$5c,$ff
0ec0 : 08 > php ;save flags
0ec1 : c94e > cmp #$aa-$5c ;test result
> trap_ne
0ec3 : d0fe > bne * ;failed not equal (non zero)
>
0ec5 : 68 > pla ;load status
0ec6 : 48 > pha
> cmp_flag $ff
0ec7 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0ec9 : d0fe > bne * ;failed not equal (non zero)
>
0ecb : 28 > plp ;restore status
>
0ecc : c042 > cpy #$42
> trap_ne ;y changed
0ece : d0fe > bne * ;failed not equal (non zero)
>
0ed0 : e000 > cpx #0
> trap_ne ;x changed
0ed2 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $dc,3
0ed4 : a042 > ldy #$42
0ed6 : a201 > ldx #4-3
0ed8 : dc > db $dc ;test nop length
> if 3 = 1
> dex
> dex
> endif
> if 3 = 2
> iny
> dex
> endif
> if 3 = 3
0ed9 : c8 > iny
0eda : c8 > iny
> endif
0edb : ca > dex
> trap_ne ;wrong number of bytes
0edc : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$dc,0
> load_flag 0
0ede : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0ee0 : 48 > pha ;use stack to load status
0ee1 : a923 > lda #$ff-$dc ;precharge accu
0ee3 : 28 > plp
>
0ee4 : dc > db $dc ;test nop integrity - flags off
0ee5 : ea > nop
0ee6 : ea > nop
> tst_a $ff-$dc,0
0ee7 : 08 > php ;save flags
0ee8 : c923 > cmp #$ff-$dc ;test result
> trap_ne
0eea : d0fe > bne * ;failed not equal (non zero)
>
0eec : 68 > pla ;load status
0eed : 48 > pha
> cmp_flag 0
0eee : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0ef0 : d0fe > bne * ;failed not equal (non zero)
>
0ef2 : 28 > plp ;restore status
>
> set_a $aa-$dc,$ff
> load_flag $ff
0ef3 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0ef5 : 48 > pha ;use stack to load status
0ef6 : a9ce > lda #$aa-$dc ;precharge accu
0ef8 : 28 > plp
>
0ef9 : dc > db $dc ;test nop integrity - flags on
0efa : ea > nop
0efb : ea > nop
> tst_a $aa-$dc,$ff
0efc : 08 > php ;save flags
0efd : c9ce > cmp #$aa-$dc ;test result
> trap_ne
0eff : d0fe > bne * ;failed not equal (non zero)
>
0f01 : 68 > pla ;load status
0f02 : 48 > pha
> cmp_flag $ff
0f03 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0f05 : d0fe > bne * ;failed not equal (non zero)
>
0f07 : 28 > plp ;restore status
>
0f08 : c042 > cpy #$42
> trap_ne ;y changed
0f0a : d0fe > bne * ;failed not equal (non zero)
>
0f0c : e000 > cpx #0
> trap_ne ;x changed
0f0e : d0fe > bne * ;failed not equal (non zero)
>
nop_test $fc,3
0f10 : a042 > ldy #$42
0f12 : a201 > ldx #4-3
0f14 : fc > db $fc ;test nop length
> if 3 = 1
> dex
> dex
> endif
> if 3 = 2
> iny
> dex
> endif
> if 3 = 3
0f15 : c8 > iny
0f16 : c8 > iny
> endif
0f17 : ca > dex
> trap_ne ;wrong number of bytes
0f18 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$fc,0
> load_flag 0
0f1a : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0f1c : 48 > pha ;use stack to load status
0f1d : a903 > lda #$ff-$fc ;precharge accu
0f1f : 28 > plp
>
0f20 : fc > db $fc ;test nop integrity - flags off
0f21 : ea > nop
0f22 : ea > nop
> tst_a $ff-$fc,0
0f23 : 08 > php ;save flags
0f24 : c903 > cmp #$ff-$fc ;test result
> trap_ne
0f26 : d0fe > bne * ;failed not equal (non zero)
>
0f28 : 68 > pla ;load status
0f29 : 48 > pha
> cmp_flag 0
0f2a : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0f2c : d0fe > bne * ;failed not equal (non zero)
>
0f2e : 28 > plp ;restore status
>
> set_a $aa-$fc,$ff
> load_flag $ff
0f2f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0f31 : 48 > pha ;use stack to load status
0f32 : a9ae > lda #$aa-$fc ;precharge accu
0f34 : 28 > plp
>
0f35 : fc > db $fc ;test nop integrity - flags on
0f36 : ea > nop
0f37 : ea > nop
> tst_a $aa-$fc,$ff
0f38 : 08 > php ;save flags
0f39 : c9ae > cmp #$aa-$fc ;test result
> trap_ne
0f3b : d0fe > bne * ;failed not equal (non zero)
>
0f3d : 68 > pla ;load status
0f3e : 48 > pha
> cmp_flag $ff
0f3f : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0f41 : d0fe > bne * ;failed not equal (non zero)
>
0f43 : 28 > plp ;restore status
>
0f44 : c042 > cpy #$42
> trap_ne ;y changed
0f46 : d0fe > bne * ;failed not equal (non zero)
>
0f48 : e000 > cpx #0
> trap_ne ;x changed
0f4a : d0fe > bne * ;failed not equal (non zero)
>
nop_test $03,1
0f4c : a042 > ldy #$42
0f4e : a203 > ldx #4-1
0f50 : 03 > db $03 ;test nop length
> if 1 = 1
0f51 : ca > dex
0f52 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
0f53 : ca > dex
> trap_ne ;wrong number of bytes
0f54 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$03,0
> load_flag 0
0f56 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0f58 : 48 > pha ;use stack to load status
0f59 : a9fc > lda #$ff-$03 ;precharge accu
0f5b : 28 > plp
>
0f5c : 03 > db $03 ;test nop integrity - flags off
0f5d : ea > nop
0f5e : ea > nop
> tst_a $ff-$03,0
0f5f : 08 > php ;save flags
0f60 : c9fc > cmp #$ff-$03 ;test result
> trap_ne
0f62 : d0fe > bne * ;failed not equal (non zero)
>
0f64 : 68 > pla ;load status
0f65 : 48 > pha
> cmp_flag 0
0f66 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0f68 : d0fe > bne * ;failed not equal (non zero)
>
0f6a : 28 > plp ;restore status
>
> set_a $aa-$03,$ff
> load_flag $ff
0f6b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0f6d : 48 > pha ;use stack to load status
0f6e : a9a7 > lda #$aa-$03 ;precharge accu
0f70 : 28 > plp
>
0f71 : 03 > db $03 ;test nop integrity - flags on
0f72 : ea > nop
0f73 : ea > nop
> tst_a $aa-$03,$ff
0f74 : 08 > php ;save flags
0f75 : c9a7 > cmp #$aa-$03 ;test result
> trap_ne
0f77 : d0fe > bne * ;failed not equal (non zero)
>
0f79 : 68 > pla ;load status
0f7a : 48 > pha
> cmp_flag $ff
0f7b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0f7d : d0fe > bne * ;failed not equal (non zero)
>
0f7f : 28 > plp ;restore status
>
0f80 : c042 > cpy #$42
> trap_ne ;y changed
0f82 : d0fe > bne * ;failed not equal (non zero)
>
0f84 : e000 > cpx #0
> trap_ne ;x changed
0f86 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $13,1
0f88 : a042 > ldy #$42
0f8a : a203 > ldx #4-1
0f8c : 13 > db $13 ;test nop length
> if 1 = 1
0f8d : ca > dex
0f8e : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
0f8f : ca > dex
> trap_ne ;wrong number of bytes
0f90 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$13,0
> load_flag 0
0f92 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0f94 : 48 > pha ;use stack to load status
0f95 : a9ec > lda #$ff-$13 ;precharge accu
0f97 : 28 > plp
>
0f98 : 13 > db $13 ;test nop integrity - flags off
0f99 : ea > nop
0f9a : ea > nop
> tst_a $ff-$13,0
0f9b : 08 > php ;save flags
0f9c : c9ec > cmp #$ff-$13 ;test result
> trap_ne
0f9e : d0fe > bne * ;failed not equal (non zero)
>
0fa0 : 68 > pla ;load status
0fa1 : 48 > pha
> cmp_flag 0
0fa2 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0fa4 : d0fe > bne * ;failed not equal (non zero)
>
0fa6 : 28 > plp ;restore status
>
> set_a $aa-$13,$ff
> load_flag $ff
0fa7 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0fa9 : 48 > pha ;use stack to load status
0faa : a997 > lda #$aa-$13 ;precharge accu
0fac : 28 > plp
>
0fad : 13 > db $13 ;test nop integrity - flags on
0fae : ea > nop
0faf : ea > nop
> tst_a $aa-$13,$ff
0fb0 : 08 > php ;save flags
0fb1 : c997 > cmp #$aa-$13 ;test result
> trap_ne
0fb3 : d0fe > bne * ;failed not equal (non zero)
>
0fb5 : 68 > pla ;load status
0fb6 : 48 > pha
> cmp_flag $ff
0fb7 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0fb9 : d0fe > bne * ;failed not equal (non zero)
>
0fbb : 28 > plp ;restore status
>
0fbc : c042 > cpy #$42
> trap_ne ;y changed
0fbe : d0fe > bne * ;failed not equal (non zero)
>
0fc0 : e000 > cpx #0
> trap_ne ;x changed
0fc2 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $23,1
0fc4 : a042 > ldy #$42
0fc6 : a203 > ldx #4-1
0fc8 : 23 > db $23 ;test nop length
> if 1 = 1
0fc9 : ca > dex
0fca : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
0fcb : ca > dex
> trap_ne ;wrong number of bytes
0fcc : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$23,0
> load_flag 0
0fce : a900 > lda #0 ;allow test to change I-flag (no mask)
>
0fd0 : 48 > pha ;use stack to load status
0fd1 : a9dc > lda #$ff-$23 ;precharge accu
0fd3 : 28 > plp
>
0fd4 : 23 > db $23 ;test nop integrity - flags off
0fd5 : ea > nop
0fd6 : ea > nop
> tst_a $ff-$23,0
0fd7 : 08 > php ;save flags
0fd8 : c9dc > cmp #$ff-$23 ;test result
> trap_ne
0fda : d0fe > bne * ;failed not equal (non zero)
>
0fdc : 68 > pla ;load status
0fdd : 48 > pha
> cmp_flag 0
0fde : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0fe0 : d0fe > bne * ;failed not equal (non zero)
>
0fe2 : 28 > plp ;restore status
>
> set_a $aa-$23,$ff
> load_flag $ff
0fe3 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
0fe5 : 48 > pha ;use stack to load status
0fe6 : a987 > lda #$aa-$23 ;precharge accu
0fe8 : 28 > plp
>
0fe9 : 23 > db $23 ;test nop integrity - flags on
0fea : ea > nop
0feb : ea > nop
> tst_a $aa-$23,$ff
0fec : 08 > php ;save flags
0fed : c987 > cmp #$aa-$23 ;test result
> trap_ne
0fef : d0fe > bne * ;failed not equal (non zero)
>
0ff1 : 68 > pla ;load status
0ff2 : 48 > pha
> cmp_flag $ff
0ff3 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
0ff5 : d0fe > bne * ;failed not equal (non zero)
>
0ff7 : 28 > plp ;restore status
>
0ff8 : c042 > cpy #$42
> trap_ne ;y changed
0ffa : d0fe > bne * ;failed not equal (non zero)
>
0ffc : e000 > cpx #0
> trap_ne ;x changed
0ffe : d0fe > bne * ;failed not equal (non zero)
>
nop_test $33,1
1000 : a042 > ldy #$42
1002 : a203 > ldx #4-1
1004 : 33 > db $33 ;test nop length
> if 1 = 1
1005 : ca > dex
1006 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
1007 : ca > dex
> trap_ne ;wrong number of bytes
1008 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$33,0
> load_flag 0
100a : a900 > lda #0 ;allow test to change I-flag (no mask)
>
100c : 48 > pha ;use stack to load status
100d : a9cc > lda #$ff-$33 ;precharge accu
100f : 28 > plp
>
1010 : 33 > db $33 ;test nop integrity - flags off
1011 : ea > nop
1012 : ea > nop
> tst_a $ff-$33,0
1013 : 08 > php ;save flags
1014 : c9cc > cmp #$ff-$33 ;test result
> trap_ne
1016 : d0fe > bne * ;failed not equal (non zero)
>
1018 : 68 > pla ;load status
1019 : 48 > pha
> cmp_flag 0
101a : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
101c : d0fe > bne * ;failed not equal (non zero)
>
101e : 28 > plp ;restore status
>
> set_a $aa-$33,$ff
> load_flag $ff
101f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1021 : 48 > pha ;use stack to load status
1022 : a977 > lda #$aa-$33 ;precharge accu
1024 : 28 > plp
>
1025 : 33 > db $33 ;test nop integrity - flags on
1026 : ea > nop
1027 : ea > nop
> tst_a $aa-$33,$ff
1028 : 08 > php ;save flags
1029 : c977 > cmp #$aa-$33 ;test result
> trap_ne
102b : d0fe > bne * ;failed not equal (non zero)
>
102d : 68 > pla ;load status
102e : 48 > pha
> cmp_flag $ff
102f : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1031 : d0fe > bne * ;failed not equal (non zero)
>
1033 : 28 > plp ;restore status
>
1034 : c042 > cpy #$42
> trap_ne ;y changed
1036 : d0fe > bne * ;failed not equal (non zero)
>
1038 : e000 > cpx #0
> trap_ne ;x changed
103a : d0fe > bne * ;failed not equal (non zero)
>
nop_test $43,1
103c : a042 > ldy #$42
103e : a203 > ldx #4-1
1040 : 43 > db $43 ;test nop length
> if 1 = 1
1041 : ca > dex
1042 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
1043 : ca > dex
> trap_ne ;wrong number of bytes
1044 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$43,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 : a9bc > lda #$ff-$43 ;precharge accu
104b : 28 > plp
>
104c : 43 > db $43 ;test nop integrity - flags off
104d : ea > nop
104e : ea > nop
> tst_a $ff-$43,0
104f : 08 > php ;save flags
1050 : c9bc > cmp #$ff-$43 ;test result
> trap_ne
1052 : d0fe > bne * ;failed not equal (non zero)
>
1054 : 68 > pla ;load status
1055 : 48 > pha
> cmp_flag 0
1056 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1058 : d0fe > bne * ;failed not equal (non zero)
>
105a : 28 > plp ;restore status
>
> set_a $aa-$43,$ff
> load_flag $ff
105b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
105d : 48 > pha ;use stack to load status
105e : a967 > lda #$aa-$43 ;precharge accu
1060 : 28 > plp
>
1061 : 43 > db $43 ;test nop integrity - flags on
1062 : ea > nop
1063 : ea > nop
> tst_a $aa-$43,$ff
1064 : 08 > php ;save flags
1065 : c967 > cmp #$aa-$43 ;test result
> trap_ne
1067 : d0fe > bne * ;failed not equal (non zero)
>
1069 : 68 > pla ;load status
106a : 48 > pha
> cmp_flag $ff
106b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
106d : d0fe > bne * ;failed not equal (non zero)
>
106f : 28 > plp ;restore status
>
1070 : c042 > cpy #$42
> trap_ne ;y changed
1072 : d0fe > bne * ;failed not equal (non zero)
>
1074 : e000 > cpx #0
> trap_ne ;x changed
1076 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $53,1
1078 : a042 > ldy #$42
107a : a203 > ldx #4-1
107c : 53 > db $53 ;test nop length
> if 1 = 1
107d : ca > dex
107e : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
107f : ca > dex
> trap_ne ;wrong number of bytes
1080 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$53,0
> load_flag 0
1082 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1084 : 48 > pha ;use stack to load status
1085 : a9ac > lda #$ff-$53 ;precharge accu
1087 : 28 > plp
>
1088 : 53 > db $53 ;test nop integrity - flags off
1089 : ea > nop
108a : ea > nop
> tst_a $ff-$53,0
108b : 08 > php ;save flags
108c : c9ac > cmp #$ff-$53 ;test result
> trap_ne
108e : d0fe > bne * ;failed not equal (non zero)
>
1090 : 68 > pla ;load status
1091 : 48 > pha
> cmp_flag 0
1092 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1094 : d0fe > bne * ;failed not equal (non zero)
>
1096 : 28 > plp ;restore status
>
> set_a $aa-$53,$ff
> load_flag $ff
1097 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1099 : 48 > pha ;use stack to load status
109a : a957 > lda #$aa-$53 ;precharge accu
109c : 28 > plp
>
109d : 53 > db $53 ;test nop integrity - flags on
109e : ea > nop
109f : ea > nop
> tst_a $aa-$53,$ff
10a0 : 08 > php ;save flags
10a1 : c957 > cmp #$aa-$53 ;test result
> trap_ne
10a3 : d0fe > bne * ;failed not equal (non zero)
>
10a5 : 68 > pla ;load status
10a6 : 48 > pha
> cmp_flag $ff
10a7 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
10a9 : d0fe > bne * ;failed not equal (non zero)
>
10ab : 28 > plp ;restore status
>
10ac : c042 > cpy #$42
> trap_ne ;y changed
10ae : d0fe > bne * ;failed not equal (non zero)
>
10b0 : e000 > cpx #0
> trap_ne ;x changed
10b2 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $63,1
10b4 : a042 > ldy #$42
10b6 : a203 > ldx #4-1
10b8 : 63 > db $63 ;test nop length
> if 1 = 1
10b9 : ca > dex
10ba : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
10bb : ca > dex
> trap_ne ;wrong number of bytes
10bc : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$63,0
> load_flag 0
10be : a900 > lda #0 ;allow test to change I-flag (no mask)
>
10c0 : 48 > pha ;use stack to load status
10c1 : a99c > lda #$ff-$63 ;precharge accu
10c3 : 28 > plp
>
10c4 : 63 > db $63 ;test nop integrity - flags off
10c5 : ea > nop
10c6 : ea > nop
> tst_a $ff-$63,0
10c7 : 08 > php ;save flags
10c8 : c99c > cmp #$ff-$63 ;test result
> trap_ne
10ca : d0fe > bne * ;failed not equal (non zero)
>
10cc : 68 > pla ;load status
10cd : 48 > pha
> cmp_flag 0
10ce : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
10d0 : d0fe > bne * ;failed not equal (non zero)
>
10d2 : 28 > plp ;restore status
>
> set_a $aa-$63,$ff
> load_flag $ff
10d3 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
10d5 : 48 > pha ;use stack to load status
10d6 : a947 > lda #$aa-$63 ;precharge accu
10d8 : 28 > plp
>
10d9 : 63 > db $63 ;test nop integrity - flags on
10da : ea > nop
10db : ea > nop
> tst_a $aa-$63,$ff
10dc : 08 > php ;save flags
10dd : c947 > cmp #$aa-$63 ;test result
> trap_ne
10df : d0fe > bne * ;failed not equal (non zero)
>
10e1 : 68 > pla ;load status
10e2 : 48 > pha
> cmp_flag $ff
10e3 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
10e5 : d0fe > bne * ;failed not equal (non zero)
>
10e7 : 28 > plp ;restore status
>
10e8 : c042 > cpy #$42
> trap_ne ;y changed
10ea : d0fe > bne * ;failed not equal (non zero)
>
10ec : e000 > cpx #0
> trap_ne ;x changed
10ee : d0fe > bne * ;failed not equal (non zero)
>
nop_test $73,1
10f0 : a042 > ldy #$42
10f2 : a203 > ldx #4-1
10f4 : 73 > db $73 ;test nop length
> if 1 = 1
10f5 : ca > dex
10f6 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
10f7 : ca > dex
> trap_ne ;wrong number of bytes
10f8 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$73,0
> load_flag 0
10fa : a900 > lda #0 ;allow test to change I-flag (no mask)
>
10fc : 48 > pha ;use stack to load status
10fd : a98c > lda #$ff-$73 ;precharge accu
10ff : 28 > plp
>
1100 : 73 > db $73 ;test nop integrity - flags off
1101 : ea > nop
1102 : ea > nop
> tst_a $ff-$73,0
1103 : 08 > php ;save flags
1104 : c98c > cmp #$ff-$73 ;test result
> trap_ne
1106 : d0fe > bne * ;failed not equal (non zero)
>
1108 : 68 > pla ;load status
1109 : 48 > pha
> cmp_flag 0
110a : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
110c : d0fe > bne * ;failed not equal (non zero)
>
110e : 28 > plp ;restore status
>
> set_a $aa-$73,$ff
> load_flag $ff
110f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1111 : 48 > pha ;use stack to load status
1112 : a937 > lda #$aa-$73 ;precharge accu
1114 : 28 > plp
>
1115 : 73 > db $73 ;test nop integrity - flags on
1116 : ea > nop
1117 : ea > nop
> tst_a $aa-$73,$ff
1118 : 08 > php ;save flags
1119 : c937 > cmp #$aa-$73 ;test result
> trap_ne
111b : d0fe > bne * ;failed not equal (non zero)
>
111d : 68 > pla ;load status
111e : 48 > pha
> cmp_flag $ff
111f : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1121 : d0fe > bne * ;failed not equal (non zero)
>
1123 : 28 > plp ;restore status
>
1124 : c042 > cpy #$42
> trap_ne ;y changed
1126 : d0fe > bne * ;failed not equal (non zero)
>
1128 : e000 > cpx #0
> trap_ne ;x changed
112a : d0fe > bne * ;failed not equal (non zero)
>
nop_test $83,1
112c : a042 > ldy #$42
112e : a203 > ldx #4-1
1130 : 83 > db $83 ;test nop length
> if 1 = 1
1131 : ca > dex
1132 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
1133 : ca > dex
> trap_ne ;wrong number of bytes
1134 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$83,0
> load_flag 0
1136 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1138 : 48 > pha ;use stack to load status
1139 : a97c > lda #$ff-$83 ;precharge accu
113b : 28 > plp
>
113c : 83 > db $83 ;test nop integrity - flags off
113d : ea > nop
113e : ea > nop
> tst_a $ff-$83,0
113f : 08 > php ;save flags
1140 : c97c > cmp #$ff-$83 ;test result
> trap_ne
1142 : d0fe > bne * ;failed not equal (non zero)
>
1144 : 68 > pla ;load status
1145 : 48 > pha
> cmp_flag 0
1146 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1148 : d0fe > bne * ;failed not equal (non zero)
>
114a : 28 > plp ;restore status
>
> set_a $aa-$83,$ff
> load_flag $ff
114b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
114d : 48 > pha ;use stack to load status
114e : a927 > lda #$aa-$83 ;precharge accu
1150 : 28 > plp
>
1151 : 83 > db $83 ;test nop integrity - flags on
1152 : ea > nop
1153 : ea > nop
> tst_a $aa-$83,$ff
1154 : 08 > php ;save flags
1155 : c927 > cmp #$aa-$83 ;test result
> trap_ne
1157 : d0fe > bne * ;failed not equal (non zero)
>
1159 : 68 > pla ;load status
115a : 48 > pha
> cmp_flag $ff
115b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
115d : d0fe > bne * ;failed not equal (non zero)
>
115f : 28 > plp ;restore status
>
1160 : c042 > cpy #$42
> trap_ne ;y changed
1162 : d0fe > bne * ;failed not equal (non zero)
>
1164 : e000 > cpx #0
> trap_ne ;x changed
1166 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $93,1
1168 : a042 > ldy #$42
116a : a203 > ldx #4-1
116c : 93 > db $93 ;test nop length
> if 1 = 1
116d : ca > dex
116e : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
116f : ca > dex
> trap_ne ;wrong number of bytes
1170 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$93,0
> load_flag 0
1172 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1174 : 48 > pha ;use stack to load status
1175 : a96c > lda #$ff-$93 ;precharge accu
1177 : 28 > plp
>
1178 : 93 > db $93 ;test nop integrity - flags off
1179 : ea > nop
117a : ea > nop
> tst_a $ff-$93,0
117b : 08 > php ;save flags
117c : c96c > cmp #$ff-$93 ;test result
> trap_ne
117e : d0fe > bne * ;failed not equal (non zero)
>
1180 : 68 > pla ;load status
1181 : 48 > pha
> cmp_flag 0
1182 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1184 : d0fe > bne * ;failed not equal (non zero)
>
1186 : 28 > plp ;restore status
>
> set_a $aa-$93,$ff
> load_flag $ff
1187 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1189 : 48 > pha ;use stack to load status
118a : a917 > lda #$aa-$93 ;precharge accu
118c : 28 > plp
>
118d : 93 > db $93 ;test nop integrity - flags on
118e : ea > nop
118f : ea > nop
> tst_a $aa-$93,$ff
1190 : 08 > php ;save flags
1191 : c917 > cmp #$aa-$93 ;test result
> trap_ne
1193 : d0fe > bne * ;failed not equal (non zero)
>
1195 : 68 > pla ;load status
1196 : 48 > pha
> cmp_flag $ff
1197 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1199 : d0fe > bne * ;failed not equal (non zero)
>
119b : 28 > plp ;restore status
>
119c : c042 > cpy #$42
> trap_ne ;y changed
119e : d0fe > bne * ;failed not equal (non zero)
>
11a0 : e000 > cpx #0
> trap_ne ;x changed
11a2 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $a3,1
11a4 : a042 > ldy #$42
11a6 : a203 > ldx #4-1
11a8 : a3 > db $a3 ;test nop length
> if 1 = 1
11a9 : ca > dex
11aa : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
11ab : ca > dex
> trap_ne ;wrong number of bytes
11ac : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$a3,0
> load_flag 0
11ae : a900 > lda #0 ;allow test to change I-flag (no mask)
>
11b0 : 48 > pha ;use stack to load status
11b1 : a95c > lda #$ff-$a3 ;precharge accu
11b3 : 28 > plp
>
11b4 : a3 > db $a3 ;test nop integrity - flags off
11b5 : ea > nop
11b6 : ea > nop
> tst_a $ff-$a3,0
11b7 : 08 > php ;save flags
11b8 : c95c > cmp #$ff-$a3 ;test result
> trap_ne
11ba : d0fe > bne * ;failed not equal (non zero)
>
11bc : 68 > pla ;load status
11bd : 48 > pha
> cmp_flag 0
11be : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
11c0 : d0fe > bne * ;failed not equal (non zero)
>
11c2 : 28 > plp ;restore status
>
> set_a $aa-$a3,$ff
> load_flag $ff
11c3 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
11c5 : 48 > pha ;use stack to load status
11c6 : a907 > lda #$aa-$a3 ;precharge accu
11c8 : 28 > plp
>
11c9 : a3 > db $a3 ;test nop integrity - flags on
11ca : ea > nop
11cb : ea > nop
> tst_a $aa-$a3,$ff
11cc : 08 > php ;save flags
11cd : c907 > cmp #$aa-$a3 ;test result
> trap_ne
11cf : d0fe > bne * ;failed not equal (non zero)
>
11d1 : 68 > pla ;load status
11d2 : 48 > pha
> cmp_flag $ff
11d3 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
11d5 : d0fe > bne * ;failed not equal (non zero)
>
11d7 : 28 > plp ;restore status
>
11d8 : c042 > cpy #$42
> trap_ne ;y changed
11da : d0fe > bne * ;failed not equal (non zero)
>
11dc : e000 > cpx #0
> trap_ne ;x changed
11de : d0fe > bne * ;failed not equal (non zero)
>
nop_test $b3,1
11e0 : a042 > ldy #$42
11e2 : a203 > ldx #4-1
11e4 : b3 > db $b3 ;test nop length
> if 1 = 1
11e5 : ca > dex
11e6 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
11e7 : ca > dex
> trap_ne ;wrong number of bytes
11e8 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$b3,0
> load_flag 0
11ea : a900 > lda #0 ;allow test to change I-flag (no mask)
>
11ec : 48 > pha ;use stack to load status
11ed : a94c > lda #$ff-$b3 ;precharge accu
11ef : 28 > plp
>
11f0 : b3 > db $b3 ;test nop integrity - flags off
11f1 : ea > nop
11f2 : ea > nop
> tst_a $ff-$b3,0
11f3 : 08 > php ;save flags
11f4 : c94c > cmp #$ff-$b3 ;test result
> trap_ne
11f6 : d0fe > bne * ;failed not equal (non zero)
>
11f8 : 68 > pla ;load status
11f9 : 48 > pha
> cmp_flag 0
11fa : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
11fc : d0fe > bne * ;failed not equal (non zero)
>
11fe : 28 > plp ;restore status
>
> set_a $aa-$b3,$ff
> load_flag $ff
11ff : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1201 : 48 > pha ;use stack to load status
1202 : a9f7 > lda #$aa-$b3 ;precharge accu
1204 : 28 > plp
>
1205 : b3 > db $b3 ;test nop integrity - flags on
1206 : ea > nop
1207 : ea > nop
> tst_a $aa-$b3,$ff
1208 : 08 > php ;save flags
1209 : c9f7 > cmp #$aa-$b3 ;test result
> trap_ne
120b : d0fe > bne * ;failed not equal (non zero)
>
120d : 68 > pla ;load status
120e : 48 > pha
> cmp_flag $ff
120f : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1211 : d0fe > bne * ;failed not equal (non zero)
>
1213 : 28 > plp ;restore status
>
1214 : c042 > cpy #$42
> trap_ne ;y changed
1216 : d0fe > bne * ;failed not equal (non zero)
>
1218 : e000 > cpx #0
> trap_ne ;x changed
121a : d0fe > bne * ;failed not equal (non zero)
>
nop_test $c3,1
121c : a042 > ldy #$42
121e : a203 > ldx #4-1
1220 : c3 > db $c3 ;test nop length
> if 1 = 1
1221 : ca > dex
1222 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
1223 : ca > dex
> trap_ne ;wrong number of bytes
1224 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$c3,0
> load_flag 0
1226 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1228 : 48 > pha ;use stack to load status
1229 : a93c > lda #$ff-$c3 ;precharge accu
122b : 28 > plp
>
122c : c3 > db $c3 ;test nop integrity - flags off
122d : ea > nop
122e : ea > nop
> tst_a $ff-$c3,0
122f : 08 > php ;save flags
1230 : c93c > cmp #$ff-$c3 ;test result
> trap_ne
1232 : d0fe > bne * ;failed not equal (non zero)
>
1234 : 68 > pla ;load status
1235 : 48 > pha
> cmp_flag 0
1236 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1238 : d0fe > bne * ;failed not equal (non zero)
>
123a : 28 > plp ;restore status
>
> set_a $aa-$c3,$ff
> load_flag $ff
123b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
123d : 48 > pha ;use stack to load status
123e : a9e7 > lda #$aa-$c3 ;precharge accu
1240 : 28 > plp
>
1241 : c3 > db $c3 ;test nop integrity - flags on
1242 : ea > nop
1243 : ea > nop
> tst_a $aa-$c3,$ff
1244 : 08 > php ;save flags
1245 : c9e7 > cmp #$aa-$c3 ;test result
> trap_ne
1247 : d0fe > bne * ;failed not equal (non zero)
>
1249 : 68 > pla ;load status
124a : 48 > pha
> cmp_flag $ff
124b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
124d : d0fe > bne * ;failed not equal (non zero)
>
124f : 28 > plp ;restore status
>
1250 : c042 > cpy #$42
> trap_ne ;y changed
1252 : d0fe > bne * ;failed not equal (non zero)
>
1254 : e000 > cpx #0
> trap_ne ;x changed
1256 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $d3,1
1258 : a042 > ldy #$42
125a : a203 > ldx #4-1
125c : d3 > db $d3 ;test nop length
> if 1 = 1
125d : ca > dex
125e : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
125f : ca > dex
> trap_ne ;wrong number of bytes
1260 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$d3,0
> load_flag 0
1262 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1264 : 48 > pha ;use stack to load status
1265 : a92c > lda #$ff-$d3 ;precharge accu
1267 : 28 > plp
>
1268 : d3 > db $d3 ;test nop integrity - flags off
1269 : ea > nop
126a : ea > nop
> tst_a $ff-$d3,0
126b : 08 > php ;save flags
126c : c92c > cmp #$ff-$d3 ;test result
> trap_ne
126e : d0fe > bne * ;failed not equal (non zero)
>
1270 : 68 > pla ;load status
1271 : 48 > pha
> cmp_flag 0
1272 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1274 : d0fe > bne * ;failed not equal (non zero)
>
1276 : 28 > plp ;restore status
>
> set_a $aa-$d3,$ff
> load_flag $ff
1277 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1279 : 48 > pha ;use stack to load status
127a : a9d7 > lda #$aa-$d3 ;precharge accu
127c : 28 > plp
>
127d : d3 > db $d3 ;test nop integrity - flags on
127e : ea > nop
127f : ea > nop
> tst_a $aa-$d3,$ff
1280 : 08 > php ;save flags
1281 : c9d7 > cmp #$aa-$d3 ;test result
> trap_ne
1283 : d0fe > bne * ;failed not equal (non zero)
>
1285 : 68 > pla ;load status
1286 : 48 > pha
> cmp_flag $ff
1287 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1289 : d0fe > bne * ;failed not equal (non zero)
>
128b : 28 > plp ;restore status
>
128c : c042 > cpy #$42
> trap_ne ;y changed
128e : d0fe > bne * ;failed not equal (non zero)
>
1290 : e000 > cpx #0
> trap_ne ;x changed
1292 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $e3,1
1294 : a042 > ldy #$42
1296 : a203 > ldx #4-1
1298 : e3 > db $e3 ;test nop length
> if 1 = 1
1299 : ca > dex
129a : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
129b : ca > dex
> trap_ne ;wrong number of bytes
129c : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$e3,0
> load_flag 0
129e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
12a0 : 48 > pha ;use stack to load status
12a1 : a91c > lda #$ff-$e3 ;precharge accu
12a3 : 28 > plp
>
12a4 : e3 > db $e3 ;test nop integrity - flags off
12a5 : ea > nop
12a6 : ea > nop
> tst_a $ff-$e3,0
12a7 : 08 > php ;save flags
12a8 : c91c > cmp #$ff-$e3 ;test result
> trap_ne
12aa : d0fe > bne * ;failed not equal (non zero)
>
12ac : 68 > pla ;load status
12ad : 48 > pha
> cmp_flag 0
12ae : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
12b0 : d0fe > bne * ;failed not equal (non zero)
>
12b2 : 28 > plp ;restore status
>
> set_a $aa-$e3,$ff
> load_flag $ff
12b3 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
12b5 : 48 > pha ;use stack to load status
12b6 : a9c7 > lda #$aa-$e3 ;precharge accu
12b8 : 28 > plp
>
12b9 : e3 > db $e3 ;test nop integrity - flags on
12ba : ea > nop
12bb : ea > nop
> tst_a $aa-$e3,$ff
12bc : 08 > php ;save flags
12bd : c9c7 > cmp #$aa-$e3 ;test result
> trap_ne
12bf : d0fe > bne * ;failed not equal (non zero)
>
12c1 : 68 > pla ;load status
12c2 : 48 > pha
> cmp_flag $ff
12c3 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
12c5 : d0fe > bne * ;failed not equal (non zero)
>
12c7 : 28 > plp ;restore status
>
12c8 : c042 > cpy #$42
> trap_ne ;y changed
12ca : d0fe > bne * ;failed not equal (non zero)
>
12cc : e000 > cpx #0
> trap_ne ;x changed
12ce : d0fe > bne * ;failed not equal (non zero)
>
nop_test $f3,1
12d0 : a042 > ldy #$42
12d2 : a203 > ldx #4-1
12d4 : f3 > db $f3 ;test nop length
> if 1 = 1
12d5 : ca > dex
12d6 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
12d7 : ca > dex
> trap_ne ;wrong number of bytes
12d8 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$f3,0
> load_flag 0
12da : a900 > lda #0 ;allow test to change I-flag (no mask)
>
12dc : 48 > pha ;use stack to load status
12dd : a90c > lda #$ff-$f3 ;precharge accu
12df : 28 > plp
>
12e0 : f3 > db $f3 ;test nop integrity - flags off
12e1 : ea > nop
12e2 : ea > nop
> tst_a $ff-$f3,0
12e3 : 08 > php ;save flags
12e4 : c90c > cmp #$ff-$f3 ;test result
> trap_ne
12e6 : d0fe > bne * ;failed not equal (non zero)
>
12e8 : 68 > pla ;load status
12e9 : 48 > pha
> cmp_flag 0
12ea : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
12ec : d0fe > bne * ;failed not equal (non zero)
>
12ee : 28 > plp ;restore status
>
> set_a $aa-$f3,$ff
> load_flag $ff
12ef : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
12f1 : 48 > pha ;use stack to load status
12f2 : a9b7 > lda #$aa-$f3 ;precharge accu
12f4 : 28 > plp
>
12f5 : f3 > db $f3 ;test nop integrity - flags on
12f6 : ea > nop
12f7 : ea > nop
> tst_a $aa-$f3,$ff
12f8 : 08 > php ;save flags
12f9 : c9b7 > cmp #$aa-$f3 ;test result
> trap_ne
12fb : d0fe > bne * ;failed not equal (non zero)
>
12fd : 68 > pla ;load status
12fe : 48 > pha
> cmp_flag $ff
12ff : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1301 : d0fe > bne * ;failed not equal (non zero)
>
1303 : 28 > plp ;restore status
>
1304 : c042 > cpy #$42
> trap_ne ;y changed
1306 : d0fe > bne * ;failed not equal (non zero)
>
1308 : e000 > cpx #0
> trap_ne ;x changed
130a : d0fe > bne * ;failed not equal (non zero)
>
nop_test $0b,1
130c : a042 > ldy #$42
130e : a203 > ldx #4-1
1310 : 0b > db $0b ;test nop length
> if 1 = 1
1311 : ca > dex
1312 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
1313 : ca > dex
> trap_ne ;wrong number of bytes
1314 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$0b,0
> load_flag 0
1316 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1318 : 48 > pha ;use stack to load status
1319 : a9f4 > lda #$ff-$0b ;precharge accu
131b : 28 > plp
>
131c : 0b > db $0b ;test nop integrity - flags off
131d : ea > nop
131e : ea > nop
> tst_a $ff-$0b,0
131f : 08 > php ;save flags
1320 : c9f4 > cmp #$ff-$0b ;test result
> trap_ne
1322 : d0fe > bne * ;failed not equal (non zero)
>
1324 : 68 > pla ;load status
1325 : 48 > pha
> cmp_flag 0
1326 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1328 : d0fe > bne * ;failed not equal (non zero)
>
132a : 28 > plp ;restore status
>
> set_a $aa-$0b,$ff
> load_flag $ff
132b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
132d : 48 > pha ;use stack to load status
132e : a99f > lda #$aa-$0b ;precharge accu
1330 : 28 > plp
>
1331 : 0b > db $0b ;test nop integrity - flags on
1332 : ea > nop
1333 : ea > nop
> tst_a $aa-$0b,$ff
1334 : 08 > php ;save flags
1335 : c99f > cmp #$aa-$0b ;test result
> trap_ne
1337 : d0fe > bne * ;failed not equal (non zero)
>
1339 : 68 > pla ;load status
133a : 48 > pha
> cmp_flag $ff
133b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
133d : d0fe > bne * ;failed not equal (non zero)
>
133f : 28 > plp ;restore status
>
1340 : c042 > cpy #$42
> trap_ne ;y changed
1342 : d0fe > bne * ;failed not equal (non zero)
>
1344 : e000 > cpx #0
> trap_ne ;x changed
1346 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $1b,1
1348 : a042 > ldy #$42
134a : a203 > ldx #4-1
134c : 1b > db $1b ;test nop length
> if 1 = 1
134d : ca > dex
134e : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
134f : ca > dex
> trap_ne ;wrong number of bytes
1350 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$1b,0
> load_flag 0
1352 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1354 : 48 > pha ;use stack to load status
1355 : a9e4 > lda #$ff-$1b ;precharge accu
1357 : 28 > plp
>
1358 : 1b > db $1b ;test nop integrity - flags off
1359 : ea > nop
135a : ea > nop
> tst_a $ff-$1b,0
135b : 08 > php ;save flags
135c : c9e4 > cmp #$ff-$1b ;test result
> trap_ne
135e : d0fe > bne * ;failed not equal (non zero)
>
1360 : 68 > pla ;load status
1361 : 48 > pha
> cmp_flag 0
1362 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1364 : d0fe > bne * ;failed not equal (non zero)
>
1366 : 28 > plp ;restore status
>
> set_a $aa-$1b,$ff
> load_flag $ff
1367 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1369 : 48 > pha ;use stack to load status
136a : a98f > lda #$aa-$1b ;precharge accu
136c : 28 > plp
>
136d : 1b > db $1b ;test nop integrity - flags on
136e : ea > nop
136f : ea > nop
> tst_a $aa-$1b,$ff
1370 : 08 > php ;save flags
1371 : c98f > cmp #$aa-$1b ;test result
> trap_ne
1373 : d0fe > bne * ;failed not equal (non zero)
>
1375 : 68 > pla ;load status
1376 : 48 > pha
> cmp_flag $ff
1377 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1379 : d0fe > bne * ;failed not equal (non zero)
>
137b : 28 > plp ;restore status
>
137c : c042 > cpy #$42
> trap_ne ;y changed
137e : d0fe > bne * ;failed not equal (non zero)
>
1380 : e000 > cpx #0
> trap_ne ;x changed
1382 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $2b,1
1384 : a042 > ldy #$42
1386 : a203 > ldx #4-1
1388 : 2b > db $2b ;test nop length
> if 1 = 1
1389 : ca > dex
138a : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
138b : ca > dex
> trap_ne ;wrong number of bytes
138c : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$2b,0
> load_flag 0
138e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1390 : 48 > pha ;use stack to load status
1391 : a9d4 > lda #$ff-$2b ;precharge accu
1393 : 28 > plp
>
1394 : 2b > db $2b ;test nop integrity - flags off
1395 : ea > nop
1396 : ea > nop
> tst_a $ff-$2b,0
1397 : 08 > php ;save flags
1398 : c9d4 > cmp #$ff-$2b ;test result
> trap_ne
139a : d0fe > bne * ;failed not equal (non zero)
>
139c : 68 > pla ;load status
139d : 48 > pha
> cmp_flag 0
139e : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
13a0 : d0fe > bne * ;failed not equal (non zero)
>
13a2 : 28 > plp ;restore status
>
> set_a $aa-$2b,$ff
> load_flag $ff
13a3 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
13a5 : 48 > pha ;use stack to load status
13a6 : a97f > lda #$aa-$2b ;precharge accu
13a8 : 28 > plp
>
13a9 : 2b > db $2b ;test nop integrity - flags on
13aa : ea > nop
13ab : ea > nop
> tst_a $aa-$2b,$ff
13ac : 08 > php ;save flags
13ad : c97f > cmp #$aa-$2b ;test result
> trap_ne
13af : d0fe > bne * ;failed not equal (non zero)
>
13b1 : 68 > pla ;load status
13b2 : 48 > pha
> cmp_flag $ff
13b3 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
13b5 : d0fe > bne * ;failed not equal (non zero)
>
13b7 : 28 > plp ;restore status
>
13b8 : c042 > cpy #$42
> trap_ne ;y changed
13ba : d0fe > bne * ;failed not equal (non zero)
>
13bc : e000 > cpx #0
> trap_ne ;x changed
13be : d0fe > bne * ;failed not equal (non zero)
>
nop_test $3b,1
13c0 : a042 > ldy #$42
13c2 : a203 > ldx #4-1
13c4 : 3b > db $3b ;test nop length
> if 1 = 1
13c5 : ca > dex
13c6 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
13c7 : ca > dex
> trap_ne ;wrong number of bytes
13c8 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$3b,0
> load_flag 0
13ca : a900 > lda #0 ;allow test to change I-flag (no mask)
>
13cc : 48 > pha ;use stack to load status
13cd : a9c4 > lda #$ff-$3b ;precharge accu
13cf : 28 > plp
>
13d0 : 3b > db $3b ;test nop integrity - flags off
13d1 : ea > nop
13d2 : ea > nop
> tst_a $ff-$3b,0
13d3 : 08 > php ;save flags
13d4 : c9c4 > cmp #$ff-$3b ;test result
> trap_ne
13d6 : d0fe > bne * ;failed not equal (non zero)
>
13d8 : 68 > pla ;load status
13d9 : 48 > pha
> cmp_flag 0
13da : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
13dc : d0fe > bne * ;failed not equal (non zero)
>
13de : 28 > plp ;restore status
>
> set_a $aa-$3b,$ff
> load_flag $ff
13df : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
13e1 : 48 > pha ;use stack to load status
13e2 : a96f > lda #$aa-$3b ;precharge accu
13e4 : 28 > plp
>
13e5 : 3b > db $3b ;test nop integrity - flags on
13e6 : ea > nop
13e7 : ea > nop
> tst_a $aa-$3b,$ff
13e8 : 08 > php ;save flags
13e9 : c96f > cmp #$aa-$3b ;test result
> trap_ne
13eb : d0fe > bne * ;failed not equal (non zero)
>
13ed : 68 > pla ;load status
13ee : 48 > pha
> cmp_flag $ff
13ef : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
13f1 : d0fe > bne * ;failed not equal (non zero)
>
13f3 : 28 > plp ;restore status
>
13f4 : c042 > cpy #$42
> trap_ne ;y changed
13f6 : d0fe > bne * ;failed not equal (non zero)
>
13f8 : e000 > cpx #0
> trap_ne ;x changed
13fa : d0fe > bne * ;failed not equal (non zero)
>
nop_test $4b,1
13fc : a042 > ldy #$42
13fe : a203 > ldx #4-1
1400 : 4b > db $4b ;test nop length
> if 1 = 1
1401 : ca > dex
1402 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
1403 : ca > dex
> trap_ne ;wrong number of bytes
1404 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$4b,0
> load_flag 0
1406 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1408 : 48 > pha ;use stack to load status
1409 : a9b4 > lda #$ff-$4b ;precharge accu
140b : 28 > plp
>
140c : 4b > db $4b ;test nop integrity - flags off
140d : ea > nop
140e : ea > nop
> tst_a $ff-$4b,0
140f : 08 > php ;save flags
1410 : c9b4 > cmp #$ff-$4b ;test result
> trap_ne
1412 : d0fe > bne * ;failed not equal (non zero)
>
1414 : 68 > pla ;load status
1415 : 48 > pha
> cmp_flag 0
1416 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1418 : d0fe > bne * ;failed not equal (non zero)
>
141a : 28 > plp ;restore status
>
> set_a $aa-$4b,$ff
> load_flag $ff
141b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
141d : 48 > pha ;use stack to load status
141e : a95f > lda #$aa-$4b ;precharge accu
1420 : 28 > plp
>
1421 : 4b > db $4b ;test nop integrity - flags on
1422 : ea > nop
1423 : ea > nop
> tst_a $aa-$4b,$ff
1424 : 08 > php ;save flags
1425 : c95f > cmp #$aa-$4b ;test result
> trap_ne
1427 : d0fe > bne * ;failed not equal (non zero)
>
1429 : 68 > pla ;load status
142a : 48 > pha
> cmp_flag $ff
142b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
142d : d0fe > bne * ;failed not equal (non zero)
>
142f : 28 > plp ;restore status
>
1430 : c042 > cpy #$42
> trap_ne ;y changed
1432 : d0fe > bne * ;failed not equal (non zero)
>
1434 : e000 > cpx #0
> trap_ne ;x changed
1436 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $5b,1
1438 : a042 > ldy #$42
143a : a203 > ldx #4-1
143c : 5b > db $5b ;test nop length
> if 1 = 1
143d : ca > dex
143e : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
143f : ca > dex
> trap_ne ;wrong number of bytes
1440 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$5b,0
> load_flag 0
1442 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1444 : 48 > pha ;use stack to load status
1445 : a9a4 > lda #$ff-$5b ;precharge accu
1447 : 28 > plp
>
1448 : 5b > db $5b ;test nop integrity - flags off
1449 : ea > nop
144a : ea > nop
> tst_a $ff-$5b,0
144b : 08 > php ;save flags
144c : c9a4 > cmp #$ff-$5b ;test result
> trap_ne
144e : d0fe > bne * ;failed not equal (non zero)
>
1450 : 68 > pla ;load status
1451 : 48 > pha
> cmp_flag 0
1452 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1454 : d0fe > bne * ;failed not equal (non zero)
>
1456 : 28 > plp ;restore status
>
> set_a $aa-$5b,$ff
> load_flag $ff
1457 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1459 : 48 > pha ;use stack to load status
145a : a94f > lda #$aa-$5b ;precharge accu
145c : 28 > plp
>
145d : 5b > db $5b ;test nop integrity - flags on
145e : ea > nop
145f : ea > nop
> tst_a $aa-$5b,$ff
1460 : 08 > php ;save flags
1461 : c94f > cmp #$aa-$5b ;test result
> trap_ne
1463 : d0fe > bne * ;failed not equal (non zero)
>
1465 : 68 > pla ;load status
1466 : 48 > pha
> cmp_flag $ff
1467 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1469 : d0fe > bne * ;failed not equal (non zero)
>
146b : 28 > plp ;restore status
>
146c : c042 > cpy #$42
> trap_ne ;y changed
146e : d0fe > bne * ;failed not equal (non zero)
>
1470 : e000 > cpx #0
> trap_ne ;x changed
1472 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $6b,1
1474 : a042 > ldy #$42
1476 : a203 > ldx #4-1
1478 : 6b > db $6b ;test nop length
> if 1 = 1
1479 : ca > dex
147a : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
147b : ca > dex
> trap_ne ;wrong number of bytes
147c : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$6b,0
> load_flag 0
147e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1480 : 48 > pha ;use stack to load status
1481 : a994 > lda #$ff-$6b ;precharge accu
1483 : 28 > plp
>
1484 : 6b > db $6b ;test nop integrity - flags off
1485 : ea > nop
1486 : ea > nop
> tst_a $ff-$6b,0
1487 : 08 > php ;save flags
1488 : c994 > cmp #$ff-$6b ;test result
> trap_ne
148a : d0fe > bne * ;failed not equal (non zero)
>
148c : 68 > pla ;load status
148d : 48 > pha
> cmp_flag 0
148e : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1490 : d0fe > bne * ;failed not equal (non zero)
>
1492 : 28 > plp ;restore status
>
> set_a $aa-$6b,$ff
> load_flag $ff
1493 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1495 : 48 > pha ;use stack to load status
1496 : a93f > lda #$aa-$6b ;precharge accu
1498 : 28 > plp
>
1499 : 6b > db $6b ;test nop integrity - flags on
149a : ea > nop
149b : ea > nop
> tst_a $aa-$6b,$ff
149c : 08 > php ;save flags
149d : c93f > cmp #$aa-$6b ;test result
> trap_ne
149f : d0fe > bne * ;failed not equal (non zero)
>
14a1 : 68 > pla ;load status
14a2 : 48 > pha
> cmp_flag $ff
14a3 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
14a5 : d0fe > bne * ;failed not equal (non zero)
>
14a7 : 28 > plp ;restore status
>
14a8 : c042 > cpy #$42
> trap_ne ;y changed
14aa : d0fe > bne * ;failed not equal (non zero)
>
14ac : e000 > cpx #0
> trap_ne ;x changed
14ae : d0fe > bne * ;failed not equal (non zero)
>
nop_test $7b,1
14b0 : a042 > ldy #$42
14b2 : a203 > ldx #4-1
14b4 : 7b > db $7b ;test nop length
> if 1 = 1
14b5 : ca > dex
14b6 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
14b7 : ca > dex
> trap_ne ;wrong number of bytes
14b8 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$7b,0
> load_flag 0
14ba : a900 > lda #0 ;allow test to change I-flag (no mask)
>
14bc : 48 > pha ;use stack to load status
14bd : a984 > lda #$ff-$7b ;precharge accu
14bf : 28 > plp
>
14c0 : 7b > db $7b ;test nop integrity - flags off
14c1 : ea > nop
14c2 : ea > nop
> tst_a $ff-$7b,0
14c3 : 08 > php ;save flags
14c4 : c984 > cmp #$ff-$7b ;test result
> trap_ne
14c6 : d0fe > bne * ;failed not equal (non zero)
>
14c8 : 68 > pla ;load status
14c9 : 48 > pha
> cmp_flag 0
14ca : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
14cc : d0fe > bne * ;failed not equal (non zero)
>
14ce : 28 > plp ;restore status
>
> set_a $aa-$7b,$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 : a92f > lda #$aa-$7b ;precharge accu
14d4 : 28 > plp
>
14d5 : 7b > db $7b ;test nop integrity - flags on
14d6 : ea > nop
14d7 : ea > nop
> tst_a $aa-$7b,$ff
14d8 : 08 > php ;save flags
14d9 : c92f > cmp #$aa-$7b ;test result
> trap_ne
14db : d0fe > bne * ;failed not equal (non zero)
>
14dd : 68 > pla ;load status
14de : 48 > pha
> cmp_flag $ff
14df : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
14e1 : d0fe > bne * ;failed not equal (non zero)
>
14e3 : 28 > plp ;restore status
>
14e4 : c042 > cpy #$42
> trap_ne ;y changed
14e6 : d0fe > bne * ;failed not equal (non zero)
>
14e8 : e000 > cpx #0
> trap_ne ;x changed
14ea : d0fe > bne * ;failed not equal (non zero)
>
nop_test $8b,1
14ec : a042 > ldy #$42
14ee : a203 > ldx #4-1
14f0 : 8b > db $8b ;test nop length
> if 1 = 1
14f1 : ca > dex
14f2 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
14f3 : ca > dex
> trap_ne ;wrong number of bytes
14f4 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$8b,0
> load_flag 0
14f6 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
14f8 : 48 > pha ;use stack to load status
14f9 : a974 > lda #$ff-$8b ;precharge accu
14fb : 28 > plp
>
14fc : 8b > db $8b ;test nop integrity - flags off
14fd : ea > nop
14fe : ea > nop
> tst_a $ff-$8b,0
14ff : 08 > php ;save flags
1500 : c974 > cmp #$ff-$8b ;test result
> trap_ne
1502 : d0fe > bne * ;failed not equal (non zero)
>
1504 : 68 > pla ;load status
1505 : 48 > pha
> cmp_flag 0
1506 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1508 : d0fe > bne * ;failed not equal (non zero)
>
150a : 28 > plp ;restore status
>
> set_a $aa-$8b,$ff
> load_flag $ff
150b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
150d : 48 > pha ;use stack to load status
150e : a91f > lda #$aa-$8b ;precharge accu
1510 : 28 > plp
>
1511 : 8b > db $8b ;test nop integrity - flags on
1512 : ea > nop
1513 : ea > nop
> tst_a $aa-$8b,$ff
1514 : 08 > php ;save flags
1515 : c91f > cmp #$aa-$8b ;test result
> trap_ne
1517 : d0fe > bne * ;failed not equal (non zero)
>
1519 : 68 > pla ;load status
151a : 48 > pha
> cmp_flag $ff
151b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
151d : d0fe > bne * ;failed not equal (non zero)
>
151f : 28 > plp ;restore status
>
1520 : c042 > cpy #$42
> trap_ne ;y changed
1522 : d0fe > bne * ;failed not equal (non zero)
>
1524 : e000 > cpx #0
> trap_ne ;x changed
1526 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $9b,1
1528 : a042 > ldy #$42
152a : a203 > ldx #4-1
152c : 9b > db $9b ;test nop length
> if 1 = 1
152d : ca > dex
152e : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
152f : ca > dex
> trap_ne ;wrong number of bytes
1530 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$9b,0
> load_flag 0
1532 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1534 : 48 > pha ;use stack to load status
1535 : a964 > lda #$ff-$9b ;precharge accu
1537 : 28 > plp
>
1538 : 9b > db $9b ;test nop integrity - flags off
1539 : ea > nop
153a : ea > nop
> tst_a $ff-$9b,0
153b : 08 > php ;save flags
153c : c964 > cmp #$ff-$9b ;test result
> trap_ne
153e : d0fe > bne * ;failed not equal (non zero)
>
1540 : 68 > pla ;load status
1541 : 48 > pha
> cmp_flag 0
1542 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1544 : d0fe > bne * ;failed not equal (non zero)
>
1546 : 28 > plp ;restore status
>
> set_a $aa-$9b,$ff
> load_flag $ff
1547 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1549 : 48 > pha ;use stack to load status
154a : a90f > lda #$aa-$9b ;precharge accu
154c : 28 > plp
>
154d : 9b > db $9b ;test nop integrity - flags on
154e : ea > nop
154f : ea > nop
> tst_a $aa-$9b,$ff
1550 : 08 > php ;save flags
1551 : c90f > cmp #$aa-$9b ;test result
> trap_ne
1553 : d0fe > bne * ;failed not equal (non zero)
>
1555 : 68 > pla ;load status
1556 : 48 > pha
> cmp_flag $ff
1557 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1559 : d0fe > bne * ;failed not equal (non zero)
>
155b : 28 > plp ;restore status
>
155c : c042 > cpy #$42
> trap_ne ;y changed
155e : d0fe > bne * ;failed not equal (non zero)
>
1560 : e000 > cpx #0
> trap_ne ;x changed
1562 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $ab,1
1564 : a042 > ldy #$42
1566 : a203 > ldx #4-1
1568 : ab > db $ab ;test nop length
> if 1 = 1
1569 : ca > dex
156a : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
156b : ca > dex
> trap_ne ;wrong number of bytes
156c : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$ab,0
> load_flag 0
156e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1570 : 48 > pha ;use stack to load status
1571 : a954 > lda #$ff-$ab ;precharge accu
1573 : 28 > plp
>
1574 : ab > db $ab ;test nop integrity - flags off
1575 : ea > nop
1576 : ea > nop
> tst_a $ff-$ab,0
1577 : 08 > php ;save flags
1578 : c954 > cmp #$ff-$ab ;test result
> trap_ne
157a : d0fe > bne * ;failed not equal (non zero)
>
157c : 68 > pla ;load status
157d : 48 > pha
> cmp_flag 0
157e : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1580 : d0fe > bne * ;failed not equal (non zero)
>
1582 : 28 > plp ;restore status
>
> set_a $aa-$ab,$ff
> load_flag $ff
1583 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1585 : 48 > pha ;use stack to load status
1586 : a9ff > lda #$aa-$ab ;precharge accu
1588 : 28 > plp
>
1589 : ab > db $ab ;test nop integrity - flags on
158a : ea > nop
158b : ea > nop
> tst_a $aa-$ab,$ff
158c : 08 > php ;save flags
158d : c9ff > cmp #$aa-$ab ;test result
> trap_ne
158f : d0fe > bne * ;failed not equal (non zero)
>
1591 : 68 > pla ;load status
1592 : 48 > pha
> cmp_flag $ff
1593 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1595 : d0fe > bne * ;failed not equal (non zero)
>
1597 : 28 > plp ;restore status
>
1598 : c042 > cpy #$42
> trap_ne ;y changed
159a : d0fe > bne * ;failed not equal (non zero)
>
159c : e000 > cpx #0
> trap_ne ;x changed
159e : d0fe > bne * ;failed not equal (non zero)
>
nop_test $bb,1
15a0 : a042 > ldy #$42
15a2 : a203 > ldx #4-1
15a4 : bb > db $bb ;test nop length
> if 1 = 1
15a5 : ca > dex
15a6 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
15a7 : ca > dex
> trap_ne ;wrong number of bytes
15a8 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$bb,0
> load_flag 0
15aa : a900 > lda #0 ;allow test to change I-flag (no mask)
>
15ac : 48 > pha ;use stack to load status
15ad : a944 > lda #$ff-$bb ;precharge accu
15af : 28 > plp
>
15b0 : bb > db $bb ;test nop integrity - flags off
15b1 : ea > nop
15b2 : ea > nop
> tst_a $ff-$bb,0
15b3 : 08 > php ;save flags
15b4 : c944 > cmp #$ff-$bb ;test result
> trap_ne
15b6 : d0fe > bne * ;failed not equal (non zero)
>
15b8 : 68 > pla ;load status
15b9 : 48 > pha
> cmp_flag 0
15ba : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
15bc : d0fe > bne * ;failed not equal (non zero)
>
15be : 28 > plp ;restore status
>
> set_a $aa-$bb,$ff
> load_flag $ff
15bf : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
15c1 : 48 > pha ;use stack to load status
15c2 : a9ef > lda #$aa-$bb ;precharge accu
15c4 : 28 > plp
>
15c5 : bb > db $bb ;test nop integrity - flags on
15c6 : ea > nop
15c7 : ea > nop
> tst_a $aa-$bb,$ff
15c8 : 08 > php ;save flags
15c9 : c9ef > cmp #$aa-$bb ;test result
> trap_ne
15cb : d0fe > bne * ;failed not equal (non zero)
>
15cd : 68 > pla ;load status
15ce : 48 > pha
> cmp_flag $ff
15cf : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
15d1 : d0fe > bne * ;failed not equal (non zero)
>
15d3 : 28 > plp ;restore status
>
15d4 : c042 > cpy #$42
> trap_ne ;y changed
15d6 : d0fe > bne * ;failed not equal (non zero)
>
15d8 : e000 > cpx #0
> trap_ne ;x changed
15da : d0fe > bne * ;failed not equal (non zero)
>
nop_test $eb,1
15dc : a042 > ldy #$42
15de : a203 > ldx #4-1
15e0 : eb > db $eb ;test nop length
> if 1 = 1
15e1 : ca > dex
15e2 : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
15e3 : ca > dex
> trap_ne ;wrong number of bytes
15e4 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$eb,0
> load_flag 0
15e6 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
15e8 : 48 > pha ;use stack to load status
15e9 : a914 > lda #$ff-$eb ;precharge accu
15eb : 28 > plp
>
15ec : eb > db $eb ;test nop integrity - flags off
15ed : ea > nop
15ee : ea > nop
> tst_a $ff-$eb,0
15ef : 08 > php ;save flags
15f0 : c914 > cmp #$ff-$eb ;test result
> trap_ne
15f2 : d0fe > bne * ;failed not equal (non zero)
>
15f4 : 68 > pla ;load status
15f5 : 48 > pha
> cmp_flag 0
15f6 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
15f8 : d0fe > bne * ;failed not equal (non zero)
>
15fa : 28 > plp ;restore status
>
> set_a $aa-$eb,$ff
> load_flag $ff
15fb : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
15fd : 48 > pha ;use stack to load status
15fe : a9bf > lda #$aa-$eb ;precharge accu
1600 : 28 > plp
>
1601 : eb > db $eb ;test nop integrity - flags on
1602 : ea > nop
1603 : ea > nop
> tst_a $aa-$eb,$ff
1604 : 08 > php ;save flags
1605 : c9bf > cmp #$aa-$eb ;test result
> trap_ne
1607 : d0fe > bne * ;failed not equal (non zero)
>
1609 : 68 > pla ;load status
160a : 48 > pha
> cmp_flag $ff
160b : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
160d : d0fe > bne * ;failed not equal (non zero)
>
160f : 28 > plp ;restore status
>
1610 : c042 > cpy #$42
> trap_ne ;y changed
1612 : d0fe > bne * ;failed not equal (non zero)
>
1614 : e000 > cpx #0
> trap_ne ;x changed
1616 : d0fe > bne * ;failed not equal (non zero)
>
nop_test $fb,1
1618 : a042 > ldy #$42
161a : a203 > ldx #4-1
161c : fb > db $fb ;test nop length
> if 1 = 1
161d : ca > dex
161e : ca > dex
> endif
> if 1 = 2
> iny
> dex
> endif
> if 1 = 3
> iny
> iny
> endif
161f : ca > dex
> trap_ne ;wrong number of bytes
1620 : d0fe > bne * ;failed not equal (non zero)
>
> set_a $ff-$fb,0
> load_flag 0
1622 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1624 : 48 > pha ;use stack to load status
1625 : a904 > lda #$ff-$fb ;precharge accu
1627 : 28 > plp
>
1628 : fb > db $fb ;test nop integrity - flags off
1629 : ea > nop
162a : ea > nop
> tst_a $ff-$fb,0
162b : 08 > php ;save flags
162c : c904 > cmp #$ff-$fb ;test result
> trap_ne
162e : d0fe > bne * ;failed not equal (non zero)
>
1630 : 68 > pla ;load status
1631 : 48 > pha
> cmp_flag 0
1632 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1634 : d0fe > bne * ;failed not equal (non zero)
>
1636 : 28 > plp ;restore status
>
> set_a $aa-$fb,$ff
> load_flag $ff
1637 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1639 : 48 > pha ;use stack to load status
163a : a9af > lda #$aa-$fb ;precharge accu
163c : 28 > plp
>
163d : fb > db $fb ;test nop integrity - flags on
163e : ea > nop
163f : ea > nop
> tst_a $aa-$fb,$ff
1640 : 08 > php ;save flags
1641 : c9af > cmp #$aa-$fb ;test result
> trap_ne
1643 : d0fe > bne * ;failed not equal (non zero)
>
1645 : 68 > pla ;load status
1646 : 48 > pha
> cmp_flag $ff
1647 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1649 : d0fe > bne * ;failed not equal (non zero)
>
164b : 28 > plp ;restore status
>
164c : c042 > cpy #$42
> trap_ne ;y changed
164e : d0fe > bne * ;failed not equal (non zero)
>
1650 : e000 > cpx #0
> trap_ne ;x changed
1652 : d0fe > bne * ;failed not equal (non zero)
>
if rkwl_wdc_op = 0 ;NOPs not available on Rockwell & WDC 65C02
nop_test $07,1
nop_test $17,1
nop_test $27,1
nop_test $37,1
nop_test $47,1
nop_test $57,1
nop_test $67,1
nop_test $77,1
nop_test $87,1
nop_test $97,1
nop_test $a7,1
nop_test $b7,1
nop_test $c7,1
nop_test $d7,1
nop_test $e7,1
nop_test $f7,1
nop_test $0f,1
nop_test $1f,1
nop_test $2f,1
nop_test $3f,1
nop_test $4f,1
nop_test $5f,1
nop_test $6f,1
nop_test $7f,1
nop_test $8f,1
nop_test $9f,1
nop_test $af,1
nop_test $bf,1
nop_test $cf,1
nop_test $df,1
nop_test $ef,1
nop_test $ff,1
endif
if wdc_op = 0 ;NOPs not available on WDC 65C02 (WAI, STP)
nop_test $cb,1
nop_test $db,1
endif
next_test
1654 : ad0202 > lda test_case ;previous test
1657 : c908 > cmp #test_num
> trap_ne ;test is out of sequence
1659 : d0fe > bne * ;failed not equal (non zero)
>
0009 = >test_num = test_num + 1
165b : a909 > lda #test_num ;*** next tests' number
165d : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
endif
; jump indirect (test page cross bug is fixed)
1660 : a203 ldx #3 ;prepare table
1662 : bd8b26 ji1 lda ji_adr,x
1665 : 9dfd02 sta ji_tab,x
1668 : ca dex
1669 : 10f7 bpl ji1
166b : a928 lda #hi(ji_px) ;high address if page cross bug
166d : 8d0002 sta pg_x
set_stat 0
> load_flag 0
1670 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1672 : 48 > pha ;use stack to load status
1673 : 28 > plp
1674 : a949 lda #'I'
1676 : a24e ldx #'N'
1678 : a044 ldy #'D' ;N=0, V=0, Z=0, C=0
167a : 6cfd02 jmp (ji_tab)
167d : ea nop
trap_ne ;runover protection
167e : d0fe > bne * ;failed not equal (non zero)
1680 : 88 dey
1681 : 88 dey
1682 : 08 ji_ret php ;either SP or Y count will fail, if we do not hit
1683 : 88 dey
1684 : 88 dey
1685 : 88 dey
1686 : 28 plp
trap_eq ;returned flags OK?
1687 : f0fe > beq * ;failed equal (zero)
trap_pl
1689 : 10fe > bpl * ;failed plus (bit 7 clear)
trap_cc
168b : 90fe > bcc * ;failed carry clear
trap_vc
168d : 50fe > bvc * ;failed overflow clear
168f : c9e3 cmp #('I'^$aa) ;returned registers OK?
trap_ne
1691 : d0fe > bne * ;failed not equal (non zero)
1693 : e04f cpx #('N'+1)
trap_ne
1695 : d0fe > bne * ;failed not equal (non zero)
1697 : c03e cpy #('D'-6)
trap_ne
1699 : d0fe > bne * ;failed not equal (non zero)
169b : ba tsx ;SP check
169c : e0ff cpx #$ff
trap_ne
169e : d0fe > bne * ;failed not equal (non zero)
next_test
16a0 : ad0202 > lda test_case ;previous test
16a3 : c909 > cmp #test_num
> trap_ne ;test is out of sequence
16a5 : d0fe > bne * ;failed not equal (non zero)
>
000a = >test_num = test_num + 1
16a7 : a90a > lda #test_num ;*** next tests' number
16a9 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
; jump indexed indirect
16ac : a20b ldx #11 ;prepare table
16ae : bdc726 jxi1 lda jxi_adr,x
16b1 : 9df902 sta jxi_tab,x
16b4 : ca dex
16b5 : 10f7 bpl jxi1
16b7 : a927 lda #hi(jxi_px) ;high address if page cross bug
16b9 : 8d0002 sta pg_x
set_stat 0
> load_flag 0
16bc : a900 > lda #0 ;allow test to change I-flag (no mask)
>
16be : 48 > pha ;use stack to load status
16bf : 28 > plp
16c0 : a958 lda #'X'
16c2 : a204 ldx #4
16c4 : a049 ldy #'I' ;N=0, V=0, Z=0, C=0
16c6 : 7cf902 jmp (jxi_tab,x)
16c9 : ea nop
trap_ne ;runover protection
16ca : d0fe > bne * ;failed not equal (non zero)
16cc : 88 dey
16cd : 88 dey
16ce : 08 jxi_ret php ;either SP or Y count will fail, if we do not hit
16cf : 88 dey
16d0 : 88 dey
16d1 : 88 dey
16d2 : 28 plp
trap_eq ;returned flags OK?
16d3 : f0fe > beq * ;failed equal (zero)
trap_pl
16d5 : 10fe > bpl * ;failed plus (bit 7 clear)
trap_cc
16d7 : 90fe > bcc * ;failed carry clear
trap_vc
16d9 : 50fe > bvc * ;failed overflow clear
16db : c9f2 cmp #('X'^$aa) ;returned registers OK?
trap_ne
16dd : d0fe > bne * ;failed not equal (non zero)
16df : e006 cpx #6
trap_ne
16e1 : d0fe > bne * ;failed not equal (non zero)
16e3 : c043 cpy #('I'-6)
trap_ne
16e5 : d0fe > bne * ;failed not equal (non zero)
16e7 : ba tsx ;SP check
16e8 : e0ff cpx #$ff
trap_ne
16ea : d0fe > bne * ;failed not equal (non zero)
16ec : a908 lda #lo(jxp_ok) ;test with index causing a page cross
16ee : 8d0003 sta jxp_tab
16f1 : a917 lda #hi(jxp_ok)
16f3 : 8d0103 sta jxp_tab+1
16f6 : a905 lda #lo(jxp_px)
16f8 : 8d0002 sta pg_x
16fb : a917 lda #hi(jxp_px)
16fd : 8d0102 sta pg_x+1
1700 : a2ff ldx #$ff
1702 : 7c0102 jmp (jxp_tab-$ff,x)
1705 : jxp_px
trap ;page cross by index to wrong page
1705 : 4c0517 > jmp * ;failed anyway
1708 : jxp_ok
next_test
1708 : ad0202 > lda test_case ;previous test
170b : c90a > cmp #test_num
> trap_ne ;test is out of sequence
170d : d0fe > bne * ;failed not equal (non zero)
>
000b = >test_num = test_num + 1
170f : a90b > lda #test_num ;*** next tests' number
1711 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
if ROM_vectors = 1
; test BRK clears decimal mode
load_flag 0 ;with interrupts enabled if allowed!
1714 : a900 > lda #0 ;allow test to change I-flag (no mask)
1716 : 48 pha
1717 : a942 lda #'B'
1719 : a252 ldx #'R'
171b : a04b ldy #'K'
171d : 28 plp ;N=0, V=0, Z=0, C=0
171e : 00 brk
171f : 88 dey ;should not be executed
1720 : brk_ret0 ;address of break return
1720 : 08 php ;either SP or Y count will fail, if we do not hit
1721 : 88 dey
1722 : 88 dey
1723 : 88 dey
1724 : c9e8 cmp #'B'^$aa ;returned registers OK?
;the IRQ vector was never executed if A & X stay unmodified
trap_ne
1726 : d0fe > bne * ;failed not equal (non zero)
1728 : e053 cpx #'R'+1
trap_ne
172a : d0fe > bne * ;failed not equal (non zero)
172c : c045 cpy #'K'-6
trap_ne
172e : d0fe > bne * ;failed not equal (non zero)
1730 : 68 pla ;returned flags OK (unchanged)?
cmp_flag 0
1731 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
trap_ne
1733 : d0fe > bne * ;failed not equal (non zero)
1735 : ba tsx ;sp?
1736 : e0ff cpx #$ff
trap_ne
1738 : d0fe > bne * ;failed not equal (non zero)
;pass 2
load_flag $ff ;with interrupts disabled if allowed!
173a : a9ff > lda #$ff ;allow test to change I-flag (no mask)
173c : 48 pha
173d : a9bd lda #$ff-'B'
173f : a2ad ldx #$ff-'R'
1741 : a0b4 ldy #$ff-'K'
1743 : 28 plp ;N=1, V=1, Z=1, C=1
1744 : 00 brk
1745 : 88 dey ;should not be executed
1746 : brk_ret1 ;address of break return
1746 : 08 php ;either SP or Y count will fail, if we do not hit
1747 : 88 dey
1748 : 88 dey
1749 : 88 dey
174a : c917 cmp #($ff-'B')^$aa ;returned registers OK?
;the IRQ vector was never executed if A & X stay unmodified
trap_ne
174c : d0fe > bne * ;failed not equal (non zero)
174e : e0ae cpx #$ff-'R'+1
trap_ne
1750 : d0fe > bne * ;failed not equal (non zero)
1752 : c0ae cpy #$ff-'K'-6
trap_ne
1754 : d0fe > bne * ;failed not equal (non zero)
1756 : 68 pla ;returned flags OK (unchanged)?
cmp_flag $ff
1757 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
trap_ne
1759 : d0fe > bne * ;failed not equal (non zero)
175b : ba tsx ;sp?
175c : e0ff cpx #$ff
trap_ne
175e : d0fe > bne * ;failed not equal (non zero)
next_test
1760 : ad0202 > lda test_case ;previous test
1763 : c90b > cmp #test_num
> trap_ne ;test is out of sequence
1765 : d0fe > bne * ;failed not equal (non zero)
>
000c = >test_num = test_num + 1
1767 : a90c > lda #test_num ;*** next tests' number
1769 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
endif
; testing accumulator increment/decrement INC A & DEC A
176c : a2ac ldx #$ac ;protect x & y
176e : a0dc ldy #$dc
set_a $fe,$ff
> load_flag $ff
1770 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1772 : 48 > pha ;use stack to load status
1773 : a9fe > lda #$fe ;precharge accu
1775 : 28 > plp
1776 : 1a inc a ;ff
tst_as $ff,$ff-zero
1777 : 48 > pha
1778 : 08 > php ;save flags
1779 : c9ff > cmp #$ff ;test result
> trap_ne
177b : d0fe > bne * ;failed not equal (non zero)
>
177d : 68 > pla ;load status
177e : 48 > pha
> cmp_flag $ff-zero
177f : c9fd > cmp #($ff-zero|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1781 : d0fe > bne * ;failed not equal (non zero)
>
1783 : 28 > plp ;restore status
1784 : 68 > pla
1785 : 1a inc a ;00
tst_as 0,$ff-minus
1786 : 48 > pha
1787 : 08 > php ;save flags
1788 : c900 > cmp #0 ;test result
> trap_ne
178a : d0fe > bne * ;failed not equal (non zero)
>
178c : 68 > pla ;load status
178d : 48 > pha
> cmp_flag $ff-minus
178e : c97f > cmp #($ff-minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1790 : d0fe > bne * ;failed not equal (non zero)
>
1792 : 28 > plp ;restore status
1793 : 68 > pla
1794 : 1a inc a ;01
tst_as 1,$ff-minus-zero
1795 : 48 > pha
1796 : 08 > php ;save flags
1797 : c901 > cmp #1 ;test result
> trap_ne
1799 : d0fe > bne * ;failed not equal (non zero)
>
179b : 68 > pla ;load status
179c : 48 > pha
> cmp_flag $ff-minus-zero
179d : c97d > cmp #($ff-minus-zero|fao)&m8 ;expected flags + always on bits
>
> trap_ne
179f : d0fe > bne * ;failed not equal (non zero)
>
17a1 : 28 > plp ;restore status
17a2 : 68 > pla
17a3 : 3a dec a ;00
tst_as 0,$ff-minus
17a4 : 48 > pha
17a5 : 08 > php ;save flags
17a6 : c900 > cmp #0 ;test result
> trap_ne
17a8 : d0fe > bne * ;failed not equal (non zero)
>
17aa : 68 > pla ;load status
17ab : 48 > pha
> cmp_flag $ff-minus
17ac : c97f > cmp #($ff-minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
17ae : d0fe > bne * ;failed not equal (non zero)
>
17b0 : 28 > plp ;restore status
17b1 : 68 > pla
17b2 : 3a dec a ;ff
tst_as $ff,$ff-zero
17b3 : 48 > pha
17b4 : 08 > php ;save flags
17b5 : c9ff > cmp #$ff ;test result
> trap_ne
17b7 : d0fe > bne * ;failed not equal (non zero)
>
17b9 : 68 > pla ;load status
17ba : 48 > pha
> cmp_flag $ff-zero
17bb : c9fd > cmp #($ff-zero|fao)&m8 ;expected flags + always on bits
>
> trap_ne
17bd : d0fe > bne * ;failed not equal (non zero)
>
17bf : 28 > plp ;restore status
17c0 : 68 > pla
17c1 : 3a dec a ;fe
set_a $fe,0
> load_flag 0
17c2 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
17c4 : 48 > pha ;use stack to load status
17c5 : a9fe > lda #$fe ;precharge accu
17c7 : 28 > plp
17c8 : 1a inc a ;ff
tst_as $ff,minus
17c9 : 48 > pha
17ca : 08 > php ;save flags
17cb : c9ff > cmp #$ff ;test result
> trap_ne
17cd : d0fe > bne * ;failed not equal (non zero)
>
17cf : 68 > pla ;load status
17d0 : 48 > pha
> cmp_flag minus
17d1 : c9b0 > cmp #(minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
17d3 : d0fe > bne * ;failed not equal (non zero)
>
17d5 : 28 > plp ;restore status
17d6 : 68 > pla
17d7 : 1a inc a ;00
tst_as 0,zero
17d8 : 48 > pha
17d9 : 08 > php ;save flags
17da : c900 > cmp #0 ;test result
> trap_ne
17dc : d0fe > bne * ;failed not equal (non zero)
>
17de : 68 > pla ;load status
17df : 48 > pha
> cmp_flag zero
17e0 : c932 > cmp #(zero|fao)&m8 ;expected flags + always on bits
>
> trap_ne
17e2 : d0fe > bne * ;failed not equal (non zero)
>
17e4 : 28 > plp ;restore status
17e5 : 68 > pla
17e6 : 1a inc a ;01
tst_as 1,0
17e7 : 48 > pha
17e8 : 08 > php ;save flags
17e9 : c901 > cmp #1 ;test result
> trap_ne
17eb : d0fe > bne * ;failed not equal (non zero)
>
17ed : 68 > pla ;load status
17ee : 48 > pha
> cmp_flag 0
17ef : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
17f1 : d0fe > bne * ;failed not equal (non zero)
>
17f3 : 28 > plp ;restore status
17f4 : 68 > pla
17f5 : 3a dec a ;00
tst_as 0,zero
17f6 : 48 > pha
17f7 : 08 > php ;save flags
17f8 : c900 > cmp #0 ;test result
> trap_ne
17fa : d0fe > bne * ;failed not equal (non zero)
>
17fc : 68 > pla ;load status
17fd : 48 > pha
> cmp_flag zero
17fe : c932 > cmp #(zero|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1800 : d0fe > bne * ;failed not equal (non zero)
>
1802 : 28 > plp ;restore status
1803 : 68 > pla
1804 : 3a dec a ;ff
tst_as $ff,minus
1805 : 48 > pha
1806 : 08 > php ;save flags
1807 : c9ff > cmp #$ff ;test result
> trap_ne
1809 : d0fe > bne * ;failed not equal (non zero)
>
180b : 68 > pla ;load status
180c : 48 > pha
> cmp_flag minus
180d : c9b0 > cmp #(minus|fao)&m8 ;expected flags + always on bits
>
> trap_ne
180f : d0fe > bne * ;failed not equal (non zero)
>
1811 : 28 > plp ;restore status
1812 : 68 > pla
1813 : e0ac cpx #$ac
trap_ne ;x altered during test
1815 : d0fe > bne * ;failed not equal (non zero)
1817 : c0dc cpy #$dc
trap_ne ;y altered during test
1819 : d0fe > bne * ;failed not equal (non zero)
181b : ba tsx
181c : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
181e : d0fe > bne * ;failed not equal (non zero)
next_test
1820 : ad0202 > lda test_case ;previous test
1823 : c90c > cmp #test_num
> trap_ne ;test is out of sequence
1825 : d0fe > bne * ;failed not equal (non zero)
>
000d = >test_num = test_num + 1
1827 : a90d > lda #test_num ;*** next tests' number
1829 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
; testing load / store accumulator LDA / STA (zp)
182c : a299 ldx #$99 ;protect x & y
182e : a066 ldy #$66
set_stat 0
> load_flag 0
1830 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1832 : 48 > pha ;use stack to load status
1833 : 28 > plp
1834 : b224 lda (ind1)
1836 : 08 php ;test stores do not alter flags
1837 : 49c3 eor #$c3
1839 : 28 plp
183a : 9230 sta (indt)
183c : 08 php ;flags after load/store sequence
183d : 49c3 eor #$c3
183f : c9c3 cmp #$c3 ;test result
trap_ne
1841 : d0fe > bne * ;failed not equal (non zero)
1843 : 68 pla ;load status
eor_flag 0
1844 : 4930 > eor #0|fao ;invert expected flags + always on bits
1846 : cd1502 cmp fLDx ;test flags
trap_ne
1849 : d0fe > bne * ;failed not equal (non zero)
set_stat 0
> load_flag 0
184b : a900 > lda #0 ;allow test to change I-flag (no mask)
>
184d : 48 > pha ;use stack to load status
184e : 28 > plp
184f : b226 lda (ind1+2)
1851 : 08 php ;test stores do not alter flags
1852 : 49c3 eor #$c3
1854 : 28 plp
1855 : 9232 sta (indt+2)
1857 : 08 php ;flags after load/store sequence
1858 : 49c3 eor #$c3
185a : c982 cmp #$82 ;test result
trap_ne
185c : d0fe > bne * ;failed not equal (non zero)
185e : 68 pla ;load status
eor_flag 0
185f : 4930 > eor #0|fao ;invert expected flags + always on bits
1861 : cd1602 cmp fLDx+1 ;test flags
trap_ne
1864 : d0fe > bne * ;failed not equal (non zero)
set_stat 0
> load_flag 0
1866 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1868 : 48 > pha ;use stack to load status
1869 : 28 > plp
186a : b228 lda (ind1+4)
186c : 08 php ;test stores do not alter flags
186d : 49c3 eor #$c3
186f : 28 plp
1870 : 9234 sta (indt+4)
1872 : 08 php ;flags after load/store sequence
1873 : 49c3 eor #$c3
1875 : c941 cmp #$41 ;test result
trap_ne
1877 : d0fe > bne * ;failed not equal (non zero)
1879 : 68 pla ;load status
eor_flag 0
187a : 4930 > eor #0|fao ;invert expected flags + always on bits
187c : cd1702 cmp fLDx+2 ;test flags
trap_ne
187f : d0fe > bne * ;failed not equal (non zero)
set_stat 0
> load_flag 0
1881 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1883 : 48 > pha ;use stack to load status
1884 : 28 > plp
1885 : b22a lda (ind1+6)
1887 : 08 php ;test stores do not alter flags
1888 : 49c3 eor #$c3
188a : 28 plp
188b : 9236 sta (indt+6)
188d : 08 php ;flags after load/store sequence
188e : 49c3 eor #$c3
1890 : c900 cmp #0 ;test result
trap_ne
1892 : d0fe > bne * ;failed not equal (non zero)
1894 : 68 pla ;load status
eor_flag 0
1895 : 4930 > eor #0|fao ;invert expected flags + always on bits
1897 : cd1802 cmp fLDx+3 ;test flags
trap_ne
189a : d0fe > bne * ;failed not equal (non zero)
189c : e099 cpx #$99
trap_ne ;x altered during test
189e : d0fe > bne * ;failed not equal (non zero)
18a0 : c066 cpy #$66
trap_ne ;y altered during test
18a2 : d0fe > bne * ;failed not equal (non zero)
18a4 : a003 ldy #3 ;testing store result
18a6 : a200 ldx #0
18a8 : b90502 tstai1 lda abst,y
18ab : 49c3 eor #$c3
18ad : d91002 cmp abs1,y
trap_ne ;store to indirect data
18b0 : d0fe > bne * ;failed not equal (non zero)
18b2 : 8a txa
18b3 : 990502 sta abst,y ;clear
18b6 : 88 dey
18b7 : 10ef bpl tstai1
18b9 : a299 ldx #$99 ;protect x & y
18bb : a066 ldy #$66
set_stat $ff
> load_flag $ff
18bd : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
18bf : 48 > pha ;use stack to load status
18c0 : 28 > plp
18c1 : b224 lda (ind1)
18c3 : 08 php ;test stores do not alter flags
18c4 : 49c3 eor #$c3
18c6 : 28 plp
18c7 : 9230 sta (indt)
18c9 : 08 php ;flags after load/store sequence
18ca : 49c3 eor #$c3
18cc : c9c3 cmp #$c3 ;test result
trap_ne
18ce : d0fe > bne * ;failed not equal (non zero)
18d0 : 68 pla ;load status
eor_flag lo~fnz ;mask bits not altered
18d1 : 497d > eor #lo~fnz |fao ;invert expected flags + always on bits
18d3 : cd1502 cmp fLDx ;test flags
trap_ne
18d6 : d0fe > bne * ;failed not equal (non zero)
set_stat $ff
> load_flag $ff
18d8 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
18da : 48 > pha ;use stack to load status
18db : 28 > plp
18dc : b226 lda (ind1+2)
18de : 08 php ;test stores do not alter flags
18df : 49c3 eor #$c3
18e1 : 28 plp
18e2 : 9232 sta (indt+2)
18e4 : 08 php ;flags after load/store sequence
18e5 : 49c3 eor #$c3
18e7 : c982 cmp #$82 ;test result
trap_ne
18e9 : d0fe > bne * ;failed not equal (non zero)
18eb : 68 pla ;load status
eor_flag lo~fnz ;mask bits not altered
18ec : 497d > eor #lo~fnz |fao ;invert expected flags + always on bits
18ee : cd1602 cmp fLDx+1 ;test flags
trap_ne
18f1 : d0fe > bne * ;failed not equal (non zero)
set_stat $ff
> load_flag $ff
18f3 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
18f5 : 48 > pha ;use stack to load status
18f6 : 28 > plp
18f7 : b228 lda (ind1+4)
18f9 : 08 php ;test stores do not alter flags
18fa : 49c3 eor #$c3
18fc : 28 plp
18fd : 9234 sta (indt+4)
18ff : 08 php ;flags after load/store sequence
1900 : 49c3 eor #$c3
1902 : c941 cmp #$41 ;test result
trap_ne
1904 : d0fe > bne * ;failed not equal (non zero)
1906 : 68 pla ;load status
eor_flag lo~fnz ;mask bits not altered
1907 : 497d > eor #lo~fnz |fao ;invert expected flags + always on bits
1909 : cd1702 cmp fLDx+2 ;test flags
trap_ne
190c : d0fe > bne * ;failed not equal (non zero)
set_stat $ff
> load_flag $ff
190e : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1910 : 48 > pha ;use stack to load status
1911 : 28 > plp
1912 : b22a lda (ind1+6)
1914 : 08 php ;test stores do not alter flags
1915 : 49c3 eor #$c3
1917 : 28 plp
1918 : 9236 sta (indt+6)
191a : 08 php ;flags after load/store sequence
191b : 49c3 eor #$c3
191d : c900 cmp #0 ;test result
trap_ne
191f : d0fe > bne * ;failed not equal (non zero)
1921 : 68 pla ;load status
eor_flag lo~fnz ;mask bits not altered
1922 : 497d > eor #lo~fnz |fao ;invert expected flags + always on bits
1924 : cd1802 cmp fLDx+3 ;test flags
trap_ne
1927 : d0fe > bne * ;failed not equal (non zero)
1929 : e099 cpx #$99
trap_ne ;x altered during test
192b : d0fe > bne * ;failed not equal (non zero)
192d : c066 cpy #$66
trap_ne ;y altered during test
192f : d0fe > bne * ;failed not equal (non zero)
1931 : a003 ldy #3 ;testing store result
1933 : a200 ldx #0
1935 : b90502 tstai2 lda abst,y
1938 : 49c3 eor #$c3
193a : d91002 cmp abs1,y
trap_ne ;store to indirect data
193d : d0fe > bne * ;failed not equal (non zero)
193f : 8a txa
1940 : 990502 sta abst,y ;clear
1943 : 88 dey
1944 : 10ef bpl tstai2
1946 : ba tsx
1947 : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
1949 : d0fe > bne * ;failed not equal (non zero)
next_test
194b : ad0202 > lda test_case ;previous test
194e : c90d > cmp #test_num
> trap_ne ;test is out of sequence
1950 : d0fe > bne * ;failed not equal (non zero)
>
000e = >test_num = test_num + 1
1952 : a90e > lda #test_num ;*** next tests' number
1954 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
; testing STZ - zp / abs / zp,x / abs,x
1957 : a07b ldy #123 ;protect y
1959 : a204 ldx #4 ;precharge test area
195b : a907 lda #7
195d : 950c tstz1 sta zpt,x
195f : 0a asl a
1960 : ca dex
1961 : 10fa bpl tstz1
1963 : a204 ldx #4
set_a $55,$ff
> load_flag $ff
1965 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1967 : 48 > pha ;use stack to load status
1968 : a955 > lda #$55 ;precharge accu
196a : 28 > plp
196b : 640c stz zpt
196d : 640d stz zpt+1
196f : 640e stz zpt+2
1971 : 640f stz zpt+3
1973 : 6410 stz zpt+4
tst_a $55,$ff
1975 : 08 > php ;save flags
1976 : c955 > cmp #$55 ;test result
> trap_ne
1978 : d0fe > bne * ;failed not equal (non zero)
>
197a : 68 > pla ;load status
197b : 48 > pha
> cmp_flag $ff
197c : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
197e : d0fe > bne * ;failed not equal (non zero)
>
1980 : 28 > plp ;restore status
1981 : b50c tstz2 lda zpt,x ;verify zeros stored
trap_ne ;non zero after STZ zp
1983 : d0fe > bne * ;failed not equal (non zero)
1985 : ca dex
1986 : 10f9 bpl tstz2
1988 : a204 ldx #4 ;precharge test area
198a : a907 lda #7
198c : 950c tstz3 sta zpt,x
198e : 0a asl a
198f : ca dex
1990 : 10fa bpl tstz3
1992 : a204 ldx #4
set_a $aa,0
> load_flag 0
1994 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1996 : 48 > pha ;use stack to load status
1997 : a9aa > lda #$aa ;precharge accu
1999 : 28 > plp
199a : 640c stz zpt
199c : 640d stz zpt+1
199e : 640e stz zpt+2
19a0 : 640f stz zpt+3
19a2 : 6410 stz zpt+4
tst_a $aa,0
19a4 : 08 > php ;save flags
19a5 : c9aa > cmp #$aa ;test result
> trap_ne
19a7 : d0fe > bne * ;failed not equal (non zero)
>
19a9 : 68 > pla ;load status
19aa : 48 > pha
> cmp_flag 0
19ab : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
19ad : d0fe > bne * ;failed not equal (non zero)
>
19af : 28 > plp ;restore status
19b0 : b50c tstz4 lda zpt,x ;verify zeros stored
trap_ne ;non zero after STZ zp
19b2 : d0fe > bne * ;failed not equal (non zero)
19b4 : ca dex
19b5 : 10f9 bpl tstz4
19b7 : a204 ldx #4 ;precharge test area
19b9 : a907 lda #7
19bb : 9d0502 tstz5 sta abst,x
19be : 0a asl a
19bf : ca dex
19c0 : 10f9 bpl tstz5
19c2 : a204 ldx #4
set_a $55,$ff
> load_flag $ff
19c4 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
19c6 : 48 > pha ;use stack to load status
19c7 : a955 > lda #$55 ;precharge accu
19c9 : 28 > plp
19ca : 9c0502 stz abst
19cd : 9c0602 stz abst+1
19d0 : 9c0702 stz abst+2
19d3 : 9c0802 stz abst+3
19d6 : 9c0902 stz abst+4
tst_a $55,$ff
19d9 : 08 > php ;save flags
19da : c955 > cmp #$55 ;test result
> trap_ne
19dc : d0fe > bne * ;failed not equal (non zero)
>
19de : 68 > pla ;load status
19df : 48 > pha
> cmp_flag $ff
19e0 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
19e2 : d0fe > bne * ;failed not equal (non zero)
>
19e4 : 28 > plp ;restore status
19e5 : bd0502 tstz6 lda abst,x ;verify zeros stored
trap_ne ;non zero after STZ abs
19e8 : d0fe > bne * ;failed not equal (non zero)
19ea : ca dex
19eb : 10f8 bpl tstz6
19ed : a204 ldx #4 ;precharge test area
19ef : a907 lda #7
19f1 : 9d0502 tstz7 sta abst,x
19f4 : 0a asl a
19f5 : ca dex
19f6 : 10f9 bpl tstz7
19f8 : a204 ldx #4
set_a $aa,0
> load_flag 0
19fa : a900 > lda #0 ;allow test to change I-flag (no mask)
>
19fc : 48 > pha ;use stack to load status
19fd : a9aa > lda #$aa ;precharge accu
19ff : 28 > plp
1a00 : 9c0502 stz abst
1a03 : 9c0602 stz abst+1
1a06 : 9c0702 stz abst+2
1a09 : 9c0802 stz abst+3
1a0c : 9c0902 stz abst+4
tst_a $aa,0
1a0f : 08 > php ;save flags
1a10 : c9aa > cmp #$aa ;test result
> trap_ne
1a12 : d0fe > bne * ;failed not equal (non zero)
>
1a14 : 68 > pla ;load status
1a15 : 48 > pha
> cmp_flag 0
1a16 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1a18 : d0fe > bne * ;failed not equal (non zero)
>
1a1a : 28 > plp ;restore status
1a1b : bd0502 tstz8 lda abst,x ;verify zeros stored
trap_ne ;non zero after STZ abs
1a1e : d0fe > bne * ;failed not equal (non zero)
1a20 : ca dex
1a21 : 10f8 bpl tstz8
1a23 : a204 ldx #4 ;precharge test area
1a25 : a907 lda #7
1a27 : 950c tstz11 sta zpt,x
1a29 : 0a asl a
1a2a : ca dex
1a2b : 10fa bpl tstz11
1a2d : a204 ldx #4
1a2f : tstz15
set_a $55,$ff
> load_flag $ff
1a2f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1a31 : 48 > pha ;use stack to load status
1a32 : a955 > lda #$55 ;precharge accu
1a34 : 28 > plp
1a35 : 740c stz zpt,x
tst_a $55,$ff
1a37 : 08 > php ;save flags
1a38 : c955 > cmp #$55 ;test result
> trap_ne
1a3a : d0fe > bne * ;failed not equal (non zero)
>
1a3c : 68 > pla ;load status
1a3d : 48 > pha
> cmp_flag $ff
1a3e : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1a40 : d0fe > bne * ;failed not equal (non zero)
>
1a42 : 28 > plp ;restore status
1a43 : ca dex
1a44 : 10e9 bpl tstz15
1a46 : a204 ldx #4
1a48 : b50c tstz12 lda zpt,x ;verify zeros stored
trap_ne ;non zero after STZ zp
1a4a : d0fe > bne * ;failed not equal (non zero)
1a4c : ca dex
1a4d : 10f9 bpl tstz12
1a4f : a204 ldx #4 ;precharge test area
1a51 : a907 lda #7
1a53 : 950c tstz13 sta zpt,x
1a55 : 0a asl a
1a56 : ca dex
1a57 : 10fa bpl tstz13
1a59 : a204 ldx #4
1a5b : tstz16
set_a $aa,0
> load_flag 0
1a5b : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1a5d : 48 > pha ;use stack to load status
1a5e : a9aa > lda #$aa ;precharge accu
1a60 : 28 > plp
1a61 : 740c stz zpt,x
tst_a $aa,0
1a63 : 08 > php ;save flags
1a64 : c9aa > cmp #$aa ;test result
> trap_ne
1a66 : d0fe > bne * ;failed not equal (non zero)
>
1a68 : 68 > pla ;load status
1a69 : 48 > pha
> cmp_flag 0
1a6a : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1a6c : d0fe > bne * ;failed not equal (non zero)
>
1a6e : 28 > plp ;restore status
1a6f : ca dex
1a70 : 10e9 bpl tstz16
1a72 : a204 ldx #4
1a74 : b50c tstz14 lda zpt,x ;verify zeros stored
trap_ne ;non zero after STZ zp
1a76 : d0fe > bne * ;failed not equal (non zero)
1a78 : ca dex
1a79 : 10f9 bpl tstz14
1a7b : a204 ldx #4 ;precharge test area
1a7d : a907 lda #7
1a7f : 9d0502 tstz21 sta abst,x
1a82 : 0a asl a
1a83 : ca dex
1a84 : 10f9 bpl tstz21
1a86 : a204 ldx #4
1a88 : tstz25
set_a $55,$ff
> load_flag $ff
1a88 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1a8a : 48 > pha ;use stack to load status
1a8b : a955 > lda #$55 ;precharge accu
1a8d : 28 > plp
1a8e : 9e0502 stz abst,x
tst_a $55,$ff
1a91 : 08 > php ;save flags
1a92 : c955 > cmp #$55 ;test result
> trap_ne
1a94 : d0fe > bne * ;failed not equal (non zero)
>
1a96 : 68 > pla ;load status
1a97 : 48 > pha
> cmp_flag $ff
1a98 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1a9a : d0fe > bne * ;failed not equal (non zero)
>
1a9c : 28 > plp ;restore status
1a9d : ca dex
1a9e : 10e8 bpl tstz25
1aa0 : a204 ldx #4
1aa2 : bd0502 tstz22 lda abst,x ;verify zeros stored
trap_ne ;non zero after STZ zp
1aa5 : d0fe > bne * ;failed not equal (non zero)
1aa7 : ca dex
1aa8 : 10f8 bpl tstz22
1aaa : a204 ldx #4 ;precharge test area
1aac : a907 lda #7
1aae : 9d0502 tstz23 sta abst,x
1ab1 : 0a asl a
1ab2 : ca dex
1ab3 : 10f9 bpl tstz23
1ab5 : a204 ldx #4
1ab7 : tstz26
set_a $aa,0
> load_flag 0
1ab7 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1ab9 : 48 > pha ;use stack to load status
1aba : a9aa > lda #$aa ;precharge accu
1abc : 28 > plp
1abd : 9e0502 stz abst,x
tst_a $aa,0
1ac0 : 08 > php ;save flags
1ac1 : c9aa > cmp #$aa ;test result
> trap_ne
1ac3 : d0fe > bne * ;failed not equal (non zero)
>
1ac5 : 68 > pla ;load status
1ac6 : 48 > pha
> cmp_flag 0
1ac7 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1ac9 : d0fe > bne * ;failed not equal (non zero)
>
1acb : 28 > plp ;restore status
1acc : ca dex
1acd : 10e8 bpl tstz26
1acf : a204 ldx #4
1ad1 : bd0502 tstz24 lda abst,x ;verify zeros stored
trap_ne ;non zero after STZ zp
1ad4 : d0fe > bne * ;failed not equal (non zero)
1ad6 : ca dex
1ad7 : 10f8 bpl tstz24
1ad9 : c07b cpy #123
trap_ne ;y altered during test
1adb : d0fe > bne * ;failed not equal (non zero)
1add : ba tsx
1ade : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
1ae0 : d0fe > bne * ;failed not equal (non zero)
next_test
1ae2 : ad0202 > lda test_case ;previous test
1ae5 : c90e > cmp #test_num
> trap_ne ;test is out of sequence
1ae7 : d0fe > bne * ;failed not equal (non zero)
>
000f = >test_num = test_num + 1
1ae9 : a90f > lda #test_num ;*** next tests' number
1aeb : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
; testing BIT - zp,x / abs,x / #
1aee : a042 ldy #$42
1af0 : a203 ldx #3
set_a $ff,0
> load_flag 0
1af2 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1af4 : 48 > pha ;use stack to load status
1af5 : a9ff > lda #$ff ;precharge accu
1af7 : 28 > plp
1af8 : 3413 bit zp1,x ;00 - should set Z / clear NV
tst_a $ff,fz
1afa : 08 > php ;save flags
1afb : c9ff > cmp #$ff ;test result
> trap_ne
1afd : d0fe > bne * ;failed not equal (non zero)
>
1aff : 68 > pla ;load status
1b00 : 48 > pha
> cmp_flag fz
1b01 : c932 > cmp #(fz |fao)&m8 ;expected flags + always on bits
>
> trap_ne
1b03 : d0fe > bne * ;failed not equal (non zero)
>
1b05 : 28 > plp ;restore status
1b06 : ca dex
set_a 1,0
> load_flag 0
1b07 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1b09 : 48 > pha ;use stack to load status
1b0a : a901 > lda #1 ;precharge accu
1b0c : 28 > plp
1b0d : 3413 bit zp1,x ;41 - should set V (M6) / clear NZ
tst_a 1,fv
1b0f : 08 > php ;save flags
1b10 : c901 > cmp #1 ;test result
> trap_ne
1b12 : d0fe > bne * ;failed not equal (non zero)
>
1b14 : 68 > pla ;load status
1b15 : 48 > pha
> cmp_flag fv
1b16 : c970 > cmp #(fv|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1b18 : d0fe > bne * ;failed not equal (non zero)
>
1b1a : 28 > plp ;restore status
1b1b : ca dex
set_a 1,0
> load_flag 0
1b1c : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1b1e : 48 > pha ;use stack to load status
1b1f : a901 > lda #1 ;precharge accu
1b21 : 28 > plp
1b22 : 3413 bit zp1,x ;82 - should set N (M7) & Z / clear V
tst_a 1,fnz
1b24 : 08 > php ;save flags
1b25 : c901 > cmp #1 ;test result
> trap_ne
1b27 : d0fe > bne * ;failed not equal (non zero)
>
1b29 : 68 > pla ;load status
1b2a : 48 > pha
> cmp_flag fnz
1b2b : c9b2 > cmp #(fnz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1b2d : d0fe > bne * ;failed not equal (non zero)
>
1b2f : 28 > plp ;restore status
1b30 : ca dex
set_a 1,0
> load_flag 0
1b31 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1b33 : 48 > pha ;use stack to load status
1b34 : a901 > lda #1 ;precharge accu
1b36 : 28 > plp
1b37 : 3413 bit zp1,x ;c3 - should set N (M7) & V (M6) / clear Z
tst_a 1,fnv
1b39 : 08 > php ;save flags
1b3a : c901 > cmp #1 ;test result
> trap_ne
1b3c : d0fe > bne * ;failed not equal (non zero)
>
1b3e : 68 > pla ;load status
1b3f : 48 > pha
> cmp_flag fnv
1b40 : c9f0 > cmp #(fnv|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1b42 : d0fe > bne * ;failed not equal (non zero)
>
1b44 : 28 > plp ;restore status
set_a 1,$ff
> load_flag $ff
1b45 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1b47 : 48 > pha ;use stack to load status
1b48 : a901 > lda #1 ;precharge accu
1b4a : 28 > plp
1b4b : 3413 bit zp1,x ;c3 - should set N (M7) & V (M6) / clear Z
tst_a 1,~fz
1b4d : 08 > php ;save flags
1b4e : c901 > cmp #1 ;test result
> trap_ne
1b50 : d0fe > bne * ;failed not equal (non zero)
>
1b52 : 68 > pla ;load status
1b53 : 48 > pha
> cmp_flag ~fz
1b54 : c9fd > cmp #(~fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1b56 : d0fe > bne * ;failed not equal (non zero)
>
1b58 : 28 > plp ;restore status
1b59 : e8 inx
set_a 1,$ff
> load_flag $ff
1b5a : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1b5c : 48 > pha ;use stack to load status
1b5d : a901 > lda #1 ;precharge accu
1b5f : 28 > plp
1b60 : 3413 bit zp1,x ;82 - should set N (M7) & Z / clear V
tst_a 1,~fv
1b62 : 08 > php ;save flags
1b63 : c901 > cmp #1 ;test result
> trap_ne
1b65 : d0fe > bne * ;failed not equal (non zero)
>
1b67 : 68 > pla ;load status
1b68 : 48 > pha
> cmp_flag ~fv
1b69 : c9bf > cmp #(~fv|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1b6b : d0fe > bne * ;failed not equal (non zero)
>
1b6d : 28 > plp ;restore status
1b6e : e8 inx
set_a 1,$ff
> load_flag $ff
1b6f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1b71 : 48 > pha ;use stack to load status
1b72 : a901 > lda #1 ;precharge accu
1b74 : 28 > plp
1b75 : 3413 bit zp1,x ;41 - should set V (M6) / clear NZ
tst_a 1,~fnz
1b77 : 08 > php ;save flags
1b78 : c901 > cmp #1 ;test result
> trap_ne
1b7a : d0fe > bne * ;failed not equal (non zero)
>
1b7c : 68 > pla ;load status
1b7d : 48 > pha
> cmp_flag ~fnz
1b7e : c97d > cmp #(~fnz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1b80 : d0fe > bne * ;failed not equal (non zero)
>
1b82 : 28 > plp ;restore status
1b83 : e8 inx
set_a $ff,$ff
> load_flag $ff
1b84 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1b86 : 48 > pha ;use stack to load status
1b87 : a9ff > lda #$ff ;precharge accu
1b89 : 28 > plp
1b8a : 3413 bit zp1,x ;00 - should set Z / clear NV
tst_a $ff,~fnv
1b8c : 08 > php ;save flags
1b8d : c9ff > cmp #$ff ;test result
> trap_ne
1b8f : d0fe > bne * ;failed not equal (non zero)
>
1b91 : 68 > pla ;load status
1b92 : 48 > pha
> cmp_flag ~fnv
1b93 : c93f > cmp #(~fnv |fao)&m8 ;expected flags + always on bits
>
> trap_ne
1b95 : d0fe > bne * ;failed not equal (non zero)
>
1b97 : 28 > plp ;restore status
set_a $ff,0
> load_flag 0
1b98 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1b9a : 48 > pha ;use stack to load status
1b9b : a9ff > lda #$ff ;precharge accu
1b9d : 28 > plp
1b9e : 3c1002 bit abs1,x ;00 - should set Z / clear NV
tst_a $ff,fz
1ba1 : 08 > php ;save flags
1ba2 : c9ff > cmp #$ff ;test result
> trap_ne
1ba4 : d0fe > bne * ;failed not equal (non zero)
>
1ba6 : 68 > pla ;load status
1ba7 : 48 > pha
> cmp_flag fz
1ba8 : c932 > cmp #(fz |fao)&m8 ;expected flags + always on bits
>
> trap_ne
1baa : d0fe > bne * ;failed not equal (non zero)
>
1bac : 28 > plp ;restore status
1bad : ca dex
set_a 1,0
> load_flag 0
1bae : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1bb0 : 48 > pha ;use stack to load status
1bb1 : a901 > lda #1 ;precharge accu
1bb3 : 28 > plp
1bb4 : 3c1002 bit abs1,x ;41 - should set V (M6) / clear NZ
tst_a 1,fv
1bb7 : 08 > php ;save flags
1bb8 : c901 > cmp #1 ;test result
> trap_ne
1bba : d0fe > bne * ;failed not equal (non zero)
>
1bbc : 68 > pla ;load status
1bbd : 48 > pha
> cmp_flag fv
1bbe : c970 > cmp #(fv|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1bc0 : d0fe > bne * ;failed not equal (non zero)
>
1bc2 : 28 > plp ;restore status
1bc3 : ca dex
set_a 1,0
> load_flag 0
1bc4 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1bc6 : 48 > pha ;use stack to load status
1bc7 : a901 > lda #1 ;precharge accu
1bc9 : 28 > plp
1bca : 3c1002 bit abs1,x ;82 - should set N (M7) & Z / clear V
tst_a 1,fnz
1bcd : 08 > php ;save flags
1bce : c901 > cmp #1 ;test result
> trap_ne
1bd0 : d0fe > bne * ;failed not equal (non zero)
>
1bd2 : 68 > pla ;load status
1bd3 : 48 > pha
> cmp_flag fnz
1bd4 : c9b2 > cmp #(fnz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1bd6 : d0fe > bne * ;failed not equal (non zero)
>
1bd8 : 28 > plp ;restore status
1bd9 : ca dex
set_a 1,0
> load_flag 0
1bda : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1bdc : 48 > pha ;use stack to load status
1bdd : a901 > lda #1 ;precharge accu
1bdf : 28 > plp
1be0 : 3c1002 bit abs1,x ;c3 - should set N (M7) & V (M6) / clear Z
tst_a 1,fnv
1be3 : 08 > php ;save flags
1be4 : c901 > cmp #1 ;test result
> trap_ne
1be6 : d0fe > bne * ;failed not equal (non zero)
>
1be8 : 68 > pla ;load status
1be9 : 48 > pha
> cmp_flag fnv
1bea : c9f0 > cmp #(fnv|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1bec : d0fe > bne * ;failed not equal (non zero)
>
1bee : 28 > plp ;restore status
set_a 1,$ff
> load_flag $ff
1bef : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1bf1 : 48 > pha ;use stack to load status
1bf2 : a901 > lda #1 ;precharge accu
1bf4 : 28 > plp
1bf5 : 3c1002 bit abs1,x ;c3 - should set N (M7) & V (M6) / clear Z
tst_a 1,~fz
1bf8 : 08 > php ;save flags
1bf9 : c901 > cmp #1 ;test result
> trap_ne
1bfb : d0fe > bne * ;failed not equal (non zero)
>
1bfd : 68 > pla ;load status
1bfe : 48 > pha
> cmp_flag ~fz
1bff : c9fd > cmp #(~fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1c01 : d0fe > bne * ;failed not equal (non zero)
>
1c03 : 28 > plp ;restore status
1c04 : e8 inx
set_a 1,$ff
> load_flag $ff
1c05 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1c07 : 48 > pha ;use stack to load status
1c08 : a901 > lda #1 ;precharge accu
1c0a : 28 > plp
1c0b : 3c1002 bit abs1,x ;82 - should set N (M7) & Z / clear V
tst_a 1,~fv
1c0e : 08 > php ;save flags
1c0f : c901 > cmp #1 ;test result
> trap_ne
1c11 : d0fe > bne * ;failed not equal (non zero)
>
1c13 : 68 > pla ;load status
1c14 : 48 > pha
> cmp_flag ~fv
1c15 : c9bf > cmp #(~fv|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1c17 : d0fe > bne * ;failed not equal (non zero)
>
1c19 : 28 > plp ;restore status
1c1a : e8 inx
set_a 1,$ff
> load_flag $ff
1c1b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1c1d : 48 > pha ;use stack to load status
1c1e : a901 > lda #1 ;precharge accu
1c20 : 28 > plp
1c21 : 3c1002 bit abs1,x ;41 - should set V (M6) / clear NZ
tst_a 1,~fnz
1c24 : 08 > php ;save flags
1c25 : c901 > cmp #1 ;test result
> trap_ne
1c27 : d0fe > bne * ;failed not equal (non zero)
>
1c29 : 68 > pla ;load status
1c2a : 48 > pha
> cmp_flag ~fnz
1c2b : c97d > cmp #(~fnz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1c2d : d0fe > bne * ;failed not equal (non zero)
>
1c2f : 28 > plp ;restore status
1c30 : e8 inx
set_a $ff,$ff
> load_flag $ff
1c31 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1c33 : 48 > pha ;use stack to load status
1c34 : a9ff > lda #$ff ;precharge accu
1c36 : 28 > plp
1c37 : 3c1002 bit abs1,x ;00 - should set Z / clear NV
tst_a $ff,~fnv
1c3a : 08 > php ;save flags
1c3b : c9ff > cmp #$ff ;test result
> trap_ne
1c3d : d0fe > bne * ;failed not equal (non zero)
>
1c3f : 68 > pla ;load status
1c40 : 48 > pha
> cmp_flag ~fnv
1c41 : c93f > cmp #(~fnv |fao)&m8 ;expected flags + always on bits
>
> trap_ne
1c43 : d0fe > bne * ;failed not equal (non zero)
>
1c45 : 28 > plp ;restore status
set_a $ff,0
> load_flag 0
1c46 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1c48 : 48 > pha ;use stack to load status
1c49 : a9ff > lda #$ff ;precharge accu
1c4b : 28 > plp
1c4c : 8900 bit #$00 ;00 - should set Z
tst_a $ff,fz
1c4e : 08 > php ;save flags
1c4f : c9ff > cmp #$ff ;test result
> trap_ne
1c51 : d0fe > bne * ;failed not equal (non zero)
>
1c53 : 68 > pla ;load status
1c54 : 48 > pha
> cmp_flag fz
1c55 : c932 > cmp #(fz |fao)&m8 ;expected flags + always on bits
>
> trap_ne
1c57 : d0fe > bne * ;failed not equal (non zero)
>
1c59 : 28 > plp ;restore status
1c5a : ca dex
set_a 1,0
> load_flag 0
1c5b : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1c5d : 48 > pha ;use stack to load status
1c5e : a901 > lda #1 ;precharge accu
1c60 : 28 > plp
1c61 : 8941 bit #$41 ;41 - should clear Z
tst_a 1,0
1c63 : 08 > php ;save flags
1c64 : c901 > cmp #1 ;test result
> trap_ne
1c66 : d0fe > bne * ;failed not equal (non zero)
>
1c68 : 68 > pla ;load status
1c69 : 48 > pha
> cmp_flag 0
1c6a : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1c6c : d0fe > bne * ;failed not equal (non zero)
>
1c6e : 28 > plp ;restore status
; *** DEBUG INFO ***
; if it fails the previous test and your BIT # has set the V flag
; see http://forum.6502.org/viewtopic.php?f=2&t=2241&p=27243#p27239
; why it shouldn't alter N or V flags on a BIT #
1c6f : ca dex
set_a 1,0
> load_flag 0
1c70 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1c72 : 48 > pha ;use stack to load status
1c73 : a901 > lda #1 ;precharge accu
1c75 : 28 > plp
1c76 : 8982 bit #$82 ;82 - should set Z
tst_a 1,fz
1c78 : 08 > php ;save flags
1c79 : c901 > cmp #1 ;test result
> trap_ne
1c7b : d0fe > bne * ;failed not equal (non zero)
>
1c7d : 68 > pla ;load status
1c7e : 48 > pha
> cmp_flag fz
1c7f : c932 > cmp #(fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1c81 : d0fe > bne * ;failed not equal (non zero)
>
1c83 : 28 > plp ;restore status
1c84 : ca dex
set_a 1,0
> load_flag 0
1c85 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1c87 : 48 > pha ;use stack to load status
1c88 : a901 > lda #1 ;precharge accu
1c8a : 28 > plp
1c8b : 89c3 bit #$c3 ;c3 - should clear Z
tst_a 1,0
1c8d : 08 > php ;save flags
1c8e : c901 > cmp #1 ;test result
> trap_ne
1c90 : d0fe > bne * ;failed not equal (non zero)
>
1c92 : 68 > pla ;load status
1c93 : 48 > pha
> cmp_flag 0
1c94 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1c96 : d0fe > bne * ;failed not equal (non zero)
>
1c98 : 28 > plp ;restore status
set_a 1,$ff
> load_flag $ff
1c99 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1c9b : 48 > pha ;use stack to load status
1c9c : a901 > lda #1 ;precharge accu
1c9e : 28 > plp
1c9f : 89c3 bit #$c3 ;c3 - clear Z
tst_a 1,~fz
1ca1 : 08 > php ;save flags
1ca2 : c901 > cmp #1 ;test result
> trap_ne
1ca4 : d0fe > bne * ;failed not equal (non zero)
>
1ca6 : 68 > pla ;load status
1ca7 : 48 > pha
> cmp_flag ~fz
1ca8 : c9fd > cmp #(~fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1caa : d0fe > bne * ;failed not equal (non zero)
>
1cac : 28 > plp ;restore status
1cad : e8 inx
set_a 1,$ff
> load_flag $ff
1cae : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1cb0 : 48 > pha ;use stack to load status
1cb1 : a901 > lda #1 ;precharge accu
1cb3 : 28 > plp
1cb4 : 8982 bit #$82 ;82 - should set Z
tst_a 1,$ff
1cb6 : 08 > php ;save flags
1cb7 : c901 > cmp #1 ;test result
> trap_ne
1cb9 : d0fe > bne * ;failed not equal (non zero)
>
1cbb : 68 > pla ;load status
1cbc : 48 > pha
> cmp_flag $ff
1cbd : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1cbf : d0fe > bne * ;failed not equal (non zero)
>
1cc1 : 28 > plp ;restore status
1cc2 : e8 inx
set_a 1,$ff
> load_flag $ff
1cc3 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1cc5 : 48 > pha ;use stack to load status
1cc6 : a901 > lda #1 ;precharge accu
1cc8 : 28 > plp
1cc9 : 8941 bit #$41 ;41 - should clear Z
tst_a 1,~fz
1ccb : 08 > php ;save flags
1ccc : c901 > cmp #1 ;test result
> trap_ne
1cce : d0fe > bne * ;failed not equal (non zero)
>
1cd0 : 68 > pla ;load status
1cd1 : 48 > pha
> cmp_flag ~fz
1cd2 : c9fd > cmp #(~fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1cd4 : d0fe > bne * ;failed not equal (non zero)
>
1cd6 : 28 > plp ;restore status
1cd7 : e8 inx
set_a $ff,$ff
> load_flag $ff
1cd8 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1cda : 48 > pha ;use stack to load status
1cdb : a9ff > lda #$ff ;precharge accu
1cdd : 28 > plp
1cde : 8900 bit #$00 ;00 - should set Z
tst_a $ff,$ff
1ce0 : 08 > php ;save flags
1ce1 : c9ff > cmp #$ff ;test result
> trap_ne
1ce3 : d0fe > bne * ;failed not equal (non zero)
>
1ce5 : 68 > pla ;load status
1ce6 : 48 > pha
> cmp_flag $ff
1ce7 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1ce9 : d0fe > bne * ;failed not equal (non zero)
>
1ceb : 28 > plp ;restore status
1cec : e003 cpx #3
trap_ne ;x altered during test
1cee : d0fe > bne * ;failed not equal (non zero)
1cf0 : c042 cpy #$42
trap_ne ;y altered during test
1cf2 : d0fe > bne * ;failed not equal (non zero)
1cf4 : ba tsx
1cf5 : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
1cf7 : d0fe > bne * ;failed not equal (non zero)
next_test
1cf9 : ad0202 > lda test_case ;previous test
1cfc : c90f > cmp #test_num
> trap_ne ;test is out of sequence
1cfe : d0fe > bne * ;failed not equal (non zero)
>
0010 = >test_num = test_num + 1
1d00 : a910 > lda #test_num ;*** next tests' number
1d02 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
; testing TRB, TSB - zp / abs
trbt macro ;\1 = memory, \2 = flags
sty \1
load_flag \2
pha
lda zpt+1
plp
trb \1
php
cmp zpt+1
trap_ne ;accu was changed
pla
pha
ora #fz ;mask Z
cmp_flag \2|fz
trap_ne ;flags changed except Z
pla
and #fz
cmp zpt+2
trap_ne ;Z flag invalid
lda zpt+3
cmp zpt
trap_ne ;altered bits in memory wrong
endm
tsbt macro ;\1 = memory, \2 = flags
sty \1
load_flag \2
pha
lda zpt+1
plp
tsb \1
php
cmp zpt+1
trap_ne ;accu was changed
pla
pha
ora #fz ;mask Z
cmp_flag \2|fz
trap_ne ;flags changed except Z
pla
and #fz
cmp zpt+2
trap_ne ;Z flag invalid
lda zpt+4
cmp zpt
trap_ne ;altered bits in memory wrong
endm
1d05 : a2c0 ldx #$c0
1d07 : a000 ldy #0 ;op1 - memory save
; zpt ;op1 - memory modifiable
1d09 : 640d stz zpt+1 ;op2 - accu
; zpt+2 ;and flags
; zpt+3 ;memory after reset
; zpt+4 ;memory after set
1d0b : 98 tbt1 tya
1d0c : 250d and zpt+1 ;set Z by anding the 2 operands
1d0e : 08 php
1d0f : 68 pla
1d10 : 2902 and #fz ;mask Z
1d12 : 850e sta zpt+2
1d14 : 98 tya ;reset op1 bits by op2
1d15 : 49ff eor #$ff
1d17 : 050d ora zpt+1
1d19 : 49ff eor #$ff
1d1b : 850f sta zpt+3
1d1d : 98 tya ;set op1 bits by op2
1d1e : 050d ora zpt+1
1d20 : 8510 sta zpt+4
trbt zpt,$ff
1d22 : 840c > sty zpt
> load_flag $ff
1d24 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1d26 : 48 > pha
1d27 : a50d > lda zpt+1
1d29 : 28 > plp
1d2a : 140c > trb zpt
1d2c : 08 > php
1d2d : c50d > cmp zpt+1
> trap_ne ;accu was changed
1d2f : d0fe > bne * ;failed not equal (non zero)
>
1d31 : 68 > pla
1d32 : 48 > pha
1d33 : 0902 > ora #fz ;mask Z
> cmp_flag $ff|fz
1d35 : c9ff > cmp #($ff|fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne ;flags changed except Z
1d37 : d0fe > bne * ;failed not equal (non zero)
>
1d39 : 68 > pla
1d3a : 2902 > and #fz
1d3c : c50e > cmp zpt+2
> trap_ne ;Z flag invalid
1d3e : d0fe > bne * ;failed not equal (non zero)
>
1d40 : a50f > lda zpt+3
1d42 : c50c > cmp zpt
> trap_ne ;altered bits in memory wrong
1d44 : d0fe > bne * ;failed not equal (non zero)
>
trbt abst,$ff
1d46 : 8c0502 > sty abst
> load_flag $ff
1d49 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1d4b : 48 > pha
1d4c : a50d > lda zpt+1
1d4e : 28 > plp
1d4f : 1c0502 > trb abst
1d52 : 08 > php
1d53 : c50d > cmp zpt+1
> trap_ne ;accu was changed
1d55 : d0fe > bne * ;failed not equal (non zero)
>
1d57 : 68 > pla
1d58 : 48 > pha
1d59 : 0902 > ora #fz ;mask Z
> cmp_flag $ff|fz
1d5b : c9ff > cmp #($ff|fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne ;flags changed except Z
1d5d : d0fe > bne * ;failed not equal (non zero)
>
1d5f : 68 > pla
1d60 : 2902 > and #fz
1d62 : c50e > cmp zpt+2
> trap_ne ;Z flag invalid
1d64 : d0fe > bne * ;failed not equal (non zero)
>
1d66 : a50f > lda zpt+3
1d68 : c50c > cmp zpt
> trap_ne ;altered bits in memory wrong
1d6a : d0fe > bne * ;failed not equal (non zero)
>
trbt zpt,0
1d6c : 840c > sty zpt
> load_flag 0
1d6e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1d70 : 48 > pha
1d71 : a50d > lda zpt+1
1d73 : 28 > plp
1d74 : 140c > trb zpt
1d76 : 08 > php
1d77 : c50d > cmp zpt+1
> trap_ne ;accu was changed
1d79 : d0fe > bne * ;failed not equal (non zero)
>
1d7b : 68 > pla
1d7c : 48 > pha
1d7d : 0902 > ora #fz ;mask Z
> cmp_flag 0|fz
1d7f : c932 > cmp #(0|fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne ;flags changed except Z
1d81 : d0fe > bne * ;failed not equal (non zero)
>
1d83 : 68 > pla
1d84 : 2902 > and #fz
1d86 : c50e > cmp zpt+2
> trap_ne ;Z flag invalid
1d88 : d0fe > bne * ;failed not equal (non zero)
>
1d8a : a50f > lda zpt+3
1d8c : c50c > cmp zpt
> trap_ne ;altered bits in memory wrong
1d8e : d0fe > bne * ;failed not equal (non zero)
>
trbt abst,0
1d90 : 8c0502 > sty abst
> load_flag 0
1d93 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1d95 : 48 > pha
1d96 : a50d > lda zpt+1
1d98 : 28 > plp
1d99 : 1c0502 > trb abst
1d9c : 08 > php
1d9d : c50d > cmp zpt+1
> trap_ne ;accu was changed
1d9f : d0fe > bne * ;failed not equal (non zero)
>
1da1 : 68 > pla
1da2 : 48 > pha
1da3 : 0902 > ora #fz ;mask Z
> cmp_flag 0|fz
1da5 : c932 > cmp #(0|fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne ;flags changed except Z
1da7 : d0fe > bne * ;failed not equal (non zero)
>
1da9 : 68 > pla
1daa : 2902 > and #fz
1dac : c50e > cmp zpt+2
> trap_ne ;Z flag invalid
1dae : d0fe > bne * ;failed not equal (non zero)
>
1db0 : a50f > lda zpt+3
1db2 : c50c > cmp zpt
> trap_ne ;altered bits in memory wrong
1db4 : d0fe > bne * ;failed not equal (non zero)
>
tsbt zpt,$ff
1db6 : 840c > sty zpt
> load_flag $ff
1db8 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1dba : 48 > pha
1dbb : a50d > lda zpt+1
1dbd : 28 > plp
1dbe : 040c > tsb zpt
1dc0 : 08 > php
1dc1 : c50d > cmp zpt+1
> trap_ne ;accu was changed
1dc3 : d0fe > bne * ;failed not equal (non zero)
>
1dc5 : 68 > pla
1dc6 : 48 > pha
1dc7 : 0902 > ora #fz ;mask Z
> cmp_flag $ff|fz
1dc9 : c9ff > cmp #($ff|fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne ;flags changed except Z
1dcb : d0fe > bne * ;failed not equal (non zero)
>
1dcd : 68 > pla
1dce : 2902 > and #fz
1dd0 : c50e > cmp zpt+2
> trap_ne ;Z flag invalid
1dd2 : d0fe > bne * ;failed not equal (non zero)
>
1dd4 : a510 > lda zpt+4
1dd6 : c50c > cmp zpt
> trap_ne ;altered bits in memory wrong
1dd8 : d0fe > bne * ;failed not equal (non zero)
>
tsbt abst,$ff
1dda : 8c0502 > sty abst
> load_flag $ff
1ddd : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1ddf : 48 > pha
1de0 : a50d > lda zpt+1
1de2 : 28 > plp
1de3 : 0c0502 > tsb abst
1de6 : 08 > php
1de7 : c50d > cmp zpt+1
> trap_ne ;accu was changed
1de9 : d0fe > bne * ;failed not equal (non zero)
>
1deb : 68 > pla
1dec : 48 > pha
1ded : 0902 > ora #fz ;mask Z
> cmp_flag $ff|fz
1def : c9ff > cmp #($ff|fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne ;flags changed except Z
1df1 : d0fe > bne * ;failed not equal (non zero)
>
1df3 : 68 > pla
1df4 : 2902 > and #fz
1df6 : c50e > cmp zpt+2
> trap_ne ;Z flag invalid
1df8 : d0fe > bne * ;failed not equal (non zero)
>
1dfa : a510 > lda zpt+4
1dfc : c50c > cmp zpt
> trap_ne ;altered bits in memory wrong
1dfe : d0fe > bne * ;failed not equal (non zero)
>
tsbt zpt,0
1e00 : 840c > sty zpt
> load_flag 0
1e02 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1e04 : 48 > pha
1e05 : a50d > lda zpt+1
1e07 : 28 > plp
1e08 : 040c > tsb zpt
1e0a : 08 > php
1e0b : c50d > cmp zpt+1
> trap_ne ;accu was changed
1e0d : d0fe > bne * ;failed not equal (non zero)
>
1e0f : 68 > pla
1e10 : 48 > pha
1e11 : 0902 > ora #fz ;mask Z
> cmp_flag 0|fz
1e13 : c932 > cmp #(0|fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne ;flags changed except Z
1e15 : d0fe > bne * ;failed not equal (non zero)
>
1e17 : 68 > pla
1e18 : 2902 > and #fz
1e1a : c50e > cmp zpt+2
> trap_ne ;Z flag invalid
1e1c : d0fe > bne * ;failed not equal (non zero)
>
1e1e : a510 > lda zpt+4
1e20 : c50c > cmp zpt
> trap_ne ;altered bits in memory wrong
1e22 : d0fe > bne * ;failed not equal (non zero)
>
tsbt abst,0
1e24 : 8c0502 > sty abst
> load_flag 0
1e27 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1e29 : 48 > pha
1e2a : a50d > lda zpt+1
1e2c : 28 > plp
1e2d : 0c0502 > tsb abst
1e30 : 08 > php
1e31 : c50d > cmp zpt+1
> trap_ne ;accu was changed
1e33 : d0fe > bne * ;failed not equal (non zero)
>
1e35 : 68 > pla
1e36 : 48 > pha
1e37 : 0902 > ora #fz ;mask Z
> cmp_flag 0|fz
1e39 : c932 > cmp #(0|fz|fao)&m8 ;expected flags + always on bits
>
> trap_ne ;flags changed except Z
1e3b : d0fe > bne * ;failed not equal (non zero)
>
1e3d : 68 > pla
1e3e : 2902 > and #fz
1e40 : c50e > cmp zpt+2
> trap_ne ;Z flag invalid
1e42 : d0fe > bne * ;failed not equal (non zero)
>
1e44 : a510 > lda zpt+4
1e46 : c50c > cmp zpt
> trap_ne ;altered bits in memory wrong
1e48 : d0fe > bne * ;failed not equal (non zero)
>
1e4a : c8 iny ;iterate op1
1e4b : d004 bne tbt3
1e4d : e60d inc zpt+1 ;iterate op2
1e4f : f003 beq tbt2
1e51 : 4c0b1d tbt3 jmp tbt1
1e54 : tbt2
1e54 : e0c0 cpx #$c0
trap_ne ;x altered during test
1e56 : d0fe > bne * ;failed not equal (non zero)
1e58 : ba tsx
1e59 : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
1e5b : d0fe > bne * ;failed not equal (non zero)
next_test
1e5d : ad0202 > lda test_case ;previous test
1e60 : c910 > cmp #test_num
> trap_ne ;test is out of sequence
1e62 : d0fe > bne * ;failed not equal (non zero)
>
0011 = >test_num = test_num + 1
1e64 : a911 > lda #test_num ;*** next tests' number
1e66 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
if rkwl_wdc_op = 1
; testing RMB, SMB - zp
rmbt macro ;\1 = bitnum
lda #$ff
sta zpt
set_a $a5,0
rmb \1,zpt
tst_a $a5,0
lda zpt
cmp #$ff-(1<<\1)
trap_ne ;wrong bits set or cleared
lda #1<<\1
sta zpt
set_a $5a,$ff
rmb \1,zpt
tst_a $5a,$ff
lda zpt
trap_ne ;wrong bits set or cleared
endm
smbt macro ;\1 = bitnum
lda #$ff-(1<<\1)
sta zpt
set_a $a5,0
smb \1,zpt
tst_a $a5,0
lda zpt
cmp #$ff
trap_ne ;wrong bits set or cleared
lda #0
sta zpt
set_a $5a,$ff
smb \1,zpt
tst_a $5a,$ff
lda zpt
cmp #1<<\1
trap_ne ;wrong bits set or cleared
endm
1e69 : a2ba ldx #$ba ;protect x & y
1e6b : a0d0 ldy #$d0
rmbt 0
1e6d : a9ff > lda #$ff
1e6f : 850c > sta zpt
> set_a $a5,0
> load_flag 0
1e71 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1e73 : 48 > pha ;use stack to load status
1e74 : a9a5 > lda #$a5 ;precharge accu
1e76 : 28 > plp
>
1e77 : 070c > rmb 0,zpt
> tst_a $a5,0
1e79 : 08 > php ;save flags
1e7a : c9a5 > cmp #$a5 ;test result
> trap_ne
1e7c : d0fe > bne * ;failed not equal (non zero)
>
1e7e : 68 > pla ;load status
1e7f : 48 > pha
> cmp_flag 0
1e80 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1e82 : d0fe > bne * ;failed not equal (non zero)
>
1e84 : 28 > plp ;restore status
>
1e85 : a50c > lda zpt
1e87 : c9fe > cmp #$ff-(1<<0)
> trap_ne ;wrong bits set or cleared
1e89 : d0fe > bne * ;failed not equal (non zero)
>
1e8b : a901 > lda #1<<0
1e8d : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
1e8f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1e91 : 48 > pha ;use stack to load status
1e92 : a95a > lda #$5a ;precharge accu
1e94 : 28 > plp
>
1e95 : 070c > rmb 0,zpt
> tst_a $5a,$ff
1e97 : 08 > php ;save flags
1e98 : c95a > cmp #$5a ;test result
> trap_ne
1e9a : d0fe > bne * ;failed not equal (non zero)
>
1e9c : 68 > pla ;load status
1e9d : 48 > pha
> cmp_flag $ff
1e9e : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1ea0 : d0fe > bne * ;failed not equal (non zero)
>
1ea2 : 28 > plp ;restore status
>
1ea3 : a50c > lda zpt
> trap_ne ;wrong bits set or cleared
1ea5 : d0fe > bne * ;failed not equal (non zero)
>
rmbt 1
1ea7 : a9ff > lda #$ff
1ea9 : 850c > sta zpt
> set_a $a5,0
> load_flag 0
1eab : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1ead : 48 > pha ;use stack to load status
1eae : a9a5 > lda #$a5 ;precharge accu
1eb0 : 28 > plp
>
1eb1 : 170c > rmb 1,zpt
> tst_a $a5,0
1eb3 : 08 > php ;save flags
1eb4 : c9a5 > cmp #$a5 ;test result
> trap_ne
1eb6 : d0fe > bne * ;failed not equal (non zero)
>
1eb8 : 68 > pla ;load status
1eb9 : 48 > pha
> cmp_flag 0
1eba : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1ebc : d0fe > bne * ;failed not equal (non zero)
>
1ebe : 28 > plp ;restore status
>
1ebf : a50c > lda zpt
1ec1 : c9fd > cmp #$ff-(1<<1)
> trap_ne ;wrong bits set or cleared
1ec3 : d0fe > bne * ;failed not equal (non zero)
>
1ec5 : a902 > lda #1<<1
1ec7 : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
1ec9 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1ecb : 48 > pha ;use stack to load status
1ecc : a95a > lda #$5a ;precharge accu
1ece : 28 > plp
>
1ecf : 170c > rmb 1,zpt
> tst_a $5a,$ff
1ed1 : 08 > php ;save flags
1ed2 : c95a > cmp #$5a ;test result
> trap_ne
1ed4 : d0fe > bne * ;failed not equal (non zero)
>
1ed6 : 68 > pla ;load status
1ed7 : 48 > pha
> cmp_flag $ff
1ed8 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1eda : d0fe > bne * ;failed not equal (non zero)
>
1edc : 28 > plp ;restore status
>
1edd : a50c > lda zpt
> trap_ne ;wrong bits set or cleared
1edf : d0fe > bne * ;failed not equal (non zero)
>
rmbt 2
1ee1 : a9ff > lda #$ff
1ee3 : 850c > sta zpt
> set_a $a5,0
> load_flag 0
1ee5 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1ee7 : 48 > pha ;use stack to load status
1ee8 : a9a5 > lda #$a5 ;precharge accu
1eea : 28 > plp
>
1eeb : 270c > rmb 2,zpt
> tst_a $a5,0
1eed : 08 > php ;save flags
1eee : c9a5 > cmp #$a5 ;test result
> trap_ne
1ef0 : d0fe > bne * ;failed not equal (non zero)
>
1ef2 : 68 > pla ;load status
1ef3 : 48 > pha
> cmp_flag 0
1ef4 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1ef6 : d0fe > bne * ;failed not equal (non zero)
>
1ef8 : 28 > plp ;restore status
>
1ef9 : a50c > lda zpt
1efb : c9fb > cmp #$ff-(1<<2)
> trap_ne ;wrong bits set or cleared
1efd : d0fe > bne * ;failed not equal (non zero)
>
1eff : a904 > lda #1<<2
1f01 : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
1f03 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1f05 : 48 > pha ;use stack to load status
1f06 : a95a > lda #$5a ;precharge accu
1f08 : 28 > plp
>
1f09 : 270c > rmb 2,zpt
> tst_a $5a,$ff
1f0b : 08 > php ;save flags
1f0c : c95a > cmp #$5a ;test result
> trap_ne
1f0e : d0fe > bne * ;failed not equal (non zero)
>
1f10 : 68 > pla ;load status
1f11 : 48 > pha
> cmp_flag $ff
1f12 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1f14 : d0fe > bne * ;failed not equal (non zero)
>
1f16 : 28 > plp ;restore status
>
1f17 : a50c > lda zpt
> trap_ne ;wrong bits set or cleared
1f19 : d0fe > bne * ;failed not equal (non zero)
>
rmbt 3
1f1b : a9ff > lda #$ff
1f1d : 850c > sta zpt
> set_a $a5,0
> load_flag 0
1f1f : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1f21 : 48 > pha ;use stack to load status
1f22 : a9a5 > lda #$a5 ;precharge accu
1f24 : 28 > plp
>
1f25 : 370c > rmb 3,zpt
> tst_a $a5,0
1f27 : 08 > php ;save flags
1f28 : c9a5 > cmp #$a5 ;test result
> trap_ne
1f2a : d0fe > bne * ;failed not equal (non zero)
>
1f2c : 68 > pla ;load status
1f2d : 48 > pha
> cmp_flag 0
1f2e : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1f30 : d0fe > bne * ;failed not equal (non zero)
>
1f32 : 28 > plp ;restore status
>
1f33 : a50c > lda zpt
1f35 : c9f7 > cmp #$ff-(1<<3)
> trap_ne ;wrong bits set or cleared
1f37 : d0fe > bne * ;failed not equal (non zero)
>
1f39 : a908 > lda #1<<3
1f3b : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
1f3d : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1f3f : 48 > pha ;use stack to load status
1f40 : a95a > lda #$5a ;precharge accu
1f42 : 28 > plp
>
1f43 : 370c > rmb 3,zpt
> tst_a $5a,$ff
1f45 : 08 > php ;save flags
1f46 : c95a > cmp #$5a ;test result
> trap_ne
1f48 : d0fe > bne * ;failed not equal (non zero)
>
1f4a : 68 > pla ;load status
1f4b : 48 > pha
> cmp_flag $ff
1f4c : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1f4e : d0fe > bne * ;failed not equal (non zero)
>
1f50 : 28 > plp ;restore status
>
1f51 : a50c > lda zpt
> trap_ne ;wrong bits set or cleared
1f53 : d0fe > bne * ;failed not equal (non zero)
>
rmbt 4
1f55 : a9ff > lda #$ff
1f57 : 850c > sta zpt
> set_a $a5,0
> load_flag 0
1f59 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1f5b : 48 > pha ;use stack to load status
1f5c : a9a5 > lda #$a5 ;precharge accu
1f5e : 28 > plp
>
1f5f : 470c > rmb 4,zpt
> tst_a $a5,0
1f61 : 08 > php ;save flags
1f62 : c9a5 > cmp #$a5 ;test result
> trap_ne
1f64 : d0fe > bne * ;failed not equal (non zero)
>
1f66 : 68 > pla ;load status
1f67 : 48 > pha
> cmp_flag 0
1f68 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1f6a : d0fe > bne * ;failed not equal (non zero)
>
1f6c : 28 > plp ;restore status
>
1f6d : a50c > lda zpt
1f6f : c9ef > cmp #$ff-(1<<4)
> trap_ne ;wrong bits set or cleared
1f71 : d0fe > bne * ;failed not equal (non zero)
>
1f73 : a910 > lda #1<<4
1f75 : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
1f77 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1f79 : 48 > pha ;use stack to load status
1f7a : a95a > lda #$5a ;precharge accu
1f7c : 28 > plp
>
1f7d : 470c > rmb 4,zpt
> tst_a $5a,$ff
1f7f : 08 > php ;save flags
1f80 : c95a > cmp #$5a ;test result
> trap_ne
1f82 : d0fe > bne * ;failed not equal (non zero)
>
1f84 : 68 > pla ;load status
1f85 : 48 > pha
> cmp_flag $ff
1f86 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1f88 : d0fe > bne * ;failed not equal (non zero)
>
1f8a : 28 > plp ;restore status
>
1f8b : a50c > lda zpt
> trap_ne ;wrong bits set or cleared
1f8d : d0fe > bne * ;failed not equal (non zero)
>
rmbt 5
1f8f : a9ff > lda #$ff
1f91 : 850c > sta zpt
> set_a $a5,0
> load_flag 0
1f93 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1f95 : 48 > pha ;use stack to load status
1f96 : a9a5 > lda #$a5 ;precharge accu
1f98 : 28 > plp
>
1f99 : 570c > rmb 5,zpt
> tst_a $a5,0
1f9b : 08 > php ;save flags
1f9c : c9a5 > cmp #$a5 ;test result
> trap_ne
1f9e : d0fe > bne * ;failed not equal (non zero)
>
1fa0 : 68 > pla ;load status
1fa1 : 48 > pha
> cmp_flag 0
1fa2 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1fa4 : d0fe > bne * ;failed not equal (non zero)
>
1fa6 : 28 > plp ;restore status
>
1fa7 : a50c > lda zpt
1fa9 : c9df > cmp #$ff-(1<<5)
> trap_ne ;wrong bits set or cleared
1fab : d0fe > bne * ;failed not equal (non zero)
>
1fad : a920 > lda #1<<5
1faf : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
1fb1 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1fb3 : 48 > pha ;use stack to load status
1fb4 : a95a > lda #$5a ;precharge accu
1fb6 : 28 > plp
>
1fb7 : 570c > rmb 5,zpt
> tst_a $5a,$ff
1fb9 : 08 > php ;save flags
1fba : c95a > cmp #$5a ;test result
> trap_ne
1fbc : d0fe > bne * ;failed not equal (non zero)
>
1fbe : 68 > pla ;load status
1fbf : 48 > pha
> cmp_flag $ff
1fc0 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1fc2 : d0fe > bne * ;failed not equal (non zero)
>
1fc4 : 28 > plp ;restore status
>
1fc5 : a50c > lda zpt
> trap_ne ;wrong bits set or cleared
1fc7 : d0fe > bne * ;failed not equal (non zero)
>
rmbt 6
1fc9 : a9ff > lda #$ff
1fcb : 850c > sta zpt
> set_a $a5,0
> load_flag 0
1fcd : a900 > lda #0 ;allow test to change I-flag (no mask)
>
1fcf : 48 > pha ;use stack to load status
1fd0 : a9a5 > lda #$a5 ;precharge accu
1fd2 : 28 > plp
>
1fd3 : 670c > rmb 6,zpt
> tst_a $a5,0
1fd5 : 08 > php ;save flags
1fd6 : c9a5 > cmp #$a5 ;test result
> trap_ne
1fd8 : d0fe > bne * ;failed not equal (non zero)
>
1fda : 68 > pla ;load status
1fdb : 48 > pha
> cmp_flag 0
1fdc : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1fde : d0fe > bne * ;failed not equal (non zero)
>
1fe0 : 28 > plp ;restore status
>
1fe1 : a50c > lda zpt
1fe3 : c9bf > cmp #$ff-(1<<6)
> trap_ne ;wrong bits set or cleared
1fe5 : d0fe > bne * ;failed not equal (non zero)
>
1fe7 : a940 > lda #1<<6
1fe9 : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
1feb : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
1fed : 48 > pha ;use stack to load status
1fee : a95a > lda #$5a ;precharge accu
1ff0 : 28 > plp
>
1ff1 : 670c > rmb 6,zpt
> tst_a $5a,$ff
1ff3 : 08 > php ;save flags
1ff4 : c95a > cmp #$5a ;test result
> trap_ne
1ff6 : d0fe > bne * ;failed not equal (non zero)
>
1ff8 : 68 > pla ;load status
1ff9 : 48 > pha
> cmp_flag $ff
1ffa : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
1ffc : d0fe > bne * ;failed not equal (non zero)
>
1ffe : 28 > plp ;restore status
>
1fff : a50c > lda zpt
> trap_ne ;wrong bits set or cleared
2001 : d0fe > bne * ;failed not equal (non zero)
>
rmbt 7
2003 : a9ff > lda #$ff
2005 : 850c > sta zpt
> set_a $a5,0
> load_flag 0
2007 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
2009 : 48 > pha ;use stack to load status
200a : a9a5 > lda #$a5 ;precharge accu
200c : 28 > plp
>
200d : 770c > rmb 7,zpt
> tst_a $a5,0
200f : 08 > php ;save flags
2010 : c9a5 > cmp #$a5 ;test result
> trap_ne
2012 : d0fe > bne * ;failed not equal (non zero)
>
2014 : 68 > pla ;load status
2015 : 48 > pha
> cmp_flag 0
2016 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2018 : d0fe > bne * ;failed not equal (non zero)
>
201a : 28 > plp ;restore status
>
201b : a50c > lda zpt
201d : c97f > cmp #$ff-(1<<7)
> trap_ne ;wrong bits set or cleared
201f : d0fe > bne * ;failed not equal (non zero)
>
2021 : a980 > lda #1<<7
2023 : 850c > sta zpt
> set_a $5a,$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 : a95a > lda #$5a ;precharge accu
202a : 28 > plp
>
202b : 770c > rmb 7,zpt
> tst_a $5a,$ff
202d : 08 > php ;save flags
202e : c95a > cmp #$5a ;test result
> trap_ne
2030 : d0fe > bne * ;failed not equal (non zero)
>
2032 : 68 > pla ;load status
2033 : 48 > pha
> cmp_flag $ff
2034 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2036 : d0fe > bne * ;failed not equal (non zero)
>
2038 : 28 > plp ;restore status
>
2039 : a50c > lda zpt
> trap_ne ;wrong bits set or cleared
203b : d0fe > bne * ;failed not equal (non zero)
>
smbt 0
203d : a9fe > lda #$ff-(1<<0)
203f : 850c > sta zpt
> set_a $a5,0
> load_flag 0
2041 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
2043 : 48 > pha ;use stack to load status
2044 : a9a5 > lda #$a5 ;precharge accu
2046 : 28 > plp
>
2047 : 870c > smb 0,zpt
> tst_a $a5,0
2049 : 08 > php ;save flags
204a : c9a5 > cmp #$a5 ;test result
> trap_ne
204c : d0fe > bne * ;failed not equal (non zero)
>
204e : 68 > pla ;load status
204f : 48 > pha
> cmp_flag 0
2050 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2052 : d0fe > bne * ;failed not equal (non zero)
>
2054 : 28 > plp ;restore status
>
2055 : a50c > lda zpt
2057 : c9ff > cmp #$ff
> trap_ne ;wrong bits set or cleared
2059 : d0fe > bne * ;failed not equal (non zero)
>
205b : a900 > lda #0
205d : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
205f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
2061 : 48 > pha ;use stack to load status
2062 : a95a > lda #$5a ;precharge accu
2064 : 28 > plp
>
2065 : 870c > smb 0,zpt
> tst_a $5a,$ff
2067 : 08 > php ;save flags
2068 : c95a > cmp #$5a ;test result
> trap_ne
206a : d0fe > bne * ;failed not equal (non zero)
>
206c : 68 > pla ;load status
206d : 48 > pha
> cmp_flag $ff
206e : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2070 : d0fe > bne * ;failed not equal (non zero)
>
2072 : 28 > plp ;restore status
>
2073 : a50c > lda zpt
2075 : c901 > cmp #1<<0
> trap_ne ;wrong bits set or cleared
2077 : d0fe > bne * ;failed not equal (non zero)
>
smbt 1
2079 : a9fd > lda #$ff-(1<<1)
207b : 850c > sta zpt
> set_a $a5,0
> load_flag 0
207d : a900 > lda #0 ;allow test to change I-flag (no mask)
>
207f : 48 > pha ;use stack to load status
2080 : a9a5 > lda #$a5 ;precharge accu
2082 : 28 > plp
>
2083 : 970c > smb 1,zpt
> tst_a $a5,0
2085 : 08 > php ;save flags
2086 : c9a5 > cmp #$a5 ;test result
> trap_ne
2088 : d0fe > bne * ;failed not equal (non zero)
>
208a : 68 > pla ;load status
208b : 48 > pha
> cmp_flag 0
208c : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
208e : d0fe > bne * ;failed not equal (non zero)
>
2090 : 28 > plp ;restore status
>
2091 : a50c > lda zpt
2093 : c9ff > cmp #$ff
> trap_ne ;wrong bits set or cleared
2095 : d0fe > bne * ;failed not equal (non zero)
>
2097 : a900 > lda #0
2099 : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
209b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
209d : 48 > pha ;use stack to load status
209e : a95a > lda #$5a ;precharge accu
20a0 : 28 > plp
>
20a1 : 970c > smb 1,zpt
> tst_a $5a,$ff
20a3 : 08 > php ;save flags
20a4 : c95a > cmp #$5a ;test result
> trap_ne
20a6 : d0fe > bne * ;failed not equal (non zero)
>
20a8 : 68 > pla ;load status
20a9 : 48 > pha
> cmp_flag $ff
20aa : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
20ac : d0fe > bne * ;failed not equal (non zero)
>
20ae : 28 > plp ;restore status
>
20af : a50c > lda zpt
20b1 : c902 > cmp #1<<1
> trap_ne ;wrong bits set or cleared
20b3 : d0fe > bne * ;failed not equal (non zero)
>
smbt 2
20b5 : a9fb > lda #$ff-(1<<2)
20b7 : 850c > sta zpt
> set_a $a5,0
> load_flag 0
20b9 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
20bb : 48 > pha ;use stack to load status
20bc : a9a5 > lda #$a5 ;precharge accu
20be : 28 > plp
>
20bf : a70c > smb 2,zpt
> tst_a $a5,0
20c1 : 08 > php ;save flags
20c2 : c9a5 > cmp #$a5 ;test result
> trap_ne
20c4 : d0fe > bne * ;failed not equal (non zero)
>
20c6 : 68 > pla ;load status
20c7 : 48 > pha
> cmp_flag 0
20c8 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
20ca : d0fe > bne * ;failed not equal (non zero)
>
20cc : 28 > plp ;restore status
>
20cd : a50c > lda zpt
20cf : c9ff > cmp #$ff
> trap_ne ;wrong bits set or cleared
20d1 : d0fe > bne * ;failed not equal (non zero)
>
20d3 : a900 > lda #0
20d5 : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
20d7 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
20d9 : 48 > pha ;use stack to load status
20da : a95a > lda #$5a ;precharge accu
20dc : 28 > plp
>
20dd : a70c > smb 2,zpt
> tst_a $5a,$ff
20df : 08 > php ;save flags
20e0 : c95a > cmp #$5a ;test result
> trap_ne
20e2 : d0fe > bne * ;failed not equal (non zero)
>
20e4 : 68 > pla ;load status
20e5 : 48 > pha
> cmp_flag $ff
20e6 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
20e8 : d0fe > bne * ;failed not equal (non zero)
>
20ea : 28 > plp ;restore status
>
20eb : a50c > lda zpt
20ed : c904 > cmp #1<<2
> trap_ne ;wrong bits set or cleared
20ef : d0fe > bne * ;failed not equal (non zero)
>
smbt 3
20f1 : a9f7 > lda #$ff-(1<<3)
20f3 : 850c > sta zpt
> set_a $a5,0
> load_flag 0
20f5 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
20f7 : 48 > pha ;use stack to load status
20f8 : a9a5 > lda #$a5 ;precharge accu
20fa : 28 > plp
>
20fb : b70c > smb 3,zpt
> tst_a $a5,0
20fd : 08 > php ;save flags
20fe : c9a5 > cmp #$a5 ;test result
> trap_ne
2100 : d0fe > bne * ;failed not equal (non zero)
>
2102 : 68 > pla ;load status
2103 : 48 > pha
> cmp_flag 0
2104 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2106 : d0fe > bne * ;failed not equal (non zero)
>
2108 : 28 > plp ;restore status
>
2109 : a50c > lda zpt
210b : c9ff > cmp #$ff
> trap_ne ;wrong bits set or cleared
210d : d0fe > bne * ;failed not equal (non zero)
>
210f : a900 > lda #0
2111 : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
2113 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
2115 : 48 > pha ;use stack to load status
2116 : a95a > lda #$5a ;precharge accu
2118 : 28 > plp
>
2119 : b70c > smb 3,zpt
> tst_a $5a,$ff
211b : 08 > php ;save flags
211c : c95a > cmp #$5a ;test result
> trap_ne
211e : d0fe > bne * ;failed not equal (non zero)
>
2120 : 68 > pla ;load status
2121 : 48 > pha
> cmp_flag $ff
2122 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2124 : d0fe > bne * ;failed not equal (non zero)
>
2126 : 28 > plp ;restore status
>
2127 : a50c > lda zpt
2129 : c908 > cmp #1<<3
> trap_ne ;wrong bits set or cleared
212b : d0fe > bne * ;failed not equal (non zero)
>
smbt 4
212d : a9ef > lda #$ff-(1<<4)
212f : 850c > sta zpt
> set_a $a5,0
> load_flag 0
2131 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
2133 : 48 > pha ;use stack to load status
2134 : a9a5 > lda #$a5 ;precharge accu
2136 : 28 > plp
>
2137 : c70c > smb 4,zpt
> tst_a $a5,0
2139 : 08 > php ;save flags
213a : c9a5 > cmp #$a5 ;test result
> trap_ne
213c : d0fe > bne * ;failed not equal (non zero)
>
213e : 68 > pla ;load status
213f : 48 > pha
> cmp_flag 0
2140 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2142 : d0fe > bne * ;failed not equal (non zero)
>
2144 : 28 > plp ;restore status
>
2145 : a50c > lda zpt
2147 : c9ff > cmp #$ff
> trap_ne ;wrong bits set or cleared
2149 : d0fe > bne * ;failed not equal (non zero)
>
214b : a900 > lda #0
214d : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
214f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
2151 : 48 > pha ;use stack to load status
2152 : a95a > lda #$5a ;precharge accu
2154 : 28 > plp
>
2155 : c70c > smb 4,zpt
> tst_a $5a,$ff
2157 : 08 > php ;save flags
2158 : c95a > cmp #$5a ;test result
> trap_ne
215a : d0fe > bne * ;failed not equal (non zero)
>
215c : 68 > pla ;load status
215d : 48 > pha
> cmp_flag $ff
215e : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2160 : d0fe > bne * ;failed not equal (non zero)
>
2162 : 28 > plp ;restore status
>
2163 : a50c > lda zpt
2165 : c910 > cmp #1<<4
> trap_ne ;wrong bits set or cleared
2167 : d0fe > bne * ;failed not equal (non zero)
>
smbt 5
2169 : a9df > lda #$ff-(1<<5)
216b : 850c > sta zpt
> set_a $a5,0
> load_flag 0
216d : a900 > lda #0 ;allow test to change I-flag (no mask)
>
216f : 48 > pha ;use stack to load status
2170 : a9a5 > lda #$a5 ;precharge accu
2172 : 28 > plp
>
2173 : d70c > smb 5,zpt
> tst_a $a5,0
2175 : 08 > php ;save flags
2176 : c9a5 > cmp #$a5 ;test result
> trap_ne
2178 : d0fe > bne * ;failed not equal (non zero)
>
217a : 68 > pla ;load status
217b : 48 > pha
> cmp_flag 0
217c : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
217e : d0fe > bne * ;failed not equal (non zero)
>
2180 : 28 > plp ;restore status
>
2181 : a50c > lda zpt
2183 : c9ff > cmp #$ff
> trap_ne ;wrong bits set or cleared
2185 : d0fe > bne * ;failed not equal (non zero)
>
2187 : a900 > lda #0
2189 : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
218b : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
218d : 48 > pha ;use stack to load status
218e : a95a > lda #$5a ;precharge accu
2190 : 28 > plp
>
2191 : d70c > smb 5,zpt
> tst_a $5a,$ff
2193 : 08 > php ;save flags
2194 : c95a > cmp #$5a ;test result
> trap_ne
2196 : d0fe > bne * ;failed not equal (non zero)
>
2198 : 68 > pla ;load status
2199 : 48 > pha
> cmp_flag $ff
219a : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
219c : d0fe > bne * ;failed not equal (non zero)
>
219e : 28 > plp ;restore status
>
219f : a50c > lda zpt
21a1 : c920 > cmp #1<<5
> trap_ne ;wrong bits set or cleared
21a3 : d0fe > bne * ;failed not equal (non zero)
>
smbt 6
21a5 : a9bf > lda #$ff-(1<<6)
21a7 : 850c > sta zpt
> set_a $a5,0
> load_flag 0
21a9 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
21ab : 48 > pha ;use stack to load status
21ac : a9a5 > lda #$a5 ;precharge accu
21ae : 28 > plp
>
21af : e70c > smb 6,zpt
> tst_a $a5,0
21b1 : 08 > php ;save flags
21b2 : c9a5 > cmp #$a5 ;test result
> trap_ne
21b4 : d0fe > bne * ;failed not equal (non zero)
>
21b6 : 68 > pla ;load status
21b7 : 48 > pha
> cmp_flag 0
21b8 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
21ba : d0fe > bne * ;failed not equal (non zero)
>
21bc : 28 > plp ;restore status
>
21bd : a50c > lda zpt
21bf : c9ff > cmp #$ff
> trap_ne ;wrong bits set or cleared
21c1 : d0fe > bne * ;failed not equal (non zero)
>
21c3 : a900 > lda #0
21c5 : 850c > sta zpt
> set_a $5a,$ff
> load_flag $ff
21c7 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
21c9 : 48 > pha ;use stack to load status
21ca : a95a > lda #$5a ;precharge accu
21cc : 28 > plp
>
21cd : e70c > smb 6,zpt
> tst_a $5a,$ff
21cf : 08 > php ;save flags
21d0 : c95a > cmp #$5a ;test result
> trap_ne
21d2 : d0fe > bne * ;failed not equal (non zero)
>
21d4 : 68 > pla ;load status
21d5 : 48 > pha
> cmp_flag $ff
21d6 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
21d8 : d0fe > bne * ;failed not equal (non zero)
>
21da : 28 > plp ;restore status
>
21db : a50c > lda zpt
21dd : c940 > cmp #1<<6
> trap_ne ;wrong bits set or cleared
21df : d0fe > bne * ;failed not equal (non zero)
>
smbt 7
21e1 : a97f > lda #$ff-(1<<7)
21e3 : 850c > sta zpt
> set_a $a5,0
> load_flag 0
21e5 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
21e7 : 48 > pha ;use stack to load status
21e8 : a9a5 > lda #$a5 ;precharge accu
21ea : 28 > plp
>
21eb : f70c > smb 7,zpt
> tst_a $a5,0
21ed : 08 > php ;save flags
21ee : c9a5 > cmp #$a5 ;test result
> trap_ne
21f0 : d0fe > bne * ;failed not equal (non zero)
>
21f2 : 68 > pla ;load status
21f3 : 48 > pha
> cmp_flag 0
21f4 : c930 > cmp #(0|fao)&m8 ;expected flags + always on bits
>
> trap_ne
21f6 : d0fe > bne * ;failed not equal (non zero)
>
21f8 : 28 > plp ;restore status
>
21f9 : a50c > lda zpt
21fb : c9ff > cmp #$ff
> trap_ne ;wrong bits set or cleared
21fd : d0fe > bne * ;failed not equal (non zero)
>
21ff : a900 > lda #0
2201 : 850c > sta zpt
> set_a $5a,$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 : a95a > lda #$5a ;precharge accu
2208 : 28 > plp
>
2209 : f70c > smb 7,zpt
> tst_a $5a,$ff
220b : 08 > php ;save flags
220c : c95a > cmp #$5a ;test result
> trap_ne
220e : d0fe > bne * ;failed not equal (non zero)
>
2210 : 68 > pla ;load status
2211 : 48 > pha
> cmp_flag $ff
2212 : c9ff > cmp #($ff|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2214 : d0fe > bne * ;failed not equal (non zero)
>
2216 : 28 > plp ;restore status
>
2217 : a50c > lda zpt
2219 : c980 > cmp #1<<7
> trap_ne ;wrong bits set or cleared
221b : d0fe > bne * ;failed not equal (non zero)
>
221d : e0ba cpx #$ba
trap_ne ;x altered during test
221f : d0fe > bne * ;failed not equal (non zero)
2221 : c0d0 cpy #$d0
trap_ne ;y altered during test
2223 : d0fe > bne * ;failed not equal (non zero)
2225 : ba tsx
2226 : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
2228 : d0fe > bne * ;failed not equal (non zero)
next_test
222a : ad0202 > lda test_case ;previous test
222d : c911 > cmp #test_num
> trap_ne ;test is out of sequence
222f : d0fe > bne * ;failed not equal (non zero)
>
0012 = >test_num = test_num + 1
2231 : a912 > lda #test_num ;*** next tests' number
2233 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
endif
; testing CMP - (zp)
2236 : a2de ldx #$de ;protect x & y
2238 : a0ad ldy #$ad
set_a $80,0
> load_flag 0
223a : a900 > lda #0 ;allow test to change I-flag (no mask)
>
223c : 48 > pha ;use stack to load status
223d : a980 > lda #$80 ;precharge accu
223f : 28 > plp
2240 : d22c cmp (ind1+8)
tst_a $80,fc
2242 : 08 > php ;save flags
2243 : c980 > cmp #$80 ;test result
> trap_ne
2245 : d0fe > bne * ;failed not equal (non zero)
>
2247 : 68 > pla ;load status
2248 : 48 > pha
> cmp_flag fc
2249 : c931 > cmp #(fc|fao)&m8 ;expected flags + always on bits
>
> trap_ne
224b : d0fe > bne * ;failed not equal (non zero)
>
224d : 28 > plp ;restore status
set_a $7f,0
> load_flag 0
224e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
2250 : 48 > pha ;use stack to load status
2251 : a97f > lda #$7f ;precharge accu
2253 : 28 > plp
2254 : d22c cmp (ind1+8)
tst_a $7f,fzc
2256 : 08 > php ;save flags
2257 : c97f > cmp #$7f ;test result
> trap_ne
2259 : d0fe > bne * ;failed not equal (non zero)
>
225b : 68 > pla ;load status
225c : 48 > pha
> cmp_flag fzc
225d : c933 > cmp #(fzc|fao)&m8 ;expected flags + always on bits
>
> trap_ne
225f : d0fe > bne * ;failed not equal (non zero)
>
2261 : 28 > plp ;restore status
set_a $7e,0
> load_flag 0
2262 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
2264 : 48 > pha ;use stack to load status
2265 : a97e > lda #$7e ;precharge accu
2267 : 28 > plp
2268 : d22c cmp (ind1+8)
tst_a $7e,fn
226a : 08 > php ;save flags
226b : c97e > cmp #$7e ;test result
> trap_ne
226d : d0fe > bne * ;failed not equal (non zero)
>
226f : 68 > pla ;load status
2270 : 48 > pha
> cmp_flag fn
2271 : c9b0 > cmp #(fn|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2273 : d0fe > bne * ;failed not equal (non zero)
>
2275 : 28 > plp ;restore status
set_a $80,$ff
> load_flag $ff
2276 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
2278 : 48 > pha ;use stack to load status
2279 : a980 > lda #$80 ;precharge accu
227b : 28 > plp
227c : d22c cmp (ind1+8)
tst_a $80,~fnz
227e : 08 > php ;save flags
227f : c980 > cmp #$80 ;test result
> trap_ne
2281 : d0fe > bne * ;failed not equal (non zero)
>
2283 : 68 > pla ;load status
2284 : 48 > pha
> cmp_flag ~fnz
2285 : c97d > cmp #(~fnz|fao)&m8 ;expected flags + always on bits
>
> trap_ne
2287 : d0fe > bne * ;failed not equal (non zero)
>
2289 : 28 > plp ;restore status
set_a $7f,$ff
> load_flag $ff
228a : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
228c : 48 > pha ;use stack to load status
228d : a97f > lda #$7f ;precharge accu
228f : 28 > plp
2290 : d22c cmp (ind1+8)
tst_a $7f,~fn
2292 : 08 > php ;save flags
2293 : c97f > cmp #$7f ;test result
> trap_ne
2295 : d0fe > bne * ;failed not equal (non zero)
>
2297 : 68 > pla ;load status
2298 : 48 > pha
> cmp_flag ~fn
2299 : c97f > cmp #(~fn|fao)&m8 ;expected flags + always on bits
>
> trap_ne
229b : d0fe > bne * ;failed not equal (non zero)
>
229d : 28 > plp ;restore status
set_a $7e,$ff
> load_flag $ff
229e : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
22a0 : 48 > pha ;use stack to load status
22a1 : a97e > lda #$7e ;precharge accu
22a3 : 28 > plp
22a4 : d22c cmp (ind1+8)
tst_a $7e,~fzc
22a6 : 08 > php ;save flags
22a7 : c97e > cmp #$7e ;test result
> trap_ne
22a9 : d0fe > bne * ;failed not equal (non zero)
>
22ab : 68 > pla ;load status
22ac : 48 > pha
> cmp_flag ~fzc
22ad : c9fc > cmp #(~fzc|fao)&m8 ;expected flags + always on bits
>
> trap_ne
22af : d0fe > bne * ;failed not equal (non zero)
>
22b1 : 28 > plp ;restore status
22b2 : e0de cpx #$de
trap_ne ;x altered during test
22b4 : d0fe > bne * ;failed not equal (non zero)
22b6 : c0ad cpy #$ad
trap_ne ;y altered during test
22b8 : d0fe > bne * ;failed not equal (non zero)
22ba : ba tsx
22bb : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
22bd : d0fe > bne * ;failed not equal (non zero)
next_test
22bf : ad0202 > lda test_case ;previous test
22c2 : c912 > cmp #test_num
> trap_ne ;test is out of sequence
22c4 : d0fe > bne * ;failed not equal (non zero)
>
0013 = >test_num = test_num + 1
22c6 : a913 > lda #test_num ;*** next tests' number
22c8 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
; testing logical instructions - AND EOR ORA (zp)
22cb : a242 ldx #$42 ;protect x & y
22cd : a000 ldy #0 ;AND
22cf : a53a lda indAN ;set indirect address
22d1 : 850c sta zpt
22d3 : a53b lda indAN+1
22d5 : 850d sta zpt+1
22d7 : tand1
set_ay absANa,0
> load_flag 0
22d7 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
22d9 : 48 > pha ;use stack to load status
22da : b95302 > lda absANa,y ;precharge accu
22dd : 28 > plp
22de : 320c and (zpt)
tst_ay absrlo,absflo,0
22e0 : 08 > php ;save flags
22e1 : d95b02 > cmp absrlo,y ;test result
> trap_ne ;
22e4 : d0fe > bne * ;failed not equal (non zero)
>
22e6 : 68 > pla ;load status
> eor_flag 0
22e7 : 4930 > eor #0|fao ;invert expected flags + always on bits
>
22e9 : d95f02 > cmp absflo,y ;test flags
> trap_ne
22ec : d0fe > bne * ;failed not equal (non zero)
>
22ee : e60c inc zpt
22f0 : c8 iny
22f1 : c004 cpy #4
22f3 : d0e2 bne tand1
22f5 : 88 dey
22f6 : c60c dec zpt
22f8 : tand2
set_ay absANa,$ff
> load_flag $ff
22f8 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
22fa : 48 > pha ;use stack to load status
22fb : b95302 > lda absANa,y ;precharge accu
22fe : 28 > plp
22ff : 320c and (zpt)
tst_ay absrlo,absflo,$ff-fnz
2301 : 08 > php ;save flags
2302 : d95b02 > cmp absrlo,y ;test result
> trap_ne ;
2305 : d0fe > bne * ;failed not equal (non zero)
>
2307 : 68 > pla ;load status
> eor_flag $ff-fnz
2308 : 497d > eor #$ff-fnz|fao ;invert expected flags + always on bits
>
230a : d95f02 > cmp absflo,y ;test flags
> trap_ne
230d : d0fe > bne * ;failed not equal (non zero)
>
230f : c60c dec zpt
2311 : 88 dey
2312 : 10e4 bpl tand2
2314 : a000 ldy #0 ;EOR
2316 : a542 lda indEO ;set indirect address
2318 : 850c sta zpt
231a : a543 lda indEO+1
231c : 850d sta zpt+1
231e : teor1
set_ay absEOa,0
> load_flag 0
231e : a900 > lda #0 ;allow test to change I-flag (no mask)
>
2320 : 48 > pha ;use stack to load status
2321 : b95702 > lda absEOa,y ;precharge accu
2324 : 28 > plp
2325 : 520c eor (zpt)
tst_ay absrlo,absflo,0
2327 : 08 > php ;save flags
2328 : d95b02 > cmp absrlo,y ;test result
> trap_ne ;
232b : d0fe > bne * ;failed not equal (non zero)
>
232d : 68 > pla ;load status
> eor_flag 0
232e : 4930 > eor #0|fao ;invert expected flags + always on bits
>
2330 : d95f02 > cmp absflo,y ;test flags
> trap_ne
2333 : d0fe > bne * ;failed not equal (non zero)
>
2335 : e60c inc zpt
2337 : c8 iny
2338 : c004 cpy #4
233a : d0e2 bne teor1
233c : 88 dey
233d : c60c dec zpt
233f : teor2
set_ay absEOa,$ff
> load_flag $ff
233f : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
2341 : 48 > pha ;use stack to load status
2342 : b95702 > lda absEOa,y ;precharge accu
2345 : 28 > plp
2346 : 520c eor (zpt)
tst_ay absrlo,absflo,$ff-fnz
2348 : 08 > php ;save flags
2349 : d95b02 > cmp absrlo,y ;test result
> trap_ne ;
234c : d0fe > bne * ;failed not equal (non zero)
>
234e : 68 > pla ;load status
> eor_flag $ff-fnz
234f : 497d > eor #$ff-fnz|fao ;invert expected flags + always on bits
>
2351 : d95f02 > cmp absflo,y ;test flags
> trap_ne
2354 : d0fe > bne * ;failed not equal (non zero)
>
2356 : c60c dec zpt
2358 : 88 dey
2359 : 10e4 bpl teor2
235b : a000 ldy #0 ;ORA
235d : a54a lda indOR ;set indirect address
235f : 850c sta zpt
2361 : a54b lda indOR+1
2363 : 850d sta zpt+1
2365 : tora1
set_ay absORa,0
> load_flag 0
2365 : a900 > lda #0 ;allow test to change I-flag (no mask)
>
2367 : 48 > pha ;use stack to load status
2368 : b94f02 > lda absORa,y ;precharge accu
236b : 28 > plp
236c : 120c ora (zpt)
tst_ay absrlo,absflo,0
236e : 08 > php ;save flags
236f : d95b02 > cmp absrlo,y ;test result
> trap_ne ;
2372 : d0fe > bne * ;failed not equal (non zero)
>
2374 : 68 > pla ;load status
> eor_flag 0
2375 : 4930 > eor #0|fao ;invert expected flags + always on bits
>
2377 : d95f02 > cmp absflo,y ;test flags
> trap_ne
237a : d0fe > bne * ;failed not equal (non zero)
>
237c : e60c inc zpt
237e : c8 iny
237f : c004 cpy #4
2381 : d0e2 bne tora1
2383 : 88 dey
2384 : c60c dec zpt
2386 : tora2
set_ay absORa,$ff
> load_flag $ff
2386 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
2388 : 48 > pha ;use stack to load status
2389 : b94f02 > lda absORa,y ;precharge accu
238c : 28 > plp
238d : 120c ora (zpt)
tst_ay absrlo,absflo,$ff-fnz
238f : 08 > php ;save flags
2390 : d95b02 > cmp absrlo,y ;test result
> trap_ne ;
2393 : d0fe > bne * ;failed not equal (non zero)
>
2395 : 68 > pla ;load status
> eor_flag $ff-fnz
2396 : 497d > eor #$ff-fnz|fao ;invert expected flags + always on bits
>
2398 : d95f02 > cmp absflo,y ;test flags
> trap_ne
239b : d0fe > bne * ;failed not equal (non zero)
>
239d : c60c dec zpt
239f : 88 dey
23a0 : 10e4 bpl tora2
23a2 : e042 cpx #$42
trap_ne ;x altered during test
23a4 : d0fe > bne * ;failed not equal (non zero)
23a6 : ba tsx
23a7 : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
23a9 : d0fe > bne * ;failed not equal (non zero)
next_test
23ab : ad0202 > lda test_case ;previous test
23ae : c913 > cmp #test_num
> trap_ne ;test is out of sequence
23b0 : d0fe > bne * ;failed not equal (non zero)
>
0014 = >test_num = test_num + 1
23b2 : a914 > lda #test_num ;*** next tests' number
23b4 : 8d0202 > sta test_case
> ;check_ram ;uncomment to find altered RAM after each test
if I_flag = 3
23b7 : 58 cli
endif
; full binary add/subtract test - (zp) only
; iterates through all combinations of operands and carry input
; uses increments/decrements to predict result & result flags
23b8 : d8 cld
23b9 : a20e ldx #ad2 ;for indexed test
23bb : a0ff ldy #$ff ;max range
23bd : a900 lda #0 ;start with adding zeroes & no carry
23bf : 850c sta adfc ;carry in - for diag
23c1 : 850d sta ad1 ;operand 1 - accumulator
23c3 : 850e sta ad2 ;operand 2 - memory or immediate
23c5 : 8d0502 sta ada2 ;non zp
23c8 : 850f sta adrl ;expected result bits 0-7
23ca : 8510 sta adrh ;expected result bit 8 (carry out)
23cc : a9ff lda #$ff ;complemented operand 2 for subtract
23ce : 8512 sta sb2
23d0 : 8d0602 sta sba2 ;non zp
23d3 : a902 lda #2 ;expected Z-flag
23d5 : 8511 sta adrf
23d7 : 18 tadd clc ;test with carry clear
23d8 : 204e26 jsr chkadd
23db : e60c inc adfc ;now with carry
23dd : e60f inc adrl ;result +1
23df : 08 php ;save N & Z from low result
23e0 : 08 php
23e1 : 68 pla ;accu holds expected flags
23e2 : 2982 and #$82 ;mask N & Z
23e4 : 28 plp
23e5 : d002 bne tadd1
23e7 : e610 inc adrh ;result bit 8 - carry
23e9 : 0510 tadd1 ora adrh ;merge C to expected flags
23eb : 8511 sta adrf ;save expected flags except overflow
23ed : 38 sec ;test with carry set
23ee : 204e26 jsr chkadd
23f1 : c60c dec adfc ;same for operand +1 but no carry
23f3 : e60d inc ad1
23f5 : d0e0 bne tadd ;iterate op1
23f7 : a900 lda #0 ;preset result to op2 when op1 = 0
23f9 : 8510 sta adrh
23fb : ee0502 inc ada2
23fe : e60e inc ad2
2400 : 08 php ;save NZ as operand 2 becomes the new result
2401 : 68 pla
2402 : 2982 and #$82 ;mask N00000Z0
2404 : 8511 sta adrf ;no need to check carry as we are adding to 0
2406 : c612 dec sb2 ;complement subtract operand 2
2408 : ce0602 dec sba2
240b : a50e lda ad2
240d : 850f sta adrl
240f : d0c6 bne tadd ;iterate op2
2411 : e00e cpx #ad2
trap_ne ;x altered during test
2413 : d0fe > bne * ;failed not equal (non zero)
2415 : c0ff cpy #$ff
trap_ne ;y altered during test
2417 : d0fe > bne * ;failed not equal (non zero)
2419 : ba tsx
241a : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
241c : d0fe > bne * ;failed not equal (non zero)
next_test
241e : ad0202 > lda test_case ;previous test
2421 : c914 > cmp #test_num
> trap_ne ;test is out of sequence
2423 : d0fe > bne * ;failed not equal (non zero)
>
0015 = >test_num = test_num + 1
2425 : a915 > lda #test_num ;*** next tests' number
2427 : 8d0202 > 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, the V flag is ignored
; although V is declared as beeing valid on the 65C02 it has absolutely
; no use in BCD math. No sign = no overflow!
; iterates through all valid combinations of operands and carry input
; uses increments/decrements to predict result & carry flag
242a : f8 sed
242b : a20e ldx #ad2 ;for indexed test
242d : a0ff ldy #$ff ;max range
242f : a999 lda #$99 ;start with adding 99 to 99 with carry
2431 : 850d sta ad1 ;operand 1 - accumulator
2433 : 850e sta ad2 ;operand 2 - memory or immediate
2435 : 8d0502 sta ada2 ;non zp
2438 : 850f sta adrl ;expected result bits 0-7
243a : a901 lda #1 ;set carry in & out
243c : 850c sta adfc ;carry in - for diag
243e : 8510 sta adrh ;expected result bit 8 (carry out)
2440 : a981 lda #$81 ;set N & C (99 + 99 + C = 99 + C)
2442 : 8511 sta adrf
2444 : a900 lda #0 ;complemented operand 2 for subtract
2446 : 8512 sta sb2
2448 : 8d0602 sta sba2 ;non zp
244b : 38 tdad sec ;test with carry set
244c : 20f724 jsr chkdad
244f : c60c dec adfc ;now with carry clear
2451 : a50f lda adrl ;decimal adjust result
2453 : d008 bne tdad1 ;skip clear carry & preset result 99 (9A-1)
2455 : c610 dec adrh
2457 : a999 lda #$99
2459 : 850f sta adrl
245b : d012 bne tdad3
245d : 290f tdad1 and #$f ;lower nibble mask
245f : d00c bne tdad2 ;no decimal adjust needed
2461 : c60f dec adrl ;decimal adjust (?0-6)
2463 : c60f dec adrl
2465 : c60f dec adrl
2467 : c60f dec adrl
2469 : c60f dec adrl
246b : c60f dec adrl
246d : c60f tdad2 dec adrl ;result -1
246f : 08 tdad3 php ;save valid flags
2470 : 68 pla
2471 : 2982 and #$82 ;N-----Z-
2473 : 0510 ora adrh ;N-----ZC
2475 : 8511 sta adrf
2477 : 18 clc ;test with carry clear
2478 : 20f724 jsr chkdad
247b : e60c inc adfc ;same for operand -1 but with carry
247d : a50d lda ad1 ;decimal adjust operand 1
247f : f015 beq tdad5 ;iterate operand 2
2481 : 290f and #$f ;lower nibble mask
2483 : d00c bne tdad4 ;skip decimal adjust
2485 : c60d dec ad1 ;decimal adjust (?0-6)
2487 : c60d dec ad1
2489 : c60d dec ad1
248b : c60d dec ad1
248d : c60d dec ad1
248f : c60d dec ad1
2491 : c60d tdad4 dec ad1 ;operand 1 -1
2493 : 4c4b24 jmp tdad ;iterate op1
2496 : a999 tdad5 lda #$99 ;precharge op1 max
2498 : 850d sta ad1
249a : a50e lda ad2 ;decimal adjust operand 2
249c : f039 beq tdad7 ;end of iteration
249e : 290f and #$f ;lower nibble mask
24a0 : d018 bne tdad6 ;skip decimal adjust
24a2 : c60e dec ad2 ;decimal adjust (?0-6)
24a4 : c60e dec ad2
24a6 : c60e dec ad2
24a8 : c60e dec ad2
24aa : c60e dec ad2
24ac : c60e dec ad2
24ae : e612 inc sb2 ;complemented decimal adjust for subtract (?9+6)
24b0 : e612 inc sb2
24b2 : e612 inc sb2
24b4 : e612 inc sb2
24b6 : e612 inc sb2
24b8 : e612 inc sb2
24ba : c60e tdad6 dec ad2 ;operand 2 -1
24bc : e612 inc sb2 ;complemented operand for subtract
24be : a512 lda sb2
24c0 : 8d0602 sta sba2 ;copy as non zp operand
24c3 : a50e lda ad2
24c5 : 8d0502 sta ada2 ;copy as non zp operand
24c8 : 850f sta adrl ;new result since op1+carry=00+carry +op2=op2
24ca : 08 php ;save flags
24cb : 68 pla
24cc : 2982 and #$82 ;N-----Z-
24ce : 0901 ora #1 ;N-----ZC
24d0 : 8511 sta adrf
24d2 : e610 inc adrh ;result carry
24d4 : 4c4b24 jmp tdad ;iterate op2
24d7 : e00e tdad7 cpx #ad2
trap_ne ;x altered during test
24d9 : d0fe > bne * ;failed not equal (non zero)
24db : c0ff cpy #$ff
trap_ne ;y altered during test
24dd : d0fe > bne * ;failed not equal (non zero)
24df : ba tsx
24e0 : e0ff cpx #$ff
trap_ne ;sp push/pop mismatch
24e2 : d0fe > bne * ;failed not equal (non zero)
24e4 : d8 cld
24e5 : ad0202 lda test_case
24e8 : c915 cmp #test_num
trap_ne ;previous test is out of sequence
24ea : d0fe > bne * ;failed not equal (non zero)
24ec : a9f0 lda #$f0 ;mark opcode testing complete
24ee : 8d0202 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
24f1 : 4cf124 > jmp * ;test passed, no errors
; -------------
; S U C C E S S ************************************************
24f4 : 4c0004 jmp start ;run again
; core subroutine of the decimal add/subtract test
; *** WARNING - tests documented behavior only! ***
; only valid BCD operands are tested, V flag is ignored
; iterates through all valid combinations of operands and carry input
; uses increments/decrements to predict result & carry flag
24f7 : chkdad
; decimal ADC / SBC zp
24f7 : 08 php ;save carry for subtract
24f8 : a50d lda ad1
24fa : 650e adc ad2 ;perform add
24fc : 08 php
24fd : c50f cmp adrl ;check result
trap_ne ;bad result
24ff : d0fe > bne * ;failed not equal (non zero)
2501 : 68 pla ;check flags
2502 : 2983 and #$83 ;mask N-----ZC
2504 : c511 cmp adrf
trap_ne ;bad flags
2506 : d0fe > bne * ;failed not equal (non zero)
2508 : 28 plp
2509 : 08 php ;save carry for next add
250a : a50d lda ad1
250c : e512 sbc sb2 ;perform subtract
250e : 08 php
250f : c50f cmp adrl ;check result
trap_ne ;bad result
2511 : d0fe > bne * ;failed not equal (non zero)
2513 : 68 pla ;check flags
2514 : 2983 and #$83 ;mask N-----ZC
2516 : c511 cmp adrf
trap_ne ;bad flags
2518 : d0fe > bne * ;failed not equal (non zero)
251a : 28 plp
; decimal ADC / SBC abs
251b : 08 php ;save carry for subtract
251c : a50d lda ad1
251e : 6d0502 adc ada2 ;perform add
2521 : 08 php
2522 : c50f cmp adrl ;check result
trap_ne ;bad result
2524 : d0fe > bne * ;failed not equal (non zero)
2526 : 68 pla ;check flags
2527 : 2983 and #$83 ;mask N-----ZC
2529 : c511 cmp adrf
trap_ne ;bad flags
252b : d0fe > bne * ;failed not equal (non zero)
252d : 28 plp
252e : 08 php ;save carry for next add
252f : a50d lda ad1
2531 : ed0602 sbc sba2 ;perform subtract
2534 : 08 php
2535 : c50f cmp adrl ;check result
trap_ne ;bad result
2537 : d0fe > bne * ;failed not equal (non zero)
2539 : 68 pla ;check flags
253a : 2983 and #$83 ;mask N-----ZC
253c : c511 cmp adrf
trap_ne ;bad flags
253e : d0fe > bne * ;failed not equal (non zero)
2540 : 28 plp
; decimal ADC / SBC #
2541 : 08 php ;save carry for subtract
2542 : a50e lda ad2
2544 : 8d0b02 sta ex_adci+1 ;set ADC # operand
2547 : a50d lda ad1
2549 : 200a02 jsr ex_adci ;execute ADC # in RAM
254c : 08 php
254d : c50f cmp adrl ;check result
trap_ne ;bad result
254f : d0fe > bne * ;failed not equal (non zero)
2551 : 68 pla ;check flags
2552 : 2983 and #$83 ;mask N-----ZC
2554 : c511 cmp adrf
trap_ne ;bad flags
2556 : d0fe > bne * ;failed not equal (non zero)
2558 : 28 plp
2559 : 08 php ;save carry for next add
255a : a512 lda sb2
255c : 8d0e02 sta ex_sbci+1 ;set SBC # operand
255f : a50d lda ad1
2561 : 200d02 jsr ex_sbci ;execute SBC # in RAM
2564 : 08 php
2565 : c50f cmp adrl ;check result
trap_ne ;bad result
2567 : d0fe > bne * ;failed not equal (non zero)
2569 : 68 pla ;check flags
256a : 2983 and #$83 ;mask N-----ZC
256c : c511 cmp adrf
trap_ne ;bad flags
256e : d0fe > bne * ;failed not equal (non zero)
2570 : 28 plp
; decimal ADC / SBC zp,x
2571 : 08 php ;save carry for subtract
2572 : a50d lda ad1
2574 : 7500 adc 0,x ;perform add
2576 : 08 php
2577 : c50f cmp adrl ;check result
trap_ne ;bad result
2579 : d0fe > bne * ;failed not equal (non zero)
257b : 68 pla ;check flags
257c : 2983 and #$83 ;mask N-----ZC
257e : c511 cmp adrf
trap_ne ;bad flags
2580 : d0fe > bne * ;failed not equal (non zero)
2582 : 28 plp
2583 : 08 php ;save carry for next add
2584 : a50d lda ad1
2586 : f504 sbc sb2-ad2,x ;perform subtract
2588 : 08 php
2589 : c50f cmp adrl ;check result
trap_ne ;bad result
258b : d0fe > bne * ;failed not equal (non zero)
258d : 68 pla ;check flags
258e : 2983 and #$83 ;mask N-----ZC
2590 : c511 cmp adrf
trap_ne ;bad flags
2592 : d0fe > bne * ;failed not equal (non zero)
2594 : 28 plp
; decimal ADC / SBC abs,x
2595 : 08 php ;save carry for subtract
2596 : a50d lda ad1
2598 : 7df701 adc ada2-ad2,x ;perform add
259b : 08 php
259c : c50f cmp adrl ;check result
trap_ne ;bad result
259e : d0fe > bne * ;failed not equal (non zero)
25a0 : 68 pla ;check flags
25a1 : 2983 and #$83 ;mask N-----ZC
25a3 : c511 cmp adrf
trap_ne ;bad flags
25a5 : d0fe > bne * ;failed not equal (non zero)
25a7 : 28 plp
25a8 : 08 php ;save carry for next add
25a9 : a50d lda ad1
25ab : fdf801 sbc sba2-ad2,x ;perform subtract
25ae : 08 php
25af : c50f cmp adrl ;check result
trap_ne ;bad result
25b1 : d0fe > bne * ;failed not equal (non zero)
25b3 : 68 pla ;check flags
25b4 : 2983 and #$83 ;mask N-----ZC
25b6 : c511 cmp adrf
trap_ne ;bad flags
25b8 : d0fe > bne * ;failed not equal (non zero)
25ba : 28 plp
; decimal ADC / SBC abs,y
25bb : 08 php ;save carry for subtract
25bc : a50d lda ad1
25be : 790601 adc ada2-$ff,y ;perform add
25c1 : 08 php
25c2 : c50f cmp adrl ;check result
trap_ne ;bad result
25c4 : d0fe > bne * ;failed not equal (non zero)
25c6 : 68 pla ;check flags
25c7 : 2983 and #$83 ;mask N-----ZC
25c9 : c511 cmp adrf
trap_ne ;bad flags
25cb : d0fe > bne * ;failed not equal (non zero)
25cd : 28 plp
25ce : 08 php ;save carry for next add
25cf : a50d lda ad1
25d1 : f90701 sbc sba2-$ff,y ;perform subtract
25d4 : 08 php
25d5 : c50f cmp adrl ;check result
trap_ne ;bad result
25d7 : d0fe > bne * ;failed not equal (non zero)
25d9 : 68 pla ;check flags
25da : 2983 and #$83 ;mask N-----ZC
25dc : c511 cmp adrf
trap_ne ;bad flags
25de : d0fe > bne * ;failed not equal (non zero)
25e0 : 28 plp
; decimal ADC / SBC (zp,x)
25e1 : 08 php ;save carry for subtract
25e2 : a50d lda ad1
25e4 : 6144 adc (lo adi2-ad2,x) ;perform add
25e6 : 08 php
25e7 : c50f cmp adrl ;check result
trap_ne ;bad result
25e9 : d0fe > bne * ;failed not equal (non zero)
25eb : 68 pla ;check flags
25ec : 2983 and #$83 ;mask N-----ZC
25ee : c511 cmp adrf
trap_ne ;bad flags
25f0 : d0fe > bne * ;failed not equal (non zero)
25f2 : 28 plp
25f3 : 08 php ;save carry for next add
25f4 : a50d lda ad1
25f6 : e146 sbc (lo sbi2-ad2,x) ;perform subtract
25f8 : 08 php
25f9 : c50f cmp adrl ;check result
trap_ne ;bad result
25fb : d0fe > bne * ;failed not equal (non zero)
25fd : 68 pla ;check flags
25fe : 2983 and #$83 ;mask N-----ZC
2600 : c511 cmp adrf
trap_ne ;bad flags
2602 : d0fe > bne * ;failed not equal (non zero)
2604 : 28 plp
; decimal ADC / SBC (abs),y
2605 : 08 php ;save carry for subtract
2606 : a50d lda ad1
2608 : 7156 adc (adiy2),y ;perform add
260a : 08 php
260b : c50f cmp adrl ;check result
trap_ne ;bad result
260d : d0fe > bne * ;failed not equal (non zero)
260f : 68 pla ;check flags
2610 : 2983 and #$83 ;mask N-----ZC
2612 : c511 cmp adrf
trap_ne ;bad flags
2614 : d0fe > bne * ;failed not equal (non zero)
2616 : 28 plp
2617 : 08 php ;save carry for next add
2618 : a50d lda ad1
261a : f158 sbc (sbiy2),y ;perform subtract
261c : 08 php
261d : c50f cmp adrl ;check result
trap_ne ;bad result
261f : d0fe > bne * ;failed not equal (non zero)
2621 : 68 pla ;check flags
2622 : 2983 and #$83 ;mask N-----ZC
2624 : c511 cmp adrf
trap_ne ;bad flags
2626 : d0fe > bne * ;failed not equal (non zero)
2628 : 28 plp
; decimal ADC / SBC (zp)
2629 : 08 php ;save carry for subtract
262a : a50d lda ad1
262c : 7252 adc (adi2) ;perform add
262e : 08 php
262f : c50f cmp adrl ;check result
trap_ne ;bad result
2631 : d0fe > bne * ;failed not equal (non zero)
2633 : 68 pla ;check flags
2634 : 2983 and #$83 ;mask N-----ZC
2636 : c511 cmp adrf
trap_ne ;bad flags
2638 : d0fe > bne * ;failed not equal (non zero)
263a : 28 plp
263b : 08 php ;save carry for next add
263c : a50d lda ad1
263e : f254 sbc (sbi2) ;perform subtract
2640 : 08 php
2641 : c50f cmp adrl ;check result
trap_ne ;bad result
2643 : d0fe > bne * ;failed not equal (non zero)
2645 : 68 pla ;check flags
2646 : 2983 and #$83 ;mask N-----ZC
2648 : c511 cmp adrf
trap_ne ;bad flags
264a : d0fe > bne * ;failed not equal (non zero)
264c : 28 plp
264d : 60 rts
; 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
264e : a511 chkadd lda adrf ;add V-flag if overflow
2650 : 2983 and #$83 ;keep N-----ZC / clear V
2652 : 48 pha
2653 : a50d lda ad1 ;test sign unequal between operands
2655 : 450e eor ad2
2657 : 300a bmi ckad1 ;no overflow possible - operands have different sign
2659 : a50d lda ad1 ;test sign equal between operands and result
265b : 450f eor adrl
265d : 1004 bpl ckad1 ;no overflow occured - operand and result have same sign
265f : 68 pla
2660 : 0940 ora #$40 ;set V
2662 : 48 pha
2663 : 68 ckad1 pla
2664 : 8511 sta adrf ;save expected flags
; binary ADC / SBC (zp)
2666 : 08 php ;save carry for subtract
2667 : a50d lda ad1
2669 : 7252 adc (adi2) ;perform add
266b : 08 php
266c : c50f cmp adrl ;check result
trap_ne ;bad result
266e : d0fe > bne * ;failed not equal (non zero)
2670 : 68 pla ;check flags
2671 : 29c3 and #$c3 ;mask NV----ZC
2673 : c511 cmp adrf
trap_ne ;bad flags
2675 : d0fe > bne * ;failed not equal (non zero)
2677 : 28 plp
2678 : 08 php ;save carry for next add
2679 : a50d lda ad1
267b : f254 sbc (sbi2) ;perform subtract
267d : 08 php
267e : c50f cmp adrl ;check result
trap_ne ;bad result
2680 : d0fe > bne * ;failed not equal (non zero)
2682 : 68 pla ;check flags
2683 : 29c3 and #$c3 ;mask NV----ZC
2685 : c511 cmp adrf
trap_ne ;bad flags
2687 : d0fe > bne * ;failed not equal (non zero)
2689 : 28 plp
268a : 60 rts
; target for the jump indirect test
268b : 9126 ji_adr dw test_ji
268d : 8216 dw ji_ret
268f : 88 dey
2690 : 88 dey
2691 : test_ji
2691 : 08 php ;either SP or Y count will fail, if we do not hit
2692 : 88 dey
2693 : 88 dey
2694 : 88 dey
2695 : 28 plp
trap_cs ;flags loaded?
2696 : b0fe > bcs * ;failed carry set
trap_vs
2698 : 70fe > bvs * ;failed overflow set
trap_mi
269a : 30fe > bmi * ;failed minus (bit 7 set)
trap_eq
269c : f0fe > beq * ;failed equal (zero)
269e : c949 cmp #'I' ;registers loaded?
trap_ne
26a0 : d0fe > bne * ;failed not equal (non zero)
26a2 : e04e cpx #'N'
trap_ne
26a4 : d0fe > bne * ;failed not equal (non zero)
26a6 : c041 cpy #('D'-3)
trap_ne
26a8 : d0fe > bne * ;failed not equal (non zero)
26aa : 48 pha ;save a,x
26ab : 8a txa
26ac : 48 pha
26ad : ba tsx
26ae : e0fd cpx #$fd ;check SP
trap_ne
26b0 : d0fe > bne * ;failed not equal (non zero)
26b2 : 68 pla ;restore x
26b3 : aa tax
set_stat $ff
> load_flag $ff
26b4 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
26b6 : 48 > pha ;use stack to load status
26b7 : 28 > plp
26b8 : 68 pla ;restore a
26b9 : e8 inx ;return registers with modifications
26ba : 49aa eor #$aa ;N=1, V=1, Z=0, C=1
26bc : 6cff02 jmp (ji_tab+2)
26bf : ea nop
26c0 : ea nop
trap ;runover protection
26c1 : 4cc126 > jmp * ;failed anyway
26c4 : 4c0004 jmp start ;catastrophic error - cannot continue
; target for the jump indirect test
26c7 : 0e27 jxi_adr dw trap_ind
26c9 : 0e27 dw trap_ind
26cb : d526 dw test_jxi ;+4
26cd : ce16 dw jxi_ret ;+6
26cf : 0e27 dw trap_ind
26d1 : 0e27 dw trap_ind
26d3 : 88 dey
26d4 : 88 dey
26d5 : test_jxi
26d5 : 08 php ;either SP or Y count will fail, if we do not hit
26d6 : 88 dey
26d7 : 88 dey
26d8 : 88 dey
26d9 : 28 plp
trap_cs ;flags loaded?
26da : b0fe > bcs * ;failed carry set
trap_vs
26dc : 70fe > bvs * ;failed overflow set
trap_mi
26de : 30fe > bmi * ;failed minus (bit 7 set)
trap_eq
26e0 : f0fe > beq * ;failed equal (zero)
26e2 : c958 cmp #'X' ;registers loaded?
trap_ne
26e4 : d0fe > bne * ;failed not equal (non zero)
26e6 : e004 cpx #4
trap_ne
26e8 : d0fe > bne * ;failed not equal (non zero)
26ea : c046 cpy #('I'-3)
trap_ne
26ec : d0fe > bne * ;failed not equal (non zero)
26ee : 48 pha ;save a,x
26ef : 8a txa
26f0 : 48 pha
26f1 : ba tsx
26f2 : e0fd cpx #$fd ;check SP
trap_ne
26f4 : d0fe > bne * ;failed not equal (non zero)
26f6 : 68 pla ;restore x
26f7 : aa tax
set_stat $ff
> load_flag $ff
26f8 : a9ff > lda #$ff ;allow test to change I-flag (no mask)
>
26fa : 48 > pha ;use stack to load status
26fb : 28 > plp
26fc : 68 pla ;restore a
26fd : e8 inx ;return registers with modifications
26fe : e8 inx
26ff : 49aa eor #$aa ;N=1, V=1, Z=0, C=1
2701 : 7cf902 jmp (jxi_tab,x)
2704 : ea nop
2705 : ea nop
trap ;runover protection
2706 : 4c0627 > jmp * ;failed anyway
2709 : 4c0004 jmp start ;catastrophic error - cannot continue
; JMP (abs,x) with bad x
270c : ea nop
270d : ea nop
270e : trap_ind
270e : ea nop
270f : ea nop
trap ;near miss indexed indirect jump
2710 : 4c1027 > jmp * ;failed anyway
2713 : 4c0004 jmp start ;catastrophic error - cannot continue
;trap in case of unexpected IRQ, NMI, BRK, RESET
2716 : nmi_trap
trap ;check stack for conditions at NMI
2716 : 4c1627 > jmp * ;failed anyway
2719 : 4c0004 jmp start ;catastrophic error - cannot continue
271c : res_trap
trap ;unexpected RESET
271c : 4c1c27 > jmp * ;failed anyway
271f : 4c0004 jmp start ;catastrophic error - cannot continue
2722 : 88 dey
2723 : 88 dey
2724 : irq_trap ;BRK test or unextpected BRK or IRQ
2724 : 08 php ;either SP or Y count will fail, if we do not hit
2725 : 88 dey
2726 : 88 dey
2727 : 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)
2728 : c9bd cmp #$ff-'B' ;BRK pass 2 registers loaded?
272a : f042 beq break2
272c : c942 cmp #'B' ;BRK pass 1 registers loaded?
trap_ne
272e : d0fe > bne * ;failed not equal (non zero)
2730 : e052 cpx #'R'
trap_ne
2732 : d0fe > bne * ;failed not equal (non zero)
2734 : c048 cpy #'K'-3
trap_ne
2736 : d0fe > bne * ;failed not equal (non zero)
2738 : 850a sta irq_a ;save registers during break test
273a : 860b stx irq_x
273c : ba tsx ;test break on stack
273d : bd0201 lda $102,x
cmp_flag 0 ;break test should have B=1 & unused=1 on stack
2740 : c930 > cmp #(0 |fao)&m8 ;expected flags + always on bits
trap_ne ;possible no break flag on stack
2742 : d0fe > bne * ;failed not equal (non zero)
2744 : 68 pla
cmp_flag intdis ;should have added interrupt disable
2745 : c934 > cmp #(intdis |fao)&m8 ;expected flags + always on bits
trap_ne
2747 : d0fe > bne * ;failed not equal (non zero)
2749 : ba tsx
274a : e0fc cpx #$fc ;sp -3? (return addr, flags)
trap_ne
274c : d0fe > bne * ;failed not equal (non zero)
274e : adff01 lda $1ff ;propper return on stack
2751 : c917 cmp #hi(brk_ret0)
trap_ne
2753 : d0fe > bne * ;failed not equal (non zero)
2755 : adfe01 lda $1fe
2758 : c920 cmp #lo(brk_ret0)
trap_ne
275a : d0fe > bne * ;failed not equal (non zero)
load_flag $ff
275c : a9ff > lda #$ff ;allow test to change I-flag (no mask)
275e : 48 pha
275f : a60b ldx irq_x
2761 : e8 inx ;return registers with modifications
2762 : a50a lda irq_a
2764 : 49aa eor #$aa
2766 : 28 plp ;N=1, V=1, Z=1, C=1 but original flags should be restored
2767 : 40 rti
trap ;runover protection
2768 : 4c6827 > jmp * ;failed anyway
276b : 4c0004 jmp start ;catastrophic error - cannot continue
276e : break2 ;BRK pass 2
276e : e0ad cpx #$ff-'R'
trap_ne
2770 : d0fe > bne * ;failed not equal (non zero)
2772 : c0b1 cpy #$ff-'K'-3
trap_ne
2774 : d0fe > bne * ;failed not equal (non zero)
2776 : 850a sta irq_a ;save registers during break test
2778 : 860b stx irq_x
277a : ba tsx ;test break on stack
277b : bd0201 lda $102,x
cmp_flag $ff ;break test should have B=1
277e : c9ff > cmp #($ff |fao)&m8 ;expected flags + always on bits
trap_ne ;possibly no break flag on stack
2780 : d0fe > bne * ;failed not equal (non zero)
2782 : 68 pla
cmp_flag $ff-decmode ;actual passed flags should have decmode cleared
2783 : c9f7 > cmp #($ff-decmode |fao)&m8 ;expected flags + always on bits
trap_ne
2785 : d0fe > bne * ;failed not equal (non zero)
2787 : ba tsx
2788 : e0fc cpx #$fc ;sp -3? (return addr, flags)
trap_ne
278a : d0fe > bne * ;failed not equal (non zero)
278c : adff01 lda $1ff ;propper return on stack
278f : c917 cmp #hi(brk_ret1)
trap_ne
2791 : d0fe > bne * ;failed not equal (non zero)
2793 : adfe01 lda $1fe
2796 : c946 cmp #lo(brk_ret1)
trap_ne
2798 : d0fe > bne * ;failed not equal (non zero)
load_flag intdis
279a : a904 > lda #intdis ;allow test to change I-flag (no mask)
279c : 48 pha
279d : a60b ldx irq_x
279f : e8 inx ;return registers with modifications
27a0 : a50a lda irq_a
27a2 : 49aa eor #$aa
27a4 : 28 plp ;N=0, V=0, Z=0, C=0 but original flags should be restored
27a5 : 40 rti
trap ;runover protection
27a6 : 4ca627 > jmp * ;failed anyway
27a9 : 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_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
; code at end of image due to the need to add blank space as required
if ($ff & (ji_ret - * - 2)) < ($ff & (jxi_ret - * - 2))
; JMP (abs) when $xxff and $xx00 are from same page
ds lo(ji_ret - * - 2)
nop
nop
ji_px nop ;low address byte matched with ji_ret
nop
trap ;jmp indirect page cross bug
; JMP (abs,x) when $xxff and $xx00 are from same page
ds lo(jxi_ret - * - 2)
nop
nop
jxi_px nop ;low address byte matched with jxi_ret
nop
trap ;jmp indexed indirect page cross bug
else
; JMP (abs,x) when $xxff and $xx00 are from same page
27ac : 00000000000000.. ds lo(jxi_ret - * - 2)
27cc : ea nop
27cd : ea nop
27ce : ea jxi_px nop ;low address byte matched with jxi_ret
27cf : ea nop
trap ;jmp indexed indirect page cross bug
27d0 : 4cd027 > jmp * ;failed anyway
; JMP (abs) when $xxff and $xx00 are from same page
27d3 : 00000000000000.. ds lo(ji_ret - * - 2)
2880 : ea nop
2881 : ea nop
2882 : ea ji_px nop ;low address byte matched with ji_ret
2883 : ea nop
trap ;jmp indirect page cross bug
2884 : 4c8428 > jmp * ;failed anyway
endif
if (load_data_direct = 1) & (ROM_vectors = 1)
fffa = org $fffa ;vectors
fffa : 1627 dw nmi_trap
fffc : 1c27 dw res_trap
fffe : 2427 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).