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.
- Removed the standalone mobile BREAK button and all automatic visibility logic, including during BASIC loops. On-screen BREAK is available only as part of the keyboard explicitly enabled by GAMEKEYBOARD; DEFAULTKEYBOARD hides it. Removed the obsolete control from the legacy root page/template as well.
- GAMEKEYBOARD now provides Left, Down, Right, Up, SPACE, ENTER, and BREAK together. ENTER sends carriage return to BASIC keyboard input and accepts a pending BASIC INPUT. The seven controls remain in one row on phone, tablet, and desktop layouts.
- Expanded the SCAN camera to fill the viewport, including phone and tablet rotations. The centered red guide spans 96% of the preview width. The scanner has its own Cancel scan control and no BASIC BREAK button.
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.