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 i8080 processor, 64 KBytes RAM+additional banks, 4 FDD;
- loads the OS CP/M and runs its programs;
- exchanges information with PC on the serial port, including uploading files to the emulator using the XMODEM protocol;
- with the help of the converter PS/2-UART allows you to enter information from the keyboard;
- displays text information on the TV screen (20 rows with 45 cols) (without jitter!).
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:
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:
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.
left virtual screen
right virtual screen
Current state of project:
Detailed description (in Russian) - https://acdc.foxylab.com/node/76