oaknut-basic¶
Work with the persistent artefacts a BBC BASIC program leaves behind — both the code and the data.
A tokenised program is bytecode, not text: keywords like PRINT and
GOTO are single bytes, line numbers are packed into the line header,
and references such as GOTO 100 are scrambled into a three-byte form
that can never be mistaken for a line terminator. oaknut.basic
converts a program between that form and a plain-text listing — the two
directions a real BBC Micro performs when you LOAD and LIST it —
and offers line numbering, prepending ascending line numbers to
source typed without them, as the BBC’s AUTO command would.
A data file is just as private to the language: PRINT# writes a type
tag and the value’s bytes in reverse, with reals in the BBC’s packed
5-byte floating-point format, meant to be read back only by INPUT#.
The data-file API presents such a file as a
context-managed, file-like object that translates its records to and from
native Python values.
The BBC BASIC II ROM’s behaviour is reproduced exactly throughout, so a program round-trips between bytes and text byte-for-byte, and a data file round-trips through Python values byte-for-byte.
If you have not installed anything yet, start with the Installation
guide. Most readers reach for the oaknut-basic command-line
interface from a shell; the Python API is for programs that embed the library directly.