Remove unused stack addressing modes
authorNick Downing <nick@ndcode.org>
Sun, 16 Jun 2019 12:52:55 +0000 (22:52 +1000)
committerNick Downing <nick@ndcode.org>
Sun, 16 Jun 2019 12:52:55 +0000 (22:52 +1000)
sm2.asm

diff --git a/sm2.asm b/sm2.asm
index adcd0c7..049c2e3 100644 (file)
--- a/sm2.asm
+++ b/sm2.asm
@@ -44,23 +44,6 @@ page0_xchg_w:
        ld      h,page0
        jp      (hl)
 
-imm_call:
-       push    de
-       dec     h ; page 0
-page0_imm_call:
-       ld      a,(bc)
-       inc     bc
-       ld      l,a
-       ld      a,(bc)
-       inc     bc
-       push    bc
-       ld      b,a
-       ld      c,l
-       ld      a,(bc)
-       inc     bc
-       ld      l,a
-       jp      (hl)
-
 page0_call:
        pop     de
 _call:
@@ -114,21 +97,34 @@ page0_jmp:
        ld      l,a
        jp      (hl)
 
-       .org    page0 * 0x100 + 0x88
+       .org    page0 * 0x100 + 0x84
 
-imm_stkptr:
+imm_call:
        push    de
-page0_imm_stkptr:
+       dec     h ; page 0
+page0_imm_call:
        ld      a,(bc)
        inc     bc
        ld      l,a
        ld      a,(bc)
        inc     bc
-       ld      h,a
-       .db     0x3e ; ld a,
-page0_stkptr:
-       pop     hl
+       push    bc
+       ld      b,a
+       ld      c,l
+       ld      a,(bc)
+       inc     bc
+       ld      l,a
+       jp      (hl)
+
 stkptr:
+       push    de
+page0_stkptr:
+       ld      a,(bc)
+       inc     bc
+       ld      l,a
+       ld      a,(bc)
+       inc     bc
+       ld      h,a
        add     hl,sp
        ex      de,hl
        ld      a,(bc)
@@ -139,18 +135,14 @@ stkptr:
 
 page0_ret:
        pop     bc
-page0_imm_stkadj:
-imm_stkadj:
+page0_stkadj:
+stkadj:
        ld      a,(bc)
        inc     bc
        ld      l,a
        ld      a,(bc)
        inc     bc
        ld      h,a
-       .db     0x3e ; ld a,
-page0_stkadj:
-       pop     hl
-stkadj:
        add     hl,sp
        ld      sp,hl
        ld      a,(bc)
@@ -159,19 +151,15 @@ stkadj:
        ld      h,page0
        jp      (hl)
 
-imm_stkld_w:
+stkld_w:
        push    de
-page0_imm_stkld_w:
+page0_stkld_w:
        ld      a,(bc)
        inc     bc
        ld      l,a
        ld      a,(bc)
        inc     bc
        ld      h,a
-       .db     0x3e ; ld a,
-page0_stkld_w:
-       pop     hl
-stkld_w:
        add     hl,sp
        ld      e,(hl)
        inc     hl
@@ -182,16 +170,15 @@ stkld_w:
        ld      h,page1
        jp      (hl)
 
-page0_imm_xchg_stkst_w:
+page0_stkst_w:
        pop     de
-imm_xchg_stkst_w:
+stkst_w:
        ld      a,(bc)
        inc     bc
        ld      l,a
        ld      a,(bc)
        inc     bc
        ld      h,a
-stkst_entry:
        add     hl,sp
        ld      (hl),e
        inc     hl
@@ -202,22 +189,6 @@ stkst_entry:
        ld      h,page0
        jp      (hl)
 
-page0_stkst_w:
-       pop     de
-stkst_w:
-       pop     hl
-;      add     hl,sp
-;      ld      (hl),e
-;      inc     hl
-;      ld      (hl),d
-;      ld      a,(bc)
-;      inc     bc
-;      ld      l,a
-;      ld      h,page0
-;      jp      (hl)
-; the non-immediate stack load/store is hardly ever used and only for symmetry
-       jr      stkst_entry
-
 page0_imm_w:
        inc     h ; page1
 imm_w:
@@ -281,24 +252,15 @@ st_w:
 
        .org    page1 * 0x100
 
-page1_imm_stkptr:
-       jr      imm_stkptr
+page1_imm_call:
+       jr      imm_call
 page1_stkptr:
-       ex      de,hl
        jr      stkptr
-page1_imm_stkadj:
-       push    de
-       jr      imm_stkadj
 page1_stkadj:
-       ex      de,hl
+       push    de
        jr      stkadj
