CP/M system with PS/2 keyboard, TV Out powered by Arduino Nano - Page 1
Forum section: electronics / general

author: FoxyLab
author_rank: Contributor
timestamp: October 28, 2019, 04:30:25 pm
content: Hello!!!I want to present to you my vintage computing related projectcpm4nano- a complete CP/M system based on Arduino Nano 3.0.Currentlyone Arduino Nanoin my project:- emulates the Intel 8080 processor (all tests succesfully executed), 64 KBytes RAM (with two FRAM chips) + 4 FDD (with SDHC card);- with the help of the PS/2-UART converter on STM8 allows you to enter information from the keyboard;- displays text information on the TV screen (20 rows with 45 cols) without jitter (with duplication of information to the PC through serial channel);- receives data from the PC through serial channel (and uploads files from the PC using the XMODEM protocol);- loads the OS CP/M and runs its programs.Chars appearance:on LCD TV:on CRT TV:StarTrek game on CRT TV:Ada compiler in action (on terminal program):Some CPU tests (on terminal program):Video (start, CP/M loading, CPU test, Tiny Basic) (on terminal program):https://youtu.be/Yuq1yEH-WZ8Project homepagehttps://acdc.foxylab.com/node/76- on russian, but if you are interested, then I can tell you more about this project.

author: alpher
author_rank: Frequent Contributor
timestamp: October 28, 2019, 04:54:16 pm
content: Love the "case",

author: FoxyLab
author_rank: Contributor
timestamp: October 28, 2019, 05:08:25 pm
content: Quote from: alpher on October 28, 2019, 04:54:16 pmTrue handmade

author: rrinker
author_rank: Super Contributor
timestamp: October 28, 2019, 06:56:59 pm
content: Needs must - it's like this temporary control panel I had on my model railroad - which lasted until I tore it down to move.

author: FoxyLab
author_rank: Contributor
timestamp: October 28, 2019, 07:21:28 pm
content: Sides of the case:

author: worsthorse
author_rank: Super Contributor
timestamp: October 28, 2019, 09:09:29 pm
content: This is pretty awesome. Nice work! Are you going to post a project description somewhere?

author: FoxyLab
author_rank: Contributor
timestamp: October 28, 2019, 09:36:29 pm
content: Quote from: worsthorse on October 28, 2019, 09:09:29 pmThanks!The most complete description is pagehttps://acdc.foxylab.com/node/76in my site (in Russian), but it is not relevant in everything because of frequent updates to the project.I will make a separate project page in English.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: October 29, 2019, 02:23:26 am
content: Hmm, is that emulating in real time?I mean -- I'm thinking the AVR is quite a bit more powerful, so it should be able to run nearly real time, or faster. Though probably not accurate down to the cycle. Does look a bit slow in the video.What about hardware, is that handled by BIOS, or is period-appropriate hardware being emulated too? Guess I should just sit down and read the translation..Tim

author: FoxyLab
author_rank: Contributor
timestamp: October 29, 2019, 06:27:56 am
content: Quote from: T3sl4co1l on October 29, 2019, 02:23:26 amTwo factors influence the slowdown of the emulation speed:* rather slow access to I2C FRAM - the selection of one byte takes 400 machine cycles of AVR (I accelerate this access using the instruction cache)* a significant part of the processor time of the microcontroller is spent on generating a video signal - as in the good old ZX80 :-)BDOS and CCP - CP/M-original, but I intercept BIOS function calls.

author: wilfred
author_rank: Super Contributor
timestamp: October 29, 2019, 07:27:15 am
content: Nice work.Is there a link to the Arduino code somewhere? I tried looking and couldn't seem to find it.

author: FoxyLab
author_rank: Contributor
timestamp: October 29, 2019, 09:28:42 am
content: Quote from: wilfred on October 29, 2019, 07:27:15 amProject is in active phase now, frequently updates. Later i will upload HEX and ELF files.

author: T3sl4co1l
author_rank: Super Contributor
timestamp: October 29, 2019, 06:21:52 pm
content: Oh, yuck! Get an SPI or parallel FRAM, stat!Tim

author: wilfred
author_rank: Super Contributor
timestamp: October 29, 2019, 11:33:23 pm
content: Quote from: FoxyLab on October 29, 2019, 09:28:42 amIf you aren't sharing the source code you will eliminate people who want to use different hardware or make their own changes. One example is the external RAM and using a Z80 emulation.But it is up to you.

author: FoxyLab
author_rank: Contributor
timestamp: October 30, 2019, 02:19:47 am
content: Quote from: T3sl4co1l on October 29, 2019, 06:21:52 pmI have 23K256 SPI RAM, but i want to try use this chip as VideoRAM in sequential mode.

author: FoxyLab
author_rank: Contributor
timestamp: November 09, 2019, 04:11:46 pm
content: PS/2-UART converter circuit for connecting a PS/2 keyboard:Additional options -page mode (scroll lock) - controlled by the Scroll Lock key with LED indication;russian letters input in KOI-8R encoding - switching the language with the Alt-Shift keys combination with an LED indication;hardware reboot with Ctrl-Alt-Del keys combination

author: FoxyLab
author_rank: Contributor
timestamp: November 13, 2019, 10:16:07 pm
content: 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 screenright virtual screen

author: FoxyLab
author_rank: Contributor
timestamp: October 11, 2021, 07:35:52 am
content: My homebrew Arduino Nano-based CP/M computer in action (recording with TV tuner):power onmemory testCP/M loadingDIR commandvirtual screens toggleCPU testBASIChttps://youtu.be/NxQ2Omf0swM