Cookbook¶
Composed recipes that chain oaknut-basic with the shell and with
disc. Each is a pipeline you can paste and adapt.
Edit a program living on a disc image¶
Pull the tokenised program out of an image, de-tokenise it to a text file, edit it, then tokenise it back in place:
$ disc get game.ssd MENU - | oaknut-basic detokenise > menu.bas
$ $EDITOR menu.bas
$ oaknut-basic tokenise menu.bas | disc put game.ssd MENU -
disc get … - writes the raw bytes to standard output and
disc put … - reads them from standard input, so no temporary copy
of the tokenised form is ever needed.
Number, then tokenise, hand-typed source¶
Source typed without line numbers can be numbered and tokenised in one
pipeline — or in a single tokenise invocation with auto-numbering:
$ oaknut-basic number draft.bas | oaknut-basic tokenise > PROG
$ oaknut-basic tokenise --start 10 --step 10 draft.bas > PROG # equivalent
Convert a UTF-8 listing to a BBC program¶
A listing authored in a modern editor is UTF-8; the program on the image
must be in the Acorn character set. tokenise bridges the two by
default — UTF-8 in, Acorn-native tokenised bytes out, with £ and
friends mapped across — so no flag is needed:
$ oaknut-basic tokenise menu.bas | disc put game.ssd MENU -
Pass --encoding acorn only when the source is already Acorn bytes,
such as a listing taken straight off another image.
Batch-detokenise every program on a disc¶
List a disc’s files, pull each one out and de-tokenise it to a local
.bas next to its Acorn name:
$ for name in $(disc ls game.ssd:$ --as tsv | cut -f1); do
> disc get "game.ssd:$.$name" - | oaknut-basic detokenise > "$name.bas"
> done
Inspect a program without leaving the shell¶
De-tokenise straight to the pager to read a stored program as a listing:
$ disc get game.ssd MENU - | oaknut-basic detokenise | less