Update to asxv5pxx_beta repo, update Makefiles and as6500 addressing syntax
authorNick Downing <nick@ndcode.org>
Sat, 20 Aug 2022 02:17:09 +0000 (12:17 +1000)
committerNick Downing <nick@ndcode.org>
Thu, 19 Jan 2023 22:31:47 +0000 (09:31 +1100)
asxv5pxx
emu_65c02/emu_65c02.c
loader/Makefile
star_blazer/Makefile
star_blazer/star_blazer.asm.patch
test/Makefile
utils/disasm.py

index cd97f12..5653dda 160000 (submodule)
--- a/asxv5pxx
+++ b/asxv5pxx
@@ -1 +1 @@
-Subproject commit cd97f12f9ffb90aa6c6711f875f5203efa79a4e4
+Subproject commit 5653ddaa759642b827443c50aaa3240d7a4a1d6e
index 7533c49..a0eaa83 100644 (file)
 
 #define RESET_VECTOR 0xfffc
 
-#define TRACE 1
+#define TRACE 0
 #define MEM_TRACE 0
 
 extern char **environ;
index 39622a0..a1869d0 100755 (executable)
@@ -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
index b63bb0e..fc963ca 100644 (file)
@@ -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
index edc91e6..df3a033 100644 (file)
        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
        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
 +      ldx     #SHADOW_PAGES
 +      ldy     #<draw_object - SHADOW_START
 +      sta     HW_WRCARDRAM
-+90$:  lda     [video_line_ptr],y
-+      sta     [video_line_ptr],y
++90$:  lda     (video_line_ptr),y
++      sta     (video_line_ptr),y
 +      iny
 +      bne     90$
 +      inc     video_line_ptr + 1
        sta     bvar_179e               ; 17e9 r
        sta     bvar_17a3               ; 17ec r
        sta     bvar_1e0e               ; 17ef r
--1$:   jmp     [vec_init_game]         ; 17d9 -> 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
  
        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
 +      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
        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 @@
        .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
 +      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
 +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
 +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
 +      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
        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
 +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
 +      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
 +      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
 +      .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
 +      .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
 +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
        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
index 016d2af..5381010 100644 (file)
@@ -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:
index d99d871..76b49b1 100755 (executable)
@@ -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):