retro1/software/retro1-tests/lcd-test/io.inc65
2017-04-17 10:09:33 -07:00

135 lines
3.3 KiB
Plaintext

; CPU frequency
F_CPU = 1000000
; ACIA registers
ACIA_BASE = $7f00
ACIA_DATA = ACIA_BASE
ACIA_STATUS = ACIA_BASE + 1
ACIA_COMMAND = ACIA_BASE + 2
ACIA_CONTROL = ACIA_BASE + 3
; ACIA control register bit values
ACIA_STOP_BITS_1 = %00000000
ACIA_STOP_BITS_2 = %10000000
ACIA_DATA_BITS_8 = %00000000
ACIA_DATA_BITS_7 = %00100000
ACIA_DATA_BITS_6 = %01000000
ACIA_DATA_BITS_5 = %01100000
ACIA_CLOCK_EXT = %00000000
ACIA_CLOCK_INT = %00010000
ACIA_BAUD_16XEXT = %00000000
ACIA_BAUD_50 = %00000001
ACIA_BAUD_75 = %00000010
ACIA_BAUD_109 = %00000011
ACIA_BAUD_134 = %00000100
ACIA_BAUD_150 = %00000101
ACIA_BAUD_300 = %00000110
ACIA_BAUD_600 = %00000111
ACIA_BAUD_1200 = %00001000
ACIA_BAUD_1800 = %00001001
ACIA_BAUD_2400 = %00001010
ACIA_BAUD_3600 = %00001011
ACIA_BAUD_4800 = %00001100
ACIA_BAUD_7200 = %00001101
ACIA_BAUD_9600 = %00001110
ACIA_BAUD_19200 = %00001111
; ACIA command register bit values
ACIA_PARITY_ODD = %00000000
ACIA_PARITY_EVEN = %01000000
ACIA_PARITY_MARK = %10000000
ACIA_PARITY_SPACE = %11000000
ACIA_PARITY_DISABLE = %00000000
ACIA_PARITY_ENABLE = %00100000
ACIA_ECHO_DISABLE = %00000000
ACIA_ECHO_ENABLE = %00010000
ACIA_TX_INT_DISABLE_RTS_HIGH = %00000000
ACIA_TX_INT_ENABLE_RTS_LOW = %00000100
ACIA_TX_INT_DISABLE_RTS_LOW = %00001000
ACIA_TX_INT_DISABLE_BREAK = %00001100
ACIA_RX_INT_ENABLE = %00000000
ACIA_RX_INT_DISABLE = %00000010
ACIA_DTR_HIGH = %00000000
ACIA_DTR_LOW = %00000001
; ACIA status register bit masks
ACIA_STATUS_IRQ = 1 << 7
ACIA_STATUS_DSR = 1 << 6
ACIA_STATUS_DCD = 1 << 5
ACIA_STATUS_TX_EMPTY = 1 << 4
ACIA_STATUS_RX_FULL = 1 << 3
ACIA_STATUS_OVERRUN = 1 << 2
ACIA_STATUS_FRAME_ERR = 1 << 1
ACIA_STATUS_PARITY_ERR = 1 << 0
; VIA registers
VIA1_BASE = $8020
VIA1_ORB = VIA1_BASE
VIA1_IRB = VIA1_BASE
VIA1_ORA = VIA1_BASE + 1
VIA1_IRA = VIA1_BASE + 1
VIA1_DDRB = VIA1_BASE + 2
VIA1_DDRA = VIA1_BASE + 3
VIA1_T1C_L = VIA1_BASE + 4
VIA1_T1C_H = VIA1_BASE + 5
VIA1_T1L_L = VIA1_BASE + 6
VIA1_T1L_H = VIA1_BASE + 7
VIA1_T2C_L = VIA1_BASE + 8
VIA1_T2C_H = VIA1_BASE + 9
VIA1_SR = VIA1_BASE + 10
VIA1_ACR = VIA1_BASE + 11
VIA1_PCR = VIA1_BASE + 12
VIA1_IFR = VIA1_BASE + 13
VIA1_IER = VIA1_BASE + 14
VIA1_ORA_NH = VIA1_BASE + 15
VIA1_IRA_NH = VIA1_BASE + 15
VIA2_BASE = $8120
VIA2_ORB = VIA2_BASE
VIA2_IRB = VIA2_BASE
VIA2_ORA = VIA2_BASE + 1
VIA2_IRA = VIA2_BASE + 1
VIA2_DDRB = VIA2_BASE + 2
VIA2_DDRA = VIA2_BASE + 3
VIA2_T1C_L = VIA2_BASE + 4
VIA2_T1C_H = VIA2_BASE + 5
VIA2_T1L_L = VIA2_BASE + 6
VIA2_T1L_H = VIA2_BASE + 7
VIA2_T2C_L = VIA2_BASE + 8
VIA2_T2C_H = VIA2_BASE + 9
VIA2_SR = VIA2_BASE + 10
VIA2_ACR = VIA2_BASE + 11
VIA2_PCR = VIA2_BASE + 12
VIA2_IFR = VIA2_BASE + 13
VIA2_IER = VIA2_BASE + 14
VIA2_ORA_NH = VIA2_BASE + 15
VIA2_IRA_NH = VIA2_BASE + 15
; Port bits
VIA_PA0 = (1 << 0)
VIA_PA1 = (1 << 1)
VIA_PA2 = (1 << 2)
VIA_PA3 = (1 << 3)
VIA_PA4 = (1 << 4)
VIA_PA5 = (1 << 5)
VIA_PA6 = (1 << 6)
VIA_PA7 = (1 << 7)
; Port bits
VIA_PB0 = 1 << 0
VIA_PB1 = 1 << 1
VIA_PB2 = 1 << 2
VIA_PB3 = 1 << 3
VIA_PB4 = 1 << 4
VIA_PB5 = 1 << 5
VIA_PB6 = 1 << 6
VIA_PB7 = 1 << 7