Login

Subversion Repositories NedoOS

Rev

Rev 1509 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

prdword_dehl ;╨┤╨╗╤П ╨┐╨╡╤З╨░╤В╨╕ ╨╜╨░ ╤Н╨║╤А╨░╨╜
;dehl=num
        ld bc,prdwordbuf
        push bc
        call prdword_dehl_tobc
        pop de
        ld hl,10
        jp sendchars

prdword_dehl_tobc ;╨┤╨╗╤П ╨┐╨╡╤З╨░╤В╨╕ ╨▓ ╨▒╤Г╤Д╨╡╤А
;dehl=num
;bc=buf
        push de
        push hl
        exx
        pop iy
        pop hl ;hliy=num ;bc'=buf addr
        ld a,' '
        ld (prnumdwordcmd_zero_sym),a
        ld a,h
        or l
        jr z,prdword_skiphsw
        ld bc,+(-1000000000>>16)
        ld de,+(-1000000000&0xffff)
        call prdig32bit
        ld bc,+(-100000000>>16)
        ld de,+(-100000000&0xffff)
        call prdig32bit
        ld bc,+(-10000000>>16)
        ld de,+(-10000000&0xffff)
        call prdig32bit
        ld  c,+(-1000000>>16)
        ld de,+(-1000000&0xffff)
        call prdig32bit
        ld  c,+(-100000>>16)
        ld de,+(-100000&0xffff)
        call prdig32bit
        jp _prword_hliy

prword_hl_tobc ;╨┤╨╗╤П ╨┐╨╡╤З╨░╤В╨╕ ╨▓ ╨▒╤Г╤Д╨╡╤А
;hl=num
;bc=buf
        push hl
        exx
        pop iy
        ld a,' '
        ld (prnumdwordcmd_zero_sym),a
        ld hl,0
        jr _prword_hliy ;hliy=num ;bc'=buf addr
prdword_skiphsw
        call prnumdwordcmd_azero
        call prnumdwordcmd_azero_a
        call prnumdwordcmd_azero_a
        call prnumdwordcmd_azero_a
        call prnumdwordcmd_azero_a
_prword_hliy ;hliy=num ;bc'=buf addr
        ld bc,+(-10000>>16)
        ld de,+(-10000&0xffff)
        call prdig32bit
        push iy
        pop hl
;hl=num
;bc'=buf addr
        ld bc,+(-1000&0xffff)
        call prdig16bit
        ld bc,+(-100&0xffff)
        call prdig16bit
        ld  c,+(-10&0xff)
        call prdig16bit
        ld a,l
        add a,'0'
        exx
        ld (bc),a
        inc bc
        ret
prdig16bit
;hl=num
;bc=-divisor
;bc'=buf addr
        ld a,'0'-1
prdig16bit0
        inc a
       add hl,bc
        jp c,prdig16bit0
       sbc hl,bc
prdword_digok
        cp '0'
        jr z,prnumdwordcmd_azero
        exx
        ld (bc),a
        inc bc
        exx
        ld a,0x02 ;"ld (bc),a"
        ld (prnumdwordcmd_zero_ldbca),a ;╨▓╤Б╨╡ ╨┐╨╛╤Б╨╗╨╡╨┤╤Г╤О╤Й╨╕╨╡ ╨╜╤Г╨╗╨╕ ╨▓╨╕╨┤╨╕╨╝╤Л╨╡
        ld a,'0'
        ld (prnumdwordcmd_zero_sym),a ;╨▓╤Б╨╡ ╨┐╨╛╤Б╨╗╨╡╨┤╤Г╤О╤Й╨╕╨╡ ╨╜╤Г╨╗╨╕ ╨┐╨╡╤З╨░╤В╨░╨╡╨╝ ╨╜╨╡ ╨┐╤А╨╛╨▒╨╡╨╗╨╛╨╝, ╨░ ╨╜╤Г╨╗╤С╨╝
        ret
prnumdwordcmd_azero ;╨┐╨╡╤З╨░╤В╤М ╨╜╤Г╨╗╤П
prnumdwordcmd_zero_sym=$+1
        ld a,' '
prnumdwordcmd_azero_a
        exx
prnumdwordcmd_zero_ldbca=$ ;0: ╨┤╨╗╤П ╨▓╤Л╨▓╨╛╨┤╨░ ╤А╨░╨╖╨╝╨╡╤А╨░ ╤Д╨░╨╣╨╗╨░ (╨╜╨╡ ╨┐╨╛╤А╤В╨╕╤В ╤Б╨╛╨┤╨╡╤А╨╢╨╕╨╝╨╛╨╡ ╨▒╤Г╤Д╨╡╤А╨░ ╨┐╨╛╨┤ ╨╜╨╡╨╖╨╜╨░╤З╨░╤Й╨╕╨╝╨╕ ╨╜╤Г╨╗╤П╨╝╨╕) ;0x02 "ld (bc),a": ╨┤╨╗╤П ╨▓╤Л╨▓╨╛╨┤╨░ files, size
        ld (bc),a
        inc bc
        exx
        ret  
prdig32bit
;hliy=num
;bcde=-divisor
;bc'=buf addr
        ld a,'0'-1
prdig32bit0
        inc a
       add iy,de
       adc hl,bc
        jp c,prdig32bit0
       ex af,af' ;'
       ld a,ly
       sub e
       ld ly,a
       ld a,hy
       sbc a,d
       ld hy,a
       sbc hl,bc
       ex af,af' ;'
        jp prdword_digok

prdwordbuf
        db "1234567890"