Releases: thehighnibble/firmware
August 2024 Release
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
If you are upgrading from a firmware release older than v1.10.0
then please upgrade to v1.10.0
first referring to the v1.10.0 release notes carefully with respect to updating the µSD card image.
This is a minor release that:
- Adds IMSAI PIO-4 functionality to the IMSAI8080
- Updates Cromemco Cyclops digital camera ACC: device functionality
- Updates Cromemco Dazzler graphics display DZLR: device functionality
- Fixes a problem where the contents of the SYS: device might not display on the Desktop UI or S-132 add-on
Firmware updates:
- Update Firmware Build Version to
v1.13.0
- Adds IMSAI PIO-4 functionality to the IMSAI8080:
- emulated IMSAI PIO-4 interface card (via CP-A overload/overlay)
- see https://www.s100computers.com/Hardware%20Manuals/IMSAI/IMSAI%20PIO%20Manual.pdf
- only implements I/O Mapped mode
- I/O ports fixed to 0xF8 to 0xFB for ports 0 - 3
- all 4 input and output ports are "available" but mapped to the CP-A front panel as follows:
- output port 0 -> Status Byte LEDs
- output port 1 -> Address Bus LEDs 8-15
- output port 2 -> Data Bus LEDs
- output port 3 -> Address Bus LEDs 0-7
- input port 0 -> Address-Data Switches 0-7
- To enable the PIO-4 to control the CP-A LEDs, in the
boot.conf
file setCPA.PIO4=1
- then input to Port0 is "free running" ie. continuous from A0-A7 address-data switches
CPA.PIO4=2
- then then input to Port0 is "latched" by lifting or pressing DEPOSIT or DEPOSIT NEXT
- Additional notes:
- PIO-4 only controls the LEDs when RUN is lit
- When WAIT is lit, normal CP-A LED display is observed
- When in RUN state, you can press/lift EXAMINE and while it is held, normal CP-A LED display is observed
- Just like the Programmed-Output (port 0xFF) the LEDs are inverted relative to the data values written to the I/O port
- This was at the request of a community member @gohills who wanted to be able to control all the CP-A LEDs under program control on the Z80/8080.
- Updates Cromemco Cyclops digital camera (ACC:) device functionality:
- The ACC: device now updates memory using emulated DMA and will light the
HOLD
LED on the CP-A frontpanel as this happens - The ACC: device now is correctly reset on
EXT.CLR.
- The ACC: device no longer hangs-up the emulation when the WebSocket is disconnected on the (Web) Desktop UI
- The ACC: device now updates memory using emulated DMA and will light the
- Updates Cromemco Dazzler graphics display (DZLR:) device functionality:
- the Dazzler behaviour now more accurately emulates the original Cromemco Dazzler hardware
- performance of screen updates has been improved, significantly reducing the likelihood of dropped frames or update artefacts
- NOTE: These are breaking changes that mean the Dazzler device will only work when :
- The (Web) Desktop UI has been updated to v1.14.0 or greater (see below)
- and if using the S-132 add-on, the S-132 firmware has been update to V1.7.0 or greater, see the S-132 Release Notes
- Fixes a problem where the contents of the SYS: device might not display on the Desktop UI or S-132 add-on:
- the SYS: device contents are transmitted in a JSON format
- previously, strings were not encoded and made JSON "safe"
- this was particularly obvious if an entry in the
boot.conf
file contained a special character like"
as might occur in the WiFiPASSWORD=
entry - all strings are now encoded and made JSON "safe" by escaping special characters
Desktop UI updates:
- Update GUI Version to
webfrontend-v1.14.0
- Updates Cromemco Cyclops digital camera ACC: device functionality
- only close WebSocket when ACC: not running
- only process video when ready
- handle a dead WebSocket gracefully
- don't smooth processed image preview
- Updates Cromemco Dazzler graphics display (DZLR:) device functionality:
- implement control bit to turn Dazzler on/off
- refresh display based on a VSYNC message sent by the host rather than locally determined
- NOTE: These are breaking changes that mean the Dazzler device will only work when the IMSAI8080 or Cromemco Z-1 is running firmware V1.13.0 or greater (see above)
- WARNING: These are breaking changes that mean the Dazzler device will not work with Z80PACK on other platforms until the backend changes are back-ported to Z80PACK
Disk image updates:
- Disk images for the IMSAI8080 and Cromemco Z-1 are unchanged
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
FIRMWARE
The FIRMWARE package is a ZIP file containing 7 files
COPYRIGHT.txt
FLASHING.md
bootloader.bin 23KB
cromemcosim_esp32.bin 899KB
partition-table.bin 3KB
imsaisim_esp32.bin 907KB
ota_data_initial.bin 8KB
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle to run the IMSAI8080 machine.
You only need the cromemcosim_esp32.bin
file from the FIRMWARE bundle to run the Cromemco Z-1 machine
You can switch between machines by 'updating' to the firmware of the other machine by a drag-and-drop of the appropriate *.bin
file to the SYS:
device icon on the desktop, see Upload (flash) the firmware to the ESP32
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.
If upgrading from a release of the IMSAI8080esp firmware prior to v1.10.0
then please upgrade to v1.10.0
first referring to the v1.10.0 release notes carefully with respect to updating the µSD card image.
If you only need to update the Desktop UI from v1.13.x
to v1.14.0
- Download the attached
update.bin
file to your PC - Drag-and-drop the
update.bin
file from your PC to theSYS:
icon on the Desktop UI of your IMSAI8080esp or Cromemco Z-1 - Reboot the ESP32 (reset or power-cycle) and the update will be installed on the µSD during the boot process
Known Issues
- There is no UI for changing hard disk images, the required image must be set using the environment variable(s)
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.
June 2023 Release
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
If you are upgrading from a firmware release older than v1.10.0
then please upgrade to v1.10.0
first referring to the v1.10.0 release notes carefully with respect to updating the µSD card image.
This is a minor release that:
- Focuses on stability and performance improvements
- Fixes bugs
- Enables disk images to be renamed in the
LIB:
window on the Desktop UI
Firmware updates:
- Update Firmware Build Version to
v1.12.0
- Updated build environment to Espressif IDF
v4.4.4
- providing significant improvements in:
- memory utilisation
- speed and performance
- network stack performance & stability
- webserver and websocket server performance & stability
- anecdotally:
- peak simulated CPU speed has been observed to be as high as 5.9MHz (when set to unlimited)
- improved response from the front panel LEDs
- speed of Dazzler demos such as
gdemo.com
andkscope.com
are now noticeably smoother and faster- even when rendering on both the Desktop UI and the S-132 hardware Dazzler simultaneously
- providing significant improvements in:
- Fixed a bug that could cause a reboot if the VIO ROM was not loaded and the IMSAI was in PWR.OFF state
- When operating with Wi-Fi in AP mode the DNS server task is stopped early to prevent DDoS from both Windows and macOS
- both Windows and macOS launch significant and unnecessary DNS requests towards the ESP32 when in AP mode
- this was overwhelming the ESP32, degrading network performance or causing the ESP32 to reboot
- the DNS server task is now stopped when the httpd webserver responds to the first GET file request
- it will only be restarted on the next reboot of the ESP32
- this is usually sufficient for the DNS server to perform its role and provide the IP address of the ESP32 to a single connected client
Desktop UI updates:
- Update GUI Version to
webfrontend-v1.13.4
- Fixed a font scaling issue in Chrome (and Edge) that effected the correct display of window title bars
- this was only noticeable if you changed the default font size for the browser
- thanks to @GrantMeStrength for pointing this out
- Attempted to fix the anchoring of windows to icons when first opened
- improved but not always accurate
- Rename of disk images in
LIB:
now works as expected (same as forTAPE:
)- double-click the text of a disk image name and edit in-place
- can be aborted with Escape key (
<ESC>
) - you cannot rename a disk image that is currently mounted
- Fixed the name of the Cromemco D+7A IO manual in
MAN:
- previously contained a special/non-printable character that should have been a
<sp>
(Space)
- previously contained a special/non-printable character that should have been a
Disk image updates:
- Disk images for the IMSAI8080 and Cromemco Z-1 are unchanged
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
FIRMWARE
The FIRMWARE package is a ZIP file containing 7 files
COPYRIGHT.txt
FLASHING.md
bootloader.bin 24KB
cromemcosim_esp32.bin 919KB
partition-table.bin 3KB
imsaisim_esp32.bin 926KB
ota_data_initial.bin 8KB
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle to run the IMSAI8080 machine.
You only need the cromemcosim_esp32.bin
file from the FIRMWARE bundle to run the Cromemco Z-1 machine
You can switch between machines by 'updating' to the firmware of the other machine by a drag-and-drop of the appropriate *.bin
file to the SYS:
device icon on the desktop, see Upload (flash) the firmware to the ESP32
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.
If upgrading from a release of the IMSAI8080esp firmware prior to v1.10.0
then please upgrade to v1.10.0
first referring to the v1.10.0 release notes carefully with respect to updating the µSD card image.
If you only need to update the Desktop UI from v1.13.x
to v1.13.4
- Download the attached
update.bin
file to your PC - Drag-and-drop the
update.bin
file from your PC to theSYS:
icon on the Desktop UI of your IMSAI8080esp or Cromemco Z-1 - Reboot the ESP32 (reset or power-cycle) and the update will be installed on the µSD during the boot process
Known Issues
- There is no UI for changing hard disk images, the required image must be set using the environment variable(s)
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.
March 2023 Release
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
If you are upgrading from a firmware release older than v1.10.0
then please upgrade to v1.10.0
first referring to the v1.10.0 release notes carefully with respect to updating the µSD card image.
This is a minor release that:
- Adds support for the S-132 Add-on
- Adds 132 column mode to
TTY:
devices (includesTTY2:
&TTY3:
for Cromemco Z-1) - Adds Tektronix 4014 vector display (
TEK:
) as a slave to theTTY:
VT100 terminal (only, not toTTY2:
&TTY3:
for Cromemco Z-1) - Fixes a stack overflow in the IMSAI & Cromemco firmware when
NVS_LOG_LEVEL
set toINFO
- Improves functionality in the
LIB:
,MAN:
&TAPE:
windows of the Desktop UI - Fixes cut-and-paste into the
TTY:
devices (includesTTY2:
&TTY3:
for Cromemco Z-1)
Firmware updates:
- Update Firmware Build Version to
v1.11.0
- Fixed when running with
NVS_LOG_LEVEL
set toINFO
- previously would result in excessive messages that could cause the
CPA
process to stack overflow and make the ESP32 crash and reboot spi_master
maximum level logging now set toWARN
CPA
process stack size increased
- previously would result in excessive messages that could cause the
- Websocket receive queues increased for
TTY(n):
devices - Added support for the S-132 Add-on
- new
boot.conf
parameter to enable the S-132:S132.init=1
, - new HAL virtual devices added for:
- IMSAI8080esp:
S132TTY
andS132VIO
- Cromemco Z-1:
S132TTY
,S132TTY2
andS132TTY3
- IMSAI8080esp:
- See the S-132 Configuration Guide for details
- new
Desktop UI updates:
- Update GUI Version to
webfrontend-v1.13.0
- Rename of tape files in
TAPE:
works as expected, removes false error message - Rename of tape files in
TAPE:
can be aborted with Escape key (<ESC>
) - Drag-and-drop code for
LIB:
,MAN:
andTAPE:
modified to play nicely with badly behaved Chrome extension Imagur (or anything else that re-writes HTML image title attribute ie.<img title="...">
)- thanks to community member Quentin for finding this and proposing a solution
- Fixed drag-and-drop of a tape image from the
TAPE:
library to thePTR:
paper tape reader in Chrome for Windows - The
TTY(n):
devices now have a keyboard/paste delay of 20ms for all characters except<CR>
that has a 100ms delay- enables you to cut-and-paste into the
TTY(n):
windows
- enables you to cut-and-paste into the
- The text in the
SYS:
window is now selectable so it can be copied-and-pasted for trouble shooting - When a modal dialog is displayed eg. eject disk, the darkened background is also blurred
- DEC VT100 132 column mode
- The
TTY(n):
now implements 132 column mode:- standard DECCOLM escape sequences work
ESC [ ? 3 h
- sets 132 column modeESC [ ? 3 l
- resets to 80 column mode
- there is a new glyph at the top of the
TTY:
window, a "T" with a width arrow under it- this lights up whenever 132 column mode is set
- this goes dim whenever 80 column mode is reset
- you can click this glyph to manually change modes, overriding the current mode
- the window does not change size, the font is scaled horizontally
- there is a known bug in rare circumstances where the window does resize horizontally - still looking into it
- standard DECCOLM escape sequences work
- The
- New
TEK:
window implements Tektronix 4014 vector graphics terminal- new development from the ground up - not a port of any existing project
- built by reading the Tektronix 4014 User's Manual hundreds of times and writing code until it worked
- theTektronix 4014 User Manual has been added to the
MAN:
folder - please don't ask how to use the Tektronix 4014 - RTFM = read the manual first ;-)
TEK:
window does NOT have its own websocket or HAL device- it is a slave device to the
TTY:
device and shares the same websocket - there is a new glyph at the top of the
TTY:
window, a vector graphic symbol- when this is GREEN the
TEK:
device is connected and all data goes to theTEK:
and comes from theTEK:
- when this is WHITE the
TEK:
device is not connected and all data goes to theTTY:
and comes from theTTY:
- this glyph can be manually clicked with the mouse to connect/disconnect the
TEK:
device to theTTY:
- xterm compatible Escape sequences can be used to connect/disconnect the
TEK:
ESC [ ? 38 h
- will connect theTEK:
ESC ETX
- will disconnect theTEK:
- this implementation is compatible with the DRI GSX-80 Tektronix driver implemented by Udo Munk and available on a number disk images on his site (search for GSX) https://www.autometer.de/unix4fun/z80pack/
- works great with DR Graph
- and MS Basic (
mbasic
) with GSX support - DR Draw works to some extent but does not appear to be designed to work with a persistent phosphor display
- when this is GREEN the
- it is a slave device to the
- You can scale the window, or make it full screen like other windows
- You can capture (
png
) images of the display (only persistent phosphor) - In addition to a standard ASCII keyboard layout the following keys are mapped:
<PgUp>
= Tektronix PAGE key<shift><PgUp>
= Tektronix RESET key<PgDn>
=LF
<BackSpace>
=BS
<Delete>
= RUBOUT (ASCII 127)- Control codes are generated by the keyboard as follows:
<ctrl>2
=NUL
(ASCII 0)<ctrl>@
=NUL
(ASCII 0)<ctrl>A
to<ctrl>Z
= ASCII 1 to ASCII 26<shift><ctrl>K
to<shift><ctrl>O
= ASCII 27 to ASCII 31
- The mouse works to position the cross-hair in GIN mode
- There is a pseudo colour mode, like the Tektronix 4052 computer where the non-persistent phosphor colour is red (and a few other creative tweaks)
- Use the "paint-drop" colour glyph on the title bar of the
TEK:
window to toggle on/off
- Use the "paint-drop" colour glyph on the title bar of the
- As per the Tektronix 4014 there are 4 inbuilt font sizes for text
- You can also manually select between these in a cycle by using the "T" (with height arrow) glyph on the title bar of the
TEK:
window
- You can also manually select between these in a cycle by using the "T" (with height arrow) glyph on the title bar of the
- Independent of the selection made by the
TTY:
window - theTEK:
can select ONLINE/LOCAL- If the
TEK:
has a GREEN plug it is ONLINE and ready IF theTTY:
selects theTEK:
- If the
TEK:
has a RED plug it is LOCAL and will ignore theTTY:
and echo the keyboard locally
- If the
- Implements most functionality of the Enhanced Graphics Module
- This implementation is limited to a resolution of 1024 x 768 (actually 1038 x 780 - see the manual) and scaled if made larger
- if the browser window is too small at startup the
TEK:
window starts scaled to 50%
- if the browser window is too small at startup the
- 12 bit coordinates (4096 x 3120) are down scaled to 1024 x 780
- This implementation is limited to a resolution of 1024 x 768 (actually 1038 x 780 - see the manual) and scaled if made larger
- HOLD mode is not implemented, ie. the screen does not dim to protect the phosphor (a form of early screen saver)
- There are many Tektronix format "plots" available from another Tektronix 4014 emulator project on GitHub at https://github.com/rricharz/Tek4010/tree/master/pltfiles
- a small sample of these are on the attached disk image
plotv1.dsk
- they can by viewed on the
TEK:
with the CP/M commandtype
- or better still
- use the
plot.com
command on the attached disk image from theTTY:
window and it will switch to theTEK:
, clear the screen and display the "plot" and switch back to theTTY:
- just enter
plot
on its own to see command options - a huge thanks to community member Neil @nbreeden2 for creating this excellent CP/M utility, and for testing this whole release extensively and making many suggestions for improvements along the way
- use the
- a small sample of these are on the attached disk image
Disk image updates:
- New disk image
plotv1.dsk
added with sample plot files andplot.com
command for theTEK:
device (see above)- To use the attached disk image:
- Download the attached file
plotv1.dsk
to your PC - Drag-and-drop the file
plotv1.dsk
from your PC to theLIB:
window on the Desktop UI - Mount the disk image in your preferred floppy drive
A:
toD:
- Switch to the preferred drive
A:
toD:
- Type
plot *.plt -c -l -m
at the CP/M prompt in theTTY:
window
- Download the attached file
- To use the attached disk image:
- Disk images for the Cromemco Z-1 are unchanged
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
FIRMWARE
The FIRMWARE package is a ZIP file containing 7 files
COPYRIGHT.txt
FLASHING.md
bootloader.bin 21KB
cromemcosim_esp32.bin 982KB
imsai_part_table.bin 3KB
imsaisim_esp32.bin 990KB
ota_data_initial.bin 8KB
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle to run the IMSAI8080 machine.
You only need the cromemcosim_esp32.bin
file from the FIRMWARE bundle to run the Cromemco Z-1 machine
You can switch between machines by 'updating' to the firmware of the other machine by a drag-and-drop of the appropriate *.bin
file to the SYS:
device icon on the desktop, see Upload (flash) the firmware to the ESP32
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 ca...
October 2022 Release
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
This is a minor release that:
- includes firmware for both the IMSAI8080 (
imsaisim
) and the Cromemco Z-1 (cromemcosim
) from Z80PACK - is based on the development branch on the Z80PACK GitHub repo.
- updates the desktop UI (webfrontend) to a unified codebase that supports both machines
- as this is a minor release this
- introduces breaking changes
- requires manual updates to the image on the µSD card for an existing IMSAI8080esp system (updating from v1.9.1)
It is recommended that the IMAGE for this release is loaded on to a new µSD card and any disk images and required configuration is transferred across from the old µSD card
Firmware updates:
Note:
Common to both machines:
- being based on the development branch on the Z80PACK GitHub repo both machines:
- include a HAL (hardware abstraction layer) for mapping Serial I/O ports to different physical and virtual devices
- implement a new model for specifying different memory configurations in the
system.conf
file- the
NVS_MEMORY_MAP
bits 8-10 in the NVS Startup configuration now index these memory configurations (previouslyNVS_BOOT_ROM
) - the
ROMn=filename.hex
entries inboot.conf
are no longer used and are ignored - ROM files (
*.hex
) have been moved into aroms
folder for each machine
- the
- each machine maintains its own NVS Startup configuration in Non-Volatile Storage (NVS)
- the physical CP-A front panel is refreshed by a separate process
CPA
, independent of the emulated CPU
Generally, no other changes have been made to the IMSAI8080 machine emulation (imsaisim
)
Addition of the Cromemco Z-1 machine emulation (cromemcosim
)
- includes the following emulated hardware configuration, following standard Cromemco memory and I/O port mapping:
- ZPU - Z80 CPU @ 2MHz, 4MHz or Unlimited (~5MHz)
- 64KB of RAM in Bank 0
- seven (7) additional banks of 64KB of RAM as Banks 1 to 6
- 16FDC/64FDC hybrid floppy disk controller
- with 4 floppy disk drives (typically
A
toD
) - that can behave as
5 1/4"
or8"
drivesSS
orDS
,SD
orDD
- based on the
*.dsk
floppy disk image that is mounted - with banked ROM support for RDOS ROMs
- with the console serial interface (TU-ART) as the
TTY:
device - and Real Time Clock (RTC)
- with 4 floppy disk drives (typically
- WDI-II winchester (hard) disk interface
- with up to 3 hard disk drives (typically
hd0:
,hd1:
&hd2:
) - each emulating a 10MB capacity 8" IMI-7710
- the WDI-II will work with the CPU set to any speed as it reflects all timing relative to a 4MHz CPU
- with up to 3 hard disk drives (typically
- additional TU-ART communications interface with
- two (2) additional serial interfaces as the
TTY2:
andTTY3:
devices - two (2) parallel printers as
lpt1
(LPT:
) andlpt2
devices
- two (2) additional serial interfaces as the
- Dazzler graphics
- D+7A I/O with joystick input support
Desktop UI updates:
- Updated GUI Version to
webfrontend-v1.12.5
- adds a Cromemco themed desktop for the Cromemco Z-1
- adds
TTY2:
andTTY3:
terminal windows to the Cromemco Z-1 desktop TTY:
windows emulate Cromemco C3102 terminal or DEC VT 100 terminal- only the first printer
lpt1
is currently presented via the desktop UI, asLPT:
- indicates disk formats in the
LIB:
window- ie.
5 1/4"
or8"
SS
orDS
SD
orDD
- ie.
- adds
- most windows are now resizable
SYS:
,LIB:
,MAN:
,DZLR:
&VIO:
are resizable using the widget in the bottom right hand corner of the window- the
TTY:
windows are resizable in font-size steps, like terminal applications on mainstream GUIs- use
<ctrl> +
and<ctrl> -
on Windows - use
<cmd> +
and<cmd> -
on Mac
- use
- adds a new glyph to the
TTY:
,VIO:
&DZLR:
windows to restore the zoom/size to 100%- you can also double-click in the
VIO:
andDZLR:
windows for the same result
- you can also double-click in the
- the
TTY:
&VIO:
windows will switch between full-screen and windowed using a changed keypress- use
<alt><enter>
on Windows - use
<cmd><enter>
on Mac
- use
- the layout of the
SYS:
window has been changed to reorder sections- update the
SYS:
window to display any boot loaded ROM/TAPE (-x
) in theMemory Map
section
- update the
- long-running actions like file uploads and file downloads present a shade and wait spinner while the action completes
- adds the
TAPE:
icon/folder to desktop providing local storage for paper tape images- includes the ability to promote a
*.hex
or*.mos
format tape of a binary as a temporary PROM to be loaded and run at the next front panel power cyclePWR OFF -> PWR ON
- includes the ability to promote a
- update the
CPA:
device to actively refresh the Desktop UI on 3 events:PWR ON
,PWR OFF
,EXT.CLR
- refreshes the floppy disk/harddrive icons on the desktop
- refreshes the
SYS:
&LIB:
windows
Disk image and ROM image updates:
- Disk images for the IMASI8080 are unchanged
- a range of disk images for the Cromemco Z-1 are included from Z80PACK, including:
- CDOS boot disks
- Cromix boot disks (configured for 3 simultaneous users)
- CP/M boot disks
- an empty (all zero, 0x00) 10MB file named
empty.hdd
is provided as a 'seed' image for harddisks - ROM files (
*.hex
) have been moved into aroms
folder for each machine
The bundle is made of two parts:
- The FIRMWARE for the ESP32-PICO-KIT
- The IMAGE for the microSD card
FIRMWARE
The FIRMWARE package is a ZIP file containing 7 files
COPYRIGHT.txt
FLASHING.md
bootloader.bin 22KB
cromemcosim_esp32.bin 998KB
imsai_part_table.bin 3KB
imsaisim_esp32.bin 1MB
ota_data_initial.bin 8KB
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle to run the IMSAI8080 machine.
You only need the cromemcosim_esp32.bin
file from the FIRMWARE bundle to run the Cromemco Z-1 machine
You can switch between machines by 'updating' to the firmware of the other machine by a drag-and-drop of the appropriate *.bin
file to the SYS:
device icon on the desktop, see Upload (flash) the firmware to the ESP32
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.
It is recommended that the IMAGE for this release is loaded on to a new µSD card and any disk images and required configuration is transferred across from the old µSD card
If upgrading from an earlier release of the IMSAI8080esp firmware, the following manual changes need to be made to the content on an existing µSD card image to make it compatible with this firmware release v1.10.0
. Failure to make these changes may result in a machine that won't boot, or continually reboots
- create a folder
/imsai/roms
- create a folder
/imsai/tapes
- copy all files
/imsai/*.hex
to/imsai/roms/
- copy the file
/imsai/roms/viofm1.hex
from theIMAGE.zip
file (attached below) to the same place on your µSD card. - edit the file
/imsai/conf/system.conf
to include the memory configuration sections eg.[MEMORY 1]
onwards in the same file fromIMAGE.zip
(attached below)
Known Issues
- There is no UI for changing hard disk images, the required image must be set using the environment variable(s)
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.
- Running with
NVS_LOG_LEVEL
set toINFO
will result in excessive information messages that will cause theCPA
process to stack overflow and make the ESP32 crash and reboot. The work around is to lower the log level toNONE
,ERROR
orWARN
. This will be fixed in the next firmware release.
August 2022 Release
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
This is a BETA, minor release that:
- includes firmware for both the IMSAI8080 (
imsaisim
) and the Cromemco Z-1 (cromemcosim
) from Z80PACK - is based on the development branch on the Z80PACK GitHub repo.
- updates the desktop UI (webfrontend) to a unified codebase that supports both machines
- as this is a BETA, minor release this
- introduces breaking changes
- is not currently suitable as an upgrade for an existing IMSAI8080esp system
It is strongly recommended that the IMAGE for this release is loaded on to a new µSD card
Firmware updates:
Note:
Beta.3 addresses the following issues identified in Beta.2
- Updated GUI Version to
webfrontend-v1.12.5
- add an example tape to the
TAPE:
folder for the Cromemco Z-1 - fixes a problem with the title/file name of the
I:DSK:
harddrive icon for the IMSAI8080 - thanks to Kurt for finding this bug - update the
SYS:
window to display any boot loaded ROM/TAPE (-x
) in theMemory Map
section - adds a new glyph to the
TTY:
,VIO:
&DZLR:
windows to restore the zoom/size to 100%- you can also double-click in the
VIO:
andDZLR:
windows for the same result
- you can also double-click in the
- fixes redraw issues with the
TTY:
after a resize/zoom- there may still be problems when switching to/from full-screen, please report if you are experiencing this
- update the
CPA:
device to actively refresh the Desktop UI on 3 events:PWR ON
,PWR OFF
,EXT.CLR
- refreshes the floppy disk/harddrive icons on the desktop
- refreshes the
SYS:
&LIB:
windows
Beta.2 addresses the following issues identified in Beta.1
- adds the following two (2) directories to enable the
TAPE:
icon/folder on the desktop to function correctly/imsai/tapes
- including a range of sample tape images/cromemco/tapes
- fixes a number of issues relating to closing & releasing resources on
PWR OFF
so that the nextPWR ON
works as expected
Common to both machines:
- being based on the development branch on the Z80PACK GitHub repo both machines:
- include a HAL (hardware abstraction layer) for mapping Serial I/O ports to different physical and virtual devices
- implement a new model for specifying different memory configurations in the
system.conf
file- the
NVS_BOOT_ROM
bits 8-10 in the NVS Startup configuration now index these memory configurations - the
ROMn=filename.hex
entries inboot.conf
are no longer used and are ignored
- the
- each machine maintains its own NVS Startup configuration in Non-Volatile Storage (NVS)
- the physical CP-A front panel is refreshed by a separate process
CPA
, independent of the emulated CPU
Generally, no other changes have been made to the IMSAI8080 machine emulation (imsaisim
)
Addition of the Cromemco Z-1 machine emulation (cromemcosim
)
- includes the following emulated hardware configuration, following standard Cromemco memory and I/O port mapping:
- ZPU - Z80 CPU @ 2MHz, 4MHz or Unlimited (~5MHz)
- 64KB of RAM in Bank 0
- seven (7) additional banks of 64KB of RAM as Banks 1 to 6
- 16FDC/64FDC hybrid floppy disk controller
- with 4 floppy disk drives (typically
A
toD
) - that can behave as
5 1/4"
or8"
drivesSS
orDS
,SD
orDD
- based on the
*.dsk
floppy disk image that is mounted - with banked ROM support for RDOS ROMs
- with the console serial interface (TU-ART) as the
TTY:
device - and Real Time Clock (RTC)
- with 4 floppy disk drives (typically
- WDI-II winchester (hard) disk interface
- with up to 3 hard disk drives (typically
hd0:
,hd1:
&hd2:
) - each emulating a 10MB capacity 8" IMI-7710
- the WDI-II will work with the CPU set to any speed as it reflects all timing relative to a 4MHz CPU
- with up to 3 hard disk drives (typically
- additional TU-ART communications interface with
- two (2) additional serial interfaces as the
TTY2:
andTTY3:
devices - two (2) parallel printers as
lpt1
(LPT:
) andlpt2
devices
- two (2) additional serial interfaces as the
- Dazzler graphics
- D+7A I/O with joystick input support
Desktop UI updates:
- Updated GUI Version to
webfrontend-v1.12.4
- adds a Cromemco themed desktop for the Cromemco Z-1
- adds
TTY2:
andTTY3:
terminal windows to the Cromemco Z-1 desktop TTY:
windows emulate Cromemco C3102 terminal or DEC VT 100 terminal- only the first printer
lpt1
is currently presented via the desktop UI, asLPT:
- indicates disk formats in the
LIB:
window- ie.
5 1/4"
or8"
SS
orDS
SD
orDD
- ie.
- adds
- most windows are now resizable
SYS:
,LIB:
,MAN:
,DZLR:
&VIO:
are resizable using the widget in the bottom right hand corner of the window- the
TTY:
windows are resizable in font-size steps, like terminal applications on mainstream GUIs- use
<ctrl> +
and<ctrl> -
on Windows - use
<cmd> +
and<cmd> -
on Mac
- use
- the layout of the
SYS:
window has been changed to reorder sections - long-running actions like file uploads and file downloads present a shade and wait spinner while the action completes
- adds the
TAPE:
icon/folder to desktop providing local storage for paper tape images- includes the ability to promote a
*.hex
or*.mos
format tape of a binary as a temporary PROM to be loaded and run at the next front panel power cyclePWR OFF -> PWR ON
- includes the ability to promote a
Disk image and ROM image updates:
- Disk images for the IMASI8080 are unchanged
- a range of disk images for the Cromemco Z-1 are included from Z80PACK, including:
- CDOS boot disks
- Cromix boot disks (configured for 3 simultaneous users)
- CP/M boot disks
- an empty (all zero, 0x00) 10MB file named
empty.hdd
is provided as a 'seed' image for harddisks - ROM files (
*.hex
) have been moved into aroms
folder for each machine
The bundle is made of two parts:
- The FIRMWARE for the ESP32-PICO-KIT
- The IMAGE for the microSD card
FIRMWARE
The FIRMWARE package is a ZIP file containing 7 files
COPYRIGHT.txt
FLASHING.md
bootloader.bin 22KB
cromemcosim_esp32.bin 997KB
imsai_part_table.bin 3KB
imsaisim_esp32.bin 1MB
ota_data_initial.bin 8KB
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle to run the IMSAI8080 machine.
You only need the cromemcosim_esp32.bin
file from the FIRMWARE bundle to run the Cromemco Z-1 machine
You can switch between machines by 'updating' to the firmware of the other machine by a drag-and-drop of the appropriate *.bin
file to the SYS:
device icon on the desktop, see Upload (flash) the firmware to the ESP32
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(s)
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.
September 2021 Release
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
NOTE: If you are upgrading from a version earlier than v1.9.0, you should upgrade to v1.9.0 first, before applying this patch release upgrade.
This is a patch release that:
- improves code performance of the
PTR:
device on the Desktop UI - improves behaviour of the
PTR:
for reading larger tapes (>15KB) - updates the
SYS:
device to better report on system information
Firmware updates:
- adds a 256 byte input buffer to the PTR: device to avoid overflow conditions (especially when writing to disk during a tape read)
Desktop UI updates:
- Updated GUI Version to
webfrontend-v1.10.1
- Updated
PTR:
device to:- more quickly load a file as a paper tape
- load files >15KB without failing
- punch tapes >5KB without the noticeable slow-down of the previous release
- include a
Queue
button that reads though any tape leader (nulls, 0x00) and stops at the first non-null byte
- Updated
SYS:
device- re-orders information to place IMSAI8080 simulation details before host (ESP32) details
- show fall-through information for the
SIO Ports
(HAL) with a+
appended to the device name
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
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle if upgrading from v1.9.0
and the update.bin
file to update the desktop GUI to v1.10.1
If you are upgrading from a version earlier than v1.9.0, you should upgrade to v1.9.0 first, before applying this patch release upgrade.
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 999K
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.
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: https://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.
August 2021 Release
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
This is a minor release that:
- flushes the printer cache file to disk periodically to allow access when the printer is not busy
- responds to the IMSAI PTR-300 printer initialisation command to reset the printer
- adds 132 column paper options to the printer, LPT: device on the web UI
- performs a printer initialisation command to reset the printer when
Reset
pressed in LPT: device on the web UI - adds support for a hardware parallel printer interface for LPT:
- adds support for a printer initialisation string for a hardware printer connected to the parallel port
Firmware updates:
- the ESP-IDF libraries for file handling are not thread aware:
- so the printer cache file is now closed after a timeout period of 0.5-1 second after print activity ceases
- this allows other processes to access the content of the printer cache file when the printer is not busy
- this firmware now supports a hardware parallel printer via a hardware parallel printer interface connected to the 16-pin
Patch
header on the back of the IMSAI8008esp- details for building your own hardware parallel printer interface will be published soon
- to use the hardware parallel printer interface an environment variable must set set in
boot.conf
as follows:LPT.device=PARALLEL
- when this interface is active, both the printer cache file and the web UI virtual printer are disabled
- the imsaisim printer "device" is strictly 7-bit ASCII, modelled on the IMSAI PTR-300 line printer:
- original IMSAI software also sends a value of
0x80
to initialise the printer- the CP/M BIOS's (both 2.2 and 3) both send this initialisation code when CP/M boots
- however the imsaisim printer driver has previously ignored this initialisation code
- the IMSAI8080esp now responds to a value of
0x80
to initialise the printer as follows:- the printer cache file is closed and truncated to clear the cache
- if the hardware parallel printer interface is being used, a printer initialisation string can be sent to the printer
- the printer initialisation string
LPT.init
is set inboot.conf
and can contain the following escaped control codes:^[
to represent ASCII<ESC>
^L
to represent ASCII<FF>
^J
to represent ASCII<LF>
^M
to represent ASCII<CR>
^^
to represent ASCII^
- the printer initialisation string
- original IMSAI software also sends a value of
For example:
LPT.init=^[E
will send <ESC>E
to initialise an HP PCL5 compatible printer.
Desktop UI updates:
- Updated GUI Version to
webfrontend-v1.8.0
- Updates to LPT: device
- adds 132 column paper options
- the
Paper
button now cycles through 6 paper options:- 8.5" , 80-column - blue-line; green-bar; white, followed by
- 14" , 132-column - blue-line; green-bar; white
- the
- the
Reset
button now signals to the IMSAI8080esp to perform a printer initialisation (see above) - the LPT: device is reset when the IMSAI8080esp performs a printer initialisation (see above)
- the
Line Feed
button now correctly advances the line count and does not corrupt subsequent form feeds
- adds 132 column paper options
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
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle if upgrading from v1.7.x
and the update.bin
file to update the desktop GUI to v1.8.0
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 979K
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 described above.
July 2021 Release
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
This is a minor release that
- harmonizes the build with changes from Z80PACK upstream updates
- adds 'AT' Modem enhancements
- adds missing functionality to the CRT: device on the desktop UI
- adds a HAL (Hardware Abstraction Layer) for mapping character mode devices to the four (4) virtual SIO-2 serial ports
Firmware updates:
- Built using ESP-IDF Version: v4.0.2
- includes Z80PACK updates, specifically:
-
updates the RTC device udo-munk/z80pack@9bc17bc
-
add SIO-2 control ports and modem carrier detect udo-munk/z80pack@bf8b3f2
-
added carrier detect to the 'AT' Modem udo-munk/z80pack@88e5e5b
-
correctly negotiate telnet options for 'AT' Modem answer mode udo-munk/z80pack@c50d6eb
-
update front panel address LEDs for specific 8080 opcodes udo-munk/z80pack@2d20225
-
change
system.conf
parameter names for SIO configuration udo-munk/z80pack@7933f4b- Note: this last change will require you to update the
system.conf
file on your system - This can be done:
- via the config editor in the
SYS:
device on the desktop UI - or by directly editing the
/imsai/conf/system.conf
file on the µSD card on another computer
- via the config editor in the
- For example:
- Note: this last change will require you to update the
-
# SIO 1 Channel A, Ports 2/3 connected to terminal (default)
sio1a_upper_case 0
sio1a_strip_parity 0
sio1a_drop_nulls 1
sio1a_baud_rate 9600
# SIO 2 Channel A, Ports 34/35 connected to UART1/RS232-2 (default)
sio2a_upper_case 0
sio2a_strip_parity 0
sio2a_drop_nulls 1
sio2a_baud_rate 19200
- 'AT' Modem enhancements:
- added standard Command Echo off/on feature
ATEn
- whenn=0
- echo off andn=1
- echo on- to disable/enable echoing 'AT' commands when in command mode
- default is on (echo on)
- added standard Quiet Results off/on feature
ATQn
- whenn=0
- quiet off andn=1
- quiet on- to show/hide 'AT' command results when in command mode
- default is off (quiet off)
- added non-standard Enable Answer daemon mode
- existing
AT&A
command (now alsoAT&A0
) enables "interactive" listen mode- continues to display 'RING' & 'CONNECTED' responses (if enabled)
- continues to allow the interrupt sequence
+++
to return the Modem to command mode from data mode
- new
AT&A1
command enables "daemon" listen mode- suppresses 'AT' command echo and responses (effectively
ATE0
&ATQ1
) - ignores the interrupt sequence
+++
preventing the Modem from returning to command mode from data mode - this new mode avoids the race condition when the 'AT' Modem is used as the CP/M console device
CON:
- see Known Issues below and allows the Modem to be used to provide remote access to the console eg. from a telnet client
- suppresses 'AT' command echo and responses (effectively
- existing
- update
AT$
help to:- show the new commands from above
- replace
<Tab>
characters with spaces as this was preventing the text from displaying on theCRT:
(VIO) device
- added Modem initialization string to
boot.conf
- the environment variable
MODEM.init
can be set in theboot.conf
file - this string will be processed by the Modem when it is initialised and reset (
ATZ
) - For example, to initialize the modem for:
- auto-answer after 1 ring (
ATS0=1
) - enable telnet protocol (
ATS15=1
) - enable answer mode (ie. listen) in "daemon" mode (
AT&A1
) - add the following
boot.conf
line:
- auto-answer after 1 ring (
- the environment variable
- added standard Command Echo off/on feature
MODEM.init=ATS0=1S15=1AT&1
- A new HAL (Hardware Abstraction Layer) enables mapping of character mode devices to the four (4) virtual SIO-2 serial ports
- the SIO port mapping configuration is loaded and reported to the debug console (UART0 including USB) when the simulation is started/powered-on
- the SIO port mapping configuration is also displayed in the
SYS:
virtual device on the desktop UI (see Desktop UI updates, below) - when no SIO port mapping configuration is specified, the existing configuration is the default, and reported as follows:
SIO PORT MAP:
SIO1.portA = WEBTTY UART0
SIO1.portB = VIOKBD
SIO2.portA = UART1
SIO2.portB = MODEM
- HAL (continued...)
- the purpose of the HAL is to:
- simplify the addition of new character mode devices in future
- eg. additional hardware UART; network sockets; additional telnet listeners; new virtual peripherals on the desktop UI
- enable the user to assign specific devices to each of the four (4) virtual SIO-2 serial ports
- simplify the addition of new character mode devices in future
- details of configuring the SIO port mappings will be published in the Configuration Guide in the near future
- hint: try putting lines like the output shown above in the
boot.conf
file- without spaces around the '='
- with commas (",") between devices on the same line
- hint: try putting lines like the output shown above in the
- the purpose of the HAL is to:
Desktop UI updates:
- Updated GUI Version to
webfrontend-v1.7.0
- Updates to CRT: device
- correctly generates all control key combinations, including:
^@
-Ctrl-@
&Ctrl-<space>
^[
-Ctrl-[
^\
-Ctrl-\
^]
-Ctrl-]
^^
-Ctrl-6
&Ctrl-^
^_
-Ctrl--
&Ctrl-_
- (previously generated only
^A
to^Z
)
- will not connect to the VIO when:
- the Power switch is in the
PWR OFF
position - the VIO ROM/BIOS is not loaded
- the Power switch is in the
- will correctly display the VIO screen contents after a disconnect/connect or web browser page refresh
- will not display anything (will appear powered off) when disconnected
- correctly generates all control key combinations, including:
- Updates to the SYS: device
- now displays a new section titled SIO Ports showing the current port mappings for the four (4) virtual SIO-2 serial ports
- For example, the default port mappings are displayed as:
SIO Ports
SIO1.portA = WEBTTY UART0
SIO1.portB = VIOKBD
SIO2.portA = UART1
SIO2.portB = MODEM
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
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle if upgrading from v1.6.x
and the update.bin
file to update the desktop GUI to v1.7.0
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 977K
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 described above.
April 2020 Release - 3
THESE PACKAGES MAY NOT BE UPLOADED OR HOSTED ANYWHERE ELSE.
Release Notes
This is a patch release that
- fixes a problem with setting the hostname from the
HOSTNAME
inboot.conf
early enough when in station (STA) mode - adds a basic DNS service when in access point (AP) mode
Firmware updates:
-
Forum member, Michael Gulick was the first to notify me that an SSID of
espressif
was seen on his router rather than the expectedimsai8080
from theHOSTNAME
inboot.conf
- This was a bug related to different code paths for STA and AP Wi-Fi modes.
- Only affected STA mode (NVS_IF_STA=1)
- Explains why you could never use the hostname to access the desktop UI from a browser in STA mode
- Became evident when ever using Reverse ARP on the IP address of the ESP32.
- The hostname is now set before the ESP32 connects to your access point/router
-
While investigating the above issue, it became clear that when in AP mode the lack of any DNS service meant that the ESP32 could only be reached by IP address or mDNS query (eg. hostname.local)
- Only affected AP mode (NVS_IF_STA=0)
- Explains why you could never use the hostname to access the desktop UI from a browser in AP mode
- A basic DNS service now responds to DNS queries to resolve the hostname of the ESP32 (but ignores all other DNS queries)
Desktop UI updates:
None.
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
You only need the imsaisim_esp32.bin
file from the FIRMWARE bundle if upgrading from v1.6.0
FIRMWARE
The FIRMWARE package is a ZIP file containing 6 files
COPYRIGHT.txt
FLASHING.md
bootloader.bin 21K
imsai_part_table.bin 3.0K
imsaisim_esp32.bin 899K
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.