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.