Difference between revisions of "6502 Counting Loop Example"
Chris Tyler (talk | contribs) (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...") |
Chris Tyler (talk | contribs) |
||
Line 1: | Line 1: | ||
− | [[Category:6502 | + | [[Category:6502]][[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 | ; ROM routines |
Revision as of 20:56, 5 October 2022
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.