Close
0%
0%

Homebrew CP/M-computer powered by Arduino Nano

Homebrew computer under CP/M with TV Out and PS/2 keyboard powered by Arduino Nano

Similar projects worth following
I want to tell you about my project "cpm4nano" - a complete CP/M system based on 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).

Stay tuned for updates!

Current project shematic:

Current project appearance:


Chars of font:

on LCD TV:

on CRT TV:


Schematics:

TV Out:


FRAM:

Keyboard controller:


Results of successfully passed tests:

DIAGNOSTICS II V1.2 - CPU TEST by SUPERSOFT ASSOCIATES:

CPU Test by Ian Bartholomew:

Kelly Smith Test:

UMPIRE RAM test:


Successfully launched compilers and interpreters of programming languages:

TinyBASIC

CBASIC

compilation:

linking:

running:

Ada

compilation + linking:

running:

Star Trek (wrritten in Ada):

Forth-83

FORTRAN

compilation + linking:

running:


BDS C

compilation + linking:


running:

Videos:



Stay tuned for updates!

  • 1 × Arduino Nano 3.0
  • 1 × STM8S103F3P6 Microprocessors, Microcontrollers, DSPs / Microcontrollers (MCUs)
  • 2 × FM24C256-G Memory ICs / Other Memory ICs

  • 8080/8085 CPU Exerciser

    Alexey Voronin04/11/2021 at 11:21 0 comments

    8080/8085 CPU Exerciser from Ian Bartholomew & Frank Cringles successfully completed (screenshot from TV tuner):

  • nano4tv in action - scrolling!

    Alexey Voronin12/28/2020 at 15:24 0 comments

    Video output unit based on Arduino Nano + 23K256 in action - per-pixel (smooth) and character-by-character (step) scrolling up and down (the signal is recorded with a TV tuner.):   

    A similar approach (Roller RAM) was used in 8-bit Amstrad computers.

  • Video card for "nanocomputer"

    Alexey Voronin12/21/2020 at 21:01 0 comments

    I started a companion project to expand the graphics capabilities of my "nanocomputer". Another Arduino Nano acts as a video card that provides a monochrome image output on TV with a resolution of 320 x 244 (like the Sega Genesis, 240p format)! And this is not drawing lines in the demo format, this is a module with  pixel video memory - I use SPI RAM 23K256 as it. As a basic option, I want to make time-divided access to this chip - during 244 active pixel lines, the video processor owns it, and the remaining 68 lines - the memory can be used by the main processor. Well, now I just for "proof-of-concept" implemented control via UART. This is the picture my video card gives out after loading via UART into video memory - I converted a screenshot from the FoxyLand game for Sega Genesis to monochrome - the picture was taken using a TV tuner (I dug up my old 609 Beholder in the bins):


  • CRT TV video

    Alexey Voronin12/13/2020 at 07:58 0 comments

    I added video recorded from CRT screen:

  • Boot screen

    Alexey Voronin12/11/2020 at 08:39 0 comments
  • I2C indication

    Alexey Voronin12/10/2020 at 17:16 0 comments

    Added indication of access to the I2C bus (in fact, access to FRAM) - an LED that lights up when the SCL line is low. The quick-and-dirty approach to connect the LED through a 2 kOhm resistor did not pass at all - there was not a single memory module on the bus - it turned out to be too strong pull-up, although it worked after 4.7 kOhm, but in 7407 there are free pins, so through this buffer it turned out more reliable.

    Now the RAM "module" schematic looks like this:

  • Redesign

    Alexey Voronin12/08/2020 at 11:21 0 comments

    I did a redesign of the project, now it looks like this:


    Evaluated the influence of the size of the instruction cache on the real speed of the "nanocomputer" operation using the example of the speed of thinking the first move by the machine in MICROCHESS (results for the TURBO mode, the video image was not drawn):

    • without cache - 291 seconds;
    • 4-byte cache (too small, overhead does not pay off and degrade speed) - 580 seconds;
    • cache 8 bytes (optimum) - 21 seconds !!!;
    • cache 16 bytes (too large, the overhead does not pay off) - 26 seconds.

  • i8080-based system emulator on Rust

    Alexey Voronin01/03/2020 at 20:21 0 comments

    A companion project has begun - an i8080-based system emulator on Rust - me select from the list of binary files in the program directory the desired one (for example, BASIC, Minol or chess) and run:

    The emulator successfully passed the famous "exerciser" test:

  • Chess battle

    Alexey Voronin12/23/2019 at 13:44 0 comments

    I started a chess duel between the "nanocomputer" running Microchess (playing white) and the "big" computer with the chess engine Sunfish  (written in Python, written by Thomas Dybdahl Ahle) .
    After 22 moves the situation is as follows:

    As it turned out, the Spanish party was played in the opening, then Black used the Berlin Defense, and White used anti-Berlin.
    All moves and pictures are recorded  here (comments - on russian).

    The game continues :-)

  • Tape in/out

    Alexey Voronin12/15/2019 at 09:00 0 comments

    I added to the "nanocomputer" the possibility of input-output via an audio file or magnetic tape.
    Board for matching voltage levels (classic solution):

    Formats:

    Bits in Audacity:

    Functionality was checked for the linear input and output of a "large" computer with a speed deviation of up to 20%.
    Example (WAV-file with three blocks):
    CAUTION! HIGH VOLUME!

    tape.wav

View all 19 project logs

Enjoy this project?

Share

Discussions

Ken Yap wrote 12/11/2020 at 12:32 point

I like your "case". Very clever. 👍

  Are you sure? yes | no

Alexey Voronin wrote 12/11/2020 at 14:13 point

Thanks!  🦊

  Are you sure? yes | no

KnivD wrote 12/02/2019 at 14:55 point

This must be one of the coolest projects I have seen recently. Great stuff!

  Are you sure? yes | no

Alexey Voronin wrote 12/02/2019 at 15:15 point

Thanks!!! Your PIC18 computer is great!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates