CS/A65 computer - Caspaer and Gecko
(C) 1989 - 2007 André Fachat
The computers presented here are actually a line of PCB boards that can be plugged into a passive motherboard. The boards can be used in different setups, but the Caspaer is the standard (extensible) base setup. A special place has the Gecko that in itself is a complete, single-board computer.
News:
- 2007-06-27 A new version of the Gecko board, including a PET ROM version using an RS232 interface as editor.
- 2007-06-07 A new SPI page, with a schematics and driver to handle MMC- (and SD-) Cards.
- 2007-06-03 A new PETIO board revision, which adds a diode for the WDC65C22's /IRQ output.
- 2007-05-26 A VIA prototyping board to test VIA-related circuits.
- 2007-05-19 Long time waited for - a power supply board (using a PC power supply as original source): the PWR board.
- 2007-01-02 Added a description of the Caspaer setup.
- 2006-12-30 Added an auxiliary CPU board, to enable paging and swapping with the 6502!
- 2006-12-16 Added a new working revision of the coprocessor board!
Table of content
Disclaimer
Before you go on, you should know that all this stuff comes with no warranty at all . Of course this hardware is not to be used in any important or even life-critical systems. The hardware schematics and software are provided 'as is', without warranty of any kind. The entire risk as to the quality and performance of the hard- and software is with you. Should the hard- or software prove defective, you assume the cost of all necessary servicing, repair or correction.
Motivation
Why do I do all this? Good question. It all started with modifications to my trusty old Commodore 64 (that I still own but rarely use, though). Together with a friend I developed a phone switching system so you could use multiple phones on a single phone line, with features like call forwarding, or conferencing. My friend built several revisions of the 6502-based hardware, while I wrote several revisions of the software. It was much fun to do, but it never reached production status, though. When I started studying, I decided to build my own system with advanced features - and the result was the original CS/A65 computer.
One motivation was to actually implement and try out (then and now) advanced features in microprocessor architecture. You can see that in the use of the MMU, or the planned coprocessor board. I also wanted it to be easily understandable, so I decided not to use programmable logic chips but implement everything in standard logic chips. Although nowadays FPGAs look very interesting (and advanced) :-)
Distribution
The boards, i.e. the schematics, and layout artworks are distributed under the terms of the GNU public license version 2.
The bus design is completely in the public domain. It can be used as long as any changes to the original specs are marked as such (to not let incompatibilites slip in unnoticed).
Introduction
The CS/A65 computer is a modular computer based on a passive backplane and a number of active boards. The system is based around the 6502 technology originating from the long gone MOS technologies. New chips, however, are available from other sources.
The 6502 is an eight bit CPU with sixteen address lines. A prominent feature of the main CPU board is the MMU that, together with the 20 bus address lines, allow for a megabyte of address space. This MMU is used in the GeckOS/A65 operating system for multitasking support.
Many of the boards originated from my original plans to recreate a Commodore PET3032 computer - on which I got my first programming experiences. It has, however, grown way beyond this now.
Some prominent examples for I/O boards are a SCSI interface, as well as PC floppy interface, or a 6502 emulator.
A software emulator based on the VICE commodore emulator is used for software development for the system
General considerations
Other CPUs
Currently the system is based on the 6502 processor, although other configurations (65816, 6809) should be possible. The software I use for this systems is homemade and can be found on my OS/A65 page. There are drivers and programs for most of the hardware described below available.
Bus
The bus used is the synchronous bus used in the 6502/6800/6809 CPU bus interfaces. It has some additional lines, though... A description of the bus interface is in bus.html.
Technology
All ICs are standard Low-Power Shottky ('LS) or Advanced Low-Power Shottky
('ALS) TTL ICs. These ICs are still standard, although some of the ICs
seem to have been deprecated and are not ported
to newer technologies like 'ALS.
Also, getting documentation for the 8bit stuff is getting more and more difficult. But there is an archive in Finland, http://www.zimmers.net/anonftp/pub/cbm/documents/chipdata/index.html that has most of the stuff. However there is a separate 74LS610 page.
Schematics
In the older schematics there are no decoupling capacitors (or what are they called?) that should be from Vcc to GND for each IC. Sometimes they are mentioned in the parts list, though. Also there is no 100uF capacitor at the CS/A bus connector between Vcc and GND, to buffer the supply voltage for the board. These are always implict, so I didn't bother drawing them. But you should use them anyway.
Most of the boards, esp. the I/O boards, are pretty straightforward. That's why I concentrate on the special I/O and even then I will only go into detail when necessary. You should have some basic understanding of 6502 hardware design.
In all mentionings I have just written 6502 or 6522 or 6821. These and other chips exist in different flavors, and it is only save to assume a that they are specified for 1MHz bus frequency only. Check if you want a 2MHz system and use the appropriate faster models.
Age
Last but not least one remark. Some of the boards have been designed as early as 1989, which means they are pretty old. Nowadays I would do some things differently, the Reset circuitry is one example that can actually be seen in the newer 2006 versions of the CPU boards for example.
The schematics on this page can be found either as PNG, xfig and gzipped postscript, in which case they are at least from 1999 or earlier, or as Eagle schematics and PNG, in which case they are from 2006 or later.
Nevertheless for the older boards I have mostly transcripted the schematics from my hand-drawing to xfig format. Although I used quite some time to find any remaining error, be warned, there still may be errors. And my hand-drawing is still the authoritative source.
For the newer boards you can be pretty sure that the Eagle schematics and board layout works when the board description indicates that I have tested the board and found no problem.
Setups
In this section some supported setups are described.
Caspaer
The Caspaer (aka "CaSpAer65" ;-) setup is the base setup for the CS/A65 computer with a main CPU board, i.e. for an MMU setup. It consists of the CS/A65 CPU, CS/A65 BIOS, Video and PETIO boards.- It uses the current version of the boards, i.e. VDC 1.4, BIOS 3.0, PETIO 1.1 and CPU 2.0.
- It uses the PET method of generating the system interrupt, by using the extra cable from PETIO to VDC board to use the vertical retrace signal (This way no 50Hz generation in the power supply is necessary).
CS/A65 legacy
This setup uses the "old" versions of various boards. It is basically deprecated and only documented here as I still have such a setup and still want to use it... It uses the CS/A65 CPU, BIOS, Video boards, as well as the deprecated keyboard and IEEE488 boards.
- It uses the older version of the boards, i.e. VDC 1.3, BIOS 2.x, CPU 1.2, Keyboard 1.0 and IEEE488 1.1.
- It uses the legacy method of generating the system interrupt, that requires the 50Hz line on the CS/A65 bus to be powered by an external source, in my case by the power supply.
Gecko
The Gecko computer is a single-board computer that can only use I/O boards on the CS/A bus, and has own peripherals on the board. It has its own Gecko page.
Fat40
The Fat40 setup is similar to the Gecko setup in that the PETCPU board used is a small computer in itself. The setup, however, defines to use the Video and PETIO boards as well, to simulate a Commodore PET 4032 with CRTC, aka "Fat40" - thus the name. The Fat40 setup has its own Fat40 page.
VC1581
The VC1581 setup also uses the PETCPU board, but uses the DRVIO board to emulate a Commodore VC1581 disk drive. The VC1581 setup has its own VC1581 page.
Software
The software used is the GeckOS/A65 operating system. It features the handling of the MMU, serial devices, video output, floppy disk drives, and the newest versions even feature TCP/SLIP (beta) and SCSI (alpha) support.
Some of the software development took place on a modified VICE emulator, that now emulates a subset of the CS/A65 hardware. Please check it out at its site.
The board pages contain driver code where appropriate and available.
Boards
This section describes the different boards and links to the schematics and more detailled descriptions.
Main Boards
Those boards are the heart of the CS/A65 and Gecko computers.
-
CS/A65 CPU
The main CPU board features an MMU, and newer versions also
sport bus error condition detection. It is a CPU-only board
and thus requires the BIOS board for its operation.
-
CS/A65 BIOS
This BIOS board contains RAM and ROM for the main CPU, as
well as simple 50Hz interrupt generation, as well as a
serial (RS232) interface.
-
64k PET CPU
This board implements a simple CPU board that includes
not only the CPU, but also RAM and ROM (and also a serial
interface). It can - as it does not have an MMU - make only
restricted use of the bus memory address space, but can
fully use the bus I/O area.
-
Gecko
This board implements a single-board computer with a
6502, RAM and ROM, that
accidentially ;-) contains a CS/A65 bus connector.
It sports a serial interface (RS232), Commodore serial IEC
bus, infrared LED driver to use as remote control
and a small keyboard interface.
-
Auxiliary CPU
This board is an optional extension to the CS/A65 CPU board.
It monitors the bus for error conditions, then takes over
from the main CPU to fix the error condition. Possible
error conditions are write protect error, "no execution"
fault, or unmapped pages. It can also be used to take a
trace of the main CPU.
-
Power board
This board provides basic services, using power from a
PC power supply. It includes voltage monitor, 3.3V generation,
battery buffered power, as well as I2C controlled
clock, RAM, and an I2C flash ROM.
I/O boards
Many of the I/O boards are designed to be at least to some extent Commodore PET compatible
-
Video
Thie VDC board implements a 6545 CRTC-based video interface.
It includes 64k dynamic RAM that is used as video memory
(at least parts of). If the system bus runs with 1MHz it can
display 40 columns PAL video, on 2MHz it can display 80 columns
video.
-
CBM PET I/O
This board contains basically all Commodore PET I/O interfaces
except for the video. It thus features an IEEE488 interface,
as well as keyboard, userport and tape interfaces. It also
contains a small beeper to make noise :-)
-
PC floppy
This board contains a PC-style floppy drive interface using
the WD1772 chip. It also contains a small printer interface.
-
DRVIO floppy and IEC
This board contains a PC-style floppy drive interface using
the WD1772 chip in a way that is compatible with the
Commodore VC1581 disk drive.
-
Double UART
Two UART 16550A implement two serial line RS232 interfacs.
-
SCSI
This board implements a SCSI interface to attach SCSI devices
to the CS/A65 computer. It is currently only tested with
disk drives, though.
Special purpose boards
Special interest in this computer system is on the topic of emulation. The larger address space and the MMU allows for mapping of other computers memory into the main memory map.
-
Coprocessor
This is a coprocessor board, that
runs in parallel to the main CPU and has its own 64k of memory
mapped into the 1M bus address space as shared memory.
It can be used for I/O offloading, e.g. for a SCSI or
TCP/IP interface.
-
Emulate a 6502
This board allows to connect another 6502-based computer
with the CS/A65. The other 6502's 64k address space is
mapped into the 1M bus address space. So with the help of
the MMU that main CPU can play the role of the replaced
other computer's CPU for example to test new ROM versions
of the other computer.
-
Emulate a keyboard
This board emulates up to two matrix-based keyboard.
It features two shared memory areas, where the memory
is shared between the main CPU and the keyboard matrix
select and detect lines.
-
VIA prototyping
This board has a VIA, with address decoding and a large
area ready for prototyping.
Deprecated boards
These boards are deprecated and I will not support them further. (well, Commodore managed to spread the IEEE488 interface across 3 ICs, which was not nice for building it on PCBs like these, why I moved some of the lines around those days...)
-
64k CPU
This is a 64k CPU that is actually a stripped down
Gecko board. It only existed as schematics and is replaced
by the PETCPU board.
-
Keyboard and RS232
This is a PET compatible keyboard interface, plus a
ACIA 6551 based serial (RS232) interface. As the 6551
is a rather rough-edged chip, and the keyboard interface
is available with the PETIO board in a more compatible way,
this board is replaced by the PETIO and DUART boards.
-
IEEE488 and CBM IEC
This board implements a partially PET compatible IEEE488
interface, plus a Commodore serial IEC bus as it is used
in the C64 for example. In addition both busses can be used
not only as master, but also as drive so that the CS/A65
computer can be used as drive by the PET or C64. This
board is replaced by the PETIO and
DRVIO boards.
Memory Map
A memory map on the I/O memory addresses can now be found in the Memory Map page.
Board numbering scheme
The boards are numbered with a major and a minor version number, plus a letter denoting the revision of the board. So for example a video board is numbered "1.3E", means that it is major version 1, minor version 3, and the fifth revision (E).
The revisions are changed when a compatible modification has been made - this can be a redraw of the schematics (e.g. with Eagle instead of xfig), or a minor bugfix (like fixing the reset behaviour). It is also used when during development the initial bugs are shaken out (which may involve incompatible changes, though, see the DRVIO board...)
The minor version is increased when there is a software-compatible extensions of the previous board. For example the 1.4 version of the VDC board, although the video connector has changed (composite is gone, but VCC is there now) it can be used very much like the V1.3 versions (software-wise).
The major version number is increased by major and incompatible changes. For example the BIOS board is in its third major version: the first version used an ACIA as RS232 interface, the second one an UART instead. The third version is a complete redesign with the possibility to provide up to 512k RAM and/or ROM. It could be used like a version 2 board, but is a major change anyway, therefore a new major version.
I try to keep the numbering consistent, but I am only human ;-)
Old News:
- 2006-12-14 Added a new revision of the SCSI board that now also includes an I2C controller.
- 2006-12-09 Added a Motivation section. Why do I actually do all this....? Also tested the PETCPU RS232 interface and added a test driver for it.
- 2006-11-26 Introduce the DRVIO board with VC1581 compatible disk and bus interfaces. Add tables with jumper settings for PETCPU.
- 2006-11-23 Added the memory map section to document the different I/O areas used by the boards.
- 2006-11-01 Added new boards and new revisions of existing boards. Most notably are the CPU, BIOS, PET CPU, PET I/O and Video boards.
