6502-OS/programs/print_slow.s65
2023-11-09 12:06:48 +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 #.LOBYTE(message)
sta ARG0
lda #.HIBYTE(message)
sta ARG1
phx
ldx #time_cs
jsr print_slow
plx
.endmacro
.endif ; guard