Testing HEX file upload to the Z80-MBC2
One of the Z80-MBC2 boot menu options, iLoad, allows uploading an executable program in Intel HEX format. This is cool because it enables running code on the bare metal with no operating system, such as a resident monitor or software that directly accesses the hardware.
To test iLoad I uploaded and run a demo to the Z80-MBC2, a Z80 Assembly program that prints a message to the console and blinks the board's User LED.
The source file, Blink demo Z80-MBC2.asm
, is included in the sources of the Z80-MBC2 firmware in directory src
. I assembled the program with the zasm Z80 assembler and converted it to HEX format with the bin2hex
tool that comes with the z80pack Z80 emulator.
The screenshot shows the steps for uploading the demo to the Z80-MBC2 and running it. It's a Minicom session under Crostini Linux on my Chromebox.
First off, I brought up the Z80-MBC2 boot menu. After selecting the iLoad option, the Z80-MBC2 waited for the file transfer to start.
Next, in Minicom I executed the Paste file
command (activated by the Ctrl+A Y
keystroke), which reads an ASCII file and sends its contents as if it were typed in, and selected the program file blink.hex
. A few seconds later the message Z80-MBC2 User led blink demo running...
appeared on the console and the board's User led started blinking.
I completed the process successfully only after tweaking the transmission parameters.
The Z80-MBC2 developer notes the board's serial port can't handle high-speed data transfers, and advises to set a 50-90 ms newline transmission delay in the settings of the terminal emulator used for the transfer.
In Minicon I set the delay with the Newline Tx delay
(Ctrl+A T D
) option. But with my setup iLoad transfers abort even with delays up to 150 ms, causing the Z80-MBC2 to display a checksum error and halt.
To overcome the issue I set a character transmission delay of at least 5 ms with the Character Tx delay
option (Ctrl+a T F
).
Discuss... Email | Reply @amoroso@fosstodon.org