History of BeebIt
-----------------

All work by Michael Foot except :
[JB] Julian Brown
[JK] John Kortink
[JL] James Lampard
[SB] Simon Birtwistle
[CD] Crispian Daniels

Version 0.76 (06 Mar 2024)

- Fixed Low mode screen save overflow when the host Mode 7 is 640 x 500. [CD]
- Fixed 6845 vertical total adjust. [CD]
- Improved detection of floppy disc images [MF]

Version 0.75 (29 Jan 2024) [CD]

- Added OS_ScreenMode enumeration to find available modes.
- Added switch to full 256 colour mode from 64 colour.
- Added conversion for 16-bit and 32-bit screen modes.
- Added weighted colour, greyscale and green palette options.
- Added 3:2 zoom for screen mode 1024 x 768.
- Added teletext rounding for high resolution screen modes.
- Added Mode Report saving on the Save menu.
- Fixed out-of-bounds drawing during mode changes.
- Fixed SBC BCD in 65C12 opcode &F9. Laps can now be completed in Stunt Car Racer.
- Reimplemented interlaced sync timing. Revs is correct again.
- CPU execution shifted forward to start of horizontal display. Flicker when redefining keys in Stunt Car Racer is fixed.
- Fixed handling of Caps Lock LED. Num Lock is not engaged on entry.
- Fixed loading/saving of the Mouse Emulation and Printer options.
- Expanded abbreviated text in Options.
- Fixed some code that crashes in RISC OS 3.

Version 0.74 (20 May 2023)

- Fixed CPU CLI instruction to allow Lemming Syndrome to work.
- Corrected display of teletext separated graphics.
- Allowed a key map file to relocate the key code for the Break key (&80).

Version 0.72 (20 Mar 2021)

- Fixed CPU address wrapping for post indexed y mode. Allows Pacman Attract to work.
- Added 1920 x 1050 and 1920 x 1080 screen modes
- Fixed VIA timings to correct JSW2 and Elite palette change timings.

Version 0.70 (02 Nov 2020)

- Fixed M128 shadow memory access to allow By Fair Means of Foul 128K to run.
- Fixed M128 ROM/shadow RAM bank swapping to allow By Fair Means of Foul 128K to run.
- Fixed music on Prince of Persia.
- Fixed screen shot saving.

Version 0.68 (22 Apr 2020)

- Fixed M128 shadow memory access for the detection of SWRAM to allow Prince of Persia to run.
- Corrected teletext emulation display issues to allow Prince of Persia to display the title scren correctly.

Version 0.66 (26 Apr 2019)

- Added screen mode 1280 x 1024 for RISC OS 5 machines. 

Version 0.65 (20 Sep 2015)

- Corrected teletext emulation display issues to allow Granny's Garden and Frak! to look correct.
- Fixed cursor disabling detection so the cursor turns off in Whizzys Mansion and Castle Quest.

Version 0.64 (16 Sep 2012)

- Corrected saving of display mode option setting.

Version 0.63 (09 Aug 2011)

- Corrected 2 teletext emulation display issues.
- Fixed saving of sprites in higher resolution screen modes

Version 0.62 (02 Jul 2011)

- Added AMX Mouse emulation.
- Fixed corruption on MODE 2 screen when running on the Iyonix.
- Corrected alignment load issues to allow BeebIt to run on the Beagleboard.
- Added higher resolution plotting routines to allow BeebIt to run on the Beagleboard.

Version 0.61 (26 Apr 2008)

- Changed screen mode detection routine so that on RISC OS 6 it now uses BeebIt's own mode 7 emulation, rather than that provided by the VideoTTX module.  This fixes several annoying issues. (The lack of the block cursor provided by CHR$255, the inability to save sprites, and the general awfulness [IMHO] of the screen produced by VideoTTX.)
- Correctly implements CLI/SEI/PLP so Empire Strikes Back will run.

Version 0.60 (16 Sep 2007)

