August 2021 Release - 2
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
This is a minor release that:
- integrates the AM9511 arithmetic processing unit (APU) simulation from Fred Weigel at https://github.com/ratboy666/am9511
- adds two (2) new CP/M disk images in support of the AM9511 APU
- adds a virtual paper tape reader and punch device (
PTR:
) to the desktop UI - adds the paper tape device and a fall-through/follow-on feature to the HAL
- updates websockets to overflow gracefully and disconnect
- updates
xybasic.hex
ROM image to enableSAVE
&LOAD
from thePTR:
paper tape device
Firmware updates:
- integrates the AM9511 arithmetic processing unit (APU) simulation from Fred Weigel at https://github.com/ratboy666/am9511
- the AM9511 is located at IO ports
0A2h
and0A3h
for data and control/status respectively - operation is synchronous and blocking
- ie. any command given to the AM9511 (by writing to the AM9511 command port) will run to completion before returning to the caller
- there is no support for DMA or interrupt modes of operation
- execution is typically twice as fast for programs with significant floating point operations
- the AM9511 is located at IO ports
- websockets will overflow gracefully and close if nothing is listening
- the HAL has been enhanced
- includes the new
WEBPTR
device for the PTR:- by default this is now the first device on
SIO2.portA
- ie.
SIO2.portA.device=WEBPTR,UART1
- by default this is now the first device on
- devices have a new attribute called fallthrough
- this is set by appending
+
to the device name inboot.conf
- eg.
SIO1.portA.device=WEBPTR+,WEBTTY,UART0
- eg.
- when fall-through is set for a device the HAL will not stop if this device is 'alive' but will also "fallthrough" to the next device
- e.g. with
SIO1.portA.device=WEBTTY+,UART0
- if the web UI TTY: device is connected it will show the output to the console, but output will also always be sent to
UART0
- Known Issue: there is currently no fall through implemented for carrier detect, but this is not currently a problem as only
MODEM
implements carrier detect
- e.g. with
- this is set by appending
- includes the new
Desktop UI updates:
- Updated GUI Version to
webfrontend-v1.9.3
- Added
PTR:
device, that is both- reader (PTR:) - drag and drop files from local O/S onto tape will produce a tape to read
- punch (PTP:) - use
Download
button to save a punched tape as a file on local O/S - the
PTR:
sends at a maximum speed of 50cps, this was the speed of the Heathkit H-10, faster than an ASR-33 (10cps) but not as fast as a modern high-speed reader (400cps) Read
button sends tape contents to PTR: (only if device is connected)- will only send if the PTR: is connected (Green plug in the window title bar)
- if nothing is listening to the PTR: the websocket will overflow gracefully and close (Red plug in the window title bar)
EOF
button sends a0x1A
to PTR: as this is sometimes required to let CP/M know it is the end-of-fileClear
clears the tapeGo
sends a0x0D
to PTR: as this is sometimes required to let CP/M know start sending- Known issue: sending to PTP: appends to the end of the tape and can cause an endless-loop if both reading (PTR:) and punching (PTP:) simultaneously
Disk image and ROM image updates:
- xybasic.dsk
- Mark Williams Company XYBASIC - ref: http://www.nesssoftware.com/home/mwc/XYBASIC.php
- with CP/M versions for binary, BCD, and AM9511 accelerated floating point arithmetic
- and a number of sample BASIC programs (
*.XYB
) to demostrate floating point performance - possibly the only surviving application with native AM9511 support under CP/M
- apu.dsk
- AM9511 support library for Microsoft FORTRAN-80 by Fred Weigel at https://github.com/ratboy666/apu
- xybasic.hex
- this is the XYBASIC ROM image (by default:
ROM5
inboot.conf
) - this update enables
SAVE
&LOAD
to & from thePTR:
paper tape device
- this is the XYBASIC ROM image (by default:
The bundle is made of three parts:
- The FIRMWARE for the ESP32-PICO-KIT
- The IMAGE for the microSD card
- An update.bin file for updating the desktop GUI, disk and ROM images
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle if upgrading from v1.8.x
and the update.bin
file to update the desktop GUI to v1.9.3
, update the XYBASIC ROM image and add the two (2) new disk images
NOTE: The two (2) new disk images are named:
- xybasic.dsk
- apu.dsk
these will overwrite any existing disk image with the same name.
You can simply drag-and-drop the update.bin
file onto the SYS: icon on the desktop GUI. When the upload is complete, reboot the ESP32 and the update will be identified, unpacked and installed. Watch the output on the boot console (typically via USB port @ 115200 8N1) to see the process proceed.
FIRMWARE
The FIRMWARE package is a ZIP file containing 6 files
COPYRIGHT.txt
FLASHING.md
bootloader.bin 22K
imsai_part_table.bin 3.0K
imsaisim_esp32.bin 998K
ota_data_initial.bin 8.0K
Instructions for flashing the firmware to an existing system are included in the Updating Software guide
The FLASHING.md file contains instructions for flashing the firmware to a new ESP32-PICO-KIT
IMAGE
The IMAGE package is a ZIP file of the complete contents of the microSD card and can simply be unzipped onto a newly formatted (FAT32) microSD card with a capacity of 128MB or greater.
Known Issues
- There is no UI for changing hard disk images, the required image must be set using the environment variable
HARDDISK
in theboot.conf
file and then the ESP32 hard reset to reload the environment. - The
boot.conf
file can't include a#
in PASSWORD. The occurrence of#
at any point on any line indicates the start of a comment. - A race condition can occur when the 'AT' Modem is used as the CP/M console device
CON:
. This will cause a buffer overflow and the IMSAI8080esp will reboot. To avoid this race condition, always use the newAT&A1
"daemon" (silent) mode - In the HAL there is currently no fall through implemented for carrier detect, but this is not currently a problem as only MODEM implements carrier detect.
- Sending to PTP: appends to the end of the tape and can cause an endless-loop if both reading (PTR:) and punching (PTP:) simultaneously.