Skip to content

Instantly share code, notes, and snippets.

@LightningStalker
Last active August 21, 2026 08:31
Show Gist options
  • Select an option

  • Save LightningStalker/d5f3c19450be36ed329dff18195630ae to your computer and use it in GitHub Desktop.

Select an option

Save LightningStalker/d5f3c19450be36ed329dff18195630ae to your computer and use it in GitHub Desktop.
6502 16-bit division routine from Apple II integer BASIC
; Divide routine from Apple II integer BASIC ROM
ACC equ $ca ; Dividend/Quotient/Accumulator
DVI equ $cc ; Divisor
R equ $ce ; Remainder
org $300 ; Apple II small program area
start: ; load memory registers
lda #12 ; dividend
sta ACC
lda #0
sta ACC+1
lda #4 ; divisor
sta DVI
lda #0
sta DVI+1
lda #0
sta R ; clear remainder
sta R+1
debug:
ldy #16 ; y = 16-bit counter
jsr div16
brk
div16: ; begin ROM code
lda DVI ; is DVI zero?
bne LEE7A
lda DVI+1
bne LEE7A
jmp Err32767 ; yes, ">32767" error
LEE7A: ; it's some long division
asl ACC
rol ACC+1
rol R
rol R+1
lda R
cmp DVI ; compare R to DVI
lda R+1
sbc DVI+1
bcc LEE96
sta R+1 ; R = R - DVI
lda R
sbc DVI
sta R
inc ACC
LEE96:
dey
bne LEE7A
rts ; end ROM code
Err32767:
brk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment