# Comx-35

The COMX-35 was a home computer that was one of the very few systems to use the RCA 1802 microprocessor, the same microprocessor that is also used in some space probes.
The COMX-35 had a keyboard with an integrated joystick in place of cursor keys. It was relatively inexpensive and came with a large collection of software. COMX-35 was manufactured in Hong Kong by COMX World Operations Ltd and was released in the Netherlands, the United Kingdom, Sweden, New Zealand, Australia, Finland, Norway, Italy, Singapore, Turkey and the People's Republic of China.

## Hardware
### Technical specifications

* CPU: RCA CDP1802 at 2.813 MHz (PAL) or 2.835 MHz (NTSC)
* Random-access memory: 35 KB (67 KB max)
* ROM: 16 KB with BASIC interpreter
* VIS: (Video Interface System) RCA CDP1869/CDP1870
** Text modes: 40 columns x 24 lines. Alternative 20 x 24, 40 x 12 and 20 x 12
** Character set: 128 Programmable characters, the default character set displayed only uppercase characters
** Character size: 6x9 (PAL) or 6x8 (NTSC) pixels, alternative up to 6x16
** Graphics modes: None, but the character-set was re programmable to simulate a 240 x 216 High Resolution display
** Colours: A total of 8 foreground colours are available (with a limited choice of 4 per character and 1 per line of that character) and 8 background colours (defined for the whole screen).
* Sound: RCA CDP1869
** 2 channels: one for tone generation with a span of 8 octaves, and 1 for special effect/white noise. Volume programmable in 16 steps.

### Memory map

| Address | Type |
| @0000-@3FFF | Basic system ROM |
| @4000-@43FF | System Parameters |
| @4400-@BDFF | Basic Program and Data storage |
| @BE00-@BFFF | Reserved for DOS |
| @C000-@DFFF | Interface card expansion ROM |
| @E000-@EFFF | Expansion box ROM |
| @F000-@F3FF | Not used |
| @F400-@F7FF | Character Memory |
| @F800-@FFFF | Screen Page Memory |

### Memory

The COMX-35 has 35 KB of RAM. It consists of 32 KB of User RAM of which roughly 30 KB is available for BASIC code, with the rest reserved for use by the BASIC System ROM. The remaining 3 KB of RAM is used by the Video Interface System.

### Video interface system

The COMX-35 uses the RCA CDP1869 and CDP1870 Video Interface System (VIS), consisting of the CDP1869 address and sound generator and the CDP1870 colour video generator.
The COMX-35 automatically detects the Refresh rate. The VIS runs on 5.626 MHz in PAL and 5.67 MHz in NTSC. This frequency is halved and used to clock the CPU. The VIS is also responsible for the timing of the interrupts and non display period. Video memory can only be accessed during the non display period, which allows for execution of 2160 machine cycles in PAL and 1574 cycles in NTSC. To maximize access to the Video memory, the program can be paused until the non display period by checking EF1 in a loop.
The Video memory is divided into 1 KB RAM page memory and 2 KB RAM character memory. The page memory stores the ASCII code for each character position on the screen. The screen had 960 characters where position 0 (left top corner) could be accessed by memory location @F800 (before scrolling). The character memory stored the character definition of each ASCII character and can be accessed at memory locations @F400-@F7FF.

## Models

The COMX-35 came in two colours, with either a white or black keyboard. Later models also included a monitor port.
A second model called the COMX PC1 improved the keyboard and added a joystick port. A clone known as the Savla PC1 was sold in India.

## Peripherals

The COMX-35 has one 44-pin external connector for additional expansion options in the form of interface cards. A section of memory is reserved for use by any interface card.
The following hardware was available:

### Expansion box

    The expansion box allowed up to 4 interface cards to be connected to the COMX-35. The expansion box also included a firmware ROM connected to memory location @E000-@EFFF which extended basic with commands and logic to switch between different interface cards.

### Floppy disk controller

    The COMX Floppy disk controller allowed connection of 5.25" disk drives. The controller used the WD1770 clocked at 8 MHz. The DOS ROM was selected between address C000-DFFF and was also mapped over address DD0-DDF of the basic ROM. COMX DOS supports 35 tracks for both single and double sided disks and 70 tracks on single sided disks. Every track consisted of 16 sectors and every sector of 128 bytes, resulting in disk files of max 140 KB.

### Printer card

    The COMX Printer card allowed connection of parallel and serial printers. Depending on what type of printer was connected the firmware ROM was selected either with the parallel firmware between memory location @C000-@CFFF and the serial firmware between memory location @D000-@DFFF or the other way around.

### Thermal printer and card

    The COMX Thermal Printer came including a dedicated interface card, printing was done on thermal paper by using a head that with 9 pins which could heat the paper and as such print both text and images. You needed to be careful when writing your own printer drivers, which was needed for graphic printing, as it was very easy to 'burn' the printer head.

### 32K RAM card

    The COMX 32 KB RAM card placed additional RAM from address @C000 to @DFFF, i.e. only one 8 KB bank of the available 32 KB at a time. To switch to a different 8 KB bank the OUT 1 instruction needed to be used via 1802 assembler code. Bit 5 and 6 were used for the RAM bank selection (bit 1 to 4 were used for the expansion box slot selection).

### 80-column card

    The COMX 80-column card added possibility to use basic with a text mode of 80 x 24. The MC6845 was used as video chip.

### F&M Joy Card

    The F&M Joy card was a third-party expansion card which was made in a small quantity. The card had connections for 2 joysticks and came with a simple game and supporting software.

## Software

West Electronics, the company importing the COMX-35 in The Netherlands, provided most of their software for free and without copyrights (or for a small fee for tape, disk and/or shipment). West Electronics also organized different competitions for homebrew software. Homebrew development for the COMX-35 is still active in The Netherlands as a result.
The most popular game on the COMX-35 was 'Worm' (known in The Netherlands as 'Eet een wurm'). This was a very basic adaptation of Snake. Playing the game long enough would eventually cause it to run out of places to place new food, slowing the game down.

## Known bugs

One can crash the COMX-35 by simply typing 65535 as the line number in BASIC.
The BASIC interpreter can be put into a hard-lock by pressing the return key while the 'READY' prompt is displayed. This is because the prompt is treated as a 'READ' command, despite the lack of DATA statements in the program.
The '!' symbol in the character set displays a red dot just above the black dot.

## Emulator

Emma 02 is capable of emulating the COMX-35 along with other systems which share a similar chip-set.