-
Notifications
You must be signed in to change notification settings - Fork 25
SDC_Guide
Sdc.dll is an attempt to emulate Darren Atkinson's SDC floppy drive emulator. It is reverse engineered from information found in the CoCoSDC_UserGuide and from tests of software designed to work with the SDC. SDCDOS is an example of such software. I do not own a SDC to test with so it is likely sdc.dll emulation will not match some SDC functionality.
The SDC uses the floppy ports to communicate with software such as SDCDOS. The same ports are used to communicate with the floppy controller. If both the SDC and a floppy interface are installed in a Multi Pak Interface the SCS pack select signal must be used to choose which controller sees the floppy ports. SDC relies on cart select to isolate the ports from the floppy controller. An enhancement to mpi.dll was required to achieve this.
For proper operation in MPI config FD502 should be in mpi slot 4, SDC should be in mpi slot 3, slot 3 should be selected, and Disable Cart Select should not be checked.
SDC.dll does not support SDF images. It does supports JVC and VDK formats. When examining a image file sdc.dll expects an array of 256 bytes sectors possibly preceeded by a header of less than 256 bytes. Sectors are located in the array by logical sector number starting with zero. Disk formats with addition per sector or per track infomation will not work. If the header exists it is examined to determine if the image is single sided or double sided. If there is no header the number of sides is determined by the file size. Files containing more than 720 but less than 2881 sectors are considered to be double sided otherwise they are considered to be single sided. Since Coco disks usually contain 18 sectors per track the number of sides is typically used by software to determine the location (LSN) of a specific track. An OS9 boot program needs to know the number of sides to find the boottrack.
Currently SDC.dll does not support mounting disk sets, creating floppy images or directories, deleting files, or low-level streaming. These will be worked on as resources permit. The VCC host system can be used to accomplish many of these functions.
For performance reasons most emulators, including VCC, use a pair of unused floppy ports (the Becker interface) to communicate with a drivewire server via a TCPIP socket connection. Because VCC uses a seperate MPI slot for becker.dll these ports can not be isolated like the other floppy ports. The Multi Pak Interface modifications to allow this ports even with the SCS signal enabled. Stock SDCDOS is designed to work with a real CoCo and it uses the coco bitbanger to connect to a drivewire server so it can not interface to drivewire on Vcc. A custom SDCDOS could be modified to use the becker interface. This work is best done by those with experiance in such modification.
SDC.dll maintains a list of rom files that can be loaded using sdc flash control commands. The files must be valid rom files and will be loaded into the VCC rom array. VCC maps the rom array to CPU address 0xC000 when in ROM mode. Rom files should not be confused with Program pak DLL files (such as FD502.dll or SDC.dll). Program pak dlls are linkable images that contain software to emulate the pak hardware. Paks the contain rom will load the rom as required into their own images and expose the rom array address to VCC.
SDC.dll contains a Cloud9 RTC clock emulation. Software that can access this clock can use it to get the date and time.