Applesoft BASIC in JavaScript
Go to file
2024-10-14 23:36:40 -07:00
cm Simulate Thunderclock in Slot 4 2024-02-10 18:22:08 -08:00
res
samples Oops, previous is not ready yet 2024-10-14 23:36:40 -07:00
tools
vfs
.gitignore
basic.js Thunderclock: Tweak DOS/BASIC handling of colons 2024-02-11 15:16:39 -08:00
bell.js
bs.html
display.css
dos.js Thunderclock: Tweak DOS/BASIC handling of colons 2024-02-11 15:16:39 -08:00
favicon.ico
hires.js Hires: Default to color 7 2024-05-19 10:36:15 -07:00
index.html Page: Use OPTGROUP in SELECT 2023-09-21 21:39:20 -07:00
index.js
LICENSE.md
lores.js
printer.js
README.md
reference.html Simulate Thunderclock in Slot 4 2024-02-10 18:22:08 -08:00
script.js
script.md
styles.css
tty.js Simulate Thunderclock in Slot 4 2024-02-10 18:22:08 -08:00

jsbasic - Applesoft BASIC in JavaScript

This is hosted for playing with at https://inexorabletash.github.io/jsbasic/

Notes & Known Issues

  • The BASIC program is compiled to JavaScript before execution. Syntax errors are therefore detected at compile-time rather than at run-time as on a traditional interpreter. For example, the following program would run without errors on an Apple since the erroneous second statement is never reached. 10 END : CHR$(PRINT)
  • Handling of BASIC code that does not match the canonical LIST output format may not behave as on an Apple:
    • Keyword parsing differs from Applesoft command line. For example FOR I = S TO P doesn't collapse into FOR I = STOP.
  • Limitations:
    • Floating point overflow is only detected on variable assignment.
    • Only a subset of DOS 3.3 and ProDOS useful for basic file I/O are implemented.
    • Only a small number of common PEEK, POKE and CALL locations are supported.
    • Commands that refer to assembly routines (&, USR() etc.), shape tables, and tape I/O are not implemented.
  • Commands that operate on the program itself (LIST, RUN, DEL, etc.) are not implemented.
  • A handful of extensions are made beyond Applesoft BASIC:
    • To improve readability, lines may start with : and continue the previously numbered line.
    • DEF FN can define string functions
    • == can be used as =
    • CHR$() values > 255 do interesting things
    • HSCRN(x, y) allows probing the hi-res screen
    • hexadecimal literals e.g. $C010 can be used as numbers