THE CLASSIC BASIC CHANGELOG

Release notes.

New ideas. Useful improvements. Carefully recorded fixes.

Prepared for review — not yet published

Classic BASIC 1.3.2

Game controls and a bigger Blockdrop

Fixed and improved

  • Restored GAMEKEYBOARD with Up, Down, Left, Right, SPACE, and BREAK. On-screen controls and external keyboards share the same BASIC input buffer. Physical arrows, SPACE and WASD work during gameplay; Escape and Ctrl+C interrupt. DEFAULTKEYBOARD restores text entry.
  • Removed the unreliable external BASIC file-picker cancellation notification. Cancellation preserves the current program; successful loads and genuine load errors retain their messages.
  • Fixed SOUND dropping the first note while the browser audio context was still resuming. The fix applies to all BASIC programs and keeps the wait bounded when audio is blocked.
  • Restored the original single-row game-control layout (Left, Down, Right, Up, SPACE, BREAK) and removed the unnecessary outer graphics-canvas frame.
  • Standardized the sample filename and catalog entry to uppercase BLOCKDROP.BAS.
  • Fixed a regression that reintroduced the automatic one-million-statement execution cutoff. Removed the cutoff and its EXECUTION LIMIT EXCEEDED / POSSIBLE INFINITE LOOP messages. Long-running games and BASIC loops continue until the program ends or the user interrupts them. Programs still yield to the browser so the page remains responsive and BREAK works.
  • Fixed BREAK erasing the graphics display after a BASIC LOCATE/score update. BREAK now appends its message below the existing output and preserves the canvas, pixels, and text for both on-screen and external-keyboard interruption.
  • Hide the blinking terminal cursor while any BASIC program is executing, including graphics games and text loops. Show it when the program waits for typed input and restore it at the command prompt after completion, BREAK, or an error.
  • Fixed SCAN to open the camera directly, await a decoded value, dismiss the scanner, assign the requested string variable, and resume BASIC without an implicit INPUT or automatic result output. The scanner has a centered red guide line and its own Cancel scan control; BASIC BREAK controls are hidden while scanning. Cancellation returns empty text, and failures release the camera and scanner UI.
  • Updated SCANDEMO.BAS to pause with an explicit BASIC INPUT and execute BEEP after a successful scan, then print the scanned value. Cancelled scans do not beep.

BLOCKDROP.BAS

  • Renamed block.bas to BLOCKDROP.BAS in the catalog and sample assets. Expanded the BASIC game board from 10 × 18 to 12 × 22 cells, centered it on SCREEN 1, and kept score and pause status in place.
  • Added BASIC SOUND effects for successful rotations, piece locking, single and multiple line clears, and game over.
  • Controls: Left/Right or A/D move; Up or W and SPACE rotate; Down or S lowers the piece; P pauses/resumes; Q quits; BREAK or Escape interrupts. RUN restarts.
  • Blockdrop and all sample games remain BASIC source executed by the normal interpreter, with no native game substitution or game-specific runtime behavior.
Earlier release: 1.3.1

Prepared for review — not yet published

Classic BASIC 1.3.1

More of your device, directly from BASIC

New and expanded device commands

  • SCAN reads QR and common barcodes from a camera or imported image, with a bundled local decoder for browsers without BarcodeDetector. Cancel returns an empty string.
  • FLASH ON / OFF (also FLASHLIGHT) controls supported camera torches and checks the actual torch state. The FLASH and PHONEDEMO programs use their BASIC INPUT/Return step to turn the light off; no off button or bottom overlay is added.
  • GPS preserves two-variable coordinates and adds altitude, accuracy, heading, real device-reported speed in metres/second, altitude accuracy, and timestamp. Missing values are documented explicitly.
  • PHOTO and CAMERA capture an image into a local session file; PICKPHOTO selects an existing image. EXPORT downloads the result.
  • ACCEL / ACCELEROMETER, GYRO / GYROSCOPE, TILT / MOTION, and HEADING / COMPASS expose supported sensor readings with documented units and permission handling.
  • SPEAK provides speech synthesis; DICTATE / LISTEN recognizes a phrase through the browser's speech service. VIBRATE requests vibration where available.
  • TOUCH reads graphics-surface coordinates, down/up state, tap, swipe, and pinch gestures. GAMEPAD and GAMEPAD$ read controller buttons, axes, connection state, and name.
  • CLIPBOARD reads text; SETCLIP / CLIPWRITE writes it. SHARE shares text; SHAREFILE shares a session file or offers a labeled download.
  • BATTERY reads level, charging state, and available time estimates. DEVICEINFO$, SCREENINFO, DEVICEAVAILABLE, and ONLINE expose browser/device information and capability flags.
  • IMPORT selects a local session file; EXPORT downloads session files or the current BASIC program. Existing LOAD and SAVE remain available.
  • AUDIORECORD / AUDIORECORDSTOP add bounded microphone recording. AUDIORECORDEXT$ supplies the browser's supported extension; MICSTART / MICSTOP offer an automatic filename.
  • NOTIFY supports local notifications where permitted; OPENURL opens an HTTPS destination after a user action.

