Subversion Repositories NedoOS

Rev

Rev 1509 | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
1518 alone 1
prdword_dehl ;для печати на экран
2
;dehl=num
3
        ld bc,prdwordbuf
4
        push bc
5
        call prdword_dehl_tobc
1509 alone 6
        pop de
7
        ld hl,10
8
        jp sendchars
9
 
1518 alone 10
prdword_dehl_tobc ;для печати в буфер
11
;dehl=num
12
;bc=buf
13
        push de
1509 alone 14
        push hl
1518 alone 15
        exx
1509 alone 16
        pop iy
1518 alone 17
        pop hl ;hliy=num ;bc'=buf addr
1509 alone 18
        ld a,' '
19
        ld (prnumdwordcmd_zero_sym),a
20
        ld a,h
21
        or l
22
        jr z,prdword_skiphsw
23
        ld bc,+(-1000000000>>16)
24
        ld de,+(-1000000000&0xffff)
25
        call prdig32bit
26
        ld bc,+(-100000000>>16)
27
        ld de,+(-100000000&0xffff)
28
        call prdig32bit
29
        ld bc,+(-10000000>>16)
30
        ld de,+(-10000000&0xffff)
31
        call prdig32bit
32
        ld  c,+(-1000000>>16)
33
        ld de,+(-1000000&0xffff)
34
        call prdig32bit
35
        ld  c,+(-100000>>16)
36
        ld de,+(-100000&0xffff)
37
        call prdig32bit
1518 alone 38
        jp _prword_hliy
39
 
40
prword_hl_tobc ;для печати в буфер
41
;hl=num
42
;bc=buf
43
        push hl
44
        exx
45
        pop iy
46
        ld a,' '
47
        ld (prnumdwordcmd_zero_sym),a
48
        ld hl,0
49
        jr _prword_hliy ;hliy=num ;bc'=buf addr
1509 alone 50
prdword_skiphsw
51
        call prnumdwordcmd_azero
52
        call prnumdwordcmd_azero_a
53
        call prnumdwordcmd_azero_a
54
        call prnumdwordcmd_azero_a
55
        call prnumdwordcmd_azero_a
1518 alone 56
_prword_hliy ;hliy=num ;bc'=buf addr
1509 alone 57
        ld bc,+(-10000>>16)
58
        ld de,+(-10000&0xffff)
59
        call prdig32bit
60
        push iy
61
        pop hl
62
;hl=num
1518 alone 63
;bc'=buf addr
1509 alone 64
        ld bc,+(-1000&0xffff)
65
        call prdig16bit
66
        ld bc,+(-100&0xffff)
67
        call prdig16bit
68
        ld  c,+(-10&0xff)
69
        call prdig16bit
70
        ld a,l
71
        add a,'0'
72
        exx
1518 alone 73
        ld (bc),a
74
        inc bc
1509 alone 75
        ret
76
prdig16bit
77
;hl=num
78
;bc=-divisor
1518 alone 79
;bc'=buf addr
1509 alone 80
        ld a,'0'-1
81
prdig16bit0
82
        inc a
83
       add hl,bc
84
        jp c,prdig16bit0
85
       sbc hl,bc
86
prdword_digok
87
        cp '0'
88
        jr z,prnumdwordcmd_azero
89
        exx
1518 alone 90
        ld (bc),a
91
        inc bc
1509 alone 92
        exx
1518 alone 93
        ld a,0x02 ;"ld (bc),a"
94
        ld (prnumdwordcmd_zero_ldbca),a ;все последующие нули видимые
1509 alone 95
        ld a,'0'
96
        ld (prnumdwordcmd_zero_sym),a ;все последующие нули печатаем не пробелом, а нулём
97
        ret
98
prnumdwordcmd_azero ;печать нуля
99
prnumdwordcmd_zero_sym=$+1
100
        ld a,' '
101
prnumdwordcmd_azero_a
102
        exx
1518 alone 103
prnumdwordcmd_zero_ldbca=$ ;0: для вывода размера файла (не портит содержимое буфера под незначащими нулями) ;0x02 "ld (bc),a": для вывода files, size
104
        ld (bc),a
105
        inc bc
1509 alone 106
        exx
107
        ret  
108
prdig32bit
109
;hliy=num
110
;bcde=-divisor
1518 alone 111
;bc'=buf addr
1509 alone 112
        ld a,'0'-1
113
prdig32bit0
114
        inc a
115
       add iy,de
116
       adc hl,bc
117
        jp c,prdig32bit0
118
       ex af,af' ;'
119
       ld a,ly
120
       sub e
121
       ld ly,a
122
       ld a,hy
123
       sbc a,d
124
       ld hy,a
125
       sbc hl,bc
126
       ex af,af' ;'
127
        jp prdword_digok
128
 
129
prdwordbuf
130
        db "1234567890"