Sept. 21, 2019: A New, Custom-designed Z-80 SBC (Single Board Computer) locally designed and manufactured. I got the Z80 and SIO and PIO, clock, and memory chips from Mouser a few days back. And yesterday, the board designer flashed the EPROM with a small "monitor" program which allows code to be dropped into the RAM on the board. Today, I was able to load a Basic interpreter into the Z80's RAM, and then load a tiny program that just jumps to the start of the location where the binary Basic file was loaded to, and suddenly, we have a working computing machine. I've christened it the "NorthStar DC-Z80 SBC Pr-8" (it was eighth revision of the prototype). I think it's the coolest thing I've played with in years.

"Ghost Fleet" circuit, pg 1. This is created using KiCad. Simple, tractable, testable, and knowable. This is the schematic for the actual "NorthStar" Z80 board I am now experimenting with.



Ok, lets get the little "NorthStar" board doing something that might be useful. I've converted a Fortran Matrix-Multiply program to MS-Basic, and built a couple of little tools to load a program into memory, and then run it with a realistic data file that describes a couple of matricies to be multipied. Being able to multiply matrix values is useful if you want to iterate thru a neural-network model, and generate the output result from your input data. The little matrix-multiply procedure works on the Z80, and its result matches the Fortran program. Now, to extend it to calculate inverse matricies, and solve a linear-equation system.

Example of Gauss-Jordon "Solver" running on Z80. (the white background screen). Here, it solves a simple system that appears on the Wikipedia page for "Simultaneous Linear Equations" and the matrix algebra representation.

More hacking with the prototype Z80 "NorthStar" SBC (Single Board Computer). Now driving an old "Practical Peripherals" modem (that little beige box, between the Z80 and the old laptop.) The Z80 can now call my cell-phone using the old modem. Dining-room table hacking, using an ancient (but crazy-solid) old laptop, an Android tablet, and an old modem. A 20-line Basic program is all that is needed operate the modem, and dial up to my cell-phone. Who needs the internet!? We can use the POTS (Plain Old Telephone System) - ie. 19th-century technology. (Anyone remember the magazine "2600"?) :D



MMX Hack. Old Pentium MMX running MS-DOS and APL. I just converted this old Mandelbrot program from 16-bit to 32-bit APL. The picture on the new monitor took over 1 hour to generate. It's a good exercise of the MMX processor. MMX stood for Matrix Math eXtensions - but Intel said no, it didn't really stand for anything (so they could TradeMark the name.) Intel Pentium chips with MMX are fine technology, and work very well. The guy with the best and fastest math wins. (See my Oct. 11, 2019 note below.) I can use Kermit on this MS-DOS Pentium board to connect to the Z80 board thru the MS-DOS board serial port.

Z80 Matrix Solver matches FORTRAN5 Solver, but BOTH are different from the APL Solver results APLwin and SAPL. WHY?

Z80 Solver (in MS-Basic) matches FORTRAN5 Solver, and BOTH MATCH the APL results. Compare with previous screen. Spot the difference? It is 2nd matrix, row 5, col. 2, which was 743 in the APLs, and 734 in FORTRAN and Z80 Basic examples. This result was done on Windows-XP machine, and matches results from 64-bit CentOS-7 machine, where FORTRAN5 runs in DOSbox,and APLwin runs under WINE.

The Z80 MS-Basic runs on bare hardware, and does its 32-bit floating point calcs in software. On the Z80, in 8K MS-Basic, the SOLVER example takes about 2 seconds to run.

The Z80 results are visible in window on lower-left of screen image, via the Termite program. The 8K MS-Basic is loaded as a "packet" file by simply copying RAMBASIC.PKT to the COM4 port.

The Z80MON monitor program loads the .pkt file to location 2000h. A Z80MON command "C" prompts for a hex starting address. You enter ">C", press return, enter 2000, press return, and the Basic Interpeter says hello. You can then copy SOLVER.BAS to COM4 port, slowly. (I have little batch line-by-line file copy with a "ping -n 1 127.0.0.1" (a ping to self) between each line written to COM4.

The Windows-XP laptop had to have the FT232R USB driver installed, so it could use the COM4 port to communicate with the Z80 "NorthStar" board. That driver was found at site: https://www.usb-drivers.org/ft232r-usb-uart-driver.html . The RAMBASIC.PKT file is loaded into the Z80 with a WinXP CLI command: copy /B rambasic.pkt com4: /B

The RAMBASIC.PKT file is simply the compiled binary image that results from a ZASM compile of the BASIC.ASM (a modified 8K MS-Basic program, written in 8088 assembler, modified to operate on this particular Z80 board). The "start-pkt" and "end-pkt" characters bracket the RAMBASIC.bin binary to create RAMBASIC.PKT, and are simply ASCII SOH (start of Header) and EOT (End of Transmission), or simply binary chars 0x1 and 0x4. (I believe. I will check with DEBUG)

I remain seriously impressed that a bag-o-parts from Mouser can be turned into a matrix-inverting and equation-system solving machine!

The Z80 can now be run from another experimental board, the Pentium MMX, which runs MS-DOS. The same matrix math calculation is done on the Z80, with the results displayed in a Kermit screen-session, running on the MMX and MS-DOS 5.0. Without the overhead of "Windows", the Pentium MMX board can run very fast, and with hardware mods to the MMX board serial ports, MS-DOS (and programs running under it) can successfully communicate with the Z80 SBC. The matrix-math example here is the same shown in in the photo before this one. [Oct. 15, 2019]

The Z80 running in Kermit session on MMX Pentium board, under MS-DOS 5.0. It was quite a trick to get MS-DOS to communicate sanely thru the serial port to the Z80. Loading the RAMBASIC interpreter required tweaking the MMX/DOS-5 board hardware. RS232 pins CTS, DSR and DCD need to be strapped to DTR, so the MS-DOS O/S can "see" the serial port. Once this hack is made, it becomes possible to copy the binary packet file that contains the MS-Basic interpreter from the MMX box to the Z80 NorthStar board (in box at screen right). With the MS-Basic running, I can run an MS-Fortran 5.1 program that copies Basic programs to the Z80. One such program is the Matrix-multiply and Solver program. Once it is loaded, files that contain matrix definition data can be copied to the Z80, and results displayed. The first record of the matrix file can simply be "run", and the Z80 will operate as a little asynchronous appliance that can process matrix-math data and display the result in the Kermit session screen. The "eMachines" monitor shown here cost $5.99 at the local Value Village store. (Works quite nicely) :)

Little "NorthStar" Z80 SBC Running a Ripple Pattern.

Cool running. Little Z80-SBC (single board computer), designed & built locally, running a ripple pattern on the on-board display. We can load code to and save from, the little 56K memory area. Program Z80MON written using "zasm" assembler, allows reading and writing to RS-232 serial port. Currently, uses the Linux "screen" program to communicate with it. Not fast (only 10mhz), but runs Microsoft Z80 Basic, which can do floating-point calcs, and it fits in 8K! With the Z80MON in first 8K of ROM, the MS-Basic can be loaded and still offers 48K of user space - enough to do a little matrix multiplication. I believe the Zilog chips are manufactured in the Phillipines. Leaks no detectable RF, has no radio circuits, not even a video driver on the board. Real "Ghost Fleet" technology, it is. :)