-page1_imm_stkld_w:
-       jr      imm_stkld_w
 page1_stkld_w:
-       ex      de,hl
        jr      stkld_w
-page1_imm_xchg_stkst_w:
-       jr      imm_xchg_stkst_w
 page1_stkst_w:
        jr      stkst_w
 page1_imm_w:
@@ -320,9 +282,6 @@ page1_page0:
        dec     h ; page 0
        jp      (hl)
 
-page1_imm_call:
-       jp      imm_call
-
 page1_call:
        dec     h ; page 0
        jp      _call
@@ -1146,7 +1105,7 @@ start:
 
 sm_main:
        ; create stack frame
-       .db     <page0_imm_stkadj
+       .db     <page0_stkadj
        .dw     -2
 
        ; push argument
@@ -1154,7 +1113,7 @@ sm_main:
        .dw     5
 
        ; push result pointer
-       .db     <page1_imm_stkptr
+       .db     <page1_stkptr
        .dw     2
 
        ; call sm_factorial(argument)
@@ -1163,11 +1122,11 @@ sm_main:
        .dw     4
 
        ; print 10000s
-       .db     <page0_imm_stkld_w
+       .db     <page0_stkld_w
        .dw     0
        .db     <page1_imm_div_sw
        .dw     10000
-       .db     <page1_imm_xchg_stkst_w
+       .db     <page1_stkst_w
        .dw     2
        .db     <page0_page1
        .db     page1_imm_add_w
@@ -1177,11 +1136,11 @@ sm_main:
        .dw     2
 
        ; print 1000s
-       .db     <page0_imm_stkld_w
+       .db     <page0_stkld_w
        .dw     0
        .db     <page1_imm_div_sw
        .dw     1000
-       .db     <page1_imm_xchg_stkst_w
+       .db     <page1_stkst_w
        .dw     2
        .db     <page0_page1
        .db     page1_imm_add_w
@@ -1191,11 +1150,11 @@ sm_main:
        .dw     2
 
        ; print 100s
-       .db     <page0_imm_stkld_w
+       .db     <page0_stkld_w
        .dw     0
        .db     <page1_imm_div_sw
        .dw     100
-       .db     <page1_imm_xchg_stkst_w
+       .db     <page1_stkst_w
        .dw     2
        .db     <page0_page1
        .db     page1_imm_add_w
@@ -1205,11 +1164,11 @@ sm_main:
        .dw     2
 
        ; print 10s
-       .db     <page0_imm_stkld_w
+       .db     <page0_stkld_w
        .dw     0
        .db     <page1_imm_div_sw
        .dw     10
-       .db     <page1_imm_xchg_stkst_w
+       .db     <page1_stkst_w
        .dw     2
        .db     <page0_page1
        .db     page1_imm_add_w
@@ -1219,7 +1178,7 @@ sm_main:
        .dw     2
 
        ; print 1s
-       .db     <page0_imm_stkld_w
+       .db     <page0_stkld_w
        .dw     0
        .db     page1_imm_add_w
        .dw     '0
@@ -1242,7 +1201,7 @@ sm_main:
        .dw     2
 
        ; destroy stack frame
-       .db     <page0_imm_stkadj
+       .db     <page0_stkadj
        .dw     2
 
        ; return
@@ -1251,7 +1210,7 @@ sm_main:
 sm_factorial:
  .db <page0_trace
        ; get argument
-       .db     <page0_imm_stkld_w
+       .db     <page0_stkld_w
        .dw     4
 
        ; is argument < 2?
@@ -1261,11 +1220,11 @@ sm_factorial:
        .dw     1$
 
        ; no, set up for *result =
-       .db     <page0_imm_stkld_w
+       .db     <page0_stkld_w
        .dw     2
 
        ; get argument
-       .db     <page1_imm_stkld_w
+       .db     <page1_stkld_w
        .dw     6
 
        ; subtract 1
@@ -1273,7 +1232,7 @@ sm_factorial:
        .dw     -1
 
        ; push result pointer
-       .db     <page1_imm_stkptr
+       .db     <page1_stkptr
        .dw     0
 
        ; call sm_factorial(argument - 1)
@@ -1282,7 +1241,7 @@ sm_factorial:
        .dw     2
 
        ; get argument
-       .db     <page0_imm_stkld_w
+       .db     <page0_stkld_w
        .dw     8
 
        ; multiply
@@ -1297,7 +1256,7 @@ sm_factorial:
 
 1$:
        ; yes, set up for *result =
-       .db     <page0_imm_stkld_w
+       .db     <page0_stkld_w
        .dw     2
 
        ; set *result = 1