|
84736 packages online
|
|
|
|
misc/emu/Speccylator-src.lha |
|
No screenshot available
|
|
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
|
|
|
|
Page generated in 0.02 seconds |
Aminet © 1992-2024 Urban
Müller and the Aminet team.
Aminet contact address: <aminetaminet net> |