6502-OS/programs/print_slow.s65
2023-12-08 00:03:52 +01:00

47 lines
1.1 KiB
Plaintext

.ifndef INCLUDE_PRINT_SLOW
INCLUDE_PRINT_SLOW = 1
.include "programs/sleep.s65"
.include "system/lcd.s65"
;********************************************************************************
; @function Print a null-terminated string
; @param ARG0-1: Address of the string to print
; @param x: time to sleep in centiseconds
;********************************************************************************
.proc print_slow
ldy #$00
@print_loop:
lda (ARG0),y
beq @print_end
phx
jsr sleep
plx
jsr lcd_char
iny
bra @print_loop
@print_end:
rts
.endproc
;********************************************************************************
; @macro Print a null-terminated string
; @param message: Address of the message
; @param time_cs: time to sleep in centiseconds
;********************************************************************************
.macro PrintSlow message,time_cs
jsr lcd_clear
lda #<message
sta ARG0
lda #>message
sta ARG1
phx
ldx #time_cs
jsr print_slow
plx
.endmacro
.endif ; guard