; ============================================================= ; hello-world.asm — Minimal C64 Assembly Hello World ; Assemble to $C000 (49152) ; Run with: POKE 56,192:CLR then SYS 49152 ; ============================================================= * = $C000 ; Assemble starting at $C000 ; --------------------------------------------------------------- ; Main entry point ; --------------------------------------------------------------- START JSR $FF81 ; CINT — Initialize screen editor ; Print message using BSOUT (Kernal output routine) LDX #0 ; X = index into message LOOP LDA MSG,X ; load character BEQ DONE ; zero byte = end of message JSR $FFD2 ; BSOUT — output character to screen INX ; next character BNE LOOP ; (X wraps at 256, but our msg is short) DONE RTS ; return to BASIC ; --------------------------------------------------------------- ; Message data (PETSCII) ; $0D = carriage return, $00 = end of string ; --------------------------------------------------------------- MSG .BYTE 147 ; clear screen (CHR$(147)) .TEXT "HELLO, WORLD!" .BYTE $0D,$00 ; CR + terminator