Last active
July 31, 2019 10:10
-
-
Save jdesiloniz/cd9a288cb34c8275041bba8fb182bf8d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# SSP1601 tests for load operations | |
# Not totally exhaustive but covers most usual situations | |
org 400 | |
test_init: eor a, a | |
test_gen_registers: ldi x, 5050 | |
ld a, x | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
ldi y, 5050 | |
ld a, y | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
ldi st, 0001 | |
ld a, st | |
cmpi a, 0001 | |
bra z=0, @test_failed | |
# Loads from and to registers: | |
ldi x, 1010 | |
ld y, x | |
ld a, y | |
cmpi a, 1010 | |
bra z=0, @test_failed | |
eor a, a | |
ld y, x | |
ld a, y | |
cmpi a, 1010 | |
bra z=0, @test_failed | |
eor a, a | |
ldi x, FFF | |
ld st, x | |
ld a, st | |
cmpi a, FFF | |
bra z=0, @test_failed | |
eor a, a | |
test_stack: ldi stack, 0001 | |
ldi stack, 0002 | |
ldi stack, 0003 | |
ldi stack, 0004 | |
ldi stack, 0005 | |
ldi stack, 0006 | |
ldi stack, 0007 # this is a full stack condition, push is ignored | |
ld a, stack | |
cmpi a, 0006 | |
bra z=0, @test_failed | |
ld a, stack | |
cmpi a, 0005 | |
bra z=0, @test_failed | |
ld a, stack | |
cmpi a, 0004 | |
bra z=0, @test_failed | |
ld a, stack | |
cmpi a, 0003 | |
bra z=0, @test_failed | |
ld a, stack | |
cmpi a, 0002 | |
bra z=0, @test_failed | |
ld a, stack | |
cmpi a, 0001 | |
bra z=0, @test_failed | |
ld a, stack # this is an empty stack condition, pop is ignored | |
cmpi a, 0001 | |
bra z=1, @test_failed | |
eor a, a | |
test_ext_registers: ldi ext0, 5050 | |
ld a, ext0 | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi ext1, 5050 | |
ld a, ext0 | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi ext2, 5050 | |
ld a, ext0 | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi ext3, 5050 | |
ld a, ext0 | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi ext4, 5050 | |
ld a, ext0 | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi ext5, 5050 | |
ld a, ext0 | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi ext6, 5050 | |
ld a, ext0 | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
# No messing with ext7, it's actually AL and we need it for comparisons to work! | |
test_ptr_regs: ldi r0, F0 | |
ld a, r0 | |
cmpi a, 00F0 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r1, F0 | |
ld a, r1 | |
cmpi a, 00F0 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r2, F0 | |
ld a, r2 | |
cmpi a, 00F0 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r3, F0 | |
ld a, r3 | |
cmpi a, 00F0 | |
bra z=1, @test_failed # You shouldn't be able to modify the first stack pointer | |
eor a, a | |
ldi r4, F0 | |
ld a, r4 | |
cmpi a, 00F0 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r5, F0 | |
ld a, r5 | |
cmpi a, 00F0 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r6, F0 | |
ld a, r6 | |
cmpi a, 00F0 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r7, F0 | |
ld a, r7 | |
cmpi a, 00F0 | |
bra z=1, @test_failed # You shouldn't be able to modify the second stack pointer | |
eor a, a | |
ldi x, 00F1 | |
ld r0, x | |
ld a, r0 | |
cmpi a, 00F1 | |
bra z=0, @test_failed | |
eor a, a | |
ldi y, 00F2 | |
ld r0, y | |
ld a, r0 | |
cmpi a, 00F2 | |
bra z=0, @test_failed | |
eor a, a | |
ldi a, 00F3 | |
ld r0, a | |
ld a, r0 | |
cmpi a, 00F3 | |
bra z=0, @test_failed | |
eor a, a | |
test_mem_bank_loads: ldi r0, 10 | |
ldi (r0), 5050 | |
ld a, (r0) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r1, 12 | |
ldi (r1), 5050 | |
ld a, (r1) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r2, 14 | |
ldi (r2), 5050 | |
ld a, (r2) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi (r3), 5050 | |
ld a, (r3) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r4, 16 | |
ldi (r4), 5050 | |
ld a, (r4) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r5, 18 | |
ldi (r5), 5050 | |
ld a, (r5) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r6, 1A | |
ldi (r6), 5050 | |
ld a, (r6) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi (r7), A0A0 | |
ld a, (r7) | |
cmpi a, A0A0 | |
bra z=0, @test_failed | |
eor a, a | |
ldi x, 5050 | |
ld (r0), x | |
ld a, (r0) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi y, A0A0 | |
ld (r1), y | |
ld a, (r1) | |
cmpi a, A0A0 | |
bra z=0, @test_failed | |
eor a, a | |
ldi a, 5050 | |
ld (r2), a | |
ld a, (r2) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi st, 5050 | |
ld (r4), st | |
ld a, (r4) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
test_pram_reads: ldi r0, 10 | |
ldi (r0), 0400 # let's read the first word of the code | |
ld a, ((r0)) | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r1, 12 | |
ldi (r1), 0400 | |
ld a, ((r1)) | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r2, 14 | |
ldi (r2), 0400 | |
ld a, ((r2)) | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
ldi (r3), 0400 | |
ld a, ((r3)) | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r4, 16 | |
ldi (r4), 0400 | |
ld a, ((r4)) | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r5, 18 | |
ldi (r5), 0400 | |
ld a, ((r5)) | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r6, 1A | |
ldi (r6), 0400 | |
ld a, ((r6)) | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
ldi (r7), 0400 | |
ld a, ((r7)) | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
# Let's also see copies to other regs: | |
ldi (r4), 0400 | |
ld x, ((r4)) | |
ld a, x | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
ldi (r4), 0400 | |
ld y, ((r4)) | |
ld a, y | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
ldi (r4), 0400 | |
ld st, ((r4)) | |
ld a, st | |
cmpi a, E003 | |
bra z=0, @test_failed | |
eor a, a | |
test_direct_addressing: ldi r0, 40 | |
ldi a, 5050 | |
ld 040, a | |
ld a, (r0) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
ldi r4, 40 | |
ldi a, 5050 | |
ld 140, a | |
ld a, (r0) | |
cmpi a, 5050 | |
bra z=0, @test_failed | |
eor a, a | |
# Test finished: | |
bra always, @test_success | |
test_failed: bra always, @test_failed | |
test_success: bra always, @test_success | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment