jr l0b58h\r
\r
; divide x/y\r
-; x: hl\r
-; y: de\r
+; hl: x\r
+; de: y\r
; return:\r
-; x/y: hl\r
-; rem: de\r
+; hl: q (x/y)\r
+; de: r (x%y)\r
\r
DIV_HL_DE:\r
push bc\r
ld c,l\r
ld hl,0 ;r = 0\r
ld a,16 ;count\r
+\r
+; de: x (x shifted out, q shifted in)\r
+; bc: y\r
+; hl: r (initially 0)\r
+\r
l0b89h:\r
ex de,hl ;x\r
add hl,hl ;x <<= 1\r
div_no_restore:\r
dec a\r
jr nz,l0b89h\r
- ex de,hl\r
+ ex de,hl ;hl: q de: r\r
pop bc\r
ret\r
\r
l0ce9h:\r
ld hl,0\r
l0cech:\r
- call get.decdigit\r
+ call get.bindigit\r
l0cefh:\r
inc de\r
jr c,l0cf8h\r
l0cf8h:\r
cp '"'\r
jp nz,ERROR\r
- call get.decdigit\r
+ call get.bindigit\r
jr nc,l0cefh\r
or a\r
ret\r
DC 'F'\r
DB 0\r
b_0x136C_start:\r
- if ROMSYS\r
- defb 000h\r
- defw uromen\r
+ if ROMSYS\r
+ defb 000h\r
+ defw uromen\r
endif\r
if CPU_Z180\r
- defb 000h\r
- defw ucbar\r
- defb 000h\r
- defw ubbr\r
+ defb 000h\r
+ defw ucbar\r
+ defb 000h\r
+ defw ubbr\r
else\r
- defb 000h\r
- defw ubnk\r
+ defb 000h\r
+ defw ubnk\r
endif\r
- defb 003h\r
- defw reg.c2\r
- defb 003h\r
- defw reg.e2\r
- defb 003h\r
- defw reg.l2\r
- defb 003h\r
- defw reg.c\r
- defb 003h\r
- defw reg.e\r
- defb 003h\r
- defw reg.l\r
- defb 000h\r
- defw reg.a2\r
- defb 000h\r
- defw reg.b2\r
- defb 000h\r
- defw reg.c2\r
- defb 000h\r
- defw reg.d2\r
- defb 000h\r
- defw reg.e2\r
- defb 000h\r
- defw reg.h2\r
- defb 000h\r
- defw reg.l2\r
- defb 000h\r
- defw reg.a\r
- defb 000h\r
- defw reg.b\r
- defb 000h\r
- defw reg.c\r
- defb 000h\r
- defw reg.d\r
- defb 000h\r
- defw reg.e\r
- defb 000h\r
- defw reg.h\r
- defb 000h\r
- defw reg.l\r
- defb 003h\r
- defw reg.ix\r
- defb 003h\r
- defw reg.iy\r
- defb 003h\r
- defw reg.sp\r
- defb 003h\r
- defw reg.pc\r
- defb 003h\r
- defw reg.ix\r
- defb 003h\r
- defw reg.iy\r
- defb 003h\r
- defw reg.sp\r
- defb 003h\r
- defw reg.pc\r
- defb 000h\r
- defw reg.i\r
- defb 000h\r
- defw reg.f2\r
- defb 000h\r
- defw reg.f\r
+ defb 003h\r
+ defw reg.c2\r
+ defb 003h\r
+ defw reg.e2\r
+ defb 003h\r
+ defw reg.l2\r
+ defb 003h\r
+ defw reg.c\r
+ defb 003h\r
+ defw reg.e\r
+ defb 003h\r
+ defw reg.l\r
+ defb 000h\r
+ defw reg.a2\r
+ defb 000h\r
+ defw reg.b2\r
+ defb 000h\r
+ defw reg.c2\r
+ defb 000h\r
+ defw reg.d2\r
+ defb 000h\r
+ defw reg.e2\r
+ defb 000h\r
+ defw reg.h2\r
+ defb 000h\r
+ defw reg.l2\r
+ defb 000h\r
+ defw reg.a\r
+ defb 000h\r
+ defw reg.b\r
+ defb 000h\r
+ defw reg.c\r
+ defb 000h\r
+ defw reg.d\r
+ defb 000h\r
+ defw reg.e\r
+ defb 000h\r
+ defw reg.h\r
+ defb 000h\r
+ defw reg.l\r
+ defb 003h\r
+ defw reg.ix\r
+ defb 003h\r
+ defw reg.iy\r
+ defb 003h\r
+ defw reg.sp\r
+ defb 003h\r
+ defw reg.pc\r
+ defb 003h\r
+ defw reg.ix\r
+ defb 003h\r
+ defw reg.iy\r
+ defb 003h\r
+ defw reg.sp\r
+ defb 003h\r
+ defw reg.pc\r
+ defb 000h\r
+ defw reg.i\r
+ defb 000h\r
+ defw reg.f2\r
+ defb 000h\r
+ defw reg.f\r
CMD.S:\r
- ld hl,(lst.S)\r
- call get_lastarg_def\r
+ ld hl,(lst.S)\r
+ call get_lastarg_def\r
l13d8h:\r
- ld (lst.S),hl\r
- call out.hl.@\r
- call OUTBL\r
+ ld (lst.S),hl\r
+ call out.hl.@\r
+ call OUTBL\r
comst\r
- ld a,(hl)\r
+ ld a,(hl)\r
comend\r
- call out.hex\r
- call outbl2\r
- call INLINE\r
- call SKIPBL\r
- inc hl\r
- jr z,l13d8h\r
- dec hl\r
- inc de\r
- cp '.'\r
- jp z,assert_eol\r
- cp '-'\r
- jr nz,l1406h\r
- ld a,(de)\r
- or a\r
- dec hl\r
- jr z,l13d8h\r
- inc hl\r
+ call out.hex\r
+ call outbl2\r
+ call INLINE\r
+ call SKIPBL\r
+ inc hl\r
+ jr z,l13d8h\r
+ dec hl\r
+ inc de\r
+ cp '.'\r
+ jp z,assert_eol\r
+ cp '-'\r
+ jr nz,l1406h\r
+ ld a,(de)\r
+ or a\r
+ dec hl\r
+ jr z,l13d8h\r
+ inc hl\r
l1406h:\r
- dec de\r
- call get_bytes_m\r
- jr l13d8h\r
+ dec de\r
+ call get_bytes_m\r
+ jr l13d8h\r
\r
CMD.@:\r
- call assert_eol\r
- ld hl,MSG_at\r
- ld de,offs.@\r
- ld c,001h\r
- jp l1279h\r
+ call assert_eol\r
+ ld hl,MSG_at\r
+ ld de,offs.@\r
+ ld c,001h\r
+ jp l1279h\r
MSG_at:\r
dc '@'\r
\r
CMD.I:\r
- ld hl,CMD.I\r
- ld (CMD_RPT),hl\r
- ld hl,(lst.IP)\r
- call get_lastarg_def\r
- ld (lst.IP),hl\r
- ld b,h\r
- ld c,l\r
+ ld hl,CMD.I\r
+ ld (CMD_RPT),hl\r
+ ld hl,(lst.IP)\r
+ call get_lastarg_def\r
+ ld (lst.IP),hl\r
+ ld b,h\r
+ ld c,l\r
if CPU_Z180\r
- ld a,b\r
- or a\r
- jr nz,l1442h\r
- ld a,c\r
- ld hl,ucbar\r
- cp cbar\r
- jr z,l143fh\r
- ld hl,ubbr\r
- cp bbr\r
- jr nz,l1442h\r
+ ld a,b\r
+ or a\r
+ jr nz,l1442h\r
+ ld a,c\r
+ ld hl,ucbar\r
+ cp cbar\r
+ jr z,l143fh\r
+ ld hl,ubbr\r
+ cp bbr\r
+ jr nz,l1442h\r
l143fh:\r
- ld a,(hl)\r
- jr l1444h\r
+ ld a,(hl)\r
+ jr l1444h\r
l1442h:\r
endif\r
- in a,(c)\r
+ in a,(c)\r
l1444h:\r
- push af\r
- call out.hex\r
- call outbl4\r
- pop af\r
- call out.bin.b\r
- jp CRLF\r
+ push af\r
+ call out.hex\r
+ call outbl4\r
+ pop af\r
+ call out.bin.b\r
+ jp CRLF\r
CMD.O:\r
- ld hl,CMD.O\r
- ld (CMD_RPT),hl\r
- ld hl,(lst.OD)\r
- call get_arg_def\r
- ld a,l\r
- ld (lst.OD),a\r
- push af\r
- call skip_to_nextarg\r
- ld hl,(lst.OP)\r
- call get_lastarg_def\r
- ld (lst.OP),hl\r
- ld b,h\r
- ld c,l\r
+ ld hl,CMD.O\r
+ ld (CMD_RPT),hl\r
+ ld hl,(lst.OD)\r
+ call get_arg_def\r
+ ld a,l\r
+ ld (lst.OD),a\r
+ push af\r
+ call skip_to_nextarg\r
+ ld hl,(lst.OP)\r
+ call get_lastarg_def\r
+ ld (lst.OP),hl\r
+ ld b,h\r
+ ld c,l\r
if CPU_Z180\r
- ld a,b\r
- or a\r
- jr nz,l1489h\r
- ld a,c\r
- ld hl,ucbar\r
- cp cbar\r
- jr z,l148dh\r
- ld hl,ubbr\r
- cp bbr\r
- jr z,l148dh\r
- cp cbr\r
- jp z,ERROR\r
+ ld a,b\r
+ or a\r
+ jr nz,l1489h\r
+ ld a,c\r
+ ld hl,ucbar\r
+ cp cbar\r
+ jr z,l148dh\r
+ ld hl,ubbr\r
+ cp bbr\r
+ jr z,l148dh\r
+ cp cbr\r
+ jp z,ERROR\r
l1489h:\r
endif\r
- pop af\r
- out (c),a\r
+ pop af\r
+ out (c),a\r
ret\r
if CPU_Z180\r
l148dh:\r
- pop af\r
- ld (hl),a\r
- ret\r
+ pop af\r
+ ld (hl),a\r
+ ret\r
endif\r
\r
CMD.V:\r
- call get_arg3 ;1490 get from, size, to\r
+ call get_arg3 ;1490 get from, size, to\r
cmp_mem:\r
- push bc\r
+ push bc\r
comst\r
- ld a,(de)\r
- ld b,(hl)\r
+ ld a,(de)\r
+ ld b,(hl)\r
comend\r
- cp b\r
- jr z,l14bah\r
- ld c,a\r
- call out.hl.@\r
- call OUTBL\r
- ld a,b\r
- call out.hex\r
- call outbl2\r
- ld a,c\r
- call out.hex\r
- call OUTBL\r
- ex de,hl\r
- call out.hl.@\r
- ex de,hl\r
- call CRLF\r
+ cp b\r
+ jr z,l14bah\r
+ ld c,a\r
+ call out.hl.@\r
+ call OUTBL\r
+ ld a,b\r
+ call out.hex\r
+ call outbl2\r
+ ld a,c\r
+ call out.hex\r
+ call OUTBL\r
+ ex de,hl\r
+ call out.hl.@\r
+ ex de,hl\r
+ call CRLF\r
l14bah:\r
- pop bc\r
- inc hl\r
- inc de\r
- dec bc\r
- ld a,b\r
- or c\r
- jr nz,cmp_mem\r
+ pop bc\r
+ inc hl\r
+ inc de\r
+ dec bc\r
+ ld a,b\r
+ or c\r
+ jr nz,cmp_mem\r
ret\r
\r
CMD.M:\r
- ld a,(de)\r
- cp 'V'\r
- jr nz,bm_nv\r
- inc de\r
+ ld a,(de)\r
+ cp 'V'\r
+ jr nz,bm_nv\r
+ inc de\r
bm_nv:\r
- push af ;14c9 save 'V' flag\r
- call get_arg3\r
- push hl\r
- push de\r
- push bc\r
- call CP.HL.DE\r
- jr nc,bm_mvdown\r
- add hl,bc\r
- ex de,hl\r
- add hl,bc\r
- ex de,hl\r
- dec hl\r
- dec de\r
+ push af ;14c9 save 'V' flag\r
+ call get_arg3\r
+ push hl\r
+ push de\r
+ push bc\r
+ call CP.HL.DE\r
+ jr nc,bm_mvdown\r
+ add hl,bc\r
+ ex de,hl\r
+ add hl,bc\r
+ ex de,hl\r
+ dec hl\r
+ dec de\r
comst\r
- lddr\r
+ lddr\r
comend\r
- jr bm_done\r
+ jr bm_done\r
bm_mvdown:\r
comst\r
ldir\r
comend\r
bm_done:\r
- pop bc\r
- pop de\r
- pop hl\r
- pop af\r
- jr z,cmp_mem ;14ed validate?\r
+ pop bc\r
+ pop de\r
+ pop hl\r
+ pop af\r
+ jr z,cmp_mem ;14ed validate?\r
ret\r
CMD.H:\r
- call EXPR\r
- jp c,l173ch\r
- call skip_to_nextarg\r
- push hl\r
- call EXPR\r
- push af\r
- call assert_eol\r
- pop af\r
- ex de,hl\r
- pop hl\r
- jr c,l1511h\r
- push hl\r
- push de\r
- add hl,de\r
- call l1511h\r
- pop de\r
- pop hl\r
- and a\r
- sbc hl,de\r
+ call EXPR\r
+ jp c,l173ch ;no parameters, print High and Max\r
+ call skip_to_nextarg\r
+ push hl\r
+ call EXPR\r
+ push af\r
+ call assert_eol\r
+ pop af\r
+ ex de,hl\r
+ pop hl\r
+ jr c,l1511h\r
+ push hl\r
+ push de\r
+ add hl,de\r
+ call l1511h\r
+ pop de\r
+ pop hl\r
+ and a\r
+ sbc hl,de\r
l1511h:\r
- call out.hl ;1511 val\r
- call outbl2\r
- call sub_0928h ;1517 -val\r
- call outbl4\r
- call out.hl.dec ;151d dec\r
- call outbl2\r
- call out.hl.decm ;1523 -dec\r
- call outbl4\r
- call out.bin.w ;1529 bin\r
- call outbl2\r
- ld a,l\r
- call out.ascii\r
- jp CRLF\r
+ call out.hl ;1511 val\r
+ call outbl2\r
+ call sub_0928h ;1517 -val\r
+ call outbl4\r
+ call out.hl.dec ;151d dec\r
+ call outbl2\r
+ call out.hl.decm ;1523 -dec\r
+ call outbl4\r
+ call out.bin.w ;1529 bin\r
+ call outbl2\r
+ ld a,l\r
+ call out.ascii\r
+ jp CRLF\r
\r
CMD.Q:\r
ld a,(de)\r
\r
;------------------------------------------\r
\r
- .phase sysram_start+stacksize\r
+ .phase sysram_start+bs$stack$size\r
$stack:\r
-$stcka equ $ - stacksize\r
+$stcka equ $ - bs$stack$size\r
\r
curphse defl $\r
.dephase\r