Skip to content
David Banks edited this page May 9, 2020 · 49 revisions

Contents

Important: Changes for Beta 3

This page has been updated to reflect the Beta 3 release, which is now available here: https://github.com/hoglet67/BeebFpga/releases/latest

Important: The Beta 3 release requires version v1.27 or above of TBBLUE.FW (“the firmware”).

An old version of this page covering the Beta 1 release, can still be read here

An old version of this page covering the Beta 2 release, can still be read here

The Beta 3 release adds the following features:

  • Compatible with Spec Next Multi Core loader
  • Add support for joystick
  • Add emulation of AMX Mouse
  • Add 2nd 6522 for MMFS at &FE80 (this avoids a clash with the mouse)
  • DVI mode now uses 720x540 (which scales better to 1080p)
  • DVI mode no longer uses video guard band (this is a bug fix)

Note: No attempt has yet been made to integrate these cores with the standard Spec Next configuration files. So you may need to change the video mode when the core is started. The core defaults to "Video Mode 2 (HDMI/VGA)", which some VGA monitors will struggle with. See the Basic Operation section below for more details.

Overview

The BeebFpga project now includes two cores for the Spectrum Next:

  • a BBC Micro (Model B) core, using the cycle accurate T65 6502 implementation
  • a BBC Master core, using Alan Daly's 65C02 implementation

These cores include a common set of features:

  • High quality VGA output @ 50Hz
  • High quality HDMI output @ 50Hz
  • Original sRGB SCART output @ 50Hz
  • Membrane Keyboard support
  • Dual Joystick support
  • Mouse support
  • Beeb SID support
  • Music 5000 support
  • Internal 4MHz 65C02 Co Processor (for Tube Elite!)
  • VideoNuLA (an extended colour palette, and additiona screen modes)
  • MMFS SD Card File System

There are further features in develoment that are currently disabled in this release:

  • an ICE 6502/65C02 debugger (uses the ESP Wiki connector as a 115,200 baud serial port)
  • an external Pi Tube Direct Co Processor (uses the Pi Accelerator connector)

These are disabled because of possibile compatability issues with the normal use of the Spectrum Next Wifi Module and Pi Accelerator.

Known Issues

  • The HDMI audio quality is quite poor. This is because the 125KHz Beeb Audio is being resampled to 48KHz without any interpolation/decimation. This may be addressed in a future release.
  • No attempt has yet been made to integrate with the Spec Next configuration system.

Installation

The latest version of the Spectrum Next BeebFpga cores can be found here: https://github.com/hoglet67/BeebFpga/releases/latest

It contains the following files:

./machines/bbcmaster/adfs.rom
./machines/bbcmaster/basic4.rom
./machines/bbcmaster/core.bit
./machines/bbcmaster/core.cfg
./machines/bbcmaster/dfs.rom
./machines/bbcmaster/edit.rom
./machines/bbcmaster/mammfs2.rom
./machines/bbcmaster/mos.rom
./machines/bbcmaster/owl.rom
./machines/bbcmaster/terminal.rom
./machines/bbcmaster/view.rom
./machines/bbcmaster/viewsht.rom
./machines/bbcmodelb/basic2.rom
./machines/bbcmodelb/blank.rom
./machines/bbcmodelb/core.bit
./machines/bbcmodelb/core.cfg
./machines/bbcmodelb/os12.rom
./machines/bbcmodelb/rammas6.rom
./machines/bbcmodelb/swmmfs2.rom

These should be copied onto your Spec Next SD Card.

When you start the Spectrum Next, press "C" to launch the Extra Core Updater, and follow the on-screen instructions. If you have installed the files correctly, you should find "Acorn BBC Master" and "Acorn Model B" cores are now available. Follow the on-screen instructions to program these into FLASH. You may use any slot.

ROMs

Both the BBC Micro (Model B) and BBC Master Cores contain 64KB of ROM data in the .bit file. This is sufficient to provide a runnable system (i.e. OS, Basic and a SD File System). So if all you want to do is to play games, you don't need any additional ROMs.

In the case if the BBC Master Core, several standard ROMs (DFS, ADFS, Edit, View and View Sheet) are omitted, as is the Owl Logo ROM. There is a ROM loader Basic program provided in /Cores/AcornMaster/launch.bas that will pre-load these missing ROM images into memory (at the right banks), then switch to the core. Running this program is a convenient way to start a complete BBC Master system.

MMFS SD Card File System

MMFS is a modern SD Card File System, widely used in the Acorn community, and is included as standard in the Beeb FPGA Cores. MMFS uses a FAT16/32 formatted SD Card containing a single file called BEEB.MMB. This file is normally ~100MB, and is a concatenation of 511 raw 200KB 80-track disc images.

