From 9aae1efd033fea2252670fcaafad2b6cc370d516 Mon Sep 17 00:00:00 2001 From: Lauri Kasanen Date: Mon, 17 Oct 2022 12:50:59 +0300 Subject: [PATCH] Add a da65 65186 test --- test/dasm/65816.cfg | 7 ++ test/dasm/65816.info | 7 ++ test/dasm/Makefile | 17 ++- test/dasm/test65816.s | 273 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 test/dasm/65816.cfg create mode 100644 test/dasm/65816.info create mode 100644 test/dasm/test65816.s diff --git a/test/dasm/65816.cfg b/test/dasm/65816.cfg new file mode 100644 index 000000000..620439c7b --- /dev/null +++ b/test/dasm/65816.cfg @@ -0,0 +1,7 @@ +MEMORY { + ROM: start = $8000, size = $8000; +} + +SEGMENTS { + CODE: load = ROM; +} diff --git a/test/dasm/65816.info b/test/dasm/65816.info new file mode 100644 index 000000000..2a3394680 --- /dev/null +++ b/test/dasm/65816.info @@ -0,0 +1,7 @@ +GLOBAL { + startaddr $8000; +}; + +RANGE { START $8000; END $8229; ADDRMODE "MX"; TYPE Code;}; +RANGE { START $822a; END $824b; ADDRMODE "mx"; TYPE Code;}; + diff --git a/test/dasm/Makefile b/test/dasm/Makefile index 542ce7d5e..d9ac7ac21 100644 --- a/test/dasm/Makefile +++ b/test/dasm/Makefile @@ -19,6 +19,8 @@ ifdef QUIET endif CL65 := $(if $(wildcard ../../bin/cl65*),../../bin/cl65,cl65) +CA65 := $(if $(wildcard ../../bin/ca65*),../../bin/ca65,ca65) +LD65 := $(if $(wildcard ../../bin/ld65*),../../bin/ld65,ld65) DA65 := $(if $(wildcard ../../bin/da65*),../../bin/da65,da65) WORKDIR = ../../testwrk/dasm @@ -33,7 +35,7 @@ START = --start-addr 0x8000 .PHONY: all clean SOURCES := $(wildcard *.s) -BINS = $(SOURCES:%disass.s=$(WORKDIR)/%reass.bin) +BINS = $(SOURCES:%disass.s=$(WORKDIR)/%reass.bin) $(WORKDIR)/65816-reass.bin CPUS = $(SOURCES:%-disass.s=%) all: $(BINS) @@ -61,5 +63,18 @@ endef # DISASS_template $(foreach cpu,$(CPUS),$(eval $(call DISASS_template,$(cpu)))) +$(WORKDIR)/test65816.bin: test65816.s | $(WORKDIR) + $(CA65) -o $(WORKDIR)/test65816.o $< + $(LD65) -o $@ -C 65816.cfg $(WORKDIR)/test65816.o + +$(WORKDIR)/65816-reass.s: $(WORKDIR)/test65816.bin + $(DA65) --cpu 65816 -i 65816.info -o $@ $< + +$(WORKDIR)/65816-reass.bin: $(WORKDIR)/65816-reass.s $(ISEQUAL) + $(if $(QUIET),echo dasm/65816-reass.bin) + $(CA65) -o $(WORKDIR)/65816-reass.o $< + $(LD65) -o $@ -C 65816.cfg $(WORKDIR)/65816-reass.o + $(ISEQUAL) --binary $(WORKDIR)/test65816.bin $@ + clean: @$(call RMDIR,$(WORKDIR)) diff --git a/test/dasm/test65816.s b/test/dasm/test65816.s new file mode 100644 index 000000000..3d764fb6e --- /dev/null +++ b/test/dasm/test65816.s @@ -0,0 +1,273 @@ +.setcpu "65816" + +ADC ($10,X) +ADC $32,S +ADC $10 +ADC [$10] +ADC #$54 +ADC $9876 +ADC $FEDBCA +ADC ($10),Y +ADC ($10) +ADC ($32,S),Y +ADC $10,X +ADC [$10],Y +ADC $9876,Y +ADC $9876,X +ADC $FEDCBA,X +SBC ($10,X) +SBC $32,S +SBC $10 +SBC [$10] +SBC #$54 +SBC $9876 +SBC $FEDBCA +SBC ($10),Y +SBC ($10) +SBC ($32,S),Y +SBC $10,X +SBC [$10],Y +SBC $9876,Y +SBC $9876,X +SBC $FEDCBA,X +CMP ($10,X) +CMP $32,S +CMP $10 +CMP [$10] +CMP #$54 +CMP $9876 +CMP $FEDBCA +CMP ($10),Y +CMP ($10) +CMP ($32,S),Y +CMP $10,X +CMP [$10],Y +CMP $9876,Y +CMP $9876,X +CMP $FEDCBA,X +CPX #$54 +CPX $10 +CPX $9876 +CPY #$54 +CPY $10 +CPY $9876 +DEC +DEC $10 +DEC $9876 +DEC $10,X +DEC $9876,X +DEX +DEY +INC +INC $10 +INC $9876 +INC $10,X +INC $9876,X +INX +INY +AND ($10,X) +AND $32,S +AND $10 +AND [$10] +AND #$54 +AND $9876 +AND $FEDBCA +AND ($10),Y +AND ($10) +AND ($32,S),Y +AND $10,X +AND [$10],Y +AND $9876,Y +AND $9876,X +AND $FEDCBA,X +EOR ($10,X) +EOR $32,S +EOR $10 +EOR [$10] +EOR #$54 +EOR $9876 +EOR $FEDBCA +EOR ($10),Y +EOR ($10) +EOR ($32,S),Y +EOR $10,X +EOR [$10],Y +EOR $9876,Y +EOR $9876,X +EOR $FEDCBA,X +ORA ($10,X) +ORA $32,S +ORA $10 +ORA [$10] +ORA #$54 +ORA $9876 +ORA $FEDBCA +ORA ($10),Y +ORA ($10) +ORA ($32,S),Y +ORA $10,X +ORA [$10],Y +ORA $9876,Y +ORA $9876,X +ORA $FEDCBA,X +BIT $10 +BIT $9876 +BIT $10,X +BIT $9876,X +BIT #$54 +TRB $10 +TRB $9876 +TSB $10 +TSB $9876 +ASL $10 +ASL +ASL $9876 +ASL $10,X +ASL $9876,X +LSR $10 +LSR +LSR $9876 +LSR $10,X +LSR $9876,X +ROL $10 +ROL +ROL $9876 +ROL $10,X +ROL $9876,X +ROR $10 +ROR +ROR $9876 +ROR $10,X +ROR $9876,X +LABEL: +BCC LABEL +BCS LABEL +BEQ LABEL +BMI LABEL +BNE LABEL +BPL LABEL +BRA LABEL +BVC LABEL +BVS LABEL +BRL LABEL +JMP $1234 +JMP $FEDCBA +JMP ($1234) +JMP ($1234,X) +JMP [$1234] +JSL $123456 +JSR $1234 +JSR ($1234,X) +RTL +RTS +BRK +RTI +CLC +CLD +CLI +CLV +SEC +SED +SEI +REP #$12 +SEP #$12 +LDA ($10,X) +LDA $32,S +LDA $10 +LDA [$10] +LDA #$54 +LDA $9876 +LDA $FEDBCA +LDA ($10),Y +LDA ($10) +LDA ($32,S),Y +LDA $10,X +LDA [$10],Y +LDA $9876,Y +LDA $9876,X +LDA $FEDCBA,X +LDX #$54 +LDX $10 +LDX $9876 +LDX $10,Y +LDX $9876,Y +LDY #$54 +LDY $10 +LDY $9876 +LDY $10,X +LDY $9876,X +STA ($10,X) +STA $32,S +STA $10 +STA [$10] +STA $9876 +STA $FEDBCA +STA ($10),Y +STA ($10) +STA ($32,S),Y +STA $10,X +STA [$10],Y +STA $9876,Y +STA $9876,X +STA $FEDCBA,X +STX $10 +STX $9876 +STX $10,Y +STY $10 +STY $9876 +STY $10,X +STZ $10 +STZ $10,X +STZ $9876 +STZ $9876,X +MVN #$12,#$34 +MVP #$12,#$34 +NOP +PEA $1234 +PEI ($12) +PER LABEL +PHA +PHX +PHY +PLA +PLX +PLY +PHB +PHD +PHK +PHP +PLB +PLD +PLP +STP +WAI +TAX +TAY +TSX +TXA +TXS +TXY +TYA +TYX +TCD +TCS +TDC +TSC +XBA +XCE + +.a16 +.i16 +longs: +ADC #$5432 +SBC #$5432 +CMP #$5432 +CPX #$5432 +CPY #$5432 +AND #$5432 +EOR #$5432 +ORA #$5432 +BIT #$5432 +LDA #$5432 +LDX #$5432 +LDY #$5432