- New version of ZeriBeep, which works with Speech! and now has just 1 version for 26bit/32bit platforms. [JK]
- If on entering emulation boot fails (ie corrupt MOS rom image) then BeebIt will return to the desktop with an error. [JL]

Version 0.59a (04 Jun 2006)

- Small fix to reset RAM/ROM bank number when break is pressed. This stops the Level 9 adventures locking the machine up in M128 mode.

Version 0.59 (18 Feb 2006)

- When emulating a Master, the video routines can now read from FS RAM which allows the Level 9 graphics adventures to display correctly.
- Separated the code for the 6512 cpu emulation from the 6502 code.
- Made the memory read and write routines less generic, which helps speed up execution.
- Fixed reading and writing to shadow memory in B+ mode. This allows the Level 9 adventures to work in text mode. They still do not work with pictures when using B+ mode, so use the Master 128 mode instead.

Version 0.58 (24 Apr 2005)

- Stopped the RISC OS screen saver from kicking in while the emulation is running.
- Added screen "Mode 8" emulation.
- Fixed the VIAs so that Lode Runner works.
- Separated out calls to Sheila for each machine type. This is more efficient.
- Pressing the Print Scrn key will now save a screen dump of the current screen to sequencial files. [JL]
- Modes 3 and 6 in Master Compact mode now display correctly.
- RipROMs is now 32 bit compatible.
- Various small bug fixes.

Version 0.56 (18 Jul 2004)

- Sped up memory access to shadow memory in B+ and Master modes.
- Added interactive help.
- Fixed small bug that caused a lockup on the Iyonix if MODE 15 was not defined in the MDF. [JL]
- Separated drive and ROM configuration windows.
- Added key mapping facility.

Version 0.53 (28 Jun 2003)

- Corrected timings of some 65C12 opcodes.
- Improved Master memory bank switching.
- Corrected timing for 1MHz devices.
- Added 6850 ACIA emulation.
- Added Serial ULA emulation.
- Added UEF tape image support for uncompressed images.
- Added Tape loading speed option.
- ROM image files can now be dragged into the required slot of the configure window.
- Cycle counting is now exact. Bolderdash and Hyper Sports decode correctly.

Version 0.50 (12 Apr 2003)

- Added new routines to render the video screen in 256 colour modes. This allows BeebIt to work on the Iyonix computer.
- Added a cursor to teletext mode.
- Made a slight speed increase to the handling of interrupts.
- ZeriBeep is now fully 32 bit compatible. [JK]
- Snapshots have been improved and reimplemented. [JL]
- Screen save can now save a teletext screen to a sprite. [JL]

Version 0.48 (09 Feb 2003)

- Fixed small bug when writing to the sound module.
- Made !RunImage 32 bit compatible.

Version 0.46 (21 Dec 2002)

- Fixed incorrect screen display when 25 FPS and interlaced was selected.
- Fixed lockup in Master 128 mode when paged scrolling is waiting for shift key.
- Crashes are handled better. Now the machine and desktop are restored correctly. [JL]
- Fixed an initialisation problem with ZeriBeep and improved responsiveness. [JK]
- Added 1770 disc write routines.

Version 0.45 (21 Sep 2002)

- Fixed an error in the video routine so that FireTrack and the water level in Exile now work (woo-hoo!).
- Added keyboard links for models B and B+ to the options screen.
- Implemented FRED and JIM memory locations. All calls will be transferred directly to RISC OS for processing.
- Added BeebIt64K module to the application directory. This emulates 64K of paged RAM. [SB]
- Fixed timer interrupt problem in the VIAs. Rig Attack and Psycastria 2 flashing colours now work.
- Support for multiple ROM paths added. [JL]
- Choices and CMOS are now saved to !Boot.Choices. [JL]

Version 0.42.1 (03 Aug 2002)

- Fixed video display when interlace is on.

Version 0.42 (27 Jul 2002)

