CRISS CP/M Project Status
CRISS CP/M is the special open project with the main goal: to do really 8 bit homebrew personal computer that can be assembled without any development boards, MCU platform, etc. It must be a computer that anyone can solder from the heap of IC chips and some MCUs. And it must not be "retro" computer, it should be modern computer for hobbyist having basic skills in the electronic.
To make this computer comfortable and useful there were postulated some basic rules:
- it should be single-board device - as simple as possible;
- there must not be any 0.5mm SMD components - don't think that everybody can mount them;
- as few components as possible - balancing complexity and functionality;
- it should be computer no "custom" interfaces and internals: standard (means one producing or easily purchasable now) monitor, keyboard and printer must be supported, standard OS is assumed;
- computer should have clear internal architecture;
- the project should be open hardware and open software;
- and it should not be just a funny toy, it should allow some practical use
CRISS CP/M did this trick. Almost all already done but work is is still in progress, please refer to this page concerning project steps.
To make this computer comfortable and useful there were postulated some basic rules:
- it should be single-board device - as simple as possible;
- there must not be any 0.5mm SMD components - don't think that everybody can mount them;
- as few components as possible - balancing complexity and functionality;
- it should be computer no "custom" interfaces and internals: standard (means one producing or easily purchasable now) monitor, keyboard and printer must be supported, standard OS is assumed;
- computer should have clear internal architecture;
- the project should be open hardware and open software.
CRISS CP/M did this trick. Almost all already done but work is is still in progress, please refer to this page concerning project steps.
Developing
Project has started in 2020, thanks to the lockdown. The basic principles were clear: CP/M and the set of AVR MCUs. But there were some challenges that have to be solved:
- Z80 emulation: AVR and Z80 have totally different code systems, so it was an interesting task how to emulate 4MHz Z80 using 20 MHz AVR;
- VGA controller: are you ready to build 25 MHz device using 20 MHz CPU? But this task was solved without overcloking and 25x80 characters monochrome VGA output appeared;
- internal structure: internal bus, internal ports, etc. and make all this stuff fast enough;
- to do a PCB that can be made at home: CRISS CP/M PCB has only 2 sides and 0.5mm tracks!
To the end of the 2020 computer was created, first time assembled, Z80 emulator passed "z80 Instruction Exercizer" test and that was a real win. The famous and leading Russian journal "Radio" requested one for testing and after that announced CRISS CP/M it in the iss. 12/2020!
From the January to March 2021 there was a hard work polishing it: making drawings for the panels (panels you see now is 3rd generation!), removing bags from the PCB (18th generation), refactoring ths firmware (there are 4 MCUs on the board!), etc.
Current status of development: 100% hardware stable version, just enjoy it!
Publishing
CRISS CP/M is open project and all its details will be published for free use. This work is permanently in progress but it will be done.
Subject | Description | Status | Date |
---|---|---|---|
First local announcement | Announcement in Russian Radio journal | Published | December 2020 |
Detailed description | The most detailed description appeared in Russian Radio journal, only Russian language, sorry! | Published | January-June 2021 |
Support website | www.criss.fun website launched during May 2021 collects all info and software for the project | Supporting up-to-date | May 2021 |
International announcement in English | The project page at HACKADAY.IO launched | Supporting up-to-date | August 2021 |
International support in English | English version of the www.criss.fun website appeared | WIP | September 2021 |
DIY kits | DIY kits for self-assembling | Ready to order | September 2021 |
TINDIE shop | DIY kits for self-assembling at TINDIE shop | Coming soon | October 2021 Expected |
Firmware | Firmware and bootloaders for the MCUs | Published wt www.criss.fun | May 2021 |
Firmware source code | Firmware and bootloaders source codes for the MCUs | Publishing now at github.com | October 2021 Expected |
BIOS customization
The most advantage feature of CRISS CP/M computer is that all BIOS, BDOS and CCP procedures are supposed to be written on the level of CPU MCU firmware that would give unbelievable 60 Kb TPA, great performance and "native" communication with modern technologies.
Currently OS CPM 2.2 is 100% handles by the AVR code, next step will be CPM 3.0 support. All functions support CRISS CP/M hardware. For the user programs standard method af BIOS calls is used.
Function | Name | Features/ Enhancements | Location | Date |
---|---|---|---|---|
0 | BOOT | Cold start, returns to CCP | FW | March 2021 |
1 | WBOOT | Warm start, returns to CCP | FW | March 2021 |
2 | CONST | Console status | FW | March 2021 |
3 | CONIN | Console input - can be mapped to UART, LPT or LAN channels for remote control | FW | March 2021 |
4 | CONOUT | Console output - can be mapped to UART, LPT or LAN channels for remote control | FW | March 2021 |
5 | LIST | Printer output - can be mapped to UART, LPT or LAN channels | FW | March 2021 |
6 | PUNCH | User device output - can be mapped to UART, LPT or LAN channels, may be used for LAN communication between two CRISS CP/M computers | FW | March 2021 |
7 | READER | User devise input - can be mapped to UART, LPT or LAN channels, may be used for LAN communication between two CRISS CP/M computers | FW | March 2021 |
8 | HOME | Home FDD - does nothing | FW | March 2021 |
9 | SELDSK | Select disk | FW | March 2021 |
10 | SETTRK | Set track | FW | March 2021 |
11 | SETSEK | Set sector | FW | March 2021 |
12 | SETDMA | Set DMA buffer address | FW | March 2021 |
13 | READ | Read 128b sector - can be mapped to UART, LPT or LAN channels | FW | March 2021 |
14 | WRITE | Write 128b sector - can be mapped to UART, LPT or LAN channels | FW | March 2021 |
15 | LISTST | Printer status - can be mapped to UART, LPT or LAN channels and may be used to read data from RS-232 LPT channel | FW | March 2021 |
16 | SECTRAN | Sector translation - does nothing | FW | March 2021 |
BIOS code level also is responsible for the hardware terminal emulation: console and printer i/o routines call special hardware compatibility firmware library.
BIOS for the CP/M 3.0 is coming!
BDOS customization
After the BIOS next step is to move BDOS on the AVR level, Work is in progress, it is not so clear how to implement CP/M filesystem behavior because many programs use internal data structures directly. Coming soon, hope that it will be done till the end of 2021.
CCP customization
After the BIOS and BDOS the next step is to move CCP on the AVR level and expand it with new functions. Work is almost done, but waiting for BDOS is processed. Coming soon, hope that it will at November 2021.
Feb 2022: custom CP/M build with sources is published!
Hardware support
CRISS CP/M has its own terminal settings but it also may pretend to be another hardware platform. For the each platform for following processing is applied:
- esc-sequences for console output;
- custom character set with symbols decoding;
- standard ports behavior emulation.
The only strict limitation is that video-RAM is always located at F800h.
Many thanks to all people who have spent time and efforts and carefully preserve for us technical data and spirit of first personal computers and shared this information in the Internet!
Supported terminals for now (text mode only!):
Terminal | Supported features | Known problems |
---|---|---|
CRISS | All features | No |
Robotron PC1715 | ESC-sequences, port 12, inverse attribute (console output only), Russian codepage | Brightness and blinking attributes |
Kaypro II | ESC-sequences, inverse attribute | Brightness and blinking attributes, some programs don't work correctly, need help to resolve that |
TRS-80 | ESC-sequences, inverse attribute | Brightness and blinking attributes, some programs don't work correctly, need help to resolve that |
Author would kindly appreciate any support concerning improvement of hardware terminal compatibility!