CNP-1/eeprom_and_acia_hello_world/hello_world.asm

51 lines
1.1 KiB
NASM

.setcpu "65c02"
ACIA_BASE = $4400
ACIA_DATA = ACIA_BASE
ACIA_STATUS = ACIA_BASE+1
ACIA_COMMAND = ACIA_BASE+2
ACIA_CONTROL = ACIA_BASE+3
.segment "VECTORS"
.word nmi
.word reset
.word irq
.code
reset: jmp main
nmi: rti
irq: rti
main:
init_acia: lda #%00001011 ;No parity, no echo, no interrupt
sta ACIA_COMMAND
lda #%00011111 ;1 stop bit, 8 data bits, 19200 baud
sta ACIA_CONTROL
write: ldx #0
next_char:
wait_txd_empty: lda ACIA_STATUS
; and #$10
; beq wait_txd_empty
lda #$d0
delay: dec
bne delay
lda text,x
beq read
sta ACIA_DATA
inx
jmp next_char
read:
wait_rxd_full: lda ACIA_STATUS
and #$08
beq wait_rxd_full
lda ACIA_DATA
jmp write
text: .byte "Hello World!",$0d,$0a,$00