02-05-2026, 02:30 PM
For those of you that want to know the work that was put in to MicroWorld basic, and the various changes per version,
here is a doc written by Garner Annett who took over the source for the development of the Premium series.
Note that Although Matthew Starr is credited for the bulk work on Microworld Basic, others including Gerard Hill & Craig Southeren
had a hand in maintaining & updating the code base over the years as well.
Microbee Systems Limted Software Specification Document
-------------------------------------------------------
by Garner Annett.
A Brief History Of Microworld BASIC
This document should provide a guide as to the different versions of Microworld BASIC on the Microbee and exactly
where they differ. This is by no means totally comprehensive but should prove useful.
1982:
----
Version 5.00 -
Original version for ROM-BASED 16/32K Microbees with CPU clock speed of 2 MHz.
Version 5.10 -
Same as above with some bugs fixed - not exactly sure what was fixed.
Version 6.10 -
Very early disk version - not widely distributed as it was 2MHz still.
1983:
----
Version 5.20/6.20 -
ROM and CP/M versions of 3.375 Mhz BASIC for "IC" series Microbees - also included colour board support.
The following bugs were fixed/changes made:-
1) Fix ATAN to work for arguments <.1 by changing jump condition #*
2) Fix FRACT so as to normalize to chopped answer by packing in #*
a call to the normalizing routine
3) Fix GX, so that when len(repl)>=len(search)+13, the line is not
scrambled - this is done by ensuring that insert doesn't see CR*
4) Fix DATA statement skipping by rerouting it to the REM skipper
instead - this fixes various strangies #*
5) Change the 2.25 Mhz constants for 3.375, and beef up the PLAY
command for the higher clock speed (tape*)(RS232*)(play*)
6) Move the Disk Basic scratchpads which were slotted into the spare
space at 140H .. to higher memory (hash_table, default FCB)*
7) Change 'MEM' to 'PAK' with an optional pak number, which is output
to port 0A before checking and jumping to 0xC000 (select an 8k pak)
8) Fix parallel port business in DISK BASIC by pointing into DISK MON
scratchpads and changing the PIO words to those vectors.(in*)(out*)
9) Stop HIRES from hitting the first byte of the interrupt vectors*
10) Put "out (vwait),a" before RS232, cassette and beep; so that the
software timing will work on a colour BEE and move di/ei from
rdbyte/wrbyte to the calling routines to ensure correct tape
operations on a networked BEE (test all cassette s/w on colour BEE*)
11) mod CASSON so that "required[6]" is cleared (try save"t":hires:load"t")*
12) allow LISTL, LISTU to toggle LISTing to upper/lower case
13) Put in colour statements : COLO{U}R{B|M} xx ;
where COLOR -> "POKE157," and COLOUR -> "POKE157 ,"
COLORB -> "POKE158, " and COLOURB -> "POKE158 , "
COLORM -> "POKE156, " and COLOURM -> "POKE156 , "
(input*)(output)(running*)
14) Comment out Self-test*
15) Remove NET/EDASM/PAK from disk versions*
16) Put in control character as underline lister (only to VDU)
17) Add in Fpoint speeder upper routine sbcdml from Hugh Gibson
18) For x.21, put screen clear back to 1024 bytes only, and
revised PIO redirection init. handling to be nicer
Version 5.21/6.21 - (FAULTY)
Version 5.20/6.20 was never actually released it seems - the first version to
be released with the above changes was x.21. Unfortunately there was a serious
bug in x.21 versions. If a version of x.21 is found it should be updated
immediately. (Ihave forgotten exactly what the bug was!)
Version 5.22/6.22 -
Exactly the same as x.21 except with bug fixed.
1984-1985:
---------
Versions 5.23/6.23-5.24/6.24 -
Updated versions of x.22 with some bug fixes incorporated -I am unsure of the exact nature of these.
1985 Cont'd:
-----------
Version 5.25 -
ROM version of BASIC for PC85 with support for PAK commandsand startup via PC85 shell ROM.
Contains MENU command for return to PC86 shell. Disk version remained at 6.24.
Version 5.26/6.26 -
First version for Premium series with support for HIRES2 with fast line-drawing routines and
Premium Colour hardware. The disk version of this needs a DRAM core-board - will not run with
a CMOS one. The ROM version needs a 27128 16K ROM in the A-ROM position with a modification
to select the second half of this ROM with bit 5 of the VML latch (port 0x1C).
1986:
----
Version 5.27/6.27 - **** NOTE: A bug was introduced
here which stops some
programs running that
POKE to BASIC scratch.
Update to x.30 to fix.
Line drawing routines for HIRES2 totally rewritten to be faster.
GRSAVED files from HIRES2 on version 6.26 are not compatible
with version 6.27 and upward.
Version 5.28/6.28 - **** NOTE: Still the same bug as
version x.27. Update to
x.30 to fix.
Added a system whereby the HIRES2 routines can be accessed from machine code.
Any programs which do this must have this version or later.
Version 5.29/6.29 - **** NOTE: Still the same bug as
version x.27. Update to
x.30 to fix.
No change in disk version.
ROM version has had a bug fixed where it corrupts received data in Telcom terminal mode etc.
Version 5.30/6.30 -
Fixed bug in versions 5.27/6.27-5.29/6.29 where scratch RAM was displaced by 1 byte stopping
many programs operating.
Version 6.31 -
First version that will operate on 256TC or machines with external keyboards via the parallel port.
This is a generic version that will operate on any type of keyboard.
**** NOTE: Contains a bug that stops ^S from pausing listings and programs, and BRK doesn't stop listings or running programs.
Also, POKEing the upper case flag in the scratch RAM doesn't force upper case.
Version 6.32 -
Same as x.31 except with above bugs fixed.
Note that pokeing the upper case flag with a NON-ZERO value(even one) will force all keyboard input to upper case
and pressing the LOCK or SHIFT keys will have no effect.
Version 6.35 - (current version 9/6/88)
Same as all previous version except that location 102H or
258 decimal is used to store the scan code of the key that is
being held down. The reason for modification is a lot of programs
use this location to look for a space bar, <, > and RET keys for
operation.
Microworld BASIC now works with BIOS versions 8 and above.
This means that it works with any 128k Premium, Overdrive or 256TC's
that operates with this version of BIOS.
Note that there is more detail in the actual source for basic than is detailed above.
here is a doc written by Garner Annett who took over the source for the development of the Premium series.
Note that Although Matthew Starr is credited for the bulk work on Microworld Basic, others including Gerard Hill & Craig Southeren
had a hand in maintaining & updating the code base over the years as well.
Microbee Systems Limted Software Specification Document
-------------------------------------------------------
by Garner Annett.
A Brief History Of Microworld BASIC
This document should provide a guide as to the different versions of Microworld BASIC on the Microbee and exactly
where they differ. This is by no means totally comprehensive but should prove useful.
1982:
----
Version 5.00 -
Original version for ROM-BASED 16/32K Microbees with CPU clock speed of 2 MHz.
Version 5.10 -
Same as above with some bugs fixed - not exactly sure what was fixed.
Version 6.10 -
Very early disk version - not widely distributed as it was 2MHz still.
1983:
----
Version 5.20/6.20 -
ROM and CP/M versions of 3.375 Mhz BASIC for "IC" series Microbees - also included colour board support.
The following bugs were fixed/changes made:-
1) Fix ATAN to work for arguments <.1 by changing jump condition #*
2) Fix FRACT so as to normalize to chopped answer by packing in #*
a call to the normalizing routine
3) Fix GX, so that when len(repl)>=len(search)+13, the line is not
scrambled - this is done by ensuring that insert doesn't see CR*
4) Fix DATA statement skipping by rerouting it to the REM skipper
instead - this fixes various strangies #*
5) Change the 2.25 Mhz constants for 3.375, and beef up the PLAY
command for the higher clock speed (tape*)(RS232*)(play*)
6) Move the Disk Basic scratchpads which were slotted into the spare
space at 140H .. to higher memory (hash_table, default FCB)*
7) Change 'MEM' to 'PAK' with an optional pak number, which is output
to port 0A before checking and jumping to 0xC000 (select an 8k pak)
8) Fix parallel port business in DISK BASIC by pointing into DISK MON
scratchpads and changing the PIO words to those vectors.(in*)(out*)
9) Stop HIRES from hitting the first byte of the interrupt vectors*
10) Put "out (vwait),a" before RS232, cassette and beep; so that the
software timing will work on a colour BEE and move di/ei from
rdbyte/wrbyte to the calling routines to ensure correct tape
operations on a networked BEE (test all cassette s/w on colour BEE*)
11) mod CASSON so that "required[6]" is cleared (try save"t":hires:load"t")*
12) allow LISTL, LISTU to toggle LISTing to upper/lower case
13) Put in colour statements : COLO{U}R{B|M} xx ;
where COLOR -> "POKE157," and COLOUR -> "POKE157 ,"
COLORB -> "POKE158, " and COLOURB -> "POKE158 , "
COLORM -> "POKE156, " and COLOURM -> "POKE156 , "
(input*)(output)(running*)
14) Comment out Self-test*
15) Remove NET/EDASM/PAK from disk versions*
16) Put in control character as underline lister (only to VDU)
17) Add in Fpoint speeder upper routine sbcdml from Hugh Gibson
18) For x.21, put screen clear back to 1024 bytes only, and
revised PIO redirection init. handling to be nicer
Version 5.21/6.21 - (FAULTY)
Version 5.20/6.20 was never actually released it seems - the first version to
be released with the above changes was x.21. Unfortunately there was a serious
bug in x.21 versions. If a version of x.21 is found it should be updated
immediately. (Ihave forgotten exactly what the bug was!)
Version 5.22/6.22 -
Exactly the same as x.21 except with bug fixed.
1984-1985:
---------
Versions 5.23/6.23-5.24/6.24 -
Updated versions of x.22 with some bug fixes incorporated -I am unsure of the exact nature of these.
1985 Cont'd:
-----------
Version 5.25 -
ROM version of BASIC for PC85 with support for PAK commandsand startup via PC85 shell ROM.
Contains MENU command for return to PC86 shell. Disk version remained at 6.24.
Version 5.26/6.26 -
First version for Premium series with support for HIRES2 with fast line-drawing routines and
Premium Colour hardware. The disk version of this needs a DRAM core-board - will not run with
a CMOS one. The ROM version needs a 27128 16K ROM in the A-ROM position with a modification
to select the second half of this ROM with bit 5 of the VML latch (port 0x1C).
1986:
----
Version 5.27/6.27 - **** NOTE: A bug was introduced
here which stops some
programs running that
POKE to BASIC scratch.
Update to x.30 to fix.
Line drawing routines for HIRES2 totally rewritten to be faster.
GRSAVED files from HIRES2 on version 6.26 are not compatible
with version 6.27 and upward.
Version 5.28/6.28 - **** NOTE: Still the same bug as
version x.27. Update to
x.30 to fix.
Added a system whereby the HIRES2 routines can be accessed from machine code.
Any programs which do this must have this version or later.
Version 5.29/6.29 - **** NOTE: Still the same bug as
version x.27. Update to
x.30 to fix.
No change in disk version.
ROM version has had a bug fixed where it corrupts received data in Telcom terminal mode etc.
Version 5.30/6.30 -
Fixed bug in versions 5.27/6.27-5.29/6.29 where scratch RAM was displaced by 1 byte stopping
many programs operating.
Version 6.31 -
First version that will operate on 256TC or machines with external keyboards via the parallel port.
This is a generic version that will operate on any type of keyboard.
**** NOTE: Contains a bug that stops ^S from pausing listings and programs, and BRK doesn't stop listings or running programs.
Also, POKEing the upper case flag in the scratch RAM doesn't force upper case.
Version 6.32 -
Same as x.31 except with above bugs fixed.
Note that pokeing the upper case flag with a NON-ZERO value(even one) will force all keyboard input to upper case
and pressing the LOCK or SHIFT keys will have no effect.
Version 6.35 - (current version 9/6/88)
Same as all previous version except that location 102H or
258 decimal is used to store the scan code of the key that is
being held down. The reason for modification is a lot of programs
use this location to look for a space bar, <, > and RET keys for
operation.
Microworld BASIC now works with BIOS versions 8 and above.
This means that it works with any 128k Premium, Overdrive or 256TC's
that operates with this version of BIOS.
Note that there is more detail in the actual source for basic than is detailed above.
