Date : Tue, 20 Jun 1995 21:59:42 +0100 (BST)
From : Chris Rae <clr1@...>
Subject: BBC Emulators in Progress (every-so-often posting)
- cut here ------------------------------------------------------------
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@... For those of you already on the 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 and any
hardware requirements if you want them to be included. Please note that
the list is *not* maintained by me any more; it's maintained by Mark
Cooke. His address is in the list, I can't be bothered looking it up. ;-)
Thanks,
Chris
Emulator: Beeb
Author(s): James Bonfield (jkb@...) and
Steve Youell (8271 emulation) (wgc-e@...)
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]
Emulator: !6502em
Author(s): Michael Borcherds (borchrds.teaching@...)
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 6850 ACIA & Serial ULA
Not Emulated
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
The 7002 ADC
Not emulated
Econet & Disc Hardware
Not Emulated
Tube Hardware
Not Emulated [epic courtesy of MB :-)]
Emulator: BPC 2.00
Author(s): Mark Cooke (ee2015@...)
Platform: PC DOS 486+
Language: Assembler
Implementation:
Calamity struck installing Linux. I now have a working 6502 with partial
6522 support. The keyboard matrix is fudged - it took me a long time
first time round to get it working right.
Screen is a basic text screen. Reimplementing the old screen handling
code should be fairly easy - it dealt with split screen modes, palettes
and non-standard settings (reasonably well).
Version is now 2.00 (even though 1.0 is dead). Release date is very
dependant on my workload at Uni - probably soon after Christmas. [MC]
Emulator: Xbeeb
Author(s): James Fidell (jfid@...)
Platform: Unix / X Windows
Language: C
Implementation:
MODE 7 teletext works, near enough complete 6502 and 6522 emulation, some
CRTC emulation, no sound, no graphics. [JF]
Emulator: untitled, as far as I know
Author(s): David Gilbert (gilbertd@...)
Platform: X-windows
Language: C, some in C++ (for X) compiled to Linux, Sun 4.1.3 and HP
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. Now trying to get
register-level 8271 emulation working. Keyboard emulation is at hardware
level.
Speed is a bit limiting; runs at about 1/3 of beeb speed on a Pentium 90.
Emulator: MacBeebEm
Version: 12 September 1994
Author(s): Chris Lam, Aston University, UK (lamcw@...)
Platform: Apple Macintosh
Language: Think C 6.00
Implementation:
Emulator: BBC386
Author: Stephen Quan (quan@...)
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]
Emulator: My6502
Version: 2.7 (5 August 1994)
Author(s): Chris Rae (clr1@...)
Platform: IBM PC
Language: 80286 assembler under Turbo Pascal 6 IDE
Requires: 286+ processor, VGA
Implementation:
6502 instruction set working okay; still some minor bugs. No SHEILA I/O
implemented. Screen emulated in mode 0; too bad it boots into mode 4!
Aaarggghh! Working currently on keyboard. The system boots into BASIC,
but you can't type anything because I haven't got the k/b working. [CR]
Future plans:
To implement &FE30 ROM switching, proper screen refreshing, filing system.
Emulator: BBCEm
Author(s): Nigel Something; sorry - no surname! (apm1001@...)
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]
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
"You learned your lesson far too late,
from the links in the chemist's chain"
Marillion - "He knows, you know" (Script for a Jester's Tear)