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:


PS/2-UART converter:


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

  • 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

  • Microchess

    Alexey Voronin12/06/2019 at 05:51 0 comments

    Microchess program made by Peter R. Jennings in 1977 successfully launched on my "nanocomputer":


    On my first move the pawn
    program responded with a knight move

  • FOCAL

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

    Interpreter FOCAL running on my "nanocomputer":

  • Altair BASIC 8K

    Alexey Voronin11/24/2019 at 20:26 0 comments

  • LISP/80

    Alexey Voronin11/20/2019 at 18:34 0 comments

    Launched on the "nanocomputer" LISP/80 interpreter version 1.1 from Thomas W. Yonkman:

    Here is a note about this interpreter in BYTE magazine:

  • Virtual screens

    Alexey Voronin11/13/2019 at 22:18 0 comments

    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

  • Memory dump from monitor

    Alexey Voronin11/06/2019 at 06:29 0 comments

    Screenshot from CRT TV:

  • Sides of the case

    Alexey Voronin10/28/2019 at 19:24 0 comments

View all 12 project logs

Enjoy this project?

Share

Discussions

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