Thoreau BASIC is een moderne interpreter die grotendeels compatibel is met de klassieke GW-BASIC taal. De software is veelzijdig inzetbaar: hij kan zowel als een 'bare metal'-applicatie (via UEFI) als binnen een Windows-omgeving worden uitgevoerd.
De belangrijkste technische kenmerken zijn:
Taal en Geheugen: De interpreter ondersteunt 32- en 64-bit integers, strings en een uitgebreid control-flow systeem. Dankzij een modern three-pointer geheugenmodel is de traditionele 64KB-beperking opgeheven, waardoor arrays met miljarden elementen mogelijk zijn.
Grafica en Tekst: Er is ondersteuning voor native framebuffer-resoluties met zowel 16-kleuren EGA als 24-bit RGB-kleuren. Gebruikers kunnen bitmaps (.BMP) laden en blitten via LOADBMP en BITBLT. Voor tekst is er een IBM VGA-font beschikbaar met ondersteuning voor configureerbare tekstvensters.
Hardware-interactie: De software biedt directe toegang tot het geheugen via PEEK en POKE en communiceert direct met het UEFI Simple File System voor schijf-I/O.
Prestaties: Versie 1.1 introduceerde een aanzienlijke snelheidswinst (tot 25x sneller) door de implementatie van een token-cache per regel en een efficiëntere expressie-evaluator.
Recente updates: De nieuwste versie (1.2) heeft diverse bestandsbeheerscommando's zoals MKDIR en RMDIR toegevoegd, samen met diverse nieuwe functies en type-conversies.
Thoreau BASIC
Taal
De taal is grotendeels compatibel met GW-BASIC. Programma's worden geladen en opgeslagen als ASCII.
Numerieke typen: Inclusief 32- en 64-bit integers (%, &, &&), single en double precision, en strings.
Regelnummers: 32-bit breed.
Control flow: Ondersteuning voor DEF FN, GOSUB, ON…GOTO/GOSUB, DATA/READ/RESTORE en overige control flow-functies.
Foutafhandeling:ON ERROR GOTO, RESUME / RESUME NEXT / RESUME n, ERL, ERR, ON BREAK GOTO.
Grafica
Basisfunctionaliteit:PSET, LINE, CIRCLE, PAINT en aanverwante functies op de native framebuffer-resolutie. PSET, LINE en PAINT kunnen worden gebruikt met 16-kleuren EGA of 24-bit R,G,B-syntaxis.
Kleuren: 16-kleuren EGA-palet en 24-bit kleur via COLOR r,g,b (evenzo voor de achtergrond).
Bitmaps:
LOADBMP slot, file$ leest een 24/32-bpp Windows .BMP-bestand in een datasegment-slot.
BITBLT slot, x, y [,key] blitst de bitmap, met een optionele transparante kleurcode voor sprites.
Variabelen:GRAMAXX / GRAMAXY (grafisch) en TXTMAXX / TXTMAXY (tekst) zijn leesbare variabelen die de werkelijke grenzen bevatten.
Schermresolutie:SCREEN x,y vraagt een modus aan. SCREEN 1024,768 werkt op vrijwel elke machine en is meestal de boot-modus; voor een scherper beeld kan de native resolutie worden gebruikt. GRAMAXX/GRAMAXY worden bijgewerkt na een SCREEN-commando.
Tekst
Lettertype: IBM VGA 8×16 font met een soft-scrolling console.
Tekstvensters:WINDOW @n, x1,y1,x2,y2 creëert een regio. De commando's PRINT @n, CLS @n, LOCATE @n en COLOR @n werken binnen dit venster, waarbij elk venster zijn eigen cursor en pen/papier-instellingen heeft. Een gewone PRINT behoudt de controle over het hele scherm.
Geheugen en Hardware
Geheugenmodel: Een three-pointer geheugenmodel zonder 64KB-plafond. Indien gewenst kunnen arrays miljarden elementen bevatten.
Hardware-interactie:PEEK, POKE, VARPTR en leesbare pointers naar de machine: LOMEM, HIMEM, FREEBOT, FREETOP, SCRNADR, GRAPITCH.
Formattering: 64-bit HEX$ / OCT$.
Schijf-I/O:SAVE, LOAD, MERGE, FILES, KILL, direct draaiend op het UEFI Simple File System.
Bewerking: Volledig scherm EDIT, automatische regelnummering (AUTO) en RENUM (nummert alle GOTO/GOSUB/THEN/ELSE/ON…/RESTORE/RESUME/ERL referenties opnieuw en herschrijft deze).
Timing: De variabele TIMER leest een precisieklok van de invariante TSC van de CPU.
Versiegeschiedenis
Versie 1.2
Nieuwe commando's:CHDIR, MKDIR, RMDIR, FIELD, GET#, PUT#, LSET, RSET.
Nieuwe functies:CVI, CVS, CVD, MKI$, MKS$, MKD$, TAB(), SPC().
Overig:OPTION BASE, ERASE, NAME old$ AS new$, MERGE, DELETE, CSGN, CDBL, ERROR n, TRON, TROFF en de SCREEN () functie.
Versie 1.1.3
MID$ kan nu worden gebruikt voor toewijzingen.
Opgelost: ERL werd niet opgeslagen en er werd geen foutregel getoond wanneer een programma met een fout stopte.
Opgelost: De backspace-toets werkte niet correct bij INPUT.
Versie 1.1.2
Opgelost: De Windows-versie stopte abrupt wanneer het beschikbare RAM minder dan 4 GB was.
BASIC-regels zijn nu gefixeerd op 244 tekens (exclusief regelnummers).
Opgelost: Een bug in EDIT/LIST waarbij een lege regel 0 werd getoond als het regelnummer groter was dan 32767.
Versie 1.1.1
Bare metal: Trage scrolling en schrijfacties naar de framebuffer zijn hersteld.
Windows: Autostart toegevoegd. ThoreauBASIC kan nu worden aangeroepen met een .bas bestandsnaam als bijlage om direct te starten.
Versie 1.1
Prestaties: Aanzienlijk sneller door een token-cache per regel, een precedence-climbing expressie-evaluator en variable-slot caching. Compute-intensieve programma's zijn ongeveer 25× sneller.
De meegeleverde Mandelbrot-demo versnelde van ~230s naar minder dan 10s.
Conway's Life draait nu interactief.
Lunar Lander draait nu op een vaste 100 fps.
Nieuwe functies: Bitmaps (LOADBMP/BITBLT), tekstvensters met kleur per venster, ON ERROR/ON BREAK/RESUME, ERL/ERR, RENUM en PEEK/POKE/VARPTR.
Correcties: Exacte 64-bit integer-berekeningen (overflow wordt gepromoveerd naar double), schonere nummerformattering en volledige breedte HEX$.
Downloads
v 1.2, BASIC64.efi (111 kB): Hernoem dit naar BOOTX64.EFI en plaats het in \EFI\BOOT om op te starten.
v 1.2, Virtual Harddisk (12 MB): Gebruik dit om op te starten binnen een Virtual Machine.
ThoreauBASIC-Windows-1.2.zip (1.3 MB): De Windows-versie van de interpreter.
Thoreau BASIC is een GW-BASIC-compatibele interpreter die direct op de hardware (bare metal) draait; er is ook een Windows-versie beschikbaar. Het datasegment is afgestemd op het grootste blok conventioneel geheugen dat door de firmware (of Windows) wordt gerapporteerd, wat op moderne machines in de gigabytes loopt.
Thoreau BASIC
Taal
De taal is grotendeels compatibel met GW-BASIC. Programma's worden geladen en opgeslagen als ASCII.
Numerieke typen: Inclusief 32- en 64-bit integers (%, &, &&), single en double precision, en strings.
Regelnummers: 32-bit breed.
Control flow: Ondersteuning voor DEF FN, GOSUB, ON…GOTO/GOSUB, DATA/READ/RESTORE en overige control flow-functies.
Foutafhandeling:ON ERROR GOTO, RESUME / RESUME NEXT / RESUME n, ERL, ERR, ON BREAK GOTO.
Grafica
Basisfunctionaliteit:PSET, LINE, CIRCLE, PAINT en aanverwante functies op de native framebuffer-resolutie. PSET, LINE en PAINT kunnen worden gebruikt met 16-kleuren EGA of 24-bit R,G,B-syntaxis.
Kleuren: 16-kleuren EGA-palet en 24-bit kleur via COLOR r,g,b (evenzo voor de achtergrond).
Bitmaps:
LOADBMP slot, file$ leest een 24/32-bpp Windows .BMP-bestand in een datasegment-slot.
BITBLT slot, x, y [,key] blitst de bitmap, met een optionele transparante kleurcode voor sprites.
Variabelen:GRAMAXX / GRAMAXY (grafisch) en TXTMAXX / TXTMAXY (tekst) zijn leesbare variabelen die de werkelijke grenzen bevatten.
Schermresolutie:SCREEN x,y vraagt een modus aan. SCREEN 1024,768 werkt op vrijwel elke machine en is meestal de boot-modus; voor een scherper beeld kan de native resolutie worden gebruikt. GRAMAXX/GRAMAXY worden bijgewerkt na een SCREEN-commando.
Tekst
Lettertype: IBM VGA 8×16 font met een soft-scrolling console.
Tekstvensters:WINDOW @n, x1,y1,x2,y2 creëert een regio. De commando's PRINT @n, CLS @n, LOCATE @n en COLOR @n werken binnen dit venster, waarbij elk venster zijn eigen cursor en pen/papier-instellingen heeft. Een gewone PRINT behoudt de controle over het hele scherm.
Geheugen en Hardware
Geheugenmodel: Een three-pointer geheugenmodel zonder 64KB-plafond. Indien gewenst kunnen arrays miljarden elementen bevatten.
Hardware-interactie:PEEK, POKE, VARPTR en leesbare pointers naar de machine: LOMEM, HIMEM, FREEBOT, FREETOP, SCRNADR, GRAPITCH.
Formattering: 64-bit HEX$ / OCT$.
Schijf-I/O:SAVE, LOAD, MERGE, FILES, KILL, direct draaiend op het UEFI Simple File System.
Bewerking: Volledig scherm EDIT, automatische regelnummering (AUTO) en RENUM (nummert alle GOTO/GOSUB/THEN/ELSE/ON…/RESTORE/RESUME/ERL referenties opnieuw en herschrijft deze).
Timing: De variabele TIMER leest een precisieklok van de invariante TSC van de CPU.
Versiegeschiedenis
Versie 1.2
Nieuwe commando's:CHDIR, MKDIR, RMDIR, FIELD, GET#, PUT#, LSET, RSET.
Nieuwe functies:CVI, CVS, CVD, MKI$, MKS$, MKD$, TAB(), SPC().
Overig:OPTION BASE, ERASE, NAME old$ AS new$, MERGE, DELETE, CSGN, CDBL, ERROR n, TRON, TROFF en de SCREEN () functie.
Versie 1.1.3
MID$ kan nu worden gebruikt voor toewijzingen.
Opgelost: ERL werd niet opgeslagen en er werd geen foutregel getoond wanneer een programma met een fout stopte.
Opgelost: De backspace-toets werkte niet correct bij INPUT.
Versie 1.1.2
Opgelost: De Windows-versie stopte abrupt wanneer het beschikbare RAM minder dan 4 GB was.
BASIC-regels zijn nu gefixeerd op 244 tekens (exclusief regelnummers).
Opgelost: Een bug in EDIT/LIST waarbij een lege regel 0 werd getoond als het regelnummer groter was dan 32767.
Versie 1.1.1
Bare metal: Trage scrolling en schrijfacties naar de framebuffer zijn hersteld.
Windows: Autostart toegevoegd. ThoreauBASIC kan nu worden aangeroepen met een .bas bestandsnaam als bijlage om direct te starten.
Versie 1.1
Prestaties: Aanzienlijk sneller door een token-cache per regel, een precedence-climbing expressie-evaluator en variable-slot caching. Compute-intensieve programma's zijn ongeveer 25× sneller.
De meegeleverde Mandelbrot-demo versnelde van ~230s naar minder dan 10s.
Conway's Life draait nu interactief.
Lunar Lander draait nu op een vaste 100 fps.
Nieuwe functies: Bitmaps (LOADBMP/BITBLT), tekstvensters met kleur per venster, ON ERROR/ON BREAK/RESUME, ERL/ERR, RENUM en PEEK/POKE/VARPTR.
Correcties: Exacte 64-bit integer-berekeningen (overflow wordt gepromoveerd naar double), schonere nummerformattering en volledige breedte HEX$.
Downloads
v 1.2, BASIC64.efi (111 kB): Hernoem dit naar BOOTX64.EFI en plaats het in \EFI\BOOT om op te starten.
v 1.2, Virtual Harddisk (12 MB): Gebruik dit om op te starten binnen een Virtual Machine.
ThoreauBASIC-Windows-1.2.zip (1.3 MB): De Windows-versie van de interpreter.
Zichtbare categorieën
Kies welke categorieën je wilt zien.
Over deze site
Waarom Tech-update?
Tech-update is ontstaan omdat ik merkte dat ik dagelijks veel verschillende websites moest bezoeken om interessant technieuws te vinden. Dat kon efficiënter.
Hoe werkt het?
Meerdere keren per etmaal gaat mijn zelfgebouwde AI-agent op zoek naar interessante artikelen op blogs en nieuwssites.
Vindt hij iets relevants, dan wordt het artikel naar het Nederlands vertaald en op Tech-Update geplaatst.
Van ieder artikel maakt de AI ook een korte samenvatting. Zo kun je snel bepalen of het de moeite waard is om het volledige artikel te lezen.
Bij ieder artikel staat altijd een link naar de oorspronkelijke bron (vaak een Engelstalige website).
Artikelen kun je bewaren als favoriet, vastzetten in de zijbalk of terugvinden via de zoekfunctie.
In de instellingen (tandwielikoon rechtsboven) geef je aan in welk soort nieuws je geïnteresseert bent.