Project in progress
Arduino Nano as CP/M-Compatible Computer

Arduino Nano as CP/M-Compatible Computer © CC BY-NC-SA

cpm4nano - CP/M-compatible computer based on Arduino Nano.

  • 23,905 views
  • 23 comments
  • 40 respects

Components and supplies

Ard nano
Arduino Nano R3
×1
Sd deck 585px 42avl2pfca
Bitcraze Micro SD card deck
×1
FM24C256
×2
74LS07
×1
STM8S103F3P6
×1

Necessary tools and machines

09507 01
Soldering iron (generic)
Hy gluegun
Hot glue gun (generic)

About this project

I will begin here with a description of my project cpm4nano - a CP/M-compatible computer based on the Arduino Nano 3.0.

Currently one (!) Arduino Nano (!) in my project:

  • emulates the Intel 8080 processor, 64 KBytes RAM (with two FRAM chips) + 4 FDD with 100 diskettes (with SDHC card);
  • with the help of the PS/2-UART converter on STM8 allows you to enter information from the keyboard (allows you to switch English/Russian languages, upper/lower case, enable lock for scrolling text on screen);
  • displays text information on the TV screen (20 rows with 40 cols or 80 cols on two virtual screens, between which you can switch) without jitter (with duplication of information to the PC through serial channel);
  • receives/sends data from/to the PC through serial port via XMODEM;
  • data input/output via magnetic tape or audiofile;
  • loads the OS CP/M and runs its programs (including BASIC, C, ADA, FORTH, LISP, FORTRAN, FOCAL, MINOL).

Project in progress!

Displaying the font on the TV screen after the redesign and adding symbols of the pseudographics and Russian letters in the KOI-8 encoding:

LCD TV

CRT TV

For example, the "screenshot" of the TV screen shows the results of the DIR command and the CPU tests:

The position of the next character when displayed on the TV screen is indicated by a hardware underline cursor:

VIrtual screens

I overcame the limitation of the physical resolution of the video output of my "nanocomputer" (45 columns) in the style of the Osborne 1 portable microcomputer - using two virtual screens.

The contents of the current virtual screen are stored in video memory (microcontroller RAM), and the contents of another virtual screen are stored in the main memory (I2C chips).

Screens are located horizontally, the resolution of the virtual screen is 40 columns and 19 lines + 1 status line:

Thus, virtual screens emulate a physical screen with 80 columns (Osborne emulated a physical screen with 128 columns through overlapping virtual screens with a width of 56 columns).

Switching modes (physical screen / virtual screens) is carried out from the monitor program.

Switching between virtual screens is done by the CTRL-O key combination.

Example:

left virtual screen

right virtual screen

Running game StarTrek (output on CRT TV):

BASIC compiler (CBASIC):

compilation:

link:

run:

Altair BASIC 8K:

FOCAL interpreter:

Ada compiler:

LISP/80 interpreter:

Video Demo:

Current state of project:

Detailed description (in Russian) - https://acdc.foxylab.com/node/76

Schematics

Project schematics:
Cpm4nano mkv rjqlckxzg5
FRAM schematic
Cpm4nano fram xgu9wwu8xz
Keyboard controller
Keyboard controller schematic
Cpm4nano stm8 uunnmgjfny
TV-out
TV-out schematic
Cpn4nano tvout mk1 rv3la5g7hn
Audio In/Out
Audio In/Out schematic
Cpm4nano tape ckt t9joigurpm

Comments

Similar projects you might like

The Nano VIC-20

Project tutorial by Jan Ostman

  • 8,145 views
  • 3 comments
  • 25 respects

Smart Coffee Table with Nano and HX711

Project tutorial by TheTNR

  • 3,717 views
  • 1 comment
  • 12 respects

Omega Flight Computer

Project in progress by UniverseRobotics

  • 1,832 views
  • 2 comments
  • 5 respects

How to Make a Mini Oscilloscope at Home Using Arduino Nano

Project tutorial by CiferTech

  • 7,747 views
  • 5 comments
  • 30 respects

Onboard computer for bicycle

Project in progress by Pararera

  • 5,964 views
  • 16 comments
  • 21 respects

ESP01 Webserver to Control Your Arduino UNO, Mega or Nano

Project tutorial by adamsstephen

  • 4,914 views
  • 3 comments
  • 17 respects
Add projectSign up / Login