diff --git a/#/6502-assembly.s b/#/6502-assembly.s new file mode 100644 index 00000000..dcd1e92c --- /dev/null +++ b/#/6502-assembly.s @@ -0,0 +1,22 @@ +; goodbyeworld.s for C= 8-bit machines, ca65 assembler format. +; String printing limited to strings of 256 characters or less. + +a_cr = $0d ; Carriage return. +bsout = $ffd2 ; KERNAL ROM, output a character to current device. + + .code + + ldx #0 ; Starting index 0 in X register. +printnext: + lda text,x ; Get character from string. + beq done ; If we read a 0 we're done. + jsr bsout ; Output character. + inx ; Increment index to next character. + bne printnext ; Repeat if index doesn't overflow to 0. +done: + rts ; Return from subroutine. + + .rodata + +text: + .byte "Hello world!", a_cr, 0