home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 March
/
Chip_1998-03_cd.bin
/
hry
/
Sinclair
/
SimDOS2
/
Z80FAQ.DOC
< prev
Wrap
Text File
|
1996-11-10
|
14KB
|
335 lines
Sinclair ZX Spectrum Emulator 'Z80' v3.05 - 11/11/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
11 - Z80 complains about lack of memory
────────────────────────────────────────────────────────────────────
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, and neither in DISCiPLE mode; it works in +D mode though).
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: Screen dump 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: Screen dump 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: Screen dump for Epson or HP PCL compatible printers using
the 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.
Example 5: Screen dump for Epson or HP PCL compatible printers using
the ZX Printer emulation and the ordinary COPY command
At startup, use a combination of the switches -xl, -xj, -0e, -0h and
-0f to select the proper set-up for your printer configuration. These
switches are best defaulted in Z80.INI.
Make sure the emulator is in a 48K mode, SamRam is OK, or in a 128K mode
but 48K BASIC, and make sure the Disciple is not turned on (+D is fine
though). Then, the ordinary COPY command works.
────────────────────────────────────────────────────────────────────
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).
Note that (without the -xj switch) when the actual printer goes off-line or
out-of-paper or whatever, Z80 will report to the Spectrum program that the
ZX Printer is non-existent. This will prevent programs from trying to
print things - some print without being asked to. However, when this
happens during printing, Z80 will try to finish its job. The program
appears to hang, but pressing the space bar once causes Z80 to stop waiting
and report the ZX Printer as non-existent. When the printer goes on-line,
the ZX Printer will appear again.
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 DISCiPLE/+D's centronics "p" channel 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 menu that controls this is accessed by F4, O.
The normal ZX Printer "p" channel is automatically (by an interrupt
routine) converted into the DISCiPLE/+D parallel printer output channel.
The DISCiPLE rom's in ROMS.BIN are set to Centronics interface by default,
so LPRINT works straight away. When a +D ROM is used, POKE @11,0 may be
necessary. The +D's "p" channel can be reset to ZX Printer output by
typing POKE @11,1. In principle, this is also possible with the DISCiPLE,
but the ZX Printer port #FB is used by the DISCiPLE already, and the
emulated ZX Printer will not respond to it in DISCiPLE mode.
The following POKE @'s are useful: POKE @6,0 to switch on control code
conversion, POKE @8,1 to have CR's converted to CR/LF's, POKE @10,0 to
switch off automatic conversion into graphics of some ascii characters.
As said above, you have to redirect the output of the Interface 1 RS232.
As on a 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.
───────────────────────────────────────────────────────────────────
ad 11. Z80 complains about lack of memory
Z80 itself suggests using -xt or -xu to reduce the amount of memory. Using
-xt reduces execution speed only slightly in some situations, so if this
works, you might as well put -xt in the Z80.INI file as a permanent
solution. Most probably shelling to DOS will not work in this case, as DOS
needs quite a bit of free memory.
The switch -xu disables Hi-res color emulation, which can be undesirable.
Z80 needs far less conventional memory if EMS memory is present. In a
Windows (95) DOS box the amount of EMS memory available can be pre-set.
Use the PIF editor (Windows 3.1) or go to Properties, Memory, to set the
amount of available EMS memory to about any non-zero value (Z80 needs less
than 256 Kb). This will most probably solve your memory problem in DOS
boxes.
If this still doesn't work, then most probably resident programs take up
much space and leave very little conventional memory to ordinary programs.
See your autoexec.bat file and remove unneccessary programs. If you do
need them, try using e.g. Quarterdeck's QEMM to load as much as possible
resident programs into high memory.