FRST Computer: MODEL4 — User Manual =================================== Public Alpha — frstcomputer.com THE SHELL (ZRC) =============== FRST runs ZRC, an rc-like shell. If you've used Plan 9's rc or Byron Rakitzis' Unix port, you're home. Pipes: ls | grep txt Redirection: echo hello > /n/local/notes.txt Variables: x = hello; echo $x Lists: files = (a.txt b.txt c.txt) Substitution: echo `{date} Functions: fn greet { echo hello $1 } If/else: if (test -f foo) echo found While: while (true) { echo tick; sleep 1 } For: for (f in *.txt) echo $f History: up/down arrows recall prior commands The shell prompt is "% ". When you see it, FRST is ready for a command. Scripts are plain text files. Make one, run it: % echo 'echo hello world' > /n/local/hi.rc % . /n/local/hi.rc FILES & EDITORS =============== Everything is a file. The filesystem is your interface. ls list files ls -l long listing with size and date cat file print file contents cp src dst copy mv old new rename or move rm file delete mkdir dir create directory grep pat file search inside files wc file count lines, words, bytes stat file show file details glob pat match filenames by pattern Your writable storage is at /n/local. Files there persist across reboots. Use `west lfs sync` on your host PC before flashing new firmware to preserve them. p — E-INK PAGER =============== The pager is tuned for comfortable e-ink reading. p file page through a file cat file | p pipe anything into the pager p -f file fast-mode -- skip full refresh on page turn Navigation: Space, j, Enter next page b, k previous page g first page G last page q, Esc quit vi == A vi clone. Modes work as expected: normal, insert, command. Not every vi feature is here, but the core muscle memory transfers. hjkl move cursor i, a, o enter insert mode Esc back to normal mode dd delete line yy yank line p paste /pattern search forward n next match :w save :q quit :wq save and quit :q! quit without saving u undo se — SCREEN EDITOR ================== A full-screen visual editor. Simpler than vi — there are no modes. Just type. Arrow keys move. Good for quick edits when you don't want to think about modes. ed — LINE EDITOR ================ The standard text editor. Works on a single line at a time. Tiny, fast, and the foundation of everything. ed file open file for editing ,p print all lines 3 go to line 3 a append text (. on its own line to stop) d delete current line s/old/new/ substitute w write q quit sam — STRUCTURAL EDITOR ======================= Plan 9's editor. Uses regex addresses to select and transform text. Powerful for batch operations. ,x/pattern/ c/replacement/ global substitution ,x/pattern/ d delete all matches The command language is its own thing — worth learning if you do a lot of text processing. sed — STREAM EDITOR ==================== For batch transforms on files or pipes: sed 's/old/new/' file substitute first match sed 's/old/new/g' file substitute all matches cat log | sed '/error/p' filter lines todo — OUTLINER =============== Interactive outliner for managing tasks. Items are marked with status sigils: % todo open your todo list % todo /n/local/plans.td open a specific file Inside: a add new item d delete item j/k move up/down Tab indent (make sub-item) Shift-Tab outdent Enter toggle status q save and quit Status sigils appear before each item: (blank) not started ~ in progress x done NETWORKING (9P!) ================ FRST speaks 9P — the Plan 9 file protocol. Every network connection is a filesystem you can ls, cat, and write to. Basic namespace manipulation: % srv addr srvname attach to addr, posting service to /srv % mount /srv/srvname /n/remote mount a 9P server % ns show your namespace % bind src dst bind one path over another Everything you mount becomes part of your local filesystem. There is no difference between "local" and "remote" — only files. Your keyboard is a 9P server. The Aether Crystal is a 9P server. Remote FRST devices are 9P servers. % mount /srv/bbs /n/bbs % ls /n/bbs/rooms % cat /n/bbs/motd AETHER CHAT =========== LoRa mesh radio messaging. No cell towers, no WiFi, no subscriptions — just radio. % chat open Aether Chat Messages travel via LoRa at ~900 MHz. Range depends on terrain — line of sight can reach kilometers. Other FRST devices in range relay your messages automatically. BBS — BULLETIN BOARD ==================== A dedicated BBS client for Aether Data Crystals. % bbs # connects to 'aetherd' mounted at /n/bbs GOPHER CLIENT ============= Browse Gopherspace. The early internet felt like this — text, menus, files. No JavaScript. % gopher host connect to a gopher server % gopher host port specify port (default 70) Navigate menus with number keys. Bookmarks are saved. GAMES ===== Hunt the Wumpus Navigate a 20-room cave dodging pits and bats. Shoot arrows around corners to slay the Wumpus. ; wumpus Hangman Guess the word before the drawing is complete. ; hangman Blackjack Beat the dealer. Hit, stand, or bust. ; blackjack Tetris Falling blocks. 'hjkl' keys to move and rotate. ; tetris Snake Eat food, grow longer, don't hit yourself. ; snake Chess Two-player chess with algebraic notation. Enter moves like e2e4, g1f3. ; chess Arithmetic Math quiz — addition, subtraction, multiplication. ; arithmetic Fractal Mandelbrot and Julia set renderer. Renders on the e-ink display. ; fractal ZORK & INTERACTIVE FICTION ========================== Zork — The Great Underground Empire. ; zork Frotz — Play any Z-machine story file. ; frotz /path/to/story.z5 Type commands in plain English: "go north", "take lamp", "open mailbox". Save your game with "save". WOZ — APPLE 1 EMULATOR ======================= A Replica 1 emulator with a 65C02 CPU. This is the machine Steve Wozniak hand-built in 1976. ; woz start the emulator You arrive at the Woz Monitor prompt (\). Enter hex to examine memory: 0000.00FF Enter hex to write memory: 0300: A9 01 8D 00 Run Integer BASIC: E000R jump to BASIC >10 PRINT "HELLO" >RUN Run the Krusader assembler: F000R jump to Krusader Press Ctrl+C to return to ZRC. UTILITIES ========= pom — Phase of the Moon Shows the current lunar phase. ; pom morse — Morse Encoder Converts text to Morse code. ; morse HELLO WORLD fortune — Random Wisdom Prints a random quote or bit of wisdom. ; fortune mavis — Typing Trainer Progressive keyboard lessons. Tracks your speed and accuracy. ; mavis slides — Presentation Tool Display .slides files as a presentation. ; slides file.slides ; slides -a -l -d 8 file.slides auto-advance, loop Navigate: j/k, arrows, space, q to quit FORTH ===== A pForth interpreter with the standard library. % forth start Forth 2 3 + . prints 5 : SQUARE DUP * ; define a word 7 SQUARE . prints 49 BYE exit Forth Forth libraries are in /n/local/forth/. Load them: INCLUDE /n/local/forth/floats.fth SYSTEM ====== con — Serial Console Raw console connection. Connect to serial ports or telnet sessions. % con /dev/uart1 % con -t host port Date & Time % date show current date and time % setdate sets date/time MS-DOS style Timezone and AM/PM are configurable via settings. Power Management The display auto-dims and the system sleeps after idle periods. Press any key to wake. Zephyr Shell For low-level diagnostics, press Ctrl+Z for the Zephyr shell. Type "shell" to return to ZRC. Identity FRST uses CGA keys for identity on the mesh. Your key is generated on first boot and stored in flash. HARDWARE ======== Processor ESP32-S3 dual-core @ 240 MHz, 8 MB PSRAM Display 7.5" e-ink, 800x480, black and white Radio Semtech SX1262 LoRa (Sub-GHz mesh) Keyboard BLE via 9P over L2CAP Storage 16 MB flash: 3 MB LittleFS + NVS + OTA Frontlight 6x WS2812 LEDs, adjustable brightness Connectivity BLE 5.0, LoRa, WiFi (ESP32-S3) Boot MCUboot with secure boot and OTA QUICK REFERENCE =============== Things to try right now: fortune something to think about pom what's the moon doing? wumpus hunt the beast woz travel back to 1976 todo organize your thoughts p /text/zen_life.txt read something good slides /text/tour/vcf2026.slides see the system tour forth program in Forth For the few of us. frstcomputer.com .