home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
emulator
/
spectrumaga
/
zxam_spectrumaga.doc_eng
< prev
next >
Wrap
Text File
|
1995-02-27
|
20KB
|
488 lines
[0m[0 p
[0;1;33;40mZXAM SPECTRUM EMULATOR AGA v1.3 ß[0m
© 1994 WareSoft All rights reserved
by Antonio J. Pomar Rosselló
[0;1mDISTRIBUTION[0m
This program is FreeWare. The program can be freely distributed provided
that all the associated files are distributed with the program itself. Neither
the program nor their associated files must be modified in any way. The
complete distribution package can be compressed with LHA, LHarc or similar
for distribution convenience. No charge must be made for use or distribution
of this package.
The complete distribution package contains:
ZXAM_SpectrumAGA The executable file (with icon).
ZXAM_SpectrumAGA_FAST A faster version of the emulator (with icon).
ZXAM_SpectrumAGA.DOCeng This is the english DOC (with icon).
ZXAM_SpectrumAGA.DOCesp Spanish translation of the DOC (with icon).
README!! Notes for distribution (with icon).
LEEME!! The same, but in spanish (with icon).
INTERFACE.IFF Diagram of the cassette interface (with icon).
DIGIT_INTERFACE.IFF Digitalization of my interface (with icon).
powerpacker.library To load compressed spectrum programs.
This software is provided 'AS IS' without warranty of any kind, either
expressed or implied. By using this package you agree to accept the entire risk
as to the quality and performance of the program, or even of the DOC. The same
applies to the tape interface. It is prohibited to build and sold the tape
interface for profit. The interface must be build for personal use only.
All trademarks and Copyrights of products mentioned in this document are
acknowledged by the author.
In the DOC of the Spectrum Emulator 1.7 I have read that AMSTRAD has given
special permission for emulator authors to use the Spectrum's ROM code. Anyway
the Spectrum's ROM is copyright to AMSTRAD.
The powerpacker.library is © Nico François.
The Sinclair ZX Spectrum Emulator V1.7 is © Peter McGavin.
[0;1mREQUIREMENTS[0m
This program needs WorkBench 3.0 (v39) or higher to run, the AGA chipset
and a 68020 CPU, or better. In short, an Amiga 1200 or 4000. It needs the
powerpacker.library too, to load the compressed Spectrum programs, in LIBS: or
in the same directory of the executable.
Is VERY convenient that you have 32 bits FAST memory. With FAST memory the
speed, and the sound, will be A LOT better.
[0;1mINTRODUCTION[0m
Well, maybe you have guessed that this program is a Sinclair ZX Spectrum 48k
emulator, with all those lovely attributes and only one channel of 1 bit sound
(sob...).
This is a very very ßeta version. It is unfinished, but I have decided to
release it with the aim that the people test the emulator (and love it, or
maybe hate it...) and give me their opinion and ideas about it.
Actually this emulator is mainly a hack, that access directly to the AGA
hardware. The final version will be much more friendly (as much friendly as I
can manage to do it) with the operative system and with the hardware.
[0;1mSPECTRUM PROGRAM FORMATS[0m
Before you can understand the function of some of the gadgets of the
program, you must learn something about the format of the Spectrum programs
(often called [0;1ms[0mnapshots).
On the disk, a Spectrum program is simply a file that contains a copy of the
48k of RAM of the Spectrum, along with all the registers of the Z80 CPU (the
CPU of the Spectrum).
The problem is that every Spectrum emulator (on any computer) uses a
different format to save the memory and the registers. That means that a
program saved with an emulator will not load into any other emulator.
Instead of create my own format for the Spectrum program I have decided to
support several formats of programs. You can decide what format you want to use
for the programs, or use the emulator as a format conversor too.
The two formats that I know, and that I have included in the emulator, are
called (provisionally) PC and MIRAGE. These formats are:
PC: This is the format used by a nice emulator for the IBM PC, and
compatibles, programmed in Spain by Pedro Gimeno. The executable is
called SPEC386.EXE and the version I know is the 0.99D ß. This
emulator needs a 386DX at 25MHz, with a 256k cache, to approach to
the original Spectrum speed. These files are 49190 bytes long and
have a .SP extension appended to the name.
MIRAGE: This is the format used by the Spectrum Emulator 1.7, a very
good emulator for non-AGA machines. These files are 49179 bytes long
and have the .snapshot extension appended to the name. I recommend
that you change the extension to .mirage, because it looks like if
all the emulators are using the same extension. The format version
supported by the ZXAM emulator is the post-1.6 version, that stores
correctly the border color.
I know about another emulator (KGB Spectrum Emulator v1.2) but I don't know
the format of their files. Anyway, it is very buggy, and is incompatible with
KickStart 2.0 and higher.
If you know any other format (for any computer, like Amiga, Cray, MAC, Atari
or PC) please send to me the information that you have, along with a disk with
several games saved in that format. In the next version of the emulator I will
support that format.
[0;1mRUNNING THE EMULATOR[0m
You can run the emulator from WorkBench or SHELL. If you run it from the
SHELL, it will "detach" from the SHELL window and will search the program's
icon to read the ToolTypes.
Any problem at startup will be reported by a requester.
Available ToolTypes are:
PATTERN= Here you can put the pattern (or 'filter') for the
filerequester. Take a look at the user's manual of
your Amiga to learn how to use these patterns.
PATH= The directory where you have the Spectrum games,
if you have any. The filerequester will open
itself over that directory (I have a directory in
my Hard Disk with 232 compressed games [4.7Meg]).
DEFFORMAT= The default format used to save the programs (PC
or MIRAGE). Anyway, you can change this with the
suitable gadgets.
[0;1mPROGRAM'S WINDOW[0m
The window has several gadgets to load, save, etc.. All the gadgets with an
underlined letter means that pressing that letter on the keyboard is like click
on the gadget.
The gadgets are:
Load Program .- Opens the filerequester to choose the spectrum program
that you want to load. The emulator will detect the format of the file
and then will load it in the Spectrum's memory. IMPORTANT: the programs
can be compressed with PowerPacker. That means to save lots of disk
space. If you load a file that the program don't know, the Spectrum's
memory will be trashed with that file, but this is harmless. This
version of the emulator CAN load programs from tape, but you need to
build the interface described in INTERFACE.IFF.
Reload.- Reloads the last loaded program, that appears in the 'loaded
file' box.
Save program.- Saves the complete memory and registers of the Spectrum in
the format selected with the "SAVE FORMAT" gadgets. Actually they are
saved uncompressed.
POKE.- Guess what...
"SAVE FORMAT" box .- Inside this box there are 4 gadgets to select the
format you want to use to save the Spectrum programs. Only 2 of these
gadgets can be used. The other two are reserved for a future own format
(maybe, if I nedd it...).
RUN .- Starts the emulation. During the emulation the multi-task is
stopped and the emulator takes TOTAL control over the machine. You can
return to the WorkBench by pressing the HELP key.
Reset & RUN.- Like RUN but forcing a RESET of the Spectrum.
[0;1mMENUS & KEYBOARD[0m
[0;1m [0mAll the gadgets with an underlined letter means that pressing that letter on
the keyboard is like click on the gadget. The help key brings the 'About...'
requester. The ESC key quits the emulator. The TAB, an Shift+TAB, key activates
and moves through the integer gadgets.
In the menu you can find the 'About...' and 'Quit' items.
[0;1mTHE SPECTRUM'S KEYBOARD[0m
In the emulation the keyboard is like the one of the Spectrum, with some
'special' keys:
<- Deletes a char (Shift+0)
Ctrl Like pressing Caps+Symbol (E mode)
Alt Like Symbol Shift
Del Like Shift+1 (Edit)
Help Returns to WorkBench
Esc RESET!!!
F1 Switches between color/black&white modes. In CHIPMEM-only systems
the DMA load of the memory slows down the CPU. If you switch to the
black&white mode the DMA load is much smaller, thus the emulator
will run about 10% faster and the sound will be A LOT better.
F2 In black&white mode inverts the image.
Cursor keys Like the original cursor keys of Spectrum+ (Shift+5 6 7 8).
, (key on the right of M) is the ',' (Symbol+N)
. (2ª on the right of M) is the '.'(Symbol+M)
´ (3ª on the right of M) is the '"' (Symbol+P)
Ñ (key on the right of L) is the ':' (Symbol+Z)
; (2ª key on the right of L) is the ';' (Symbol+O)
(Symbols referent to the spanish Amiga 1200 keyboard)
The keypad works complete.
The Kempston joystick is emulated with the Amiga joystick.
Maybe you will notice that you can't press simultaneously 2 keys in the same
row of the keyboard. This is because you have an Amiga 1200, and its keyboard
simply behaves in this very particular way. You can test it with any of those
keyboard-playing Spectrum games (all the games!).
[0;1mEMULAT[0mION
Details about the FULL version:
- The original Spectrum ROM is inside the executable.
- The R register is fully emulated.
- In the F register the 2 unusued bits aren't emulated, and the
emulation of H and N is partial.
- The BCD is fully emulated.
- All the undocumented instructions of the Z80 CPU are emulated.
- Interrupt mode 0 is like interrupt mode 1 (RST $38).
- No NMI (for what?).
- The border is emulated on the copperlist. That means that you
can't do fancy border effects, but the BORDER command works.
- The transfer intructions are emulated at 32 bits level.
- You can run the emulator in color or black&white mode, and
can switch the modes while running. This is mainly for computers
with only CHIP memory.
- FLASH fully emulated.
- Sound emulated at OUT instruction level.
- The kempston joystick is fully emulated at IN level.
- Only partial screen sincronization. Some games will 'blink',
for the moment.
- The Spectrum screen is PAL 15KHz. Sorry, but no VGA monitors.
- The screen is genlock compatible.
- The emulator works even if VBR is not 0.
>>>>>>>>> Addendum for version 1.3 ß <<<<<<<<
- Loads from tape, by means of a patch in the Spectrum's ROM.
- Saves to tape in REAL TIME, that means, is the Z80 emulation that
is sending the sound to the tape, even with an Amiga 1200 without
FAST and in colour mode (!!).
- The border is nearly perfect.
Details about the FAST version (v1.3 ß):
- No BCD emulation. That means that the BASIC will print the numbers
with strange symbols, but the calculatios are still correct. Some
games don't print correctly the score.
- The internal timings are less accurate. Some programs may behave
in strange ways.
- No R register emulation.
- No SAVE to tape, and no stabilized sound.
- No LOAD from tape.
- The border is of slow type.
(really, the FAST version is only for PLAYING!!)
- The speed difference between the FAST and FULL versions is about
5% to 10% (depends on the program). Actually, I use the FULL version
with my Amiga 1200 because I prefer an emulation more accurate.
[0;1mTECHNICAL INFO[0m
Program written in assembler from the first lines to the full 11096 actual
lines (111926 lines when expanding MACROs!!!). In my Amiga 1200 with hard disk
the Devpac 3.02 assembles the emulator in 1 min 58 secs (3 min 50 secs with no
hard disk, and 4 min 53 secs for the last version assembled with my Amiga 500
Plus). Well, if programming is fun... BIG programming is BIG fun!
This is my third program in assembler. I began to program it in my Amiga 500
Plus with 2 Meg of RAM and 3 floppy drives. As soon as I could buy an Amiga
1200 I had converted the emulator to AGA-only and 68020 code.
I began the emulator to experiment with the 68020 code. At the beginning I
was programming conditionally in 68000 and 68020 code, and testing the emulator
in the Amiga 4000/030 of a friend. With the new Amiga 1200 I have experimented
with the AGA chips, and discarded totally the 68000 and OCS/ECS code.
[0;1mPRE-HISTORY (jurassic?, NO! Around summer 1993![0m)
The first black&white/CLI-only version, with ManicMiner inside the
executable, worked in 10 days (phew!). Since then there are 6 different color
emulation systems, and 4 major restructurations of the Z80 emulation. None of
the pre-AGA versions has been released to the public.
This is not a full time project. While developing the emulator I was
studying a little automations course, developing the MPMaster program and
practising my laziness.
[0;1mHISTORY[0m
Version Internal
version
1.0 ß 39.00 (11-March-94)
-First public release.
1.1 ß 39.01 (2-April-94) (renamed ZXAM_SureCrash)
-Audio filter off when emulating. Restored at exit.
-Disabled nearly all of the interruptions. The sound is
now a lot better.
-The system keyboard handler 'freezes' after a while.
I have to use this handler because of the new keyboard
hardware of the Amiga 1200 (snort!).
39.02 (19-April-94)
-Added the ZOOM gadget to the window.
-The #%$&! system keyboard handler is still 'freezing'.
1.2 ß 39.03 (26-June-94)
-¡At last! Fixed the problem with the system keyboard handler.
-Now, if you press the Caps Lock key the system will be
informed correctly about its state.
-Available the FULL (complete) and FAST (faster) versions.
The FAST version is about 10% faster, but it is a less
detailed emulation (no BCD, no R register, etc...).
39.04 (27-June-94)
-The emulator 'detachs' from the SHELL window.
-The icon ToolTypes will be read even if the emulator runs
from the SHELL.
39.05 (29-June-94)
-No more audio problems. If a player (like Delitracker) is
playing when starting the emulation, it will be stopped
until return to the WorkBench (at least, with the players
that I have).
39.06
-The Timer-B of CIA-B is allocated.
-Preparatory version with some synchronizations with CIA Timer
for future implementations of LOAD/SAVE to tape.
1.3 ß 39.07 (7-July-94)
-First attempt of patching the ROM LOAD routine. Now you can
LOAD from tape even in colour mode, with an Amiga 1200 with
no FAST memory, and even with the FLASH working during the
LOAD (!!). The patch seems to be very good, and works
perfectly over the Amiga 1200 and Amiga 4000/030, but needs
testing in other configurations.
-Synchronized the OUT instruction. With this we have REAL
TIME SAVE (not patched!!), and a pure tone BEEP. Some games
now sounds A LOT better, but other have slowed down a little.
39.08 (11-July-94)
-REAL border! Now, if there is enough speed, you can see the
fancy border effects that some programs do.
-Readjusted the proportion of bright added to the colours when
BRIGHT 1. Now looks much more like the original Spectrum.
-Readjusted the LOAD patch. Still loads very well, but now
reacts better to the BREAK, HELP ans ESC keys.
-¡At last! I have managed to do that the lines counter of
Devpac 3.02 "turns around" for the second time. Now the
assembled lines (with the macros expanded) are 133637 (!!).
39.09 (16-July-94)
-Fixed the problem of the LOAD patch and OUT instruction with
the border. Now the border is nearly perfect. Some border
changes are missed because of interferences between the CPU
and the copperlist. To see the border lines while LOADing or
SAVEing is more than enough.
[0;1mFUTURE (near future?... or FAR future?)[0m
When finished there will be two versions:
- FAST version: with external tape loader (like the Spectrum Emulator 1.7).
Some things, like BCD, R register, etc... aren't emulated.
- FULL version: with REAL TIME LOADING (like the real Spectrum). It will
load anything, even the protected programs. It will run over Amiga
4000, and maybe over Amiga 1200 with FAST 32 bits. The emulation will
be almost complete. Anyway, in this version the patch will be optional.
As soon as I can get some true FAST memory for my Amiga 1200 I will begin
to work seriously in the Real Time Loading. Without FAST memory the Amiga 1200
can't run fast enough for real time loading.
Anyway, I am developing a shared library that will make any tape-loading
routine useless. This is the 'clairvoyance.library', that will foresee the
contents of any tape without even having to connect the cassette-player to the
computer. In the future there will be a floppy disk version, and maybe a
network version.
[0;1mACKNOWLEDGMENTS[0m
I wish to thank to:
- Fco Javier Cocaña Galán, Leonardo Cocaña Galán and Juan A. Estela Valín
for their friendship and suggestions.
- Commodore-Amiga Inc for create the very best computer in the world.
- Motorola for their powerful and flexible microprocessors.
- Nico François for create the reqtools.library and powerpacker.library.
- Jan van den Baard for the incredibly useful GadToolsBox.
- IBM and Atari for create so bad computers, making very easy my choosing
for the Amiga.
- Miguel Barnosi, Sysop of TANIT-BBS, for sending the emulator to various
BBSs of Spain.
[0;1mCONTACTS[0m
If you have any information about file formats, please, send it to me along
with a disk with some programs saved in that format. If you find some bug
(NAH!) report me the conditions in that it was found (processor, memory,
etc..). If the problem is with a Spectrum program, send it to me.
I would like if you can send me a letter about the speed of the emulator in
your computer. I have tested the emulator in an Amiga 4000/030 with FAST memory
(runs a bit faster that the real Spectrum) and in my Amiga 1200 without FAST
(sob!). To report me the speed you can measure the time taken for some
operation that I can reproduce in my 1200 and Spectrum +2A, like a RESET, a
BASIC loop (please, send me the listing of the loop), or any other thing. I
am very interested in the speed over an Amiga 1200 with FAST 32 bits and an
Amiga 4000/040.
For sending suggestions, bugs, information interchange, etc., contact me at
the following address:
Antonio J. Pomar Rosselló
C/ Alférez Cerdá nº 13-bajos
Palma de Mallorca 07014
Baleares (Spain)
Palma de Mallorca 16-July-1994
NOTE: my knowledge of English is VERY limited, and this text is a good
sample of this fact.
IF (you=spanish) OR (you KNOW spanish) THEN
GOTO ZXAM_SpectrumAGA.DOCesp : REM The spanish DOC in much more detailed!
ELSE
READ ZXAM_SpectrumAGA.DOCeng : REM Sorry. I hope that you don't get headache!
ENDIF
NOTE2: if you know about a Dragon 32 emulator for the Amiga, please let me
know. I know a friend of mine that wants that I program such an emulator. I
think that some times there is a justification for murder...(AARGH!!).
[0m[1 p