32bit (#2)
Reviewed-on: #2 Co-authored-by: Byron Lathi <byron@byronlathi.com> Co-committed-by: Byron Lathi <byron@byronlathi.com>
This commit was merged in pull request #2.
This commit is contained in:
29
sim/asm_source/Makefile
Normal file
29
sim/asm_source/Makefile
Normal file
@@ -0,0 +1,29 @@
|
||||
|
||||
|
||||
# work in progress
|
||||
.SUFFIXES:
|
||||
|
||||
|
||||
PROGRAMS=jsr_test lda_test
|
||||
|
||||
SRCS=$(wildcard *.s)
|
||||
OBJS=$(SRCS:.s=.o)
|
||||
|
||||
CA65=$(CC65_BIN)/ca65
|
||||
LD65=$(CC65_BIN)/ld65
|
||||
|
||||
CA_ARGS=--cpu 65c032
|
||||
|
||||
all: $(PROGRAMS)
|
||||
|
||||
$(PROGRAMS): $(PROGRAM=$(.TARGET))
|
||||
|
||||
%.o: %.s
|
||||
$(CA65) $(CA_ARGS) $^ -o $@ -l $@.lst
|
||||
|
||||
$(PROGRAMS): $(OBJS)
|
||||
$(LD65) -o $@ -C memory.cfg vectors.o $@.o
|
||||
|
||||
clean:
|
||||
rm -rf $(PROGRAMS) $(OBJS)
|
||||
rm -rf *.o *.lst
|
||||
32
sim/asm_source/jsr_test.s
Normal file
32
sim/asm_source/jsr_test.s
Normal file
@@ -0,0 +1,32 @@
|
||||
.export vec_reset, vec_irq, vec_nmi
|
||||
|
||||
.ZEROPAGE
|
||||
|
||||
result: .res 1
|
||||
|
||||
.segment "CODE"
|
||||
|
||||
vec_nmi:
|
||||
vec_reset:
|
||||
vec_irq:
|
||||
|
||||
|
||||
jsr_test:
|
||||
lda #$ff
|
||||
sta result
|
||||
ldx #$ff
|
||||
txs
|
||||
jsr function_1
|
||||
lda #$01
|
||||
sta result
|
||||
wai
|
||||
|
||||
function_2:
|
||||
pha
|
||||
pla
|
||||
rts
|
||||
|
||||
function_1:
|
||||
jsr function_2
|
||||
rts
|
||||
|
||||
121
sim/asm_source/lda_test.s
Normal file
121
sim/asm_source/lda_test.s
Normal file
@@ -0,0 +1,121 @@
|
||||
.export vec_reset, vec_irq, vec_nmi
|
||||
|
||||
.ZEROPAGE
|
||||
|
||||
result: .res 1
|
||||
|
||||
zp0: .res 1
|
||||
zp1: .res 4
|
||||
zp2: .res 8
|
||||
zp3: .res 4
|
||||
|
||||
good_count: .res 1
|
||||
|
||||
.CODE
|
||||
|
||||
data1: .byte 1
|
||||
data2: .byte 2
|
||||
data3: .byte 3
|
||||
data4: .byte 4
|
||||
data5: .byte 5
|
||||
data6: .res 4
|
||||
.byte 6
|
||||
data7: .res 2
|
||||
.byte 7
|
||||
|
||||
vec_nmi:
|
||||
vec_reset:
|
||||
vec_irq:
|
||||
|
||||
|
||||
prepare_test:
|
||||
lda data1
|
||||
sta zp0
|
||||
|
||||
lda #.LOBYTE(data2)
|
||||
sta zp1
|
||||
lda #.HIBYTE(data2)
|
||||
sta zp1+1
|
||||
lda #.BANKBYTE(data2)
|
||||
sta zp1+2
|
||||
lda #.TOPBYTE(data2)
|
||||
sta zp1+3
|
||||
|
||||
lda #.LOBYTE(data4)
|
||||
sta zp2+4
|
||||
lda #.HIBYTE(data4)
|
||||
sta zp2+5
|
||||
lda #.BANKBYTE(data4)
|
||||
sta zp2+6
|
||||
lda #.TOPBYTE(data4)
|
||||
sta zp2+7
|
||||
|
||||
lda #.LOBYTE(data5-2)
|
||||
sta zp3
|
||||
lda #.HIBYTE(data5-2)
|
||||
sta zp3+1
|
||||
lda #.BANKBYTE(data5-2)
|
||||
sta zp3+2
|
||||
lda #.TOPBYTE(data5-2)
|
||||
sta zp3+3
|
||||
|
||||
stz good_count
|
||||
|
||||
lda_test:
|
||||
@test1:
|
||||
lda zp0 ; data 1
|
||||
cmp #$1
|
||||
bne @test2
|
||||
inc good_count
|
||||
|
||||
@test2:
|
||||
lda (zp1) ; data 2
|
||||
cmp #$2
|
||||
bne @test3
|
||||
inc good_count
|
||||
|
||||
@test3:
|
||||
lda data3 ; data 3
|
||||
cmp #$3
|
||||
bne @test4
|
||||
inc good_count
|
||||
|
||||
@test4:
|
||||
ldx #$4
|
||||
ldy #$2
|
||||
lda (zp2,x) ; data 4
|
||||
cmp #$4
|
||||
bne @test5
|
||||
inc good_count
|
||||
|
||||
@test5:
|
||||
lda (zp3),y ; data 5
|
||||
cmp #$5
|
||||
bne @test6
|
||||
inc good_count
|
||||
|
||||
@test6:
|
||||
lda data6,x ; data 6
|
||||
cmp #$6
|
||||
bne @test7
|
||||
inc good_count
|
||||
|
||||
@test7:
|
||||
lda data7,y ; data 7
|
||||
cmp #$7
|
||||
bne @done
|
||||
inc good_count
|
||||
|
||||
@done:
|
||||
lda good_count
|
||||
cmp #$7
|
||||
bne @fail
|
||||
|
||||
lda #$1
|
||||
sta result
|
||||
wai
|
||||
|
||||
@fail:
|
||||
lda #$ff
|
||||
sta result
|
||||
wai
|
||||
13
sim/asm_source/memory.cfg
Normal file
13
sim/asm_source/memory.cfg
Normal file
@@ -0,0 +1,13 @@
|
||||
MEMORY {
|
||||
ZP: start = $0, size = $100;
|
||||
RAM: start = $fffff000, size = $1000, file=%O;
|
||||
}
|
||||
|
||||
SEGMENTS {
|
||||
ZEROPAGE: load = ZP, type = zp;
|
||||
CODE: load = RAM, type = ro;
|
||||
RODATA: load = RAM, type = ro;
|
||||
DATA: load = RAM, type = rw;
|
||||
BSS: load = RAM, type = bss, define = yes;
|
||||
VECTORS: load = RAM, type = ro, start = $FFFFFFF4;
|
||||
}
|
||||
7
sim/asm_source/vectors.s
Normal file
7
sim/asm_source/vectors.s
Normal file
@@ -0,0 +1,7 @@
|
||||
.import vec_reset, vec_irq, vec_nmi
|
||||
|
||||
.segment "VECTORS": dword
|
||||
|
||||
.addr vec_nmi
|
||||
.addr vec_reset
|
||||
.addr vec_irq
|
||||
Reference in New Issue
Block a user