Estex-DSS/SHELL/Procedures/math.asm
Anatoliy Belyanskiy 4cebd03a1a SHELL: new command "INFO"& Show FS in DIR.
CORE: Some fixes with F_First
2024-06-25 04:59:02 +10:00

76 lines
1.1 KiB
NASM

;----------------------------------------------------------------------;
; ‚뢮¤ HL ¢ hex-ä®à¬ â¥
; hl=ç¨á«®
; de=¡ãä¥à
hex16_to_str: ld a,h
call hex8_to_str
ld a,l
hex8_to_str: push af
rrca
rrca
rrca
rrca
call .num
pop af
;
.num: and %0000'1111
add a,#90
daa
adc a,#40
daa
ld (de),a
inc de
ret
;----------------------------------------------------------------------;
;----------------------------------------------------------------------;
;!FIXIT ¥áâì ¤ã¡«ì PDIGIT
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
hex2dec_ascii_16bit:
.n10: ld ix,.tmp1
res 7,(ix+0)
jr .decim
;
.n10000: ld ix,.tmp1
res 7,(ix+0)
ld bc,100
call .num16
jr .skip1
;
.n1000: ld ix,.tmp1
res 7,(ix+0)
.skip1: ld bc,100
call .num16
jr .skip2
;
.n100: ld ix,.tmp1
res 7,(ix+0)
.skip2: ld bc,100
call .num16
;
.decim: ld bc,10
call .num16
ld a,l
add a,"0"
jr .num16_exit
;
.num16: ld a,'0'-1
and a
inc a
sbc hl,bc
jr nc,$-3 ;!FIXIT $
add hl,bc
cp "0"
jr z,$+6 ;!FIXIT $
set 7,(ix+0)
bit 7,(ix+0)
ret z
.num16_exit:
ld (de),a ; á®åà. ¢ ¡ãä¥à¥
inc de
ret
;
.tmp1: BYTE 0
;----------------------------------------------------------------------;