Problems with Warm Silence's Z80Em version 3.00 ----------------------------------------------- Warm Silence's Z80Em Spectrum 48k/128k/+2 emulator is very useful, but it has a couple of bugs in it. In the main, they do not cause any problems, but they do get in the way of using it fully. The patch program Z80EmPatch and Z80EmPRun patch version "3.00 (20 March 1999)" to fix these. If you have any other version of Z80Em, this patch is unlikely to work. WARNING! any modification you do to your own copy of Z80Em is entirely at your own risk. I cannot and will not accept any liability for any loss or damaged caused by you using this patch. Do not run this patch on your original software, but on your working copy. To run the patch, open a directory viewer on Z80Em so that the filer sets up the patch to it. The double-click on Z80EmPatch. It will patch Code128, then run Z80EmPRun to patch !RunImage, saving them back into Z80Em. After patching the code, patch the Resources.!Sprites and Resources.!Sprites23 files by loading them into Paint. Rename the sprites "z80em_48" to "z80em_48k" and "z80em_128" to "z80em_128k". These are the problems this patch fixes: 1. Resources.!Sprites and Resources.!Sprites23 have sprites named z80em_48 and z80em_128 when they should be named z80em_48k and z80em_128k. Fix this by loading them into Paint and renaming the sprites. 2. RESET does not do a RESET, it does a JP &0000. The registers are not zeroed on a RESET, so code that runs at &0000 and examines registers to determine if it was called from a RESET or a CALL 0/RST 0 cannot work. A common way of determining a RESET from a jump to &0000 is to examine the I register: 0000 LD A,I 0002 JP Z,Reset 0005 JP NZ,NotReset Reset: LD A,not_zero LD I,A 3. Does not partially decode I/O address &7FFD, so OUT (&FD),A does not work. 4. Can't add extra ROMs to the ROMs directory, as Z80Em only looks for ROMs that it knows about, rather than looking in the ROMs directory to see what's there. Z80Em should scan the ROMs directory and build up a list of what is there. This patch allows ROM images filetyped to &700 to be dragged to the icon bar to be loaded. The ROMs selection code really needs to be rewritten. 5. Loading a tape block zero bytes long fails. The Spectrum ROM ignores the block type byte and reads it and returns it as the checksum. This patch allows a zero-byte header block to be read correctly from a TAP file.