![]() |
|
50 years of Tiny Basic - Printable Version +- Discussion Forum for all things Microbee (https://microbeetechnology.com.au/forum) +-- Forum: Microbee Forum (https://microbeetechnology.com.au/forum/forum-1.html) +--- Forum: Buzzing About (https://microbeetechnology.com.au/forum/forum-5.html) +--- Thread: 50 years of Tiny Basic (/thread-1019.html) Pages:
1
2
|
50 years of Tiny Basic - Graham72 - 01-05-2026 1975 was the year Tiny BASIC was conceived. Dennis Allison of Stanford, urged by Bob Albrecht of the People's Computer Company (PCC), published a design specification for a minimal BASIC interpreter. This was a direct response to Bill Gates’ open letter complaining about hobbyists copying his Altair BASIC. The PCC called for programmers to implement the design and submit their versions for publication. Implementations soon flowed in. In January 1976, the first issue of Dr. Dobb’s Journal of Computer Calisthenics & Orthodontia, Running Light Without Overbyte was published — the birthplace of Tiny BASIC in working code. Two Tiny BASIC implementations published in DDJ would prove historically significant for Australian computing. The first, by Dick Whipple and John Arnold of Tyler, Texas, appeared in the January 1976 issue. The second, Palo Alto Tiny BASIC by Li-Chen Wang, appeared in May 1976 and later became the basis for Tandy’s TRS-80 Level I BASIC in 1977. Whipple and Arnold took an unconventional approach: rather than using an assembler, they wrote their interpreter directly in octal! Fellow Tiny BASIC author Tom Pittman later described this as “a surprisingly popular Luddite methodology whose proponents have never survived long in the marketplace.” Harsh, but it speaks to the unmaintainability of code written without symbolic structure. From Octal to MicroBee: The Lineage of MicroWorld BASIC In January 1976, Dick Whipple and John Arnold published TBX — a Tiny BASIC interpreter for the Intel 8080 — in Dr. Dobb’s Journal. Written entirely in octal with no assembler, it supported variables named as a single letter or a letter followed by a digit (0–7). By May 1976 it had been paired with Robert Suding’s TV-Cassette Operating System for The Digital Group’s S-100 hardware. Within a year, Whipple and Arnold commercialised an expanded version called **Basic Etc**, sold through Binary Systems Inc in Richardson, Texas. By July 1977, a disk-capable version — **Disk Basic Etc** — was announced. The product targeted the iCOM FD3712 dual 8-inch floppy drive (the MITS/Pertec/Altair standard). It assembled to roughly 12,000 bytes of 8080 code from a 6,000-line source listing, sold for $100, and retained the distinctive base-8 variable system (A0–Z7). A business suite built on it included a general ledger package (CPA) and a letter-writing system (Write-On). By June 1979, both Whipple and Arnold were listed as Associate Editors of Kilobaud Microcomputing. That same summer, The Digital Group declared bankruptcy, which destroyed much of Binary Systems Inc’s primary customer base. The $100 source listing continued to be available by mail order. In Australia, Applied Technology of Waitara, NSW, was selling S-100 hardware and software, including MicroWorld BASIC for the 2650 processor. Written in 1979 by Ian Binnie (with a manual by Martin Hood), this interpreter used the identical A0–Z7 base-8 variable naming convention. Meanwhile, Sydney hobbyist Alan Peek had independently written a 2650 BASIC in 1978 that used only single-letter variables — confirming that the two-character base-8 system in MicroWorld BASIC was a deliberate design choice, not an obvious default. In 1982, Matthew Starr was credited with MicroWorld BASIC for the MicroBee. The A0–Z7 variable convention survived intact into every MicroBee shipped — around 70,000 machines used in Australian and international schools — carrying the octal philosophy of the two Texas hobbyists forward six years and twelve thousand miles Earlier, by 1981, Ron Harris had ported BASIC ETC to the Zilog Z80 for Dick Smith Electronics, producing Super-80 BASIC. The Super-80 Reference Manual explicitly states: “Developed and written by John Arnold and Dick Whipple. Re-written and modified by Ron Harris for Dick Smith Electronics. Super-80 BASIC is based on a BASIC interpreter written in the USA by East Texas Computers, originally titled ‘BASIC ETC’. Harris was closely connected to the MicroBee ecosystem — he also wrote EDASM (the Z80 Editor/Assembler that shipped as an optional ROM for the MicroBee) and co-authored the Graphic WordBee manual. MicroWorld BASIC, written by Matthew Starr and burned into the MicroBee’s 16KB ROM from 1982 onward, thus shows the clearest surviving evidence of this lineage. Its variable naming convention of A0–Z7 (letter plus digit 0–7) is identical to that of BASIC ETC and distinct from Microsoft BASIC’s 0–9 range. This is not coincidence — it is a direct inherited trait from the 1976–77 octal implementation by Whipple and Arnold in Tyler, Texas, through Ron Harris’s Z80 port, and into every Australian MicroBee. Dick Whipple continued working in electronics, particularly in Amateur Radio. He contributed to Nuts & Volts magazine and later published the two-book From Scratch series on Amazon 11 - 1) Build Your Own Computer and 11 -2) Build Your Own BASIC, the latter implementing Tiny BASIC on an FPGA. His author biography notes that he “was there at the beginning of the Microcomputer Revolution, programming an Intel 8080, first in machine code then in assembler” — a quiet acknowledgement of where it all started. NB: “East Texas Computers” appears only in Australian publications with no other records found. It seems to have been an informal or trading name for Whipple and Arnold / Binary Systems??? references "\micro_basic_2650_manual.pdf" "\dick_smith_super80_brochure.pdf" "\Creative_Computing_v05_n04_1979_Apr.pdf" "\Interface Age 1979-03.pdf" "\Kilobaud_Microcomputing_1979_June.pdf" "\dr_dobbs_journal_vols 1-2-03.pdf" \amazon.com.au\ \archive.org\ \microbee_repository\ RE: 50 years of Tiny Basic - ChickenMan - 01-05-2026 From the microworld_16k_basic_v5.10_users_manual_82_06.pdf manual in the Repository Acknowledgments MICROWORLD LEVEL II BASIC is based on a BASIC interpreter written by East Texas Computers. It was developed by John Arnold and Dick Whipple who, incidentally, were the originators of the first TINY BASIC. The "BASIC ETC" original was first totally overhauled and rewritten extensively for the DGZ80 system by Ron Harris and Matthew Starr. Finally, this already top class BASIC was moulded into the MICROBEE configuration and many of the graphics and extra program maintenance commands were added by Matthew Starr. RE: 50 years of Tiny Basic - MbeeTech - 02-05-2026 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. RE: 50 years of Tiny Basic - Graham72 - 02-05-2026 A great read, how complex BASIC got from these early handcoded sheets:
RE: 50 years of Tiny Basic - fathertedcrilly - 04-05-2026 Which one of the above versions was ZBasic ? Thanks Tony RE: 50 years of Tiny Basic - MbeeTech - 04-05-2026 I don't think either of them were referred to as ZBasic RE: 50 years of Tiny Basic - fathertedcrilly - 04-05-2026 (04-05-2026, 03:26 PM)MbeeTech Wrote: I don't think either of them were referred to as ZBasic I found a reference to ZBasic in the "programming notes on 256tc" pdf Quote:ZBASIC is a version of MicroWorld BASIC v6.22e which will work under any operating system or shell and on any microbee Never heard of it before and was curious. Also does the e suffix ( 5.22e, 6.22e, etc ) mean something ? English ? error free ? Thanks Tony RE: 50 years of Tiny Basic - MbeeTech - 04-05-2026 Ah, sorry, yes - thanks for the reminder. It's our 'compatibility basic' made specifically for distribution with programs that were written in Microworld basic so that we could provide a disk that worked on any microbee, rather than model specific 128k / 64k Computer in a book / 56k Microbee / 256TC releases. It's a version of Microworld Basic, not the 'Tiny Basic' or 'Basic Etc.' that Graham72 has been posting about. As mentioned earlier in the thread, Microworld Basic came from Basic Etc. as it's orginal code base start point, but Applied Technology / Microbee Systems Ltd further developed it for use with the Microbee including additional commands, bug fixes, I/O support, graphics & sound routines and Premium series graphics. RE: 50 years of Tiny Basic - fathertedcrilly - 04-05-2026 Apologies nothing like going off topic and hijacking the thread Thanks Tony RE: 50 years of Tiny Basic - MbeeTech - 04-05-2026 It's all good Tony. Microworld Basic, Tiny Basic & Basic Etc. have all been mentioned in the thread. |