From adfb48c6ab43e1b3cb1070c2c2f8ea84ecdc413e Mon Sep 17 00:00:00 2001 From: tomcw Date: Sat, 4 Mar 2017 21:00:12 +0000 Subject: [PATCH] Added old doc about SSC registers --- docs/SSC Memory Locations for Programmers.txt | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 docs/SSC Memory Locations for Programmers.txt diff --git a/docs/SSC Memory Locations for Programmers.txt b/docs/SSC Memory Locations for Programmers.txt new file mode 100644 index 00000000..e94d8db9 --- /dev/null +++ b/docs/SSC Memory Locations for Programmers.txt @@ -0,0 +1,104 @@ +Key Super Serial Card (SSC) Memory Locations for Programmers +------------------------------------------------------------ + +All addresses are of the form '$C0sx', where 's' is the Slot number +of the SSC plus $8 and 'x' is the final digit ($0 - $F) of the +address. + +Control Register + +The 6551 Control Register is mapped to $C0sB +($C09B for Slot 1, $C0AB +for Slot 2, etc.). +Its format is ... +bit 7 : stop bit number [0= 1 stop bit, 1= 2 stop bits for most +settings, except: 1.5 stop bits for word length 5 and no parity, +and 1 for word length 8 and parity] +bits 6 and 5 : word length +[00= 8 bits, 01= 7 bits, 10= 6 bits, 11= 5 bits] + +bit 4 : receiver clock source [0= external, 1= internal] + +bits 3, 2, 1, 0 : baud rate, as follows: +0000= 16x external clock +0001= 50 bps +0010= 75 bps +0011= 109.92 bps +0100= 134.58 bps +0101= 150 bps +0110= 300 bps +0111= 600 bps +1000= 1200 bps +1001= 1800 bps +1010= 2400 bps +1011= 3600 bps +1100= 4800 bps +1101= 7200 bps +1110= 9600 bps +1111= 19200 bps + +Note that 1 MHz Apples (everything other than the Apple IIgs and //c +Plus running in "fast" mode) cannot handle 19.2 kbps, and even 9600 +bps on these machines requires either some highly optimised code or +a decent buffer in the device being accessed. The faster Apples +have no difficulty with this speed, however. + +Command Register + +The 6551 Command Register is mapped to $C0sA, and is essentially an +extension of the Control Register. + +Its format is ... +bits 7 and 6 : parity mode control [00= odd parity, 01= even parity, +10= mark parity (parity bit always set), +11= space parity +(parity bit always cleared)] + +bit 5 : parity mode enable [0=no parity used, 1=parity used] +bit 4 : receiver mode echo [0=no echo, 1=echo] +bits 3 and 2 : transmitter interrupt control +[00= set RTS high and transmit no interrupts, +01= set RTS low and transmit interrupts, +10= set RTS low and transmit no interrupts, +11= set RTS low and +transmit break signals instead of interrupts] + +bit 1 : interrupt request disable +[0=enable receiver interrupts, +1=disable receiver interrupts] +bit 0 : Data Terminal Ready (DTR) setting +[0=set DTR high (indicates 'not ready'), +1=set DTR low (indicates 'ready')] + +Note that, although the DTR is generally not used in the SSC +(it may actually not be connected!), it must be set to 'low' in order for the +6551 to function correctly. Also, the RTS signal must be set 'low' +in order to receive any incoming data from the serial device. + +Note also that both the Command and Control registers are write-only, +which means that reading them will not necessarily yield valid data +on the device's settings. If there is any doubt as to the current +settings of the 6551, you should (re)initialise them. + +Status register + +The 6551 Status register is mapped to $C0s9. It is a read-only register +and its format is ... + +bit 7 : interrupt [0=no interrupt, 1=interrupt] +bit 6 : Data Set Ready (DSR) [0=DSR low (ready), 1=DSR high (not ready)] +bit 5 : Data Carrier Detect (DCD) [0=DCD low (detected), 1=DCD high (not detected)] +bit 4 : transmitter data register empty [0=not empty, 1=empty] +bit 3 : receiver data register full [0=not full, 1=full] +bit 2 : overrun error [0=no error, 1=error] +bit 1 : framing error [0=no error, 1=error] +bit 0 : parity error [0=no error, 1=error] + +Data Register +The Data Register at $C0s8 is used both for outgoing and incoming data. +Whether the data has been sent or received can be determined by checking +bits 4 and 3 (respectively) of the Status register. + +I hope that this is the SSC programming information that you are looking for. + +Aaron Heiss \ No newline at end of file