KN-90S Statline
Projected MSRP (1990): $129.95
Prototypes produced: 5–8 units (fiction)
Source: Notion — KN-90S Statline
Imported: 2026-04-26
Related: future-concepts.md, kn90t-toneline.md, kn92-gridline.md, Kinoshita Electronics Consortium
The Statline was a dedicated fantasy sports management device targeting the rotisserie baseball market. By 1989, rotisserie leagues had exploded in popularity, but the infrastructure supporting them was primitive — participants tracked statistics by hand from newspaper box scores, maintained standings on legal pads, and resolved trades over long-distance phone calls.
Form Factor
Section titled “Form Factor”Abandoned the Deckline’s clamshell design for a flat slab configuration, roughly the dimensions and thickness of a large scientific calculator. The numeric keypad was repositioned to the center of the device (stat entry is the primary interaction). Function key grid reduced from sixteen to eight keys — the full CAR/CDR/CONS/NIL list-processing grammar was retained, but advanced system operations (LAMBDA, QUOTE) were dropped. Same Alps SKFL mechanical switches throughout. Same 240×128 Sharp LCD panel in a non-clamshell mounting.
Key Hardware Additions
Section titled “Key Hardware Additions”- Built-in thermal printer integrated into the top edge — prints standings, statistical summaries, and trade confirmation receipts onto standard thermal paper rolls. Sourced from a Japanese manufacturer of point-of-sale receipt printers.
- Phone modem port (RJ-11 jack) for league data synchronization between commissioners via direct dial-up connection. A November 1989 product brief described this as “the thing that gets us written up in The Sporting News.”
Software
Section titled “Software”Base cartridge designed to ship with a complete MLB season — rosters, schedules, and scoring formulas for standard 4×4 and 5×5 rotisserie formats. NFL and NBA cartridges planned as follow-on releases.
The list-processing paradigm mapped naturally: a league is a list of teams, each team is a list of players, each player is a list of stat categories. Navigate with CAR/CDR, add players with CONS, drop with NIL.
Development Status (in fiction)
Section titled “Development Status (in fiction)”Reached working prototype stage. A playable ROM cartridge with a partial 1990 MLB season dataset was produced. The thermal printer functioned but added meaningful bulk and BOM cost. The modem synchronization software was incomplete at the time the project was suspended.
Surviving Units (in fiction)
Section titled “Surviving Units (in fiction)”One Statline prototype surfaced at a swap meet in Portland, Oregon in 2003 and was documented with photographs on a retro computing forum. A second unit is believed to be in the possession of a former Meridian engineer in Austin. The partial 1990 MLB ROM cartridge was dumped and archived by the retro community in 2007.
Product Specification — Buildable Feature Set
Section titled “Product Specification — Buildable Feature Set”The sections above are the fiction. Everything below is the engineering spec for a modern reconstruction. The feature set is extracted from three tactical-sports-sim references (see Source inspiration): the 1985 NFL Challenge, the 1991 NFL Pro League Football, and the contemporary Strat-O-Matic College Football Digital line. The Statline reconstruction targets the KN-86 software stack (nOSh runtime, Fe-VM Lisp carts, capability model, 1024×600 native framebuffer with 128×75 as the 1× cell ceiling per ADR-0036, AMBER phosphor default with WHITE / GREEN selectable per ADR-0034, Sweep split keyboard) so it can be built and emulated on the existing KN-86 toolchain rather than as bespoke 1990 hardware. Where the fiction specifies a 240×128 LCD and 8-key function row, this spec reconciles to the KN-86 canonical surface and notes the delta.
1. Product thesis
Section titled “1. Product thesis”The Statline is a fantasy-sports league-management capability in the KN-9x line. The operator is a rotisserie commissioner / GM, not a play-caller: the primary loop is manage a league (rosters, lineups, trades, standings, weekly stat ingestion) rather than play a game. The tactical play-calling lineage (NFL Challenge / NFL Pro League) contributes the OODA-cadence call-sheet UX and the editable-plain-text data discipline; Strat-O-Matic contributes the dense data-table-as-primary-surface IA and the league-as-nested-list domain model.
Two operator archetypes, both supported (see §6):
- GM mode (primary, v0.1): roster construction, trades, waiver claims, lineup setting, weekly stat ingestion, standings. Strategic, table-driven, asynchronous. This is the Strat-O-Matic / rotisserie heritage.
- Coach mode (deferred): in-game tactical play-calling — the NFL Challenge / NFL Pro League call-sheet OODA loop. A per-matchup tactical layer on top of the league. Deferred to v0.2+ (see §9).
2. Domain model — league as nested list
Section titled “2. Domain model — league as nested list”The list-processing paradigm maps directly (from the fiction, validated against Strat-O-Matic’s domain model):
league = (list-of team ...) ; CAR = standings leader, CDR = rest of fieldteam = (list-of player ...) ; CONS to sign, NIL slot to dropplayer = (handle pos . stat-line) ; stat-line = (list-of (category . value) ...)stat-line= ((G . 14) (HR . 31) (RBI . 92) (AVG . 0.301) ...)schedule = (list-of matchup ...) ; matchup = (week home away)- Navigate the field with CAR/CDR (LEFT-half Lisp block, ADR-0022 legends). Sign a free agent with CONS; drop a player by replacing the slot with NIL.
- LAMBDA defines a reusable scoring formula (a rotisserie category function) or a saved lineup template, insertable across weeks — the same affordance the Toneline uses for musical phrases.
- A league is one
.kn86cart payload (sport rules engine + roster data + scoring formulas) plus a per-league save file on the cart’s own storage (per ADR-0019). The sport is the cart: MLB base cart v0.1; NFL and NBA carts as follow-ons (mirrors the fiction’s planned roster and Strat-O-Matic’s sport-per-product model).
3. Data formats — editable plain text (cart-data lineage)
Section titled “3. Data formats — editable plain text (cart-data lineage)”The data is the spec, not the binary. This is the through-line from NFL Challenge’s 1985 plain-text roster files to the KN-86 cart-data philosophy: durable, human-readable, operator-editable state. Direct lineage to KN-86 nosh-config.toml runtime config and the cart save format (ADR-0019).
Three operator-editable plain-text record types ship as the moddability surface:
| File | Format | Purpose | Lineage |
|---|---|---|---|
roster.dat | one player per line: HANDLE POS TEAM G HR RBI AVG ... (whitespace-aligned columns) | the league’s player universe; editable in nEmacs or any editor | NFL Challenge Roster Editor (1985); Strat-O-Matic card data |
scoring.lsp | s-expression scoring formulas — (define (cat-hr p) (stat p 'HR)) etc. for 4×4 / 5×5 rotisserie | the scoring engine, expressed as cart Lisp | NFL Pro League editable playbook files |
league.sav | s-expression league state (teams, lineups, standings, transaction log) | the durable save; diffable / mergeable for multi-commissioner sync | KN-86 cart save (ADR-0019); Strat-O-Matic league-sync model |
- Format rule: every durable record is plain-text and round-trippable. A
roster.datexported from the device is byte-identical to one a community modder hand-authored. This is what kept NFL Challenge alive for decades (operator-built historical rosters, house rules) and is the explicit moddability contract here. - Stat ingestion consumes the same
roster.datcolumn format — the weekly update is “paste new box-score numbers, advance.” No binary import path in v0.1. - Scoring formulas as Lisp means the operator can author a custom rotisserie category (e.g., a homebrew 6×6 format) without touching C — the same author-extensibility NFL Pro League gave via editable playbooks, dressed in the KN-86 Fe-VM grammar.
4. Screen layouts — reconciled to the KN-86 canonical surface
Section titled “4. Screen layouts — reconciled to the KN-86 canonical surface”The fiction’s 240×128 LCD is replaced by the KN-86 canonical 1024×600 native framebuffer (see CLAUDE.md Canonical Hardware Specification and ADR-0036 — Row 0 status bar, Row 74 action bar at 1× cell scale; cartridges never draw Row 0 / Row 74; 128×75 is the 1× cell ceiling and Statline regions may compose at 1× / 2× / larger integer scales per the UI design language). Every Statline screen is a dense data table built with the three-rule discipline from Strat-O-Matic: box-drawing (CP437) borders, monospace alignment, intensity/inversion delta = semantic (the KN-86 grid carries a single foreground phosphor at any moment — AMBER default, WHITE / GREEN selectable — so the color-as-category rule converts to bold header / dim inactive row / inverted selected row). Detailed wireframes below still cite the legacy 80-column layout in places and are part of the per-screen redesign tracked in the sister-product re-flow.
Standings screen (the home surface):
Row 0 [STATUS BAR — firmware: league name · week · battery · TERM hint]Row 1 ┌─ STANDINGS ── WK 14 ──────────────────────────────────────────┐Row 2 │ # TEAM W L PCT HR RBI AVG SB ERA WHIP │Row 3 │ 1 RIVER RATS 58 41 .586 214 820 .271 118 3.41 1.22 │ <- inverted = selectedRow 4 │ 2 IRON GULLS 55 44 .555 198 790 .268 94 3.55 1.25 │... │ ... │Row 23 └───────────────────────────────────────────────────────────────┘Row 24 [ACTION BAR — firmware: LEAGUE TEAMS ROSTER TRADE STATS PRINT EXIT]- Master/detail navigation: standings → select a team → that team’s roster (CAR/CDR drills down the list); ENT drills in, BACK pops out (KN-86 nav-stack idiom).
- The call-sheet layout (from NFL Pro League) is the sanctioned dense-decision template for any per-matchup screen in Coach mode (§9): formation/option grid left, action menu right, status strip Row 0, clock Row 0 right. Reuse of the screen-design-rules call-sheet pattern.
- Function verbs map to the action bar (Row 24), replacing the fiction’s 8-key function row:
LEAGUE / TEAMS / ROSTER / TRADE / STATS / PRINT / DIAL / EXIT. The Sweep keyboard has no dedicated 8-key function strip, so these are action-bar-advertised, key-bound (digit/letter primaries on the RIGHT half, Lisp verbs on the LEFT).
5. Input model — Sweep keyboard idiom
Section titled “5. Input model — Sweep keyboard idiom”The fiction’s center numeric keypad (“stat entry is the primary interaction”) reconciles to the KN-86 Ferris Sweep split (ADR-0031): the RIGHT half carries the 3×3 digit block (1-2-3 / 4-5-6 / 7-8-9, 0 on inner thumb) — that is the numeric keypad, already positioned for the index/middle/ring fingers. Stat entry is “type number, ENT, advance row,” exactly the keypad-first IA Strat-O-Matic implies.
- Numeric stat entry uses the RIGHT-half digit block + ENT; the OODA “enter a number, advance a row” loop runs entirely on the right hand.
- List operations use the LEFT-half Lisp primitives: CONS (sign), CAR/CDR (navigate field/roster), NIL (drop), APPLY (run a scoring formula across the league), EVAL (LT0 inner thumb — recompute standings). This makes the rotisserie verbs literally the Lisp verbs — the strongest fit between the Statline’s domain and the KN-86 grammar.
- TERM (RT1) opens the REPL for ad-hoc league queries (
(sort-by 'HR (cdr league))), consistent with the release-default REPL (ADR-0016, repl.md). - No mouse, keyboard-only — matches the DOS-era references exactly (NFL Challenge, NFL Pro League, and the period Strat-O-Matic were all fully keyboard-driven).
6. Player-as-GM vs player-as-Coach affordances
Section titled “6. Player-as-GM vs player-as-Coach affordances”| Affordance | GM mode (v0.1) | Coach mode (deferred, §9) |
|---|---|---|
| Primary verb | manage (sign / drop / trade / set lineup) | call (pick formation + play) |
| Cadence | asynchronous, weekly stat-ingestion beats | real-time tactical OODA, ~30 s per call |
| Surface | standings / roster / trade tables | call sheet (formation grid × play menu) |
| Heritage | Strat-O-Matic rotisserie management | NFL Challenge / NFL Pro League play-calling |
| Resolution | numbers ingested, formulas recompute standings | text play-by-play, ~3 s paced (CIPHER-cadence) |
| Lisp verbs | CONS / CAR / CDR / NIL / APPLY / EVAL | APPLY a chosen play; situational mode-switch |
- GM is the spine; Coach is an optional tactical layer. The two share the same league cart and save file — Coach mode resolves a single matchup whose box score feeds back into GM-mode standings, identical to NFL Challenge’s macro (season) / micro (single game) module split.
- Diegetic mode-switching (NFL Challenge’s two-minute drill) is the v0.2 model for Coach mode: a tactical posture the operator sets (e.g., “must-win,” “rest starters”) that re-weights how plays resolve, rather than a separate menu — mirrors KN-86 mission-phase posture altering available actions.
7. Session structure / OODA cadence
Section titled “7. Session structure / OODA cadence”- GM session (v0.1): a weekly beat. Observe (new box-score numbers + current standings) → Orient (where am I in each category, who’s slumping) → Decide (trade / waiver / lineup change) → Act (commit, recompute, optionally PRINT). One session = one league-week; a season is ~20–26 chained sessions. This is the macro-loop tempo — strategic, not twitchy.
- Coach session (v0.2): the tight tactical pulse from NFL Pro League — ~60 plays per game, ~30 s of operator engagement per play (read prior outcome → pick next call → execute), ~1000 OODA cycles per season if every matchup is hand-coached. “The fun is in the call, not the watching.”
- Observation / auto-sim mode (v0.2): NFL Challenge’s computer-vs-computer watch mode — let the engine simulate a matchup (or a whole slate) and observe the box scores roll in without per-play input. Structurally the same as the KN-86 Bare Deck carousel idle posture (the device runs itself, observable, no input required). Useful for sim-the-rest-of-the-league-while-I-manage-one-team play.
- Text play-by-play cadence (Coach mode + auto-sim) follows the CIPHER-voice pacing recipe: type the play out at a readable speed, never raw-dump — the operator mentally renders the action. The same cadence the 1991 game proved.
8. v0.1 scope
Section titled “8. v0.1 scope”In scope for the first buildable reconstruction (GM mode, MLB base cart):
- League-as-nested-list domain model (§2) on the Fe VM, CAR/CDR/CONS/NIL/APPLY/EVAL bound to the Sweep Lisp keys.
- Three plain-text data formats (§3):
roster.dat,scoring.lsp(4×4 + 5×5 rotisserie),league.sav— all operator-editable, round-trippable. - Standings + roster + trade tables (§4) on the canonical 1024×600 surface (128×75 cells at 1× scale) with the three-rule dense-table discipline (box-drawing, monospace alignment, intensity/inversion = semantic); master/detail nav via nav-stack.
- Weekly stat ingestion — paste/enter box-score numbers, recompute standings via the Lisp scoring formulas.
- Sweep input model (§5): RIGHT-half digit block for stat entry, LEFT-half Lisp verbs for league ops, TERM/REPL for ad-hoc queries.
- Action-bar verb set (Row 24):
LEAGUE / TEAMS / ROSTER / TRADE / STATS / PRINT / DIAL / EXIT(PRINT and DIAL stubbed in v0.1 — see deferred). - MLB base cart with a partial sample-season dataset (mirrors the fiction’s partial-1990-MLB ROM).
9. Deferred (v0.2+)
Section titled “9. Deferred (v0.2+)”- Coach mode — in-game tactical play-calling (call sheet, formation × play grid, text play-by-play resolution). The NFL Challenge / NFL Pro League OODA layer. Largest deferred feature.
- Diegetic mode-switching (two-minute-drill-style situational posture re-weighting resolution).
- Auto-sim / observation mode (computer-vs-computer, sim-the-slate, watch box scores roll in).
- Thermal-printer artifact (
PRINTverb) — the fiction’s integrated thermal printer. On the KN-86 reconstruction this is a deferred export path (printed/exported standings, trade receipts, weekly summaries); no physical printer in the base reconstruction. - Modem / multi-commissioner league sync (
DIALverb) — the fiction’s RJ-11 dial-up. Reconstructed as a diff/merge ofleague.savacross commissioners over a modern transport; the Strat-O-Matic sync edge cases (conflicting trades, late stat updates, mid-season rule changes) are the spec for the merge logic. Deferred. - NFL and NBA sport carts — follow-on capability carts after the MLB base validates the model.
- Custom rotisserie formats beyond 4×4 / 5×5 (operator-authored
scoring.lspfor arbitrary N×N).
Source inspiration
Section titled “Source inspiration”This product spec extracts its feature set from three entries in the tactical-sports-sim inspiration cluster:
influences/inspiration/nfl-challenge.md— NFL Challenge (Xor Corporation, 1985). The historical anchor. Source of: editable plain-text roster/data files as the moddability mechanism (§3); the macro (season) / micro (single-game) module split that maps to GM/Coach modes (§6); computer-vs-computer observation/auto-sim mode (§7); diegetic mode-switching via the two-minute drill (§6, §9); menu-driven tactical play-calling as the Coach-mode call sheet (§9).influences/inspiration/nfl-pro-league-1991.md— NFL Pro League Football (Micro Sports, 1991). The refined-UX descendant. Source of: the call-sheet screen-design primitive (formation grid × play menu × status strip, §4); the tight ~30 s tactical OODA pulse and ~1000-cycle season cadence (§7); text play-by-play as paced deterministic-replay (CIPHER cadence, §7); editable playbook files as author-extensibility (§3).influences/inspiration/strat-o-matic-college-football.md— Strat-O-Matic College Football Digital. The contemporary rotisserie-management analogue and the strongest single UI reference. Source of: stat-entry-as-primary-interaction keypad-first IA (§5); sport-as-the-unit-of-cartridge (§2); rotisserie-management-first IA and verb vocabulary — LEAGUE/TEAMS/ROSTER/TRADE/STATS/PRINT (§4); the three-rule dense-data-table discipline reconciled to monochrome amber (§4); the league-as-nested-list domain model (§2); the multi-commissioner sync data model and its edge cases (§9).