summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2016-08-16 12:10:00 +0200
committerLeo C2016-08-16 12:10:00 +0200
commitd24eec894e877b19b848303a46ba6a81b7ccc5b0 (patch)
treea792d77552cc72d142220a28b0fecb3313ed67b3
parentb9ba3380b85ba37d1a4e91d8c4b1b7aeccdc301b (diff)
downloadddt180-d24eec894e877b19b848303a46ba6a81b7ccc5b0.zip
Don't save values in alternate registers over BDOS calls.
I.e replace ex af,af' by push/pop
-rw-r--r--ddt180.z8061
1 files changed, 29 insertions, 32 deletions
diff --git a/ddt180.z80 b/ddt180.z80
index 4196861..cc5ca41 100644
--- a/ddt180.z80
+++ b/ddt180.z80
@@ -350,7 +350,8 @@ l01c9h:
jr outchar
out.ascii:
- push af
+ push bc
+ ld c,a
res 7,a
cp ' '
push af
@@ -359,22 +360,20 @@ out.ascii:
pop af
jr nc,l0242h
sub 0c0h
- ex af,af'
+ ld b,a
call pstr_inl
dc '^'
- ex af,af'
+ ld a,b
l0242h:
call outchar
cp ''''
call z,outchar
- ex af,af'
call outquote
- pop af
- or a
+ sla c
+ pop bc
+ ret nc
ld a,'.'
- call m,outchar
- ex af,af'
- ret
+ jr outchar
outbl6:
call outbl2
@@ -1406,24 +1405,21 @@ l063eh:
push de
ld iy,(reg.pc)
call p_disas_instr
- exx
- ex af,af'
+ pop de
+ ex (sp),hl
+ push af
call crlf
call p_f2
call outbl2
- pop de
- pop hl
ld b,7
l065bh:
call p_regs
djnz l065bh
- exx
- ex af,af'
+ pop af
+ pop hl
and a
- jr z,l066bh
- call outbl6
- call p_offset
-l066bh:
+ call nz,outbl6
+ call nz,p_offset
jp crlf
p_f:
@@ -1438,6 +1434,7 @@ p_f2:
ld a,(reg.f2)
call p_flags
jp outbl
+
p_flags:
ld b,a
ld a,'S'
@@ -1459,7 +1456,6 @@ sub_06aah:
jp outbl
p_regs:
- push bc
push de
call pstr
call pstr_inl
@@ -1474,13 +1470,11 @@ p_regs:
push hl
and a
jr z,l06deh
- push af
- ld a,(de)
- ld l,a
- inc de
- ld a,(de)
- ld h,a
- pop af
+ ex de,hl
+ ld e,(hl)
+ inc hl
+ ld d,(hl)
+ ex de,hl
dec a
jr z,l06d9h
call out.hl.@
@@ -1496,7 +1490,6 @@ l06e2h:
call outbl
pop de
pop hl
- pop bc
ret
b_06e9_start:
@@ -2149,12 +2142,15 @@ l0c5fh:
call sub_0c6ah
ld (reg.f2),a
ret
+
sub_0c6ah:
- ex af,af'
+ push af
ld b,000h
call outbl
call assert_eol
call get_line
+ pop af
+ ex af,af'
l0c76h:
call skipbl
ld a,b
@@ -2690,7 +2686,7 @@ sub_0f58h:
push bc
push de
push hl
- ex af,af'
+ push af
l0f5ch:
call out.hl.@
call z,outbl2
@@ -2722,15 +2718,16 @@ l0f86h:
inc hl
dec e
jr nz,l0f86h
- ex af,af'
+ pop af
+ push af
jr nc,l0f97h
ld (last_D),hl
l0f97h:
- ex af,af'
call crlf
ld a,b
or c
jr nz,l0f5ch
+ pop af
pop hl
pop de
pop bc