https://www.cocopedia.com/wiki/api.php?action=feedcontributions&user=MarkO&feedformat=atomCoCopedia - The Tandy/Radio Shack Color Computer Wiki - User contributions [en]2024-03-28T21:29:25ZUser contributionsMediaWiki 1.41.0https://www.cocopedia.com/wiki/index.php?title=CoCo_SDC_Explorer&diff=10345CoCo SDC Explorer2023-03-11T22:25:05Z<p>MarkO: </p>
<hr />
<div>Coco SDC Explorer 1.35<br />
Guillaume Major<br />
<br />
SDCX is a file browser for the Coco SDC. It is compatible with all CoCos,<br />
the Dragon 32 and the Dragon 64. SDCX requires 32K.<br />
<br />
Graphics and animation by Erico Patricio Monteiro<br />
<br />
SDCX is based on SideKick by Luis Antoniosi.<br />
<br />
<br />
Features<br />
--------<br />
<br />
- list files and directories on the SD card<br />
- create, rename and delete disk images and directories<br />
- mount directories for multi-disks programs<br />
- launch ML and BASIC programs<br />
- detect and boot OS-9 disks<br />
- quick disk and file selection by the first 4 letters<br />
- sorted SDC and disk directory listings<br />
- saves and restores last session<br />
- boot any of the 8 flash banks<br />
- read and write floppy disks (*)<br />
- display floppy disks directory (*)<br />
- format floppy disks (*)<br />
- double sided floppy disks support (*)<br />
- joystick support<br />
- configurable<br />
<br />
(*) Color Computer, SDC-DOS, disk controller and MPI required<br />
<br />
<br />
Command Summary<br />
---------------<br />
<br />
SHIFT-C: create disk<br />
SHIFT-K: create directory<br />
SHIFT-N: rename disk or directory<br />
SHIFT-X: delete disk or directory<br />
SHIFT-1: mount/unmount disk in drive 1 (Coco version)<br />
SHIFT-2: mount/unmount disk in drive 2 (Dragon version)<br />
SHIFT-B: boot flash bank<br />
<br />
SHIFT-M: mount directory (multi-disks programs)<br />
CLEAR: refresh directory<br />
<br />
SHIFT-E: toggle SD card extended view<br />
SHIFT-S: toggle directory sorting<br />
SHIFT-V: toggle RGB/CMP video mode (Coco 3)<br />
<br />
SHIFT-R: read floppy disk<br />
SHIFT-W: write floppy disk<br />
SHIFT-D: show floppy drive directory<br />
SHIFT-F: format floppy disk<br />
<br />
SHIFT-H: show help<br />
<br />
ENTER: launch program or boot disk<br />
BREAK: quit<br />
<br />
<br />
Navigation keys<br />
---------------<br />
<br />
LEFT/RIGHT : Switch between windows<br />
SHIFT-UP/DOWN : Page up/page down<br />
SHIFT-LEFT/RIGHT: Home/End<br />
[A-Z][0-9] : Select next file matching up to 4 characters typed quickly<br />
SHIFT-CLEAR : SD card root directory<br />
<br />
<br />
Startup Keys<br />
------------<br />
<br />
Hold down the C key at startup to run SDCX configuration program.<br />
Hold down the SPACEBAR at startup to skip the restoration of the last session.<br />
<br />
<br />
Joystick support<br />
----------------<br />
<br />
Press the joystick button of your choice (right of left) to enable joystick.<br />
Press the joystick button to change directory, launch a program or boot a disk.<br />
Press and hold the joystick button to navigate quickly through the lists.<br />
<br />
<br />
Multi-disks programs<br />
--------------------<br />
<br />
SDCX can mount directories with a disk set to support multi-disks programs.<br />
<br />
Press SHIFT-M to mount a directory with a disk set. Files on the first disk<br />
will appear in the right window.<br />
<br />
Press CLEAR to refresh the directory list after switching disk with the button<br />
on the Coco SDC.<br />
<br />
<br />
SD Card extended view<br />
---------------------<br />
<br />
Press SHIFT-E to toggle SD Card extended view listing. When activated files siz><br />
and attributes are displayed. The extended view will open and close automatical><br />
when the SD card window gets or loses focus.<br />
<br />
Attributes:<br />
<br />
A - Archive<br />
D - Directory<br />
R - Read only<br />
<br />
<br />
Configuration<br />
-------------<br />
<br />
The first time SDCX is run the configuration program will be invoked.<br />
To run the configuration program at a later time, hold down the C key<br />
at startup or type RUN"CONFIG".<br />
<br />
The configuration programs allows you to set the following options:<br />
<br />
- restore last session<br />
- disable splash screen<br />
- sort disk directory (directory window)<br />
- composite video (Coco 3 only)<br />
- alternate color set (orange text)<br />
- background color<br />
- border color (only available when background color is black)<br />
<br />
To toggle an option press the associated highlighted letter.<br />
Press ENTER to save the configuration and run SDCX.<br />
Press X to exit the configuration program without saving.<br />
<br />
<br />
Auto execute SDCX at startup<br />
----------------------------<br />
<br />
To run SDCX automatically at startup you need SDC-DOS 1.3 or later. To download<br />
the latest version of SDC-DOS go to http://cocosdc.blogspot.ca/ and click on th><br />
"Latest Firmeware" link in the Pages menu on the right. Run the SETUP.BAS<br />
program to update your SDC-DOS version.<br />
<br />
Copy the SDCX.DSK file to the root of your SD card and rename it to SDCEXP.DSK.<br />
<br />
Create or modify your startup.cfg file at the root of your SD card to mount the<br />
SDCEXP.DSK disk in drive 0 or 1 at startup. To do so, add the line #=SDCEXP.DSK<br />
where # is the drive number. Example:<br />
<br />
0=SDCEXP.DSK<br />
<br />
With this setup you can now use the EXP command to run SDCX.<br />
<br />
<br />
Floppy drive commands (Coco only)<br />
---------------------<br />
<br />
Floppy drive commands require SDC-DOS, a Multi-Pak Interface, a disk controller<br />
and a floppy drive. 64K is required on a Coco 1 and Coco 2 for double sided<br />
disk support.<br />
<br />
Read/Write floppy disks:<br />
<br />
Select the disk file you want to use for the read or write operation and press:<br />
<br />
SHIFT-R: to copy a floppy disk to the disk file<br />
SHIFT-W: to copy the disk file to a floppy disk<br />
<br />
Format floppy disk:<br />
<br />
Press SHIFT-F to format a floppy disk.<br />
<br />
Options:<br />
<br />
0-3: Drive number selection<br />
T: Change number of tracks (35, 40 or 80)<br />
S: Toggle between single, second side and double sided disk<br />
V: Verify disk (Format command only)<br />
<br />
Side(s) option:<br />
<br />
- Single: Single sided disk<br />
- Side 2: Second side of a double sided disk<br />
- Double: Double sided disk (OS-9, FLEX)<br />
<br />
NOTE: Drive 3 cannot be selected with Side 2 and Double side option.<br />
<br />
It is recommended that you use SDC-DOS 1.5 or later for floppy drive operations.<br />
On earlier versions of SDC-DOS, the floppy drive motor would fail to shut-off<br />
after a copy operation.<br />
<br />
Floppy disk directory<br />
<br />
The floppy disk directory can be displayed with the SHIFT-D command.<br />
Side selection can be toggled with the S key.<br />
<br />
<br />
Files description<br />
-----------------<br />
<br />
sdcx.dsk - SDCX Coco version (35 tracks)<br />
sdcx.vdk - SDCX Dragon version (40 tracks)<br />
readme.txt - This file<br />
changes.txt - Changes history<br />
<br />
<br />
Limitations<br />
-----------<br />
<br />
- creates standard .DSK files only (no SDF)<br />
- can only delete empty directories (Coco SDC limitation)<br />
- limit of 400 files per directory<br />
<br />
I hope you will find this program useful. Please contact me if you find a bug<br />
or have any suggestions!<br />
<br />
guillaume.major<br />
2022.03.20</div>MarkOhttps://www.cocopedia.com/wiki/index.php?title=CoCo_SDC_Explorer&diff=10344CoCo SDC Explorer2023-03-11T22:24:02Z<p>MarkO: Initial CoCo SDC Explorer entry</p>
<hr />
<div>Coco SDC Explorer 1.35<br />
Guillaume Major<br />
<br />
SDCX is a file browser for the Coco SDC. It is compatible with all CoCos,<br />
the Dragon 32 and the Dragon 64. SDCX requires 32K.<br />
<br />
Graphics and animation by Erico Patricio Monteiro<br />
<br />
SDCX is based on SideKick by Luis Antoniosi.<br />
<br />
<br />
Features<br />
--------<br />
<br />
- list files and directories on the SD card<br />
- create, rename and delete disk images and directories<br />
- mount directories for multi-disks programs<br />
- launch ML and BASIC programs<br />
- detect and boot OS-9 disks<br />
- quick disk and file selection by the first 4 letters<br />
- sorted SDC and disk directory listings<br />
- saves and restores last session<br />
- boot any of the 8 flash banks<br />
- read and write floppy disks (*)<br />
- display floppy disks directory (*)<br />
- format floppy disks (*)<br />
- double sided floppy disks support (*)<br />
- joystick support<br />
- configurable<br />
<br />
(*) Color Computer, SDC-DOS, disk controller and MPI required<br />
<br />
<br />
Command Summary<br />
---------------<br />
<br />
SHIFT-C: create disk<br />
SHIFT-K: create directory<br />
SHIFT-N: rename disk or directory<br />
SHIFT-X: delete disk or directory<br />
SHIFT-1: mount/unmount disk in drive 1 (Coco version)<br />
SHIFT-2: mount/unmount disk in drive 2 (Dragon version)<br />
SHIFT-B: boot flash bank<br />
<br />
SHIFT-M: mount directory (multi-disks programs)<br />
CLEAR: refresh directory<br />
<br />
SHIFT-E: toggle SD card extended view<br />
SHIFT-S: toggle directory sorting<br />
SHIFT-V: toggle RGB/CMP video mode (Coco 3)<br />
<br />
SHIFT-R: read floppy disk<br />
SHIFT-W: write floppy disk<br />
SHIFT-D: show floppy drive directory<br />
SHIFT-F: format floppy disk<br />
<br />
SHIFT-H: show help<br />
<br />
ENTER: launch program or boot disk<br />
BREAK: quit<br />
<br />
<br />
Navigation keys<br />
---------------<br />
<br />
LEFT/RIGHT : Switch between windows<br />
SHIFT-UP/DOWN : Page up/page down<br />
SHIFT-LEFT/RIGHT: Home/End<br />
[A-Z][0-9] : Select next file matching up to 4 characters typed quickly<br />
SHIFT-CLEAR : SD card root directory<br />
<br />
<br />
Startup Keys<br />
------------<br />
<br />
Hold down the C key at startup to run SDCX configuration program.<br />
Hold down the SPACEBAR at startup to skip the restoration of the last session.<br />
<br />
<br />
Joystick support<br />
----------------<br />
<br />
Press the joystick button of your choice (right of left) to enable joystick.<br />
Press the joystick button to change directory, launch a program or boot a disk.<br />
Press and hold the joystick button to navigate quickly through the lists.<br />
<br />
<br />
Multi-disks programs<br />
--------------------<br />
<br />
SDCX can mount directories with a disk set to support multi-disks programs.<br />
<br />
Press SHIFT-M to mount a directory with a disk set. Files on the first disk<br />
will appear in the right window.<br />
<br />
Press CLEAR to refresh the directory list after switching disk with the button<br />
on the Coco SDC.<br />
<br />
<br />
SD Card extended view<br />
---------------------<br />
<br />
Press SHIFT-E to toggle SD Card extended view listing. When activated files siz><br />
and attributes are displayed. The extended view will open and close automatical><br />
when the SD card window gets or loses focus.<br />
<br />
Attributes:<br />
<br />
A - Archive<br />
D - Directory<br />
R - Read only<br />
<br />
<br />
Configuration<br />
-------------<br />
<br />
The first time SDCX is run the configuration program will be invoked.<br />
To run the configuration program at a later time, hold down the C key<br />
at startup or type RUN"CONFIG".<br />
<br />
The configuration programs allows you to set the following options:<br />
<br />
- restore last session<br />
- disable splash screen<br />
- sort disk directory (directory window)<br />
- composite video (Coco 3 only)<br />
- alternate color set (orange text)<br />
- background color<br />
- border color (only available when background color is black)<br />
<br />
To toggle an option press the associated highlighted letter.<br />
Press ENTER to save the configuration and run SDCX.<br />
Press X to exit the configuration program without saving.<br />
<br />
<br />
Auto execute SDCX at startup<br />
----------------------------<br />
<br />
To run SDCX automatically at startup you need SDC-DOS 1.3 or later. To download<br />
the latest version of SDC-DOS go to http://cocosdc.blogspot.ca/ and click on th><br />
"Latest Firmeware" link in the Pages menu on the right. Run the SETUP.BAS<br />
program to update your SDC-DOS version.<br />
<br />
Copy the SDCX.DSK file to the root of your SD card and rename it to SDCEXP.DSK.<br />
<br />
Create or modify your startup.cfg file at the root of your SD card to mount the<br />
SDCEXP.DSK disk in drive 0 or 1 at startup. To do so, add the line #=SDCEXP.DSK<br />
where # is the drive number. Example:<br />
<br />
0=SDCEXP.DSK<br />
<br />
With this setup you can now use the EXP command to run SDCX.<br />
<br />
<br />
Floppy drive commands (Coco only)<br />
---------------------<br />
<br />
Floppy drive commands require SDC-DOS, a Multi-Pak Interface, a disk controller<br />
and a floppy drive. 64K is required on a Coco 1 and Coco 2 for double sided<br />
disk support.<br />
<br />
Read/Write floppy disks:<br />
<br />
Select the disk file you want to use for the read or write operation and press:<br />
<br />
SHIFT-R: to copy a floppy disk to the disk file<br />
SHIFT-W: to copy the disk file to a floppy disk<br />
<br />
Format floppy disk:<br />
<br />
Press SHIFT-F to format a floppy disk.<br />
<br />
Options:<br />
<br />
0-3: Drive number selection<br />
T: Change number of tracks (35, 40 or 80)<br />
S: Toggle between single, second side and double sided disk<br />
V: Verify disk (Format command only)<br />
<br />
Side(s) option:<br />
<br />
- Single: Single sided disk<br />
- Side 2: Second side of a double sided disk<br />
- Double: Double sided disk (OS-9, FLEX)<br />
<br />
NOTE: Drive 3 cannot be selected with Side 2 and Double side option.<br />
<br />
It is recommended that you use SDC-DOS 1.5 or later for floppy drive operations.<br />
On earlier versions of SDC-DOS, the floppy drive motor would fail to shut-off<br />
after a copy operation.<br />
<br />
Floppy disk directory<br />
<br />
The floppy disk directory can be displayed with the SHIFT-D command.<br />
Side selection can be toggled with the S key.<br />
<br />
<br />
Files description<br />
-----------------<br />
<br />
sdcx.dsk - SDCX Coco version (35 tracks)<br />
sdcx.vdk - SDCX Dragon version (40 tracks)<br />
readme.txt - This file<br />
changes.txt - Changes history<br />
<br />
<br />
Limitations<br />
-----------<br />
<br />
- creates standard .DSK files only (no SDF)<br />
- can only delete empty directories (Coco SDC limitation)<br />
- limit of 400 files per directory<br />
<br />
I hope you will find this program useful. Please contact me if you find a bug<br />
or have any suggestions!<br />
<br />
guillaume.major@gmail.com<br />
2022.03.20</div>MarkOhttps://www.cocopedia.com/wiki/index.php?title=CoCoSDC&diff=10343CoCoSDC2023-03-11T20:16:35Z<p>MarkO: Removed BoysonTech, added Retro Rewind</p>
<hr />
<div>{{NavHardware}}<br />
{{HardwareInfoBox |<br />
| name = CoCo SDC<br />
| photo = cocosdc.jpg<br />
| caption = <br />
| date = <br />
| year = 2009<br />
| interface = Cartridge Port<br />
| notes = Current version (2021-03) : SDC-DOS 1.6, MCU (firmware) 121 (May 2020)<br />
| infosource = product user's guide<br />
}}<br />
<br />
== Description ==<br />
<br />
The CoCo SDC is a Color Computer Floppy Disk Emulator running [[SDC-DOS]] (effectively a floppy drive controller replacement), ready for [[Drivewire]] server communication. It was designed by [[Darren Atkinson]].<br />
<br />
Instead of hooking up old, hard to find floppy drives or cassette recorders, it gives direct access to floppy disk, cassette and ROMpak images stored on modern SDHC card storage. This is implemented by SDC-DOS additional commands to mount disk image files on the SD card, program the Flash and execute ROM images contained in the Flash. DriveWire disk support is also included in SDC-DOS.<br />
<br />
Provided your system has a [[Multi-Pak]], you can connect a real floppy interface and the CoCo SDC at the same time, then backup physical floppies to disk images on an SD card. Copy protected disks can be backed up using tools like Carl England's [[Defeater]]. It is also useful to backup software loaded from cassettes.<br />
<br />
The CoCo SDC also provides 128K of Flash memory which is divided into 8 banks of 16K so users can program their favorite ROM or alternative OS as well. SDC-DOS and DECB reside in banks 0 and 1, respectfully, when shipped. <br />
<br />
Based on an Atmega micro-controller, the CoCo SDC emulates the Western Digital 1774 floppy controller chip and as such is basically 100% compatible with any CoCo software, including copy protected disks. CoCo floppy disk replacement devices and software have one major shortcoming – the inability to use software in which the author wrote his or her own floppy disk access routines. All versions Drivewire and the SuperIDE; CoCoNet and the Micro SD Pak, Bluetooth Pak and RS-232 Pak all suffer from this problem. The CoCo SDC aims at aleviating this problem. <br />
<br />
=== The CoCo SDC case ===<br />
<br />
The CoCo SDC was designed to fit into a FD-501 or 502 case, as shown below.<br />
<br />
[[File:cocosdc.jpg]]<br />
<br />
Such cases are not easy to find, though. Other sources for SDC cases include:<br />
<br />
* [[Tim Lindner]], maker of plexiglass panels for $10. <br />
* 3D printing your own using the [https://www.thingiverse.com/thing:1492619 CoCo SDC case 3D design] available on Thingverse<br />
* [https://www.thingiverse.com/thing:1592139 Another 3D printing design], as a one-piece case, also on Thingverse<br />
* Buying one from Ed Snider (see Vendors, below)<br />
<br />
== Vendors ==<br />
* [https://thezippsterzone.com/2020/06/25/the-coco-sdc/ Ed "Zippster" Snider is producing the CoCo SDC] and sells it (as of 02/2021) for $50 as an assembled PCB or $70 including a 3d-printed case. <br />
* [https://retrorewind.ca/coco-sdc Retro Rewind] also produces the CoCoSDC.<br />
<br />
== Files == <br />
* Documentation : [https://goo.gl/bZ9ebS CoCoSDC User's Guide]<br />
* Latest firmware update : [https://goo.gl/ePgwe1 SDC-DOS 1.6, MCU 121 Firmware update]<br />
<br />
== External Links ==<br />
* http://cocosdc.blogspot.com - Official website.<br />
* http://www.tandycoco.com/forum/viewtopic.php?f=99&t=246 - [https://colorcomputerarchive.com/repo/Documents/Manuals/Hardware/CoCo%20SDC%20User%20Guide%20(Darren%20Atkinson).pdf User manual] (PDF)</div>MarkOhttps://www.cocopedia.com/wiki/index.php?title=Deluxe_RS-232_Program_Pak&diff=9696Deluxe RS-232 Program Pak2020-04-14T00:55:58Z<p>MarkO: Changed Link to SockMaster's Page because was not loading.. e.g "www" to "users"...</p>
<hr />
<div>{{NavHardware}}<br />
[[File:Deluxe RS232.jpg|thumb|Deluxe RS232 (26-2226)]] <br />
Copy of [http://users.axess.com/twilight/sock/rs232pak.html Sock Master's] & [http://users.axess.com/twilight/sock/rs232.html Sock Master's RS232 Pak Stuff.]<br />
<br />
RS-232 Pak Data Sheet<br />
<br />
The heart of the Deluxe RS-232 Pak is the Synertek 6551 ACIA. It has an on-chip baud rate generator, programmable interrupts and status register for ease of operation, false start bit detection, and echo mode<br />
<h2>Memory Address</h2><br />
This ACIA board is memory mapped to addresses $FF68 (65384) to $FF6B (65387).<br />
<br />
The 6551 uses 4 memory addresses for the following functions:<br />
{| cellpadding=3 cellspacing=0 border=2 <br />
! Address<br />
! Write<br />
! Read<br />
|- <br />
| FF68<br />
| Transmit data<br>Register<br />
| Received data<br>Register<br />
|- <br />
| FF69<br />
| Soft Reset<br />
| Status Register<br />
|- <br />
| FF6A<br />
| COLSPAN=2 ALIGN=middle | Command Register<br />
|- <br />
| FF6B<br />
| COLSPAN=2 ALIGN=middle | Control Register<br />
|}<br><br />
This table shows that only the Command and Control registers are bidirectional. The Soft Reset operation<br />
clears the 6551 internal registers but does not cause any data transfer. Therefore, the data written is a "don't<br />
care." A RES* from the bus will clear all registers in the 6551 while a Soft Reset will disable interrupts and<br />
transmitter, turn off echo mode, and clear the Overrun Error flag only.<br />
<br />
The following shows the Status, Command, and Control Register and gives programming examples for each:<br />
<h2>Status Register ($FF69)</h2><br />
The Status Register is used to indicate to the processor the status of various SY6551 functions.<br />
<br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| colspan=8 | STATUS REGISTER<br />
|- <br />
! 7<br />
! 6<br />
! 5<br />
! 4<br />
! 3<br />
! 2<br />
! 1<br />
! 0<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
! STATUS<br />
! SET BY<br />
! CLEARED BY<br />
|- <br />
| Parity Error*<br />
| 0=No Error<br>1=Error<br />
| Self Clearing**<br />
|- <br />
| Framing Error*<br />
| 0=No Error<br>1=Error<br />
| Self Clearing**<br />
|- <br />
| Overrun*<br />
| 0=No Error<br>1=Error<br />
| Self Clearing**<br />
|- <br />
| Receive Data<br>Register Full<br />
| 0=Not Full<br>1=Full<br />
| Read Receive<br>Data Register<br />
|- <br />
| Transmit Data<br>Register Empty<br />
| 0=Not Empty<br>1=Empty<br />
| Write Transmit<br>Data Register<br />
|- <br />
| DCD<br />
| 0=DCD Low<br>1=DCD High<br />
| Net Reusable Reflects DSR State<br />
|- <br />
| DSR<br />
| 0=DSR Low<br>1=DSR High<br />
| Net Reusable Reflects DSR State<br />
|- <br />
| IRQ<br />
| 0=No Interrupt<br>1=Interrupt<br />
| Read Status Register<br />
|}<br><font size=2>*NO INTERRUPT GENERATED FOR THESE CONDITIONS.<br />
<BR>**CLEARED AUTOMATICALLY AFTER A READ OF RDR AND THE NEXT ERROR FREE RECEIPT OF DATA.</font size><P><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| <font size=2>STATUS REGISTER<br />
! 7<br />
! 6<br />
! 5<br />
! 4<br />
! 3<br />
! 2<br />
! 1<br />
! 0<br />
|- <br />
| HARDWARE RESET<br />
| 0<br />
| -<br />
| -<br />
| 1<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
|- <br />
| PROGRAM RESET<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| 0<br />
| -<br />
| -<br />
|}<br />
<br />
<br />
<h2>Command Register ($FF6A)</h2><br />
The Command Register is used to control Specific Transmit/Receive functions.<br />
<br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| colspan=8 | COMMAND REGISTER<br />
|- <br />
! 7<br />
! 6<br />
! 5<br />
! 4<br />
! 3<br />
! 2<br />
! 1<br />
! 0<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| colspan=3 align=middle | BIT<br />
! rowspan=2 | PARITY CHECK CONTROLS<br />
|- <br />
|<b>7<br />
|'''6'''<br />
|'''5'''<br />
|- <br />
| -<br />
| -<br />
| 0<br />
| Parity Disabled - No Parity Bit Generated - No Parity Bit Received<br />
|- <br />
| 0<br />
| 0<br />
| 1<br />
| Odd Parity Receiver and Transmitter<br />
|- <br />
| 0<br />
| 1<br />
| 1<br />
| Even Parity Receiver and Transmitter<br />
|- <br />
| 1<br />
| 0<br />
| 1<br />
| Mark Parity Bit Transmitted, Parity Check Disabled<br />
|- <br />
| 1<br />
| 1<br />
| 1<br />
| Space Parity Bit Transmitted, Parity Check Disabled<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| align=middle | BIT 4<br />
! align=middle | NORMAL ECHO MODE FOR RECEIVER<br />
|- <br />
| 0<br />
| Normal<br />
|- <br />
| 1<br />
| Echo (Bits 2 and 3 must be "0")<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
! colspan=5 | TRANSMITTER CONTROLS<br />
|- <br />
| colspan=2 align=middle | BIT<br />
| rowspan=2 align=middle | TRANSMIT INTERRUPT<br />
| rowspan=2 align=middle | RTS LEVEL<br />
| rowspan=2 align=middle | TRANSMITTER<br />
|- <br />
| '''3'''<br />
| '''2'''<br />
|- <br />
| 0<br />
| 0<br />
| align=middle | Disabled<br />
| align=middle | High<br />
| align=middle | Off<br />
|- <br />
| 0<br />
| 1<br />
| align=middle | Enabled<br />
| align=middle | Low<br />
| align=middle | On<br />
|- <br />
| 1<br />
| 0<br />
| align=middle | Disabled<br />
| align=middle | Low<br />
| align=middle | On<br />
|- <br />
| 1<br />
| 1<br />
| align=middle | Disabled<br />
| align=middle | Low<br />
| align=middle | Transmit BRK<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| align=middle | BIT 1<br />
! align=middle | RECEIVER INTERRUPT ENABLE<br />
|- <br />
| 0<br />
| IRQ Interrupt Enabled from Bit 3 of Status Register<br />
|- <br />
| 1<br />
| IRQ Interrupt Disabled<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| align=middle | BIT 0<br />
! align=middle | DATA TERMINAL READY<br />
|- <br />
| 0<br />
| Disable Receiver and All Interrupts (DTR high)<br />
|- <br />
| 1<br />
| Enable Receiver and All Interrupts (DTR low)<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| <font size=2>COMMAND REGISTER<br />
! 7<br />
! 6<br />
! 5<br />
! 4<br />
! 3<br />
! 2<br />
! 1<br />
! 0<br />
|- <br />
| HARDWARE RESET<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
|- <br />
| PROGRAM RESET<br />
| -<br />
| -<br />
| -<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
|}<br />
<br />
<br />
<h2>Control Register ($FF6B)</h2><br />
The Control Register is used to select the desired mode for the SY6551. The word length, number of stop bits, and clock controls<br />
are all determined by the Control Register.<br />
<br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| colspan=8 | CONTROL REGISTER<br />
|- <br />
! 7<br />
! 6<br />
! 5<br />
! 4<br />
! 3<br />
! 2<br />
! 1<br />
! 0<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| align=middle | BIT 7<br />
! align=middle | STOP BITS<br />
|- <br />
| 0<br />
| 1 Stop Bit<br />
|- <br />
| 1<br />
| 2 Stop Bits<br>1 Stop Bit if Word Length = 8 Bits and Parity*<br>1.5 Stop Bits if Word Length = 5 Bits and No Parity<br />
|}<br />
*This allows for 9-bit transmission (8 data bits plus parity).<br />
<br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| colspan=2 align=middle | BIT<br />
! rowspan=2 align=middle | DATA WORD LENGTH<br />
|- <br />
| '''6'''<br />
| '''5'''<br />
|- <br />
| 0<br />
| 0<br />
| align=middle | 8<br />
|- <br />
| 0<br />
| 1<br />
| align=middle | 7<br />
|- <br />
| 1<br />
| 0<br />
| align=middle | 6<br />
|- <br />
| 1<br />
| 1<br />
| align=middle | 5<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| align=middle | BIT 4<br />
! align=middle | RECEIVER CLOCK SOURCE<br />
|- <br />
| 0<br />
| External Receiver Clock<br />
|- <br />
| 1<br />
| Baud Rate Generator<br />
|}<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| colspan=4 align=middle | BIT<br />
! rowspan=2 align=middle | BAUD RATE GENERATOR<br />
|- <br />
| '''3'''<br />
| '''2'''<br />
| '''1'''<br />
| '''0'''<br />
|- <br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| align=middle | 16x ENTERNAL CLOCK*<br />
|- <br />
| 0<br />
| 0<br />
| 0<br />
| 1<br />
| align=middle | 50 BAUD<br />
|- <br />
| 0<br />
| 0<br />
| 1<br />
| 0<br />
| align=middle | 75 BAUD<br />
|- <br />
| 0<br />
| 0<br />
| 1<br />
| 1<br />
| align=middle | 109.92 BAUD<br />
|- <br />
| 0<br />
| 1<br />
| 0<br />
| 0<br />
| align=middle | 134.58 BAUD<br />
|- <br />
| 0<br />
| 1<br />
| 0<br />
| 1<br />
| align=middle | 150 BAUD<br />
|- <br />
| 0<br />
| 1<br />
| 1<br />
| 0<br />
| align=middle | 300 BAUD<br />
|- <br />
| 0<br />
| 1<br />
| 1<br />
| 1<br />
| align=middle | 600 BAUD<br />
|- <br />
| 1<br />
| 0<br />
| 0<br />
| 0<br />
| align=middle | 1200 BAUD<br />
|- <br />
| 1<br />
| 0<br />
| 0<br />
| 1<br />
| align=middle | 1800 BAUD<br />
|- <br />
| 1<br />
| 0<br />
| 1<br />
| 0<br />
| align=middle | 2400 BAUD<br />
|- <br />
| 1<br />
| 0<br />
| 1<br />
| 1<br />
| align=middle | 3600 BAUD<br />
|- <br />
| 1<br />
| 1<br />
| 0<br />
| 0<br />
| align=middle | 4800 BAUD<br />
|- <br />
| 1<br />
| 1<br />
| 0<br />
| 1<br />
| align=middle | 7200 BAUD<br />
|- <br />
| 1<br />
| 1<br />
| 1<br />
| 0<br />
| align=middle | 9600 BAUD<br />
|- <br />
| 1<br />
| 1<br />
| 1<br />
| 1<br />
| align=middle | 19200 BAUD<br />
|}<br />
*This works out to be 115200 baud, and it *almost* works&#33;<br><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
| <font size=2>CONTROL REGISTER<br />
! 7<br />
! 6<br />
! 5<br />
! 4<br />
! 3<br />
! 2<br />
! 1<br />
! 0<br />
|- <br />
| HARDWARE RESET<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
| 0<br />
|- <br />
| PROGRAM RESET<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
| -<br />
|}<br><br />
<br />
<h2>RS-232C Pin Description</h2><br />
{| cellpadding=3 cellspacing=0 border=2 <br />
! Pin Number<br />
! Signal<br />
|- <br />
| align=middle | 1<br />
| Frame Ground<br />
|- <br />
| align=middle | 2<br />
| Transmit Data<br />
|- <br />
| align=middle | 3<br />
| Receive Data<br />
|- <br />
| align=middle | 4<br />
| Request to Send<br />
|- <br />
| align=middle | 5<br />
| Clear to Send<br />
|- <br />
| align=middle | 6<br />
| Data Set Ready<br />
|- <br />
| align=middle | 7<br />
| Signal Ground<br />
|- <br />
| align=middle | 8<br />
| Carrier Detect<br />
|- <br />
| align=middle | 20<br />
| Data Terminal Ready<br />
|}<br><br />
<h2>Increase Hi-Speed Performance</h2><br />
Notes about adding hardware handshaking and other modifications to the CoCo's RS-232 to increase hi-speed performance<br />
<br />
<hr><br />
Sock Master's notes about hardware handshaking and other modifications to the<br />
CoCo's 6551 based RS-232c Pak.<br />
<hr><br />
<br />
I've been running a BBS on my CoCo for the last 11 years or so. I'm usually<br />
a bit behind on the technology side compared to most other BBSes, but many<br />
people usually say that it makes the board more interesting. When I finally<br />
got myself a 14.4Kbps modem for the BBS a year ago, I decided to simply run my<br />
RS-232 at the maximum rate (19200 baud) and leave it locked there. No matter<br />
what baud someone called in at, the flow control lines of the RS-232 are<br />
supposed to keep my BBS from sending out too much data to low speed callers.<br />
Well, it turns out that that is technically correct, but the 6551 has a *lousy* <br />
way of dealing with CTS line changes. Every time the modem would raise<br />
the CTS, the 6551 would stop dead in it's tracks - right in the middle of<br />
sending a byte! For low speed callers, that meant every 200th byte or so was<br />
truncated and percieved as trash.<br />
<br />
I couldn't think of a very elegant solution to that problem, but for the<br />
sake of my BBS, I solved it in the easiest way I could. I removed the CTS<br />
signal (pin 9 on the 6551 chip) from the 6551 altogether and rewired it to the<br />
cassette input (pin 4 on cassette port) with a 22K Ohm resistor. I then forced<br />
the 6551 to always think the modem is ready by grounding the CTS on the chip<br />
(Solder a wire from pin 9 to pin 1 on the 6551). I used the cassette port<br />
because it's a free input port that's generally unused by everyone. This<br />
works, but you have to patch your RS-232 driver to accomodate it. My new<br />
driver simply checks the state of the cassette port before deciding if it<br />
should wait to transmit the next byte or not. But, even with unaltered driver<br />
routines the 6551 will no longer destroy outgoing data and no problems will<br />
arise except in the case of the computer sending out more than 1.5K or 2K ahead<br />
of the modem, which is fairly unlikely. This is simple enough not to need a<br />
diagram, so I didn't include this in my drawing. The drawing is too crammed<br />
as it is already.<br />
<br />
Now for what IS in the diagram: The other problem with putting a high-speed<br />
modem on my BBS is a little less important, but fixing it makes everything<br />
much easier. With this modification the CPU gets less bogged down, the RS-232<br />
driver becomes easier to write, and the BBS *never* misses any incoming data.<br />
Normally, the 6551 simply has no way of telling my modem when it's data buffer<br />
is full. If someone called my BBS at a high baud rate and tried uploading a<br />
text file, my driver simply didn't read the data fast enough to get it all<br />
without missing bytes. Every time the disk drive went on, the CPU halts and the<br />
6551 misses more data. In order not to miss data, the RS-232 driver would have<br />
to immediately read data from the 6551 every time a byte came in. The<br />
solution? I made a little circuit that sits on top of the 6551 chip (a 74ls32<br />
and 74ls00) that generates a new RTS control signal. Since modern modems have<br />
a data buffer, it would be really neat to unload a lot of work from the CoCo<br />
and leave it for the modem to do. This hardware circuit simply creates a new<br />
RTS line for the 6551. Every time the 6551 receives data, the circuit raises<br />
the RTS line (which tells the modem to stop sending to the CoCo) until that<br />
data is read by the software. If the driver reads the data at the full<br />
incoming speed, there is no slowdown in throughput. If the driver goes on a<br />
break, or the disk drive comes into use... whatever, the modem is told not to<br />
send any more data to the 6551 until the 6551 is ready to recieve it!<br />
Effectively, the circuit disallows the 6551 from missing any data. It also<br />
places the job of buffering incoming data on the modem, and not the CoCo.<br />
The CoCo doesn't have to keep reading the 6551 every time a byte comes in,<br />
since it won't lose the data if it lets it wait. Now it can read the data<br />
when it actually wants it. This speeds up my BBS quite a bit, I only read<br />
from the 6551 when the BBS wants input from the user. If the user transmits<br />
stuff while the BBS is calculating, loading, thinking, etc... the modem will<br />
buffer it for me.<br />
<br />
Note: I've recently been informed that the RTS modification has a side effect<br />
when used with certain kinds of modems. It works wonderfully with my U.S.<br />
Robotics 14.4 Sportster which has a 2K data buffer. But, it may function<br />
inefficiently with other modems lacking data buffers. What happens is that when<br />
the RTS coming from the the CoCo signals the modem that the 6551 is not ready to<br />
receive data, these modems may pass along this signal to the HOST computer and<br />
tell it to stop sending data until the CoCo is ready for more. (This happens<br />
because the modem does not buffer incoming data, therefore cannot store it if<br />
the CoCo is not ready to receive.) This extra step adds a delay between<br />
incoming characters because the signal ends up travelling huge distances across<br />
the phone line between each character.<br />
<br />
I also rewired the line that goes to Carrier Detect (DCD pin 16 on 6551)<br />
signal to go to the DSR (pin 17) on the 6551. Make sure to cut any lines that<br />
previously went to the DSR pin on the 6551. Then, I wired the DCD (pin 16) on<br />
the 6551 to ground (pin 1). This way I can still recieve data when there is no<br />
carrier, but I can still be able to detect carrier status by checking the DSR<br />
state. (This is not shown in the diagram either because it's as easy as cutting<br />
two wires and rewiring two pins.) <br />
<br />
Lastly, I did the silly thing of replacing the 1.842Mhz clock crystal on the<br />
6551 with a 3.684Mhz one. This doubles all baud rates. The 6551 can now run<br />
at 38400 bps! (Warning: Many terminal programs that use GIME timer interrupts<br />
to drive the RS-232 will still sample the RS-232 at their old sampling rate<br />
(half the new rate required) which effectively reduces your throughput or<br />
causes lost data - So, this modification is not recommended unless you know<br />
that your software is driven by the 6551 Interrupt line.)<br />
<br />
These four modifications each serve a purpose, but you don't need to<br />
attempt them all. Each particular modification will do it's job all by itself.<br />
You can try getting started with the easy modifications to the DCD or CTS first<br />
and then decide if you want to try the more serious hardware hacking of the RTS<br />
modification. If you want just a particular function of the 6551 'fixed', then<br />
you can do just that modification too. I have all four done to my RS-232, and<br />
they work wonders for the operation of my BBS.<br />
<br />
Sock Master<br />
<br />
<h2>RS232 hardware handshaking modification</h2><br />
[[File:RS232mod_Sock_master.gif|thumb|left|640x400 diagram of my RS232 hardware handshaking modification]]</div>MarkO