There are two limitations with MMFS's use of the SD Card:

  • BEEB.MMB must be one of the first 16 files in the root directory
  • BEEB.MMB must be contiguous (i.e. it cannot be fragmented)

For these reasons, it's one option is to use a seperate SD card for MMFS, and hot swap the card once over once the Beeb core has booted. (Ctrl-BREAK must then be pressed).

However, it is possible to build a SD card that contains both MMFS's BEEB.MMB file, and the Spec Next distribution, by following these steps:

  • start with freshly formatted SD Card (FAT16 or FAT32)
  • copy the BEEB.MMB file to the SD Card
  • copy the Spec Next distribution files to the SD Card
  • copy the BeebFpga additional core files to the SD Card

Here is a link to a standard BEEB.MMB file: https://github.com/hoglet67/BeebFpga/releases/download/specnext_beta1/BEEB.MMB.zip

It contains the following

  • Disk 0: Stairway to Hell Archive MENU
  • Disk 1: Beeb FPGA Support Disk
  • Disk 2: MMFS 1.44 ROM images
  • Disk 3: Klaus Dormann 6502 Test Suite
  • Disk 4: Bruce Clark BCD Test Suite
  • Disks 20-252: Stairway to Hell Archive Disks
  • Disk 299: 6502 Co Processor Life
  • Disks 301-315: Beeb SID Demos
  • Disk 320: Music 5000 System Disk
  • Disks 323-352: Music 5000 Compilation Disks
  • Disk 360: Bad Apple
  • Disk 370: Video NulA System Disk
  • Disk 371-377: Video NulA Demo Disks (gallery, games, etc)
  • Disk 400-437: Retro Software Games

See the examples section below for some things to actually try out!

The complete MMFS Command Reference can be found here: https://github.com/hoglet67/MMFS/wiki/Command-Reference

Basic Operation

As there are several user configurable options (especially for the video output format), a set of ten virtual config key s been added. These are referred to as Config-0 through to Config-9.

On the Membrane keyboard, the yellow NMI button in conjunction with a number key (0-9) selects a particular config key. For example, Config-1 is bound to Yellow NMI + 1.

On the PS/2 keyboard, Ctrl-Alt with a function key (F1..F10) selects a particular config key. For example, Config-1 is bound to Ctrl-Alt-F1. As there is no F0, Config-0 is bound to Ctrl-Alt-F10.

These configuration options are not currently persistent. So each time the core is re-loaded, they will need to be set again. A future release will likely improve this.

Video Output Mode:

The video output mode can be selected with:

  • Config-1 - Video mode 1: RGB SCART with Composite Sync (15.625KHz)
  • Config-2 - Video mode 2: HDMI/VGA, using the RGBtoVGA scan doubler for Modes 0-6 and native VGA output for Mode 7 (default)
  • Config-3 - Video mode 3: HDMI/VGA, using the Mist scan doubler for all screen modes
  • Config-4 - Video mode 4: HDMI/VGA, using the Mist scan doubler for Modes 0-6, and native VGA output for Mode 7

The RGB SCART mode is identical to an original BBC Micro. It requires a VGA to SCART cable, and a television with an RGB capable SCART input. This mode will result in a blank screen on most VGA monitors.

The HDMI/VGA modes are all 50Hz, so your TV/Monitor must support 50Hz for this to work.

