From 1c58c2947db377133472c3aa9eae559dded18151 Mon Sep 17 00:00:00 2001 From: Piotr Jaczewski Date: Tue, 12 May 2020 22:11:51 +0200 Subject: [PATCH] applesoft cartridge added --- .gitignore | 2 +- build.sh | 1 + inc/a1mt.bin | Bin 0 -> 306 bytes inc/apple30th.bin | Bin 0 -> 3456 bytes inc/applesoft.bin | Bin 0 -> 8037 bytes inc/basic.bin | Bin 0 -> 4096 bytes inc/disassembler.bin | Bin 0 -> 512 bytes src/cartridge.xa | 3 +- src/cartridge_applesoft.xa | 135 +++++++++++++++++++++++++++++++++++++ src/rom_applesoft.xa | 7 ++ src/rom_content.xa | 2 + src/rom_content2.xa | 19 +++++- 12 files changed, 164 insertions(+), 5 deletions(-) create mode 100644 inc/a1mt.bin create mode 100644 inc/apple30th.bin create mode 100644 inc/applesoft.bin create mode 100644 inc/basic.bin create mode 100644 inc/disassembler.bin create mode 100644 src/cartridge_applesoft.xa create mode 100644 src/rom_applesoft.xa create mode 100644 src/rom_content.xa diff --git a/.gitignore b/.gitignore index ad7a9d7..d124c9a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -*.bin +cartridge*.bin *.label diff --git a/build.sh b/build.sh index d9918b1..eefc71d 100755 --- a/build.sh +++ b/build.sh @@ -1,3 +1,4 @@ #!/bin/sh xa -W -C -v -O ASCII -c src/cartridge.xa -l cartridge.label -o cartridge.bin +xa -W -C -v -O ASCII -c src/cartridge_applesoft.xa -l cartridge_applesoft.label -o cartridge_applesoft.bin diff --git a/inc/a1mt.bin b/inc/a1mt.bin new file mode 100644 index 0000000000000000000000000000000000000000..437c0ebe9ff9a2200aea98535b6ad36a70dd6732 GIT binary patch literal 306 zcmZQzWe{LM0xKC>*;g{GSk=n5l%bVnDPt?^0hS9aOIcdk4zL1gR-iarBg;aTqih%S zp0QkDdd9kx=_p7A^HJ6dS8(Y8tIxzxf8zkd1&)>fTiH(dbTJ)Zyuh-O@xrGAOcyxV z*e1MPS%2Z#0p<%F7HMo79-O#v_W;X>pDP0ta+p^-f{0)kp)iN}8T(Rpg#u=UiOjEF zz4B>c@|XeQ&0${33Z$2^Ksjs>Is-&aWcFeBukikVf`=CnX!3I!oV1$2l*tA(Gy{c~ Qu#y*K5f_k1Sg8Oa0jpPOU;qFB literal 0 HcmV?d00001 diff --git a/inc/apple30th.bin b/inc/apple30th.bin new file mode 100644 index 0000000000000000000000000000000000000000..32fc73c46086c2b8e12b24bcf493b66de9ef74d6 GIT binary patch literal 3456 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 Oi+#mYKmPym=l=q*WNLN* literal 0 HcmV?d00001 diff --git a/inc/basic.bin b/inc/basic.bin new file mode 100644 index 0000000000000000000000000000000000000000..cdd0fb5ac4f518b8504ddcee731607e9c1d4691e GIT binary patch literal 4096 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 + sta entries_scan_addr+1 + +load_segment + + ; load segment length + ldy #$00 + lda (entries_scan_addr),Y + sta src_len + ldx #entries_scan_addr + jsr increment_16bit + lda (entries_scan_addr),Y + sta src_len+1 + + ; load dest addr + ldx #entries_scan_addr + jsr increment_16bit + lda (entries_scan_addr),Y + sta dest_addr + ldx #entries_scan_addr + jsr increment_16bit + lda (entries_scan_addr),Y + sta dest_addr+1 + + ; load source addr + ldx #entries_scan_addr + jsr increment_16bit + lda (entries_scan_addr),Y + sta src_addr + ldx #entries_scan_addr + jsr increment_16bit + lda (entries_scan_addr),Y + sta src_addr+1 + + ; copy segment from source to destination + jsr init_copy + +load_program + + ldx #entries_scan_addr + jsr increment_16bit + + ; load entry jump address + lda entries_scan_addr + sta dest_addr + lda entries_scan_addr+1 + sta dest_addr+1 + + ldy #$00 + lda (dest_addr),Y + sta jmp_addr + + iny + + lda (dest_addr),Y + sta jmp_addr+1 + + jmp (jmp_addr) + +init_copy + lda #$00 + sta copy_counter + sta copy_counter+1 +copy + ; load byte from rom into ram + ldy #$00 + lda (src_addr),Y + sta (dest_addr),Y + + ; increment source address + ldx #src_addr + jsr increment_16bit + + ; increment destination address + ldx #dest_addr + jsr increment_16bit + + ; compare counter lower byte with source length lower byte + ; if not equal increment counter + lda src_len + cmp copy_counter + bne increment_copy_counter + + ; compare counter upper byte with content length upper byte + ; if not equal increment counter + lda src_len+1 + cmp copy_counter+1 + bne increment_copy_counter + + rts + +increment_copy_counter + ldx #copy_counter + jsr increment_16bit + + jmp copy + +;;; load-end + +;;; tools +increment_16bit + inc $00,X + bne increment_16bit_done + inx + inc $00,X +increment_16bit_done + rts + +;;; tools-end + +rom_content +#include "src/rom_applesoft.xa" diff --git a/src/rom_applesoft.xa b/src/rom_applesoft.xa new file mode 100644 index 0000000..d17e346 --- /dev/null +++ b/src/rom_applesoft.xa @@ -0,0 +1,7 @@ +applesoft +applesoft_len .word $1F65 +applesoft_addr .word $6000 +applesoft_cont_start .word applesoft_cont +applesoft_jmp_addr .word $6000 + +applesoft_cont .bin 0,8037,"inc/applesoft.bin" diff --git a/src/rom_content.xa b/src/rom_content.xa new file mode 100644 index 0000000..baed275 --- /dev/null +++ b/src/rom_content.xa @@ -0,0 +1,2 @@ +;#include "src/rom_content1.xa" +#include "src/rom_content2.xa" diff --git a/src/rom_content2.xa b/src/rom_content2.xa index 6b6b2f0..0aafb66 100644 --- a/src/rom_content2.xa +++ b/src/rom_content2.xa @@ -1,6 +1,20 @@ number_of_entries .byt $02 -; 00: +/* 00: */ +/* test address expected actual */ +/* +0 - All zeros - each byte of memory is verified that a 0x00 value can be written and read +1 - All ones - each byte of memory is verified that a 0xff value can be written and read +2 - Floating ones - eight passes, starting with 0x01 and moving the 1 bit to left each succeeding pass + 0x02 0x04 0x08 0x10 0x20 0x40 0x80 +3 - Floating zeros - eight passes, starting with 0x7f and shifting the 0 bit to the right each succeeding pass + 0xBF 0xDF 0xEF 0xF7 0xFB 0xFD 0xFE +4 - Address in Address 1 - one pass with low eight bits of the locations address is written to that location + if this fails, you have a problem with one of the low eight address lines (this is pretty unlikely to fail, + since you need these address lines in order to load and run this program) +5 - Address in Address 2 - one pass with high eight bits of the locations address written to that location + if this fails, you have a problem with one of the eight high address lines +*/ memorytest memorytest_seg .byt $02 memorytest_1_len .word $0010 @@ -12,7 +26,8 @@ memorytest_2_cont_start .word memorytest_cont+16 memorytest_str .byt $10,"MEMORY TEST 280R" memorytest_jmp_addr .word $FF1F -; 44: +/* 44: */ + disassembler disassembler_seg .byt $01 disassembler_1_len .word $0200