Code: Select all
/zero page
.p EQUW &0000 /divisor
.m EQUW &0000 /code uses this space
.v EQUD &00000000 /dividend in low 16 bits/result in low 16 bits
/code
.divide SEC
LDA #&00
STA v+2
STA v+3
SBC p
STA m
LDA #&00
SBC p+1
STA m+1
LDY #&10
LDX #&02
.loop ASL v+0
ROL v+1
LDA v+2
ROL A
ROL v+3
CLC
ADC p+0,X
STA v+2
LDA v+3
ADC p+1,X
STA v+3
LDX #&00
BCC under
LDX #&02
INC v+0
.under DEY
BNE loop
RTS