110 lines
1.4 KiB
NASM
110 lines
1.4 KiB
NASM
;;cpHLDE
|
|
;;Compares HL to DE.
|
|
;;Output:
|
|
;; Same as z80 CP instruction.
|
|
cpHLDE:
|
|
or a
|
|
sbc hl, de
|
|
add hl,de
|
|
ret
|
|
|
|
;;cpHLBC
|
|
;;Compares HL to BC.
|
|
;;Output:
|
|
;; Same as z80 CP instruction.
|
|
cpHLBC:
|
|
or a
|
|
sbc hl, bc
|
|
add hl,bc
|
|
ret
|
|
|
|
;;cpBCDE
|
|
;;Compares DE to BC.
|
|
;;Output:
|
|
;; Same as z80 CP instruction.
|
|
cpBCDE:
|
|
push hl
|
|
ld h, b
|
|
ld l, c
|
|
or a
|
|
sbc hl, de
|
|
pop hl
|
|
ret
|
|
|
|
;;mulAbyB
|
|
;;Multiplys AxB
|
|
;;Inputs:
|
|
;; A: Multiplier
|
|
;; B: Multiplicand
|
|
;;Outputs:
|
|
;; A: Product of A and B.
|
|
mulAbyB:
|
|
push bc
|
|
ld c, a
|
|
mulAbyBLoop:
|
|
add a, c
|
|
djnz mulAbyBLoop
|
|
sub c
|
|
pop bc
|
|
ret
|
|
|
|
;;mulAbyHL
|
|
;;Multiplys AxHL
|
|
;;Inputs:
|
|
;; A: Multiplier
|
|
;; HL: Multiplicand
|
|
;;Outputs:
|
|
;; HL: Product of A and HL.
|
|
mulAbyHL:
|
|
push bc
|
|
push de
|
|
ld de, 0
|
|
ex de, hl
|
|
cp 0
|
|
jr z, mulAbyHLEnd
|
|
ld b, a
|
|
mulAbyHLLoop:
|
|
add hl, de
|
|
djnz mulAbyHLLoop
|
|
mulAbyHLEnd:
|
|
pop de
|
|
pop bc
|
|
ret
|
|
|
|
|
|
;;mul32By8
|
|
;;Performs an unsigned multiplication of DEHL and A.
|
|
;;Outputs:
|
|
;; DEHL: product of DEHL and A
|
|
mul32By8:
|
|
push bc \ push ix
|
|
ld ixl, 8
|
|
push de
|
|
push hl
|
|
ld hl, 0
|
|
ld d, h
|
|
ld e, l
|
|
mul32by8loop:
|
|
add hl, hl
|
|
rl e
|
|
rl d
|
|
rla
|
|
jr nc, mul32by8noAdd
|
|
pop bc
|
|
add hl, bc
|
|
ex (sp), hl
|
|
push hl
|
|
adc hl, de
|
|
pop de
|
|
ex de, hl
|
|
ex (sp), hl
|
|
push bc
|
|
mul32by8noAdd:
|
|
dec ixl
|
|
jr nz, mul32by8loop
|
|
pop bc
|
|
pop bc
|
|
pop ix \ pop bc
|
|
ret
|
|
|