X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=z80comp2;a=blobdiff_plain;f=rom%2Fmonitor.asm;fp=rom%2Fmonitor.asm;h=07dcdb4389d0cd47666db72a0f69bfeceae15c09;hp=0000000000000000000000000000000000000000;hb=a0a85eb847ff3bb5da13e78618efdcd1b9f588cf;hpb=b55f31d1ac4a1991f2ad7b2d17be06969ea25e47 diff --git a/rom/monitor.asm b/rom/monitor.asm new file mode 100644 index 0000000..07dcdb4 --- /dev/null +++ b/rom/monitor.asm @@ -0,0 +1,83 @@ +; vi:filetype=z80: + + include "uart.inc" +main: + ld sp, $0 + + ; --- initialize channel A --- + ; reset TX/RX + ld a, UART_CMD_RST_RX + out (UART_REG_CMDA), a + ld a, UART_CMD_RST_TX + out (UART_REG_CMDA), a + ; disable TX/RX + ld a, UART_CMD_TX_OFF | UART_CMD_RX_OFF + out (UART_REG_CMDA), a + ; reset MODEA pointer + ld a, UART_CMD_RST_MPTR + out (UART_REG_CMDA), a + ; set the MODEA register + ld a, UART_M1_8BIT | UART_M1_NOPAR + out (UART_REG_MODEA), a + ld a, UART_M2_STOP1 + out (UART_REG_MODEA), a + ; select baud generator set 1 + xor a + out (UART_REG_AUXCTL), a + ; set the baud rate + ld a, UART_CSEL_TX_9600 | UART_CSEL_RX_9600 + out (UART_REG_CSELA), a + ; enable TX/RX + ld a, UART_CMD_TX_ON | UART_CMD_RX_ON + out (UART_REG_CMDA), a + + ; --- initialize channel B --- + ; reset TX/RX + ld a, UART_CMD_RST_RX + out (UART_REG_CMDB), a + ld a, UART_CMD_RST_TX + out (UART_REG_CMDB), a + ; disable TX/RX + ld a, UART_CMD_TX_OFF | UART_CMD_RX_OFF + out (UART_REG_CMDB), a + ; reset MODEB pointer + ld a, UART_CMD_RST_MPTR + out (UART_REG_CMDB), a + ; write all 0 to MODEB registers to leave OP1 as a general purpose output + xor a + out (UART_REG_MODEB), a + out (UART_REG_MODEB), a + ; set the output port bit 1 + ld a, 2 + out (UART_REG_OSET), a + + ld hl, str_hello + call uart_putstr + ld hl, str_foo + call uart_putstr + +hlt: di + halt + jr hlt + + +uart_putchar: + ld b, a +.wait_txrdy: + in a, (UART_REG_STATA) + bit 2, a ; test status bit 2 (TXRDY) + jr z, .wait_txrdy + ld a, b + out (UART_REG_DATAA), a + ret + +uart_putstr: + ld a, (hl) + cp a, 0 + ret z + call uart_putchar + inc hl + jr uart_putstr + +str_hello asciiz 'The Z80 says hi!',13,10 +str_foo asciiz 'Foobar',13,10