The 610 is a member of the Commodore 600/700 family of computers. There were several models available:
Model | Description |
---|---|
610 | 128k memory |
620 | 256k memory |
630 | 256k memory, coprocessor card |
710 | 128k memory |
720 | 256k memory |
730 | 256k memory, coprocessor card |
While the CBM720 is known to exist, I've never seen a CBM620 myself. Some time ago, I claimed that there haven't been any CBM620s at all. In the meantime, some people have told me that they have seen or owned one. But beware: Because it is really easy to make a 620 from a 610 (just add 16 4164 RAM chips and replace the BASIC ROMs) some people claiming to have a 620 may actually have upgraded 610 machines. This is especially true, if the machine in question is lacking the model/serial number plate.
The Commodore 600/700 computers were designed as business computers. They had a fast CPU (2MHz), Extended BASIC 4.0, more than 64K memory, an 80 character display and an UART chip, allowing baud rates up to 19.2kbit/s.
The 700 family had a builtin monitor like the 8032SK (in fact, for the 8032SK, Commodore used the case of the 7x0 machines).
The machines had a CPU produced by CSG (Commodore Semiconductor Group) named 6509, running at 2MHz. The 6509 was based on the 6502 core but was modified to allow access to more than 64K memory using a strange bank switching scheme. Four additional address lines were available, allowing up to 1MB of memory. However, only 64K could be addressed directly. To access more data, there was an additional register located in the zero page at $01. The contents of this register were used as the value for the high four address lines when using the two instructions
lda (zp),y
and
sta (zp),y
An additional register located at $00 determined the execution bank, the 64K bank in memory where the CPU fetches instructions from. These registers do not contain zero after a reset (as one could assume) but $0F. Consequently, the system bank (the bank that contains the kernal) is bank 15.
Apart from the strange memory banking, the CPU is a 6502. If you leave the registers at $00 and $01 alone, the CPU may be programmed like a vanilla 6502. However, the additional memory is not accessible in this case.
The 600/700 family had a SID - something very unusual for a business computer. The 6545 (a slightly enhanced 6845) was used as CRTC, so there was no graphics mode.
Address | Description | |
---|---|---|
$E000 - $FFFF | Kernal ROM | |
$DF00 | TPI 6525 (keyboard) | |
$DE00 | TPI 6525 (IEEE-488) | |
$DD00 | UART 6551 | |
$DC00 | CIA 6526 (IEEE-488, user port) | |
$DB00 | External port (on coprocessor board) | |
$DA00 | SID 6581 | |
$D900 | Reserved for disk units | |
$D800 | CRTC 6545 | |
$D000 - $D7FF | Video RAM (2KB) | |
$C000 - $CFFF | Unused (4KB) | |
$A000 - $BFFF | BASIC ROM high | |
$8000 - $9FFF | BASIC ROM low | |
$6000 - $7FFF | Cartridge bank 3 | |
$4000 - $5FFF | Cartridge bank 2 | |
$2000 - $3FFF | Cartridge bank 1 | |
$1000 - $1FFF | Reserved for disk ROM | |
$0800 - $0FFF | external buffer RAM (2KB) (on coprocessor board) | |
$0400 - $07FF | RAM, available for user programs | |
$0002 - $03FF | RAM, used by the system | |
$0001 | Indirect segment register | |
$0000 | Execution segment register |
The memory map for the other segments is rather boring: All segments are completely used for BASIC programs and/or variables (with the exception of the first two memory locations in each bank). The last segment was also used to store the function key strings and to hold the receive buffer for the serial port (256 bytes).
The BASIC worked similar to the BASIC of the C128: The first bank was used for the actual program, the other banks were used to store variables.
Programming the machine was - strange, even for a 6502 system. There was not enough memory in the system bank to do anything serious (about 1K free memory, many people had a 4K internal RAM extension at $C000 - see photo), and accessing the memory in the other banks was clumsy. Calling subroutines in other banks was a nightmare and slow like hell. Because the kernal was not available when executing code in another bank, your program had to run without the kernal (and with interrupts disabled if you did not supply your own interrupt handler), or include custom kernal replacement routines.
I've done a complete kernal disassembly many years ago. Unfortunately, the
comments are in german. However, it should give you a good starting point for
your own work. The assembler used is ca65
, the assembler that
comes with the cc65 C compiler
Click
here
to download a ZIP archive with the sources and a working binary of the kernal.
The disassembled kernal version was version 3. I've seen a version 4 at
funet, but I
don't know the exact differences. If you know more,
please tell me!
Here is a back view of the CBM 610. In fact, what you see here is not exactly the back view of the CBM 610, it's a 610 with the backplane of the 510. I got my hands on this backplane some time in 1986 and swapped it against the original one, since the 510 has two additional holes for 9 pin DSUB connectors that are used for the joystick connections. The CBM 610 has no external user port, but there's an internal connector located behind these holes. At that time, my machine had these additional connectors, but I've removed them for a reason I do not remember. Apart from the holes for the joystick connectors, the backplanes were identical.
![]() | Another view from the front. The slots in the rear are not only decoration. The power supply is located on the left side as you will see when we open the case. |
A picture of the ROMs. My machine (as many others) was equipped with EPROMs instead of ROMs. The reason for this was that Commodore had some problems with the software, and the numbers sold were very low. The adapter sockets were made by Commodore. Behind the EPROMs, the character ROM and the 6545 video RAM are visible.
Another picture with a better look on the adapter sockets. On the left side, you see a 4K RAM extension at $C000 using two additional 2K static RAMs. The machines had full address decoding for the additional RAMs. The connector in the background is the keyboard connector.
Here is a picture of a second board (it's a spare board, I do not have a case for it, but it's fully functional. So if you have a spare case to offer, please send me a mail!). It is interesting to look for the differences. This board has only 128K of memory, it's equipped with ROMs instead of EPROMs, and it has a 6526 in a ceramic case (in the top left corner). Another very interesting thing is, that the SID has no socket! I've never seen this before, not in the C64 and not in any other 610.
Heute schon geust?! Nr. 0 Issue zero of an old club magzine named "Heute schon geust?!" (in German). Contains detailed instructions on how to extend a CBM610 to 1MB internally using 41256 RAM chips. Heute schon geust?! Nr. 1 Issue one of the same magazine (in German). Heute schon geust?! Nr. 2 "Heute schon geust?!", issue number two. Heute schon geust?! Nr. 3 "Heute schon geust?!", issue number three. Internal 1MB memory expansion for the CBM 6x0 and 7x0. A translation of the article from HSG0 into english.
MC 8/1983, page 10 An announcement of the B series (in german). The CPU is improperly specified as an 6809.
index.php Letzte Änderung: 30-Apr-2021 | Impressum Datenschutzerklärung |