Optimize lower dispatcher used for control transfers, that takes pc in hl
authorNick Downing <nick@ndcode.org>
Mon, 10 Jun 2019 00:34:14 +0000 (10:34 +1000)
committerNick Downing <nick@ndcode.org>
Mon, 10 Jun 2019 00:34:14 +0000 (10:34 +1000)
sm.asm

diff --git a/sm.asm b/sm.asm
index 4d6691d..26de185 100644 (file)
--- a/sm.asm
+++ b/sm.asm
@@ -258,18 +258,16 @@ print_char:
 sm:
        pop     hl
        .db     1 ; ld bc,
-
-dispatch_l5m1: ; pc in de
+dispatch_l5: ; tos in hl, pc in de
        ex      de,hl
-dispatch_l5: ; pc in hl
        pop     de
-dispatch_l6: ; tos in de, pc in hl, b clobbered
-       ld      b,>esc
-dispatch_l7: ; tos in de, pc in hl, b = >esc
+dispatch_l6: ; tos in de, pc in hl
  rst 0x28 ; print hl
-       ld      c,(hl)
-       inc     hl
-       rst     0x10 ; ex bc,hl
+       ld      c,l
+       ld      b,h
+       inc     bc
+       ld      l,(hl)
+       ld      h,>esc
  rst 0x28 ; print hl
  rst 0x30 ; print stack
        jp      (hl)
@@ -310,7 +308,7 @@ _call:
 
 jmp_i: ; same as imm_w, jmp
        rst     8 ; ld hl,(bc)+
-       jr      dispatch_l7
+       jr      dispatch_l6
 
 jz_i: ; same as imm_w, jz
        rst     8 ; ld hl,(bc)+
@@ -321,7 +319,7 @@ jz:
        ld      a,l
        or      h
        jr      nz,dispatch_mm1
-       jr      dispatch_l5m1
+       jr      dispatch_l5
 
 jnz_i: ; same as imm_w, jnz
        rst     8 ; ld hl,(bc)+
@@ -332,11 +330,7 @@ jnz:
        ld      a,l
        or      h
        jr      z,dispatch_mm1
-       jr      dispatch_l5m1
-
-;jmp_x: ; same as xchg_w, jmp
-;      pop     hl
-;      jr      dispatch_l6
+       jr      dispatch_l5
 
 xchg_w:
        pop     hl