- ZeriBeep module has been fixed to stop random crashes. [JK]
- Tweaked the video emulation to better handle mid frame crtc register updates.
- Added Screen Sprite saving on the Save menu. [JL]
- Pressing the Print Scrn key will now save a screen dump of the current screen. [JL]
- Added Master Compact emulation.
- Modified OS memory read, for Master emulation, to allow MOS 3.50 to work.

Version 0.40 (18 May 2002)

- Added 65C12 CPU emulation.
- Added Master 128 emulation.
- Added WD 1770 FDC emulation (read only).
- Replaced the BeebSound module with ZeriBeep. This produces a far more accurate sound emulation. [JK]
- Various other speed ups, fixes and improvements.

Version 0.32 (16 Dec 2001)

- Fixed problem with the setting of the pitch for channel 0, when a write to channel 1 was done with a volume of 0.
- Fixed the loading of ROMs where the ROM path is not a directory.
- Added opcode 07 interface to allow BeebIt to access the BeebItFS filing system.
- Made many cosmetic and small fixes to the UI.
- Made the ARM code more compatible with 32 bit code.
- Rewrote a lot of the 6502 core to speed up the execution.
- Added the machine name to the icon bar.

Version 0.30 (21 Jun 2001)

- Fixed templates to comply with style guidelines and work with a wider range of desktop fonts.

Version 0.30 (04 Feb 2001)

- Made cursor blink in all modes except teletext.
- Fixed Wimp data transfer protocol so memory dumps can be saved directly to applications.
- Rewrote main read and write procedures to increase execution speed and make it easier to maintain. 
- Did a lot of work to change main CPU core from half 'C' code and half Assembly language to be 100% Assembly language. Increase in speed is huge! New code is not completely optimised yet either.

Version 0.25 (04 Nov 2000)

- Fixed the setting of the status byte for the 8271 FDC. This fixed the "Not found" messages on Elite and Elite-A.
- Added support for the Model B+. Options menu has been changed to allow machine type and OS ROM combinations.
- Rewrote more opcodes in assembler.

Version 0.20 (13 Aug 2000)

- A couple of tiny bugs were accidently introduced in 0.15 causing a few games not to run correctly. These have now been fixed.
- Stopped write access to memory addresses &FF00-&FFFF. Level 9 graphical adventures now work.
- Rewrote non-decimal ADC and SBC routines in assembler.
- Rewrote PHP in ARM assembler.
- Rewote IRQ handling code in ARM assembler.
- Added printer port to User VIA.
- Added video frame skip option.
- Added support for double sided disc images (DSD). Both track and side interleaved images are supported.
- Fixed small problem with palette colours. The Hobbit with Graphics works again.

Version 0.15 (30 Apr 2000)

- Rewrote branch opcodes, JSR, ROL, ROR, RTI and RTS opcodes in assembler. Increase in speed is quite noticable.
- Added filetype &B22 as DFSImage. Double clicking or dragging file to the iconbar icon will automatically load image as drive 0 and enter the BBC emulation.
- Added a few SKB opcodes. Videos Revenge now works.

Version 0.15 (08 Apr 2000)

- Fixed problem with the disc writeable option and the save as window.
- Rewrote 6845CRTC and video emulation to better refect how the real hardware works. This now allows the screen to be vertically centered correctly.
- Uridium now works correctly because of adjustments done above.
- Moved the re-mapping of the palette on a mode change. The colours in Uridium are now correct.
- Added emulation of the Analogue to Digital converter.
- Added Joystick emulation. This allows the Mouse to simulate the Joystick movement and buttons.

Version 0.12 (15 Feb 2000)

