AminetAminet
Search:
84475 packages online
About
Recent
Browse
Search
Upload
Setup
Services

misc/emu/Speccylator-src.lha

Mirror:Random
Showing:m68k-amigaosppc-amigaosppc-morphosi386-arosi386-amithlonppc-warpupppc-powerupgeneric
No screenshot available
Short:Source code for Speccylator
Author:Richard Carlsson
Uploader:jrj aapt net au (James Jacobs)
Type:misc/emu
Version:1.0
Architecture:generic
Date:2007-07-12
Download:http://aminet.net/misc/emu/Speccylator-src.lha - View contents
Readme:http://aminet.net/misc/emu/Speccylator-src.readme
Downloads:1249

This is the source code for the Speccylator emulator
(Aminet:misc/emu/Speccylator.lha).

---

I wrote my Z80 emulator in MC68000 assembler, since I wanted the fastest
possible emulation on my Amiga 500. I only got an '030 processor quite
late in the project, so there is little or no optimization that actually
takes into consideration the properties of more modern CPU architectures
such as caching, large memories, or even the fact that a 68030 can move 32
bits from memory in one bus cycle, while the 68000 could only move 16 bits
at a time. Hence, it is very hard to beat the Speccylator on a 68000 CPU
(unless possibly if you do dynamic compilation instead of interpretation,
which I never got around to trying), but eg. the Spanish ZXAM was quite a
lot faster on a 68030. I did also pride myself on having a very exact
emulation, and last I looked, I did not have a single bug in the Z80
emulation that I knew of. I've toyed with the idea of rewriting the whole
thing in C, to see how fast I could make it while still keeping it
portable. It would be fun, but I have absolutely no time for it, what with
all my other projects.

The emulation core uses 64K 16-bit words of threaded code as a
"translation cache", mirroring the 64K bytes of the normal address space.
(I never had time to try to implement banked memory.) Each word is an
offset from a base pointer in code memory to the particular assembler
routine to be executed. There are several special "trap" routines that do
not correspond to any Z80 instruction; in particular, a zero word points
to the actual routine which decodes an instruction and replaces the zero
with the offset to the proper routine. There is relatively little use of
tables, eg. for BCD arithmetic, since memory access is pretty slow on a
68000. But I probably made too many assumptions about speed, rather than
actually measuring, so there may be many cases where I should have kept a
value (eg. a Z80 register) in memory instead of sacrificing a 68000
register. The design could probably have been a bit cleaner without losing
any speed (or even get a slight speedup).


Contents of misc/emu/Speccylator-src.lha
 PERMSSN    UID  GID    PACKED    SIZE  RATIO METHOD CRC     STAMP          NAME
