mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.0 KiB
77 lines
2.0 KiB
.page
|
|
;********************************************************
|
|
; These are I/O functions for the CCS 2710 four-port
|
|
; serial I/O board.
|
|
;
|
|
; Bob Applegate, 02/16/2008
|
|
;
|
|
SIObase .equ 0E0H
|
|
;
|
|
SIODATA .equ SIObase
|
|
SIOBAUDL .equ SIObase ;also used for baud rate
|
|
SIOINTEN .equ SIObase+1
|
|
SIOBAUDH .equ SIObase+1 ;ditto
|
|
SIOIDENT .equ SIObase+2
|
|
SIOLCTRL .equ SIObase+3
|
|
SIOMDMCT .equ SIObase+4
|
|
SIOLSTAT .equ SIObase+5
|
|
SIOMDMST .equ SIObase+6
|
|
BAUD03 .equ 0180H ;divisor for 300 baud
|
|
BAUD12 .equ 060H ;1200 baud
|
|
BAUD_2400 .equ 030h ;2400 baud
|
|
BAUD96 .equ 00CH ;9600 baud
|
|
DATRDY .equ 01H ;rec'd data ready
|
|
TXMTY .equ 20H ;transmitter holding reg empty
|
|
HSMSK .equ 20H
|
|
|
|
BAUD_RATE .equ BAUD_2400
|
|
|
|
;
|
|
; This function initializes the main console port for the
|
|
; default baud rate.
|
|
;
|
|
initser: ld a,0fH
|
|
out (SIOMDMCT),a
|
|
ld a,083H ;enable divisor latch access
|
|
out (SIOLCTRL),a
|
|
ld a,BAUD_RATE / 256 ;get hi byte
|
|
out (SIOBAUDH),a
|
|
ld a,BAUD_RATE % 256 ;get low byte
|
|
out (SIOBAUDL),a
|
|
ld a,03H ;8 data bits, one stop bit, no parity
|
|
out (SIOLCTRL),a
|
|
xor a ;clear acc
|
|
out (SIOINTEN),a ;disable ints
|
|
out (SIOLSTAT),a ;clear status
|
|
in a,(SIODATA) ;clear out any garbage in rec'd data reg
|
|
ret
|
|
;
|
|
; TTY output of character in C. Modifies A.
|
|
;
|
|
ttyout: IN A,(SIOLSTAT) ;was A,TTS, read status port
|
|
AND TXMTY ;check buffer empty bit
|
|
JR Z,ttyout ;branch if not empty
|
|
LD A,C
|
|
OUT (SIODATA),A ;was TTO,A, send out character
|
|
RET ;thassit
|
|
;
|
|
; Check to see if a character is ready to be read from the TTY.
|
|
; Returns TRUE (0ffh) in A is there is a character waiting, or
|
|
; FALSE (0) if there is nothing.
|
|
;
|
|
ttystat: IN A,(SIOLSTAT) ;was A,TTS
|
|
AND DATRDY
|
|
LD A,TRUE ;was FALSE
|
|
RET NZ
|
|
CPL
|
|
RET
|
|
;
|
|
; This gets the next character from the TTY and returns it in A.
|
|
; This will block if there is nothing waiting.
|
|
;
|
|
ttyin: IN A,(SIOLSTAT) ;read status reg
|
|
AND DATRDY ;look for data ready
|
|
JR Z,ttyin ;wait for char
|
|
IN a,(SIODATA) ;read character
|
|
RET
|
|
.page
|
|
|