- Added cursor emulation to all modes except 7.
- Fixed bug in 6845CRTC code. Reading of some registers was not returning the correct values.
- Fixed video palette so that flashing colours now work. Arkanoid and BMX on the Moon now look correct.
- Changed the way the configuration screen works. Buttons Save, OK and Cancel now work as expected.
- Changed the way the options screen works. Buttons Save, OK and Cancel now work as expected.
- Added ability to specify a directory path for ROM images on the options screen.
- Changed MODE 2 plotting code to use a lookup table. Number of instructions to plot each pixel has dropped from 16 to 4. If this does not speed things up, I don't know what will!
- Changed MODE 1 and 5 plotting code to use a lookup table also.
- Fixed screen update timing when Non-Interlaced update is used.

Version 0.10 (24 November 1999)

- Julian fixed the sound module so it would always initialise properly. [JB]
- Mapped the keypad to valid BBC key codes.
- Rewrote some more 6502 op-codes in ARM assembler.

Version 0.10 (18 October 1999)

- Finally got hold of a *real* BBC to test with.
- Tweeked video vertical sync interrupt. Revs is now correct.
- Changed 6502 status register to set B and unused flags correctly.
- Fixed bug in ADC command. Flag were not being set correctly.
- Added sound support. Thanks Julian. [JB]
- Modified System VIA slightly. Psycastria 2 now works.
- Wrote all 6502 addressing modes in assembler. Should speed things up a bit.
- Modified updating of timers in system and user VIAs.
- Modified 6502 and 6522 cycle timing.
- Added sound on/off option.
- Snapshot saving still does not work. Will look at this some other time.
- Added Reset option to main menu.

Version 0.06 (22 Aug 1999)

- Fixed MODE 6 where only half the screen was being drawn.
- Wrote all screen mode display routines in assembler for speed.
- Mapped Shift Lock key to Left Alt.
- Rewrote opcode &20 JSR in assembler.
- Fixed remapping of palette on mode change. The Hobbit with graphics now looks correct.
- Fixed handling of soft and hard resets when BREAK pressed. Exile can now save and load games.
- Added CPU speed option.
- Added screen update speed option.
- Tweeked timing of screen updates again. This gives a more accurate emulation.
- Altered screen redraw to handle width changes on the fly. G.A.C. now looks correct.

Version 0.05 (31 May 1999)

- Implemented write protecting of disc images.
- Fixed sideways ram bug introduced in 0.03.
- Fixed problem with SBC opcode.
- It appears Exile was not quite right in 0.03. Now it works correctly.
- Rewrote screen redrawing to draw proper interlaced frames. Should speed up execution on slower machines but redraw is now not as defined as in previous versions. I will add a screen drawing option soon.
- Tweeked interrupt handling. Now Skirmish, Strykers Run and others work! Revs is nearly correct!
- Added ability to save snapshots (in 6502Em format) and memory dumps.
- Fixed system via keyboard bug. Psycastria now works.
- Added setting and restoring keyboard leds to show the correct keybard status.
- Fixed detection of Econet to return disabled. Dr. Who and the Mines of Terror now works.

Version 0.03 (18 April 1999)

- Rewrote a few 6502 op-codes in ARM assembler. This should increase emulation speed.
- Rewrote 6502 read and write address routines in ARM assembler. This should increase emulation speed.
- Fixed stack wrapping problem. Exile now works (woo-hoo!).
- Added disc drives 2 and 3.
- Changed drive order on configuration screen to 0,2,1,3.
- Added in ability to write to disc images.

Version 0.02 (14 March 1999)

- Tweaked interrupt handling for Rocket Raid.
- Fixed stupid flag bug in LDX command. Rocket Raid now works.
- Fixed screen address wrap-around. Fortress now works.
- Fixed Bug in setting V flag in SBC. UIM now works.
- Added some extra op-codes. Zalaga now works!
- Completed keyboard. All keys are now implemented.

Version 0.01 (19 Feb 1999)

- Added MODE 3
- Added MODE 6
- Fixed SBC BCD calculations
- Added front end
- Added sideways RAM capabilities
- Fixed timer problem in System and User VIAs

Version -1.00 (15 January 1999)

- Initial release
