Files
TZFS/asm/mz-xz009/CONV.ASM

1515 lines
29 KiB
NASM
Vendored
Raw Permalink Blame History

; -----------------------------
; MZ-800 BASIC Data conversion
; FI:CONV ver 1.0A 7.18.84
; Programed by T.Miho
; -----------------------------
;
INCLD MACRO
;
;
%BAR: EQU C4H
%YEN: EQU 7DH
%POND: EQU FBH
;
ENDZ: ENT
CALL ENDCHK
RET Z
JP ER01
;
TESTP: ENT
XOR A
LD (FILOUT),A
TEST1 FBH ;/
CALL TEST1
DEFB FBH
ENDM
RET NZ ;ZF=0
TESTX "P"
CALL TESTX
DEFB "P"
ENDM
CALL LPTTMD ;Check text mode
LD A,"P"
LD (FILOUT),A
CP A ;ZF=1
RET
;
ASCFIV: ENT
LD DE,DGBF00
LD B,0 ;Zero sup.
PUSH DE
SVC .ASCHL
RST 3
DEFB .ASCHL
ENDM
POP DE
RET
SKP H
;
; Fetch subroutines
;
ICH28H: ENT
INC HL
HCH28H: ENT
CALL HLFTCH
CH28H: ENT
CP "("
JR CHXX2
;
HCH29H: ENT
CALL HLFTCH
CH29H: ENT
CP ")"
JR CHXX2
;
HCH2CH: ENT
CALL HLFTCH
CH2CH: ENT
CP ','
;
CHXX2: INC HL
RET Z
JP ER01
;
SKPDI: ENT
INC DE
SKPDE: ENT
LD A,(DE)
CP ' '
JR Z,SKPDI
RET
;
;
;(DE)=1.0
LDIR1: ENT
LD HL,FLONE
;(DE)=(HL) 5BYTES SET
LDIR5: ENT
LD BC,5
LDIR
RET
SKP H
;
;(HL)=DE
FLTHEX: ENT
CALL CLRFAC ;EXT(FLOAT)
LD A,E
OR D
RET Z
BIT 7,D
LD A,7FH
JR Z,NORFLH
LD A,D
CPL
LD D,A
LD A,E
CPL
LD E,A
INC DE
LD A,FFH
;
NORFLH: LD B,91H
SFL: DEC B
BIT 7,D
JR NZ,FLHXRT
RL E
RL D
JR SFL
FLHXRT: LD M,B
INC HL
AND D
LD M,A
INC HL
LD M,E
DEC HL
DEC HL
RET
;
;0-9 THEN CY=0
TSTNUM: ENT
CP "0"
RET C
CP ":"
CCF
RET
;
;VAR THEN CY=0
TSTVAR: ENT
CP 5FH
RET Z
CP "0"
RET C
CP 5BH
CCF
RET C
CP ":"
CCF
RET NC
CP 41H
RET
SKP H
;
;CONV FLOAT(HL)_ASC(DE)
CVFLAS: ENT
CALL CLRFAC ;EXT
LD (DGITCO),A
LD (DGITFG),A
LD (EXPFLG),A
LD (PRODFL+1),A
LD A,5
LD (PRCSON),A
DEFTCL: CALL SKPDE
INC DE
CP "+"
JR Z,DEFTCL
CP "-"
JR NZ,CHKAND
CALL DEFTCL
JP TOGLE
;
CHKAND: CP "$"
JR NZ,ZRSKIP
PUSH HL
EX DE,HL
SVC .DEHEX
RST 3
DEFB .DEHEX
ENDM
EX (SP),HL
CALL FLTHEX
POP DE
LD A,5
RET
;
ZRSKIP: CP "0"
JR NZ,MDLAG
LD A,(DE)
INC DE
JR ZRSKIP
;
FTCHL: LD A,(DE)
INC DE
MDLAG: CP " "
JR Z,FTCHL
CP "."
JR Z,POINTS
CALL TSTNUM
JR C,TST23H
SUB "0"
CALL MULTEN
CALL MULDEC
LD A,1
LD (DGITFG),A
LD A,(DGITCO)
INC A
LD (DGITCO),A
JR FTCHL
;
POINTS: LD A,1
LD (PRODFL+1),A
LD C,A
POINT: LD A,(DE)
INC DE
CP " "
JR Z,POINT
CALL TSTNUM
JR C,PESC
INC C
SUB "0"
JR Z,SDFGRE
PUSH AF
LD A,1
LD (DGITFG),A
POP AF
SDFGRE: PUSH AF
LD A,(DGITFG)
LD B,A
LD A,(DGITCO)
ADD A,B
LD (DGITCO),A
POP AF
CALL MULTEN
CALL MULDEC
JR POINT
;
PESC: DEC C
JR Z,TST23H
CALL DIVTEN
JR PESC
;
;
TST23H: CP "E"
JR Z,EXPON!
;
TSTPRC: DEC DE
LD A,(EXPFLG)
OR A
RET NZ
PRODFL: LD A,0 ;xxx
OR A
RET NZ
LD A,5
RET
;
EXPON!: LD A,(DE)
CP "-"
JR Z,EXPON
CP "+"
JR Z,EXPON
CALL TSTNUM
JR C,TSTPRC
EXPON: LD A,1
LD (PRODFL+1),A
PUSH HL
LD HL,MUL
LD (EXJPVC),HL
LD HL,0000H
LD A,(DE)
INC DE
CP "+"
JR Z,CBEGIN
CP "-"
JR NZ,CLMIDL
PUSH HL
LD HL,DIV
LD (EXJPVC),HL
POP HL
CBEGIN: LD A,(DE)
INC DE
CLMIDL: SUB "0"
JR C,ESCPER
CP 0AH
JR NC,ESCPER
PUSH DE
CALL ADHLCK
LD E,L
LD D,H
CALL ADHLCK
CALL ADHLCK
CALL ADDECK
LD E,A
LD D,0
CALL ADDECK
POP DE
JR CBEGIN
ESCPER: LD A,H
OR A
JR NZ,OVERF'
LD A,L
POP HL
PUSH DE
PUSH BC
PUSH HL
LD DE,ZFAC
PUSH DE
CALL LDIR1
POP HL
LD B,A
INC B
JR +5
CALL MULTEN
DJNZ -3
EX DE,HL
POP HL
DEFB CDH
EXJPVC: DEFS 2
POP BC
POP DE
JP TSTPRC
;
DIVTEN: PUSH AF
PUSH BC
PUSH DE
LD DE,FLTEN
CALL DIV
POP DE
POP BC
POP AF
RET
;
ADDECK: ADD HL,DE
RET NC
JR OVERF'
;
ADHLCK: ADD HL,HL
RET NC
OVERF': JP ER02 ;OVERFLOW
;
MULDEC: PUSH DE
PUSH HL
LD HL,ZFAC ;*****
LD E,A
LD D,0
CALL FLTHEX
EX DE,HL
POP HL
PUSH BC
CALL ADD
POP BC
POP DE
RET
;
;
;CONV ASC(DE)_FLOAT(HL)
CVNMFL: ENT
LD A,5
LD (PRCSON),A
LD A,M
OR A
JR Z,ONLYZ#
INC HL
LD A,M
DEC HL
RLCA
ONLYZ#: LD A,20H
JR NC,PLUS
CALL TOGLE
LD A,"-"
PLUS: PUSH AF
CALL CVASF1
CALL ADJDGT
POP AF
DEC DE
LD (DE),A
RET
;
;
CMP2: PUSH BC
CALL CMP
POP BC
RET
SKP H
;
INT: ENT
CALL PUSHR
LD A,M
CP 81H
JP C,CLRFAC
LD A,M
CP A0H
RET NC
INC HL
CALL RCHLBC
PUSH HL
LD L,M
LD B,0
INTSFL: SRL E
RR D
RR C
RR L
INC A
INC B
CP A0H
JR NZ,INTSFL
INTSBL: SLA L
RL C
RL D
RL E
DJNZ INTSBL
LD A,L
POP HL
LD M,A
DEC HL
LD M,C
DEC HL
LD M,D
DEC HL
LD M,E
RET
;
RCHLBC: LD E,M
INC HL
LD D,M
INC HL
LD C,M
INC HL
RET
SKP H
;
FRACT: ENT
LD A,M
CP 81H
RET C
PUSH DE
PUSH HL
LD DE,FRACW
PUSH DE
CALL LDIR5
POP HL
CALL INT
EX DE,HL
POP HL
CALL SUB
POP DE
RET
;
FRACW: DEFS 5
;
;
MULTEN: PUSH AF
PUSH BC
PUSH DE
LD DE,FLTEN
CALL MUL
POP DE
POP BC
POP AF
RET
SKP H
;
HLFLT: ENT
INC HL
BIT 7,M
JR Z,NORHLC
CALL NORHLC
LD A,H
CPL
LD H,A
LD A,L
CPL
LD L,A
INC HL
RET
;
NORHLC: DEC HL
LD A,M
CP 91H
JP NC,ER02 ;OVERFLOW
CP 81H
JR C,HXZRRT
PUSH AF
INC HL
LD A,M
INC HL
LD L,M
LD H,A
POP AF
SET 7,H
HXFLSL: CP 90H
RET Z
INC A
SRL H
RR L
JR HXFLSL
;
HXZRRT: CCF
LD HL,0
RET
;
;
SNGMXO: DEF5 9B,3E,BC,20,00
DEFW 3E9BH
DEFW 20BCH
DEFB 00H
ENDM
SNGMXP: DEF5 98,18,96,80,00
DEFW 1898H
DEFW 8096H
DEFB 00H
ENDM
DEF5 94,74,24,00,00
DEFW 7494H
DEFW 0024H
DEFB 00H
ENDM
DEF5 91,43,50,00,00
DEFW 4391H
DEFW 0050H
DEFB 00H
ENDM
DEF5 8E,1C,40,00,00
DEFW 1C8EH
DEFW 0040H
DEFB 00H
ENDM
DEF5 8A,7A,00,00,00
DEFW 7A8AH
DEFW 0000H
DEFB 00H
ENDM
DEF5 87,48,00,00,00
DEFW 4887H
DEFW 0000H
DEFB 00H
ENDM
FLTEN: ENT
DEF5 84,20,00,00,00
DEFW 2084H
DEFW 0000H
DEFB 00H
ENDM
FLONE: ENT
DEF5 81,00,00,00,00
DEFW 0081H
DEFW 0000H
DEFB 00H
ENDM
DEF5 7D,4C,CC,CC,CD
DEFW 4C7DH
DEFW CCCCH
DEFB CDH
ENDM
SLLMT: DEF5 66,2B,CC,77,12
DEFW 2B66H
DEFW 77CCH
DEFB 12H
ENDM
SKP H
;
EXPASC: LD HL,(HLBUF2)
LD B,0
TENCOM: LD DE,FLTEN
CALL CMP2
JR C,ONECOM
CALL DIVTEN
INC B
JR TENCOM
ONECOM: LD DE,FLONE
CALL CMP2
JR NC,COMOK
CALL MULTEN
DEC B
JR ONECOM
COMOK: PUSH BC
CALL CVASF1
CALL ADJDGT
POP BC
PUSH DE
EX DE,HL
SERNOP: LD A,M
OR A
JR Z,SEROK
INC HL
JR SERNOP
SEROK: DEC HL
LD A,M
INC HL
CP "0"
JR NZ,USEXPE
INC B
DEC HL
USEXPE: LD A,"E"
LD M,A
INC HL
LD A,B
LD B,"+"
BIT 7,A
JR Z,EXSGPT
NEG
LD B,"-"
EXSGPT: LD M,B
INC HL
LD M,"0"
EXTNPT: SUB 0AH
JR C,EXONPT
INC M
JR EXTNPT
EXONPT: ADD A,3AH
INC HL
LD M,A
INC HL
LD M,0
POP DE
RET
SKP H
;
INTPAR: PUSH HL
CALL HLFLT
LD DE,DGBF11
PUSH DE
LD B,1 ;Non zero-sup.
SVC .ASCHL
RST 3
DEFB .ASCHL
ENDM
POP HL
LD A,"0"
LD B,5
CP M
JR NZ,INTDGO
INC HL
DJNZ -4
JR INTDGE
INTDGO: LD A,B
LD (DGITCO),A
LD A,1
LD (DGITFG),A
INTDGE: LD A,"."
LD (DGBF16),A
POP HL
CALL FRACT
JP FRACDG
;
;
CVASF1: LD (HLBUF2),HL
XOR A
LD (DGITCO),A
LD (DGITFG),A
PUSH HL
LD HL,DGBF07
LD M,FFH
LD B,33
LD A,"0"
INC HL
LD M,A
DJNZ -2
LD A,"."
LD (DGBF16),A
POP HL
LD A,M
OR A
RET Z
LD DE,SNGMXO
CALL CMP
CCF
RET C
LD DE,SLLMT
CALL CMP
RET C
LD DE,ZFAC1
PUSH DE
CALL LDIR5
POP HL
LD A,M
CP 81H
JR C,FRACDG ;
CP 90H
JP C,INTPAR ;
LD IX,DGBF08
LD DE,SNGMXP
CALL GENDGT
CALL GEND?
RET NC ;C=0
FRACDG: LD IX,DGBF17
FRCAGN: LD DE,SNGMXO
PUSH BC
PUSH IX
CALL MUL
POP IX
POP BC
REP5 INC,DE
INC DE
INC DE
INC DE
INC DE
INC DE
ENDM
CALL GENDGT
CALL GEND?
JR C,FRCAGN
RET
;
;
CVASFL: ENT
LD A,5
LD (PRCSON),A
PUSH HL
LD DE,ZFAC2
PUSH DE
CALL LDIR5
POP HL
CALL CVASF1
CALL ADJDG2
POP HL
RET
;
ZERADJ: LD DE,DGBF16
LD (DE),A
DEC DE
RET
;
ADJDG2: JP C,EXPASC
ADJDGT: LD HL,(HLBUF2)
LD A,M
OR A
JR Z,ZERADJ
LD DE,DGBF08
DEC DE
EX DE,HL
LD DE,1
SSNTO1: INC HL
LD A,M
CP "."
JR NZ,TST30H
LD DE,0
JR SSNTO1
TST30H: CP "0"
JR Z,SSNTO1
ADD HL,DE
LD DE,8
ADD HL,DE
LD A,M
FRCASL: LD M,"0"
CP 35H
JR C,BCKSER
ADDLOP: DEC HL
LD A,M
CP "."
JR Z,ADDLOP
INC A
JR Z,MAXNO
LD M,A
CP ":"
JR Z,FRCASL
INC HL
BCKSER: LD DE,DGBF16
EX DE,HL
OR A
SBC HL,DE
EX DE,HL
JR C,KUMI
LD HL,DGBF16
JR INTDI2
KUMI: DEC HL
LD A,M
CP "."
DEC HL
JR Z,INTDIS
INC HL
CP "0"
JR Z,BCKSER
PUSH HL
LD DE,DGBF25
SBC HL,DE
POP HL
JP NC,EXPASC
INTDIS: INC HL
INTDI2: LD M,0
LD DE,DGBF08
TSTFST: LD A,(DE)
CP "0"
JR NZ,ZEONLY
INC DE
JR TSTFST
ZEONLY: OR A
RET NZ
DEC DE
LD A,"0"
LD (DE),A
RET
;
;
MAXNO: LD HL,DGBF00
LD DE,M1E08
PUSH BC
LD BC,6
LDIR
POP BC
LD DE,DGBF00
RET
;
M1E08: DEFM "1E+08"
DEFB 0
;
;
GENDGT: LD A,(DE)
CP 7DH
RET Z
INTGDL: CALL CMP
JR C,GTESTB
INC (IX+0)
PUSH IX
PUSH BC
CALL SUB
POP BC
POP IX
LD A,1
LD (DGITFG),A
JR INTGDL
;
GTESTB: INC IX
REP5 INC,DE
INC DE
INC DE
INC DE
INC DE
INC DE
ENDM
LD A,(DGITFG)
LD B,A
LD A,(DGITCO)
ADD A,B
LD (DGITCO),A
CALL GEND?
RET NC
JR GENDGT
;
GEND?: LD A,M
OR A
RET Z
LD A,(DGITCO)
CP 9
RET
;
DGITCO: DEFS 1
DGITFG: DEFS 1
EXPFLG: DEFS 1
HLBUF2: DEFS 2
;
SKP H
;
; USING CONVERSION
;
USINGS: ENT
DEFS 2 ;USING START
USINGP: ENT
DEFS 2 ;USING POINTER
;
USNGSB: ENT
LD HL,(USINGP)
PUSH DE
USNGS2: LD A,M
OR A
JP Z,ER03
CALL USGCD?
JR Z,USNGS4
LD (BC),A
INC BC
INC HL
JR USNGS2
USNGS4: EX AF,AF'
LD A,(PRCSON)
CP 3
JP NZ,FLTUSG
EX AF,AF'
CP "!"
JP Z,1CHOUT
CP "&"
JP Z,2CHOUT
JP ER04
;
1CHOUT: EX (SP),HL
PUSH BC
CALL CVTSDC
OR A
LD A," "
JR Z,+3
LD A,(DE)
POP BC
LD (BC),A
INC BC
AFTPR': POP HL
INC HL
AFTPRT: LD A,M
OR A
JR Z,BRTUSG
CALL USGCD?
JR Z,RETUSG
LD (BC),A
INC BC
INC HL
JR AFTPRT
SKP H
BRTUSG: LD HL,(USINGS)
RETUSG: LD (USINGP),HL
XOR A
LD (BC),A
RET
;
2CHOUT: LD D,2
AG2CH&: INC HL
LD A,M
CP "&"
JR Z,26FOUN
INC D
CP " "
JR Z,AG2CH&
JP ER03
26FOUN: EX (SP),HL
LD A,M
CP D
JR C,TRIZ&&
INC HL
CALL INDRCT
PUSH BC
LD BC,(STRST)
ADD HL,BC
POP BC
&PRLOP: LD A,M
LD (BC),A
INC BC
INC HL
DEC D
JR NZ,&PRLOP
JP AFTPR'
;
TRIZ&&: LD E,M
INC HL
CALL INDRCT
LD A,E
OR A
JR Z,&&SPCF
PUSH BC
LD BC,(STRST)
ADD HL,BC
POP BC
PR&&L1: LD A,M
LD (BC),A
INC BC
INC HL
DEC E
JR Z,&&SPC'
DEC D
JR NZ,PR&&L1
JP AFTPR'
&&SPCF: LD A," "
LD (BC),A
INC BC
&&SPC': DEC D
JR NZ,&&SPCF
JP AFTPR'
SKP H
;
; Check using code
;
USGCD?: CALL CHKACC
DEFB 4
DEFM "!&#+"
RET Z
LD E,A
CP "*"
JR Z,USGCD2
CALL ?POND
JR Z,USGCD2
CP "."
LD E,"#"
JR Z,USGCD2
CP %BAR
RET NZ
INC HL
LD A,M
OR A
JP Z,ER03
RET
USGCD2: INC HL
LD A,M
CP E
DEC HL
LD A,M
RET
;
;
FLTUSG: XOR A
LD (FPLUSF),A
LD (PUASTF),A ;PUT * FLG
LD (PUYENF),A ;]
LD (PUAFMF),A ;AFTER-FLG
LD (PUCOMF),A ;PUT , FLG
LD (INTLEN),A ;INT LENGTH
LD (RPLUSF),A ;###+
LD (PUEXPF),A ;^^^^
DEC A
LD (FRCLEN),A ;FRAC LENGTH
EX AF,AF'
LD D,0
CP "#"
JP Z,PFLENG
CP "*"
JP Z,ASTRSK
CALL ?POND
JP Z,YENUSG
CP "."
JP Z,PULSLS
CP "+"
JP Z,PLUSUS
JP ER04
;
ASTRSK: LD A,1
LD (PUASTF),A
INC HL
INC D
INC HL
INC D
LD A,M
CALL ?POND
JR NZ,PULSLS
JR YENUS2
;
YENUSG: INC HL
INC D
YENUS2: INC HL
INC D
LD (PUYENF),A
JR PULSLS
;
PLUSUS: LD A,1
LD (FPLUSF),A
;
PFLENG: INC HL
INC D
;
PULSLS: EX DE,HL
DEC H
PUGTFC: INC H
LD A,(DE)
INC DE
CP "#"
JR Z,PUGTFC
CP ","
JR NZ,PUCONP
LD A,1
LD (PUCOMF),A
JR PUGTFC
PUCONP: CP "."
JR Z,PUPOIT
CP "-"
JR NZ,PUAFMO
LD A,1
LD (PUAFMF),A
INC DE
JR PUAFQO
PUAFMO: CP "+"
JR NZ,PUAFQO
LD A,(FPLUSF)
OR A
JR NZ,PUAFQO
LD A,1
LD (RPLUSF),A
INC DE
PUAFQO: DEC DE
LD A,H
LD (INTLEN),A
JR BEGUSG
;
PUPOIT: LD A,H
LD (INTLEN),A
LD H,FFH
PUPOFC: INC H
LD A,(DE)
INC DE
CP "#"
JR Z,PUPOFC
CP "-"
JR NZ,PUCOPQ
LD A,1
LD (PUAFMF),A
INC DE
JR PUCOPP
PUCOPQ: CP "+"
JR NZ,PUCOPP
LD A,(FPLUSF)
OR A
JR NZ,PUCOPP
LD A,1
LD (RPLUSF),A
INC DE
PUCOPP: DEC DE
LD A,H
LD (FRCLEN),A
JR BEGUSG
;
NEXPP': POP DE
JR NEXPPU
;
BEGUSG: LD H,4
PUSH DE
CHEXPU: LD A,(DE)
INC DE
CP "^"
JR NZ,NEXPP'
DEC H
JR NZ,CHEXPU
POP AF
LD A,1
LD (PUEXPF),A
NEXPPU: POP HL
PUSH DE
INC HL
LD A,M
RES 7,M
DEC HL
LD (USGSGN),A
LD A,(INTLEN)
LD D,A
DEFB 3EH
FRCLEN: DEFS 1
LD E,A
DEFB 3EH
PUEXPF: DEFS 1
PUSH BC
CALL USNGCV
POP BC
DEFB 3EH
PUCOMF: DEFS 1
OR A
JR Z,LADJS1
PUSH BC
PUSH DE
LD A,(INTLEN)
LD L,A
LD H,0
ADD HL,DE
LD DE,DGBF00
LD C,0
DEC HL
COMN3D: LD B,3
COMSK3: LD A,M
CP " "
JR Z,ESCPUC
INC C
LD (DE),A
INC DE
DEC HL
DJNZ COMSK3
LD A,M
CP " "
JR Z,ESCPUC
LD A,","
LD (DE),A
INC DE
INC C
JR COMN3D
;
ESCPUC: DEFB 3EH
INTLEN: DEFS 1
CP C
JP C,ER02
LD B,C
LD L,A
LD H,0
POP DE
PUSH DE
ADD HL,DE
LD DE,DGBF00
DEC HL
LD A,(DE)
LD M,A
DEC HL
INC DE
DJNZ -4
POP DE
POP BC
LADJS1: DEFB 3EH
PUAFMF: DEFS 1
OR A
JR NZ,LADJS2
DEFB 3EH
RPLUSF: DEFS 1
OR A
JR NZ,LADJS2
DEFB 3EH
FPLUSF: DEFS 1
OR A
JR NZ,PTPLS1
LD A,(USGSGN)
RLCA
JR NC,LADJS2
LD A,(DE)
CP " "
LD H,"-"
JR Z,FPUTER
CP 30H
JP NZ,ER02
FPUTER: PUSH DE
PUPTML: LD A,(DE)
INC DE
CP " "
JR Z,PUPTML
CP 30H
JR Z,PUPTML
OR A
JR NZ,+3
DEC DE
DEC DE
DEC DE
LD A,H
LD (DE),A
POP DE
JR LADJS2
;
PTPLS1: DEFB 3EH
USGSGN: DEFS 1
RLCA
LD H,"+"
JR NC,FPUTER
LD H,"-"
JR FPUTER
;
LADJS2: DEFB 3EH
PUYENF: DEFS 1
OR A
JR Z,LADJS3
LD A,(DE)
CP " "
JR NZ,LADJS3
PUSH DE
LD A,(DE)
INC DE
CP " "
JR Z,-4
DEC DE
DEC DE
LD A,(PUYENF)
LD (DE),A
POP DE
LADJS3: DEFB 3EH
PUASTF: DEFS 1
OR A
JR Z,LADJS4
PUSH DE
ASTFIL: LD A,(DE)
CP " "
JR NZ,LADJ4'
LD A,"*"
LD (DE),A
INC DE
JR ASTFIL
LADJ4': POP DE
LADJS4: LD A,(DE)
OR A
JR Z,USPRL8
LD (BC),A
INC BC
INC DE
JR LADJS4
USPRL8: LD A,(RPLUSF)
OR A
JR Z,TST2DH ;-
LD A,(USGSGN)
RLCA
LD A,"+"
LSDVZR: JR NC,PULSTX
LD A,"-"
PULSTX: LD (BC),A
INC BC
JR RETPU$
;
TST2DH: LD A,(PUAFMF) ;-
OR A
JR Z,RETPU$
LD A,(USGSGN)
RLCA
LD A," "
JR LSDVZR
;
RETPU$: POP HL
JP AFTPRT
;
;
?POND: CP %POND ;EX
RET Z
CP "$"
RET
SKP H
;
USNGCV: OR A
JP Z,USGCV2
PUSH DE
LD A,M
OR A
JR Z,USCMOK
PUSH HL
LD A,D
LD DE,ZFAC1
PUSH AF
CALL LDIR1
POP AF
OR A
JR Z,BMULED
LD B,A
LD HL,ZFAC1
JR +5
CALL MULTEN
DJNZ -3
BMULED: POP HL
LD B,0
USTNCM: LD DE,ZFAC1
CALL CMP2
JR C,USTOCM
CALL DIVTEN
INC B
JR USTNCM
USTOCM: PUSH HL
LD HL,ZFAC1
CALL DIVTEN
POP HL
USONCM: LD DE,ZFAC1
CALL CMP2
JR NC,USCMOK
CALL MULTEN
DEC B
JR USONCM
USCMOK: POP DE
PUSH BC
CALL USGCV1
POP BC
PUSH DE
LD A,(DE)
CP "."
JR NZ,FLADSR
LD DE,DGBF16
DEC DE
LD A,(DE)
CP 31H
POP DE
PUSH DE
JR NZ,USEX0C
EX DE,HL
INC HL
LD M,31H
DEC HL
JR MIDDCX
;
FLADSR: LD A,(DE)
CP 31H
JR NZ,USEX0C
EX DE,HL
INC HL
LD A,M
DEC HL
CP "."
LD A,"0"
JR Z,+4
LD A," "
LD M,A
INC HL
LD A,M
CP "."
JR Z,-4
LD M,31H
MIDDCX: EX DE,HL
INC B
USEX0C: LD A,(DE)
INC DE
OR A
JR NZ,USEX0C
DEC DE
JP USEXPE
;
USGCV2: PUSH DE
CALL USGCV1
POP AF
OR A
RET NZ
PUSH HL
LD HL,DGBF16
DEC HL
LD A,"0"
CP M
FOVVXC: JP NZ,ER02
DEC HL
LD A," "
CP M
JR NZ,FOVVXC
POP HL
RET
;
USGCV1: PUSH DE
CALL CVASF1
JP C,ER02
POP HL
PUSH HL
LD H,0
INC L
JR Z,+3
DEC L
LD DE,DGBF17
ADD HL,DE
LD A,M
LD M,0
DEFB 11H
FRCASU: LD M,"0"
CP 35H
JR C,BCKSEU
DEC HL
LD A,M
CP "."
JR Z,-4
INC A
JP Z,ER02
LD M,A
CP ":"
JR Z,FRCASU
BCKSEU: LD HL,KEYBM1 ;<3B><>KEYBUF
LD DE,2000H
LD M,D
INC HL
DEC E
JR NZ,-3
POP HL
PUSH HL
LD E,H
LD D,0
LD HL,KEYBUF
ADD HL,DE
PUSH HL
LD HL,DGBF07
LD M," "
INC HL
LD D,7
BF00SP: LD A,M
CP "0"
JR NZ,BF00ED
LD M," "
INC HL
DEC D
JR NZ,BF00SP
BF00ED: POP HL
PUSH HL
LD B,E
LD A,B
OR A
JR Z,BFST11
LD DE,DGBF16
BFSTL1: DEC HL
DEC DE
LD A,(DE)
LD M,A
CP " "
JR Z,BFST11
DJNZ BFSTL1
DEC DE
LD A,(DE)
CP " "
JR Z,BFST11
INC A
JP NZ,ER02
;
BFST11: POP HL
POP DE
INC E
JR Z,EDSTRT
LD B,E
LD DE,DGBF17
LD M,"."
BFSTL2: INC HL
DEC B
JR Z,EDSTRT
LD A,(DE)
INC DE
LD M,A
JR BFSTL2
EDSTRT: LD M,0
LD DE,KEYBUF
RET
;
END