repo.or.cz
/
urasm.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
UrForth: removed some unused code; oops! fixed bug in C kernel basic compiler (negati...
[urasm.git]
/
libs
/
muldiv_fast.zas
blob
c897a6ba1d1252fb23ade24c3191ea0d28f5fa41
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;; unsigned multiply
3
;; IN:
4
;; DE: num0
5
;; HL: num1
6
;; OUT:
7
;; HL: high part
8
;; DE: low part
9
;; BC: dead
10
;; AF: dead
11
UMul1616_32f:
12
ld bc,hl
13
;; hlde=de*bc, bc is not changed
14
;; min ticks: 730; max ticks: 826
15
ld hl,0
16
or a
17
18
rr d
19
rr e
20
jp nc,$+4
21
add hl,bc
22
23
DUP 15
24
rr h
25
rr l
26
rr d
27
rr e
28
jp nc,$+4
29
add hl,bc
30
EDUP
31
32
rr h
33
rr l
34
rr d
35
rr e
36
37
ret
38
39
40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
41
;; unsigned division
42
;; IN:
43
;; HL: high part
44
;; DE: low part
45
;; BC: divisor
46
;; OUT:
47
;; DE: res
48
;; HL: mod
49
;; BC: not changed
50
;; AF: dead
51
UDiv3216_16f:
52
or a
53
54
DUP 16
55
rl e
56
rl d
57
adc hl,hl
58
sbc hl,bc
59
jp nc,$+4
60
add hl,bc
61
EDUP
62
63
ld a,e
64
rla
65
cpl
66
ld e,a
67
68
ld a,d
69
rla
70
cpl
71
ld d,a
72
73
ret