diff --git a/branches/s100/Applegate/ccs2710.inc b/branches/s100/Applegate/ccs2710.inc index 4129733a..553ee3cb 100644 --- a/branches/s100/Applegate/ccs2710.inc +++ b/branches/s100/Applegate/ccs2710.inc @@ -1,77 +1,77 @@ - .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 + .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