---------- ----------- ------- ------- ------ ---------- ------------ -------------
[generic]                 2905    8611  33.7% -lh5- 78be Sep 16  1996 Speccylator.v33/asm.a
[generic]                 1780    4242  42.0% -lh5- a10b Sep 16  1996 Speccylator.v33/copper.c
[generic]                 3450   12145  28.4% -lh5- 7d24 Sep 16  1996 Speccylator.v33/data.c
[generic]                 3192    8400  38.0% -lh5- 2ae6 Sep 16  1996 Speccylator.v33/defs.h
[generic]                  675    1789  37.7% -lh5- 516e Sep 16  1996 Speccylator.v33/DMakefile
[generic]                  381     623  61.2% -lh5- a2dd Sep 16  1996 Speccylator.v33/envdata.i
[generic]                  499     912  54.7% -lh5- 8c88 Sep 16  1996 Speccylator.v33/gfx.c
[generic]                 9600   29549  32.5% -lh5- 0aee Sep 16  1996 Speccylator.v33/intuition.c
[generic]                 6575   20365  32.3% -lh5- f377 Sep 16  1996 Speccylator.v33/keys.a
[generic]                15118   44303  34.1% -lh5- ee29 Sep 16  1996 Speccylator.v33/main.c
[generic]                12401   36844  33.7% -lh5- 7445 Sep 16  1996 Speccylator.v33/screen.a
[generic]                  752    1621  46.4% -lh5- 3186 Sep 16  1996 Speccylator.v33/TODO
[generic]                  598    1120  53.4% -lh5- 242e Sep 16  1996 Speccylator.v33/version.h
[generic]                 4873   14474  33.7% -lh5- ff73 Sep 16  1996 Speccylator.v33/Z80.h
[generic]                 3404    9495  35.9% -lh5- 620b Sep 16  1996 Speccylator.v33/Z80.i
[generic]                 2541    6693  38.0% -lh5- 8c75 Sep 16  1996 Speccylator.v33/Z80_struct.i
[generic]                 2354    5858  40.2% -lh5- 30f0 May 12  1995 Z80.v33/cache.txt
[generic]                 1545    8003  19.3% -lh5- 5202 May 12  1995 Z80.v33/c_stubs.a
[generic]                  310     489  63.4% -lh5- 4d04 May 12  1995 Z80.v33/Devpac.prefs
[generic]                  808    1540  52.5% -lh5- 58dc May 12  1995 Z80.v33/diffs.txt
[generic]                 3112   21688  14.3% -lh5- 3a40 May 12  1995 Z80.v33/distant.a
[generic]                  309     656  47.1% -lh5- 60b1 May 12  1995 Z80.v33/DMakefile
[generic]                  388     632  61.4% -lh5- 5594 May 12  1995 Z80.v33/envdata.i
[generic]                 1731    4806  36.0% -lh5- c74f May 12  1995 Z80.v33/extern_instr.a
[generic]                  830    2056  40.4% -lh5- 16fc May 12  1995 Z80.v33/files
[generic]                   73      73 100.0% -lh0- 86d4 May 12  1995 Z80.v33/GenAm.opts
[generic]                 3827   17382  22.0% -lh5- a84c May 12  1995 Z80.v33/generic_macs.i
[generic]                 1329    3783  35.1% -lh5- 441e May 12  1995 Z80.v33/impldept.a
[generic]                 6479   26286  24.6% -lh5- 3ea8 May 12  1995 Z80.v33/machine_macs.i
[generic]                  935    2812  33.3% -lh5- 5625 May 12  1995 Z80.v33/notes.txt
[generic]                  770    1363  56.5% -lh5- 3352 May 12  1995 Z80.v33/POSTER
[generic]                 5008   40420  12.4% -lh5- 2efb May 12  1995 Z80.v33/prefix_decode.a
[generic]                  873    1616  54.0% -lh5- ad0c May 12  1995 Z80.v33/README
[generic]                18333  105845  17.3% -lh5- 6e33 May 12  1995 Z80.v33/std_instr.a
[generic]                 1385    5956  23.3% -lh5- 8628 May 12  1995 Z80.v33/std_offsets.a
[generic]                  201     820  24.5% -lh5- 7742 May 12  1995 Z80.v33/tables.a
[generic]                  563    1035  54.4% -lh5- 199a May 12  1995 Z80.v33/TODO
[generic]                 5506   26894  20.5% -lh5- 79d0 May 12  1995 Z80.v33/undoc_instr.a
[generic]                  212     436  48.6% -lh5- 427f May 12  1995 Z80.v33/user.i
[generic]                 1806    5865  30.8% -lh5- 75bd May 12  1995 Z80.v33/utility.a
[generic]                11776   34446  34.2% -lh5- 2021 May 12  1995 Z80.v33/Z80.a
[generic]                 5188   12114  42.8% -lh5- 1843 May 12  1995 Z80.v33/Z80.doc
[generic]                 4873   14474  33.7% -lh5- ff73 May 12  1995 Z80.v33/Z80.h
[generic]                 3404    9495  35.9% -lh5- 620b May 12  1995 Z80.v33/Z80.i
[generic]                 4581   12739  36.0% -lh5- 7613 May 12  1995 Z80.v33/Z80_coding.i
[generic]                 1228    2892  42.5% -lh5- 64e9 May 12  1995 Z80.v33/Z80_signals.txt
[generic]                 2541    6693  38.0% -lh5- 8c75 May 12  1995 Z80.v33/Z80_struct.i
---------- ----------- ------- ------- ------ ---------- ------------ -------------
 Total        47 files  161022  580353  27.7%            Jul 12 08:33

Aminet © 1992-2024 Urban Müller and the Aminet team. Aminet contact address: <aminetaminet net>