Z80 Programming VIII |
ROM BIOS |
Overview: Several programs have been assembled to create the ROM BIOS. They are listed at the bottom of the main assembly file, m62bios.asm, dated 2019-02-03, v1.2.3, in the screenshot below. The ROM BIOS also contains the ROM Monitor. You will want to burn the m62bios.bin file into an EEPROM and install it in your Z80 system. Hopefully you bought a couple of spare SST39SF040A, 512KB EEPROMs.
The hw_defs.asm file lays out the memory map for you. It includes provisions for the VGA board and the IDE/CF board if you decide to build and install them in the M62 bus board. The bios-defs.asm file includes a few .EQU equates needed to simply your coding. The routine_entry.asm file is quite important. It contains all of the BIOS addresses of functions you might want to call in your standalone programs you run in Bank_1, etc. Calls like PUTS that writes an ASCIIZ string pointed to by register HL to standard output; it's located at $0073. If you examine the m62bios.lst file, you can see the jump at $0073 to _PUTS which is located at $01AE. It's a short call to UART_PRNT_STR located at $0141.
When you build your own apps, you'll probably have them run at the beginning of Bank_1, $4000 to $7FFF, as shown in the memory map below, unless you are using the newer single board computer that replaces Bank_0 ROM with Bank_0 RAM. The M62-OS has provisions to move the small ROM code into Bank_0 RAM so you have even more RAM to work with. In that case, you could easily change the 'org' pointer to '$0100' to run your apps in Bank_0's application space. Currently, I leave the '.org' pointer at $4000 in everything I write. It's your choice. One app I just finished writing (2019-03-28) for the memory expansion board, MEB, that you might want to test is Test_MEB-C0.zip. Unzip the .bin file, upload it to $4000, and execute it at the same address. Write 'ROMFS' to the first 5 bytes of an EEPROM you installed in the MEB and it will find it, too.
As I get more time I'll provide more information on how Peter (I did a little, too) programmed the BIOS. Currently, building/programming/testing boards for the Z80 project takes up a lot of my time, but I will get to it.
|