Changes

Jump to: navigation, search

6502 Counting Loop Example

896 bytes added, 20:54, 5 October 2022
Created page with "Category:6502 AssemblerCategory:SPO600Here is a solution for part of the SPO600 64-bit Assembly Language Lab but implemented in 6502 Assembly language for use with..."
[[Category:6502 Assembler]][[Category:SPO600]]Here is a solution for part of the [[SPO600 64-bit Assembly Language Lab]] but implemented in 6502 Assembly language for use with the [[6502 Emulator]]:

; ROM routines
define SCINIT $ff81
define CHROUT $ffd2

START:
LDX #$00 ; Loop index (0-9)

GO:
TXA ; Put loop index into A
CLC
ADC #$30 ; Add $30 (ASCII '0')
STA MSG_DIGIT ; Store into the string

LDY #$00 ; Character number to print
DO:
LDA MSG,Y ; Get a character
BEQ DONE ; Done if it's NULL
JSR CHROUT ; Print character
INY ; Increment char number
JMP DO ; Process next character

DONE:
INX ; Increment loop index
CPX #10 ; Is it 10?
BNE GO ; If not, branch to GO
BRK ; Stop

MSG:
DCB "L","o","o","p",$20
MSG_DIGIT:
DCB "#",$0D,$00

; Note that MSG_DIGIT is a position in
; the middle of the message - not a
; separate message.

Navigation menu