(For VGA I personally use a HP LP2065 monitor, which is excellent. Depending on the monitor, you may need to play around with the monitor's CLOCK and PHASE settings to get a good looking image.)

The recommended mode, especially for HDMI, is video mode 2. This uses 720x576p HDTV timings, with a 27MHz pixel clock. Scanline doubling and scanline retiming is used to adapt the Beeb's video timings to 27MHz.

Video Modes 3 and 4 use different pixel clocks (24MHz/32MHz), which may give a better image on some VGA monitors.

Additional HDMI options:

In addition to the main video mode, certain aspects of the HDMI stream can be adjusted:

  • Config-5 - HDMI audio/metadata on/off (default is on, off may be better for a DVI monitor)
  • Config-6 - HDMI aspect: auto (default)
  • Config-7 - HDMI aspect: 4:3
  • Config-8 - HDMI aspect: 16:9

Whilst older DVI-1 monitors are electrically compatible with HDMI, the presence of HDMI audio and metadata can prevent the video signal from being accepted. Config-5 turns off HDMI all audio and metadata, improving compatibility.

The signaled aspect ratio can also be adjusted by the user. The default behaviour (Config-6) is to select a 4:3 aspect ratio in Mode 0-6 and a 16:9 aspect ratio on Mode 7. This is done to avoid Mode 7 looking overly narrow, as it's only 480 pixels wide, compared to 640 in Mode 0-6.

Alternatively, you can select Config-7 for a fixed 4:3 aspect ratio, and Config-8 for a 16:9 aspect ratio.

It's important to note that changing the aspect ratio doesn't actually change the video content of the image in any way. It's just signalling to the TV how the source wants the "program" to be displayed. Most TVs allow the "program" aspect ratio to be overridden (i.e. ignored), so do check that the Aspect Ratio on TV is also set to "auto" or "original".

Miscellaneous options:

There are two further configuration options:

  • Config-9 - Internal 65C02 Co Processor on/off. The default is off. A Control-BREAK is needed after changing this setting.

  • Config-0 - Video debug on/off. The default is off. All this does is add 1-pixel wide green border to the image, so you can determine whether the TV is overscanning or not. Many TVs (especially LG) will overscan 576p video.

Green Button

The green button on the Spec Next is no longer used.

Red Button

A short press on the Red (Reset) button will perform a power-up reset on the Beeb Core. This should recover from any possible program crash.

A long (1s) press on the Red (Reset) button will reconfigure the system back to the Spec Next core. This saves having to power cycle.

(This feature is not currently available on the PS/2 keyboard)

Membrane Keyboard Mapping

Mapping the 58-key Spectrum Next keyboard to 74-key BBC Micro keyboard was somewhat of a challenge.

The mapping is as follows:

Spec Next Key Beeb Key
BREAK BREAK
EDIT ESCAPE
TRUE VIDEO TAB
INV VIDEO COPY
CAPS LOCK CAPS LOCK
GRAPH CTRL
CAPS SHIFT SHIFT
EXTEND See below
SYMBOL SHIFT See below
DELETE DELETE
ENTER RETURN
Up/Down/Left/Right Up/Down/Left/Right
A-Z A-Z
0-9 0-9
; ; and +
" : and *
, , and <
. . and >

This misses out the following Beeb keys:

  • @
  • ‐ and =
  • ^ and ~
  • / and |
  • [ and {
  • ] and }
  • _ and £
  • / and ?

To access these, it's necessary to use the Spec Next SYMBOL SHIFT as a modifier, which operates exactly as it does in the Spec Next core. For example, SYMBOL SHIFT + L should give you =. i.e. just look for the key cap with the symbol character you need.

The EXTEND key is also used as a modifier to access the 10 red BBC function keys. For example, F1 is Extend + 1.

Finally, on the Membrane keyboard, the yellow NMI button in conjunction with a number key (0-9) selects a particular config key. For example, Config-1 is bound to Yellow NMI + 1.

See Basic Operation for a description of the config keys.

PS/2 Keyboard Mapping

The PS/2 Keyboard mapping is the same as other Beeb Fpga implementations, and attempts to map keys by physical position.

For example, the Beeb ; key is next to L, and the Beeb : key is just to the right of that, just like they are on a real Beeb keyboard.

This can be confusing at first, but it gives a better experience when playing games (most of the time!)

On the PS/2 keyboard, Ctrl-Alt with a function key (F1..F10) selects a particular config key. For example, Config-1 is bound to Ctrl-Alt-F1. As there is no F0, Config-0 is bound to Ctrl-Alt-F10.

See Basic Operation for a description of the config keys.

Other notable Beeb keys are:

PS/2 Key Beeb Key
F12 BREAK
Esc ESCAPE
End COPY
Backspace DELETE

Examples

These instructions all assume the Master version of the Core is loaded, and the membrane keyboard is being used.

Planetoids

  • Shift-BREAK to boot STH Menu
  • 43
  • E
  • Enter

Rocket Raid

  • Shift-BREAK to boot STH Menu
  • 47
  • T
  • Enter

Pheonix (by Tricky)

  • *DBOOT 436

Tube Elite

  • Enable the Co Processor by pressing Config-9 (Yellow + 9)
  • Control Break (Control = GRAPH key)
  • *DIN 45
  • *TUBEELT
  • Press Space
  • Press F0 (Extend-0) to launch

The flight controls are documented here: http://www.elitehomepage.org/playguide.htm#A14

And here's a scan of the original "Space Trader's Flight Training Manual": https://openretro.org/file/37a540d376344ac9add72431ecf70ab46dfb7fe4

The Spec Next keyboard layout is not ideal for this!

Music 5000

  • *DBOOT 320
  • *DBOOT 320
  • Use Up/Down/Enter to select "Load program"
  • enter filename: ppach
  • Enter to "Run program"

Other music files on this disc are:

  • concert
  • pavane
  • ppach
  • jukebox

After pressing Escape, F0 (Extend-0) will return to the menu.

Beeb SID

  • *UNPLUG 9
  • Control BREAK
  • *DBOOT 305 ( or any disk from 301 to 315)

VideoNuLA Gallery 1/2

  • *UNPLUG 9
  • Control BREAK
  • *DBOOT 371 or *DBOOT 372