# veryturbos-chelsea-2026-08-18/README.md

Here's a hasty release of a SLOW TurbOS for the TFR/911H as a TurboSim.

BUGS: it does not send clock interrupts, so don't sleep,
    or try anything running in parallel or background or pipes.

FEATURES:
*   Has Basic09 (but there's no disk, so you cannot save)
*   Emits instruction logs, annotated with assembly lines, if you use `--borges=borges/`

SLOW: It takes like 12 seconds until you get the `TOS>` prompt,
    and you will notice that keystroke echos are slow.

WARNING: `_log` file gets big quickly!

Source was on the `chelsea` branch, but reconstruction was not tested,
so I could have left something out:
https://github.com/strickyak/tfr9/tree/chelsea

## HOW TO FLASH:

While holding down the FLASH button,
press and release the RESET button.

Wait a couple of seconds for the mount to appear.

```
cp veryturbos.uf2 /media/$USER/RP*
```

And the mount should automatically disappear.

## HOW TO RUN

Use these same flags for best results.

Hold down the RESET while you start this command,
and then release it after 1 second.

If it fails quickly, just try it again,
or look in the `_log` for more error messages.

Of course, if you don't want the log, end with `2>/dev/null`.

```
$ tconsole.linux-amd64.exe  --centipede  --borges borges/  --level=1  2>_log
Internal web server started at ":8080"
[recover: "PANIC: serial.Open: open /dev/ttyACM0: no such file or directory"]
:1:
:2:
:r:
:p:
:g:
IDoTurbo9os Install_OS...
DoTurbo9os Install_OS... n=844b begin=7ab5
DoTurbo9os Install_OS... begin=7ab5 entry=7ac9

Shell

TOS:mdir -e
 Module directory at 00:00:59

Addr Size Typ Rev Attr Use Module name
---- ---- --- --- ---- --- ------------
7AB5  D4E  C1   0 r...   0 kernel
8803   36  C0   0 r...   1 init
8839  195  C1   1 r...   1 tk
89CE  70A  C1   0 r...   1 ioman
90D8  6D0  D1   0 r...   2 scf
97A8  107  E1   0 r...   2 scvt
98AF   3C  F1   7 r...   2 term
98EB   32  11   1 r...   1 go
991D  60F  11   0 r...   1 shell
9F2C  128  11   0 r...   0 mfree
A054  1BD  11   0 r...   2 mdir
A211  279  11   0 r...   0 procs
A48A   4D  11   0 r...   0 sleep
A4D7 5A29  11   0 r...   0 Basic09

TOS:basic09

            BASIC09
     6809 VERSION 01.01.00
COPYRIGHT 1980 BY MOTOROLA INC.
  AND MICROWARE SYSTEMS CORP.
   REPRODUCED UNDER LICENSE
       TO TANDY CORP.
    ALL RIGHTS RESERVED.

Basic09
Ready
B:$procs

Usr #  id pty  state   mem primary module
----- --- --- -------- --- --------------
    0   4   0  active    3 shell <term
    0   3   0  waiting  32 Basic09 <term
    0   2   0  waiting   3 shell <term
    0   1   0  waiting   1 go <term
Ready
B: (* HIT ^C HERE *)
***
*** CAUGHT ERROR: PANIC: STOPPING ON SIGNAL "interrupt"
***
*** SHUTDOWN
$
```

## DEMO OF LOGGING

The borges directory contains the assembly listings.
Since the filenames are suffixed by module size & CRC, you can keep
one directory of all your listings forever, an "infinite" library.
The saver program is https://github.com/strickyak/borges-saver
( See https://en.wikipedia.org/wiki/The_Library_of_Babel )

*   @ = first instruction fetch of the cycle
*   @@ = first instruction fetch of the cycle (first time this instruction was used)
*   & = successive fetches (may not all be used)
*   r = data read
*   d = data write

```
$ head -1000000 _log | tail -30
cy r 36dd 8e #00#999904
cy w 36dc 50 #00#999905  (Xl)
cy w 36db 00 #01#999906  (Xh)
cy @ 94cb 8e #00#999907 :"scf.06d053dfa0"+03f3  ldx #$0000 Get write data offset (e/modules/scf.asm):00593 {;*;;}
cy & 94cc 00 #00#999908  (Xh)
cy & 94cd 00 #01#999909  (Xl)
cy @ 94ce 20 #00#999910 :"scf.06d053dfa0"+03f6  bra L04F1 Go write data (e/modules/scf.asm):00594 {;*;;}
cy & 94cf 05 #00#999911
cy - ---- -- #01#999912
cy @ 94d5 34 #00#999913 :"scf.06d053dfa0"+03fd L04F1 pshs y,x Save write offset & path descriptor pointer (e/modules/scf.asm):00605 {;*;;}
cy & 94d6 30 #00#999914
cy - ---- -- #00#999915
cy - ---- -- #00#999916
cy r 36db 00 #00#999917
cy w 36da 40 #00#999918  (Yl)
cy w 36d9 75 #00#999919  (Yh)
cy w 36d8 00 #00#999920  (Xl)
cy w 36d7 00 #01#999921  (Xh)
cy @ 94d7 1f #00#999922 :"scf.06d053dfa0"+03ff  tfr x,d Move data offset to D (e/modules/scf.asm):00606 {;*;;}
cy & 94d8 10 #00#999923
cy - ---- -- #00#999924
cy - ---- -- #00#999925
cy - ---- -- #00#999926
cy - ---- -- #01#999927
cy @ 94d9 ee #00#999928 :"scf.06d053dfa0"+0401  ldu PD.RGS,y Get register stack pointer (e/modules/scf.asm):00607 {;*;;}
cy & 94da 26 #00#999929
cy & 94db ae #00#999930
cy - ---- -- #00#999931
cy r 7546 36 #00#999932  (Uh)
cy r 7547 ec #01#999933  (Ul)
$
```
