BBC Emulators. Taken from the Internet. Submitted by J.Looyenga (L1M)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is a list of all BBC B emulators currently under progress, to the
best of my knowledge. Any updates, alterations or additions should be
mailed to me, clr1@st-and.ac.uk. For those of you already on this list;
while I was compiling it I thought of a couple of extra things to put in.
Could you please mail me with version number, latest release date, FTP site
and any hardware requirements if you want them to be included. Please note
that the list is *not* maintained by me or Mark Cooke any more. It's
maintained by someone else (David Gilbert I think). To subscribe to it,
send a message to:
beeb-emulators-request@OiT.co.uk
With the *subject* line:
subscribe
And hopefully you'll be added. The list address is
beeb-emulators@OiT.co.uk but please use this sparingly if you are not
subscribed.
Chris
Last update 29/2/96
--------------------------------------------------------------------- 1
Emulator: Beeb
Author(s): James Bonfield (jkb@mrc-molecular-biology.cambridge.ac.uk) and
Steve Youell (8271 emulation) (wgc-e@rx.xerox.com)
Platform: Unix, with or without X11
Language: C
Implementation (core emulator):
Currently has good 6502 and reasonable 6522 support. The keyboard is
handled correctly by generating the necessary 6522 interrupts and letting
the "hardware" do the work. Graphics support is dodgy. Sideways RAM and
ROMS work fine too. I have minimal 6845 support, but this currently does
work for modes 0, 1 and 2. It even provides some semblance of hardware
scrolling (but only in the Y direction). I'll rewrite the 6845 again from
scratch though as I've got better ideas now which should allow for split
screen modes.
Implementation (8271 emulation):
The idea is to emulate the 8271 rather than OSWORD &7F as in effect all
OSWORD &7F does is to give the 8271 all the data in the argument block.
There will also be the Disk Box which is an X program for selecting disks
and giving them to the drive. It's quite easy really, I don't have to
worry about particularly tight programming as anything I write will be
faster than the beeb disk drive. The idea is to have a program on the beeb
which will take a disk and make an image from it containing all the sector
id's and data. The final goal which would truly show off the beeb emulator
and the disk drive I am writing would be to be able to have a disk image
of exile, to be able to load it, protection 'n' all and then for the
emulator to run it. [SY]
--------------------------------------------------------------------- 2
Emulator: !6502em
Author(s): Michael Borcherds (borchrds.teaching@physics.oxford.ac.uk)
Platform: Acorn RISC OS Machines
Language: ARM Assembler
Implementation:
Features:
o Runs the original unaltered OS 1.2 ROM
o Superb sound emulation
o Full filing system (*SPOOL, *EXEC, OSGBPB etc),
o Page at &E00
o Proper emulation of the keyboard interrupt & keyboard
o Completely redefinable keymap
o Full emulation of both VIAs
o Full emulation of strange screen shapes
o Snapshots
o RISC OS * Commands from within emulator
o Supports paged ROMs
o Desktop frontend (F12 to return)
o Elite works
o Emulation of the DFS directory structure within ADFS
o Option to use RISC OS's OS_ReadC to emulate OSRDCH
Still to do:
o Master 128 emulation
o Caps Lock light
o AMX mouse emulation
o Mid-screen mode/palette changes (maybe)
The Emulation
=============
The processor emulated is the 65C12 as in the
Master 128, with the following exceptions:
o Opcodes &07, &4B, &87, &DC emulate the
respective 6502 undocumented opcodes
o The timing of opcodes when in BCD mode is
as for the original 6502, not the 65C12
o A few of the opcode timings are not quite
correct yet
o Opcodes &03 and &23 are used for internal
purposes by the emulator
NB "Unused" Opcodes are defined to be NOPs
The extra Rockwell opcodes are not supported
The 6845 CRTC
-------------
Registers 1,6,12,13,14,15 are fully emulated
Register 3 is partially emulated
In practical terms, the cursor is the only
part not fully emulated
The Video ULA
-------------
Fully emulated, except for "mode 8" and the cursor
Gap modes are displayed without gaps
The Paged ROM Select Register (ROMSEL)
--------------------------------------
Fully Emulated
Supports ROM or RAM in any of the 16 banks
The 6522 VIAs
-------------
The VIAs are fully emulated except for the shift register
The System VIA
--------------
Interrupts supported from 6845, keyboard and the two timers
Interrupts from 7002 ADC and light pen not supported
Keyboard, sound and the screen wrap address supported
Keyboard LEDs not supported
The User Via
------------
Interrupts supported from the 2 timers
User & Printer ports not supported [epic courtesy of MB :-)]
--------------------------------------------------------------------- 3
Emulator: BPC 2.00
Author(s): Mark Cooke (mpc@star.sr.bham.ac.uk)
Platform: PC
Language: 80386 Assembler
Requires: 386+ CPU, EMS (for sideways ram/rom)
Register level compatible VGA card
Implementation:
In previous revisions of the software, I have had the system via, timers
and screen code operating nicely. It should just be a case of integrating
them all into the final version.
The screen uses one of two modes - either a true 640x256 mode (hence the
need for register comatible VGA and multisync - although this may work on
a normal VGA monitor), or a 640x350 letterbox/debugging mode.
The internal representation of the screen is such that split screen modes
are fully supported. Palette manipulation is also possible. Fairly fast
because of optimized machine code writing directly to the screen memory.
Probably not as hardware independant as it should be.
Direct hardware irq hooking to try to provide accurace emulation of the
beeb keyboard response with regard to inkey's and so forth. Initial
keypresses are translated into a grid organized like the Beeb keyboard.
The grid columns have total number of keys pressed count, that is used in
the VIA processing to reduce the amount of work done in multiplexing the
grid ala the beeb.
Sound: None
Disk/Tape support: None yet
Sideways Rom/Ram: Fully supported for ROM/RAM as boot time.
Outstanding Issues:
Lots. Mainly time, disk/tape handling. Messing around with direct
hardware manipulation for improving speed. The screen code is fast, but
slows the system down a lot. I will probably revamp it before I go much
further with it.
Release Date:
realistically with my workload at the momennt, not before the end of the
year at the earliest. The Xray telescope is taking priority right now -
sorry guys :-) [MC, cut a bit by CR]
--------------------------------------------------------------------- 4
Emulator: Xbeeb v0.2
Author(s): James Fidell (james@hermione.demon.co.uk)
Platform: Unix / X Windows
Language: C
FTP : ftp.demon.co.uk /pub/emulators/bbc/Xbeeb/
Homepage: http://www.oit.co.uk/
Implementation:
o Support for the NMOS 6502A and CMOS Rockwell 65C02 and 65C12
processors including all undocumented/illegal opcodes.
o Emulates a Model A or Model B machine.
o Near complete support for the 6522 VIAs -- most of the time you
probably won't miss what I haven't implemented yet.
o Support for MODE 7 teletext (including its own teletext fonts).
o All the bitmapped screen modes including hardware scrolling and
odd screen geometries, all done via emulation of the 6845 CRTC
and video ULA. A few minor bugs remain here.
o Full colour support, including flashing colours. (And the stripy
screen in MODEs 3 and 6 if you do VDU 19,0,4,0,0,0).
o Sound (under Linux/VoxWare) -- at the alpha stage at the moment.
o Emulated DFS. Xbeeb comes with it's own DFS ROM to allow emulation
of many of the Acorn DFS commands. File images are created as part
of the standard UNIX directory structure.
o Sideways ROM/RAM are fully supported.
o Two keymaps are available -- one which uses the key legends as input
to the emulator and another which bases the keypress information on
the position of the key on the keyboard, making many games much
easier to play.
o Start-up MODE and keyboard DIP-swtich setting from the command line.
o Runs about 90% of the games that I have tested so far, including
Frak!, Zalaga, nearly all the Acornsoft games and many of the Ultimate
games. Notable exceptions at the moment are Elite, Revs and Acheton.
I'm working on those :-)
The source is known to compile and run under Solaris 2.5 and Linux.
--------------------------------------------------------------------- 5
Emulator: Beebem
Author(s): David Gilbert (gilbertd@cs.man.ac.uk) (Core and X)
Nigel Magnay (magnayn@cs.man.ac.uk) (MS Windows port)
Platform: (X-windows on Unix) or MS Windows (3.1x/95 /NT)
Works on every Unix box tried so far (Linux/HP/Sun/Alpha...)
although it tends to need gcc.
Language: C, some in C++ (for X)
FTP: ftp.compsoc.man.ac.uk /pub/beebem
Implementation:
All graphics modes now emulated (except the cursor) including wierd ones
like the AUG mode 8. Virtually full emulation of the 6845. Also supports
change palette halfway down the screen, etc.
Register level 8271 emulation works fine (read only).
Keyboard emulation is at hardware level.
Runs with unmodified Basic, OS1.2 and DNFS roms.
Speed is a bit limiting; runs at about beeb speed on a Pentium 90.
Runs Elite fine (with palette switch); the only program with known problems
is Revs which seems to have very touchy timing requirements.
There's an alpha version for Linux which has sound on the FTP site. [DG]
--------------------------------------------------------------------- 6
Emulator: Horizon (was MacBeebEm)
Version: 1.0, March 1996
Author(s): Chris Lam, Aston University, UK (lamcw@aston.ac.uk)
Platform: Apple Macintosh (and possibly Windows 95)
Language: Codewarrior 8
Implementation:
New name, new version. Horizon has been significantly updated... some 20%
speed up, full sound support, fast large/full screen displays, proper
Apple keyboard layout, much better Teletext mode, speedometer and more.
Plays Revs, Elite and many others. Available for both 68k and PPC machines.
Horizon is no longer freeware. A cut-down demo version is available to
the public and the full shareware version costs 15 UKP.
For the demo and info about Horizon's sister emulator Rainbow (Atari 8bit),
visit
http://www.aston.ac.uk/~lamcw/emulators.html
where there are also some hotlinks to other Beeb sites. [CWL]
--------------------------------------------------------------------- 7
Emulator: BBC386
Author: Stephen Quan (quan@sol.surv.utas.edu.au)
Platform: MS-DOS, Unix
Language: 386+ and C
Implementation:
I am currently working on both a C version and a 386 (assembly) version of
an emulator for a bbc model-b. The C version will actually run on any
platform with a C compiler (no graphics yet...), but it is terrible slow
since I have not implemented any optimisations. Rather, I use the C
version to verify my ideas before I dive into deep water with assembly
code.
The current status is, I have implemented 6502 without BCD and have hacks
for OSWRCH and OSRDCH.
I am now working on the keyboard and other shiela functions in FE40-FE4F.
When this is completed, I can remove the hack for OSRDCH. Later on I will
work on some of the 6845 (sheila functions in FE00-FE0F, I think) so I can
remove the hack for OSWRCH.
Overall, the hardware side, Fred, Jim & Sheila seems a bit more complex
than I thought, and reading the AUG, studying (2nd semester started) and
working, will mean I might be forced to a snail's pace. [SQ]
--------------------------------------------------------------------- 8
Emulator: TOL - The Owl Lives (formerly My6502)
Version: 3.0 (29th February 1996)
Author(s): Chris Rae (clr1@st-and.ac.uk)
Platform: UNIX (based on Linux on the PC at the moment)
Language: C
Requires: not much so far
Homepage: http://www.st-and.ac.uk/~www_sa/personal/clr1/bbc
Implementation:
I wiped My6502 by mistake - it doesn't exist at all now. However,
undaunted, I am now writing a completely new one in C.
At the moment, hardly any of the program actually exists at all. The only
reason it's in this list is because it's mine (and hey, it's my list!)
and because soon it will exist. More here and on the WWW pages when it's
at a more realistic stage. [CR]
------------------------------------------------------------------- 9
Emulator: MODEL-B (soon to be renamed, possibly)
Author(s): Tom Seddon (T.W.Seddon@ncl.ac.uk)
Platform: PC, MS-DOS, 386+
Language: C (djgpp)
Release date: Unknown (hopefully mid-April or so)
FTP: no
Version: 0.1
Homepage: http://www.ncl.ac.uk/~n5013784/bbcmicro.html
Implementation:
Bitmap graphics modes, odd screen sizes, split palette, split mode, basic
teletext, pop-up control menu, system VIA, user VIA... all OK. Speed is
now about 110% on average, on my 486dx2-80. It feels slower though. I am
currently working on a filing system; for the moment I am done with the
hardware side of things.
After I have released it I will work on converting it into 386 assembler,
and add better teletext emulation, snapshot support and maybe even sound.
[TS]
-------------------------------------------------------------------- 10
Emulator: BBCEm
Author(s): Nigel Something; sorry - no surname! (apm1001@phx.cam.ac.uk)
Platform: Acorn Archimedes
Language: ARM Assembler
Implementation:
Has no hardware poking as yet, can read keyboard boot up state on "switch
on", takes input by blasting key presses into the 16byte keyboard buffer.
Output is done after processing as the monitor is not yet connected. Can
boot up to BASIC prompt in 1.5 secs Can execute BASIC programs and draw
graphics. There are some OPcode bugs that cause it to crash occasionally. [N]
-----------------------------------------------------------------------