0001 0000 BEEPCODE: .EQU $11 0002 0000 MAINDISP: .EQU $F031 0003 0000 0004 0000 IRQ_SRC: .EQU $F013 0005 0000 0006 0000 UART_RX: .EQU $F014 0007 0000 UART_STAT: .EQU $F015 0008 0000 UART_TX: .EQU $F034 0009 0000 UART_CTRL: .EQU $F035 0010 0000 0011 0000 TX_EMPTY: .EQU $01 0012 0000 RX_READY: .EQU $02 0013 0000 0014 0000 0015 0000 .ORG $0000 0016 0000 90 11 LDA BEEPCODE 0017 0002 99 F0 31 STA [MAINDISP] 0018 0005 50 EF FF BLDSP $EFFF 0019 0008 0020 0008 ; write a welcome string 0021 0008 A0 00 00 BLDX 0 0022 000B 91 F0 15 LOOP1: LDA [UART_STAT] ; read UART status reg 0023 000E 30 01 AND TX_EMPTY 0024 0010 D1 00 0B JZ [LOOP1] ; wait for transmitter free 0025 0013 92 00 3E LDA [MESSAGE,X] 0026 0016 D1 00 20 JZ [MAINLOOP] ; done with welcome string 0027 0019 99 F0 34 STA [UART_TX] ; write character to UART 0028 001C 82 INCX 0029 001D C1 00 0B JMP [LOOP1] 0030 0020 0031 0020 ; loop around and echo any character received from the UART 0032 0020 91 F0 15 MAINLOOP: LDA [UART_STAT] ; read UART status reg 0033 0023 30 02 AND RX_READY 0034 0025 D1 00 20 JZ [MAINLOOP] ; wait for available character 0035 0028 91 F0 14 LDA [UART_RX] ; read character from UART 0036 002B 99 F0 31 STA [MAINDISP] ; write to LCD 0037 002E B2 PUSHA 0038 002F 91 F0 15 LOOP2: LDA [UART_STAT] ; read UART status reg 0039 0032 30 01 AND TX_EMPTY 0040 0034 D1 00 2F JZ [LOOP2] ; wait for transmitter free 0041 0037 B0 POPA 0042 0038 99 F0 34 STA [UART_TX] ; echo character to UART 0043 003B C1 00 20 JMP [MAINLOOP] 0044 003E 0045 003E 48 65 6C 6C MESSAGE: .BYTE "Hello World!\r\n", 0 0045 0042 6F 20 57 6F 0045 0046 72 6C 64 21 0045 004A 0D 0A 00 0046 004D .END 0047 004D tasm: Number of errors = 0