{"id":10,"date":"2015-08-24T16:29:32","date_gmt":"2015-08-24T16:29:32","guid":{"rendered":"http:\/\/darrenizzard.com\/?p=10"},"modified":"2026-01-11T09:50:37","modified_gmt":"2026-01-11T09:50:37","slug":"beech-a-bbc-micro-emulator","status":"publish","type":"post","link":"https:\/\/darrenizzard.com\/index.php\/2015\/08\/24\/beech-a-bbc-micro-emulator\/","title":{"rendered":"Beech: a BBC Micro emulator (v0.3)"},"content":{"rendered":"<figure id=\"attachment_12\" aria-describedby=\"caption-attachment-12\" style=\"width: 367px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-12 size-full\" src=\"https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/beechelite.png\" alt=\"Yes, Beech can run Elite\" width=\"367\" height=\"400\" srcset=\"https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/beechelite.png 367w, https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/beechelite-275x300.png 275w\" sizes=\"auto, (max-width: 367px) 100vw, 367px\" \/><figcaption id=\"caption-attachment-12\" class=\"wp-caption-text\">Yes, Beech can run Elite<\/figcaption><\/figure>\n<p>[update: <a href=\"https:\/\/darrenizzard.com\/index.php\/2026\/01\/11\/beech-bbc-micro-emulator-0-4\/\">0.4 now available<\/a>]<\/p>\n<p>Beech is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/BBC_Micro\">BBC Micro<\/a> emulator. It emulates a Model B with 8271 DFS, and also supports the Music 500\/5000\u00a0synthesizer.<\/p>\n<p>The program is licensed under the GPL v2.<\/p>\n<h3>Requirements<\/h3>\n<div>\n<p style=\"padding-left: 30px;\">Beech is currently Windows-only, and requires at least Windows 7.<\/p>\n<p style=\"padding-left: 30px;\">Before running Beech, you&#8217;ll need to find the following ROM images and place them in the roms directory:-<\/p>\n<\/div>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>os12.rom<\/li>\n<li>basic2.rom<\/li>\n<li>dfs.rom or wdfs.rom (optional, if you want to use disks; either the Acorn or Watford DFS will do)<\/li>\n<li>ample.rom (optional, if you want to use the Music 5000)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Downloads<\/h3>\n<p style=\"padding-left: 30px;\">Please note that none of these downloads include ROMs, disks, tapes, or snapshots.<\/p>\n<p style=\"padding-left: 30px;\">As well as Beech itself, you might need the Visual C++ 2013 Redistributable too. If Beech complains of missing DLLs, just download the appropriate redistributable from here and run it. Alternatively, if you prefer, you can get them <a href=\"https:\/\/www.microsoft.com\/en-gb\/download\/details.aspx?id=40784\">direct from Microsoft<\/a>.<\/p>\n<table border=\"0\" cellspacing=\"10\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td style=\"text-align: right;\"><em>Windows 32-bit binary:<\/em><\/td>\n<td class=\"eachtable\"><a href=\"https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/Beech-x86.zip\">Beech-x86.zip<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right;\"><em>Windows 64-bit binary:<\/em><\/td>\n<td class=\"eachtable\"><a href=\"https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/Beech-x64.zip\">Beech-x64.zip<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right;\"><em>Source code:<\/em><\/td>\n<td class=\"eachtable\"><a href=\"https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/Beech-src.zip\">Beech-src.zip<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right;\"><em>Visual C++ 2013 Redistributable for Windows 32-bit:<\/em><\/td>\n<td class=\"eachtable\"><a href=\"https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/vcredist_x86.zip\">vcredist_x86.zip<\/a><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right;\"><em>Visual C++ 2013 Redistributable for Windows 64-bit:<\/em><\/td>\n<td class=\"eachtable\"><a href=\"https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/vcredist_x64.zip\">vcredist_x64.zip<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>How to use<\/h3>\n<div style=\"padding-left: 30px;\">At this point, Beech is still in a relatively early state and there are some known issues (see below). However, the vast majority of software works fine. If you do find anything that doesn&#8217;t work correctly, do let me know. Supported file formats are:<\/div>\n<table border=\"0\" cellspacing=\"10\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td style=\"text-align: right;\"><em>Disks:<\/em><\/td>\n<td class=\"eachtable\">SSD and DSD<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right;\"><em>Tapes:<\/em><\/td>\n<td class=\"eachtable\">UEF<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right;\"><em>Snapshots:<\/em><\/td>\n<td class=\"eachtable\">UEF (broadly compatible with <a href=\"http:\/\/www.mkw.me.uk\/beebem\/\">BeebEm<\/a>)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div>\n<p style=\"padding-left: 30px;\">When the emulator starts, it will be in a paused state. To start it, click on the &#8220;Go Live&#8221; checkbox, then click on the screen display so it will receive keyboard input. (You can tell if the emulated machine has keyboard focus from the border colour. If it&#8217;s light, it has focus.) By default, the PC keyboard layout will be used, which should make typing more natural. If you are playing games, however, you&#8217;ll probably want to uncheck &#8220;PC Keyboard Mapping&#8221; so the layout matches the real BBC more closely. In either case, the Break key is assigned to both F11 and F12, and Copy is Home.<\/p>\n<p style=\"padding-left: 30px;\">The other checkboxes work as follows: &#8220;Go Max Speed&#8221; makes the emulator run as fast as it can; &#8220;Audio&#8221; enables audio; &#8220;Hear Tape&#8221; lets you hear the tape input; &#8220;Flashload&#8221; speeds up tape loading considerably; &#8220;Show Debug Info&#8221; opens a side panel with some debugging facilities. Hopefully, everything else is self-explanatory.<\/p>\n<p style=\"padding-left: 30px;\">If you have a joystick or game controller plugged in, it should be automatically detected, and you can use it in games with joystick support.<\/p>\n<\/div>\n<h3>How to build<\/h3>\n<div>\n<p style=\"padding-left: 30px;\">The prerequisites are <a href=\"http:\/\/www.zlib.net\/\">zlib<\/a> and <a href=\"http:\/\/www.portaudio.com\/\">PortAudio<\/a>. PortAudio needs to be placed in &#8220;Beech\/Beech\/portaudio&#8221;, and built with MSVC according to the instructions on its site.<\/p>\n<p style=\"padding-left: 30px;\">Once that&#8217;s done, you can build Beech from the Visual Studio solution file in its root directory.<\/p>\n<\/div>\n<h3>Notes on the Music 500\/5000<\/h3>\n<div>\n<p style=\"padding-left: 30px;\">While the AMPLE ROM is sufficient for the Music 5000, if you want to use the 500, you&#8217;ll need to use the\u00a0interpreter on its\u00a0system disk instead.\u00a0Note that the two versions of the\u00a0language are not compatible: songs for the disk AMPLE will not play on the ROM version and vice versa.<\/p>\n<p style=\"padding-left: 30px;\">Here&#8217;s a quick start guide for each version.<\/p>\n<\/div>\n<table border=\"0\" cellspacing=\"10\" cellpadding=\"2\">\n<tbody>\n<tr>\n<td style=\"text-align: right;\"><strong>Music 500<\/strong><\/td>\n<td class=\"eachtable\">Start the AMPLE interpreter with *AMPLE (or, if you have the 5000 ROM installed, use *\/AMPLE instead to force the disk version to load). If you want to play the song called SONG, just type<\/p>\n<pre style=\"padding-left: 30px;\">\"SONG\" LOAD RUN<\/pre>\n<p>and press Return, and it should start. If it produces an error instead, either the disk is missing some extra modules the song needs, or it&#8217;s a 5000 program, or possibly it&#8217;s just a bad file. Some disks have a MENU file you can load the same way.<\/td>\n<td colspan=\"1\" rowspan=\"2\">\n<p><figure id=\"attachment_11\" aria-describedby=\"caption-attachment-11\" style=\"width: 367px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-11 size-full\" src=\"https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/beechblues.png\" alt=\"Beech plays the blues\" width=\"367\" height=\"400\" srcset=\"https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/beechblues.png 367w, https:\/\/darrenizzard.com\/wp-content\/uploads\/2015\/08\/beechblues-275x300.png 275w\" sizes=\"auto, (max-width: 367px) 100vw, 367px\" \/><figcaption id=\"caption-attachment-11\" class=\"wp-caption-text\">Beech plays the blues<\/figcaption><\/figure><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right;\"><strong>Music 5000<\/strong><\/td>\n<td class=\"eachtable\">I&#8217;ve found that, although many 5000 disks have a !BOOT file, they don&#8217;t have the boot option set. If that&#8217;s the case, don&#8217;t ignore the !BOOT file because it&#8217;ll probably preload modules the music files will need. Either *OPT 4,3 and Shift+Break, or just *EXEC !BOOT manually. This should bring you into a menu system. From here you can load a song\/program and play it just by selecting the appropriate options.Some disks have a JUKEBOX program which lets you choose songs from a menu.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<div style=\"padding-left: 30px;\">For more information on the Music System, some good sites are:-<\/div>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"http:\/\/www.colinfraser.com\/m5000\/m5000.htm\">Colin Fraser&#8217;s site<\/a><\/li>\n<li><a href=\"http:\/\/amplinex.tumblr.com\/\">The AMPLINEX archive<\/a><\/li>\n<li><a href=\"http:\/\/www.retro-kit.co.uk\/page.cfm\/content\/Hybrid-Music-5000-Synthesiser\/\">Retro-kit.co.uk&#8217;s page on the Music 5000<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/hoglet67\/Music5000\/wiki\">David Banks&#8217;s reverse-engineering notes.<\/a> These were very helpful, filling in gaps with my own efforts reverse-engineering\u00a0the synth&#8217;s schematic, and providing confirmation where I&#8217;d actually got it right!<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Known bugs<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Very occasionally the shift keys seem to stick and won&#8217;t produce shifted characters. You can\u00a0toggle the &#8220;PC Keyboard Mapping&#8221; checkbox to clear this.<\/li>\n<li>Sound in general is slightly choppy. I need to use more precise timing code.<\/li>\n<li>The Music 500\/5000 synth outputs mono instead of stereo (easy to fix, I just haven&#8217;t got around to it).<\/li>\n<li>The 500&#8217;s &#8220;SYNCRON&#8221; program sounds different from a recording of the real unit. Not sure why.<\/li>\n<li>The teletext character rounding is wrong on the lowest scanline of each character. This is most noticeable with descenders and double-height.<\/li>\n<li>Watch Impact&#8217;s demo mode. The ball falls through the bat!<\/li>\n<li>Firetrack&#8217;s in-game screen flickers like crazy.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Things I&#8217;m thinking of adding<\/h3>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Better GUI (including fullscreen mode).<\/li>\n<li>UI for configuring ROMs and sideways RAM.<\/li>\n<li>Undocumented 6502 opcodes.<\/li>\n<li>Tape writing.<\/li>\n<li>Snapshot saving. (Would need a new UEF chunk type for the Music 5000&#8217;s internal RAM. Not sure who allocates chunk IDs.)<\/li>\n<li>1770 disk support, and\u00a0therefore ADFS.<\/li>\n<li>Internally it&#8217;d be pretty easy to add extra modules for the B+, Master and even Electron. It&#8217;d be very nice to have the BBC and Electron in one emulator.<\/li>\n<li>Instant tape loading. This is very tricky because of the way the OS uses interrupts to receive each byte from the serial system. It&#8217;s not just a matter of hooking a single ROM routine\u00a0as it is on, for example, the Spectrum.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>[update: 0.4 now available] Beech is a BBC Micro emulator. It emulates a Model B with 8271 DFS, and also supports the Music 500\/5000\u00a0synthesizer. The program is licensed under the GPL v2. Requirements Beech is currently Windows-only, and requires at least Windows 7. Before running Beech, you&#8217;ll need to find the following ROM images and [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":12,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,2,3],"tags":[7,8,5,9,6],"class_list":["post-10","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bbc-micro","category-emulators","category-retro-computing","tag-8bit","tag-bbcmicro","tag-beech","tag-emulator","tag-retro"],"_links":{"self":[{"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/posts\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":15,"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":102,"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/posts\/10\/revisions\/102"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/media\/12"}],"wp:attachment":[{"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/media?parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/categories?post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darrenizzard.com\/index.php\/wp-json\/wp\/v2\/tags?post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}