From f2a4019ab51c92a68bb29549b197090bba1b9c62 Mon Sep 17 00:00:00 2001 From: Nick Downing Date: Sat, 20 Aug 2022 12:17:09 +1000 Subject: [PATCH] Update to asxv5pxx_beta repo, update Makefiles and as6500 addressing syntax --- asxv5pxx | 2 +- emu_65c02/emu_65c02.c | 2 +- loader/Makefile | 16 +++---- star_blazer/Makefile | 50 ++++++++++---------- star_blazer/star_blazer.asm.patch | 76 +++++++++++++++---------------- test/Makefile | 8 ++-- utils/disasm.py | 6 +-- 7 files changed, 80 insertions(+), 80 deletions(-) diff --git a/asxv5pxx b/asxv5pxx index cd97f12..5653dda 160000 --- a/asxv5pxx +++ b/asxv5pxx @@ -1 +1 @@ -Subproject commit cd97f12f9ffb90aa6c6711f875f5203efa79a4e4 +Subproject commit 5653ddaa759642b827443c50aaa3240d7a4a1d6e diff --git a/emu_65c02/emu_65c02.c b/emu_65c02/emu_65c02.c index 7533c49..a0eaa83 100644 --- a/emu_65c02/emu_65c02.c +++ b/emu_65c02/emu_65c02.c @@ -114,7 +114,7 @@ #define RESET_VECTOR 0xfffc -#define TRACE 1 +#define TRACE 0 #define MEM_TRACE 0 extern char **environ; diff --git a/loader/Makefile b/loader/Makefile index 39622a0..a1869d0 100755 --- a/loader/Makefile +++ b/loader/Makefile @@ -33,42 +33,42 @@ lzss_unpack_rev.bin: lzss_unpack_rev.ihx ${HEX2BIN} $< $@ lzss_unpack_rev.ihx: lzss_unpack_rev.rel - ${ASLINK} -n -m -u -il -b text=0 $@ $^ + ${ASLINK} -nmuia text=0 -o+$@ $^ lzss_unpack_rev.rel: lzss_unpack_rev.asm - ${AS6500} -l -o $< + ${AS6500} -lo $< lzss_unpack_rev_aux_mem.bin: lzss_unpack_rev_aux_mem.ihx ${HEX2BIN} $< $@ lzss_unpack_rev_aux_mem.ihx: lzss_unpack_rev_aux_mem.rel # note: runs from stack so its base is 0x100 and it can use jmp - ${ASLINK} -n -m -u -il -b text=0x100 $@ $^ + ${ASLINK} -nmuia text=0x100 -o+$@ $^ lzss_unpack_rev_aux_mem.rel: lzss_unpack_rev.asm sed -e 's/^AUX_MEM = 0/AUX_MEM = 1/' <$< >lzss_unpack_rev_aux_mem.asm - ${AS6500} -l -o lzss_unpack_rev_aux_mem.asm + ${AS6500} -lo lzss_unpack_rev_aux_mem.asm rm lzss_unpack_rev_aux_mem.asm lzss_unpack_fwd.bin: lzss_unpack_fwd.ihx ${HEX2BIN} $< $@ lzss_unpack_fwd.ihx: lzss_unpack_fwd.rel - ${ASLINK} -n -m -u -il -b text=0 $@ $^ + ${ASLINK} -nmuia text=0 -o+$@ $^ lzss_unpack_fwd.rel: lzss_unpack_fwd.asm - ${AS6500} -l -o $< + ${AS6500} -lo $< lzss_unpack_fwd_aux_mem.bin: lzss_unpack_fwd_aux_mem.ihx ${HEX2BIN} $< $@ lzss_unpack_fwd_aux_mem.ihx: lzss_unpack_fwd_aux_mem.rel # note: runs from stack so its base is 0x100 and it can use jmp - ${ASLINK} -n -m -u -il -b text=0x100 $@ $^ + ${ASLINK} -nmuia text=0x100 -o+$@ $^ lzss_unpack_fwd_aux_mem.rel: lzss_unpack_fwd.asm sed -e 's/^AUX_MEM = 0/AUX_MEM = 1/' <$< >lzss_unpack_fwd_aux_mem.asm - ${AS6500} -l -o lzss_unpack_fwd_aux_mem.asm + ${AS6500} -lo lzss_unpack_fwd_aux_mem.asm rm lzss_unpack_fwd_aux_mem.asm star_blazer.ihx: star_blazer.a2bin star_blazer_segments.txt diff --git a/star_blazer/Makefile b/star_blazer/Makefile index b63bb0e..fc963ca 100644 --- a/star_blazer/Makefile +++ b/star_blazer/Makefile @@ -20,37 +20,37 @@ star_blazer.dsk: ../util/bootable.dsk star_blazer_pack_rev.a2bin ${DOS33} $@ SAVE B star_blazer_pack_rev.a2bin "STAR BLAZER PACK REV" # DHGR -star_blazer_pack_rev.a2bin: \ -star_blazer.ihx \ -../loader/lzss_unpack_rev_aux_mem.bin \ -../loader/star_blazer_pack_rev.a2bin - ../utils/a2_pack.py ${LOAD_ADDR} ../loader/lzss_unpack_rev_aux_mem.bin $< $@ - -diff -q ../loader/star_blazer_pack_rev.a2bin $@ - -# HGR #star_blazer_pack_rev.a2bin: \ #star_blazer.ihx \ -#../loader/lzss_unpack_rev.bin \ +#../loader/lzss_unpack_rev_aux_mem.bin \ #../loader/star_blazer_pack_rev.a2bin -# ../utils/a2_pack.py ${LOAD_ADDR} ../loader/lzss_unpack_rev.bin $< $@ +# ../utils/a2_pack.py ${LOAD_ADDR} ../loader/lzss_unpack_rev_aux_mem.bin $< $@ # -diff -q ../loader/star_blazer_pack_rev.a2bin $@ +# HGR +star_blazer_pack_rev.a2bin: \ +star_blazer.ihx \ +../loader/lzss_unpack_rev.bin \ +../loader/star_blazer_pack_rev.a2bin + ../utils/a2_pack.py ${LOAD_ADDR} ../loader/lzss_unpack_rev.bin $< $@ + -diff -q ../loader/star_blazer_pack_rev.a2bin $@ + star_blazer.ihx: star_blazer.rel # add for DHGR: -b data5=0x15c00 - ${ASLINK} -n -m -u -il \ --b zpage=0 \ --b data0=0x200 \ --b udata0=0x400 \ --b text0=0xa00 \ --b text1=0x1800 \ --b text2=0x1e00 \ --b data1=0x1f80 \ --b data2=0x4000 \ --b data3=0x4800 \ --b data4=0x5c00 \ --b data5=0x8e00 \ --b udata1=0xa800 \ -$@ $< + ${ASLINK} -nmui \ +-a zpage=0 \ +-a data0=0x200 \ +-a udata0=0x400 \ +-a text0=0xa00 \ +-a text1=0x1800 \ +-a text2=0x1e00 \ +-a data1=0x1f80 \ +-a data2=0x4000 \ +-a data3=0x4800 \ +-a data4=0x5c00 \ +-a data5=0x8e00 \ +-a udata1=0xa800 \ +-o+$@ $< star_blazer.rel: \ star_blazer.asm \ @@ -65,7 +65,7 @@ object_defs.inc \ object_index.inc \ object_data.inc \ draw_misc_table.inc - ${AS6500} -3 -l -o $< + ${AS6500} -3lo+$@ $< shape_index_pixel.inc shape_data_pixel.inc: star_blazer.txt shape_pixel.json ./shape_compile.py $^ shape_index_pixel.inc shape_data_pixel.inc diff --git a/star_blazer/star_blazer.asm.patch b/star_blazer/star_blazer.asm.patch index edc91e6..df3a033 100644 --- a/star_blazer/star_blazer.asm.patch +++ b/star_blazer/star_blazer.asm.patch @@ -113,7 +113,7 @@ beq loc_14c9 ; 14a8 r +.endif ucode_test_fire_all_objects_inactive: - lda [*ucode_ptr_e6],y ; 14aa r + lda (*ucode_ptr_e6),y ; 14aa r beq loc_14c9 ; 14ac r tax ; 14ae r - lda object1080_y1 + 0x60,x ; 14af r @@ -136,7 +136,7 @@ rts ; 14df r +.endif ucode_test_fire_any_object_inactive: - lda [*ucode_ptr_e6],y ; 14e0 r + lda (*ucode_ptr_e6),y ; 14e0 r beq loc_14c9 ; 14e2 r tax ; 14e4 r - lda object1080_y1 + 0x60,x ; 14e5 r @@ -168,8 +168,8 @@ + ldx #SHADOW_PAGES + ldy # 17f2 -> 1708 r +-1$: jmp (vec_init_game) ; 17d9 -> 17f2 -> 1708 r +1$: +.if 0 ;DHGR ; language card + sta HW_LC_BANK2_RAM_WE + sta HW_LC_BANK2_RAM_WE +.endif -+ jmp [vec_init_game] ; 17d9 -> 17f2 -> 1708 r ++ jmp (vec_init_game) ; 17d9 -> 17f2 -> 1708 r .area text1 @@ -218,14 +218,14 @@ ldx #>HIRES_SCREEN ; 199b -> 199d -> 199f r stx *video_line_ptr + 1 ; 199d -> 199f -> 19a1 r tay ; 199f -> 19a1 -> 19a2 r --0$: sta [*video_line_ptr],y ; 19a1,19a5,19aa -> 19a2 -> 19a4 r y=00..ff +-0$: sta (*video_line_ptr),y ; 19a1,19a5,19aa -> 19a2 -> 19a4 r y=00..ff +0$: +.if DHGR + sta HW_WRCARDRAM -+ sta [*video_line_ptr],y ++ sta (*video_line_ptr),y + sta HW_WRMAINRAM +.endif -+ sta [*video_line_ptr],y ; 19a1,19a5,19aa -> 19a2 -> 19a4 r y=00..ff ++ sta (*video_line_ptr),y ; 19a1,19a5,19aa -> 19a2 -> 19a4 r y=00..ff iny ; 19a2 -> 19a4 -> 19a5 r bne 0$ ; 19a4 -> 19a5 -> 19a2,19a7 r z=0..1 inc *video_line_ptr + 1 ; 19a5 -> 19a7 -> 19a9 r @@ -254,7 +254,7 @@ + lda #0 + sta HW_WRCARDRAM + ldy *clip_x0 -+90$: sta [*video_line_ptr],y ; 19c7,19ce -> 19c9 -> 19cb r y=6c..93 ++90$: sta (*video_line_ptr),y ; 19c7,19ce -> 19c9 -> 19cb r y=6c..93 + iny ; 19c9 -> 19cb -> 19cc r + cpy *clip_x1 ; 19cb -> 19cc -> 19ce r y=6d..94 + bcc 90$ ; 19cc -> 19ce -> 19c9,19d0 r c=0..1 @@ -264,7 +264,7 @@ ldy *clip_x0 ; 19c3 -> 19c5 -> 19c7 r lda #0x00 ; 19c5 -> 19c7 -> 19c9 r +.endif - 1$: sta [*video_line_ptr],y ; 19c7,19ce -> 19c9 -> 19cb r y=6c..93 + 1$: sta (*video_line_ptr),y ; 19c7,19ce -> 19c9 -> 19cb r y=6c..93 iny ; 19c9 -> 19cb -> 19cc r cpy *clip_x1 ; 19cb -> 19cc -> 19ce r y=6d..94 @@ -2291,6 +2403,7 @@ @@ -277,8 +277,8 @@ .db 0x83 ; 1a27 r @@ -2373,14 +2486,17 @@ lda object1080_onscreen_shape_ptr_hi - 0x10,x ; 1aa5 -> 1aa7 -> 1aaa r x=20..4f - ora [*video_line_ptr],y ; 1aa7 -> 1aaa -> 1aac r y=6d..93,02 - sta [*video_line_ptr],y ; 1aaa -> 1aac -> 1aae r y=6d..93,02 + ora (*video_line_ptr),y ; 1aa7 -> 1aaa -> 1aac r y=6d..93,02 + sta (*video_line_ptr),y ; 1aaa -> 1aac -> 1aae r y=6d..93,02 +.endif rts_1aae: rts ; 1a7b,1a7f,1aa1,1aa5,1aac,1ad6 -> 1aae -> 15cd r s=fb @@ -341,8 +341,8 @@ + stx *dimension +90$: .db 0xbd ; lda NNNN,x +91$: .dw 0 -+ ora [*video_line_ptr],y -+ sta [*video_line_ptr],y ++ ora (*video_line_ptr),y ++ sta (*video_line_ptr),y + inx + iny + cpy *draw_x1 @@ -359,13 +359,13 @@ +92$: .dw 0 + lsr a + and #0x40 -+ ora [*video_line_ptr],y -+ sta [*video_line_ptr],y ++ ora (*video_line_ptr),y ++ sta (*video_line_ptr),y +93$: iny +.endif 6$: .db 0xbd ; 1b69,1b76 -> 1b6b -> 1b6e r "lda bvar_6f9f,x" x=00..39 7$: .dw 0x6f9f ; 1b6c rw - ora [*video_line_ptr],y ; 1b6b -> 1b6e -> 1b70 r y=6c..93 + ora (*video_line_ptr),y ; 1b6b -> 1b6e -> 1b70 r y=6c..93 @@ -2470,16 +2634,50 @@ rts ; 1b80 -> 1b82 -> 15cd r s=fb 8$: inc object1080_onscreen_clipped - 0x10,x ; 1b3b,1b41,1b47,1b4d -> 1b83 -> 1b86 r x=14..77 @@ -412,8 +412,8 @@ +94$: .dw 0 + lsr a + and #0x40 -+ ora [*video_line_ptr],y -+ sta [*video_line_ptr],y ++ ora (*video_line_ptr),y ++ sta (*video_line_ptr),y +95$: iny +.endif 10$: lda *draw_y ; 1ba0,1bbf -> 1ba2 -> 1ba4 r @@ -428,14 +428,14 @@ + sta HW_WRCARDRAM + .db 0xbd ; lda NNNN,x +96$: .dw 0 -+ ora [*video_line_ptr],y -+ sta [*video_line_ptr],y ++ ora (*video_line_ptr),y ++ sta (*video_line_ptr),y + sta HW_RDMAINRAM + sta HW_WRMAINRAM +.endif .db 0xbd ; 1bb2 -> 1bb4 -> 1bb7 r "lda 0x6fab,x" x=00..39 11$: .dw 0x6fab ; 1bb5 rw - ora [*video_line_ptr],y ; 1bb4 -> 1bb7 -> 1bb9 r y=6c..93 + ora (*video_line_ptr),y ; 1bb4 -> 1bb7 -> 1bb9 r y=6c..93 @@ -2502,6 +2710,7 @@ cpy *draw_y1 ; 1bc3 -> 1bc5 -> 1bc7 r y=12..d9 bcc 9$ ; 1bc5 -> 1bc7 -> 1b96,1bc9 r c=0..1 @@ -446,8 +446,8 @@ lda #0x00 ; 1c12 -> 1bcc -> 1bce r @@ -2533,12 +2742,15 @@ eor #0xff ; 1c03 -> 1c06 -> 1c08 r - and [*video_line_ptr],y ; 1c06 -> 1c08 -> 1c0a r y=6d..93,02 - sta [*video_line_ptr],y ; 1c08 -> 1c0a -> 1c0c r y=6d..93,02 + and (*video_line_ptr),y ; 1c06 -> 1c08 -> 1c0a r y=6d..93,02 + sta (*video_line_ptr),y ; 1c08 -> 1c0a -> 1c0c r y=6d..93,02 +.endif rts_1c0c: rts ; 1bd6,1bda,1bfd,1c01,1c0a,1c10 -> 1c0c -> 1076,15cd,16a8 r s=f3..fb,02 @@ -496,8 +496,8 @@ +90$: .db 0xbd ; lda NNNN,x +91$: .dw 0 + eor #0xff -+ and [*video_line_ptr],y -+ sta [*video_line_ptr],y ++ and (*video_line_ptr),y ++ sta (*video_line_ptr),y + inx + iny + cpy *draw_x1 @@ -515,8 +515,8 @@ + lsr a + and #0x40 + eor #0xff -+ and [*video_line_ptr],y -+ sta [*video_line_ptr],y ++ and (*video_line_ptr),y ++ sta (*video_line_ptr),y +93$: iny +.endif 1$: .db 0xbd ; 1c4e,1c5d -> 1c50 -> 1c53 r "lda 0x6f93,x" x=00..39 @@ -569,8 +569,8 @@ + lsr a + and #0x40 + eor #0xff -+ and [*video_line_ptr],y -+ sta [*video_line_ptr],y ++ and (*video_line_ptr),y ++ sta (*video_line_ptr),y +95$: iny +.endif 5$: lda *draw_y ; 1c84,1ca5 -> 1c86 -> 1c88 r @@ -586,8 +586,8 @@ + .db 0xbd ; lda NNNN,x +96$: .dw 0 + eor #0xff -+ and [*video_line_ptr],y -+ sta [*video_line_ptr],y ++ and (*video_line_ptr),y ++ sta (*video_line_ptr),y + sta HW_RDMAINRAM + sta HW_WRMAINRAM +.endif @@ -650,7 +650,7 @@ + .db 0xbd ; lda NNNN,x +91$: .dw 0 + and *draw_misc_mask_temp -+ sta [*video_line_ptr],y ++ sta (*video_line_ptr),y +92$: lda *draw_misc_mask_temp + eor *draw_misc_aux_mask_xor + sta *draw_misc_mask_temp @@ -676,10 +676,10 @@ +93$: .dw 0 + lsr a + and *draw_misc_mask_temp -+ eor [*video_line_ptr],y ++ eor (*video_line_ptr),y + and #0x40 -+ eor [*video_line_ptr],y -+ sta [*video_line_ptr],y ++ eor (*video_line_ptr),y ++ sta (*video_line_ptr),y +94$: iny +95$: lda *draw_misc_mask_temp + eor *draw_misc_mask_xor @@ -733,7 +733,7 @@ cmp #0x08 ; 1d41 -> 1d43 -> 1d45 r a=00..1f @@ -2707,6 +3092,14 @@ iny ; 1d57 -> 1d59 -> 1d5a r - 1$: lda [*draw_misc_ptr],y ; 1d59,1d69 -> 1d5a -> 1d5c r y=03..0c + 1$: lda (*draw_misc_ptr),y ; 1d59,1d69 -> 1d5a -> 1d5c r y=03..0c beq 2$ ; 1d5a -> 1d5c -> 1d5e,1d61 r z=0..1 +.if DHGR + cmp #0xd0 ; star diff --git a/test/Makefile b/test/Makefile index 016d2af..5381010 100644 --- a/test/Makefile +++ b/test/Makefile @@ -24,10 +24,10 @@ dhgr.a2bin: dhgr.ihx rm __temp__.bin dhgr.ihx: dhgr.rel - ${ASLINK} -n -m -u -il -b text=${LOAD_ADDR} $@ $^ + ${ASLINK} -nmuia text=${LOAD_ADDR} -o+$@ $^ dhgr.rel: dhgr.asm - ${AS6500} -l -o $< + ${AS6500} -lo $< zebra.a2bin: zebra.dhr ./hdr.py ${HIRES_SCREEN} $< $@ @@ -39,10 +39,10 @@ dhgr_viewer.bin: dhgr_viewer.ihx ${HEX2BIN} $< $@ dhgr_viewer.ihx: dhgr_viewer.rel - ${ASLINK} -n -m -u -il -b text=${LOAD_ADDR} $@ $^ + ${ASLINK} -nmuia text=${LOAD_ADDR} -o+$@ $^ dhgr_viewer.rel: dhgr_viewer.asm - ${AS6500} -l -o $< + ${AS6500} -lo $< .PHONY: clean clean: diff --git a/utils/disasm.py b/utils/disasm.py index d99d871..76b49b1 100755 --- a/utils/disasm.py +++ b/utils/disasm.py @@ -671,14 +671,14 @@ def disasm_code_indirect(addr, n, instr, match): # allow for self-modifying code assert n != 3 - instr[1] = f'[{get_label(dest, zpage):s}]' + instr[1] = f'({get_label(dest, zpage):s})' re_indirect_y = re.compile('\(\$([0-9a-f]+)\),y$') def disasm_code_indirect_y(addr, n, instr, match): assert len(match.group(1)) == 2 dest = int(match.group(1), 16) add_item(dest, 2, '6ptr', ITEM_WORD, [ITEM_BYTE]) - instr[1] = f'[{get_label(dest, True):s}],y' + instr[1] = f'({get_label(dest, True):s}),y' re_x_indirect = re.compile('\(\$([0-9a-f]+),x\)$') def disasm_code_x_indirect(addr, n, instr, match): @@ -700,7 +700,7 @@ def disasm_code_x_indirect(addr, n, instr, match): ITEM_WORD, [ITEM_BYTE] ) - instr[1] = f'[{get_label(dest + min_unsigned, True, -min_unsigned):s},x]' + instr[1] = f'({get_label(dest + min_unsigned, True, -min_unsigned):s},x)' re_immediate = re.compile('#\$([0-9a-f]+)$') def disasm_code_immediate(addr, n, instr, match): -- 2.34.1