|BBC BASIC (Z80) for the ZX Spectrum|
BBC BASIC files
|install.htm||Installing BBC BASIC on the Spectrum|
|BBCBasic.rom||16K||BBC BASIC language and system ROM.|
|BBCBasic.rom||32K||Combined BBC BASIC and ZX BASIC ROM.|
|BBCBasic.tap||17K||*NEW* BBC BASIC loadable to main RAM.|
|BBCBasic.txt||20K||BBC BASIC documentation.|
|Utils.tap||9K||Tapefile of test utilities.|
|Utils.mdr||135K||Microdrive file of test utilities.|
|Sample.tap||104K||Tapefile of sample programs.|
|Sample.mdr||135K||Microdrive file of sample programs.|
|Docs||Some additional documentation.|
|Host40.src||57K||Source for Spectrum host code.|
Version 0.40 *NEW*
Full set of COLOUR numbers giving FLASH and BRIGHT. Ensures screen paged in before accessing screen system variables. Filing system interface substantially tidied up. Loading and saving to &FFFFxxxx selects screen memory if shadow memory present. Escaping within load/save no longer causes a crash. Drive selectable with *d:, defaults to 1: if Interface 1 found, to T: otherwise. Saving, loading and cataloging with microdrive works.
Now doesn't need to be pre-configured with BASIC's ROM number. Checks ROMs to find out where BBC BASIC is on startup. Same ROM image should now work in a &7FFD ROM and in DOCK or EX. Uses a simplistic test on startup to see if Timex MMU present. Does this by checking if IN &FF is zero. Also issues Service 1 on startup to let other code have a look-in. If shadow memory paged in, ensures screen paged in when needed. BASIC runs in shadow mode with PAGE at &4000. This gives 44K free - exactly the same as with BBC HIBASIC on the 6502 CoProcessor!
Update: ensured file load/save deselects the screen where appropriate. Note: with PAGE at &4000 can't load files into screen memory at the moment. Need to fully implement 32bit->16bit addressing as specified in Spectrum/FileDocs. Also, Escaping from cat/load/save with shadow memory present causes a crash. BBC BASIC uses DOCK/EX as previously selected, doesn't ensure same is selected, so slight chance DOCK may swap with EX.
First version made that can run from main RAM. Results in PAGE at &6000 and HIMEM at &BB00. Seems to work, but not fully tested yet.
ROM port no longer a variable. ROM paging able to use Timex/Spectrum SE paging registers at &F4 and &FF. ROM numbers are:
DOCK/EX paging disabled by default with b7 of SCREEN set. Will also select external ROMs with OUT &7FFD,n*16 with n>3. Shadow memory can page screen out if available by ORing ROM number with 3. BASIC ORs its own ROM number with 3 to try to select shadow memory.
Testing reveals v0.38 works on the Spectrum SE, but when BASIC pages the screen memory out it forgets to page it back in to check for keypresses! Filenames now changed slightly, adding '.rom' extensions for easier use on extension insistant systems.
Generalised ROM paging routine, ROM port a variable in high memory. IM2 interupts use I=&FD with two overlapping vectors at &FDFE-&FDFF and &FDFF-&FE00 so interupts with data=&FE and data=&FF both work. RdCh checks for Escape state before waiting for a key, so Escape state doesn't wait for a keypress.
Page &FFxx entry points rearranged to fit ROMPAGE entry point in. High memory contains ROM numbers of BBC BASIC and ZX BASIC, so can be changed. Reset code rewritten, doesn't clear memory, abandoned seperating RST &00 from RESET. *Quit quits Speculator with &FDFD opcode. MEMBOT a variable and so can be changed.