View difference between Paste ID: NVg0Pu6d and SLbX4pic
SHOW: | | - or go back to the newest paste.
1
__idivs_ASM:
2
; Performs signed interger division
3
; Inputs:
4
;  HL : Operand 1
5
;  BC : Operand 2
6
; Outputs:
7
;  HL = HL/BC
8
	ex	de,hl
9
	xor	a,a
10
	sbc	hl,hl
11
	sbc	hl,bc
12
	jp	p,+_ 
13
	push	hl
14
	pop	bc
15
	inc	a
16
17
_:	or	a,a
18
	sbc	hl,hl
19
	sbc	hl,de
20
	jp	m,+_ 
21
	ex	de,hl
22
	inc	a
23
24
_:	add	hl,de
25
	rra
26
	ld	a,24
27
28
_:	ex	de,hl
29
	adc	hl,hl
30
	ex	de,hl
31
	adc	hl,hl
32
	add	hl,bc
33
	jr	c,+_
34
	sbc	hl,bc
35
_:	dec	a
36
	jr	nz,--_
37
38
	ex	de,hl
39
	adc	hl,hl
40
	ret	c
41
	ex	de,hl
42
	sbc	hl,hl
43
	sbc	hl,de
44
	ret
45
46
__imuls_ASM:
47
__imulu_ASM:
48
; Performs (un)signed integer multiplication
49
; Inputs:
50
;  HL : Operand 1
51
;  BC : Operand 2
52
; Outputs:
53
;  HL = HL*BC
54
	push	bc
55
	push	hl
56
	ex	de,hl
57
	ld	hl,2
58
	add	hl,sp
59
	ld	b,(hl)
60
	mlt	bc
61
	inc	hl
62
	inc	hl
63
	inc	hl
64
	ld	a,d
65
	ld	d,(hl)
66
	mlt	de
67
	dec	hl
68
	ld	l,(hl)
69
	ld	h,a
70
	mlt	hl
71
	ld	a,l
72
	add	a,e
73
	add	a,c
74
	pop	de
75
	pop	bc
76
	push	bc
77
	or	a,a
78
	sbc	hl,hl
79
	add.s	hl,de
80
	ex	de,hl
81
	ld	h,b
82
	mlt	hl
83
	ld	b,d
84
	mlt	bc
85
	add	hl,bc
86
	add	a,h
87
	ld	h,a
88
	pop	bc
89
	ld	d,c
90
	mlt	de
91
	add	hl,hl
92
	add	hl,hl
93
	add	hl,hl
94
	add	hl,hl
95
	add	hl,hl
96
	add	hl,hl
97
	add	hl,hl
98
	add	hl,hl
99
	add	hl,de
100-
	ret
100+
101
102
_abs24de:
103
	sbc hl, hl
104
	adc hl, de
105
	jp p, +_
106
	or a, a
107
	sbc hl, hl
108
	sbc hl,de
109
_: