Sinclair ZX Spectrum Emulator 'Z80' v3.04 - 10/8/96 - by G.A. Lunter ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Z80 - Frequently Asked Questions 1 - How to print the diagram of the tape-interface as shown in DIAGRAM.Z80, or make other screendumps. 2 - How to LLIST and LPRINT to a printer 3 - How to build the tape-interface 4 - What to do if the Zandbergen joystick doesn't work correctly 5 - How to contact the author 6 - Manic Miner and Jetset Willy run too fast! 7 - How to save a .SCR snapshot to tape or .TAP file 8 - Printing problems with Tasword 128 9 - What to do about an IN 0 crash? 10 - I have a .TAP file, but it doesn't work ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 1. How to make a screen-dump on a printer When the Interface 1 appeared, it was possible to attach a serial printer to the RS232 port of the Interface 1. The emulator can redirect the RS232 to the serial port of the PC, a file or a parallel (printer) port. The SamRam can make a screen-dump on a dot-matrix printer. It is programmed for a Star SG-10. The Spectrum 128's COPY command sends its output to the "p" printer channel, also an RS232 channel. This will work for Epson-compatible printers. The ZX Printer's COPY output can be translated into graphics data understandable for Epson and HP-PCL compatible printers, and finally, the DISCiPLE has also on-board screen dump routines. Example 1: Screen-dump for Epson or HP-PCL compatible printers, via the standard COPY command. Select the printer port to use for output with -XL 2 for example, to select LPT2 for output. Select Epson or HP-PCL output format with -0e or -0h. Then simply type COPY (in 48K or SamRam mode, not in 128K mode). Example 1: Screen-dump for Star SG-10 compatible matrix printer using the SamRam. Redirect the Spectrum Interface 1 RS232 output to LPT1 by pressing F4, O, L, 1. Load a .Z80 file, and wait for the picture you want to print to appear. Switch to SamRam mode by pressing F10, H, 3, CTRL-ENTER, and generate an NMI by pressing X, N. If you're already in SamRam mode you can simply press F5. Press P, then 1 to print the screen. Example 2: Screendump for EPSON compatible matrix printer using the COPY command of the Spectrum 128 Redirect the RS232 output to LPT1 by pressing F4, O, L, 1. Load a .Z80 file, and wait for the picture you want to print to appear. Save it as a .SCR screendump by pressing F10, X, S, name Switch to Spectrum 128K mode (F9, 5, ENTER) Choose '128K BASIC' from the menu, and type PAUSE 0:COPY, and press ENTER once. Press F10, X, L, name, to load the screen snapshot back into memory. Go back to the emulator (ESC, ESC) and press any key to start printing. Example 3: Screendump for all other printers, using DOS utilities Follow the steps from example 2 up to the saving of the .SCR screen snapshot. Leave the emulator. Run CONVERT on the .SCR file to generate a .GIF or a .PCX file, for example CONVERT b g screen.scr screen.gif, or CONVERT b x screen.scr screen.pcx Find another program that can print the .GIF or .PCX file Example 4: Screendump for Epson or HP PCL compatible printers using the screendump routines of the DISCiPLE Redirect RS232 output to LPT1. Switch to 48K + DISCiPLE mode (or 128K + DISCiPLE) and select the ROM with the pre-loaded D.O.S. for Epson or HP PCL compatible printers Type COPY SCREEN$ 1 for a small screen-dump (black/white but with regard to colors) Type COPY SCREEN$ 2 for an A4 dump with dithered grey-tones. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 2. How to LLIST and LPRINT to a printer There are several ways to print things. The standard ZX Printer output can be converted to graphics output in Epson or HP-PCL format; for this, select output port with -xl and output mode with -0e or -0h, then simply use LPRINT, LLIST and COPY to output to the "p" stream (on 48K Spectrum or SamRam; not on the Spectrum 128K). All output to the Interface I's RS232 channel "b" and "t" (for raw and text output respectively; use "t" for listings) and the Spectrum 128's RS232 channel "p" and the parallel printer interface of the DISCiPLE/+D can be routed to the printer port, a serial port or a disk file. Thus, by OPEN #3,"b", "t" on the 48K Spectrum with Interface 1, or OPEN #3,"p" on the Spectrum 128, all data sent to channel 3 (i.e. printed by LPRINT or LLIST) can be routed directly to a printer. The normal ZX Printer "p" channel is automatically (by an interrupt routine...) converted into the DISCiPLE/+D parallel printer output channel by typing POKE @11,0. POKE @11,1 resets the "p" channel to the default again. As said above, you have to redirect the output of the Interface 1 RS232. In the emulator, press F4, O, L, 1. Like on the real spectrum with Interface 1, if you want to print to the Interface 1 RS232, you have to open the #3 channel. In Spectrum Basic, type: OPEN #3,"b" (or OPEN #3,"t" for basic listings). Press SHIFT-ALT 4 for OPEN #. In this way you can print anything as long as your spectrum program supports printing to the Interface 1 RS232 and your printer type, or to the ZX printer. For example, it is perfecty possible to print a textfile on your printer with Tasword 3, or make a printout with Art Studio. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 3. How to build the tape interface. The diagram of the tape interface is in the program DIAGRAM.Z80. It is easy to build, and inexpensive, since only passive components are used. If you do not want to build the interface yourself, you can order one for BP 14.50 with B G Services. For the address, see the Registering section in the documentation file, or the REGISTER.DOC file. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 4. What to do if the Zandbergen joystick doesn't work correctly The Zandbergen joystick interface did not work at all in version 2.01. It works properly in V3 again. Sorry to have kept you waiting so long... To a fully implemented pc-joystick port, two analogue joysticks can be attached (on one plug!). A number of multi-io cards can handle only one analogue joystick. However, the Zandbergen joystick needs a fully implemented joystick port. If only two directions (out of four) work, your joystick port is not usable. Use an analogue pc-joystick instead. The joystick port of a Sounblaster is fully implemented and ok to use. If you have more than one joystick port in your pc, you have to disable one. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 5. How to contact the author. You can contact me by normal post: Postal address: Gerton Lunter P.O. Box 2535 9704 CM Groningen The Netherlands. If it is REALLY urgent you can Email: z80help@bgserv.demon.co.uk Any queries which require my help will be forwarded to me. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 6. Manic Miner and Jetset Willy run too fast! True. Most of the time these games are either producing sound or executing an LDIR instruction to update the screen. Since this instruction can be emulated with a single REP MOVSB instruction of the 8086, emulation is suddenly very fast. Without sound, Manic Miner and Jetset Willy were two of very few games that were actually playable on a 8 MHz PC, and of course I don't want to slow down the emulator on slow machines! If you turn the LDIR emulation switch on, the LDIR instruction will behave somewhat differently, important for well-protected programs. As a side effect, it will then also run at the right speed. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 7. How to save a .SCR snapshot to tape or .TAP file First make the appropriate choises in the tape menu, F7. Then type SAVE "name" SCREEN$. Press ENTER, and then press F10 in the one second gap between header and data block. When saving to tape you can easily see it; when saving to disk, after pressing ENTER give the emulator a split second to save the header to disk before pressing F10. Now load the .SCR snapshot into memory, and continue saving. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 8. Printing problems with Tasword 128 Tasword 128 does not print correctly via the "p" channel; at least, my version of Tasword 128 doesn't. The problems can be circumvented easily by opening stream 3 for output to channel "b", i.e. OPEN #3,"b", instead of using channel "p". A better solution is to remove the bug. Load Tasword 128, turn on Microface 128 emulation, hit NMI (F5), choose T, then H for Hex, address 9DD3, and poke the values 01 FD 7F ED 79 32 5C 5B FB C9 into the respective addresses (pressing ENTER twice after each value); then Q and R. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 9. What to do about an IN 0 crash? The Interface I often crashes if the 'Microdrive Data' port is accessed when the microdrive is not running. Entering PRINT IN 0 in Basic will usually hang the Spectrum. So, if a program reads from the 'Microdrive Data' port when it shouldn't, the emulator lets the user know that an ordinary Spectrum would have crashed at that point. Some programs did indeed crash if an Interface I was attached; JetSet Willy is an example (just wait until it pauses, then press a key). To use these programs, simply select the hardware mode 48K (or 128K) Spectrum without Interface 1. In this mode the emulator won't bother about programs reading from port 0. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ad 10. I have a .TAP file, but it doesn't work Could be different things. The Warajevo emulator uses a tape file format different from Z80's, but uses files with the same .TAP extension. Check this first. Wavajevo comes with a utility to translate its .TAP format to Z80's. Some programs need the R register emulation to be switched on. Some programs will not load with an Interface 1 emulated. Some programs are Spectrum 128K programs without saying so when loaded in an 48K machine. Switch to 128K mode (without Interface 1 to avoid troubles there) and try again. Some programs use the standard format on tape, but use their own load routine. Because Z80 traps the ROM and does not emulate the bips and clicks of the data, this will not work. Convert the .TAP file to a .VOC file using TAP2VOC, and play this file back to the emulator.