Website and release notes

  • Replaced the blurry native-app icon with the real 1024 × 1024 production asset while preserving the iPhone/iPad page and App Store destination.
  • Added More Apps to navigation and a dedicated page for Vesper Python REPL & Editor and Cortex BASIC, using their production artwork and verified project links.
  • Added a dedicated Release Notes page linked from the website's desktop navigation, mobile menu, and Resources footer, with direct version links and the same release data in the app and NEWS command.
  • Updated the browser startup, About, metadata, and website preview to version 1.3.1. Existing historical release information is retained.
  • Website navigation now labels the More Apps page NDB Software. The page adds a link to ndbsoftware.us with the NDB wordmark and orange brand colors while preserving the Classic BASIC heading and product cards.
  • The browser app Resources menu now uses NDB Software to match the website navigation, retaining the existing More Apps page destination.
  • Updated the promotional website Support and Privacy pages, including their clean-URL aliases, to support@ndbsoftware.us.
  • Expanded the NDB Software page to four product cards with Classic BASIC and TrashBox-80, using the owner-supplied TrashBox-80 CRT favicon artwork and links to trashbox80.com and app.trashbox80.com. Existing Vesper Python and Cortex BASIC entries are retained.
  • Removed the redundant Classic BASIC product card from the promotional website’s NDB Software page. The page now features Vesper Python, Cortex BASIC, and TrashBox-80, with matching introductory copy and metadata.
  • Updated both Programming Guide Amazon buttons to the current book listing and replaced the homepage and guide-page cover with the approved current artwork, preserving its proportions.

Samples and documentation

  • Added SCANDEMO.BAS, GPSDEMO.BAS, FLASH.BAS, CAMDEMO.BAS, SENSOR.BAS, PHONEDEMO.BAS, and MICDEMO.BAS to the program catalog.
  • Added HELP DEVICE, command-specific device help, GUIDE, and a browser device reference covering syntax, units, permissions, cancellation, examples, and platform limits.

Fixed and improved

  • Fixed string expressions such as PRINT "A"+"B" being treated as one quoted literal instead of evaluating to AB.
  • Fixed invalid BASIC file imports clearing or partially replacing the current program before validation completed.
  • Fixed pressing Return on an empty INPUT response leaving the program waiting instead of accepting an empty string. This also makes the flashlight and recording demos resume correctly.
  • Prevented overlapping command submissions during asynchronous operations while preserving program INPUT responses.
  • Added STOP as a program termination command, including device-resource cleanup.
  • BREAK, END, STOP, runtime errors, restart, page exit, and backgrounding release owned camera/torch, motion, microphone, speech, and touch resources. Late results from cancelled operations do not overwrite BASIC variables.
  • Validated device-command arguments and output types before permission prompts and assignments. Permission denial, timeout, and unsupported hardware return BASIC errors rather than fabricated success.
  • Removed app-created device dialogs, Continue/Cancel/Stop buttons, export confirmation panels, and the flashlight overlay from the review candidate. All seven new demos use the existing BASIC terminal for interaction. Browser-required permission prompts and native file pickers remain; camera images use a plain terminal graphics surface.
  • Fixed website regeneration overwriting newer browser-runtime changes with the legacy source file.
  • Adjusted the navigation breakpoint to accommodate More Apps on tablet and smaller desktop screens.
  • Android torch acquisition checks other cameras when the default rear lens has no torch, releases rejected cameras, and requires the selected track to confirm that its torch is on.

Platform notes

  • This release candidate describes the website and browser app. Native iPhone/iPad App Store release status is separate.
  • Hardware features depend on browser APIs, permissions, HTTPS, and actual device support. A capability flag detects an API; it does not guarantee hardware or permission.
  • Safari does not expose browser battery or vibration APIs. Camera torch and speech recognition support vary. Speech recognition may use the browser or OS provider's remote service.
  • Imported files, captures, and recordings remain in this browser session. Export them before reload or RESTART. Storage is bounded to 32 MiB and 100 files; recordings are limited to 5 minutes and 25 MiB.
  • Verified with Chromium, Firefox, WebKit, iPhone and Android browser profiles, Android Chrome in an Android 15 emulator, and Safari loading in iPhone Simulator. Real phone camera focus, torch hardware, and motion/GPS measurements still need physical-device checks.
Earlier release: 1.3

Earlier release

Classic BASIC 1.3

Classic BASIC browser update

June 12, 2026

  • Added LOCATE row,column text cursor positioning.
  • Added BREAK interrupt support with Escape, Ctrl+C, and Ctrl+Break/Pause when available.
  • Added a theme-aware mobile-only BREAK button for touch devices without recent keyboard use.
  • Fixed BLOCK DROP graphics box clearing so wall and top-edge movement redraw cleanly.
  • Fixed Blackjack scoring so hand outcomes update session totals once.

June 11, 2026

  • Catalog completely redesigned around classic games.
  • Added BLOCK.BAS, FOOTBALL.BAS, RHOP.BAS, HANGMAN.BAS, HIGHLOW.BAS, and BLACKJACK.BAS.
  • Improved catalog experience and expanded examples demonstrating Classic BASIC capabilities.