Last active
August 21, 2026 08:31
-
-
Save LightningStalker/d5f3c19450be36ed329dff18195630ae to your computer and use it in GitHub Desktop.
6502 16-bit division routine from Apple II integer BASIC
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ; 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