ex de,hl\r
jr l0b58h\r
\r
+; divide x/y\r
+; hl: x\r
+; de: y\r
+; return:\r
+; hl: q (x/y)\r
+; de: r (x%y)\r
+\r
DIV_HL_DE:\r
- push bc\r
- ex de,hl\r
- ld b,h\r
- ld c,l\r
- ld hl,0\r
- ld a,16\r
+ push bc\r
+ ex de,hl ;de = x, hl = y\r
+ ld b,h ;bc = y\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
- push af\r
- add hl,hl\r
- ex de,hl\r
- xor a\r
- add hl,hl\r
- ex de,hl\r
- adc a,l\r
- sub c\r
- ld l,a\r
- ld a,h\r
- sbc a,b\r
- ld h,a\r
- inc de\r
- jr nc,l0b9ah\r
- add hl,bc\r
- dec de\r
-l0b9ah:\r
- pop af\r
- dec a\r
- jr nz,l0b89h\r
- ex de,hl\r
- pop bc\r
+ ex de,hl ;x\r
+ add hl,hl ;x <<= 1\r
+ ex de,hl ;r\r
+ adc hl,hl ;r <<= 1\r
+\r
+ or a\r
+ sbc hl,bc\r
+ inc de\r
+ jr nc,div_no_restore\r
+ add hl,bc\r
+ dec de\r
+div_no_restore:\r
+ dec a\r
+ jr nz,l0b89h\r
+ ex de,hl ;hl: q de: r\r
+ pop bc\r
ret\r
\r
do_op_and:\r
- ld a,h\r
- and d\r
- ld h,a\r
- ld a,l\r
- and e\r
- ld l,a\r
- jr l0b58h\r
+ ld a,h\r
+ and d\r
+ ld h,a\r
+ ld a,l\r
+ and e\r
+ ld l,a\r
+ jr l0b58h\r
\r
do_op_or:\r
- ld a,h\r
- or d\r
- ld h,a\r
- ld a,l\r
- or e\r
- ld l,a\r
- jr l0b58h\r
+ ld a,h\r
+ or d\r
+ ld h,a\r
+ ld a,l\r
+ or e\r
+ ld l,a\r
+ jr l0b58h\r
\r
do_op_xor:\r
- ld a,h\r
- xor d\r
- ld h,a\r
- ld a,l\r
- xor e\r
- ld l,a\r
- jr l0b58h\r
+ ld a,h\r
+ xor d\r
+ ld h,a\r
+ ld a,l\r
+ xor e\r
+ ld l,a\r
+ jr l0b58h\r
\r
do_binary_op:\r
- push hl\r
- ld hl,tab_op_a\r
- call lookupch\r
- ld a,b\r
- ld hl,tab_func_opa\r
- add a,a\r
- call ADD_HL_A\r
- ld c,(hl)\r
- inc hl\r
- ld b,(hl)\r
- pop hl\r
+ push hl\r
+ ld hl,tab_op_a\r
+ call lookupch\r
+ ld a,b\r
+ ld hl,tab_func_opa\r
+ add a,a\r
+ call ADD_HL_A\r
+ ld c,(hl)\r
+ inc hl\r
+ ld b,(hl)\r
+ pop hl\r
ret\r
\r
tab_op_a:\r
DB '+-*/%&!#',0\r
tab_func_opa:\r
- defw do_op_add\r
- defw do_op_sub\r
- defw do_op_mlt\r
- defw do_op_div\r
- defw do_op_mod\r
- defw do_op_and\r
- defw do_op_or\r
- defw do_op_xor\r
- defw 0\r
+ defw do_op_add\r
+ defw do_op_sub\r
+ defw do_op_mlt\r
+ defw do_op_div\r
+ defw do_op_mod\r
+ defw do_op_and\r
+ defw do_op_or\r
+ defw do_op_xor\r
+ defw 0\r
\r
fact_factor:\r
- call do_factor\r
- ret nc\r
- jp ERROR\r
+ call do_factor\r
+ ret nc\r
+ jp ERROR\r
\r
do_factor:\r
- call chk.sp\r
- call get.number\r
- ret nc\r
- inc de\r
- ld hl,TOPRAM\r
- cp 'T'\r
- ret z\r
- ld hl,(HILOD)\r
- cp 'H'\r
- ret z\r
- ld hl,(MAXLOD)\r
- cp 'M'\r
- ret z\r
- ld hl,TPA\r
- cp 'L'\r
- ret z\r
- ld hl,(offs.@)\r
- cp '@'\r
- ret z\r
- ld hl,(OFFS.pc)\r
- cp '$'\r
- ret z\r
- cp '-'\r
- jr z,fact_factneg\r
- cp '~'\r
- jr z,fact_factinv\r
- cp '+'\r
- jr z,fact_factor\r
- cp '^'\r
- jr z,fact_reg.CPU\r
- cp 'Y'\r
- jr z,fact_reg.Y\r
- cp '('\r
- jr z,fact_mem\r
- cp '['\r
- jp z,EXPR_BRCKT ;0c35 [ expression ]\r
- cp ''''\r
- jr z,fact_factstring\r
- dec de\r
+ call chk.sp\r
+ call get.number\r
+ ret nc\r
+ inc de\r
+ ld hl,TOPRAM\r
+ cp 'T'\r
+ ret z\r
+ ld hl,(HILOD)\r
+ cp 'H'\r
+ ret z\r
+ ld hl,(MAXLOD)\r
+ cp 'M'\r
+ ret z\r
+ ld hl,TPA\r
+ cp 'L'\r
+ ret z\r
+ ld hl,(offs.@)\r
+ cp '@'\r
+ ret z\r
+ ld hl,(OFFS.pc)\r
+ cp '$'\r
+ ret z\r
+ cp '-'\r
+ jr z,fact_factneg\r
+ cp '~'\r
+ jr z,fact_factinv\r
+ cp '+'\r
+ jr z,fact_factor\r
+ cp '^'\r
+ jr z,fact_reg.CPU\r
+ cp 'Y'\r
+ jr z,fact_reg.Y\r
+ cp '('\r
+ jr z,fact_mem\r
+ cp '['\r
+ jp z,EXPR_BRCKT ;0c35 [ expression ]\r
+ cp ''''\r
+ jr z,fact_factstring\r
+ dec de\r
scf\r
ret\r
\r
fact_reg.Y:\r
- call get.decdigit\r
- jp c,ERROR\r
- inc de\r
- add a,a\r
- ld hl,reg.Y\r
- call ADD_HL_A\r
- ld a,(hl)\r
- inc hl\r
- ld h,(hl)\r
- ld l,a\r
- and a\r
+ call get.decdigit\r
+ jp c,ERROR\r
+ inc de\r
+ add a,a\r
+ ld hl,reg.Y\r
+ call ADD_HL_A\r
+ ld a,(hl)\r
+ inc hl\r
+ ld h,(hl)\r
+ ld l,a\r
+ and a\r
ret\r
fact_factstring:\r
- ld hl,0\r
+ ld hl,0\r
l0c56h:\r
- ld a,(de)\r
- cp ''''\r
- jr z,l0c62h\r
- and a\r
- ret z\r
+ ld a,(de)\r
+ cp ''''\r
+ jr z,l0c62h\r
+ and a\r
+ ret z\r
l0c5dh:\r
- ld h,l\r
- ld l,a\r
- inc de\r
- jr l0c56h\r
+ ld h,l\r
+ ld l,a\r
+ inc de\r
+ jr l0c56h\r
\r
l0c62h:\r
- inc de\r
- ld a,(de)\r
- cp ''''\r
- jr z,l0c5dh\r
- sub '.'\r
- or a\r
- ret nz\r
- inc de\r
- set 7,l\r
+ inc de\r
+ ld a,(de)\r
+ cp ''''\r
+ jr z,l0c5dh\r
+ sub '.'\r
+ or a\r
+ ret nz\r
+ inc de\r
+ set 7,l\r
ret\r
\r
fact_reg.CPU:\r
- call sub_1315h\r
- jr nc,l0cbbh\r
- ld a,(hl)\r
- inc hl\r
- ld h,(hl)\r
- ld l,a\r
- and a\r
- bit 0,c\r
- ret nz\r
- ld h,000h\r
+ call sub_1315h\r
+ jr nc,l0cbbh\r
+ ld a,(hl)\r
+ inc hl\r
+ ld h,(hl)\r
+ ld l,a\r
+ and a\r
+ bit 0,c\r
+ ret nz\r
+ ld h,000h\r
ret\r
\r
fact_factneg:\r
- call fact_factor\r
- dec hl\r
+ call fact_factor\r
+ dec hl\r
cpl.hl:\r
- ld a,h\r
+ ld a,h\r
cpl\r
- ld h,a\r
- ld a,l\r
+ ld h,a\r
+ ld a,l\r
cpl\r
- ld l,a\r
+ ld l,a\r
ret\r
fact_factinv:\r
- call fact_factor\r
- jr cpl.hl\r
+ call fact_factor\r
+ jr cpl.hl\r
\r
fact_mem:\r
- call EXPR1\r
- jr c,l0cbbh\r
- ld a,(de)\r
- cp ')'\r
- jr nz,l0cbbh\r
- inc de\r
+ call EXPR1\r
+ jr c,l0cbbh\r
+ ld a,(de)\r
+ cp ')'\r
+ jr nz,l0cbbh\r
+ inc de\r
comst\r
- ld a,(hl)\r
- inc hl ;\r
- ld h,(hl) ;\r
+ ld a,(hl)\r
+ inc hl ;\r
+ ld h,(hl) ;\r
comend\r
- ld l,a\r
- ld a,(de)\r
- inc de\r
- cp '.'\r
- ret z\r
- dec de\r
- xor a\r
- ld h,a\r
+ ld l,a\r
+ ld a,(de)\r
+ inc de\r
+ cp '.'\r
+ ret z\r
+ dec de\r
+ xor a\r
+ ld h,a\r
ret\r
\r
EXPR_BRCKT:\r
- call EXPR1\r
- jr c,l0cbbh\r
- ld a,(de)\r
- cp ']'\r
- inc de\r
- ret z\r
+ call EXPR1\r
+ jr c,l0cbbh\r
+ ld a,(de)\r
+ cp ']'\r
+ inc de\r
+ ret z\r
l0cbbh:\r
- jp ERROR\r
+ jp ERROR\r
\r
get.number:\r
- call get.hexdigit\r
- ret c\r
- push de\r
+ call get.hexdigit\r
+ ret c\r
+ push de\r
l0cc3h:\r
- inc de\r
- call get.hexdigit\r
- jr nc,l0cc3h\r
- pop de\r
- cp '.'\r
- jr z,l0d04h\r
- cp '"'\r
- jr z,l0ce9h\r
- ld hl,0\r
+ inc de\r
+ call get.hexdigit\r
+ jr nc,l0cc3h\r
+ pop de\r
+ cp '.'\r
+ jr z,l0d04h\r
+ cp '"'\r
+ jr z,l0ce9h\r
+ ld hl,0\r
l0cd5h:\r
- call get.hexdigit\r
- jr c,l0ce4h\r
- add hl,hl\r
- add hl,hl\r
- add hl,hl\r
- add hl,hl\r
- call ADD_HL_A\r
- inc de\r
- jr l0cd5h\r
+ call get.hexdigit\r
+ jr c,l0ce4h\r
+ add hl,hl\r
+ add hl,hl\r
+ add hl,hl\r
+ add hl,hl\r
+ call ADD_HL_A\r
+ inc de\r
+ jr l0cd5h\r
l0ce4h:\r
- xor 'H'\r
- ret nz\r
- inc de\r
+ xor 'H'\r
+ ret nz\r
+ inc de\r
ret\r
\r
l0ce9h:\r
- ld hl,0\r
+ ld hl,0\r
l0cech:\r
- call get.decdigit\r
+ call get.decdigit\r
l0cefh:\r
- inc de\r
- jr c,l0cf8h\r
- add hl,hl\r
- call ADD_HL_A\r
- jr l0cech\r
+ inc de\r
+ jr c,l0cf8h\r
+ add hl,hl\r
+ call ADD_HL_A\r
+ jr l0cech\r
l0cf8h:\r
- cp '"'\r
- jp nz,ERROR\r
- call get.decdigit\r
- jr nc,l0cefh\r
- or a\r
+ cp '"'\r
+ jp nz,ERROR\r
+ call get.decdigit\r
+ jr nc,l0cefh\r
+ or a\r
ret\r
l0d04h:\r
- ld hl,0\r
+ ld hl,0\r
l0d07h:\r
- call get.decdigit\r
- inc de\r
- jr c,l0d1ah\r
- push bc\r
- add hl,hl ;0d0e hl *= 10\r
- ld b,h\r
- ld c,l\r
- add hl,hl\r
- add hl,hl\r
- add hl,bc\r
- pop bc\r
- call ADD_HL_A\r
- jr l0d07h\r
+ call get.decdigit\r
+ inc de\r
+ jr c,l0d1ah\r
+ push bc\r
+ add hl,hl ;0d0e hl *= 10\r
+ ld b,h\r
+ ld c,l\r
+ add hl,hl\r
+ add hl,hl\r
+ add hl,bc\r
+ pop bc\r
+ call ADD_HL_A\r
+ jr l0d07h\r
l0d1ah:\r
- cp '.'\r
- ret z\r
- jp ERROR\r
+ cp '.'\r
+ ret z\r
+ jp ERROR\r
\r
sub_0d20h:\r
- ld a,(de)\r
- cp 05bh\r
- jr l0d28h\r
+ ld a,(de)\r
+ cp 05bh\r
+ jr l0d28h\r
\r
get.hexdigit:\r
- ld a,(de)\r
+ ld a,(de)\r
sub_0d26h:\r
- cp 'F'+1\r
+ cp 'F'+1\r
l0d28h:\r
ccf\r
- ret c\r
- cp 'A'\r
- jr c,l0d32h\r
- sub 'A'-10\r
+ ret c\r
+ cp 'A'\r
+ jr c,l0d32h\r
+ sub 'A'-10\r
ret\r
\r
get.decdigit:\r
- ld a,(de)\r
+ ld a,(de)\r
l0d32h:\r
- cp '9'+1\r
- jr l0d39h\r
+ cp '9'+1\r
+ jr l0d39h\r
get.bindigit:\r
- ld a,(de)\r
- cp '1'+1\r
+ ld a,(de)\r
+ cp '1'+1\r
l0d39h:\r
ccf\r
- ret c\r
- cp '0'\r
- ret c\r
- sub '0'\r
+ ret c\r
+ cp '0'\r
+ ret c\r
+ sub '0'\r
ret\r
\r
l0d41h:\r
- call assert_eol\r
+ call assert_eol\r
\r
prnt_cpustat:\r
- call prnt_f\r
- call outbl2\r
- ld hl,b_0x0DFD_start\r
- ld de,b_0x0E1D_start\r
- ld b,006h\r
+ call prnt_f\r
+ call outbl2\r
+ ld hl,b_0x0DFD_start\r
+ ld de,b_0x0E1D_start\r
+ ld b,006h\r
l0d52h:\r
- call prnt_regs\r
- djnz l0d52h\r
- push hl\r
- push de\r
- ld iy,(REG.PC)\r
- call sub_1f77h\r
+ call prnt_regs\r
+ djnz l0d52h\r
+ push hl\r
+ push de\r
+ ld iy,(REG.PC)\r
+ call sub_1f77h\r
exx\r
- ex af,af'\r
- call CRLF\r
- call prnt_f2\r
- call outbl2\r
- pop de\r
- pop hl\r
- ld b,007h\r
+ ex af,af'\r
+ call CRLF\r
+ call prnt_f2\r
+ call outbl2\r
+ pop de\r
+ pop hl\r
+ ld b,007h\r
l0d6fh:\r
- call prnt_regs\r
- djnz l0d6fh\r
+ call prnt_regs\r
+ djnz l0d6fh\r
exx\r
- ex af,af'\r
- and a\r
- jr z,l0d7fh\r
- call outbl6\r
- call sub_1f5bh\r
+ ex af,af'\r
+ and a\r
+ jr z,l0d7fh\r
+ call outbl6\r
+ call sub_1f5bh\r
l0d7fh:\r
- jp crlf\r
+ jp crlf\r
\r
prnt_f:\r
- ld a,(reg.f)\r
- call prnt_flags\r
- ld a,(reg.iff)\r
- cp 0f3h\r
- jp z,outbl\r
- ld a,'E'\r
- jp outchar\r
+ ld a,(reg.f)\r
+ call prnt_flags\r
+ ld a,(reg.iff)\r
+ cp 0f3h\r
+ jp z,outbl\r
+ ld a,'E'\r
+ jp outchar\r
\r
prnt_f2:\r
- ld a,(reg.f2)\r
- call prnt_flags\r
- jp outbl\r
+ ld a,(reg.f2)\r
+ call prnt_flags\r
+ jp outbl\r
\r
prnt_flags:\r
- ld b,a\r
- ld a,'S'\r
- call sub_0dbeh\r
- ld a,'Z'\r
- call sub_0dbeh\r
- rl b\r
- ld a,'H'\r
- call sub_0dbeh\r
- rl b\r
- ld a,'V'\r
- call sub_0dbeh\r
- ld a,'N'\r
- call sub_0dbeh\r
- ld a,'C'\r
+ ld b,a\r
+ ld a,'S'\r
+ call sub_0dbeh\r
+ ld a,'Z'\r
+ call sub_0dbeh\r
+ rl b\r
+ ld a,'H'\r
+ call sub_0dbeh\r
+ rl b\r
+ ld a,'V'\r
+ call sub_0dbeh\r
+ ld a,'N'\r
+ call sub_0dbeh\r
+ ld a,'C'\r
sub_0dbeh:\r
- rl b\r
- jp c,OUTCHAR\r
- jp OUTBL\r
+ rl b\r
+ jp c,OUTCHAR\r
+ jp OUTBL\r
\r
prnt_regs:\r
- push bc\r
- push de\r
- call PSTR\r
- ld a,'='\r
- call OUTCHAR\r
- ex (sp),hl\r
- ld e,(hl)\r
- inc hl\r
- ld d,(hl)\r
- inc hl\r
- ld a,(hl)\r
- inc hl\r
- push hl\r
- and a\r
- jr z,l0df2h\r
- push af\r
- ld a,(de)\r
- ld l,a\r
- inc de\r
- ld a,(de)\r
- ld h,a\r
- pop af\r
- dec a\r
- jr z,l0dedh\r
- call out.hl.@\r
- call z,outbl6\r
- jr l0df6h\r
+ push bc\r
+ push de\r
+ call PSTR\r
+ ld a,'='\r
+ call OUTCHAR\r
+ ex (sp),hl\r
+ ld e,(hl)\r
+ inc hl\r
+ ld d,(hl)\r
+ inc hl\r
+ ld a,(hl)\r
+ inc hl\r
+ push hl\r
+ and a\r
+ jr z,l0df2h\r
+ push af\r
+ ld a,(de)\r
+ ld l,a\r
+ inc de\r
+ ld a,(de)\r
+ ld h,a\r
+ pop af\r
+ dec a\r
+ jr z,l0dedh\r
+ call out.hl.@\r
+ call z,outbl6\r
+ jr l0df6h\r
l0dedh:\r
- call out.hl\r
- jr l0df6h\r
+ call out.hl\r
+ jr l0df6h\r
l0df2h:\r
- ld a,(de)\r
- call out.hex\r
+ ld a,(de)\r
+ call out.hex\r
l0df6h:\r
- call OUTBL\r
- pop de\r
- pop hl\r
- pop bc\r
+ call OUTBL\r
+ pop de\r
+ pop hl\r
+ pop bc\r
ret\r
\r
b_0x0DFD_start:\r
DB 0\r
\r
b_0x0E1D_start:\r
- defw reg.a\r
- defb 000h\r
- defw reg.c\r
- defb 001h\r
- defw reg.e\r
- defb 001h\r
- defw reg.l\r
- defb 001h\r
- defw reg.sp\r
- defb 001h\r
- defw reg.pc\r
- defb 002h\r
- defw reg.a2\r
- defb 000h\r
- defw reg.c2\r
- defb 001h\r
- defw reg.e2\r
- defb 001h\r
- defw reg.l2\r
- defb 001h\r
- defw reg.ix\r
- defb 001h\r
- defw reg.iy\r
- defb 001h\r
- defw reg.i\r
+ defw reg.a\r
+ defb 000h\r
+ defw reg.c\r
+ defb 001h\r
+ defw reg.e\r
+ defb 001h\r
+ defw reg.l\r
+ defb 001h\r
+ defw reg.sp\r
+ defb 001h\r
+ defw reg.pc\r
+ defb 002h\r
+ defw reg.a2\r
+ defb 000h\r
+ defw reg.c2\r
+ defb 001h\r
+ defw reg.e2\r
+ defb 001h\r
+ defw reg.l2\r
+ defb 001h\r
+ defw reg.ix\r
+ defb 001h\r
+ defw reg.iy\r
+ defb 001h\r
+ defw reg.i\r
dw 0\r
\r
CMD.G:\r
- sub a\r
- ld (TCFLG),a\r
- ld (XA747),a\r
- call EXPR\r
- jr c,l0e54h\r
- ld (REG.PC),hl\r
+ sub a\r
+ ld (TCFLG),a\r
+ ld (XA747),a\r
+ call EXPR\r
+ jr c,l0e54h\r
+ ld (REG.PC),hl\r
l0e54h:\r
- call SKIPBL\r
- jp z,l1183h\r
- cp ';'\r
- jp nz,ERROR\r
- inc de\r
- ld a,002h\r
- call sub_0f24h\r
- jp l1183h\r
+ call SKIPBL\r
+ jp z,l1183h\r
+ cp ';'\r
+ jp nz,ERROR\r
+ inc de\r
+ ld a,002h\r
+ call sub_0f24h\r
+ jp l1183h\r
\r
sub_0e68h:\r
- ld b,BP_CNT\r
- ld ix,bp_tab\r
+ ld b,BP_CNT\r
+ ld ix,bp_tab\r
l0e6eh:\r
- ld a,(ix+000h)\r
- and 0f1h\r
- ld (ix+000h),a\r
- call sub_11c5h\r
- ld de,BP_SIZE\r
- add ix,de\r
- djnz l0e6eh\r
+ ld a,(ix+000h)\r
+ and 0f1h\r
+ ld (ix+000h),a\r
+ call sub_11c5h\r
+ ld de,BP_SIZE\r
+ add ix,de\r
+ djnz l0e6eh\r
ret\r
\r
CMD.B:\r
- call SKIPBL\r
- jr z,l0ecbh\r
- inc de\r
- cp 'X'\r
- jr z,l0e91h\r
- dec de\r
- ld a,001h\r
- jp sub_0f24h\r
+ call SKIPBL\r
+ jr z,l0ecbh\r
+ inc de\r
+ cp 'X'\r
+ jr z,l0e91h\r
+ dec de\r
+ ld a,001h\r
+ jp sub_0f24h\r
l0e91h:\r
- call SKIPBL\r
- jr z,l0ea6h\r
+ call SKIPBL\r
+ jr z,l0ea6h\r
l0e96h:\r
- call EXPR\r
- jp c,assert_eol\r
- push de\r
- call sub_0ea7h\r
- pop de\r
- call skip_to_nextarg\r
- jr l0e96h\r
+ call EXPR\r
+ jp c,assert_eol\r
+ push de\r
+ call sub_0ea7h\r
+ pop de\r
+ call skip_to_nextarg\r
+ jr l0e96h\r
l0ea6h:\r
scf\r
sub_0ea7h:\r
- ld b,BP_CNT\r
- ld ix,bp_tab\r
+ ld b,BP_CNT\r
+ ld ix,bp_tab\r
l0eadh:\r
- push af\r
- jr c,l0ebbh\r
- ld e,(ix+002h)\r
- ld d,(ix+003h)\r
- call CP.HL.DE\r
- jr nz,l0ec2h\r
+ push af\r
+ jr c,l0ebbh\r
+ ld e,(ix+002h)\r
+ ld d,(ix+003h)\r
+ call CP.HL.DE\r
+ jr nz,l0ec2h\r
l0ebbh:\r
- ld (ix+000h),000h\r
- call sub_11c5h\r
+ ld (ix+000h),000h\r
+ call sub_11c5h\r
l0ec2h:\r
- ld de,BP_SIZE\r
- add ix,de\r
- pop af\r
- djnz l0eadh\r
+ ld de,BP_SIZE\r
+ add ix,de\r
+ pop af\r
+ djnz l0eadh\r
ret\r
l0ecbh:\r
- ld b,BP_CNT\r
- ld ix,bp_tab\r
+ ld b,BP_CNT\r
+ ld ix,bp_tab\r
l0ed1h:\r
- bit 0,(ix+000h)\r
- jr z,l0f1ch\r
- ld a,'R'\r
- bit 4,(ix+000h)\r
- jr nz,l0ee1h\r
- ld a,' '\r
+ bit 0,(ix+000h)\r
+ jr z,l0f1ch\r
+ ld a,'R'\r
+ bit 4,(ix+000h)\r
+ jr nz,l0ee1h\r
+ ld a,' '\r
l0ee1h:\r
- call OUTCHAR\r
- call OUTBL\r
- ld l,(ix+002h)\r
- ld h,(ix+003h)\r
- call out.hl.@\r
- call outbl2\r
- ld a,':'\r
- call OUTCHAR\r
- ld l,(ix+004h)\r
- ld h,(ix+005h)\r
- call out.hl\r
- ld l,(ix+006h)\r
- ld h,(ix+007h)\r
- ld a,h\r
- or l\r
- jr z,l0f19h\r
- call outbl4\r
- ld a,'I'\r
- call OUTCHAR\r
- call outbl2\r
- call PSTR\r
+ call OUTCHAR\r
+ call OUTBL\r
+ ld l,(ix+002h)\r
+ ld h,(ix+003h)\r
+ call out.hl.@\r
+ call outbl2\r
+ ld a,':'\r
+ call OUTCHAR\r
+ ld l,(ix+004h)\r
+ ld h,(ix+005h)\r
+ call out.hl\r
+ ld l,(ix+006h)\r
+ ld h,(ix+007h)\r
+ ld a,h\r
+ or l\r
+ jr z,l0f19h\r
+ call outbl4\r
+ ld a,'I'\r
+ call OUTCHAR\r
+ call outbl2\r
+ call PSTR\r
l0f19h:\r
- call CRLF\r
+ call CRLF\r
l0f1ch:\r
- ld de,BP_SIZE\r
- add ix,de\r
- djnz l0ed1h\r
+ ld de,BP_SIZE\r
+ add ix,de\r
+ djnz l0ed1h\r
ret\r
\r
sub_0f24h:\r
- ld b,a\r
- call SKIPBL\r
- ret z\r
- cp 'R'\r
- jr nz,l0f30h\r
- inc de\r
- set 4,b\r
+ ld b,a\r
+ call SKIPBL\r
+ ret z\r
+ cp 'R'\r
+ jr nz,l0f30h\r
+ inc de\r
+ set 4,b\r
l0f30h:\r
- push bc\r
- call EXPR\r
- jp c,ERROR\r
- pop bc\r
- bit 0,b\r
- push bc\r
- push de\r
- push hl\r
- call nz,sub_0ea7h\r
- pop hl\r
- call sub_0f68h\r
- pop de\r
- ld (ix+002h),l\r
- ld (ix+003h),h\r
- call sub_0f80h\r
- ld (ix+004h),l\r
- ld (ix+005h),h\r
- call sub_0f91h\r
- ld (ix+006h),l\r
- ld (ix+007h),h\r
- call skip_to_nextarg\r
- pop af\r
- ld (ix+000h),a\r
- and 00fh\r
- jr sub_0f24h\r
+ push bc\r
+ call EXPR\r
+ jp c,ERROR\r
+ pop bc\r
+ bit 0,b\r
+ push bc\r
+ push de\r
+ push hl\r
+ call nz,sub_0ea7h\r
+ pop hl\r
+ call sub_0f68h\r
+ pop de\r
+ ld (ix+002h),l\r
+ ld (ix+003h),h\r
+ call sub_0f80h\r
+ ld (ix+004h),l\r
+ ld (ix+005h),h\r
+ call sub_0f91h\r
+ ld (ix+006h),l\r
+ ld (ix+007h),h\r
+ call skip_to_nextarg\r
+ pop af\r
+ ld (ix+000h),a\r
+ and 00fh\r
+ jr sub_0f24h\r
sub_0f68h:\r
- ld b,BP_CNT\r
- ld ix,bp_tab\r
+ ld b,BP_CNT\r
+ ld ix,bp_tab\r
l0f6eh:\r
- ld a,(ix+000h)\r
- and 00fh\r
- ret z\r
- push bc\r
- ld bc,BP_SIZE\r
- add ix,bc\r
- pop bc\r
- djnz l0f6eh\r
- jp ERROR\r
+ ld a,(ix+000h)\r
+ and 00fh\r
+ ret z\r
+ push bc\r
+ ld bc,BP_SIZE\r
+ add ix,bc\r
+ pop bc\r
+ djnz l0f6eh\r
+ jp ERROR\r
\r
sub_0f80h:\r
- call SKIPBL\r
- ld hl,1\r
- cp 03ah\r
- ret nz\r
- inc de\r
- call EXPR\r
- jp c,ERROR\r
+ call SKIPBL\r
+ ld hl,1\r
+ cp 03ah\r
+ ret nz\r
+ inc de\r
+ call EXPR\r
+ jp c,ERROR\r
ret\r
sub_0f91h:\r
- call SKIPBL\r
- cp 049h\r
- ld hl,0\r
- ret nz\r
- inc de\r
- call SKIPBL\r
- push de\r
- call EXPR\r
- jp c,ERROR\r
- ex de,hl\r
- pop de\r
- push de\r
- sbc hl,de\r
- ld b,h\r
- ld c,l\r
- ld hl,(sexp1)\r
- push hl\r
- add hl,bc\r
- ld de,sexpbufe\r
- call CP.HL.DE\r
- jp nc,ERROR\r
- pop hl\r
- ld (sexp2),hl\r
- pop de\r
- ex de,hl\r
+ call SKIPBL\r
+ cp 049h\r
+ ld hl,0\r
+ ret nz\r
+ inc de\r
+ call SKIPBL\r
+ push de\r
+ call EXPR\r
+ jp c,ERROR\r
+ ex de,hl\r
+ pop de\r
+ push de\r
+ sbc hl,de\r
+ ld b,h\r
+ ld c,l\r
+ ld hl,(sexp1)\r
+ push hl\r
+ add hl,bc\r
+ ld de,sexpbufe\r
+ call CP.HL.DE\r
+ jp nc,ERROR\r
+ pop hl\r
+ ld (sexp2),hl\r
+ pop de\r
+ ex de,hl\r
ldir\r
- xor a\r
- ld (de),a\r
- inc de\r
- ex de,hl\r
- ld (sexp1),hl\r
- ld hl,(sexp2)\r
+ xor a\r
+ ld (de),a\r
+ inc de\r
+ ex de,hl\r
+ ld (sexp1),hl\r
+ ld hl,(sexp2)\r
ret\r
\r
bpddtz:\r
defb 029h\r
defw l254bh\r
\r
+\r
defb 0c7h ;216c inc r\r
defb 004h\r
defb 041h\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