Date : Wed, 24 May 1995 14:48:46 +0200
From : ddhlo@...
Subject: Paired instruction fetch
Hi All!
I hope this doesn't get trivial, but I'm still working on the 6502 emulator,
and have finally got the thing running. For testing I've used the programs
below.
Original benchmark program (256^3 loop) for testing 6502 emulators:
NMOS:
00 01 a9 00 LDA #0
02 03 a2 00 LDX #0
04 05 a0 00 .loop2 LDY #0
06 88 .loop DEY
07 08 d0 fd BNE loop
09 ca DEX
0a 0b d0 fa BNE loop
0c a8 TAY
0d 88 DEY
0e 98 TYA
0f 10 d0 f3 BNE loop2
11 60 RTS
I have modified the benchmark program to allow for one CMOS instruction
(DEA=decrement accumulator).
CMOS:
00 01 a9 00 LDA #0
02 03 a2 00 LDX #0
04 05 a0 00 LDY #0
06 88 .loop DEY
07 08 d0 fd BNE loop
09 ca DEX
0a 0b d0 fa BNE loop
0c 3a DEA
0f 10 d0 f7 BNE loop
11 60 RTS
Now - when executing the CMOS program on both my architectures (SIF:
one-by-one fetching, PIF: selected opcodes executed in pairs (like
DEX:BNE<n>)), I get these times:
Host CPU (DOS): Single Instruction Fetch Paired Instruction Fetch
(SIF architecture) (PIF architecture)
80486DX-33MHz 27 seconds 11 seconds
That's a huge performance improvement... But then again - this program does
nothing more that performing paired instructions. Does anyone have a more
generic method?
I have dropped my initial idea of having a 4byte pipeline for opcode
fetching.
Please note I've disabled 6845, VIAs and IRQ/NMI. This is a stripped 6502
emulation.
P.S: Does anyone know where I can pick up David Alan Gilbert's BBC emulator
for Windows 95?
It's stated in his recent e-mail to the list, that binary examples should be
inthe zipped file - but I onlyu get source code then unzipping it...
I'm interested in:
BEEBWIN.EXE - Uses WinG
BEEBNWG.EXE - Doesn't use WinG
Thanks in advance.
Lars