From e2124cb5bd9f60a3027f96866211af8221ce3b14 Mon Sep 17 00:00:00 2001 From: storagebits <48120561+storagebits@users.noreply.github.com> Date: Wed, 4 Nov 2026 21:52:39 -0500 Subject: [PATCH] Rope: the Apollo Guidance Computer Block II and its DSKY, taken apart The AGC as flown in Apollo 11's LM (Luminary 099), driven by one input, the mission time counted in memory cycles since PDI. An Executive log planned once (SERVICER, Verb 16 monitors, the radar's 13 % cycle steals, the crew's keys) gives the core sets, the lamps and VERB/NOUN/PROG/R1-R3; its first two 1202s land at 317.4 s and 356.4 s after PDI (flown: 317 and 357). The rope shows real assembled words of NOVAC2 read bit by bit (a wire through a core is a 1, around it a 0); an erasable core is read and rewritten; one NOR gate; the DSKY's 19 keys work in the live page and can bring the 1202 back. Drawing-sheet aesthetic (ivory paper, mm grid, desk lamp, Barlow Condensed, seven-segment figures drawn by code), en/fr/es, check.mjs in npm run check. The site build gains a .woff2 base64 loader for the machine's font. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01BzxZC5aA7ZkPTd3m9Kq4wy --- README.md | 1 + machines/rope/FILM.md | 23 + machines/rope/REFERENCES.md | 98 +++ machines/rope/agc-film/main.js | 4 + machines/rope/agc-film/sfx.json | 1 + machines/rope/agc-film/timeline.json | 1 + machines/rope/agc-live/main.js | 5 + machines/rope/agc-shared/agc.js | 873 +++++++++++++++++++++ machines/rope/agc-shared/console.js | 435 ++++++++++ machines/rope/agc-shared/executive.js | 305 +++++++ machines/rope/agc-shared/film.js | 401 ++++++++++ machines/rope/agc-shared/fonts.js | 26 + machines/rope/agc-shared/i18n.js | 223 ++++++ machines/rope/agc-shared/live.js | 569 ++++++++++++++ machines/rope/agc-shared/machine.js | 285 +++++++ machines/rope/agc-shared/make-timeline.mjs | 32 + machines/rope/agc-shared/schedule.js | 87 ++ machines/rope/agc-shared/score.py | 71 ++ machines/rope/agc-shared/seg7.js | 69 ++ machines/rope/agc-shared/stage.js | 169 ++++ machines/rope/check.mjs | 88 +++ machines/rope/og.png | Bin 0 -> 513362 bytes package-lock.json | 10 + package.json | 3 +- scripts/build.mjs | 1 + scripts/machines.mjs | 35 +- 26 files changed, 3811 insertions(+), 4 deletions(-) create mode 100644 machines/rope/FILM.md create mode 100644 machines/rope/REFERENCES.md create mode 100644 machines/rope/agc-film/main.js create mode 100644 machines/rope/agc-film/sfx.json create mode 100644 machines/rope/agc-film/timeline.json create mode 100644 machines/rope/agc-live/main.js create mode 100644 machines/rope/agc-shared/agc.js create mode 100644 machines/rope/agc-shared/console.js create mode 100644 machines/rope/agc-shared/executive.js create mode 100644 machines/rope/agc-shared/film.js create mode 100644 machines/rope/agc-shared/fonts.js create mode 100644 machines/rope/agc-shared/i18n.js create mode 100644 machines/rope/agc-shared/live.js create mode 100644 machines/rope/agc-shared/machine.js create mode 100644 machines/rope/agc-shared/make-timeline.mjs create mode 100644 machines/rope/agc-shared/schedule.js create mode 100644 machines/rope/agc-shared/score.py create mode 100644 machines/rope/agc-shared/seg7.js create mode 100644 machines/rope/agc-shared/stage.js create mode 100644 machines/rope/check.mjs create mode 100644 machines/rope/og.png diff --git a/README.md b/README.md index b69c711..9a631a9 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ the same model that moves the parts. Left alone, each page plays a guided tour; | | The machine | What drives it | Checked by | |---|---|---|---| +| [**Rope**](machines/rope) | The Apollo Guidance Computer Block II and its DSKY, as flown in Apollo 11's lunar module: a word read from the core rope (a wire through a core is a 1, around it a 0), an erasable core read and rewritten, one kind of NOR gate, the Executive running out of core sets as the rendezvous radar steals cycles, the 1202. A model after public sources (MIT Instrumentation Lab, NASA); not affiliated with NASA or MIT. | The mission time, counted in memory cycles since PDI. The Executive's log (jobs, priorities, radar steals, the crew's keys) is planned once. | `machines/rope/check.mjs` | | [**Quantum**](machines/quantum) | A photonic quantum computer: a quantum dot emits one photon per laser pulse, fibre delay lines bring them onto a 24-mode chip together, 276 Mach-Zehnder interferometers mix them, superconducting detectors click. A Hong-Ou-Mandel test on one coupler, the Perceval program behind the heaters. Modelled on the public figures of Quandela's Belenos; not affiliated with Quandela. | The physical time τ of the shot, in nanoseconds. The output distribution is computed from the permanents of the chip's unitary. | `machines/quantum/check.mjs` | | [**Spindl**](machines/spindl) | A 3.5-inch 7,200 rpm desktop hard drive (2 platters, 4 heads): spin-up, the heads loading off the ramp, a seek drawn live, the rotational wait, the 3 nm flying height, the emergency park. A model of a typical drive, not a specific product. | The drive time τ. A request queue (LBA → zone, cylinder, head, sector) is planned once. | `machines/spindl/check.mjs` | diff --git a/machines/rope/FILM.md b/machines/rope/FILM.md new file mode 100644 index 0000000..3dc9e64 --- /dev/null +++ b/machines/rope/FILM.md @@ -0,0 +1,23 @@ +# The film + +The tour (40 s) is recorded frame by frame from `machines/rope/agc-film`, the same code as the page, with the capture +tools of the teardown skill ([whaleyxbt/claude-motion](https://github.com/whaleyxbt/claude-motion)). They need the +skill installed (`SKILL_DIR`), headless Chrome with a real GPU, `ffmpeg` and Python 3. + +```sh +cd machines/rope +node agc-shared/make-timeline.mjs # agc-film/timeline.json (beats) and sfx.json (keys, alarms, calls) +node "$SKILL_DIR/sims/build.mjs" ./agc-film +echo '{"lang":"en"}' > teardown-out/en.json # or fr / es +node "$SKILL_DIR/sims/capture.mjs" agc-film --timeline agc-film/timeline.json --config teardown-out/en.json --size 1600x900 --dpr 1.2 --stills beats --cols 4 --out teardown-out/beats.png +node "$SKILL_DIR/sims/capture.mjs" agc-film --config teardown-out/en.json --size 1600x900 --dpr 1.2 --out teardown-out/silent.mp4 +python3 "$SKILL_DIR/run_sfx.py" agc-shared/score.py # teardown-out/rope-score.wav, mastered to −14 LUFS +ffmpeg -y -i teardown-out/silent.mp4 -i teardown-out/rope-score.wav -map 0:v -map 1:a -c:v copy -c:a aac -b:a 256k -shortest -movflags +faststart teardown-out/rope-en.mp4 +``` + +The share card is the film's first frame, scaled: `ffmpeg -y -i teardown-out/rope-en.mp4 -frames:v 1 -vf "crop=1920:1008:0:36,scale=1200:630" -map_metadata -1 og.png`. + +On macOS, Playwright's headless shell may get no WebGL context; point the capture at Chrome: +`CHROMIUM="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"`. + +`{"lang":"en","clean":true}` records the machine without the console. diff --git a/machines/rope/REFERENCES.md b/machines/rope/REFERENCES.md new file mode 100644 index 0000000..f3f1443 --- /dev/null +++ b/machines/rope/REFERENCES.md @@ -0,0 +1,98 @@ +# Rope: references + +Rope is a model of the Apollo Guidance Computer Block II and its DSKY, as flown in the lunar module of Apollo 11 +(Luminary 099), built from public sources: the MIT Instrumentation Lab's documents and code as preserved by the +Virtual AGC project, NASA's mission records, and the restoration work of Ken Shirriff and Marc Verdiell. It is not +affiliated with NASA, MIT or Draper. Where a figure is not public or could not be found, the model uses a plausible +value and marks it `[E]` below and in [`agc-shared/machine.js`](agc-shared/machine.js), where every number lives. + +## Sources + +- **[W]** [Apollo Guidance Computer](https://en.wikipedia.org/wiki/Apollo_Guidance_Computer), Wikipedia, and the + documents it cites: 16-bit word (15 data bits + odd parity), ones' complement, 36,864 words of core rope and 2,048 + of erasable core, 2.048 MHz clock, 11.72 µs memory cycle, ~2,800 flat-packs of dual 3-input NOR gates, 32 kg + (70 lb), 55 W, 61 × 32 × 17 cm (24 × 12.5 × 6.5 in), green electroluminescent seven-segment digits. +- **[S]** Ken Shirriff, [Software woven into wire: core rope and the Apollo Guidance Computer](https://www.righto.com/2019/07/software-woven-into-wire-core-rope-and.html) + (2019): 6 rope modules of 6,144 words, 512 cores each (two layers of 256), 12 words per core on 192 sense lines + (12 strands of 16), inhibit lines that select one core, set and reset pulses, a wire through the core reads 1 and + a wire around it reads 0; the photographs of the opened AGC (trays A and B), of tray B's modules B7-B17, of the + inside of a rope module, and the simplified rope diagram the geometry was built against. +- **[L]** Luminary 099 (Apollo 11 LM), as transcribed by the [Virtual AGC project](https://www.ibiblio.org/apollo/) + ([listings](https://www.ibiblio.org/apollo/listings/Luminary099/), [chrislgarry/Apollo-11](https://github.com/chrislgarry/Apollo-11)): + - `EXECUTIVE.agc`: NOVAC2, NOVAC3, NEXTCORE, and `TC BAILOUT1` / `OCT 1202`; the assembled words and their + addresses shown in the rope (`01,2625` to `01,2703`) are copied from the listing. + - `ERASABLE_ASSIGNMENTS.agc`: "EIGHT SETS OF 12 REGISTERS EACH" (the core sets), five VAC areas. + - `PINBALL_NOUN_TABLES.agc`: Noun 63 (absolute velocity, altitude rate, computed altitude), Noun 64 (time left + for redesignation and LPD angle, altitude rate, altitude), Noun 68 (slant range to the landing site, time to go in + the braking phase, LR altitude minus computed altitude), Noun 60. + - `LUNAR_LANDING_GUIDANCE_EQUATIONS.agc`, `THE_LUNAR_LANDING.agc`: V06N63 in P63, V06N64 in P64, DELTAH for V16N68. + - `ALARM_AND_ABORT.agc`: BAILOUT1's `INDEX Q` / `CAF 0`, which fetches the alarm code from the rope. +- **[E1]** Don Eyles, [Tales from the Lunar Module Guidance Computer](https://www.doneyles.com/LM/Tales.html) + (AAS, 2004): the duty-cycle margins (over 15 % in braking, about 13 % once the landing radar's data come in, 10 % + or less with Verb 16 Noun 68 up, below 10 % in P64), the radar's TLOSS (2 angles × up to 6,400 pulses per second, + 13 % assumed, 13.36 % measured after the flight), SERVICER every 2 s, 8 core sets and 5 VAC areas, the restart + that keeps only the newest SERVICER and drops the uncompleted ones and the Noun 68 monitor, high gate at + 102:41:32 and 7,400 ft, P66 at 102:43:08. +- **[J]** [Apollo 11 Lunar Surface Journal](https://apollojournals.org/alsj/a11/a11.landing.html), the landing: + the crew's altitude and speed call-outs from 5,000 ft to contact, "Delta-H is minus 2,900", the ALT light out at + 102:38:11, the altitude and velocity lights near the surface, "Contact light" at 102:45:40. +- **[R]** Apollo 11 Mission Report and NASA timeline: PDI at 102:33:05, alarms at 102:38:22 (1202), 102:39:02 + (1202), 102:42:18 (1201), 102:42:43 (1202), 102:42:58 (1202). +- **[G]** [Apollo descent guidance](https://www.nasa.gov/wp-content/uploads/static/history/alsj/ApolloDescentGuidnce.pdf) (report on the ALSJ): + the braking phase ends about 7,800 m in slant range from the landing site. +- **[D]** The LM DSKY: the photographs at the Computer History Museum and NASM (Wikimedia Commons, below), the + Luminary lamp list; 8 × 8 × 7 in. +- **[H]** The AGC's instruction timing (Virtual AGC, "Assembly language manual"): 12 timing pulses per MCT, AD in + 2 MCT, TC and TCF in 1, DXCH in 3. +- **[P]** Pinball (the DSKY program in Luminary): a Verb 16 monitor redisplays once a second. +- **[Q]** [Quindar tones](https://www.nasa.gov/wp-content/uploads/static/history/alsj/quindar.html), ALSJ: + 2,525 Hz to key the ground transmitter, 2,475 Hz to release it, 250 ms each. +- **[A]** Apollo Operations Handbook, Block II spacecraft, vol. 1, section 2.10, caution and warning + ([ibiblio](https://www.ibiblio.org/apollo/ApolloProjectOnline/Documents/SMA2A-03-BLOCK%20II%20Volume%201%2019691015/aoh-v1-2-10-c+w.pdf)): + the master alarm tone is a square wave alternately 750 and 2,000 Hz. That is the command module's handbook; the + score assumes the LM's tone was the same. + +## Estimates and simplifications **[E]** + +| What | In the model | Why | +|---|---|---| +| Job mix of the Executive | SERVICER every 2 s (needs a VAC area), a Verb 16 monitor job every second at lower priority, an LPD display job every 2 s in P64 from 12 s after high gate, one keyboard job per key | the real Luminary job list is longer; this is the smallest mix that shows the mechanism Eyles describes | +| Priorities | relative only (keyboard > SERVICER > monitor, LPD) | the numbers are not shown on screen; the priority word in the erasable view uses PRIO20 / PRIO10 and an estimated low-9-bit pointer (`0154`) | +| Radar data load | +1.5 % (ramping over 24 s once the landing radar locks at 102:38:11) | Eyles gives "perhaps 13 %" margin; 1.5 % instead of 2 % keeps the braking phase from drifting into overload between the second alarm and P64, as it did not in flight | +| P64 duty | 83.5 % rising to 90 % at P66 | Eyles: margin below 10 % in P64; the ramp places the model's P64 alarms near the flown ones | +| Crew keystrokes | V16 N68 entered at PDI + 305 s, V05 N09 after the first alarm, V16 N68 again at PDI + 350 s, RSETs | the keystroke times are not in the transcript; they are set so the model's first two 1202s land at 317.4 s and 356.4 s after PDI (flown: 317 and 357) | +| Descent profile before high gate | a smooth braking profile through 50,000 ft at PDI, 33,500 ft at the first alarm, 7,400 ft at high gate; horizontal speed 5,560 ft/s at PDI | nobody called numbers in the braking phase; the call-outs after high gate are the crew's [J] | +| Delta-H | −2,900 ft when the radar locks [J], then decaying with a 38 s time constant | the shape of its incorporation is not published | +| Rope strand mapping | word w of a module sits on core w mod 512, strand ⌊w / 512⌋ | the real mapping (address bits to core and strand) is more involved; this one puts consecutive addresses on neighbouring cores, so the 9 cores shown hold the real words `01,2623` to `01,2633` | +| Phases inside the memory cycle | inhibit, set, reset, strobe drawn over the 12 pulses; the 16 bits drawn one after the other | the sense amplifiers read all 16 at once; the drawing staggers them so the eye can follow | +| Erasable plane | 34 × 11 cores of one bit plane (bit 14), coincident-current X / Y lines, one sense line | the AGC's erasable module packs 32,768 cores; the plane is a window onto one of them | +| Inside tray B | the rope bay at one end (3 across, 2 deep), B7-B17 standing across the middle, the X-ribbed plate at the other end | after the photographs of the opened trays; the exact positions are approximate | +| Model's P64 alarms | three 1201s at 577, 586 and 598 s | flown: a 1201 at 553 s and two 1202s at 578 and 593 s; the model's VAC areas run out before its core sets | +| The instruction-per-second figure | 85,333 MCT/s; additions take 2 MCT, so 42,667 additions/s | "about 85,000 instructions per second" holds only for one-MCT instructions (TC, TCF) | + +## The model, by hand + +- 2.048 MHz ÷ 2 = 1.024 MHz; 12 pulses = 11.72 µs per memory cycle; 85,333 cycles a second. +- 6 modules × 512 cores × 12 words = 36,864 words of rope = 36 banks of 1,024; × 16 bits = 589,824 bits. +- 2,048 erasable words × 16 bits = 32,768 cores. +- The radar's two angles at 6,400 pulses per second each steal 12,800 MCT a second: 15.0 % at most; 13 % in the model. +- At the first alarm: 85 % braking + 1.5 % radar data + 3 % Noun 68 + 13 % stolen = 102.5 % of the machine. +- CAF NO.CORES at `01,2627` is `32634` octal = `011 010 110 011 100`, eight ones; the parity bit is 1. + +`node machines/rope/check.mjs` recomputes each of these from the code, runs the Executive's log and compares its +alarms with Apollo 11's. + +## Study material + +The photographs and documents the geometry was built against belong to their authors and are not in this +repository (they sit in `machines/rope/ref/`, which git ignores): + +- Ken Shirriff's photographs in [S]: the AGC closed, the two trays opened, tray B, a rope module opened, the rope + diagram. +- [Apollo DSKY at the Computer History Museum](https://commons.wikimedia.org/wiki/File:Apollo_DSKY_CHM.agr.jpg) + (Arnold Reinhold, CC BY-SA), [Apollo Guidance Computer at NASM](https://commons.wikimedia.org/wiki/File:Apollo_Guidance_Computer_(NASM).JPG), + [AGC logic module](https://commons.wikimedia.org/wiki/File:AGClogicmodule.agr.jpg), + [core rope memory](https://commons.wikimedia.org/wiki/File:Apollo_guidiance_computer_ferrit_core_memory.jpg). +- The Luminary 099 source files listed in [L]. + +The console's lettering is Barlow Condensed (SIL Open Font License, [@fontsource/barlow-condensed](https://fontsource.org/fonts/barlow-condensed)). diff --git a/machines/rope/agc-film/main.js b/machines/rope/agc-film/main.js new file mode 100644 index 0000000..3655774 --- /dev/null +++ b/machines/rope/agc-film/main.js @@ -0,0 +1,4 @@ +// Rope, the film. Shared code in ../agc-shared. +import {run} from '../agc-shared/film.js'; + +run(); diff --git a/machines/rope/agc-film/sfx.json b/machines/rope/agc-film/sfx.json new file mode 100644 index 0000000..3c32ca1 --- /dev/null +++ b/machines/rope/agc-film/sfx.json @@ -0,0 +1 @@ +{"keys":[29.224,29.513,29.802,30.162,30.451,30.74,31.173,32.111],"alarms":[{"t":27.6,"code":1202},{"t":33.503,"code":1202},{"t":35.132,"code":1201},{"t":35.189,"code":1201},{"t":35.266,"code":1201}],"calls":[[28.5,29.9],[31.2,32.2],[37.6,38.8]],"quindar":{"intro":2525,"outro":2475,"ms":250}} \ No newline at end of file diff --git a/machines/rope/agc-film/timeline.json b/machines/rope/agc-film/timeline.json new file mode 100644 index 0000000..63ff34f --- /dev/null +++ b/machines/rope/agc-film/timeline.json @@ -0,0 +1 @@ +{"duration":40,"beats":{"views":[3,6.8,14.6,20.2,24,32.4],"ropeRead":10.2,"erasRead":16,"alarm":27.6,"ff":32.4,"contact":37.4}} \ No newline at end of file diff --git a/machines/rope/agc-live/main.js b/machines/rope/agc-live/main.js new file mode 100644 index 0000000..6ec7377 --- /dev/null +++ b/machines/rope/agc-live/main.js @@ -0,0 +1,5 @@ +import {runLive} from '../agc-shared/live.js'; + +// Rope as an interactive page: seven subsystems, sections, views, the DSKY's keys, the radar's cycle steals, the +// mission speed, orbit and zoom, and an auto tour when left alone. +runLive(); diff --git a/machines/rope/agc-shared/agc.js b/machines/rope/agc-shared/agc.js new file mode 100644 index 0000000..d90ff31 --- /dev/null +++ b/machines/rope/agc-shared/agc.js @@ -0,0 +1,873 @@ +// Rope's geometry, built from code, in metres: the AGC Block II (two magnesium trays bolted face to face, 61 x 32 x +// 17 cm [W]) and the LM DSKY (20 x 20 x 18 cm [D]), after the photographs in REFERENCES.md. Tray A (bottom) holds the +// 24 logic and 7 interface modules standing on edge [S]; tray B holds the memory electronics B7-B17, the erasable +// module B12 (black), the X-ribbed plate, and the bay of the 6 rope modules B1-B6 that slide in from the end [S]. +// The layout inside tray B is simplified [E]. update(fx) poses everything from the frame's state. +import * as THREE from 'three'; +import {AGC, LAMPS, ROPE_WORDS, bits16, ropePlace, wordAt} from './machine.js'; +import {drawDigits} from './seg7.js'; + +const V3 = THREE.Vector3; +export const ACCENT = '#35c26a'; // the DSKY's electroluminescent green +export const ACCENT_INK = '#1f8a4c'; // the same on paper +export const AMBER = '#f0a828'; +const COL = { + mag: '#a39976', // anodised magnesium, dull gold + magDark: '#7f7a62', + magGreen: '#8b8f78', // grey-green + strip: '#d2cbb7', // potted modules, cream grey + stripEdge: '#b9b19b', + black: '#24221f', + ferrite: '#1c1a18', + copper: '#b5713f', + gold: '#c09a4a', + ink: '#2b2925', + dsky: '#8f9194', + key: '#2a2b2d', + pcb: '#5f6b55', +}; +export const L = { + x0: -0.17, // the AGC's centre + len: 0.61, + wid: 0.32, + trayH: 0.085, + dsky: new V3(0.5, 0, 0.04), + dskyYaw: 0.3, + dskyS: 0.203, + dskyD: 0.178, + openZ: -0.37, // tray B beside tray A when apart + liftY: 0.24, +}; +const M0 = new THREE.Matrix4(); +const smooth = (x) => { + const u = Math.min(1, Math.max(0, x)); + return u * u * (3 - 2 * u); +}; +const mix = (a, b, k) => a + (b - a) * k; + +function std(color, o = {}) { + return new THREE.MeshStandardMaterial({color, roughness: 0.62, metalness: 0.15, envMapIntensity: 0.5, ...o}); +} +function box(w, h, d, mat, x = 0, y = 0, z = 0) { + const m = new THREE.Mesh(new THREE.BoxGeometry(w, h, d), mat); + m.position.set(x, y, z); + m.castShadow = true; + m.receiveShadow = true; + return m; +} +const font = (w, px) => `${w} ${px}px "Barlow Condensed", "Arial Narrow", sans-serif`; +function labelTex(text, {w = 512, h = 64, px = 40, color = '#2b2925', bg = null, weight = 600, align = 'center', spacing = 3} = {}) { + const c = document.createElement('canvas'); + c.width = w; + c.height = h; + const g = c.getContext('2d'); + if (bg) { + g.fillStyle = bg; + g.fillRect(0, 0, w, h); + } + g.fillStyle = color; + g.font = font(weight, px); + g.textBaseline = 'middle'; + g.textAlign = align; + if ('letterSpacing' in g) g.letterSpacing = `${spacing}px`; + g.fillText(text, align === 'center' ? w / 2 : 12, h / 2 + 2); + const t = new THREE.CanvasTexture(c); + t.colorSpace = THREE.SRGBColorSpace; + t.anisotropy = 8; + return t; +} + +// ------------------------------------------------------------ a magnesium tray: plate, walls, pockets, flange, bolts +function tray({len, wid, h, mat, dark, holes}) { + const g = new THREE.Group(); + const t = 0.006; + const shell = []; + const add = (m) => { + g.add(m); + shell.push(m); + return m; + }; + add(box(len, t, wid, mat, 0, t / 2, 0)); + add(box(len, h, t, mat, 0, h / 2, wid / 2 - t / 2)); + add(box(len, h, t, mat, 0, h / 2, -wid / 2 + t / 2)); + add(box(t, h, wid - 2 * t, mat, len / 2 - t / 2, h / 2, 0)); + add(box(t, h, wid - 2 * t, mat, -len / 2 + t / 2, h / 2, 0)); + // the flange round the open side + const fl = 0.012; + add(box(len, 0.004, fl, mat, 0, h - 0.002, wid / 2 - fl / 2)); + add(box(len, 0.004, fl, mat, 0, h - 0.002, -wid / 2 + fl / 2)); + add(box(fl, 0.004, wid, mat, len / 2 - fl / 2, h - 0.002, 0)); + add(box(fl, 0.004, wid, mat, -len / 2 + fl / 2, h - 0.002, 0)); + // pockets milled into the long walls (the photos' rectangular recesses), and a rib between them + const pk = std(dark); + pk.polygonOffset = true; + pk.polygonOffsetFactor = -2; + const n = 4; + for (let i = 0; i < n; i++) { + const pw = len / n - 0.018; + const px = -len / 2 + (i + 0.5) * (len / n); + for (const s of [1, -1]) { + const p = new THREE.Mesh(new THREE.PlaneGeometry(pw, h * 0.62), pk); + p.position.set(px, h * 0.45, s * (wid / 2 + 0.0002)); + if (s < 0) p.rotation.y = Math.PI; + p.receiveShadow = true; + g.add(p); + shell.push(p); + } + } + // bolt holes on the flange + if (holes) { + const hg = new THREE.CylinderGeometry(0.0022, 0.0022, 0.0006, 10); + const hm = new THREE.MeshBasicMaterial({color: '#3b362c'}); + const pts = []; + for (let i = 0; i <= 22; i++) for (const s of [1, -1]) pts.push([-len / 2 + 0.012 + (i * (len - 0.024)) / 22, s * (wid / 2 - 0.006)]); + for (let i = 1; i < 10; i++) for (const s of [1, -1]) pts.push([s * (len / 2 - 0.006), -wid / 2 + (i * wid) / 10]); + const im = new THREE.InstancedMesh(hg, hm, pts.length); + const M = new THREE.Matrix4(); + pts.forEach(([x, z], i) => im.setMatrixAt(i, M.makeTranslation(x, h + 0.0003, z))); + g.add(im); + shell.push(im); + } + return {g, shell}; +} + +// ------------------------------------------------------------ a rope module: frame, 512 cores, copper weave, cover +export const ROPE = {len: 0.16, wid: 0.092, th: 0.028, cols: 32, rows: 8, layers: 2, px: 0.0036, pz: 0.0098, rCore: 0.00315, rHole: 0.0019, thick: 0.0024}; +const coreX = (c) => (c - (ROPE.cols - 1) / 2) * ROPE.px; +const coreZ = (r) => (r - (ROPE.rows - 1) / 2) * ROPE.pz; +const coreY = (l) => 0.0095 + l * 0.0098; +function ropeModule(i, mats) { + const g = new THREE.Group(); + const frame = std(COL.black, {roughness: 0.7}); + g.add(box(ROPE.len, 0.003, ROPE.wid, frame, 0, 0.0015, 0)); + for (const s of [1, -1]) g.add(box(ROPE.len, ROPE.th, 0.004, frame, 0, ROPE.th / 2, s * (ROPE.wid / 2 - 0.002))); + g.add(box(0.006, ROPE.th, ROPE.wid, frame, -ROPE.len / 2 + 0.003, ROPE.th / 2, 0)); + // the connector end, gold pins + const conn = box(0.01, ROPE.th * 0.8, ROPE.wid * 0.86, std(COL.black), ROPE.len / 2 - 0.005, ROPE.th * 0.42, 0); + g.add(conn); + const pinG = new THREE.CylinderGeometry(0.0005, 0.0005, 0.006, 6); + pinG.rotateZ(Math.PI / 2); + const pins = new THREE.InstancedMesh(pinG, mats.gold, 48); + const M = new THREE.Matrix4(); + for (let k = 0; k < 48; k++) pins.setMatrixAt(k, M.makeTranslation(ROPE.len / 2 + 0.002, 0.008 + (k % 2) * 0.008, -ROPE.wid * 0.4 + Math.floor(k / 2) * (ROPE.wid * 0.8) / 23)); + g.add(pins); + // cordwood rows of resistors and diodes along both long edges (the photo's white combs) + const cw = new THREE.CylinderGeometry(0.0007, 0.0007, 0.009, 6); + const cwm = new THREE.InstancedMesh(cw, std('#e9e3d2', {roughness: 0.8}), 2 * 70); + for (let k = 0; k < 140; k++) { + const s = k < 70 ? 1 : -1; + const x = -0.068 + ((k % 70) * 0.136) / 69; + cwm.setMatrixAt(k, M.makeTranslation(x, 0.012, s * 0.036)); + } + g.add(cwm); + // the cores: 2 layers of 8 rows of 32, axis along the module (the wires run along it) + const cg = new THREE.TorusGeometry((ROPE.rCore + ROPE.rHole) / 2, (ROPE.rCore - ROPE.rHole) / 2, 6, 14); + cg.rotateY(Math.PI / 2); + cg.scale(ROPE.thick / (ROPE.rCore - ROPE.rHole), 1, 1); + const cores = new THREE.InstancedMesh(cg, mats.ferrite, ROPE.cols * ROPE.rows * ROPE.layers); + let k = 0; + for (let l = 0; l < ROPE.layers; l++) for (let r = 0; r < ROPE.rows; r++) for (let c = 0; c < ROPE.cols; c++) cores.setMatrixAt(k++, M.makeTranslation(coreX(c), coreY(l), coreZ(r))); + cores.castShadow = true; + g.add(cores); + // the 192 lines of each row: a bundle through the cores and a looser one round them + const wl = ROPE.cols * ROPE.px + 0.01; + const thr = new THREE.CylinderGeometry(0.0014, 0.0014, wl, 8, 1, true); + thr.rotateZ(Math.PI / 2); + const aro = new THREE.CylinderGeometry(0.0039, 0.0039, wl, 14, 1, true); + aro.rotateZ(Math.PI / 2); + const bundles = new THREE.InstancedMesh(thr, mats.copper, ROPE.rows * ROPE.layers); + const sheath = new THREE.InstancedMesh(aro, mats.copperSheath, ROPE.rows * ROPE.layers); + k = 0; + for (let l = 0; l < ROPE.layers; l++) + for (let r = 0; r < ROPE.rows; r++) { + bundles.setMatrixAt(k, M.makeTranslation(0, coreY(l), coreZ(r))); + sheath.setMatrixAt(k++, M.makeTranslation(0, coreY(l), coreZ(r))); + } + g.add(bundles, sheath); + // the cover and its label + const cover = new THREE.Group(); + const cm = std(COL.magGreen, {roughness: 0.55}); + cover.add(box(ROPE.len - 0.004, 0.0022, ROPE.wid - 0.002, cm, 0, 0, 0)); + const lab = new THREE.Mesh(new THREE.PlaneGeometry(0.11, 0.014), new THREE.MeshStandardMaterial({map: labelTex(`FIXED MEMORY MODULE B${i + 1}`, {px: 34, color: '#3b3a33'}), transparent: true, roughness: 0.8})); + lab.rotation.x = -Math.PI / 2; + lab.position.set(-0.01, 0.00115, 0); + cover.add(lab); + cover.position.y = ROPE.th + 0.0011; + g.add(cover); + return {g, cover, cores, conn, bundles, sheath}; +} + +// ------------------------------------------------------------ the detailed row inside module B1: 9 cores, 16 sense lines +const DET_N = 9; +function ropeDetail(mats) { + const g = new THREE.Group(); + const sel = ROPE_WORDS.find((w) => w.op === 'CAF NO.CORES'); + const P = ropePlace(sel.bank, sel.addr); + const row = Math.floor(P.core / ROPE.cols); + const layer = Math.floor(row / ROPE.rows); + const r = row % ROPE.rows; + const c0 = (P.core % ROPE.cols) - (DET_N - 1) / 2; + const y = coreY(layer); + const z = coreZ(r); + // the words held on this strand by the 9 cores: consecutive addresses [L] + const words = []; + for (let k = 0; k < DET_N; k++) { + const addr = sel.addr + (k - (DET_N - 1) / 2); + const w = wordAt(1, addr); + words.push({addr, word: w, bits: w === null ? null : bits16(w)}); + } + const cg = new THREE.TorusGeometry((ROPE.rCore + ROPE.rHole) / 2, (ROPE.rCore - ROPE.rHole) / 2, 18, 40); + cg.rotateY(Math.PI / 2); + cg.scale(ROPE.thick / (ROPE.rCore - ROPE.rHole), 1, 1); + const cores = []; + for (let k = 0; k < DET_N; k++) { + const m = new THREE.Mesh(cg, mats.coreSel.clone()); + m.position.set(coreX(c0 + k), y, z); + m.castShadow = true; + g.add(m); + cores.push(m); + } + // a sense line: through the hole of a core (a 1) or over it (a 0); 16 lines, the bits of this strand + const xs = (k) => coreX(c0 + k); + const throughAt = (j) => [(-1.5 + (j % 4)) * 0.00042, (-1.5 + Math.floor(j / 4)) * 0.00042]; + const aroundAt = (j) => { + const a = Math.PI * (0.12 + (0.76 * j) / 15); + const R = 0.0046 + (j % 2) * 0.0005; + return [Math.cos(a) * R, Math.sin(a) * R]; + }; + const wires = []; + const tubeR = 0.00012; + for (let j = 0; j < 16; j++) { + const pts = []; + const x0 = xs(0) - ROPE.px * 0.9; + const x1 = xs(DET_N - 1) + ROPE.px * 0.9; + const P0 = (k) => (words[k].bits && words[k].bits[j] ? throughAt(j) : aroundAt(j)); + const first = P0(0); + pts.push(new V3(x0 - 0.004, y + first[1] * 0.5 + 0.0006, z + first[0])); + for (let k = 0; k < DET_N; k++) { + const [dz, dy] = P0(k); + pts.push(new V3(xs(k) - ROPE.thick * 0.75, y + dy, z + dz)); + pts.push(new V3(xs(k) + ROPE.thick * 0.75, y + dy, z + dz)); + } + const last = P0(DET_N - 1); + pts.push(new V3(x1 + 0.004, y + last[1] * 0.5 + 0.0006, z + last[0])); + const curve = new THREE.CatmullRomCurve3(pts, false, 'centripetal'); + const m = new THREE.Mesh(new THREE.TubeGeometry(curve, 220, tubeR, 6), mats.wire.clone()); + g.add(m); + wires.push(m); + } + // the other 176 lines (11 other strands): faint bundles through and round + const wl = (DET_N + 1.8) * ROPE.px; + const others = new THREE.Mesh(new THREE.CylinderGeometry(0.00125, 0.00125, wl, 16, 1, true).rotateZ(Math.PI / 2), mats.copperDim); + others.position.set((xs(0) + xs(DET_N - 1)) / 2, y - 0.0003, z); + g.add(others); + // inhibit lines (the address decode) below, and the set / reset line + const inhib = []; + for (let q = 0; q < 4; q++) { + const pts = []; + for (let k = 0; k < DET_N; k++) { + const thru = ((k + q) % 3 !== 0) !== (k === (DET_N - 1) / 2) || (k === (DET_N - 1) / 2 && false); + const on = k === (DET_N - 1) / 2 ? true : thru; + const dy = on ? -0.0011 - q * 0.00022 : -0.0047 - q * 0.0004; + pts.push(new V3(xs(k) - ROPE.thick * 0.7, y + dy, z + (q - 1.5) * 0.0005)); + pts.push(new V3(xs(k) + ROPE.thick * 0.7, y + dy, z + (q - 1.5) * 0.0005)); + } + const m = new THREE.Mesh(new THREE.TubeGeometry(new THREE.CatmullRomCurve3(pts, false, 'centripetal'), 160, 0.00013, 5), mats.inhibit.clone()); + g.add(m); + inhib.push(m); + } + const setPts = [new V3(xs(0) - 0.005, y + 0.0012, z - 0.0011), new V3(xs(DET_N - 1) + 0.005, y + 0.0012, z - 0.0011)]; + const setLine = new THREE.Mesh(new THREE.TubeGeometry(new THREE.CatmullRomCurve3(setPts), 4, 0.00017, 6), mats.inhibit.clone()); + g.add(setLine); + return {g, cores, wires, inhib, setLine, words, sel, place: P, layer, row: r, c0, anchor: new V3(xs((DET_N - 1) / 2), y, z)}; +} + +// ------------------------------------------------------------ the erasable plane inside B12 +export const ERAS = {cols: 34, rows: 11, px: 0.0029, py: 0.0029, sel: [17, 5]}; +function erasPlane(mats) { + const g = new THREE.Group(); + const cg = new THREE.TorusGeometry(0.00072, 0.00026, 8, 18); + const cores = new THREE.InstancedMesh(cg, mats.ferrite, ERAS.cols * ERAS.rows); + const M = new THREE.Matrix4(); + const Q = new THREE.Quaternion().setFromEuler(new THREE.Euler(0, Math.PI / 2, Math.PI / 4)); + const S = new V3(1, 1, 1); + const P = new V3(); + const pos = (c, r) => P.set((c - (ERAS.cols - 1) / 2) * ERAS.px, (r - (ERAS.rows - 1) / 2) * ERAS.py, 0); + let k = 0; + for (let r = 0; r < ERAS.rows; r++) for (let c = 0; c < ERAS.cols; c++) cores.setMatrixAt(k++, M.compose(pos(c, r), Q, S)); + g.add(cores); + // X lines (rows), Y lines (columns), the sense line zig-zag, the inhibit line + const W = ERAS.cols * ERAS.px; + const H = ERAS.rows * ERAS.py; + const xl = []; + const yl = []; + for (let r = 0; r < ERAS.rows; r++) { + const m = new THREE.Mesh(new THREE.CylinderGeometry(0.00005, 0.00005, W + 0.004, 5).rotateZ(Math.PI / 2), mats.fine.clone()); + m.position.y = (r - (ERAS.rows - 1) / 2) * ERAS.py; + g.add(m); + xl.push(m); + } + for (let c = 0; c < ERAS.cols; c++) { + const m = new THREE.Mesh(new THREE.CylinderGeometry(0.00005, 0.00005, H + 0.004, 5), mats.fine.clone()); + m.position.x = (c - (ERAS.cols - 1) / 2) * ERAS.px; + m.position.z = 0.0001; + g.add(m); + yl.push(m); + } + const zz = []; + for (let r = 0; r <= ERAS.rows; r++) zz.push(new V3((r % 2 ? 1 : -1) * (W / 2 + 0.0015), (r - ERAS.rows / 2) * ERAS.py, -0.00012)); + const sense = new THREE.Mesh(new THREE.TubeGeometry(new THREE.CatmullRomCurve3(zz, false, 'catmullrom', 0.1), 260, 0.00006, 5), mats.fine.clone()); + g.add(sense); + // the selected core, on its own, with its magnetisation mark + const [sc, sr] = ERAS.sel; + const selCore = new THREE.Mesh(new THREE.TorusGeometry(0.00072, 0.00028, 14, 30), mats.erasSel); + selCore.position.copy(pos(sc, sr)); + selCore.quaternion.copy(Q); + g.add(selCore); + const mark = new THREE.Mesh(new THREE.SphereGeometry(0.0003, 10, 8), mats.mark); + g.add(mark); + const backing = new THREE.Mesh(new THREE.PlaneGeometry(W + 0.01, H + 0.01), std('#b9ae92', {roughness: 0.9})); + backing.position.z = -0.0014; + backing.receiveShadow = true; + g.add(backing); + return {g, xl, yl, sense, selCore, mark, centre: pos(sc, sr).clone()}; +} + +// ------------------------------------------------------------ the DSKY: face plate, lamps, EL panel, 19 keys +export const KEY_POS = (() => { + const out = {}; + const col = (i) => (i - 3) * 0.0262; + const row = (j) => -0.024 - j * 0.0262; + out.VERB = [col(0), row(0.5)]; + out.NOUN = [col(0), row(1.5)]; + ['+', '7', '8', '9', 'CLR'].forEach((k, i) => (out[k] = [col(i + 1), row(0)])); + ['-', '4', '5', '6', 'PRO'].forEach((k, i) => (out[k] = [col(i + 1), row(1)])); + ['0', '1', '2', '3', 'KEY REL'].forEach((k, i) => (out[k] = [col(i + 1), row(2)])); + out.ENTR = [col(6), row(0.5)]; + out.RSET = [col(6), row(1.5)]; + return out; +})(); +const keyLabel = (k) => (k === '-' ? '−' : k); +function dskyUnit(mats) { + const g = new THREE.Group(); + const S = L.dskyS; + const D = L.dskyD; + const body = std(COL.dsky, {roughness: 0.55, metalness: 0.25}); + const shell = box(S, S, D, body, 0, S / 2, 0); + g.add(shell); + // back connector block and side rails (the photo's mounting flanges) + g.add(box(S * 0.86, S * 0.9, 0.03, std('#2f3133'), 0, S / 2, -D / 2 - 0.015)); + for (const s of [1, -1]) g.add(box(0.006, S * 0.96, D * 0.9, std('#9a9b9c', {metalness: 0.4}), s * (S / 2 + 0.003), S / 2, -0.004)); + // the face: plate, lamp window, EL window, keyboard well + const plate = new THREE.CanvasTexture(faceCanvas()); + plate.colorSpace = THREE.SRGBColorSpace; + plate.anisotropy = 8; + const face = new THREE.Mesh(new THREE.PlaneGeometry(S, S), new THREE.MeshStandardMaterial({map: plate, roughness: 0.6, metalness: 0.1})); + face.position.set(0, S / 2, D / 2 + 0.0004); + face.receiveShadow = true; + g.add(face); + // the lamp panel and the EL panel: canvases redrawn when their state changes + const lampC = document.createElement('canvas'); + lampC.width = 420; + lampC.height = 470; + const lampT = new THREE.CanvasTexture(lampC); + lampT.colorSpace = THREE.SRGBColorSpace; + lampT.anisotropy = 8; + const lw = 0.08; + const lh = 0.0895; + const lamp = new THREE.Mesh(new THREE.PlaneGeometry(lw, lh), new THREE.MeshBasicMaterial({map: lampT, toneMapped: false})); + lamp.position.set(-0.048, S / 2 + 0.05, D / 2 + 0.0035); + g.add(lamp); + g.add(box(lw + 0.006, lh + 0.006, 0.006, std('#55575a'), -0.048, S / 2 + 0.05, D / 2 + 0.0002)); + const elC = document.createElement('canvas'); + elC.width = 400; + elC.height = 470; + const elT = new THREE.CanvasTexture(elC); + elT.colorSpace = THREE.SRGBColorSpace; + elT.anisotropy = 8; + const el = new THREE.Mesh(new THREE.PlaneGeometry(lw, lh), new THREE.MeshBasicMaterial({map: elT, toneMapped: false})); + el.position.set(0.048, S / 2 + 0.05, D / 2 + 0.0035); + g.add(el); + g.add(box(lw + 0.006, lh + 0.006, 0.006, std('#55575a'), 0.048, S / 2 + 0.05, D / 2 + 0.0002)); + // keys + const keys = {}; + const kg = new THREE.BoxGeometry(0.0218, 0.0218, 0.007); + for (const [k, [x, y]] of Object.entries(KEY_POS)) { + const t = labelTex(keyLabel(k), {w: 128, h: 128, px: k.length > 3 ? 34 : k.length > 1 ? 40 : 62, color: '#e9e6dc', bg: COL.key, weight: 600, spacing: 1}); + if (k === 'KEY REL') { + const c = t.image.getContext('2d'); + c.fillStyle = COL.key; + c.fillRect(0, 0, 128, 128); + c.fillStyle = '#e9e6dc'; + c.font = font(600, 36); + c.textAlign = 'center'; + c.textBaseline = 'middle'; + c.fillText('KEY', 64, 46); + c.fillText('REL', 64, 84); + t.needsUpdate = true; + } + const side = std(COL.key, {roughness: 0.5}); + const front = new THREE.MeshStandardMaterial({map: t, roughness: 0.5}); + const m = new THREE.Mesh(kg, [side, side, side, side, front, side]); + m.position.set(x, S / 2 + y, D / 2 + 0.0035); + m.castShadow = true; + m.userData.key = k; + g.add(m); + keys[k] = m; + } + return {g, keys, lampC, lampT, elC, elT, face, el, lamp, lastLamp: '', lastEl: ''}; +} +function faceCanvas() { + const c = document.createElement('canvas'); + c.width = 1024; + c.height = 1024; + const g = c.getContext('2d'); + g.fillStyle = '#8f9194'; + g.fillRect(0, 0, 1024, 1024); + // keyboard well + g.fillStyle = '#7d7f82'; + g.fillRect(24, 548, 976, 452); + g.strokeStyle = 'rgba(0,0,0,.25)'; + g.lineWidth = 3; + g.strokeRect(24, 548, 976, 452); + // screws + g.fillStyle = '#5d5f62'; + for (const [x, y] of [[40, 40], [984, 40], [40, 520], [984, 520], [512, 520], [40, 984], [984, 984]]) { + g.beginPath(); + g.arc(x, y, 9, 0, 7); + g.fill(); + } + // nameplate + g.fillStyle = '#6f7174'; + g.fillRect(392, 14, 240, 22); + g.fillStyle = '#d9d7cf'; + g.font = font(600, 17); + g.textAlign = 'center'; + g.textBaseline = 'middle'; + g.fillText('DISPLAY & KEYBOARD', 512, 26); + return c; +} +// lamp panel: 2 columns of 7 [D]; lit lamps: white (status) or amber (caution) +const CAUTION = new Set(['TEMP', 'GIMBAL LOCK', 'PROG', 'RESTART', 'TRACKER', 'ALT', 'VEL']); +function drawLamps(d, lamps) { + drawLampPanel(d.lampC.getContext('2d'), d.lampC.width, d.lampC.height, lamps); + d.lampT.needsUpdate = true; +} +export function drawLampPanel(g, W, H, lamps) { + g.fillStyle = '#4b4d50'; + g.fillRect(0, 0, W, H); + const cw = (W - 30) / 2; + const ch = (H - 40) / 7; + LAMPS.forEach((rowL, r) => + rowL.forEach((name, c) => { + const x = 10 + c * (cw + 10); + const y = 10 + r * (ch + 3.3); + const on = name && lamps[name]; + g.fillStyle = on ? (CAUTION.has(name) ? AMBER : '#f4f0e0') : '#a6a59c'; + g.fillRect(x, y, cw, ch); + if (!name) return; + g.fillStyle = on ? '#2b2210' : '#6e6d66'; + g.font = font(700, name.length > 9 ? 25 : 29); + g.textAlign = 'center'; + g.textBaseline = 'middle'; + if ('letterSpacing' in g) g.letterSpacing = '1px'; + const parts = name.length > 9 ? name.split(' ') : [name]; + parts.forEach((p, i) => g.fillText(p, x + cw / 2, y + ch / 2 + (i - (parts.length - 1) / 2) * 24 + 2)); + }), + ); +} +// the EL panel: COMP ACTY, PROG, VERB, NOUN, three signed 5-digit registers, green on black +export function drawEL(g, W, H, s, green = ACCENT) { + const off = 'rgba(53,194,106,0.06)'; + g.fillStyle = '#0d0f0e'; + g.fillRect(0, 0, W, H); + const lab = (t, x, y, w, on = true) => { + g.fillStyle = on ? green : '#0d0f0e'; + g.fillRect(x, y, w, 26); + g.fillStyle = on ? '#0d0f0e' : green; + g.font = font(700, 22); + g.textAlign = 'center'; + g.textBaseline = 'middle'; + if ('letterSpacing' in g) g.letterSpacing = '1px'; + g.fillText(t, x + w / 2, y + 14); + }; + // COMP ACTY + if (s.compActy) { + g.fillStyle = green; + g.fillRect(22, 18, 140, 92); + g.fillStyle = '#0d0f0e'; + } else g.fillStyle = 'rgba(53,194,106,0.12)'; + g.font = font(700, 30); + g.textAlign = 'center'; + g.textBaseline = 'middle'; + g.fillText('COMP', 92, 50); + g.fillText('ACTY', 92, 82); + lab('PROG', 252, 16, 120); + lab('VERB', 22, 128, 120); + lab('NOUN', 252, 128, 120); + const dw = 46; + const dh = 70; + drawDigits(g, s.prog, 262, 50, dw, dh, 10, green, off); + drawDigits(g, s.verb, 32, 162, dw, dh, 10, green, off); + drawDigits(g, s.noun, 262, 162, dw, dh, 10, green, off); + for (let r = 0; r < 3; r++) { + const y = 252 + r * 72; + g.fillStyle = 'rgba(53,194,106,0.55)'; + g.fillRect(22, y - 6, W - 44, 3); + drawDigits(g, s.reg[r], 30, y + 2, 46, 60, 9.5, green, off); + } +} +const DIG_STATE = (s) => `${s.compActy}|${s.prog}|${s.verb}|${s.noun}|${s.reg.join('|')}`; + +// ------------------------------------------------------------ a logic module's face: 60 flat-packs, and the enlarged gate +function flatpacks(n, w, h, mats) { + const fg = new THREE.BoxGeometry(0.0064, 0.0036, 0.0012); + const im = new THREE.InstancedMesh(fg, mats.flatpack, n); + const lg = new THREE.BoxGeometry(0.0088, 0.0002, 0.0004); + const leads = new THREE.InstancedMesh(lg, mats.gold, n * 5); + const M = new THREE.Matrix4(); + const per = n / 2; + for (let k = 0; k < n; k++) { + const x = -w / 2 + 0.006 + ((k % per) * (w - 0.012)) / (per - 1); + const y = (Math.floor(k / per) ? -1 : 1) * h * 0.2; + im.setMatrixAt(k, M.makeTranslation(x, y, 0)); + for (let q = 0; q < 5; q++) leads.setMatrixAt(k * 5 + q, M.makeTranslation(x, y - 0.0013 + q * 0.00065, 0.0004)); + } + const g = new THREE.Group(); + g.add(im, leads); + return g; +} + +// ------------------------------------------------------------ the machine +export function buildMachine() { + const root = new THREE.Group(); + const mats = { + mag: std(COL.mag, {roughness: 0.58, metalness: 0.35}), + magB: std(COL.magGreen, {roughness: 0.6, metalness: 0.3}), + strip: std(COL.strip, {roughness: 0.75}), + gold: std(COL.gold, {roughness: 0.42, metalness: 0.8}), + ferrite: std(COL.ferrite, {roughness: 0.5, metalness: 0.2}), + ferriteHi: std('#26231f', {roughness: 0.42, metalness: 0.25}), + coreSel: std('#26231f', {roughness: 0.42, metalness: 0.25, emissive: new THREE.Color(ACCENT), emissiveIntensity: 0}), + copper: std(COL.copper, {roughness: 0.45, metalness: 0.7}), + copperSheath: std('#9c5f37', {roughness: 0.6, metalness: 0.5, transparent: true, opacity: 0.55, depthWrite: false}), + copperDim: std('#8e5a36', {roughness: 0.6, metalness: 0.5, transparent: true, opacity: 0.5, depthWrite: false}), + wire: std('#c07a44', {roughness: 0.4, metalness: 0.7, emissive: new THREE.Color(ACCENT), emissiveIntensity: 0}), + inhibit: std('#6f6b63', {roughness: 0.5, metalness: 0.4, emissive: new THREE.Color(ACCENT), emissiveIntensity: 0}), + mark: new THREE.MeshBasicMaterial({color: '#f4efdf'}), + fine: std('#7d5233', {roughness: 0.5, metalness: 0.6, emissive: new THREE.Color(ACCENT), emissiveIntensity: 0}), + erasSel: std('#26231f', {roughness: 0.42, metalness: 0.25, emissive: new THREE.Color(ACCENT), emissiveIntensity: 0}), + flatpack: std('#1f1f22', {roughness: 0.4, metalness: 0.3}), + black: std(COL.black, {roughness: 0.65}), + }; + const clipPlane = new THREE.Plane(new V3(0, 0, -1), 0.02); + const shells = []; + const A = {}; + + // ------------------------------------------------ tray A: logic + const agc = new THREE.Group(); + agc.position.x = L.x0; + root.add(agc); + const ta = tray({len: L.len, wid: L.wid, h: L.trayH, mat: mats.mag, dark: COL.magDark, holes: true}); + agc.add(ta.g); + shells.push(...ta.shell); + // end connector (the gold field on the photo's front end) and its cover plate + const connA = new THREE.Group(); + connA.position.set(L.len / 2 + 0.004, 0.042, 0); + const field = new THREE.Mesh(new THREE.PlaneGeometry(0.2, 0.026), std('#8a7440', {roughness: 0.5, metalness: 0.7, emissive: new THREE.Color(ACCENT), emissiveIntensity: 0})); + field.rotation.y = Math.PI / 2; + connA.add(field); + connA.add(box(0.005, 0.034, 0.23, mats.magB, -0.002, 0, 0)); + agc.add(connA); + const strips = []; + const SW = 0.0136; + const stripLen = 0.255; + const groups = [ + {x: -0.148, n: 14, from: 0}, + {x: 0.142, n: 17, from: 14}, + ]; + const label = (name) => { + const t = labelTex(name, {w: 512, h: 40, px: 30, color: '#57534a', spacing: 4}); + return new THREE.MeshStandardMaterial({map: t, transparent: true, roughness: 0.8}); + }; + for (const gr of groups) + for (let i = 0; i < gr.n; i++) { + const k = gr.from + i; + const name = k < 24 ? `LOGIC MODULE A${k + 1}` : `INTERFACE MODULE A${k + 1}`; + const s = new THREE.Group(); + s.add(box(stripLen, 0.06, SW - 0.0012, mats.strip, 0, 0.03, 0)); + const lab = new THREE.Mesh(new THREE.PlaneGeometry(stripLen * 0.62, 0.0046), label(name)); + lab.rotation.x = -Math.PI / 2; + lab.position.set(0, 0.0602, 0); + s.add(lab); + s.position.set(gr.x, 0.006, -L.wid / 2 + 0.016 + (i + 0.5) * ((L.wid - 0.032) / gr.n)); + agc.add(s); + strips.push(s); + } + // module A13 opened: its flat-packs on the face that comes up, and one enlarged gate + const logicK = 12; + const logicMod = strips[logicK]; + const fp = flatpacks(60, stripLen - 0.02, 0.05, mats); + fp.position.set(0, 0.03, SW / 2 + 0.0002); + logicMod.add(fp); + const bigGate = new THREE.Group(); + { + const b = box(0.064, 0.038, 0.012, mats.flatpack, 0, 0, 0); + bigGate.add(b); + for (let q = 0; q < 5; q++) + for (const s of [1, -1]) { + const lead = box(0.03, 0.0016, 0.004, mats.gold, s * 0.045, -0.014 + q * 0.007, 0); + bigGate.add(lead); + } + const t = labelTex('2 × NOR · 3 INPUTS', {w: 512, h: 96, px: 44, color: '#d9d3c0', spacing: 3}); + const lab = new THREE.Mesh(new THREE.PlaneGeometry(0.052, 0.0098), new THREE.MeshBasicMaterial({map: t, transparent: true})); + lab.position.z = 0.0062; + bigGate.add(lab); + } + bigGate.visible = false; + agc.add(bigGate); + + // ------------------------------------------------ tray B: memory, the rope bay + const tb = new THREE.Group(); + agc.add(tb); + const tbt = tray({len: L.len, wid: L.wid, h: L.trayH, mat: mats.magB, dark: '#6f735f', holes: true}); + tb.add(tbt.g); + shells.push(...tbt.shell); + // X-ribbed plate, inside, over its part of the tray + const xr = new THREE.Group(); + { + const w = 0.14; + const d = L.wid - 0.02; + xr.add(box(w, 0.004, d, mats.magB, 0, 0.002, 0)); + const ang = Math.atan2(d, w); + const len = Math.hypot(w, d); + for (const s of [1, -1]) { + const r = box(len, 0.008, 0.006, mats.magB, 0, 0.006, 0); + r.rotation.y = s * ang; + xr.add(r); + } + xr.position.set(0.225, 0.055, 0); + } + tb.add(xr); + // memory electronics B7-B17, on edge, across the tray + const bNames = ['OSCILLATOR B7', 'ALARM B8', 'ERASABLE DRIVER B9-10', 'ERASABLE DRIVER B9-10', 'CURRENT SWITCH B11', 'ERASABLE MEMORY B12', 'SENSE AMPLIFIER B13-14', 'SENSE AMPLIFIER B13-14', 'STRAND SELECT B15', 'ROPE DRIVER B16-17', 'ROPE DRIVER B16-17']; + const bStrips = []; + bNames.forEach((name, i) => { + const s = new THREE.Group(); + const isE = name.startsWith('ERASABLE MEMORY'); + const lenB = 0.26; + s.add(box(lenB, 0.05, 0.0225, isE ? mats.black : mats.strip, 0, 0.025, 0)); + const lab = new THREE.Mesh(new THREE.PlaneGeometry(lenB * 0.66, 0.0062), isE ? new THREE.MeshStandardMaterial({map: labelTex(name.replace('B12', 'MODULE B12'), {w: 512, h: 40, px: 30, color: '#e8e2cf', spacing: 4}), transparent: true}) : label(name.replace(/ B/, ' MODULE B'))); + lab.rotation.x = -Math.PI / 2; + lab.position.set(0, 0.0502, 0); + s.add(lab); + s.position.set(0.0, 0.034, -L.wid / 2 + 0.018 + (i + 0.5) * ((L.wid - 0.036) / 11)); + tb.add(s); + bStrips.push(s); + }); + const eras = bStrips[5]; + const plane = erasPlane(mats); + plane.g.position.set(0, 0.025, 0.0114); + plane.g.visible = false; + eras.add(plane.g); + // the rope bay, at the -x end: 3 across, 2 deep + const ropes = []; + const bayX = -L.len / 2 + 0.006 + ROPE.len / 2 + 0.004; + for (let i = 0; i < 6; i++) { + const m = ropeModule(i, mats); + const col = i % 3; + const lay = Math.floor(i / 3); + m.home = new V3(bayX, 0.052 - lay * 0.032, (col - 1) * (ROPE.wid + 0.006)); + m.g.position.copy(m.home); + tb.add(m.g); + ropes.push(m); + } + // module B1 (top layer, middle) is the one that comes out + const b1 = ropes[1]; + const det = ropeDetail(mats); + det.g.visible = false; + b1.g.add(det.g); + // windows on tray B's outer face over the rope bay (it faces up when the box is closed) + { + const wm = std('#4a4a40', {roughness: 0.8}); + for (let c = 0; c < 3; c++) { + const w = new THREE.Mesh(new THREE.PlaneGeometry(ROPE.len - 0.03, ROPE.wid - 0.024), wm); + w.rotation.x = Math.PI / 2; + w.position.set(bayX, -0.0003, (c - 1) * (ROPE.wid + 0.006)); + tb.add(w); + shells.push(w); + } + const xo = new THREE.Group(); + const w = 0.36; + const d = L.wid - 0.03; + const ang = Math.atan2(d, w); + for (const s of [1, -1]) { + const r = box(Math.hypot(w, d), 0.005, 0.009, mats.magB, 0, -0.0025, 0); + r.rotation.y = s * ang; + xo.add(r); + } + xo.position.set(0.1, 0, 0); + tb.add(xo); + shells.push(...xo.children); + } + + // ------------------------------------------------ the DSKY + const dsky = dskyUnit(mats); + dsky.g.position.copy(L.dsky); + dsky.g.rotation.y = L.dskyYaw; + root.add(dsky.g); + // a cable from the DSKY to the AGC's end connector + { + const pts = [new V3(L.dsky.x - 0.06, 0.05, L.dsky.z - 0.11), new V3(L.dsky.x - 0.1, 0.012, L.dsky.z - 0.2), new V3(0.18, 0.01, -0.1), new V3(L.x0 + L.len / 2 + 0.03, 0.03, -0.02)]; + const cab = new THREE.Mesh(new THREE.TubeGeometry(new THREE.CatmullRomCurve3(pts), 60, 0.0075, 10), std('#3a3833', {roughness: 0.75})); + cab.castShadow = true; + root.add(cab); + } + + for (const m of shells) if (m.material) m.material = m.material.clone(); + const shellMats = [...new Set(shells.map((m) => m.material))]; + + // anchors for callouts (world space, filled by update) + const anchors = {}; + const tmp = new V3(); + const world = (obj, local) => obj.localToWorld(tmp.copy(local)).clone(); + let cutWas = ''; + + /** + * fx: {open (0 closed, 1 apart), rope (0 in, 1 out), ropeCover (0 on, 1 off), ropeDetail (0..1), read {phase, on}, + * eras (0 in, 1 up), erasRead {phase, bit, on}, logic (0 in, 1 up), gate (0..1), rr (0..1 connector glow), + * cut ('' | 'case'), dsky {lamps, el: {compActy, prog, verb, noun, reg}, press: {key: 0..1}}} + */ + function update(fx) { + // tray B: lift, flip about the long axis, slide beside A, lower + const o = fx.open; + const k1 = smooth(o / 0.28); + const k2 = smooth((o - 0.22) / 0.56); + const k3 = smooth((o - 0.72) / 0.28); + tb.rotation.x = Math.PI * (1 - k2); + const yClosed = 2 * L.trayH; + // local y 0 is the tray's outer face: at 2 x 85 mm when closed (flipped), on the floor when apart + tb.position.set(0, mix(yClosed, 0, k3) + L.liftY * (k1 - k3), L.openZ * k2); + // rope module B1: out along -x, then up and clear of the tray + const r1 = smooth(fx.rope / 0.6); + const r2 = smooth((fx.rope - 0.55) / 0.45); + b1.g.position.set(b1.home.x - 0.25 * r1, b1.home.y + 0.075 * r2, b1.home.z); + b1.cover.position.y = ROPE.th + 0.0011 + 0.05 * smooth(fx.ropeCover); + b1.cover.visible = fx.ropeCover < 0.98; + b1.cover.children.forEach((c) => c.material && ((c.material.transparent = true), (c.material.opacity = 1 - smooth((fx.ropeCover - 0.4) / 0.6)))); + const inside = fx.ropeDetail > 0.01; + if (det.g.visible !== inside) { + det.g.visible = inside; + b1.bundles.visible = !inside; + b1.sheath.visible = !inside; + // the 9 detailed cores replace their instances + for (let k = 0; k < DET_N; k++) { + const idx = (det.layer * ROPE.rows + det.row) * ROPE.cols + det.c0 + k; + b1.cores.setMatrixAt(idx, inside ? M0.makeScale(0, 0, 0) : M0.makeTranslation(coreX(det.c0 + k), coreY(det.layer), coreZ(det.row))); + } + b1.cores.instanceMatrix.needsUpdate = true; + } + // the read inside one MCT: inhibit lines, then the set, then the reset whose flux the sense lines catch + const rd = fx.read || {phase: -1}; + const ph = rd.phase; + const inh = ph >= 0 && ph < 0.45 ? smooth(ph / 0.06) * (1 - smooth((ph - 0.38) / 0.07)) : 0; + const setK = ph >= 0.12 && ph < 0.45 ? smooth((ph - 0.12) / 0.05) * (1 - smooth((ph - 0.36) / 0.06)) : 0; + const resK = ph >= 0.45 && ph < 0.95 ? smooth((ph - 0.45) / 0.05) * (1 - smooth((ph - 0.85) / 0.1)) : 0; + det.inhib.forEach((m) => (m.material.emissiveIntensity = inh * 0.75)); + det.setLine.material.emissiveIntensity = Math.max(setK, resK) * 0.75; + const ck = rd.core ?? (DET_N - 1) / 2; + const sel = det.words[ck].bits || []; + det.wires.forEach((m, j) => { + const lit = sel[j] ? resK : 0; + m.material.emissiveIntensity = lit * 0.65; + m.material.color.set(lit > 0.5 ? '#7fcf9c' : '#c07a44'); + }); + det.cores.forEach((m, k) => (m.material.emissiveIntensity = k === ck ? Math.max(setK, resK) * 0.55 : 0)); + // B12 rises; its cover window shows the plane + const e1 = smooth(fx.eras); + eras.position.y = 0.034 + 0.085 * e1; + plane.g.visible = fx.eras > 0.3; + const er = fx.erasRead || {phase: -1, bit: 1}; + const ep = er.phase; + // read: half currents on one X and one Y line drive the core to 0; the sense line sees a 1. Rewrite: back to 1 + const rdK = ep >= 0 && ep < 0.5 ? smooth(ep / 0.05) * (1 - smooth((ep - 0.4) / 0.08)) : 0; + const wrK = ep >= 0.55 && ep < 1 ? smooth((ep - 0.55) / 0.05) * (1 - smooth((ep - 0.9) / 0.08)) : 0; + const [sc, sr] = ERAS.sel; + plane.xl.forEach((m, i) => (m.material.emissiveIntensity = i === sr ? Math.max(rdK, wrK) * 0.9 : 0)); + plane.yl.forEach((m, i) => (m.material.emissiveIntensity = i === sc ? Math.max(rdK, wrK) * 0.9 : 0)); + plane.sense.material.emissiveIntensity = er.bit && ep >= 0.18 && ep < 0.45 ? 0.9 * (1 - smooth((ep - 0.35) / 0.1)) : 0; + // the magnetisation: 1 = mark at the top of the ring, 0 = bottom; it turns while the core switches + let ang = er.bit ? Math.PI / 2 : -Math.PI / 2; + if (ep >= 0) { + if (er.bit) { + const a = smooth((ep - 0.12) / 0.14); + const b = smooth((ep - 0.62) / 0.14); + ang = Math.PI / 2 - Math.PI * a + Math.PI * b; + } + } + const rr = 0.00072; + tmp.set(Math.cos(ang) * rr, Math.sin(ang) * rr, 0).applyQuaternion(plane.selCore.quaternion); + plane.mark.position.copy(plane.centre).add(tmp); + mats.erasSel.emissiveIntensity = Math.max(rdK, wrK) * 0.6 * (ep >= 0 ? 1 : 0); + // logic module A13 up, one gate enlarged in front of it + const l1 = smooth(fx.logic); + logicMod.position.y = 0.006 + 0.09 * l1; + bigGate.visible = fx.gate > 0.01; + { + const gk = smooth(fx.gate); + bigGate.position.set(logicMod.position.x + 0.03, 0.2 + 0.02 * gk, logicMod.position.z + 0.07); + bigGate.scale.setScalar(0.2 + 0.8 * gk); + } + // the radar's pulses into the interface connector + field.material.emissiveIntensity = (fx.rr || 0) * 0.6; + // section of the closed case + const cut = fx.cut === 'case' && o < 0.02 ? 'case' : ''; + if (cut !== cutWas) { + cutWas = cut; + for (const m of shellMats) { + m.clippingPlanes = cut ? [clipPlane] : []; + m.needsUpdate = true; + } + } + clipPlane.constant = 0.02; + // the DSKY + const d = fx.dsky; + if (d) { + const ls = JSON.stringify(d.lamps); + if (ls !== dsky.lastLamp) { + dsky.lastLamp = ls; + drawLamps(dsky, d.lamps); + } + const es = DIG_STATE(d.el); + if (es !== dsky.lastEl) { + dsky.lastEl = es; + drawEL(dsky.elC.getContext('2d'), dsky.elC.width, dsky.elC.height, d.el); + dsky.elT.needsUpdate = true; + } + for (const [k, m] of Object.entries(dsky.keys)) m.position.z = L.dskyD / 2 + 0.0035 - 0.0024 * (d.press?.[k] || 0); + } + // anchors + root.updateMatrixWorld(true); + anchors.trayA = world(agc, new V3(-0.05, 0.07, L.wid / 2)); + anchors.trayB = world(tb, new V3(0.05, 0.06, 0)); + anchors.logic = world(logicMod, new V3(0.05, 0.06, 0)); + anchors.gate = world(bigGate, new V3(0.02, 0.01, 0.006)); + anchors.rope = world(b1.g, new V3(0, ROPE.th, 0)); + anchors.ropeEnd = world(b1.g, new V3(ROPE.len / 2, ROPE.th * 0.5, 0)); + anchors.core = world(b1.g, det.anchor.clone()); + anchors.coreNext = world(b1.g, det.anchor.clone().add(new V3(ROPE.px * 3, 0.0045, 0))); + anchors.inhib = world(b1.g, det.anchor.clone().add(new V3(-ROPE.px * 3, -0.0045, 0))); + anchors.eras = world(eras, new V3(0.08, 0.05, 0)); + anchors.erasCore = world(eras, plane.centre.clone().add(new V3(0, 0.025, 0.0114))); + anchors.erasSense = world(eras, new V3(ERAS.cols * ERAS.px * 0.5 + 0.0015, 0.025, 0.0114)); + anchors.dsky = world(dsky.g, new V3(0, L.dskyS * 0.75, L.dskyD / 2)); + anchors.dskyEl = world(dsky.g, new V3(0.048, L.dskyS / 2 + 0.05, L.dskyD / 2)); + anchors.dskyKeys = world(dsky.g, new V3(0, L.dskyS / 2 - 0.05, L.dskyD / 2)); + anchors.dskyProg = world(dsky.g, new V3(-0.028, L.dskyS / 2 + 0.077, L.dskyD / 2)); + anchors.conn = world(connA, new V3(0, 0, 0)); + anchors.xrib = world(tb, new V3(0.225, 0.06, 0)); + anchors.erasMod = world(eras, new V3(-0.06, 0.05, 0)); + } + update({open: 0, rope: 0, ropeCover: 0, ropeDetail: 0, eras: 0, logic: 0, gate: 0}); + return {root, update, anchors, dsky, det, plane, b1, tb, agc, eras, logicMod, bigGate, shellMats}; +} diff --git a/machines/rope/agc-shared/console.js b/machines/rope/agc-shared/console.js new file mode 100644 index 0000000..112c5ba --- /dev/null +++ b/machines/rope/agc-shared/console.js @@ -0,0 +1,435 @@ +// Rope's overlay, drawn as a sheet of the MIT Instrumentation Lab's documentation and a DSKY: the mission clock top +// left in seven-segment figures, the DSKY's face below it (the same drawing as the 3D panel), the Executive (duty, +// core sets, VAC areas, one millisecond of memory cycles, the alarm) on the right, the working subsystem's detail +// bottom left, the operator's buttons bottom centre, the title block (cartouche) bottom right, a one-line caption and +// callouts with thin leaders into the machine. Fixed 1600 x 900 CSS layout; update(s) redraws every live part. +import {ACCENT, ACCENT_INK, AMBER, drawEL, drawLampPanel} from './agc.js'; +import {AGC, EXEC, MCT, MCT_PER_S, ADDS_PER_S, ROPE_WORDS, octal} from './machine.js'; +import {svgDigits, digitsWidth} from './seg7.js'; +import {FAMILY} from './fonts.js'; +import {nf, T as tr} from './i18n.js'; + +export const C = {paper: '#efe8d8', panel: 'rgba(241,235,221,.9)', ink: '#2b2925', mute: '#7a7062', faint: 'rgba(70,58,40,.32)', line: 'rgba(70,58,40,.55)', acc: ACCENT_INK, accEl: ACCENT, amber: AMBER, amberInk: '#a86a06', steal: '#9c4a2e'}; +export const SUBS = ['rope', 'eras', 'nor', 'clock', 'exec', 'dsky', 'iface']; +export const CUTS = ['case', 'tray', 'module']; +export const VIEWS = ['axo', 'dskyFace', 'ropeIn', 'graze']; +const CSS = ` +#app{font-family:${FAMILY};color:${C.ink};-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums} +.ui{position:absolute;inset:0;pointer-events:none} +.pn{position:absolute;background:${C.panel};border:1px solid ${C.line}} +.pn:before{content:'';position:absolute;inset:3px;border:.6px solid ${C.faint};pointer-events:none} +.hd{position:absolute;font-weight:700;font-size:15px;letter-spacing:2.2px;text-transform:uppercase;white-space:nowrap} +.sm{position:absolute;font-weight:500;font-size:12.5px;letter-spacing:1.3px;text-transform:uppercase;color:${C.mute};white-space:nowrap} +.tx{position:absolute;font-weight:500;font-size:14px;line-height:18px;letter-spacing:.3px} +.tb{position:absolute;height:28px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;letter-spacing:1.6px;text-transform:uppercase;border:1px solid ${C.line};background:${C.panel};color:${C.ink};white-space:nowrap;box-sizing:border-box} +.tb.on{background:${C.ink};color:${C.paper}} +.tb.on:after{content:'';position:absolute;left:6px;right:6px;bottom:3px;height:2px;background:${C.accEl}} +.gl{position:absolute;font-weight:600;font-size:12px;letter-spacing:2px;color:${C.mute};text-transform:uppercase} +.call{position:absolute;white-space:nowrap;background:rgba(241,235,221,.88);padding:2px 8px 4px;margin:-2px -8px 0} +.call b{display:block;font-weight:700;font-size:28px;line-height:30px;letter-spacing:.6px;text-transform:uppercase} +.call span{display:block;font-weight:500;font-size:15px;letter-spacing:1.8px;color:${C.mute};text-transform:uppercase;margin-top:1px} +.cur{position:absolute;left:0;top:0;z-index:50;filter:drop-shadow(0 1px 2px rgba(40,30,10,.35))} +.ring{position:absolute;width:36px;height:36px;margin:-18px 0 0 -18px;border-radius:50%;border:2px solid ${C.acc};opacity:0;z-index:49} +.cap{position:absolute;left:380px;width:840px;top:756px;text-align:center;font-weight:600;font-size:21px;line-height:27px;letter-spacing:.5px} +.cap span{background:rgba(241,235,221,.9);padding:1px 8px;box-decoration-break:clone;-webkit-box-decoration-break:clone} +.alarm{position:absolute;background:${C.amber};color:#2a1d05;border:1px solid #6b4a0c} +`; +const el = (h) => { + const d = document.createElement('div'); + d.innerHTML = h.trim(); + return d.firstElementChild; +}; +const KIND_LABEL = () => ({servicer: tr('job:servicer'), monitor: tr('job:monitor'), lpd: tr('job:lpd'), charin: tr('job:charin')}); +export const pad = (n, w) => String(n).padStart(w, '0'); +/** GET as hh:mm:ss.cc */ +export function getText(s) { + const t = Math.max(0, s); + const h = Math.floor(t / 3600); + const m = Math.floor((t % 3600) / 60); + const sec = t % 60; + return `${pad(h, 3)}:${pad(m, 2)}:${pad(Math.floor(sec), 2)}.${pad(Math.floor((sec % 1) * 100), 2)}`; +} + +export function createConsole(app) { + const style = document.createElement('style'); + style.textContent = CSS; + document.head.appendChild(style); + const ui = el(`
`); + app.appendChild(ui); + const add = (h) => { + const n = el(h); + ui.appendChild(n); + return n; + }; + + // ------------------------------------------------------------ the mission clock + add(`
`); + add(`
${tr('clockTitle')}
`); + const getSvg = add(``); + add(`
${tr('mctSince')}
`); + const mctSvg = add(``); + const rateTx = add(`
`); + const phaseTx = add(`
`); + + // ------------------------------------------------------------ the DSKY, as on its face + add(`
`); + const lampCv = add(``); + const elCv = add(``); + add(`
${tr('dskyTitle')}
`); + const dskyTx = add(`
`); + + // ------------------------------------------------------------ the Executive + const EX = {x: 1262, y: 32, w: 304}; + add(`
`); + add(`
${tr('execTitle')}
`); + add(`
${tr('dutyTitle')}
`); + const dutySvg = add(``); + const dutyTot = add(``); + add(`
${tr('setsTitle')}
`); + const busyTx = add(`
`); + const setsSvg = add(``); + add(`
${tr('vacTitle')}
`); + const vacSvg = add(``); + add(`
${tr('stripTitle')}
`); + const stripSvg = add(``); + const alarmBox = add(``); + const restartTx = add(`
`); + + // ------------------------------------------------------------ the subsystem's detail + const DT = {x: 34, y: 452, w: 304, h: 326}; + add(`
`); + const detHd = add(`
`); + const detSvg = add(``); + + // ------------------------------------------------------------ buttons + const btn = {}; + const BX = 372; + add(`
${tr('grpSubs')}
`); + SUBS.forEach((k, i) => (btn[k] = add(`
${tr('sub:' + k)}
`))); + add(``); + const BY = 32; + const BXC = 372; + add(`
${tr('grpCuts')}
`); + CUTS.forEach((k, i) => (btn[k] = add(`
${tr('cut:' + k)}
`))); + const BXV = 712; + add(`
${tr('grpViews')}
`); + VIEWS.forEach((k, i) => (btn[k] = add(`
${tr('view:' + k)}
`))); + + // ------------------------------------------------------------ the title block + const CB = {x: 1262, y: 688, w: 304, h: 178}; + add(`
`); + const hl = (y) => add(`
`); + const vl = (x, y0, y1) => add(`
`); + hl(66); + hl(92); + hl(116); + vl(178, 116, CB.h); + add(`
${tr('title')}
`); + add(`
${tr('titleSub')}
`); + add(`
${tr('titleMission')}
`); + add(`
${tr('titleSources')}
`); + add(`
${tr('titleNot')}
`); + add(`
${tr('titleSheet')}
`); + add(`
${tr('titleFigs', nf(AGC.massKg), nf(AGC.powerW))}
`); + + // ------------------------------------------------------------ caption, callouts, the pointer + const cap = add(`
`); + const callSvg = add(``); + const callG = add(`
`); + const ring = add(`
`); + const cur = add(`
`); + + const centre = (n) => { + const l = parseFloat(n.style.left); + const t = parseFloat(n.style.top); + return [l + parseFloat(n.style.width) / 2, t + 14]; + }; + const spots = Object.fromEntries(Object.entries(btn).map(([k, n]) => [k, centre(n)])); + const pointer = (c) => { + cur.style.display = c.x < 0 ? 'none' : 'block'; + cur.style.transform = `translate(${(c.x - 3).toFixed(2)}px, ${(c.y - 2).toFixed(2)}px) scale(${c.press ? 0.88 : 1})`; + ring.style.left = `${c.ringX}px`; + ring.style.top = `${c.ringY}px`; + ring.style.opacity = String(c.ring * 0.85); + ring.style.transform = `scale(${(0.35 + 0.9 * (1 - c.ring)).toFixed(3)})`; + }; + + // caches so the SVGs are rebuilt only when they change + const last = {}; + const put = (key, node, html) => { + if (last[key] === html) return; + last[key] = html; + node.innerHTML = html; + }; + const txt = (x, y, s, o = {}) => + `${s}`; + const hatch = ``; + + // ------------------------------------------------------------ the detail panel, per subsystem + const drawDetail = (d) => { + const W = DT.w - 28; + let h = hatch; + if (d.kind === 'rope') { + // the word: 16 cells, filled as the sense amplifiers see them + const w = ROPE_WORDS[d.w]; + h += txt(0, 14, tr('ropeAddr', w.bank, octal(w.addr, 4), d.place.module + 1, d.place.core, d.place.strand), {size: 13.5, w: 600}); + h += txt(0, 36, w.op, {size: 26, w: 700, ls: 1.5}); + if (w.label) h += txt(W, 36, w.label, {size: 14, w: 600, anchor: 'end', fill: C.mute}); + const cw = W / 16; + for (let b = 0; b < 16; b++) { + const x = b * cw; + const seen = b < d.fill; + const v = w.bits[b]; + h += ``; + if (seen) h += svgDigits(String(v), x + cw / 2 - 5, 56, 10, 22, 0, v ? C.paper : C.ink, null, 0.05); + h += txt(x + cw / 2, 98, b === 15 ? 'P' : String(15 - b), {size: 10.5, w: 500, anchor: 'middle', fill: C.mute, ls: 0}); + } + h += txt(0, 124, tr('ropeOctal'), {size: 12.5, w: 500, fill: C.mute}); + h += svgDigits(d.fill >= 16 ? octal(w.word) : ' ', 0, 132, 18, 32, 5, C.ink, 'rgba(70,58,40,.08)'); + h += txt(W, 150, tr('ropeParity', w.parity), {size: 13, w: 600, anchor: 'end'}); + h += txt(0, 196, tr('ropePhase'), {size: 12.5, w: 500, fill: C.mute}); + const phases = [tr('ph:inhibit'), tr('ph:set'), tr('ph:reset'), tr('ph:strobe')]; + phases.forEach((p, i) => { + const on = d.stage === i; + h += ``; + h += txt((i * W) / 4 + W / 8, 222, p, {size: 13, w: 700, anchor: 'middle', fill: on ? C.paper : C.ink, ls: 1}); + }); + h += `
${tr('ropeNote', nf(AGC.fixedWords), AGC.ropeModules, nf(AGC.coresPerModule), AGC.senseLinesPerCore)}
`; + } else if (d.kind === 'eras') { + h += txt(0, 14, tr('erasAddr', d.set), {size: 13.5, w: 600}); + h += txt(0, 36, d.job ? tr('erasJob', KIND_LABEL()[d.job]) : tr('erasFree'), {size: 22, w: 700, ls: 1}); + const cw = W / 16; + for (let b = 0; b < 16; b++) { + const x = b * cw; + const v = d.bits[b]; + const isPlane = b === 1; + const shown = d.state === 'read' ? b < d.fill : d.state === 'gone' ? false : true; + h += ``; + if (shown) h += svgDigits(String(v), x + cw / 2 - 5, 56, 10, 22, 0, v ? C.paper : C.ink, null, 0.05); + h += txt(x + cw / 2, 98, b === 15 ? 'P' : String(15 - b), {size: 10.5, w: 500, anchor: 'middle', fill: isPlane ? C.acc : C.mute, ls: 0}); + } + h += txt(0, 124, tr('erasPlane'), {size: 12.5, w: 600, fill: C.acc}); + const steps = [tr('es:read'), tr('es:sense'), tr('es:rewrite')]; + steps.forEach((p, i) => { + const on = d.stage === i; + h += ``; + h += txt((i * W) / 3 + W / 6, 154, p, {size: 13, w: 700, anchor: 'middle', fill: on ? C.paper : C.ink, ls: 1}); + }); + h += `
${tr('erasNote', nf(AGC.erasableWords), nf(AGC.erasableWords * AGC.wordBits))}
`; + } else if (d.kind === 'nor') { + // RTL NOR: three transistors, one collector resistor; inputs from three timing pulses + const [a, b, c] = d.in; + const out = a || b || c ? 0 : 1; + const on = (v) => (v ? C.acc : C.ink); + h += txt(0, 14, tr('norHead'), {size: 13.5, w: 600}); + const y0 = 40; + h += `` + txt(236, y0 + 4, 'V+', {size: 12, w: 600}); + h += ``; + h += ``; + h += `` + txt(244, y0 + 57, `Q = ${out}`, {size: 16, w: 700, fill: on(out)}); + [a, b, c].forEach((v, i) => { + const x = 60 + i * 60; + const yb = y0 + 84; + h += ``; + h += ``; + h += ``; + h += ``; + h += ``; + h += txt(x - 34, yb + 4, 'ABC'[i], {size: 14, w: 700, anchor: 'end', fill: on(v)}) + txt(x - 19, yb + 24, String(v), {size: 13, w: 700, anchor: 'middle', fill: on(v)}); + }); + h += `` + txt(206, y0 + 118, '0 V', {size: 12, w: 600}); + // truth table of NOR 3 + const ty = 176; + h += txt(0, ty, 'A B C → Q', {size: 13, w: 700, ls: 2}); + for (let k = 0; k < 8; k++) { + const ia = (k >> 2) & 1; + const ib = (k >> 1) & 1; + const ic = k & 1; + const cur = ia === a && ib === b && ic === c; + const x = (k % 4) * 69; + const y = ty + 10 + Math.floor(k / 4) * 22; + h += ``; + h += txt(x + 33, y + 14, `${ia}${ib}${ic} → ${ia || ib || ic ? 0 : 1}`, {size: 13, w: 600, anchor: 'middle', fill: cur ? C.paper : C.ink, ls: 1}); + } + h += `
${tr('norNote', nf(AGC.ics), nf(AGC.ics * AGC.gatesPerIc))}
`; + } else if (d.kind === 'clock') { + h += txt(0, 14, tr('clockHead', nf(AGC.clockHz / 1e6, 3), nf(MCT * 1e6, 2)), {size: 13.5, w: 600}); + const lane = (W - 34) / 12; + for (let p = 0; p < 12; p++) { + const x = 34 + p * lane; + const on = d.pulse === p; + h += ``; + h += txt(x + lane / 2, 44, `T${p + 1}`, {size: 11.5, w: 700, anchor: 'middle', fill: on ? C.paper : C.ink, ls: 0}); + } + h += txt(0, 44, 'MCT', {size: 12, w: 700}); + // the waveform of the 1.024 MHz chain over one MCT + let path = ''; + for (let k = 0; k <= 24; k++) path += `${k ? 'L' : 'M'}${34 + (k * (W - 34)) / 24},${k % 2 ? 62 : 76}${k < 24 ? `L${34 + ((k + 1) * (W - 34)) / 24},${k % 2 ? 62 : 76}` : ''}`; + h += `` + txt(0, 74, '1 MHZ', {size: 11, w: 600}); + const px = 34 + d.phase * (W - 34); + h += ``; + h += txt(0, 110, tr('clockPulse'), {size: 12.5, w: 500, fill: C.mute}); + h += svgDigits(String(d.pulse + 1).padStart(2, ' '), 0, 118, 18, 32, 5, C.acc) + txt(50, 146, '/ 12', {size: 18, w: 700}); + h += `
${tr('clockNote', nf(MCT_PER_S), nf(ADDS_PER_S), nf(MCT * 2e6, 1))}
`; + } else if (d.kind === 'iface') { + h += txt(0, 14, tr('ifHead'), {size: 13.5, w: 600}); + const rows = [ + [tr('if:rr'), d.rr ? nf(EXEC.rrAngles * EXEC.rrPulses * (EXEC.tloss / (EXEC.rrAngles * EXEC.rrPulses * MCT))) : '0', d.rr], + [tr('if:imu'), '≈ 0', false], + [tr('if:lr'), d.lr ? tr('if:lrOn') : '—', false], + ]; + rows.forEach(([name, v, hot], i) => { + const y = 32 + i * 34; + h += ``; + h += txt(8, y + 19, name, {size: 13.5, w: 600}); + h += txt(W - 8, y + 19, v, {size: 15, w: 700, anchor: 'end', fill: hot ? C.steal : C.ink}); + }); + h += txt(0, 152, tr('ifTloss'), {size: 12.5, w: 500, fill: C.mute}); + h += svgDigits(nf((d.rr ? EXEC.tloss : 0) * 100, 1).replace(',', '.'), 0, 160, 18, 32, 5, d.rr ? C.steal : C.ink); + h += txt(110, 188, '%', {size: 20, w: 700}); + h += `
${tr('ifNote', nf(EXEC.rrPulses), nf(EXEC.tlossMax * 100, 2), nf(EXEC.rrAngles * EXEC.rrPulses * MCT * 100, 1))}
`; + } else if (d.kind === 'dsky') { + h += txt(0, 14, tr('dskyHead'), {size: 13.5, w: 600}); + h += `
${d.text}
`; + } else { + // exec: the job list with priorities + h += txt(0, 14, tr('exHead'), {size: 13.5, w: 600}); + h += `
${tr('exNote', EXEC.coreSets, EXEC.vacAreas, nf(EXEC.braking * 100), nf(EXEC.lrConvert * 100, 1), nf(EXEC.n68 * 100), nf(EXEC.tloss * 100))}
`; + } + return h; + }; + + return { + spots, + btn, + root: ui, + pointer, + lampCv, + elCv, + update(s) { + // clock + put('get', getSvg, svgDigits(getText(s.get), 0, 2, 18, 34, 4.5, C.ink, 'rgba(70,58,40,.045)')); + put('mct', mctSvg, svgDigits(nf(Math.floor(s.mct)).replace(/[^0-9]/g, ' '), 0, 2, 12, 22, 3.5, C.ink, null)); + put('rate', rateTx, s.rateText); + put('phase', phaseTx, `P${s.dsky.prog}`); + // DSKY + const dk = JSON.stringify(s.dsky); + if (dk !== last.dsky) { + last.dsky = dk; + drawLampPanel(lampCv.getContext('2d'), 420, 470, s.dsky.lamps); + drawEL(elCv.getContext('2d'), 400, 470, s.dsky); + } + put('dskyTx', dskyTx, s.dskyText); + // duty: stacked bar of what the machine is asked for, against 100 % + { + const W = EX.w - 28; + const X = (v) => (v / 1.1) * W; + const parts = s.duty.parts; + let h = hatch; + let x = 0; + for (const p of parts) { + const w = X(p.v); + h += ``; + x += w; + } + h += `` + txt(X(1) + 4, 12, '100', {size: 11, w: 700}); + const tot = s.duty.total; + parts.forEach((p, i) => { + const lx = (i % 2) * (W / 2); + const ly = 42 + Math.floor(i / 2) * 15; + h += `` + txt(lx + 13, ly + 9, `${tr('duty:' + p.k)} ${nf(p.v * 100, Math.abs(p.v * 100 - Math.round(p.v * 100)) > 0.05 ? 1 : 0)} %`, {size: 12, w: 600, ls: 0.5}); + }); + put('duty', dutySvg, h); + put('dutyTot', dutyTot, svgDigits(String(Math.round(tot * 100)).padStart(3, ' '), 0, 1, 13, 22, 3.5, tot > 1 ? C.amberInk : C.ink, 'rgba(70,58,40,.05)') + txt(56, 22, '%', {size: 16, w: 700})); + } + // core sets + { + const W = EX.w - 28; + let h = ''; + const kl = KIND_LABEL(); + s.sets.forEach((j, k) => { + const y = k * 26; + const run = j && j.run; + h += `` + txt(11, y + 17, String(k), {size: 14, w: 700, anchor: 'middle', fill: j ? C.paper : C.ink, ls: 0}); + h += ``; + if (j) h += txt(36, y + 17, kl[j.kind], {size: 14, w: 700, fill: run ? C.paper : C.ink, ls: 1.2}) + txt(W - 6, y + 17, j.age, {size: 12.5, w: 600, anchor: 'end', fill: run ? C.paper : C.mute, ls: 0.5}); + else h += txt(36, y + 17, tr('setFree'), {size: 13, w: 500, fill: C.mute, ls: 1.2}); + }); + h += txt(0, 8 * 26 + 2, '', {}); + put('sets', setsSvg, h); + } + { + let h = ''; + s.vacs.forEach((v, k) => { + h += `` + txt(k * 40 + 17, 17, `VAC${k + 1}`, {size: 11, w: 700, anchor: 'middle', fill: v ? C.paper : C.ink, ls: 0}); + }); + put('vac', vacSvg, h); + put('busyTx', busyTx, `${tr('busyOf', s.busy, EXEC.coreSets)}`); + } + // one millisecond of memory cycles: jobs, stolen, idle + { + const W = EX.w - 28; + const n = s.strip.length; + const cw = W / n; + let h = hatch; + for (let i = 0; i < n; i++) { + const v = s.strip[i]; + if (v === 's') h += ``; + else if (v === 'j') h += ``; + else h += ``; + } + if (s.stripAt >= 0) h += ``; + h += `` + txt(13, 39, tr('stripJob'), {size: 11.5, w: 600, ls: 0.6}); + h += `` + txt(109, 39, tr('stripSteal'), {size: 11.5, w: 600, ls: 0.6}); + h += `` + txt(203, 39, tr('stripIdle'), {size: 11.5, w: 600, ls: 0.6}); + put('strip', stripSvg, h); + } + // the alarm, then what the restart kept and dropped + { + const a = s.alarm; + if (a && a.k > 0.01) { + alarmBox.style.display = 'block'; + alarmBox.style.opacity = a.k.toFixed(2); + put( + 'alarm', + alarmBox, + `
${tr('alarmHead')}
+ ${svgDigits(String(a.code).padStart(4, '0'), 0, 2, 22, 44, 6, '#2a1d05')} +
${tr('alarm:' + a.code)}
+
${tr('restartKept', KIND_LABEL()[a.kept] ?? '—')}
${tr('restartDropped', a.dropped)}
`, + ); + put('restart', restartTx, ''); + } else { + alarmBox.style.display = 'none'; + put('restart', restartTx, s.execNote || ''); + } + } + // detail + put('detHd', detHd, tr('det:' + s.detail.kind)); + put('det', detSvg, drawDetail(s.detail)); + put('cap', cap, s.caption ? `${s.caption}` : ''); + // buttons + for (const [k, n] of Object.entries(btn)) { + const on = s.sub === k || s.cut === k || s.view === k; + if (n.classList.contains('on') !== on) n.classList.toggle('on', on); + } + // callouts + let lh = ''; + let ch = ''; + for (const c of s.callouts) { + if (c.o < 0.02 || !c.at) continue; + const [ax, ay] = c.at; + const [lx, ly] = c.label; + const right = c.w < 0; + const w = Math.abs(c.w); + const o = c.o.toFixed(2); + lh += ``; + ch += `
${c.name}${c.sub}
`; + } + put('callL', callSvg, lh); + put('callG', callG, ch); + pointer(s.cursor); + }, + }; +} +void digitsWidth; diff --git a/machines/rope/agc-shared/executive.js b/machines/rope/agc-shared/executive.js new file mode 100644 index 0000000..a34a57f --- /dev/null +++ b/machines/rope/agc-shared/executive.js @@ -0,0 +1,305 @@ +// The Executive's log, planned once: the LGC's jobs from PDI to touchdown, simulated in 1 ms steps, with the +// rendezvous radar's cycle steals taken off the top of every millisecond. Everything the DSKY and the Executive panel +// show is read from this log at the frame's mission time. No three.js. +// +// The jobs [E1] [E]: SERVICER every 2 s (needs a core set and a VAC area), its duty set by the phase (braking 85 %, +// +2 % for the landing radar once it locks, approach 90.5 %, P66 80 %); a Verb 16 monitor job every second while the +// crew has one up (3 %, lower priority than SERVICER); in P64 the landing-point-designator job every 2 s; one short +// keyboard job per key press. A job holds its core set from its request until it ends. When a request finds the 8 core +// sets (or the 5 VAC areas) busy: BAILOUT, alarm 1202 (1201), a software restart that keeps only the newest SERVICER, +// drops the rest and the Verb 16 monitor, and lights PROG. +import {CREW_KEYS, EVENTS, EXEC, DESCENT_END} from './machine.js'; + +export const DT = 0.001; +export const SAMPLE = 0.01; // the log keeps one sample every 10 ms +export const JOB = {servicer: 0, monitor: 1, lpd: 2, charin: 3}; +const PRIO = {servicer: 20, monitor: 10, lpd: 10, charin: 30}; // relative order only [E] +const NEEDS_VAC = {servicer: true, monitor: false, lpd: true, charin: false}; +const WORK = {monitor: EXEC.n68 * EXEC.monitorPeriod, lpd: EXEC.approachJobs, charin: 0.004}; +const LPD_START = 12; +const LR_RAMP = 24; // s for the radar's data to come fully into the navigation [E], calibrated on the first alarm + +/** the phase's program number at s */ +export const progAt = (s) => (s < EVENTS.p64 ? 63 : s < EVENTS.p66 ? 64 : s < EVENTS.contact + 3 ? 66 : 68); +/** SERVICER's duty (fraction of the machine) at s */ +export function servicerDuty(s) { + const p = progAt(s); + if (p === 63) return EXEC.braking + (s > EVENTS.alt ? EXEC.lrConvert * Math.min(1, (s - EVENTS.alt) / LR_RAMP) : 0); + if (p === 64) { + const k = Math.min(1, (s - EVENTS.p64) / (EVENTS.p66 - EVENTS.p64)); + return EXEC.approach[0] + (EXEC.approach[1] - EXEC.approach[0]) * k - EXEC.approachJobs / EXEC.servicerPeriod; + } + return EXEC.manual; +} + +// deterministic jitter on each SERVICER pass +const jit = (k) => { + const x = Math.sin(k * 12.9898 + 78.233) * 43758.5453; + return (x - Math.floor(x)) * 2 - 1; +}; + +/** + * Runs the log. keys: [[s, key]] (the crew's, plus any the visitor adds); radar: the RR cycle steals on (as flown) or + * off. Returns the samples, every job, the alarms, the displays and the lamps. + */ +export function simulate({keys = CREW_KEYS, radar = true, end = DESCENT_END} = {}) { + const N = Math.ceil(end / SAMPLE) + 1; + const S = { + sets: new Uint8Array(N), // bit k: core set k busy + vacs: new Uint8Array(N), + run: new Int8Array(N), // the job running at the sample (JOB.*), -1 the dummy job + duty: new Float32Array(N), // demanded duty incl. the radar's steals + busy: new Uint8Array(N), // core sets in use + }; + const jobs = []; + const alarms = []; + const restarts = []; + const live = []; + const sets = new Array(EXEC.coreSets).fill(null); + const vacs = new Array(EXEC.vacAreas).fill(null); + const tloss = radar ? EXEC.tloss : 0; + // ------------------------------------------------ the DSKY's own state (a small PINBALL) + const kq = [...keys].sort((a, b) => a[0] - b[0]); + let ki = 0; + const disp = []; // display states over time + const lampEv = []; // [s, lamp, on] + let mode = ''; // '', 'verb', 'noun' + let vb = ''; + let nb = ''; + let verb = '06'; + let noun = '63'; + let monitor = false; + let failreg = [0, 0, 0]; + let prog = 63; + const keyEv = []; + const pushDisp = (s, x = {}) => disp.push({s, prog, verb, noun, mode, vb, nb, monitor, fail: [...failreg], ...x}); + pushDisp(0); + let oprErr = false; + const exec = (s) => { + const v = vb.padStart(2, '0'); + const n = nb.padStart(2, '0'); + mode = ''; + if ((v === '16' || v === '06') && ['63', '64', '68', '60'].includes(n)) { + verb = v; + noun = n; + monitor = v === '16'; + } else if (v === '05' && n === '09') { + verb = v; + noun = n; + monitor = false; + } else if (v === '16' && n === '36') { + verb = v; + noun = n; + monitor = true; + } else { + oprErr = true; + lampEv.push([s, 'OPR ERR', 1]); + } + vb = v; + nb = n; + }; + const key = (s, k) => { + keyEv.push([s, k]); + if (k === 'VERB') { + mode = 'verb'; + vb = ''; + } else if (k === 'NOUN') { + mode = 'noun'; + nb = ''; + } else if (/^\d$/.test(k)) { + if (mode === 'verb' && vb.length < 2) vb += k; + else if (mode === 'noun' && nb.length < 2) nb += k; + else { + oprErr = true; + lampEv.push([s, 'OPR ERR', 1]); + } + } else if (k === 'CLR') { + if (mode === 'verb') vb = ''; + if (mode === 'noun') nb = ''; + } else if (k === 'ENTR') { + if (mode) exec(s); + } else if (k === 'RSET') { + lampEv.push([s, 'PROG', 0]); + if (oprErr) lampEv.push([s, 'OPR ERR', 0]); + oprErr = false; + } else if (k === 'KEY REL') { + monitor = false; + mode = ''; + progDisplay(); + } + pushDisp(s); + }; + const progDisplay = () => { + verb = '06'; + noun = prog === 63 ? '63' : prog === 64 ? '64' : '60'; + monitor = false; + }; + + // ------------------------------------------------ the Executive + let nextServ = 0.02; + let nextMon = Infinity; + let nextLpd = Infinity; + let kServ = 0; + let id = 0; + const request = (s, kind, work) => { + const set = sets.indexOf(null); + const vac = NEEDS_VAC[kind] ? vacs.indexOf(null) : -2; + if (set < 0 || vac === -1) return bailout(s, set < 0 ? 1202 : 1201, kind); + const j = {id: id++, kind, prio: PRIO[kind], t0: s, t1: null, work, left: work, set, vac, fate: ''}; + sets[set] = j; + if (vac >= 0) vacs[vac] = j; + jobs.push(j); + live.push(j); + return j; + }; + const free = (j, s, fate) => { + j.t1 = s; + j.fate = fate; + sets[j.set] = null; + if (j.vac >= 0) vacs[j.vac] = null; + live.splice(live.indexOf(j), 1); + }; + const bailout = (s, code, kind) => { + const busy = sets.filter(Boolean).length; + alarms.push({s, code, busy, vacBusy: vacs.filter(Boolean).length, kind}); + if (!failreg[0]) failreg[0] = code; + else if (!failreg[1]) failreg[1] = code; + failreg[2] = code; + lampEv.push([s, 'PROG', 1]); + // the restart: only the newest SERVICER survives, restarted from its restart point + const newest = [...live].reverse().find((j) => j.kind === 'servicer'); + const kept = []; + const dropped = []; + for (const j of [...live]) { + if (j === newest) continue; + dropped.push({kind: j.kind, t0: j.t0}); + free(j, s, 'flushed'); + } + if (newest) { + kept.push({kind: newest.kind, t0: newest.t0}); + newest.left = newest.work; + } + if (monitor) { + monitor = false; + nextMon = Infinity; + } + progDisplay(); + mode = ''; + restarts.push({s, code, kept, dropped}); + pushDisp(s, {restart: true}); + return null; + }; + + const steps = Math.ceil(end / DT); + let si = 0; + for (let i = 0; i <= steps; i++) { + const s = i * DT; + // keys + while (ki < kq.length && kq[ki][0] <= s) { + const [ks, k] = kq[ki++]; + request(ks, 'charin', WORK.charin); + const wasMon = monitor; + key(ks, k); + if (monitor && !wasMon) nextMon = ks + 0.05; + if (!monitor) nextMon = Infinity; + } + // program changes + const p = progAt(s); + if (p !== prog) { + prog = p; + if (p === 64) { + nextLpd = s + LPD_START; // after the pitchover [E] + } else nextLpd = Infinity; + nextMon = Infinity; + progDisplay(); + mode = ''; + pushDisp(s); + } + // the waitlist + if (s >= nextServ) { + const w = EXEC.servicerPeriod * servicerDuty(s) * (1 + 0.025 * jit(kServ++)); + request(s, 'servicer', w); + nextServ += EXEC.servicerPeriod; + } + if (s >= nextMon) { + if (monitor) request(s, 'monitor', WORK.monitor); + nextMon = monitor ? nextMon + EXEC.monitorPeriod : Infinity; + } + if (s >= nextLpd) { + request(s, 'lpd', WORK.lpd); + nextLpd += EXEC.servicerPeriod; + } + // one millisecond of CPU, less the stolen cycles, to the highest priorities first (FIFO among equals) + let cap = DT * (1 - tloss); + let ran = -1; + while (cap > 1e-12 && live.length) { + let best = null; + for (const j of live) if (!best || j.prio > best.prio) best = j; + const use = Math.min(cap, best.left); + best.left -= use; + cap -= use; + if (ran < 0) ran = JOB[best.kind]; + if (best.left <= 1e-12) { + free(best, s, 'done'); + if (best.kind === 'monitor' || best.kind === 'servicer') best.shown = s; // the display it refreshed + } + } + if (s >= si * SAMPLE - 1e-9 && si < N) { + let m = 0; + let v = 0; + sets.forEach((j, k) => j && (m |= 1 << k)); + vacs.forEach((j, k) => j && (v |= 1 << k)); + S.sets[si] = m; + S.vacs[si] = v; + S.run[si] = ran; + S.busy[si] = sets.filter(Boolean).length; + S.duty[si] = tloss + servicerDuty(s) + (monitor ? EXEC.n68 : 0) + (prog === 64 ? EXEC.approachJobs / EXEC.servicerPeriod : 0); + si++; + } + } + // display refreshes: a monitor job's end (Verb 16), a SERVICER pass's end (the program's Verb 06) + const monShown = jobs.filter((j) => j.kind === 'monitor' && j.fate === 'done').map((j) => j.t1); + const servShown = jobs.filter((j) => j.kind === 'servicer' && j.fate === 'done').map((j) => j.t1); + return {S, jobs, alarms, restarts, disp, lampEv, keyEv, monShown, servShown, radar, end}; +} + +const lastLE = (arr, s, key = (x) => x) => { + let lo = 0; + let hi = arr.length - 1; + if (hi < 0 || key(arr[0]) > s) return -1; + while (lo < hi) { + const mid = (lo + hi + 1) >> 1; + if (key(arr[mid]) <= s) lo = mid; + else hi = mid - 1; + } + return lo; +}; +export const sampleAt = (log, s) => Math.max(0, Math.min(log.S.sets.length - 1, Math.round(s / SAMPLE))); +/** the display state at s, and when its registers were last refreshed */ +export function displayAt(log, s) { + const d = log.disp[Math.max(0, lastLE(log.disp, s, (x) => x.s))]; + const src = d.monitor ? log.monShown : log.servShown; + const k = lastLE(src, s); + const shown = k < 0 ? d.s : Math.max(src[k], d.s); + return {...d, shown}; +} +/** a lamp's state at s */ +export function lampAt(log, s, name) { + let on = 0; + for (const [t, l, v] of log.lampEv) { + if (t > s) break; + if (l === name) on = v; + } + return on; +} +/** the jobs alive at s, in core-set order */ +export function jobsAt(log, s) { + const out = new Array(EXEC.coreSets).fill(null); + for (const j of log.jobs) if (j.t0 <= s && (j.t1 === null || j.t1 > s)) out[j.set] = j; + return out; +} +/** the last restart at or before s */ +export function restartAt(log, s) { + const k = lastLE(log.restarts, s, (x) => x.s); + return k < 0 ? null : log.restarts[k]; +} diff --git a/machines/rope/agc-shared/film.js b/machines/rope/agc-shared/film.js new file mode 100644 index 0000000..15561c5 --- /dev/null +++ b/machines/rope/agc-shared/film.js @@ -0,0 +1,401 @@ +// Rope, the film: the AGC and its DSKY (agc.js) on the drawing sheet (stage.js) under the overlay (console.js). One +// input, the mission time in MCT since PDI (schedule.js), reads the Executive's log (executive.js) and the descent +// (machine.js): the word in the rope, the core sets, the lamps, VERB / NOUN / PROG and R1-R3. An operator opens the +// case, pulls rope module B1 and dives between its cores while one word is read, reads and rewrites one erasable +// word, goes back to the DSKY, watches the radar's stolen cycles fill the core sets until the 1202, then +// fast-forwards through P64 to touchdown. A pure function of t. +import {runSim} from 'teardown-kit/runtime.js'; +import {createConsole} from './console.js'; +import {L} from './agc.js'; +import {loadFonts} from './fonts.js'; +import {AGC, EVENTS, EXEC, GET0, MCT, ROPE_WORDS, bits16, descent, ropePlace} from './machine.js'; +import {SAMPLE, displayAt, jobsAt, lampAt, restartAt, sampleAt, servicerDuty} from './executive.js'; +import {ALARM1, DURATION, ERAS_JOB, ERAS_MCT, LOG, NOVAC, ROPE_MCT, SCRIPT, T as TB, actsAt, camAtName, missionAt, rateAt} from './schedule.js'; +import {createStage} from './stage.js'; +import {nf, T as tr} from './i18n.js'; + +export {DURATION, SCRIPT}; +export const DEFAULTS = {duration: DURATION, fps: 60, theme: 'light', hud: {enabled: false, title: 'rope', subtitle: ''}, director: {enabled: false}, watermark: ''}; +const D2R = Math.PI / 180; +export const smoother = (x) => { + const u = Math.min(1, Math.max(0, x)); + return u * u * u * (u * (u * 6 - 15) + 10); +}; +export const ss = (a, b, t) => smoother((t - a) / (b - a)); +const lerp = (a, b, k) => a + (b - a) * k; +const lerpV = (a, b, k) => ({x: lerp(a.x, b.x, k), y: lerp(a.y, b.y, k), z: lerp(a.z, b.z, k)}); +const logLerp = (a, b, k) => Math.exp(Math.log(a) + (Math.log(b) - Math.log(a)) * k); + +// ------------------------------------------------------------ views: straight, slow, along the axes. u: seconds in +// the view, A: the machine's anchors (world space) for the frame +export const VIEW_FN = { + hero: (u) => ({tx: 0.05, ty: 0.07, tz: 0.0, az: 34 + 1.4 * Math.sin(u * 0.41), el: 25, d: 3.15 - 0.06 * Math.sin(u * 0.41), sx: 0, sy: 30}), + open: (u) => ({tx: 0.02, ty: 0.05, tz: -0.16, az: 30 + 0.4 * Math.min(u, 6), el: 38, d: 3.15, sx: 0, sy: 20}), + rope: (u, A) => { + const k = smoother((u - 1.2) / 3.0); + const p = lerpV(A.rope, A.core, smoother((u - 1.6) / 2.6)); + return {tx: p.x, ty: p.y, tz: p.z, az: lerp(28, 48, k), el: lerp(40, 26, k), d: logLerp(1.05, 0.066, k), sx: 0, sy: lerp(20, 0, k)}; + }, + eras: (u, A) => { + const k = smoother((u - 0.6) / 2.4); + const p = lerpV(A.eras, A.erasCore, k); + return {tx: p.x, ty: p.y, tz: p.z, az: lerp(16, 6, k), el: lerp(30, 12, k), d: logLerp(1.1, 0.075, k), sx: 0, sy: lerp(20, 0, k)}; + }, + dsky: (u, A) => ({tx: A.dsky.x, ty: A.dsky.y - 0.052, tz: A.dsky.z, az: 26 - 0.4 * Math.min(u, 6), el: 7, d: 1.22, sx: 0, sy: 6}), + exec: (u) => ({tx: 0.06, ty: 0.05, tz: -0.12, az: 22 + 0.4 * Math.min(u, 8), el: 31, d: 3.35, sx: 0, sy: 16}), + // live only + logic: (u, A) => { + const k = smoother((u - 0.4) / 2.2); + return {tx: lerp(-0.1, A.gate.x - 0.03, k), ty: lerp(0.06, A.gate.y - 0.03, k), tz: lerp(0, A.gate.z - 0.04, k), az: lerp(28, 14, k), el: lerp(36, 20, k), d: logLerp(2.6, 0.62, k), sx: 0, sy: 10}; + }, + graze: (u) => ({tx: L.x0 + 0.02, ty: 0.07, tz: 0.0, az: 78 - 0.6 * Math.min(u, 8), el: 7, d: 1.45, sx: 0, sy: 6}), +}; +export function blend(a, b, k) { + const o = {}; + for (const key in b) o[key] = key === 'az' ? a.az + ((((b.az - a.az + 540) % 360) - 180) * k) : key === 'd' ? logLerp(a.d, b.d, k) : a[key] + (b[key] - a[key]) * k; + // between two close views the camera backs out on the way, so it never passes through the trays + const lift = Math.max(0, Math.log(0.9 / Math.max(a.d, b.d))); + o.d *= Math.exp(lift * Math.sin(Math.PI * k)); + return o; +} +const VIEWS = SCRIPT.filter((e) => e.cam).map((e) => [e.t, e.cam]); +export const camAt = (t, A) => { + let i = 0; + while (i < VIEWS.length - 1 && VIEWS[i + 1][0] <= t) i++; + const view = (k) => VIEW_FN[VIEWS[k][1]](t - VIEWS[k][0], A); + const cur = view(i); + if (i === 0) return cur; + const k = ss(VIEWS[i][0], VIEWS[i][0] + 2.0, t); + return k >= 1 ? cur : blend(view(i - 1), cur, k); +}; + +// ------------------------------------------------------------ the operator's pointer +const REST = [[820, 520], [700, 470], [900, 560], [760, 430]]; +export function makeCursor(ui, script = SCRIPT) { + const EV = script.filter((e) => e.t > 0 && e.btn).map((e) => ({t: e.t, spot: ui.spots[e.btn]})); + const WP = [[0, 980, 640]]; + EV.forEach((e, i) => { + WP.push([e.t - 0.16, ...e.spot]); + WP.push([e.t + 0.24, ...e.spot]); + WP.push([e.t + 1.6, ...REST[i % REST.length]]); + }); + WP.sort((a, b) => a[0] - b[0]); + return (t) => { + let i = 0; + while (i < WP.length - 2 && t > WP[i + 1][0]) i++; + const [t0, x0, y0] = WP[i]; + const [t1, x1, y1] = WP[i + 1]; + const k = ss(t0, t1, t); + const len = Math.hypot(x1 - x0, y1 - y0); + const bow = Math.sin(Math.PI * k) * Math.min(24, len * 0.07); + let press = false; + let ring = 0; + let rx = 0; + let ry = 0; + for (const e of EV) { + if (t >= e.t - 0.07 && t < e.t + 0.09) press = true; + if (t >= e.t && t < e.t + 0.55) { + ring = 1 - (t - e.t) / 0.55; + [rx, ry] = e.spot; + } + } + return {x: x0 + (x1 - x0) * k + (len ? (-(y1 - y0) / len) * bow : 0), y: y0 + (y1 - y0) * k + (len ? ((x1 - x0) / len) * bow : 0), press, ring, ringX: rx, ringY: ry}; + }; +} + +// ------------------------------------------------------------ the machine's state at mission time s +const sgn = (v, n = 5) => (v < 0 ? '-' : '+') + String(Math.min(10 ** n - 1, Math.round(Math.abs(v)))).padStart(n, '0'); +const mmss = (sec) => { + const t = Math.max(0, Math.round(sec)); + return `+${String(Math.min(99, Math.floor(t / 60))).padStart(2, '0')} ${String(t % 60).padStart(2, '0')}`; +}; +const hash = (n) => { + const x = Math.sin(n * 0.61803 + 3.1) * 43758.5453; + return x - Math.floor(x); +}; +/** registers for a noun from the descent at the display's last refresh */ +export function registers(noun, ds, fail, s) { + if (noun === '68') return [sgn(ds.slantNm * 10), mmss(ds.tgo), sgn(ds.dH)]; + if (noun === '63') return [sgn(ds.v * 10), sgn(ds.hdot * 10), sgn(ds.h)]; + if (noun === '64') return [`+${String(Math.max(0, Math.round(EVENTS.p66 - ds.s))).padStart(2, '0').slice(-2)} ${String(Math.round(ds.lpd)).padStart(2, '0')}`, sgn(ds.hdot * 10), sgn(ds.h)]; + if (noun === '60') return [sgn(ds.vh * 10), sgn(ds.hdot * 10), sgn(ds.h)]; + if (noun === '09') return fail.map((c) => (c ? ' ' + c.toString().padStart(5, '0') : ' 00000')); + if (noun === '36') { + const g = GET0 + s; + return [sgn(Math.floor(g / 3600)), sgn(Math.floor((g % 3600) / 60)), sgn(Math.floor((g % 60) * 100))]; + } + return [' ', ' ', ' ']; +} +export function machineState(log, s, {liveKeys} = {}) { + const d = displayAt(log, s); + const ds = descent(d.shown); + const reg = registers(d.noun, ds, d.fail, d.shown); + const verb = d.mode === 'verb' ? d.vb.padEnd(2, ' ') : d.verb; + const noun = d.mode === 'noun' ? d.nb.padEnd(2, ' ') : d.mode === 'verb' ? d.noun : d.noun; + const i = sampleAt(log, s); + const run = log.S.run[i]; + const lamps = { + PROG: lampAt(log, s, 'PROG'), + 'OPR ERR': lampAt(log, s, 'OPR ERR'), + ALT: s < EVENTS.alt || (s > EVENTS.lrDrop && s < EVENTS.lrBack) ? 1 : 0, + VEL: s < EVENTS.vel || (s > EVENTS.lrDrop && s < EVENTS.lrBack) ? 1 : 0, + }; + // the jobs, and which one has the processor + const sets = jobsAt(log, s); + let runJ = null; + for (const j of sets) if (j && (!runJ || j.prio > runJ.prio || (j.prio === runJ.prio && j.t0 < runJ.t0))) runJ = j; + const setsOut = sets.map((j) => (j ? {kind: j.kind, run: j === runJ && run >= 0, age: `${nf(Math.max(0, s - j.t0), 1)} s`} : null)); + const vacs = []; + for (let k = 0; k < EXEC.vacAreas; k++) vacs.push(!!(log.S.vacs[i] & (1 << k))); + const busy = sets.filter(Boolean).length; + const tl = log.radar ? EXEC.tloss : 0; + const prog = s < EVENTS.p64 ? 63 : s < EVENTS.p66 ? 64 : 66; + const serv = servicerDuty(s); + const lrPart = prog === 63 ? Math.max(0, serv - EXEC.braking) : 0; + const mon = d.monitor ? EXEC.n68 : 0; + const lpd = prog === 64 ? EXEC.approachJobs / EXEC.servicerPeriod : 0; + const parts = [ + {k: 'serv', v: serv - lrPart}, + ...(lrPart > 0.001 ? [{k: 'lr', v: lrPart}] : []), + ...(mon ? [{k: 'n68', v: mon}] : []), + ...(lpd ? [{k: 'lpd', v: lpd}] : []), + ...(tl ? [{k: 'rr', v: tl}] : []), + ]; + const total = parts.reduce((a, p) => a + p.v, 0); + // one millisecond of MCTs, ending now + const n0 = Math.floor(s / MCT); + const strip = []; + const idleP = Math.max(0, 1 - total); + const novac0 = Math.round(NOVAC.req.t0 / MCT); + for (let q = 0; q < 85; q++) { + const n = n0 - 84 + q; + const inNovac = n >= novac0 && n < novac0 + NOVAC.mct; + const h = hash(n); + if (!inNovac && h < tl) strip.push('s'); + else if (inNovac || (run >= 0 && h > tl + idleP)) strip.push('j'); + else strip.push(run < 0 ? 'i' : h < tl + idleP ? 'i' : 'j'); + } + // the alarm, while PROG is lit and a few seconds after + const r = restartAt(log, s); + let alarm = null; + if (r) { + const age = s - r.s; + const k = lamps.PROG ? 1 : 1 - Math.min(1, Math.max(0, (age - 6) / 1.5)); + if (k > 0) { + const counts = {}; + for (const x of r.dropped) counts[x.kind] = (counts[x.kind] || 0) + 1; + const kl = {servicer: tr('job:servicer'), monitor: tr('job:monitor'), lpd: tr('job:lpd'), charin: tr('job:charin')}; + alarm = {code: r.code, k: Math.min(1, age / 0.15) * k, kept: r.kept[0]?.kind, dropped: Object.entries(counts).map(([kk, c]) => `${c} × ${kl[kk]}`).join(', ') || '—'}; + } + } + return { + dsky: {prog: String(prog === 66 && s > EVENTS.contact + 3 ? 68 : prog), verb, noun, reg, compActy: run >= 0 ? 1 : 0, lamps}, + d, + ds, + sets: setsOut, + vacs, + busy, + duty: {parts, total}, + strip, + alarm, + }; +} +export const dskyText = (d, ds) => { + const n = d.mode ? '' : d.noun; + if (n === '68') return tr('dsky:68', nf(ds.slantNm, 1), mmss(ds.tgo).slice(1).replace(' ', ':'), nf(Math.round(ds.dH))); + if (n === '63') return tr('dsky:63', nf(ds.v, 1), nf(ds.hdot, 1), nf(Math.round(ds.h))); + if (n === '64') return tr('dsky:64', Math.round(ds.lpd), nf(ds.hdot, 1), nf(Math.round(ds.h))); + if (n === '60') return tr('dsky:60', nf(ds.vh, 1), nf(ds.hdot, 1), nf(Math.round(ds.h))); + if (n === '09') return tr('dsky:09'); + if (n === '36') return tr('dsky:36'); + return tr('dsky:keying'); +}; +export const rateText = (r) => { + if (r < 1e-3) return tr('rateSlow', nf(r * 1e6, 1), nf(1 / r)); + if (r < 0.9) return tr('rateSlowS', nf(r, 2)); + return tr('rateFast', nf(r, r < 10 ? 1 : 0)); +}; + +// ------------------------------------------------------------ the subsystem panels +const ROPE_W = ROPE_WORDS.findIndex((w) => w.op === 'CAF NO.CORES'); +const SEL = ROPE_WORDS[ROPE_W]; +export const ROPE_PLACE = ropePlace(SEL.bank, SEL.addr); +export const prioWord = (kind) => (kind ? ({servicer: 0o20, monitor: 0o10, lpd: 0o10, charin: 0o30}[kind] << 9) | 0o154 : 0o77777); +/** rope read inside its MCT: phase 0..1 → {stage, fill} */ +export function ropeRead(phase) { + if (phase < 0) return {stage: -1, fill: 0}; + if (phase >= 1) return {stage: -1, fill: 16}; + const stage = phase < 0.12 ? 0 : phase < 0.45 ? 1 : phase < 0.72 ? 2 : 3; + const fill = Math.max(0, Math.min(16, Math.floor(((phase - 0.5) / 0.3) * 16 + 1))); + return {stage, fill: phase < 0.5 ? 0 : fill}; +} +export function erasRead(phase) { + if (phase < 0) return {stage: -1, fill: 16, state: 'stored'}; + if (phase >= 1) return {stage: -1, fill: 16, state: 'stored'}; + const stage = phase < 0.18 ? 0 : phase < 0.55 ? 1 : 2; + const fill = phase < 0.2 ? 0 : Math.min(16, Math.floor(((phase - 0.2) / 0.22) * 16 + 1)); + return {stage, fill, state: 'read'}; +} +export function detailFor(kind, s, ms, extra = {}) { + if (kind === 'rope') { + const ph = extra.ropePhase ?? -1; + const r = ropeRead(ph); + return {kind, w: extra.ropeW ?? ROPE_W, place: extra.place ?? ROPE_PLACE, fill: r.fill, stage: r.stage}; + } + if (kind === 'eras') { + const ph = extra.erasPhase ?? -1; + const r = erasRead(ph); + const job = extra.erasJob; + return {kind, set: extra.erasSet ?? 0, job, bits: bits16(prioWord(job)), fill: r.fill, stage: r.stage, state: r.state}; + } + if (kind === 'clock') { + const f = (s / MCT) % 1; + return {kind, pulse: Math.floor(f * 12), phase: f, mct: Math.floor(s / MCT)}; + } + if (kind === 'nor') { + const f = (s / MCT) % 1; + const p = Math.floor(f * 12); + return {kind, in: extra.norIn ?? [p % 2 ? 1 : 0, p >= 4 && p < 8 ? 1 : 0, p >= 9 ? 1 : 0]}; + } + if (kind === 'iface') return {kind, rr: !!extra.radar, lr: s > EVENTS.alt}; + if (kind === 'dsky') return {kind, text: tr('dskyKeysNote')}; + return {kind: 'exec'}; +} + +// ------------------------------------------------------------ callouts per view, label spots on the 1600 x 900 layout +export function calloutsFor(view, st, vis, extra = {}) { + const A = st.mac.anchors; + const out = []; + const c = (key, at, label, w, hot = false, o = vis) => { + const [name, sub] = tr(key); + out.push({name, sub, at: st.project(at), label, w, o, hot}); + }; + if (view === 'hero') { + c('cAgc', A.trayB, [380, 150], 230); + c('cDsky', A.dsky, [1230, 150], -200); + } else if (view === 'open' || view === 'exec') { + c('cTrayA', A.trayA, [380, 600], 220); + c('cTrayB', A.xrib, [1230, 112], -230); + if (view === 'exec') c('cConn', A.conn, [1230, 600], -250, !!extra.rrHot); + } else if (view === 'rope') { + const o2 = vis * (extra.inside ?? 0); + c('cRopeMod', A.ropeEnd, [1230, 112], -250, false, vis * (1 - (extra.inside ?? 0))); + c('cCore', A.core, [380, 112], 250, true, o2); + c('cSense', A.coreNext, [1230, 112], -250, false, o2); + c('cInhibit', A.inhib, [380, 640], 250, false, o2); + } else if (view === 'eras') { + const o2 = vis * (extra.inside ?? 0); + c('cErasMod', A.erasMod, [380, 112], 260, false, vis * (1 - (extra.inside ?? 0))); + c('cErasCore', A.erasCore, [380, 112], 260, true, o2); + c('cErasSense', A.erasSense, [1230, 640], -250, false, o2); + } else if (view === 'dsky') { + c('cEl', A.dskyEl, [1230, 112], -240, true); + c('cKeys', A.dskyKeys, [380, 640], 220); + } else if (view === 'logic') { + c('cLogic', A.logic, [380, 112], 240); + c('cGate', A.gate, [1230, 112], -250, true); + } else if (view === 'graze') { + c('cTrayA', A.trayA, [380, 112], 220); + } + return out; +} + +// ------------------------------------------------------------ captions of the film, by beat +const CAPS = [ + [0, 'cap:hero'], + [3.0, 'cap:open'], + [6.8, 'cap:rope'], + [11.0, 'cap:rope2'], + [14.6, 'cap:eras'], + [20.2, 'cap:dsky'], + [24.0, 'cap:exec'], + [TB.alarm, 'cap:alarm'], + [TB.alarm + 2.4, 'cap:restart'], + [TB.ff, 'cap:ff'], + [35.2, 'cap:p64'], + [TB.contact - 0.4, 'cap:contact'], +]; +export const captionAt = (t) => tr(CAPS.filter((c) => c[0] <= t).pop()[1]); + +// ------------------------------------------------------------ the film +export function makeFilm() { + return async ({canvas, capture}) => { + await loadFonts(); + const st = createStage({canvas}); + const resize = () => st.resize(1600, 900, capture ? devicePixelRatio || 1 : Math.min(devicePixelRatio || 1, 2)); + resize(); + const ui = createConsole(document.getElementById('app')); + const cursorAt = makeCursor(ui); + if (window.__SIM_CONFIG?.clean) ui.root.style.display = 'none'; + window.ROPE = {st, LOG}; + const sR = ROPE_MCT * MCT; + const sE = ERAS_MCT * MCT; + return { + resize, + render(t) { + const s = missionAt(t); + const view = camAtName(t); + const t0 = VIEWS.filter(([a]) => a <= t).pop()[0]; + const since = t - t0; + const ms = machineState(LOG, s); + const acts = actsAt(t); + const ropePhase = (s - sR) / MCT; + const erasPhase = (s - sE) / MCT; + const press = {}; + for (const [ks, k] of LOG.keyEv) { + const dt = s - ks; + if (dt >= 0 && dt < 0.25) press[k] = Math.max(press[k] || 0, 1 - dt / 0.25); + } + const fx = { + ...acts, + read: {phase: ropePhase >= 0 && ropePhase < 1 ? ropePhase : -1}, + erasRead: {phase: erasPhase >= 0 && erasPhase < 1 ? erasPhase : -1, bit: bits16(prioWord(ERAS_JOB?.kind))[1]}, + rr: view === 'exec' || view === 'hero' ? 0.25 + 0.25 * Math.sin(t * 9) : 0, + dsky: {lamps: ms.dsky.lamps, el: ms.dsky, press}, + }; + st.mac.update(fx); + const c = camAt(t, st.mac.anchors); + st.frame(fx, {...c, az: c.az * D2R, el: c.el * D2R}); + const det = + view === 'rope' + ? detailFor('rope', s, ms, {ropePhase}) + : view === 'eras' + ? detailFor('eras', s, ms, {erasPhase, erasJob: ERAS_JOB?.kind, erasSet: 0}) + : view === 'dsky' + ? detailFor('dsky', s, ms) + : view === 'exec' + ? detailFor('iface', s, ms, {radar: true}) + : detailFor('clock', s, ms); + const inside = view === 'rope' ? ss(3.0, 4.2, since) : view === 'eras' ? ss(2.0, 3.0, since) : 0; + ui.update({ + get: GET0 + s, + mct: s / MCT, + rateText: rateText(rateAt(t)), + dsky: ms.dsky, + dskyText: dskyText(ms.d, ms.ds), + sets: ms.sets, + vacs: ms.vacs, + busy: ms.busy, + duty: ms.duty, + strip: ms.strip, + stripAt: 84, + alarm: ms.alarm, + execNote: tr('execWait'), + detail: det, + caption: captionAt(t), + sub: {rope: 'rope', eras: 'eras', dsky: 'dsky', exec: 'exec'}[view] || '', + cut: acts.open > 0.5 ? 'tray' : '', + view: '', + callouts: calloutsFor(view, st, ss(1.2, 1.9, since) * (t > DURATION - 0.3 ? 0 : 1), {inside, rrHot: true}), + cursor: cursorAt(t), + }); + return {}; + }, + }; + }; +} +void AGC; +void SAMPLE; +void ALARM1; + +export const run = () => runSim(DEFAULTS, makeFilm()); diff --git a/machines/rope/agc-shared/fonts.js b/machines/rope/agc-shared/fonts.js new file mode 100644 index 0000000..b5d545d --- /dev/null +++ b/machines/rope/agc-shared/fonts.js @@ -0,0 +1,26 @@ +// Barlow Condensed (SIL Open Font License, @fontsource/barlow-condensed), the console's technical-drawing capitals: +// the latin subset in three weights, inlined so the page opens offline. Both builds (the site's and the teardown +// skill's) load .woff2 as base64. +import w500 from '@fontsource/barlow-condensed/files/barlow-condensed-latin-500-normal.woff2'; +import w600 from '@fontsource/barlow-condensed/files/barlow-condensed-latin-600-normal.woff2'; +import w700 from '@fontsource/barlow-condensed/files/barlow-condensed-latin-700-normal.woff2'; + +const buf = (b64) => { + const s = atob(b64); + const u = new Uint8Array(s.length); + for (let i = 0; i < s.length; i++) u[i] = s.charCodeAt(i); + return u.buffer; +}; +export const FAMILY = "'Barlow Condensed', 'Arial Narrow', sans-serif"; +/** registers the three weights; resolves when they are ready to draw with */ +export async function loadFonts() { + const faces = [ + [w500, '500'], + [w600, '600'], + [w700, '700'], + ].map(([b, weight]) => new FontFace('Barlow Condensed', buf(b), {weight, style: 'normal'})); + for (const f of faces) { + document.fonts.add(f); + await f.load().catch(() => {}); + } +} diff --git a/machines/rope/agc-shared/i18n.js b/machines/rope/agc-shared/i18n.js new file mode 100644 index 0000000..dd49315 --- /dev/null +++ b/machines/rope/agc-shared/i18n.js @@ -0,0 +1,223 @@ +// Every word on screen, in English (the default), French and Spanish. The language itself, the number format and the +// strings of the page's header and footer are shared by the collection (../../../shared/i18n.js). +import {LANG, LANGS, makeT, nf} from '../../../shared/i18n.js'; + +export {LANG, LANGS, nf}; + +const S = { + // ------------------------------------------------------------ the clock and the DSKY + clockTitle: {en: 'MISSION TIME · GET', fr: 'TEMPS DE MISSION · GET', es: 'TIEMPO DE MISIÓN · GET'}, + mctSince: {en: 'MEMORY CYCLES (MCT) SINCE PDI', fr: 'CYCLES MÉMOIRE (MCT) DEPUIS LA PDI', es: 'CICLOS DE MEMORIA (MCT) DESDE LA PDI'}, + rateSlow: {en: (us, x) => `1 S ON SCREEN = ${us} µS · SLOWED ×${x}`, fr: (us, x) => `1 S À L’ÉCRAN = ${us} µS · RALENTI ×${x}`, es: (us, x) => `1 S EN PANTALLA = ${us} µS · RALENTIZADO ×${x}`}, + rateSlowS: {en: (r) => `1 S ON SCREEN = ${r} S OF MISSION`, fr: (r) => `1 S À L’ÉCRAN = ${r} S DE MISSION`, es: (r) => `1 S EN PANTALLA = ${r} S DE MISIÓN`}, + rateFast: {en: (r) => `MISSION RUNS ×${r}`, fr: (r) => `LA MISSION DÉFILE ×${r}`, es: (r) => `LA MISIÓN CORRE ×${r}`}, + dskyTitle: {en: 'DSKY · DISPLAY AND KEYBOARD', fr: 'DSKY · AFFICHEUR ET CLAVIER', es: 'DSKY · PANTALLA Y TECLADO'}, + 'dsky:68': { + en: (r, tg, dh) => `V16 N68 · R1 slant range ${r} nmi · R2 time to high gate ${tg} · R3 Δh radar − computed ${dh} ft`, + fr: (r, tg, dh) => `V16 N68 · R1 distance oblique ${r} nmi · R2 temps jusqu’au high gate ${tg} · R3 Δh radar − calculée ${dh} ft`, + es: (r, tg, dh) => `V16 N68 · R1 distancia oblicua ${r} nmi · R2 tiempo hasta el high gate ${tg} · R3 Δh radar − calculada ${dh} ft`, + }, + 'dsky:63': { + en: (v, hd, h) => `V06 N63 · R1 speed ${v} ft/s · R2 altitude rate ${hd} ft/s · R3 altitude ${h} ft`, + fr: (v, hd, h) => `V06 N63 · R1 vitesse ${v} ft/s · R2 vitesse verticale ${hd} ft/s · R3 altitude ${h} ft`, + es: (v, hd, h) => `V06 N63 · R1 velocidad ${v} ft/s · R2 velocidad vertical ${hd} ft/s · R3 altitud ${h} ft`, + }, + 'dsky:64': { + en: (a, hd, h) => `V06 N64 · R1 time left to redesignate, LPD angle ${a}° · R2 altitude rate ${hd} ft/s · R3 altitude ${h} ft`, + fr: (a, hd, h) => `V06 N64 · R1 temps pour redésigner, angle LPD ${a}° · R2 vitesse verticale ${hd} ft/s · R3 altitude ${h} ft`, + es: (a, hd, h) => `V06 N64 · R1 tiempo para redesignar, ángulo LPD ${a}° · R2 velocidad vertical ${hd} ft/s · R3 altitud ${h} ft`, + }, + 'dsky:60': { + en: (v, hd, h) => `V06 N60 · R1 forward speed ${v} ft/s · R2 altitude rate ${hd} ft/s · R3 altitude ${h} ft`, + fr: (v, hd, h) => `V06 N60 · R1 vitesse horizontale ${v} ft/s · R2 vitesse verticale ${hd} ft/s · R3 altitude ${h} ft`, + es: (v, hd, h) => `V06 N60 · R1 velocidad horizontal ${v} ft/s · R2 velocidad vertical ${hd} ft/s · R3 altitud ${h} ft`, + }, + 'dsky:09': {en: 'V05 N09 · the alarm codes: R1 the first, R2 the second, R3 the last', fr: 'V05 N09 · les codes d’alarme : R1 le premier, R2 le deuxième, R3 le dernier', es: 'V05 N09 · los códigos de alarma: R1 el primero, R2 el segundo, R3 el último'}, + 'dsky:36': {en: 'V16 N36 · the computer’s clock: hours, minutes, seconds', fr: 'V16 N36 · l’horloge du calculateur : heures, minutes, secondes', es: 'V16 N36 · el reloj del ordenador: horas, minutos, segundos'}, + 'dsky:keying': {en: 'Keying in a verb and a noun…', fr: 'Saisie d’un verbe et d’un nom…', es: 'Tecleando un verbo y un nombre…'}, + // ------------------------------------------------------------ the Executive + execTitle: {en: 'EXECUTIVE · WAITLIST', fr: 'EXECUTIVE · WAITLIST', es: 'EXECUTIVE · WAITLIST'}, + dutyTitle: {en: 'DUTY ASKED OF THE MACHINE', fr: 'CHARGE DEMANDÉE À LA MACHINE', es: 'CARGA PEDIDA A LA MÁQUINA'}, + 'duty:serv': {en: 'GUIDANCE', fr: 'GUIDAGE', es: 'GUIADO'}, + 'duty:lr': {en: 'RADAR DATA', fr: 'DONNÉES RADAR', es: 'DATOS RADAR'}, + 'duty:n68': {en: 'V16 N68', fr: 'V16 N68', es: 'V16 N68'}, + 'duty:lpd': {en: 'LPD', fr: 'LPD', es: 'LPD'}, + 'duty:rr': {en: 'STOLEN', fr: 'VOLÉS', es: 'ROBADOS'}, + setsTitle: {en: 'CORE SETS · ONE PER JOB', fr: 'CORE SETS · UN PAR TÂCHE', es: 'CORE SETS · UNO POR TAREA'}, + setFree: {en: 'FREE', fr: 'LIBRE', es: 'LIBRE'}, + vacTitle: {en: 'VAC AREAS · INTERPRETED JOBS', fr: 'ZONES VAC · TÂCHES INTERPRÉTÉES', es: 'ZONAS VAC · TAREAS INTERPRETADAS'}, + busyOf: {en: (b, n) => `${b} / ${n} BUSY`, fr: (b, n) => `${b} / ${n} PRIS`, es: (b, n) => `${b} / ${n} OCUPADOS`}, + stripTitle: {en: 'THE LAST MILLISECOND · 85 MCT', fr: 'LA DERNIÈRE MILLISECONDE · 85 MCT', es: 'EL ÚLTIMO MILISEGUNDO · 85 MCT'}, + stripJob: {en: 'JOBS', fr: 'TÂCHES', es: 'TAREAS'}, + stripSteal: {en: 'STOLEN (RADAR)', fr: 'VOLÉS (RADAR)', es: 'ROBADOS (RADAR)'}, + stripIdle: {en: 'IDLE', fr: 'LIBRES', es: 'LIBRES'}, + 'job:servicer': {en: 'SERVICER', fr: 'SERVICER', es: 'SERVICER'}, + 'job:monitor': {en: 'MONITOR V16 N68', fr: 'MONITEUR V16 N68', es: 'MONITOR V16 N68'}, + 'job:lpd': {en: 'LPD DISPLAY', fr: 'AFFICHAGE LPD', es: 'PANTALLA LPD'}, + 'job:charin': {en: 'KEYBOARD', fr: 'CLAVIER', es: 'TECLADO'}, + alarmHead: {en: 'PROGRAM ALARM', fr: 'ALARME PROGRAMME', es: 'ALARMA DE PROGRAMA'}, + 'alarm:1202': {en: 'EXECUTIVE OVERFLOW · NO CORE SETS', fr: 'DÉBORDEMENT DE L’EXECUTIVE · PLUS DE CORE SET', es: 'DESBORDAMIENTO DEL EXECUTIVE · SIN CORE SETS'}, + 'alarm:1201': {en: 'EXECUTIVE OVERFLOW · NO VAC AREAS', fr: 'DÉBORDEMENT DE L’EXECUTIVE · PLUS DE ZONE VAC', es: 'DESBORDAMIENTO DEL EXECUTIVE · SIN ZONAS VAC'}, + restartKept: {en: (k) => `Restart. Kept: ${k}, the newest pass, from its restart point.`, fr: (k) => `Redémarrage. Gardé : ${k}, le passage le plus récent, depuis son point de reprise.`, es: (k) => `Reinicio. Se conserva: ${k}, la pasada más reciente, desde su punto de reanudación.`}, + restartDropped: {en: (d) => `Dropped: ${d}. The landing goes on.`, fr: (d) => `Abandonné : ${d}. L’atterrissage continue.`, es: (d) => `Descartado: ${d}. El alunizaje continúa.`}, + execWait: { + en: 'The Waitlist starts SERVICER every 2 s; a Verb 16 monitor every second. Each job holds a core set until it ends.', + fr: 'La Waitlist lance SERVICER toutes les 2 s ; un moniteur Verb 16 chaque seconde. Chaque tâche garde son core set jusqu’à la fin.', + es: 'La Waitlist lanza SERVICER cada 2 s; un monitor Verb 16 cada segundo. Cada tarea retiene su core set hasta terminar.', + }, + // ------------------------------------------------------------ the detail panel + 'det:rope': {en: 'FIXED MEMORY · ONE WORD', fr: 'MÉMOIRE FIXE · UN MOT', es: 'MEMORIA FIJA · UNA PALABRA'}, + 'det:eras': {en: 'ERASABLE MEMORY · ONE WORD', fr: 'MÉMOIRE EFFAÇABLE · UN MOT', es: 'MEMORIA BORRABLE · UNA PALABRA'}, + 'det:nor': {en: 'LOGIC · ONE NOR GATE', fr: 'LOGIQUE · UNE PORTE NOR', es: 'LÓGICA · UNA PUERTA NOR'}, + 'det:clock': {en: 'CLOCK AND SEQUENCER', fr: 'HORLOGE ET SÉQUENCEUR', es: 'RELOJ Y SECUENCIADOR'}, + 'det:iface': {en: 'INTERFACES · COUNTERS', fr: 'INTERFACES · COMPTEURS', es: 'INTERFACES · CONTADORES'}, + 'det:dsky': {en: 'DSKY · VERB AND NOUN', fr: 'DSKY · VERBE ET NOM', es: 'DSKY · VERBO Y NOMBRE'}, + 'det:exec': {en: 'EXECUTIVE · THE JOBS', fr: 'EXECUTIVE · LES TÂCHES', es: 'EXECUTIVE · LAS TAREAS'}, + ropeAddr: { + en: (b, a, m, c, st) => `${String(b).padStart(2, '0')},${a} · B${m} · CORE ${c} · STRAND ${st}`, + fr: (b, a, m, c, st) => `${String(b).padStart(2, '0')},${a} · B${m} · TORE ${c} · BRIN ${st}`, + es: (b, a, m, c, st) => `${String(b).padStart(2, '0')},${a} · B${m} · NÚCLEO ${c} · HEBRA ${st}`, + }, + ropeOctal: {en: 'THE WORD, IN OCTAL (LUMINARY 099)', fr: 'LE MOT, EN OCTAL (LUMINARY 099)', es: 'LA PALABRA, EN OCTAL (LUMINARY 099)'}, + ropeParity: {en: (p) => `ODD PARITY BIT ${p}`, fr: (p) => `BIT DE PARITÉ IMPAIRE ${p}`, es: (p) => `BIT DE PARIDAD IMPAR ${p}`}, + ropePhase: {en: 'INSIDE ONE MEMORY CYCLE, 11.7 µS', fr: 'DANS UN CYCLE MÉMOIRE, 11,7 µS', es: 'DENTRO DE UN CICLO DE MEMORIA, 11,7 µS'}, + 'ph:inhibit': {en: 'INHIBIT', fr: 'INHIBITION', es: 'INHIBICIÓN'}, + 'ph:set': {en: 'SET', fr: 'SET', es: 'SET'}, + 'ph:reset': {en: 'RESET', fr: 'RESET', es: 'RESET'}, + 'ph:strobe': {en: 'STROBE', fr: 'LECTURE', es: 'LECTURA'}, + ropeNote: { + en: (w, m, c, l) => `${w} words in ${m} modules of ${c} cores. ${l} wires pass through or around each core: through is a 1, around is a 0.`, + fr: (w, m, c, l) => `${w} mots dans ${m} modules de ${c} tores. ${l} fils traversent ou contournent chaque tore : dedans, un 1 ; autour, un 0.`, + es: (w, m, c, l) => `${w} palabras en ${m} módulos de ${c} núcleos. ${l} hilos pasan por dentro o por fuera de cada núcleo: dentro, un 1; fuera, un 0.`, + }, + erasAddr: {en: (k) => `PRIORITY OF CORE SET ${k} · READ BY CCS PRIORITY`, fr: (k) => `PRIORITÉ DU CORE SET ${k} · LUE PAR CCS PRIORITY`, es: (k) => `PRIORIDAD DEL CORE SET ${k} · LEÍDA POR CCS PRIORITY`}, + erasJob: {en: (j) => `${j} · BUSY`, fr: (j) => `${j} · OCCUPÉ`, es: (j) => `${j} · OCUPADO`}, + erasFree: {en: '−0 · FREE', fr: '−0 · LIBRE', es: '−0 · LIBRE'}, + erasPlane: {en: 'THE PLANE SHOWN HOLDS BIT 14 OF EVERY WORD', fr: 'LE PLAN MONTRÉ PORTE LE BIT 14 DE CHAQUE MOT', es: 'EL PLANO MOSTRADO GUARDA EL BIT 14 DE CADA PALABRA'}, + 'es:read': {en: 'X + Y READ', fr: 'LECTURE X + Y', es: 'LECTURA X + Y'}, + 'es:sense': {en: 'SENSE', fr: 'DÉTECTION', es: 'DETECCIÓN'}, + 'es:rewrite': {en: 'REWRITE', fr: 'RÉÉCRITURE', es: 'REESCRITURA'}, + erasNote: { + en: (w, b) => `${w} words, ${b} cores. Reading switches the core to 0: a 1 shows as a pulse on the sense line. The same cycle writes it back.`, + fr: (w, b) => `${w} mots, ${b} tores. Lire fait basculer le tore à 0 : un 1 se voit comme une impulsion sur le fil de lecture. Le même cycle le réécrit.`, + es: (w, b) => `${w} palabras, ${b} núcleos. Leer pone el núcleo a 0: un 1 aparece como un pulso en el hilo de lectura. El mismo ciclo lo reescribe.`, + }, + norHead: {en: 'RESISTOR-TRANSISTOR LOGIC, 3 INPUTS', fr: 'LOGIQUE RÉSISTANCE-TRANSISTOR, 3 ENTRÉES', es: 'LÓGICA RESISTENCIA-TRANSISTOR, 3 ENTRADAS'}, + norNote: { + en: (n, g) => `About ${n} flat-packs, two NOR gates in each: ${g} gates of one kind make the whole processor.`, + fr: (n, g) => `Environ ${n} boîtiers plats, deux portes NOR dans chacun : ${g} portes d’un seul type font tout le processeur.`, + es: (n, g) => `Unos ${n} encapsulados planos, dos puertas NOR en cada uno: ${g} puertas de un solo tipo hacen todo el procesador.`, + }, + clockHead: {en: (f, m) => `${f} MHZ · 12 PULSES = 1 MCT = ${m} µS`, fr: (f, m) => `${f} MHZ · 12 IMPULSIONS = 1 MCT = ${m} µS`, es: (f, m) => `${f} MHZ · 12 PULSOS = 1 MCT = ${m} µS`}, + clockPulse: {en: 'THE TIMING PULSE NOW', fr: 'L’IMPULSION EN COURS', es: 'EL PULSO ACTUAL'}, + clockNote: { + en: (n, a, us) => `${n} memory cycles a second. An addition takes 2 MCT (${us} µS): ${a} a second; one-MCT instructions run twice as many.`, + fr: (n, a, us) => `${n} cycles mémoire par seconde. Une addition prend 2 MCT (${us} µS) : ${a} par seconde ; les instructions d’un MCT en font deux fois plus.`, + es: (n, a, us) => `${n} ciclos de memoria por segundo. Una suma tarda 2 MCT (${us} µS): ${a} por segundo; las instrucciones de un MCT, el doble.`, + }, + ifHead: {en: 'CYCLES STOLEN PER SECOND', fr: 'CYCLES VOLÉS PAR SECONDE', es: 'CICLOS ROBADOS POR SEGUNDO'}, + 'if:rr': {en: 'RENDEZVOUS RADAR CDU', fr: 'CDU DU RADAR DE RENDEZ-VOUS', es: 'CDU DEL RADAR DE ENCUENTRO'}, + 'if:imu': {en: 'IMU CDU (STEADY ATTITUDE)', fr: 'CDU DE L’IMU (ATTITUDE STABLE)', es: 'CDU DE LA IMU (ACTITUD ESTABLE)'}, + 'if:lr': {en: 'LANDING RADAR', fr: 'RADAR D’ATTERRISSAGE', es: 'RADAR DE ALUNIZAJE'}, + 'if:lrOn': {en: 'DATA GOOD', fr: 'DONNÉES BONNES', es: 'DATOS BUENOS'}, + ifTloss: {en: 'TIME LOST TO THE RADAR', fr: 'TEMPS PERDU AU RADAR', es: 'TIEMPO PERDIDO POR EL RADAR'}, + ifNote: { + en: (p, m, th) => `Two angles × ${p} pulses/s at most, one MCT each: ${th} % in theory, ${m} % measured after the flight. The model uses 13 %.`, + fr: (p, m, th) => `Deux angles × ${p} impulsions/s au plus, un MCT chacune : ${th} % en théorie, ${m} % mesurés après le vol. Le modèle prend 13 %.`, + es: (p, m, th) => `Dos ángulos × ${p} pulsos/s como máximo, un MCT cada uno: ${th} % en teoría, ${m} % medido tras el vuelo. El modelo usa 13 %.`, + }, + dskyHead: {en: 'VERB = WHAT TO DO · NOUN = ON WHAT', fr: 'VERBE = QUOI FAIRE · NOM = SUR QUOI', es: 'VERBO = QUÉ HACER · NOMBRE = SOBRE QUÉ'}, + dskyKeysNote: { + en: 'Click the keys. VERB 1 6 NOUN 6 8 ENTR: the Δh monitor that costs 3 % (it can bring the 1202 back). VERB 0 6 NOUN 6 3 ENTR: speed and altitude, once. VERB 0 5 NOUN 0 9 ENTR: the alarm codes. VERB 1 6 NOUN 3 6 ENTR: the clock. RSET turns the lamps off; KEY REL hands the display back to the program.', + fr: 'Cliquez les touches. VERB 1 6 NOUN 6 8 ENTR : le moniteur de Δh qui coûte 3 % (il peut faire revenir le 1202). VERB 0 6 NOUN 6 3 ENTR : vitesse et altitude, une fois. VERB 0 5 NOUN 0 9 ENTR : les codes d’alarme. VERB 1 6 NOUN 3 6 ENTR : l’horloge. RSET éteint les voyants ; KEY REL rend l’affichage au programme.', + es: 'Haz clic en las teclas. VERB 1 6 NOUN 6 8 ENTR: el monitor de Δh que cuesta un 3 % (puede traer de vuelta el 1202). VERB 0 6 NOUN 6 3 ENTR: velocidad y altitud, una vez. VERB 0 5 NOUN 0 9 ENTR: los códigos de alarma. VERB 1 6 NOUN 3 6 ENTR: el reloj. RSET apaga las luces; KEY REL devuelve la pantalla al programa.', + }, + exHead: {en: 'PRIORITY DECIDES WHO RUNS', fr: 'LA PRIORITÉ DÉCIDE QUI TOURNE', es: 'LA PRIORIDAD DECIDE QUIÉN CORRE'}, + exNote: { + en: (c, v, b, lr, n, rr) => `${c} core sets, ${v} VAC areas. Braking guidance asks ${b} %, the landing radar's data ${lr} % more, the V16 N68 monitor ${n} %; the radar steals ${rr} %. Past 100 %, the lowest-priority jobs never finish and keep their core sets: when a job finds none free, 1202.`, + fr: (c, v, b, lr, n, rr) => `${c} core sets, ${v} zones VAC. Le guidage du freinage demande ${b} %, les données du radar d’atterrissage ${lr} % de plus, le moniteur V16 N68 ${n} % ; le radar vole ${rr} %. Au-delà de 100 %, les tâches les moins prioritaires ne finissent jamais et gardent leur core set : quand une tâche n’en trouve plus, 1202.`, + es: (c, v, b, lr, n, rr) => `${c} core sets, ${v} zonas VAC. El guiado de frenado pide ${b} %, los datos del radar de alunizaje ${lr} % más, el monitor V16 N68 ${n} %; el radar roba ${rr} %. Por encima del 100 %, las tareas de menor prioridad nunca terminan y retienen su core set: cuando una tarea no encuentra ninguno libre, 1202.`, + }, + // ------------------------------------------------------------ buttons + grpSubs: {en: 'SUBSYSTEMS', fr: 'SOUS-SYSTÈMES', es: 'SUBSISTEMAS'}, + 'sub:rope': {en: 'ROPE', fr: 'ROPE', es: 'ROPE'}, + 'sub:eras': {en: 'ERASABLE', fr: 'EFFAÇABLE', es: 'BORRABLE'}, + 'sub:nor': {en: 'NOR LOGIC', fr: 'LOGIQUE NOR', es: 'LÓGICA NOR'}, + 'sub:clock': {en: 'CLOCK', fr: 'HORLOGE', es: 'RELOJ'}, + 'sub:exec': {en: 'EXECUTIVE', fr: 'EXECUTIVE', es: 'EXECUTIVE'}, + 'sub:dsky': {en: 'DSKY', fr: 'DSKY', es: 'DSKY'}, + 'sub:iface': {en: 'INTERFACES', fr: 'INTERFACES', es: 'INTERFACES'}, + grpCuts: {en: 'SECTIONS', fr: 'COUPES', es: 'CORTES'}, + 'cut:case': {en: 'CASE', fr: 'BOÎTIER', es: 'CAJA'}, + 'cut:tray': {en: 'TRAYS', fr: 'PLATEAUX', es: 'BANDEJAS'}, + 'cut:module': {en: 'MODULE', fr: 'MODULE', es: 'MÓDULO'}, + grpViews: {en: 'VIEWS', fr: 'VUES', es: 'VISTAS'}, + 'view:axo': {en: 'AXONOMETRIC', fr: 'AXONOMÉTRIE', es: 'AXONOMETRÍA'}, + 'view:dskyFace': {en: 'DSKY FACE', fr: 'FACE DSKY', es: 'CARA DSKY'}, + 'view:ropeIn': {en: 'INSIDE ROPE', fr: 'DANS LA ROPE', es: 'DENTRO DE LA ROPE'}, + 'view:graze': {en: 'GRAZING', fr: 'RASANTE', es: 'RASANTE'}, + // ------------------------------------------------------------ title block + title: {en: 'ROPE', fr: 'ROPE', es: 'ROPE'}, + titleSub: {en: 'APOLLO GUIDANCE COMPUTER BLOCK II · DSKY', fr: 'APOLLO GUIDANCE COMPUTER BLOCK II · DSKY', es: 'APOLLO GUIDANCE COMPUTER BLOCK II · DSKY'}, + titleMission: {en: 'LM · LUMINARY 099 · APOLLO 11 DESCENT', fr: 'LM · LUMINARY 099 · DESCENTE D’APOLLO 11', es: 'LM · LUMINARY 099 · DESCENSO DEL APOLO 11'}, + titleSources: {en: 'AFTER MIT IL / NASA PUBLIC SOURCES', fr: 'D’APRÈS LES SOURCES PUBLIQUES MIT IL / NASA', es: 'SEGÚN FUENTES PÚBLICAS MIT IL / NASA'}, + titleNot: {en: 'A MODEL · NOT AFFILIATED WITH NASA OR MIT', fr: 'UN MODÈLE · SANS LIEN AVEC LA NASA NI LE MIT', es: 'UN MODELO · SIN RELACIÓN CON LA NASA NI EL MIT'}, + titleSheet: {en: 'SHEET 1 OF 1', fr: 'FEUILLE 1 SUR 1', es: 'HOJA 1 DE 1'}, + titleFigs: {en: (m, p) => `${m} KG · ${p} W
61 × 32 × 17 CM`, fr: (m, p) => `${m} KG · ${p} W
61 × 32 × 17 CM`, es: (m, p) => `${m} KG · ${p} W
61 × 32 × 17 CM`}, + // ------------------------------------------------------------ callouts [name, sub] + cAgc: {en: ['Apollo Guidance Computer', 'BLOCK II · 2 TRAYS · 32 KG · 55 W'], fr: ['Apollo Guidance Computer', 'BLOCK II · 2 PLATEAUX · 32 KG · 55 W'], es: ['Apollo Guidance Computer', 'BLOCK II · 2 BANDEJAS · 32 KG · 55 W']}, + cDsky: {en: ['DSKY', 'DISPLAY AND KEYBOARD'], fr: ['DSKY', 'AFFICHEUR ET CLAVIER'], es: ['DSKY', 'PANTALLA Y TECLADO']}, + cTrayA: {en: ['Tray A · logic', '24 LOGIC + 7 INTERFACE MODULES'], fr: ['Plateau A · logique', '24 MODULES LOGIQUES + 7 D’INTERFACE'], es: ['Bandeja A · lógica', '24 MÓDULOS LÓGICOS + 7 DE INTERFAZ']}, + cTrayB: {en: ['Tray B · memory', 'ROPE, ERASABLE, DRIVERS'], fr: ['Plateau B · mémoire', 'ROPE, EFFAÇABLE, PILOTES'], es: ['Bandeja B · memoria', 'ROPE, BORRABLE, CONTROLADORES']}, + cConn: {en: ['Interface connector', 'RADAR PULSES COME IN HERE'], fr: ['Connecteur d’interface', 'LES IMPULSIONS DU RADAR ARRIVENT ICI'], es: ['Conector de interfaz', 'AQUÍ LLEGAN LOS PULSOS DEL RADAR']}, + cRopeMod: {en: ['Rope module B1', '6,144 WORDS · 512 CORES'], fr: ['Module de rope B1', '6 144 MOTS · 512 TORES'], es: ['Módulo de rope B1', '6144 PALABRAS · 512 NÚCLEOS']}, + cCore: {en: ['The selected core', 'INHIBIT LINES HOLD ALL THE OTHERS'], fr: ['Le tore choisi', 'LES FILS D’INHIBITION BLOQUENT TOUS LES AUTRES'], es: ['El núcleo elegido', 'LOS HILOS DE INHIBICIÓN BLOQUEAN LOS DEMÁS']}, + cSense: {en: ['Sense lines', 'THROUGH = 1 · AROUND = 0'], fr: ['Fils de lecture', 'DEDANS = 1 · AUTOUR = 0'], es: ['Hilos de lectura', 'DENTRO = 1 · FUERA = 0']}, + cInhibit: {en: ['Inhibit lines', 'THE ADDRESS, DECODED'], fr: ['Fils d’inhibition', 'L’ADRESSE, DÉCODÉE'], es: ['Hilos de inhibición', 'LA DIRECCIÓN, DECODIFICADA']}, + cErasMod: {en: ['Erasable memory B12', '2,048 WORDS · FERRITE CORES'], fr: ['Mémoire effaçable B12', '2 048 MOTS · TORES DE FERRITE'], es: ['Memoria borrable B12', '2048 PALABRAS · NÚCLEOS DE FERRITA']}, + cErasCore: {en: ['One core, one bit', 'X AND Y HALF-CURRENTS SWITCH IT'], fr: ['Un tore, un bit', 'LES DEMI-COURANTS X ET Y LE BASCULENT'], es: ['Un núcleo, un bit', 'LAS SEMICORRIENTES X E Y LO CONMUTAN']}, + cErasSense: {en: ['Sense line', 'A 1 FLIPS AND SHOWS'], fr: ['Fil de lecture', 'UN 1 BASCULE ET SE VOIT'], es: ['Hilo de lectura', 'UN 1 CAMBIA Y SE VE']}, + cEl: {en: ['Electroluminescent digits', 'REDRAWN EVERY SECOND BY A JOB'], fr: ['Chiffres électroluminescents', 'REDESSINÉS CHAQUE SECONDE PAR UNE TÂCHE'], es: ['Dígitos electroluminiscentes', 'REDIBUJADOS CADA SEGUNDO POR UNA TAREA']}, + cKeys: {en: ['19 keys', 'VERB · NOUN · ENTR'], fr: ['19 touches', 'VERB · NOUN · ENTR'], es: ['19 teclas', 'VERB · NOUN · ENTR']}, + cLogic: {en: ['Logic module A13', '120 FLAT-PACKS, WELDED'], fr: ['Module logique A13', '120 BOÎTIERS PLATS, SOUDÉS'], es: ['Módulo lógico A13', '120 ENCAPSULADOS PLANOS, SOLDADOS']}, + cGate: {en: ['Dual 3-input NOR', 'THE ONLY GATE IN THE MACHINE'], fr: ['Double NOR à 3 entrées', 'LA SEULE PORTE DE LA MACHINE'], es: ['Doble NOR de 3 entradas', 'LA ÚNICA PUERTA DE LA MÁQUINA']}, + // ------------------------------------------------------------ captions + 'cap:hero': {en: 'Apollo 11’s lunar module, five minutes into powered descent. Aldrin has called up Verb 16 Noun 68.', fr: 'Le module lunaire d’Apollo 11, cinq minutes après le début de la descente. Aldrin a demandé Verb 16 Noun 68.', es: 'El módulo lunar del Apolo 11, cinco minutos después de iniciar el descenso. Aldrin ha pedido Verb 16 Noun 68.'}, + 'cap:open': {en: 'Two magnesium trays: tray A is logic, tray B is memory.', fr: 'Deux plateaux en magnésium : le plateau A, la logique ; le plateau B, la mémoire.', es: 'Dos bandejas de magnesio: la bandeja A, la lógica; la bandeja B, la memoria.'}, + 'cap:rope': {en: 'The program lives in six rope modules, woven by hand. Module B1 comes out.', fr: 'Le programme vit dans six modules de rope, tissés à la main. Le module B1 sort.', es: 'El programa vive en seis módulos de rope, tejidos a mano. Sale el módulo B1.'}, + 'cap:rope2': {en: 'One word, CAF NO.CORES: a wire through the core reads 1, a wire around it reads 0.', fr: 'Un mot, CAF NO.CORES : un fil qui traverse le tore lit 1, un fil qui le contourne lit 0.', es: 'Una palabra, CAF NO.CORES: un hilo que atraviesa el núcleo lee 1, uno que lo rodea lee 0.'}, + 'cap:eras': {en: 'Erasable memory: reading a core erases it, so the same cycle writes it back.', fr: 'Mémoire effaçable : lire un tore l’efface, alors le même cycle le réécrit.', es: 'Memoria borrable: leer un núcleo lo borra, así que el mismo ciclo lo reescribe.'}, + 'cap:dsky': {en: 'Back on the DSKY: every digit comes from the descent the computer is flying.', fr: 'Retour au DSKY : chaque chiffre vient de la descente que le calculateur pilote.', es: 'De vuelta al DSKY: cada dígito sale del descenso que el ordenador pilota.'}, + 'cap:exec': {en: 'The rendezvous radar steals 13 % of the cycles. Low-priority jobs never finish, and keep their core sets.', fr: 'Le radar de rendez-vous vole 13 % des cycles. Les tâches peu prioritaires ne finissent pas et gardent leur core set.', es: 'El radar de encuentro roba el 13 % de los ciclos. Las tareas de baja prioridad no terminan y retienen su core set.'}, + 'cap:alarm': {en: '1202: a job asked for a core set and found all eight taken.', fr: '1202 : une tâche a demandé un core set et les a trouvés tous les huit pris.', es: '1202: una tarea pidió un core set y encontró los ocho ocupados.'}, + 'cap:restart': {en: 'Restart: the newest guidance pass is kept, the rest is dropped. The landing goes on.', fr: 'Redémarrage : le dernier passage du guidage est gardé, le reste abandonné. L’atterrissage continue.', es: 'Reinicio: se conserva la última pasada del guiado, se descarta el resto. El alunizaje continúa.'}, + 'cap:ff': {en: 'Fast forward: a second 1202, then high gate.', fr: 'Accéléré : un second 1202, puis le high gate.', es: 'Avance rápido: un segundo 1202, luego el high gate.'}, + 'cap:p64': {en: 'P64, the approach: more alarms, each one a restart that keeps the landing.', fr: 'P64, l’approche : d’autres alarmes, chacune un redémarrage qui garde l’atterrissage.', es: 'P64, la aproximación: más alarmas, cada una un reinicio que mantiene el alunizaje.'}, + 'cap:contact': {en: 'Contact light, 102:45:40.', fr: 'Contact light, 102:45:40.', es: 'Contact light, 102:45:40.'}, + // ------------------------------------------------------------ the live page + 'cap:live:axo': {en: 'Drag to turn, wheel to zoom. Click a subsystem to open it.', fr: 'Glissez pour tourner, molette pour zoomer. Cliquez un sous-système pour l’ouvrir.', es: 'Arrastra para girar, rueda para el zoom. Haz clic en un subsistema para abrirlo.'}, + 'cap:live:rope': {en: 'NOVAC looks for a free core set; each of its words comes out of the rope, one memory cycle at a time.', fr: 'NOVAC cherche un core set libre ; chacun de ses mots sort de la rope, un cycle mémoire à la fois.', es: 'NOVAC busca un core set libre; cada una de sus palabras sale de la rope, un ciclo de memoria a la vez.'}, + 'cap:live:eras': {en: 'CCS PRIORITY reads a core set’s priority word: a destructive read, then the rewrite.', fr: 'CCS PRIORITY lit le mot de priorité d’un core set : lecture destructive, puis réécriture.', es: 'CCS PRIORITY lee la palabra de prioridad de un core set: lectura destructiva y reescritura.'}, + 'cap:live:nor': {en: 'Click A, B or C: the output is 1 only when all three inputs are 0.', fr: 'Cliquez A, B ou C : la sortie vaut 1 seulement quand les trois entrées sont à 0.', es: 'Haz clic en A, B o C: la salida vale 1 solo cuando las tres entradas son 0.'}, + 'cap:live:clock': {en: 'Twelve timing pulses make one memory cycle; everything in the machine is counted in them.', fr: 'Douze impulsions font un cycle mémoire ; tout, dans la machine, se compte en cycles.', es: 'Doce pulsos forman un ciclo de memoria; todo en la máquina se cuenta en ciclos.'}, + 'cap:live:exec': {en: 'Switch the radar off and the 1202 never comes. Key V16 N68 and it comes back.', fr: 'Coupez le radar et le 1202 ne vient jamais. Tapez V16 N68 et il revient.', es: 'Apaga el radar y el 1202 no llega nunca. Teclea V16 N68 y vuelve.'}, + 'cap:live:dsky': {en: 'The DSKY is the crew’s only way in: a verb, a noun, ENTR.', fr: 'Le DSKY est le seul accès de l’équipage : un verbe, un nom, ENTR.', es: 'El DSKY es la única entrada de la tripulación: un verbo, un nombre, ENTR.'}, + 'cap:live:iface': {en: 'Every radar pulse is a counter increment, and every increment steals one memory cycle.', fr: 'Chaque impulsion du radar est un incrément de compteur, et chaque incrément vole un cycle mémoire.', es: 'Cada pulso del radar es un incremento de contador, y cada incremento roba un ciclo de memoria.'}, + radarOn: {en: 'RADAR STEALS: ON (AS FLOWN)', fr: 'VOL DU RADAR : OUI (COMME EN VOL)', es: 'ROBO DEL RADAR: SÍ (COMO EN VUELO)'}, + radarOff: {en: 'RADAR STEALS: OFF', fr: 'VOL DU RADAR : NON', es: 'ROBO DEL RADAR: NO'}, + speed: {en: 'MISSION SPEED', fr: 'VITESSE DE MISSION', es: 'VELOCIDAD DE MISIÓN'}, + restartMission: {en: '↺ PDI + 5 MIN', fr: '↺ PDI + 5 MIN', es: '↺ PDI + 5 MIN'}, + busy: {en: 'REPLANNING THE EXECUTIVE…', fr: 'REPLANIFICATION DE L’EXECUTIVE…', es: 'REPLANIFICANDO EL EXECUTIVE…'}, + tourOn: {en: 'AUTO TOUR · CLICK TO TAKE OVER', fr: 'VISITE AUTO · CLIQUER POUR PRENDRE LA MAIN', es: 'VISITA AUTOMÁTICA · CLIC PARA TOMAR EL CONTROL'}, + tourOff: {en: '▶ RESUME THE TOUR', fr: '▶ REPRENDRE LA VISITE', es: '▶ REANUDAR LA VISITA'}, + turnPhone: {en: 'Turn your phone sideways for the full console', fr: 'Tournez le téléphone pour la console complète', es: 'Gira el teléfono para ver la consola completa'}, + docTitle: {en: 'Rope · the Apollo Guidance Computer, taken apart', fr: 'Rope · l’ordinateur de bord d’Apollo, démonté', es: 'Rope · el ordenador de guiado del Apolo, desmontado'}, + footCredit: { + en: 'A model of the AGC after public sources (MIT Instrumentation Lab, NASA), not affiliated with NASA or MIT', + fr: 'Un modèle de l’AGC d’après les sources publiques (MIT Instrumentation Lab, NASA), sans lien avec la NASA ni le MIT', + es: 'Un modelo del AGC según fuentes públicas (MIT Instrumentation Lab, NASA), sin relación con la NASA ni el MIT', + }, +}; + +/** the string for key in the page's language; extra arguments fill a templated one */ +export const T = makeT(S); diff --git a/machines/rope/agc-shared/live.js b/machines/rope/agc-shared/live.js new file mode 100644 index 0000000..be292fa --- /dev/null +++ b/machines/rope/agc-shared/live.js @@ -0,0 +1,569 @@ +// Rope as a page you drive: the film's machine and overlay, in real time. Seven subsystems (rope, erasable, NOR logic, +// clock, Executive, DSKY, interfaces), three sections (case, trays, module), four views, an orbit you drag and a zoom +// on the wheel, the mission speed from one memory cycle in four seconds to sixty times real time. The DSKY's 19 keys +// work: a verb and a noun go into the Executive's log, which is planned again from that moment, so Verb 16 Noun 68 +// can bring the 1202 back; switching the radar's cycle steals off makes it go away. Left alone, the page plays the +// film's script as an auto tour with the operator's cursor; a click, drag, wheel or key hands control over, 25 s of +// quiet hands it back. +import * as THREE from 'three'; +import {warmComposer} from 'teardown-kit/warm.js'; +import {CUTS, SUBS, VIEWS, createConsole} from './console.js'; +import {loadFonts} from './fonts.js'; +import {CREW_KEYS, EVENTS, GET0, MCT, ROPE_WORDS, bits16, ropePlace} from './machine.js'; +import {jobsAt, simulate} from './executive.js'; +import {DURATION, LOG, SCRIPT, actsAt, camAtName, missionAt, rateAt, ERAS_JOB, ERAS_MCT, ROPE_MCT} from './schedule.js'; +import {L} from './agc.js'; +import {VIEW_FN, calloutsFor, camAt, captionAt, detailFor, dskyText, machineState, makeCursor, prioWord, rateText, smoother, ss} from './film.js'; +import {createStage} from './stage.js'; +import {createChrome} from '../../../shared/chrome.js'; +import {LANG, T as tr} from './i18n.js'; + +const W = 1600; +const H = 900; +const IDLE = 25; +const D2R = Math.PI / 180; +const clamp = (x, a, b) => Math.min(b, Math.max(a, x)); +const wrap = (d) => ((((d + 180) % 360) + 360) % 360) - 180; +const RATES = [{k: 'mct', r: MCT / 4, label: '1 MCT / 4 S'}, {k: '1', r: 1, label: '×1'}, {k: '10', r: 10, label: '×10'}, {k: '60', r: 60, label: '×60'}]; +const VIEW_OF_SUB = {rope: 'rope', eras: 'eras', nor: 'logic', clock: 'open', exec: 'exec', dsky: 'dsky', iface: 'exec'}; + +const CSS = (top) => ` +html,body{margin:0;background:#efe8d8;overflow:hidden} +#app{position:absolute!important;inset:auto!important;left:0;top:0;width:${W}px;height:${H}px;transform-origin:0 0} +#gl{touch-action:none;cursor:grab} +#gl.drag{cursor:grabbing} +.tb{pointer-events:auto;cursor:pointer} +.tb:hover{filter:brightness(.96)} +.hit{position:absolute;pointer-events:auto;cursor:pointer} +.tourchip{position:absolute;left:800px;top:${92 + top}px;transform:translateX(-50%);display:flex;align-items:center;gap:8px;height:26px;padding:0 13px;border:1px solid rgba(70,58,40,.55);background:rgba(241,235,221,.95);color:#2b2925;font:600 13px 'Barlow Condensed',sans-serif;letter-spacing:1.8px;white-space:nowrap;cursor:pointer;pointer-events:auto} +.tourchip i{display:block;width:7px;height:7px;border-radius:50%;background:#1f8a4c} +.tourchip.on i{animation:blink 1.2s steps(2) infinite} +@keyframes blink{50%{opacity:.15}} +.turn{position:fixed;left:0;right:0;bottom:40px;text-align:center;font:600 14px/1.4 'Barlow Condensed',sans-serif;letter-spacing:1.5px;color:#7a7062;text-transform:uppercase;display:none} +@media (orientation:portrait) and (max-width:820px){.turn{display:block}} +.busy{position:absolute;left:800px;top:440px;transform:translateX(-50%);padding:8px 14px;background:rgba(241,235,221,.96);border:1px solid rgba(70,58,40,.55);font:600 14px 'Barlow Condensed',sans-serif;letter-spacing:1.6px;color:#2b2925;display:none} +#app .cap{top:732px} +`; + +export async function runLive() { + const style = document.createElement('style'); + style.textContent = CSS(0); + document.head.appendChild(style); + document.title = tr('docTitle'); + document.documentElement.lang = LANG; + await loadFonts(); + const app = document.getElementById('app'); + const canvas = document.createElement('canvas'); + canvas.id = 'gl'; + app.appendChild(canvas); + const st = createStage({canvas}); + const ui = createConsole(app); + const tourCursor = makeCursor(ui); + + // ------------------------------------------------------------ quality tiers + const TIERS = [ + {samples: 8, shadow: 4096, pr: 2}, + {samples: 4, shadow: 2048, pr: 1.5}, + {samples: 0, shadow: 1024, pr: 1}, + ]; + const light = matchMedia('(pointer: coarse)').matches || Math.min(innerWidth, innerHeight) < 700; + let tier = light ? 2 : 0; + let scale = 1; + const chrome = createChrome({slug: 'rope', name: 'Rope', credit: tr('footCredit')}); + const fit = () => { + const {top, bottom} = chrome.heights(); + const h = innerHeight - top - bottom; + scale = Math.min(innerWidth / W, h / H); + app.style.transform = `translate(${(innerWidth - W * scale) / 2}px, ${top + (h - H * scale) / 2}px) scale(${scale})`; + st.resize(W, H, clamp((devicePixelRatio || 1) * scale, 0.75, TIERS[tier].pr)); + }; + const applyTier = () => { + const {pr, ...q} = TIERS[tier]; + st.setQuality(q); + fit(); + }; + applyTier(); + addEventListener('resize', fit); + const toStage = (cx, cy) => { + const r = app.getBoundingClientRect(); + return [(cx - r.left) / scale, (cy - r.top) / scale]; + }; + const tourChip = document.createElement('div'); + tourChip.className = 'tourchip'; + ui.root.appendChild(tourChip); + const busy = document.createElement('div'); + busy.className = 'busy'; + busy.textContent = tr('busy'); + ui.root.appendChild(busy); + const note = document.createElement('div'); + note.className = 'turn'; + note.textContent = tr('turnPhone'); + document.body.appendChild(note); + + // live controls: mission speed, the radar, back to PDI + 5 min + const ctl = {}; + const mk = (key, x, w, html) => { + const n = document.createElement('div'); + n.className = 'tb'; + Object.assign(n.style, {left: `${x}px`, top: '788px', width: `${w}px`, height: '26px', fontSize: '13px'}); + n.innerHTML = html; + ui.root.appendChild(n); + ctl[key] = n; + return n; + }; + { + const lab = document.createElement('div'); + lab.className = 'gl'; + Object.assign(lab.style, {left: '372px', top: '770px'}); + lab.textContent = tr('speed'); + ui.root.appendChild(lab); + } + RATES.forEach((r, i) => mk('rate' + i, 372 + i * 92, 86, r.label)); + mk('radar', 750, 250, tr('radarOn')); + mk('reset', 1010, 208, tr('restartMission')); + + // ------------------------------------------------------------ the mission: the log, re-planned on the visitor's keys + let radar = true; + let userKeys = []; + let cutKeys = Infinity; // the crew's own keys stop where the visitor took over the keyboard + let log = LOG; + const replan = () => { + busy.style.display = 'block'; + requestAnimationFrame(() => + setTimeout(() => { + log = simulate({keys: [...CREW_KEYS.filter((k) => k[0] < cutKeys), ...userKeys], radar}); + busy.style.display = 'none'; + }, 0), + ); + }; + let s = 306.4; + let rateI = 1; + let T = 0; + + // ------------------------------------------------------------ state + let paused = false; + let view = 'hero'; + let viewAt = 0; + let sub = ''; + let cut = ''; + const off = {az: 0, el: 0, k: 1}; + const cam = {...VIEW_FN.hero(0)}; + const mech = {open: 0, rope: 0, ropeCover: 0, eras: 0, logic: 0, gate: 0}; + let ring = {t: -9, x: 0, y: 0}; + let hidden = false; + let norIn = [0, 0, 0]; + const press = {}; + const pulse = (x, y) => (ring = {t: T, x, y}); + const pulseBtn = (k) => pulse(...(ui.spots[k] || [800, 450])); + + // ------------------------------------------------------------ the tour + const AP = {on: true, t0: 0, loop: 0}; + let lastInput = 0; + const startTour = () => { + AP.on = true; + AP.t0 = T; + AP.loop = 0; + paused = false; + Object.assign(off, {az: 0, el: 0, k: 1}); + if (log !== LOG || radar !== true) { + radar = true; + userKeys = []; + cutKeys = Infinity; + log = LOG; + } + }; + const takeOver = () => { + lastInput = T; + if (!AP.on) return; + AP.on = false; + const cyc = (T - AP.t0) % DURATION; + s = missionAt(cyc); + const name = camAtName(cyc); + view = name; + viewAt = T - (cyc - SCRIPT.filter((e) => e.cam && e.t <= cyc).pop().t); + sub = {rope: 'rope', eras: 'eras', dsky: 'dsky', exec: 'exec'}[name] || ''; + const a = actsAt(cyc); + Object.assign(mech, {open: a.open, rope: a.rope, ropeCover: a.ropeCover, eras: a.eras, logic: 0, gate: 0}); + cut = a.open > 0.5 ? 'tray' : ''; + rateI = rateAt(cyc) < 0.01 ? 0 : 1; + }; + tourChip.addEventListener('pointerdown', (e) => { + e.stopPropagation(); + lastInput = T; + if (AP.on) takeOver(); + else startTour(); + }); + addEventListener('pointerdown', (e) => { + if (e.target !== tourChip) takeOver(); + }); + + // ------------------------------------------------------------ controls + const setView = (v) => { + view = v; + viewAt = T; + Object.assign(off, {az: 0, el: 0, k: 1}); + }; + for (const k of SUBS) + ui.btn[k].addEventListener('click', () => { + takeOver(); + pulseBtn(k); + sub = sub === k && k !== 'dsky' ? '' : k; + if (sub) { + if (['rope', 'eras', 'nor', 'clock', 'exec', 'iface'].includes(sub)) cut = sub === 'exec' || sub === 'clock' || sub === 'iface' ? 'tray' : 'module'; + setView(VIEW_OF_SUB[sub]); + rateI = sub === 'rope' || sub === 'eras' ? 0 : rateI === 0 ? 1 : rateI; + } else setView(mech.open > 0.5 ? 'open' : 'hero'); + }); + for (const k of CUTS) + ui.btn[k].addEventListener('click', () => { + takeOver(); + pulseBtn(k); + cut = cut === k ? '' : k; + if (cut === 'case') setView('hero'); + else if (cut === 'tray') setView(sub === 'nor' || sub === 'rope' || sub === 'eras' ? 'open' : view === 'hero' ? 'open' : view); + else if (cut === 'module') { + if (!['rope', 'eras', 'nor'].includes(sub)) sub = 'rope'; + setView(VIEW_OF_SUB[sub]); + } else setView('hero'); + }); + for (const k of VIEWS) + ui.btn[k].addEventListener('click', () => { + takeOver(); + pulseBtn(k); + if (k === 'axo') setView(mech.open > 0.5 || cut === 'tray' || cut === 'module' ? 'open' : 'hero'); + else if (k === 'dskyFace') { + sub = 'dsky'; + setView('dsky'); + } else if (k === 'ropeIn') { + sub = 'rope'; + cut = 'module'; + rateI = 0; + setView('rope'); + } else if (k === 'graze') { + if (!cut || cut === 'case') cut = 'tray'; + setView('graze'); + } + }); + RATES.forEach((r, i) => + ctl['rate' + i].addEventListener('click', () => { + takeOver(); + rateI = i; + pulse(...centreOf(ctl['rate' + i])); + }), + ); + ctl.radar.addEventListener('click', () => { + takeOver(); + radar = !radar; + pulse(...centreOf(ctl.radar)); + replan(); + }); + ctl.reset.addEventListener('click', () => { + takeOver(); + s = 300; + userKeys = []; + cutKeys = Infinity; + log = LOG; + if (!radar) replan(); + pulse(...centreOf(ctl.reset)); + }); + const centreOf = (n) => [parseFloat(n.style.left) + parseFloat(n.style.width) / 2, parseFloat(n.style.top) + 13]; + // NOR inputs: three hit areas over the schematic's A, B, C + for (let i = 0; i < 3; i++) { + const d = document.createElement('div'); + d.className = 'hit'; + Object.assign(d.style, {left: `${34 + 14 + 60 + i * 60 - 50}px`, top: `${452 + 36 + 124 - 16}px`, width: '36px', height: '32px'}); + d.addEventListener('click', () => { + if (sub !== 'nor') return; + takeOver(); + norIn[i] = norIn[i] ? 0 : 1; + pulse(34 + 14 + 60 + i * 60 - 32, 452 + 36 + 124); + }); + ui.root.appendChild(d); + } + // the DSKY's keys, by raycast on the 3D face + const ray = new THREE.Raycaster(); + const keyMeshes = Object.values(st.mac.dsky.keys); + const keyAt = (cx, cy) => { + const [x, y] = toStage(cx, cy); + ray.setFromCamera(new THREE.Vector2((x / W) * 2 - 1, -(y / H) * 2 + 1), st.camera); + const hit = ray.intersectObjects(keyMeshes, false)[0]; + return hit?.object.userData.key || null; + }; + const pressKey = (k) => { + if (cutKeys === Infinity) cutKeys = s; + userKeys.push([s + 0.001, k]); + press[k] = T; + replan(); + }; + addEventListener('keydown', (e) => { + if (e.altKey || e.ctrlKey || e.metaKey) return; + const key = e.key.toLowerCase(); + takeOver(); + if (key === ' ') paused = !paused; + else if (key === 'h') hidden = !hidden; + else if (/^[1-7]$/.test(key)) ui.btn[SUBS[+key - 1]].click(); + else return; + e.preventDefault(); + }); + let drag = null; + canvas.addEventListener('pointerdown', (e) => { + const k = keyAt(e.clientX, e.clientY); + if (k) { + takeOver(); + pressKey(k); + return; + } + drag = {x: e.clientX, y: e.clientY}; + canvas.setPointerCapture(e.pointerId); + canvas.classList.add('drag'); + }); + canvas.addEventListener('pointermove', (e) => { + if (!drag) { + canvas.style.cursor = keyAt(e.clientX, e.clientY) ? 'pointer' : ''; + return; + } + off.az += ((e.clientX - drag.x) / scale) * 0.25; + off.el = clamp(off.el + ((e.clientY - drag.y) / scale) * 0.18, -20, 50); + drag = {x: e.clientX, y: e.clientY}; + lastInput = T; + }); + const endDrag = () => { + drag = null; + canvas.classList.remove('drag'); + }; + canvas.addEventListener('pointerup', endDrag); + canvas.addEventListener('pointercancel', endDrag); + canvas.addEventListener( + 'wheel', + (e) => { + e.preventDefault(); + takeOver(); + off.k = clamp(off.k * Math.exp(e.deltaY * 0.0012), 0.35, 2.6); + }, + {passive: false}, + ); + + // ------------------------------------------------------------ loops of the live subsystems + const ROPE_LOOP = [0o2625, 0o2626, 0o2627, 0o2630, 0o2631, 0o2632, 0o2633]; + const ropeLoop = (t) => { + const n = Math.floor(t / 3.2); + const addr = ROPE_LOOP[n % ROPE_LOOP.length]; + const w = ROPE_WORDS.findIndex((x) => x.bank === 1 && x.addr === addr); + return {phase: (t / 3.2) % 1, w, core: 4 + (addr - 0o2627), place: ropePlace(1, addr)}; + }; + + // ------------------------------------------------------------ the frame + startTour(); + let last = performance.now(); + const perf = {n: 0, sum: 0, slow: 0, age: 0}; + const ease = (key, want, dt, tau = 0.5) => (mech[key] += (want - mech[key]) * (1 - Math.exp(-dt / tau))); + const frame = (now) => { + const dt = Math.min(0.1, Math.max(0, (now - last) / 1000)); + last = now; + T += dt; + if (tier < TIERS.length - 1) { + perf.age += dt; + if (perf.age > 0.6) { + perf.sum += dt; + perf.n++; + if (perf.sum >= 0.5 && perf.n >= 6) { + perf.slow = perf.sum / perf.n > 0.022 ? perf.slow + 1 : 0; + perf.sum = 0; + perf.n = 0; + if (perf.slow >= (perf.age < 6 ? 1 : 2)) { + tier++; + applyTier(); + Object.assign(perf, {age: 0, slow: 0}); + } + } + } + } + let fx; + let tgt; + let ms; + let det; + let callouts; + let cursor; + let caption; + let rateTxt; + let curView; + let pressNow = {}; + if (AP.on) { + // the film, exactly + const c = T - AP.t0; + const loop = Math.floor(c / DURATION); + const cyc = c - loop * DURATION; + if (loop > AP.loop) AP.loop = loop; + s = missionAt(cyc); + curView = camAtName(cyc); + const t0 = SCRIPT.filter((e) => e.cam && e.t <= cyc).pop().t; + const since = cyc - t0; + ms = machineState(LOG, s); + const acts = actsAt(cyc); + const ropePhase = (s - ROPE_MCT * MCT) / MCT; + const erasPhase = (s - ERAS_MCT * MCT) / MCT; + for (const [ks, k] of LOG.keyEv) { + const d = s - ks; + if (d >= 0 && d < 0.25) pressNow[k] = Math.max(pressNow[k] || 0, 1 - d / 0.25); + } + fx = { + ...acts, + read: {phase: ropePhase >= 0 && ropePhase < 1 ? ropePhase : -1}, + erasRead: {phase: erasPhase >= 0 && erasPhase < 1 ? erasPhase : -1, bit: bits16(prioWord(ERAS_JOB?.kind))[1]}, + rr: curView === 'exec' || curView === 'hero' ? 0.25 + 0.25 * Math.sin(T * 9) : 0, + dsky: {lamps: ms.dsky.lamps, el: ms.dsky, press: pressNow}, + }; + st.mac.update(fx); + tgt = camAt(cyc, st.mac.anchors); + Object.assign(mech, {open: acts.open, rope: acts.rope, ropeCover: acts.ropeCover, eras: acts.eras, logic: 0, gate: 0}); + det = + curView === 'rope' + ? detailFor('rope', s, ms, {ropePhase}) + : curView === 'eras' + ? detailFor('eras', s, ms, {erasPhase, erasJob: ERAS_JOB?.kind, erasSet: 0}) + : curView === 'dsky' + ? detailFor('dsky', s, ms) + : curView === 'exec' + ? detailFor('iface', s, ms, {radar: true}) + : detailFor('clock', s, ms); + const inside = curView === 'rope' ? ss(3.0, 4.2, since) : curView === 'eras' ? ss(2.0, 3.0, since) : 0; + callouts = calloutsFor(curView, st, ss(1.2, 1.9, since), {inside, rrHot: true}); + cursor = tourCursor(cyc); + if (AP.loop > 0 && cyc < 0.8) { + const end = tourCursor(DURATION - 0.01); + const k = ss(0, 0.8, cyc); + cursor = {...cursor, x: end.x + (cursor.x - end.x) * k, y: end.y + (cursor.y - end.y) * k}; + } + caption = captionAt(cyc); + rateTxt = rateText(rateAt(cyc)); + } else { + if (T - lastInput > IDLE) startTour(); + const since = T - viewAt; + curView = view; + if (!paused) s += RATES[rateI].r * dt; + if (s > EVENTS.contact + 6) s = 300; + ms = machineState(log, s); + // mechanisms toward the section and the subsystem + const open = cut === 'tray' || cut === 'module' || ['rope', 'eras', 'nor', 'graze'].includes(view) || (sub && sub !== 'dsky') ? 1 : 0; + ease('open', open, dt, 0.55); + const ready = mech.open > 0.97; + ease('rope', ready && (sub === 'rope' || view === 'rope') ? 1 : 0, dt, 0.45); + ease('ropeCover', mech.rope > 0.95 && (sub === 'rope' || view === 'rope') ? 1 : 0, dt, 0.3); + ease('eras', ready && sub === 'eras' ? 1 : 0, dt, 0.45); + ease('logic', ready && sub === 'nor' ? 1 : 0, dt, 0.45); + ease('gate', mech.logic > 0.9 && sub === 'nor' ? 1 : 0, dt, 0.35); + const inRope = mech.ropeCover > 0.97 && view === 'rope'; + const rl = ropeLoop(T); + const eLoopN = Math.floor(T / 4); + const eSet = eLoopN % 8; + const eJob = jobsAt(log, s)[eSet]; + const erasPhase = sub === 'eras' && mech.eras > 0.95 ? (T / 4) % 1 : -1; + for (const [k, t] of Object.entries(press)) { + const d = T - t; + if (d >= 0 && d < 0.25) pressNow[k] = 1 - d / 0.25; + } + for (const [ks, k] of log.keyEv) { + const d = s - ks; + if (d >= 0 && d < 0.25 && RATES[rateI].r <= 1) pressNow[k] = Math.max(pressNow[k] || 0, 1 - d / 0.25); + } + fx = { + ...mech, + ropeDetail: inRope ? 1 : 0, + read: {phase: inRope ? rl.phase : -1, core: rl.core}, + erasRead: {phase: erasPhase, bit: bits16(prioWord(eJob?.kind))[1]}, + cut: cut === 'case' ? 'case' : '', + rr: (sub === 'iface' || sub === 'exec') && radar ? 0.25 + 0.25 * Math.sin(T * 9) : 0, + dsky: {lamps: ms.dsky.lamps, el: ms.dsky, press: pressNow}, + }; + st.mac.update(fx); + const fn = VIEW_FN[curView] || VIEW_FN.hero; + tgt = fn(curView === 'rope' && !inRope && mech.rope < 0.9 ? Math.min(since, 1.0) : since, st.mac.anchors); + tgt.az += off.az; + tgt.el = clamp(tgt.el + off.el, -10, 85); + tgt.d *= off.k; + const kind = sub || 'clock'; + det = + kind === 'rope' + ? detailFor('rope', s, ms, {ropePhase: inRope ? rl.phase : -1, ropeW: rl.w, place: rl.place}) + : kind === 'eras' + ? detailFor('eras', s, ms, {erasPhase, erasJob: eJob?.kind, erasSet: eSet}) + : kind === 'nor' + ? detailFor('nor', s, ms, {norIn}) + : kind === 'iface' + ? detailFor('iface', s, ms, {radar}) + : detailFor(kind, s, ms); + const inside = curView === 'rope' ? (inRope ? 1 : 0) : curView === 'eras' ? ss(2.0, 3.0, since) : 0; + callouts = calloutsFor(curView, st, ss(1.2, 1.9, since), {inside, rrHot: radar}); + const rk = Math.max(0, 1 - (T - ring.t) / 0.55); + cursor = {x: -99, y: -99, press: false, ring: rk, ringX: ring.x, ringY: ring.y}; + caption = tr('cap:live:' + (sub || 'axo')); + rateTxt = paused ? '‖' : rateText(RATES[rateI].r); + } + // the camera eases toward its target, logarithmically in distance (metres down to centimetres) + const k = 1 - Math.exp(-dt / (AP.on ? 0.1 : 0.35)); + cam.az += wrap(tgt.az - cam.az) * k; + for (const key of ['tx', 'ty', 'tz', 'el', 'sx', 'sy']) cam[key] += ((tgt[key] ?? 0) - (cam[key] ?? 0)) * k; + cam.d = Math.exp(Math.log(cam.d) + (Math.log(tgt.d) - Math.log(cam.d)) * k); + st.frame(fx, {...cam, az: cam.az * D2R, el: cam.el * D2R}); + + ui.root.style.display = hidden ? 'none' : ''; + ui.update({ + get: GET0 + s, + mct: s / MCT, + rateText: rateTxt, + dsky: ms.dsky, + dskyText: dskyText(ms.d, ms.ds), + sets: ms.sets, + vacs: ms.vacs, + busy: ms.busy, + duty: ms.duty, + strip: ms.strip, + stripAt: 84, + alarm: ms.alarm, + execNote: tr('execWait'), + detail: det, + caption, + sub: AP.on ? {rope: 'rope', eras: 'eras', dsky: 'dsky', exec: 'exec'}[curView] || '' : sub, + cut: AP.on ? (mech.open > 0.5 ? 'tray' : '') : cut, + view: AP.on ? '' : {open: 'axo', hero: 'axo', dsky: 'dskyFace', rope: 'ropeIn', graze: 'graze'}[curView] || '', + callouts, + cursor, + }); + RATES.forEach((r, i) => ctl['rate' + i].classList.toggle('on', !AP.on && i === rateI && !paused)); + const rt = radar ? tr('radarOn') : tr('radarOff'); + if (ctl.radar.textContent !== rt) ctl.radar.textContent = rt; + if (tourChip.classList.contains('on') !== AP.on || !tourChip.firstChild) { + tourChip.classList.toggle('on', AP.on); + tourChip.innerHTML = AP.on ? `${tr('tourOn')}` : tr('tourOff'); + } + if (!window.SIM_SHOWN) { + window.SIM_SHOWN = true; + dispatchEvent(new Event('simframe')); + } + requestAnimationFrame(frame); + }; + // the first pose before warming, so every program the frame needs exists + st.mac.update({...mech, ropeDetail: 1, dsky: {lamps: {}, el: machineState(LOG, s).dsky, press: {}}}); + warmComposer(st.renderer, st.composer, st.scene, st.camera).then(() => requestAnimationFrame(frame)); + window.LIVE = { + st, + cam, + startTour, + takeOver, + pressKey, + get tier() { + return tier; + }, + get T() { + return T; + }, + get s() { + return s; + }, + get log() { + return log; + }, + }; + void smoother; + void L; +} diff --git a/machines/rope/agc-shared/machine.js b/machines/rope/agc-shared/machine.js new file mode 100644 index 0000000..3d322af --- /dev/null +++ b/machines/rope/agc-shared/machine.js @@ -0,0 +1,285 @@ +// Rope's one source of figures: the Apollo Guidance Computer Block II (the LM's LGC, Luminary 099, Apollo 11), its +// memories, its clock, its Executive and the descent it flew. No three.js here: the geometry (agc.js), the console, +// the score and check.mjs all read these numbers. Letters refer to REFERENCES.md; [E] marks an estimate. +// +// The one input of the machine is the mission time, counted in memory cycles (MCT) since powered descent initiation +// (PDI, 102:33:05 GET). Everything on screen is a function of it: the word in the rope, the core sets, the lamps, +// VERB / NOUN / PROG and R1-R3 on the DSKY. + +// ------------------------------------------------------------ the computer [W] [S] [H] +export const AGC = { + wordBits: 16, // 15 data bits + 1 odd-parity bit [W] [S] + dataBits: 15, + fixedWords: 36864, // core rope [W] + ropeModules: 6, // B1-B6 [S] + coresPerModule: 512, // 2 layers of 256 [S] + wordsPerCore: 12, // 12 strands of 16 sense lines = 192 lines through or around each core [S] + senseLinesPerCore: 192, + bankWords: 1024, // a fixed bank: 36 banks [V] + erasableWords: 2048, // coincident-current ferrite cores [W] + clockHz: 2.048e6, // crystal [W] + pulsesPerMct: 12, // timing pulses T1-T12, at 1.024 MHz [H] + addMct: 2, // AD: 2 MCT [H] + ics: 2800, // ~2,800 flat-packs, dual 3-input NOR gates [W] + gatesPerIc: 2, + norInputs: 3, + logicModules: 24, // A1-A24, ~120 flat-packs each; A25-A31 interface [S] + massKg: 32, // 70 lb [W] + powerW: 55, // [W] + sizeIn: [24, 12.5, 6.5], // [W] + sizeM: [0.61, 0.32, 0.17], // length, width, height + dskyM: [0.203, 0.203, 0.178], // LM DSKY, 8 x 8 x 7 in [D] +}; +/** one memory cycle: 12 pulses of the 1.024 MHz timing chain (the 2.048 MHz clock halved) */ +export const MCT = AGC.pulsesPerMct / (AGC.clockHz / 2); // 11.71875 µs +export const MCT_PER_S = 1 / MCT; // 85,333 +export const ADD_US = AGC.addMct * MCT * 1e6; // 23.4 µs +export const ADDS_PER_S = 1 / (AGC.addMct * MCT); // 42,667 +export const FIXED_BITS = AGC.fixedWords * AGC.wordBits; // 589,824 +export const ERASABLE_BITS = AGC.erasableWords * AGC.wordBits; // 32,768 +export const WORDS_PER_MODULE = AGC.coresPerModule * AGC.wordsPerCore; // 6,144 + +// ------------------------------------------------------------ the Executive and the radar [E1] [L] +export const EXEC = { + coreSets: 8, // "EIGHT SETS OF 12 REGISTERS EACH" (Luminary 099, ERASABLE_ASSIGNMENTS) [L] [E1] + vacAreas: 5, // [L] [E1] + servicerPeriod: 2, // s, average-G navigation cycle (READACCS) [E1] + // the duty cycle each phase needs, of the whole machine [E1]: margin over 15 % in braking until the landing + // radar locks, ~13 % after (converting its data), 10 % or less with Verb 16 Noun 68 on the DSKY; under 10 % in P64 + braking: 0.85, + lrConvert: 0.015, + n68: 0.03, + approach: [0.835, 0.9], // P64, essential functions only, high gate to P66: the margin falls below 10 % [E1] [E] + manual: 0.8, // P66, lighter [E1] [E] + // the rendezvous radar's CDUs: 2 angles x 6,400 pulses/s at most, one MCT stolen per pulse [E1] + rrPulses: 6400, + rrAngles: 2, + tlossMax: 0.1336, // measured after the flight [E1] + tloss: 0.13, // the value MIT used to reproduce the flight [E1] + // the job mix of this model (which jobs hold a core set and how often they come) is simplified [E] + monitorPeriod: 1, // s, a Verb 16 monitor redisplays every second [P] + approachJobs: 0.06, // P64: the landing-point-designator display job, each 2 s, s of CPU [E] +}; +export const TLOSS_THEORY = EXEC.rrAngles * EXEC.rrPulses * MCT; // 15.0 % + +// ------------------------------------------------------------ the descent of Apollo 11 [J] [R] +export const GET0 = 102 * 3600 + 33 * 60 + 5; // PDI, 102:33:05 GET [R] +export const EVENTS = { + vel: 288, // landing radar velocity data good [E] + alt: 296, // "Altitude light's out", 102:38:11 [J] + p64: 507, // high gate, 102:41:32, 7,400 ft [E1] + p66: 603, // ATT HOLD, P66, 102:43:08 [E1] + lrDrop: 668, // "Altitude (and) velocity lights" 102:44:13 [J] + lrBack: 674, + contact: 755, // "Contact light", 102:45:40 [J] +}; +/** the Apollo 11 alarms as flown, s after PDI, to compare with the model's [R] [E1] */ +export const FLOWN_ALARMS = [ + [317, 1202], // 102:38:22 + [357, 1202], // 102:39:02 + [553, 1201], // 102:42:18 + [578, 1202], // 102:42:43 + [593, 1202], // 102:42:58 +]; +// altitude (ft) and horizontal speed (ft/s) against s after PDI: the crew's call-outs [J]; before high gate, where +// nobody called numbers, a smooth braking profile through the published points (33,500 ft at the first alarm, +// 7,400 ft at high gate) [E] +const ALT_KEYS = [ + [0, 50000], [120, 47200], [240, 40400], [317, 33500], [400, 22500], [460, 14000], [507, 7400], [526, 5000], + [545, 3000], [556, 2000], [598, 750], [602, 700], [606, 600], [611, 540], [621, 400], [628, 350], [641, 300], + [662, 250], [671, 220], [679, 200], [686, 160], [695, 120], [700, 100], [709, 75], [732, 40], [736, 30], [755, 5], [760, 0], +]; +const VH_KEYS = [ + [0, 5560], [120, 4610], [240, 3480], [317, 2700], [400, 1640], [460, 960], [507, 470], [545, 230], [598, 90], + [621, 58], [641, 47], [662, 19], [671, 13], [679, 11], [700, 9], [709, 6], [736, 2], [755, 0.5], [760, 0], +]; +const LPD_KEYS = [[507, 47], [560, 40], [602, 33], [611, 30], [640, 30]]; // LPD angle, degrees [J] [E] + +/** Fritsch-Carlson monotone cubic through keys [[x, y]] */ +export function monotone(keys) { + const n = keys.length; + const x = keys.map((k) => k[0]); + const y = keys.map((k) => k[1]); + const d = []; + const m = new Array(n).fill(0); + for (let i = 0; i < n - 1; i++) d.push((y[i + 1] - y[i]) / (x[i + 1] - x[i])); + m[0] = d[0]; + m[n - 1] = d[n - 2]; + for (let i = 1; i < n - 1; i++) m[i] = d[i - 1] * d[i] <= 0 ? 0 : (3 * (d[i - 1] + d[i])) / ((2 * d[i] + d[i - 1]) / d[i - 1] + (d[i] + 2 * d[i - 1]) / d[i]); + const f = (t) => { + if (t <= x[0]) return y[0] + m[0] * (t - x[0]); + if (t >= x[n - 1]) return y[n - 1]; + let i = 0; + while (t > x[i + 1]) i++; + const h = x[i + 1] - x[i]; + const s = (t - x[i]) / h; + const s2 = s * s; + const s3 = s2 * s; + return (2 * s3 - 3 * s2 + 1) * y[i] + (s3 - 2 * s2 + s) * h * m[i] + (-2 * s3 + 3 * s2) * y[i + 1] + (s3 - s2) * h * m[i + 1]; + }; + return f; +} +const altF = monotone(ALT_KEYS); +const vhF = monotone(VH_KEYS); +const lpdF = monotone(LPD_KEYS); +const END = 760; +// range still to fly, tabulated once: ∫ vh dt from s to the touchdown point +const RNG_DT = 0.25; +const RNG = (() => { + const n = Math.ceil(END / RNG_DT) + 1; + const r = new Float64Array(n); + for (let i = n - 2; i >= 0; i--) r[i] = r[i + 1] + 0.5 * (vhF(i * RNG_DT) + vhF((i + 1) * RNG_DT)) * RNG_DT; + return r; +})(); +const FT_PER_NM = 6076.12; +const clamp = (x, a, b) => Math.min(b, Math.max(a, x)); + +/** the LM's state s seconds after PDI: altitude (ft), its rate (ft/s), horizontal and total speed, range (ft) */ +export function descent(s) { + const t = clamp(s, 0, END); + const h = Math.max(0, altF(t)); + const hdot = t >= END ? 0 : (altF(Math.min(END, t + 0.5)) - altF(Math.max(0, t - 0.5))) / (Math.min(END, t + 0.5) - Math.max(0, t - 0.5)); + const vh = Math.max(0, vhF(t)); + const i = Math.floor(t / RNG_DT); + const k = t / RNG_DT - i; + const range = i >= RNG.length - 1 ? 0 : RNG[i] * (1 - k) + RNG[i + 1] * k; + // Delta-H: landing-radar altitude minus computed altitude, -2,900 ft when the radar locked [J], then incorporated [E] + const dH = t < EVENTS.alt ? -2900 : -2900 * Math.exp(-(t - EVENTS.alt) / 38); + return {s: t, h, hdot, vh, v: Math.hypot(vh, hdot), range, slantNm: Math.hypot(range, h) / FT_PER_NM, dH, lpd: lpdF(t), tgo: Math.max(0, EVENTS.p64 - t)}; +} +export const DESCENT_END = END; + +// ------------------------------------------------------------ the rope: real words of Luminary 099 [L] +// Assembled words of the Executive's NOVAC (find a core set) and of BAILOUT1, from the Virtual AGC listing of +// Luminary 099 (bank, address, octal word, label, instruction). 15 bits each; the 16th, odd parity, is computed. +export const ROPE_WORDS = [ + [1, 0o2625, 0o34755, 'NOVAC2', 'CAF ZERO'], + [1, 0o2626, 0o54064, '', 'TS LOCCTR'], + [1, 0o2627, 0o32634, '', 'CAF NO.CORES'], + [1, 0o2630, 0o54062, 'NOVAC3', 'TS EXECTEM2'], + [1, 0o2631, 0o50064, '', 'INDEX LOCCTR'], + [1, 0o2632, 0o10167, '', 'CCS PRIORITY'], + [1, 0o2633, 0o12674, '', 'TCF NEXTCORE'], + [1, 0o2634, 0o00007, 'NO.CORES', 'DEC 7'], + [1, 0o2635, 0o12674, '', 'TCF NEXTCORE'], + [1, 0o2636, 0o30063, 'CORFOUND', 'CA NEWPRIO'], + [1, 0o2637, 0o50064, '', 'INDEX LOCCTR'], + [1, 0o2640, 0o54167, '', 'TS PRIORITY'], + [1, 0o2641, 0o75004, '', 'MASK LOW9'], + [1, 0o2642, 0o50064, '', 'INDEX LOCCTR'], + [1, 0o2643, 0o54166, '', 'TS PUSHLOC'], + [1, 0o2674, 0o33033, 'NEXTCORE', 'CAF COREINC'], + [1, 0o2675, 0o26064, '', 'ADS LOCCTR'], + [1, 0o2676, 0o10062, '', 'CCS EXECTEM2'], + [1, 0o2677, 0o12630, '', 'TCF NOVAC3'], + [1, 0o2700, 0o22061, '', 'LXCH EXECTEM1'], + [1, 0o2701, 0o30002, '', 'CA Q'], + [1, 0o2702, 0o05716, '', 'TC BAILOUT1'], + [1, 0o2703, 0o01202, '', 'OCT 1202'], + [2, 0o5716, 0o00004, 'BAILOUT1', 'INHINT'], + [2, 0o5717, 0o53364, '', 'DXCH ALMCADR'], + [2, 0o5720, 0o35742, '', 'CAF ADR40400'], + [2, 0o5721, 0o54061, 'BOTHABRT', 'TS ITEMP1'], + [2, 0o5722, 0o50002, '', 'INDEX Q'], + [2, 0o5723, 0o30000, '', 'CAF 0'], +].map(([bank, addr, word, label, op]) => ({bank, addr, word, label, op, parity: parityBit(word), bits: bits16(word)})); +// the rest of bank 01 around NOVAC2, for the cores either side of the ones above [L] +export const ROPE_NEIGHBOURS = {0o2616: 0o05716, 0o2617: 0o01201, 0o2620: 0o64752, 0o2621: 0o22007, 0o2622: 0o50000, 0o2623: 0o21777, 0o2624: 0o26063}; + +/** odd parity: the 16th bit makes the count of ones odd */ +export function parityBit(w) { + let n = 0; + for (let b = 0; b < 15; b++) n += (w >> b) & 1; + return n % 2 === 0 ? 1 : 0; +} +/** the 16 bits as stored, most significant data bit first, parity last */ +export function bits16(w) { + const out = []; + for (let b = 14; b >= 0; b--) out.push((w >> b) & 1); + out.push(parityBit(w)); + return out; +} +export const octal = (w, n = 5) => w.toString(8).padStart(n, '0'); +/** a fixed address to its place in the ropes: absolute word, module B1-B6, core and strand (the strand mapping is + * this model's: word w of a module sits on core w mod 512, strand ⌊w / 512⌋) [S] [E] */ +export function ropePlace(bank, addr) { + const off = bank >= 2 && addr >= 0o4000 ? addr - (addr >= 0o6000 ? 0o6000 : 0o4000) : addr - 0o2000; + const abs = bank * AGC.bankWords + off; + const module = Math.floor(abs / WORDS_PER_MODULE); + const w = abs % WORDS_PER_MODULE; + return {abs, module, core: w % AGC.coresPerModule, strand: Math.floor(w / AGC.coresPerModule)}; +} +/** the word stored at a bank-01 address of the excerpt, or a neighbour's */ +export function wordAt(bank, addr) { + const r = ROPE_WORDS.find((x) => x.bank === bank && x.addr === addr); + if (r) return r.word; + return ROPE_NEIGHBOURS[addr] ?? null; +} + +// instruction times in MCT [H] +const TIME = {CAF: 2, CA: 2, CS: 2, TS: 2, INDEX: 2, CCS: 2, TCF: 1, TC: 1, ADS: 2, LXCH: 2, DXCH: 3, MASK: 2, INHINT: 1, DEC: 1, OCT: 1}; +/** + * The instructions NOVAC2 runs to find a core set, given how many are busy (the search starts at core set 0 and + * walks up): [{w (index in ROPE_WORDS), mct (its first MCT, from the call), n (its MCTs), erasable?}]. With all 8 + * busy it falls through to BAILOUT1, whose INDEX Q / CAF 0 fetches the word after TC BAILOUT1: 01202, from the rope. + */ +export function novacTrace(busy) { + const idx = (addr, bank = 1) => ROPE_WORDS.findIndex((x) => x.bank === bank && x.addr === addr); + const out = []; + let t = 0; + const run = (addr, bank = 1, extra = {}) => { + const w = idx(addr, bank); + const op = ROPE_WORDS[w].op.split(' ')[0]; + out.push({w, mct: t, n: TIME[op], ...extra}); + t += TIME[op]; + }; + run(0o2625); + run(0o2626); + run(0o2627); + for (let k = 0; k < EXEC.coreSets; k++) { + run(0o2630); + run(0o2631); + run(0o2632, 1, {erasable: {set: k}}); + if (k >= busy) { + // -0 in PRIORITY: the core set is free, CCS skips three to CORFOUND + for (const a of [0o2636, 0o2637, 0o2640, 0o2641, 0o2642, 0o2643]) run(a); + return {trace: out, found: k, mct: t}; + } + run(0o2633); + run(0o2674); + run(0o2675); + run(0o2676); + if (k < EXEC.coreSets - 1) run(0o2677); + } + for (const a of [0o2700, 0o2701, 0o2702]) run(a); + for (const a of [0o5716, 0o5717, 0o5720, 0o5721, 0o5722]) run(a, 2); + run(0o5723, 2, {fetch: idx(0o2703)}); + return {trace: out, found: -1, mct: t}; +} + +// ------------------------------------------------------------ the sound [Q] +/** Quindar tones: the ground's transmitter keyed with 2,525 Hz, released with 2,475 Hz, 250 ms each */ +export const QUINDAR = {intro: 2525, outro: 2475, ms: 250}; + +// ------------------------------------------------------------ the DSKY [D] [P] +export const DSKY_KEYS = ['VERB', 'NOUN', '+', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'CLR', 'PRO', 'KEY REL', 'ENTR', 'RSET']; +// LM DSKY lamps, left and right columns [D] +export const LAMPS = [ + ['UPLINK ACTY', 'TEMP'], + ['NO ATT', 'GIMBAL LOCK'], + ['STBY', 'PROG'], + ['KEY REL', 'RESTART'], + ['OPR ERR', 'TRACKER'], + ['', 'ALT'], + ['', 'VEL'], +]; +// the crew's keystrokes, s after PDI [J] [E]: Aldrin calls up the Delta-H monitor, reads the alarm code, resets, +// calls the monitor again before the second alarm, then leaves it to Houston +export const CREW_KEYS = [ + [302.6, 'VERB'], [303.0, '1'], [303.4, '6'], [303.9, 'NOUN'], [304.3, '6'], [304.7, '8'], [305.3, 'ENTR'], + [319.6, 'VERB'], [320.0, '0'], [320.4, '5'], [320.9, 'NOUN'], [321.3, '0'], [321.7, '9'], [322.3, 'ENTR'], + [323.6, 'RSET'], + [347.6, 'VERB'], [348.0, '1'], [348.4, '6'], [348.9, 'NOUN'], [349.3, '6'], [349.7, '8'], [350.3, 'ENTR'], + [362.0, 'RSET'], + [581.0, 'RSET'], [590.5, 'RSET'], [601.0, 'RSET'], +]; diff --git a/machines/rope/agc-shared/make-timeline.mjs b/machines/rope/agc-shared/make-timeline.mjs new file mode 100644 index 0000000..878b43f --- /dev/null +++ b/machines/rope/agc-shared/make-timeline.mjs @@ -0,0 +1,32 @@ +// Writes ../agc-film/timeline.json (the film's beats, for review sheets and the score) and ../agc-film/sfx.json (every +// sound event), from the same schedule and Executive log the film draws: the DSKY key presses, the alarms, the +// Quindar tones of the radio calls. node agc-shared/make-timeline.mjs (from machines/rope) +import fs from 'node:fs'; +import path from 'node:path'; +import {fileURLToPath} from 'node:url'; +import {QUINDAR} from './machine.js'; +import {DURATION, LOG, SCRIPT, T, filmAt, missionAt, rateAt} from './schedule.js'; + +const HERE = path.dirname(fileURLToPath(import.meta.url)); +const r = (x) => +x.toFixed(3); +const inFilm = (t) => t >= 0 && t < DURATION - 0.1; +// key clicks: every press of the log heard at a film pace slow enough to hear it as a press +const keys = LOG.keyEv.filter(([s]) => s > missionAt(0)).map(([s]) => filmAt(s)).filter((t) => inFilm(t) && rateAt(t) < 6).map(r); +const alarms = LOG.alarms.map((a) => ({t: r(filmAt(a.s)), code: a.code})).filter((a) => inFilm(a.t)); +// Quindar tones: the start and end of the radio exchanges about the alarm (Armstrong's call, Houston's "go") [J] +const calls = [ + [T.alarm + 0.9, T.alarm + 2.3], + [T.alarm + 3.6, T.alarm + 4.6], + [T.contact + 0.2, T.contact + 1.4], +].map(([a, b]) => [r(a), r(b)]); +const beats = { + views: SCRIPT.filter((e) => e.t > 0).map((e) => e.t), + ropeRead: T.ropeIn, + erasRead: T.erasIn, + alarm: alarms[0].t, + ff: T.ff, + contact: T.contact, +}; +fs.writeFileSync(path.join(HERE, '../agc-film/timeline.json'), JSON.stringify({duration: DURATION, beats})); +fs.writeFileSync(path.join(HERE, '../agc-film/sfx.json'), JSON.stringify({keys, alarms, calls, quindar: QUINDAR})); +console.log(beats, keys.length, 'key presses', alarms.length, 'alarms'); diff --git a/machines/rope/agc-shared/schedule.js b/machines/rope/agc-shared/schedule.js new file mode 100644 index 0000000..3f840ef --- /dev/null +++ b/machines/rope/agc-shared/schedule.js @@ -0,0 +1,87 @@ +// The film's operator script and its one input: the mission time s (seconds after PDI, counted on screen in MCT) as +// a monotone function of film time t. It crawls through two single memory cycles (a word read from the rope, a word +// read and rewritten in erasable memory), runs at about twice real time into the first 1202, then fast-forwards +// through P64 to touchdown. No three.js, so the timeline and the score can import it in node. +import {EVENTS, MCT, ROPE_WORDS, novacTrace} from './machine.js'; +import {jobsAt, simulate} from './executive.js'; + +export const DURATION = 40; +/** the flown log: the crew's keys, the radar's steals on */ +export const LOG = simulate(); +export const ALARM1 = LOG.alarms[0]; + +// the NOVAC call the film slows down on: the first monitor-job request after 307.6 s +const REQ = LOG.jobs.find((j) => j.kind === 'monitor' && j.t0 >= 307.6); +export const NOVAC = {req: REQ, ...novacTrace(REQ.set)}; +const base = Math.round(REQ.t0 / MCT); +const iCaf = NOVAC.trace.findIndex((x) => ROPE_WORDS[x.w].op === 'CAF NO.CORES'); +const iCcs = NOVAC.trace.findIndex((x) => x.erasable); +/** the MCT in which the rope gives CAF NO.CORES (fetched in the last MCT before it runs) */ +export const ROPE_MCT = base + NOVAC.trace[iCaf].mct - 1; +/** the MCT in which CCS PRIORITY reads core set 0's PRIORITY register (and rewrites it) */ +export const ERAS_MCT = base + NOVAC.trace[iCcs].mct + 1; +export const ERAS_JOB = jobsAt(LOG, REQ.t0)[0]; +const sR = ROPE_MCT * MCT; +const sE = ERAS_MCT * MCT; +const R_SLOW = MCT / 4; // one MCT in 4 s of film +export const T = {ropeIn: 10.2, erasIn: 16.0, alarm: 27.6, ff: 32.4, contact: 37.4}; + +const cubicOut = (u) => 1 - (1 - u) ** 3; +const cubicIn = (u) => u ** 3; +const smoother = (u) => u * u * u * (u * (u * 6 - 15) + 10); +// [t0, t1, s0, s1, ease] +const SEGS = [ + [0, 9.6, 306.4, sR + (9.6 - T.ropeIn) * R_SLOW, cubicOut], + [9.6, 14.8, sR + (9.6 - T.ropeIn) * R_SLOW, sR + (14.8 - T.ropeIn) * R_SLOW, (u) => u], + [14.8, 15.6, sR + (14.8 - T.ropeIn) * R_SLOW, sE + (15.6 - T.erasIn) * R_SLOW, (u) => u], + [15.6, 20.2, sE + (15.6 - T.erasIn) * R_SLOW, sE + (20.2 - T.erasIn) * R_SLOW, (u) => u], + [20.2, T.alarm, sE + (20.2 - T.erasIn) * R_SLOW, ALARM1.s, cubicIn], + [T.alarm, T.ff, ALARM1.s, 324.0, (u) => u], + [T.ff, T.contact, 324.0, EVENTS.contact + 0.4, smoother], + [T.contact, DURATION + 1, EVENTS.contact + 0.4, EVENTS.contact + 3.2, (u) => u], +]; +/** mission seconds after PDI at film time t */ +export function missionAt(t) { + const sg = SEGS.find((x) => t < x[1]) ?? SEGS[SEGS.length - 1]; + const u = Math.min(1, Math.max(0, (t - sg[0]) / (sg[1] - sg[0]))); + return sg[2] + (sg[3] - sg[2]) * sg[4](u); +} +/** film time at which the mission reaches s (binary search: s is monotone in t) */ +export function filmAt(s) { + let lo = 0; + let hi = DURATION + 1; + for (let k = 0; k < 50; k++) { + const mid = (lo + hi) / 2; + if (missionAt(mid) < s) lo = mid; + else hi = mid; + } + return (lo + hi) / 2; +} +/** mission seconds per film second at t */ +export const rateAt = (t) => (missionAt(t + 0.004) - missionAt(Math.max(0, t - 0.004))) / (t > 0.004 ? 0.008 : 0.004); + +// operator moves: camera views and the button pressed for each; `act` are the mechanical states +export const SCRIPT = [ + {t: 0, cam: 'hero'}, + {t: 3.0, cam: 'open', btn: 'tray'}, + {t: 6.8, cam: 'rope', btn: 'rope'}, + {t: 14.6, cam: 'eras', btn: 'eras'}, + {t: 20.2, cam: 'dsky', btn: 'dsky'}, + {t: 24.0, cam: 'exec', btn: 'exec'}, + {t: 32.4, cam: 'hero', btn: 'case'}, +]; +const ramp = (a, b, t) => smoother(Math.min(1, Math.max(0, (t - a) / (b - a)))); +/** the machine's mechanical states at film time t */ +export function actsAt(t) { + return { + open: ramp(3.2, 6.4, t) * (1 - ramp(32.8, 36.4, t)), + rope: ramp(7.0, 8.6, t) * (1 - ramp(16.0, 17.4, t)), + ropeCover: ramp(8.4, 9.2, t) * (1 - ramp(15.6, 16.0, t)), + ropeDetail: t > 8.7 && t < 15.6 ? 1 : 0, + eras: ramp(15.0, 16.0, t) * (1 - ramp(20.4, 21.4, t)), + logic: 0, + gate: 0, + cut: '', + }; +} +export const camAtName = (t) => SCRIPT.filter((e) => e.cam && e.t <= t).pop().cam; diff --git a/machines/rope/agc-shared/score.py b/machines/rope/agc-shared/score.py new file mode 100644 index 0000000..612653b --- /dev/null +++ b/machines/rope/agc-shared/score.py @@ -0,0 +1,71 @@ +"""Score for Rope (the Apollo Guidance Computer, after public sources): the AGC itself makes no sound, so there is no +hum. A very low, dry bed in D the whole way; a dry click on every DSKY key press (from sfx.json, computed by +make-timeline.mjs from the Executive's log); Quindar tones at the start (2,525 Hz) and end (2,475 Hz) of each radio +exchange; the master alarm tone at the first 1202 (a square wave alternating 750 and 2,000 Hz, after the Apollo +Operations Handbook's caution-and-warning description), shorter for the alarms of the fast forward; a soft tick +on each button the operator presses; a low thud at contact. + + node agc-shared/make-timeline.mjs && python3 "$SKILL_DIR/run_sfx.py" agc-shared/score.py +""" + +import json +import math +import os + +from sfx.score_kit import beep, hiss, hz, thud +from sfx.synth import SR, click, pad + +TIMELINE = "../agc-film/timeline.json" +OUT = os.path.join(os.environ.get("TEARDOWN_OUT", "teardown-out"), "rope-score.wav") +TARGET_LUFS = -14.0 +SEED = 1969 +HERE = os.path.dirname(os.path.abspath(__file__)) + + +def square_alarm(dur, f_a=750.0, f_b=2000.0, rate=2.5, level=1.0): + """The master alarm: a soft-edged square wave switching between two pitches `rate` times a second.""" + n = int(dur * SR) + out = [] + ph = 0.0 + for k in range(n): + t = k / SR + f = f_a if int(t * rate * 2) % 2 == 0 else f_b + ph += 2 * math.pi * f / SR + s = math.tanh(3.0 * math.sin(ph)) * 0.6 + env = min(1.0, t / 0.01, (dur - t) / 0.04) + out.append(level * s * env) + return out + + +def score(mix, tl): + dur = tl["duration"] + b = tl["beats"] + with open(os.path.join(HERE, "../agc-film/sfx.json"), encoding="utf8") as f: + fx = json.load(f) + # the bed: one key, D, low and dry (no tremolo, no drums) + chords = [(0.0, [hz("D2"), hz("A2"), hz("D3")]), (12.0, [hz("D2"), hz("A2"), hz("E3")]), (24.0, [hz("D2"), hz("A2"), hz("D3")]), (33.0, [hz("D2"), hz("A2"), hz("F#3")])] + left, right = pad(dur, chords, detune=0.25, tremolo=0.0, xfade=1.2) + mix.put_stereo(0, left, right, 0.05) + # the operator's buttons + for t in b["views"]: + mix.put(t, click(2200, 0.022), 0.04) + # the DSKY keys: a dry mechanical click + for i, t in enumerate(fx["keys"]): + mix.put(t, click(1300 + 60 * (i % 3), 0.03), 0.16, pan=0.25) + mix.put(t + 0.004, click(4200, 0.01), 0.05, pan=0.25) + # Quindar tones round each radio exchange, with a little band noise under the open channel + q = fx["quindar"] + for t0, t1 in fx["calls"]: + mix.put(t0, beep(q["intro"], q["ms"] / 1000, 1.0), 0.05) + mix.put(t0 + 0.25, hiss(max(0.1, t1 - t0 - 0.25), 2600, 1.0), 0.006) + mix.put(t1, beep(q["outro"], q["ms"] / 1000, 1.0), 0.05) + # the alarms: the first in full, the fast-forward ones as short bursts + for i, a in enumerate(fx["alarms"]): + if a["t"] >= dur - 0.2: + continue + if i == 0: + mix.put(a["t"], square_alarm(1.6), 0.05) + elif all(abs(a["t"] - x["t"]) > 0.35 for x in fx["alarms"][:i]): + mix.put(a["t"], square_alarm(0.4), 0.03) + # contact + mix.put(b["contact"], thud(70, 0.25, 0.8), 0.22) diff --git a/machines/rope/agc-shared/seg7.js b/machines/rope/agc-shared/seg7.js new file mode 100644 index 0000000..7c9d78a --- /dev/null +++ b/machines/rope/agc-shared/seg7.js @@ -0,0 +1,69 @@ +// Seven-segment digits drawn by code, for the DSKY's electroluminescent panel (a canvas texture in 3D) and for every +// figure of the console (SVG). Segments a-g, plus the DSKY's sign (a vertical bar crossing g makes +). +// +// aaa +// f b +// ggg +// e c +// ddd +const SEG = { + 0: 'abcdef', 1: 'bc', 2: 'abdeg', 3: 'abcdg', 4: 'bcfg', 5: 'acdfg', 6: 'acdefg', 7: 'abc', 8: 'abcdefg', 9: 'abcdfg', + '-': 'g', '+': 'g+', ' ': '', E: 'adefg', r: 'eg', o: 'cdeg', P: 'abefg', A: 'abcefg', L: 'def', H: 'bcefg', F: 'aefg', C: 'adef', +}; +/** the segment polygons of one digit in a w x h box at (x, y), as [[x, y], ...] lists; slant in fractions of w */ +export function digitPolys(ch, x, y, w, h, slant = 0.08) { + const segs = SEG[ch] ?? ''; + const t = Math.max(1, w * 0.17); + const g = t * 0.22; + const sk = (px, py) => [x + px + (h / 2 - py) * slant * (w / h) * 2, y + py]; + const H = (px0, px1, py) => [sk(px0 + g, py), sk(px0 + t / 2 + g, py - t / 2), sk(px1 - t / 2 - g, py - t / 2), sk(px1 - g, py), sk(px1 - t / 2 - g, py + t / 2), sk(px0 + t / 2 + g, py + t / 2)]; + const V = (px, py0, py1) => [sk(px, py0 + g), sk(px + t / 2, py0 + t / 2 + g), sk(px + t / 2, py1 - t / 2 - g), sk(px, py1 - g), sk(px - t / 2, py1 - t / 2 - g), sk(px - t / 2, py0 + t / 2 + g)]; + const P = { + a: H(t / 2, w - t / 2, t / 2), + g: H(t / 2, w - t / 2, h / 2), + d: H(t / 2, w - t / 2, h - t / 2), + f: V(t / 2, t / 2, h / 2), + b: V(w - t / 2, t / 2, h / 2), + e: V(t / 2, h / 2, h - t / 2), + c: V(w - t / 2, h / 2, h - t / 2), + '+': V(w / 2, h / 2 - w * 0.36, h / 2 + w * 0.36), + }; + const all = 'abcdefg+'.split(''); + return all.map((k) => ({k, on: segs.includes(k), pts: P[k]})).filter((s) => s.k !== '+' || s.on); +} +/** draws a string of digits on a 2D canvas context; off segments in `off` (null: not drawn) */ +export function drawDigits(ctx, str, x, y, w, h, gap, on, off = null, slant = 0.08) { + [...str].forEach((ch, i) => { + for (const s of digitPolys(ch, x + i * (w + gap), y, w, h, slant)) { + if (!s.on && !off) continue; + ctx.fillStyle = s.on ? on : off; + ctx.beginPath(); + s.pts.forEach(([px, py], j) => (j ? ctx.lineTo(px, py) : ctx.moveTo(px, py))); + ctx.closePath(); + ctx.fill(); + } + }); +} +/** the same as SVG paths (one string), for the console; '.' and ':' take a narrow cell of their own */ +export function svgDigits(str, x, y, w, h, gap, on, off = null, slant = 0.08) { + let out = ''; + let cx = x; + const r = Math.max(1, w * 0.1); + const dot = (px, py) => ``; + for (const ch of str) { + if (ch === '.' || ch === ':') { + const px = cx + w * 0.12; + out += ch === '.' ? dot(px, y + h - r) : dot(px, y + h * 0.3) + dot(px, y + h * 0.7); + cx += w * 0.24 + gap; + continue; + } + for (const s of digitPolys(ch, cx, y, w, h, slant)) { + if (!s.on && !off) continue; + out += ``; + } + cx += w + gap; + } + return out; +} +/** width of a string drawn by svgDigits */ +export const digitsWidth = (str, w, gap) => [...str].reduce((a, ch) => a + (ch === '.' || ch === ':' ? w * 0.24 : w) + gap, 0) - gap; diff --git a/machines/rope/agc-shared/stage.js b/machines/rope/agc-shared/stage.js new file mode 100644 index 0000000..c8bc45b --- /dev/null +++ b/machines/rope/agc-shared/stage.js @@ -0,0 +1,169 @@ +// Rope's stage: a sheet of the MIT Instrumentation Lab's documentation rather than a studio. Warm ivory paper with a +// faint millimetre grid and a drawing frame (a screen-space background, so the grid stays put like the sheet it is), +// one warm desk lamp low on the left for long soft shadows, a pale fill. The camera is a long lens, close to an +// axonometric projection. frame(fx, cam) poses the machine and draws one frame. +import * as THREE from 'three'; +import {EffectComposer} from 'three/addons/postprocessing/EffectComposer.js'; +import {OutputPass} from 'three/addons/postprocessing/OutputPass.js'; +import {RenderPass} from 'three/addons/postprocessing/RenderPass.js'; +import {buildMachine} from './agc.js'; + +export const PAPER = {bg: '#efe8d8', minor: 'rgba(120,96,58,0.075)', major: 'rgba(120,96,58,0.14)', frame: 'rgba(70,58,40,0.55)'}; +const V3 = THREE.Vector3; + +/** the drawing sheet: grid every 6 px ("1 mm"), heavier every 60, a frame with zone letters; 1600 x 900 layout */ +export function paperCanvas(scale = 2) { + const W = 1600; + const H = 900; + const c = document.createElement('canvas'); + c.width = W * scale; + c.height = H * scale; + const g = c.getContext('2d'); + g.scale(scale, scale); + g.fillStyle = PAPER.bg; + g.fillRect(0, 0, W, H); + // a faint warm vignette, like a lamp on paper + const rg = g.createRadialGradient(W * 0.36, H * 0.3, 80, W * 0.5, H * 0.5, W * 0.75); + rg.addColorStop(0, 'rgba(255,250,236,0.5)'); + rg.addColorStop(1, 'rgba(160,130,80,0.10)'); + g.fillStyle = rg; + g.fillRect(0, 0, W, H); + const line = (x0, y0, x1, y1, col, w) => { + g.strokeStyle = col; + g.lineWidth = w; + g.beginPath(); + g.moveTo(x0, y0); + g.lineTo(x1, y1); + g.stroke(); + }; + const m = 14; + for (let x = m; x <= W - m; x += 6) line(x + 0.25, m, x + 0.25, H - m, (x - m) % 60 === 0 ? PAPER.major : PAPER.minor, (x - m) % 60 === 0 ? 0.7 : 0.45); + for (let y = m; y <= H - m; y += 6) line(m, y + 0.25, W - m, y + 0.25, (y - m) % 60 === 0 ? PAPER.major : PAPER.minor, (y - m) % 60 === 0 ? 0.7 : 0.45); + g.strokeStyle = PAPER.frame; + g.lineWidth = 1.2; + g.strokeRect(m, m, W - 2 * m, H - 2 * m); + g.lineWidth = 0.6; + g.strokeRect(m - 5, m - 5, W - 2 * m + 10, H - 2 * m + 10); + return c; +} + +export function createStage({canvas}) { + const renderer = new THREE.WebGLRenderer({canvas, antialias: false, preserveDrawingBuffer: true, powerPreference: 'high-performance'}); + renderer.toneMapping = THREE.NeutralToneMapping; + renderer.toneMappingExposure = 1.0; + renderer.outputColorSpace = THREE.SRGBColorSpace; + renderer.shadowMap.enabled = true; + renderer.shadowMap.type = THREE.PCFShadowMap; + renderer.localClippingEnabled = true; + const scene = new THREE.Scene(); + const bgTex = new THREE.CanvasTexture(paperCanvas(2)); + bgTex.colorSpace = THREE.SRGBColorSpace; + scene.background = bgTex; + const camera = new THREE.PerspectiveCamera(18, 16 / 9, 0.001, 30); + const composer = new EffectComposer(renderer, new THREE.WebGLRenderTarget(4, 4, {type: THREE.HalfFloatType, samples: 8})); + composer.addPass(new RenderPass(scene, camera)); + composer.addPass(new OutputPass()); + + // a warm room for the metal to reflect + { + const env = new THREE.Scene(); + env.background = new THREE.Color('#d8cdb5'); + const box = (w, h, pos, col, k) => { + const m = new THREE.Mesh(new THREE.PlaneGeometry(w, h), new THREE.MeshBasicMaterial({color: new THREE.Color(col).multiplyScalar(k), side: THREE.DoubleSide})); + m.position.copy(pos); + m.lookAt(0, 0.5, 0); + env.add(m); + }; + box(10, 10, new V3(-3, 9, 4), '#fff3dc', 2.2); + box(4, 8, new V3(-9, 3, 2), '#ffe9c4', 1.8); + box(4, 8, new V3(9, 3, -3), '#f2efe6', 1.1); + const pm = new THREE.PMREMGenerator(renderer); + scene.environment = pm.fromScene(env, 0.03).texture; + scene.environmentIntensity = 0.75; + pm.dispose(); + } + // the desk lamp: warm, low on the left and in front, long shadows + const lamp = new THREE.DirectionalLight('#ffe2b8', 2.6); + lamp.position.set(-1.6, 1.25, 1.35); + lamp.target.position.set(0, 0, -0.05); + lamp.castShadow = true; + Object.assign(lamp.shadow.camera, {left: -0.9, right: 0.9, top: 0.75, bottom: -0.75, near: 0.5, far: 4.5}); + lamp.shadow.mapSize.set(4096, 4096); + lamp.shadow.radius = 5; + lamp.shadow.bias = -0.0003; + lamp.shadow.normalBias = 0.0015; + scene.add(lamp, lamp.target); + scene.add(new THREE.HemisphereLight('#fff8ea', '#cdbf9f', 1.05)); + const fill = new THREE.DirectionalLight('#e8eef5', 0.45); + fill.position.set(1.4, 0.9, 1.6); + scene.add(fill); + // a lamp that follows the camera when it is inside a module, so the cores read + const inner = new THREE.PointLight('#fff1da', 0, 0.3, 1.5); + scene.add(inner); + + const shade = new THREE.Mesh( + new THREE.PlaneGeometry(8, 8), + new THREE.ShadowMaterial({color: '#5a4630', opacity: 0.3, polygonOffset: true, polygonOffsetFactor: -4, polygonOffsetUnits: -8}), + ); + shade.rotation.x = -Math.PI / 2; + shade.receiveShadow = true; + scene.add(shade); + + const mac = buildMachine(); + scene.add(mac.root); + mac.root.traverse((o) => { + if (o.isMesh && !o.isInstancedMesh) { + o.castShadow = o.castShadow ?? true; + o.receiveShadow = true; + } + }); + + const size = {w: 1600, h: 900, pr: 1}; + const resize = (w, h, pr) => { + size.w = w; + size.h = h; + size.pr = pr; + renderer.setPixelRatio(pr); + renderer.setSize(w, h, false); + composer.setPixelRatio(pr); + composer.setSize(w, h); + camera.aspect = w / h; + camera.updateProjectionMatrix(); + }; + // cam: target (tx, ty, tz), azimuth from +z toward +x, elevation, distance (radians, metres), fov, sx/sy screen shift + const frame = (fx, cam) => { + const {tx, ty, tz, az, el, d} = cam; + camera.fov = cam.fov ?? 18; + camera.position.set(tx + d * Math.cos(el) * Math.sin(az), ty + d * Math.sin(el), tz + d * Math.cos(el) * Math.cos(az)); + camera.lookAt(tx, ty, tz); + camera.near = Math.max(0.0005, d * 0.05); + camera.far = Math.max(6, d * 20); + camera.updateProjectionMatrix(); + camera.setViewOffset(size.w, size.h, -(cam.sx ?? 0), -(cam.sy ?? 0), size.w, size.h); + camera.updateMatrixWorld(); + const close = Math.max(0, Math.min(1, (0.3 - d) / 0.2)); + inner.intensity = close * 0.25; + inner.position.copy(camera.position).add(new V3(-0.01, 0.02, 0.01)); + mac.update(fx); + composer.render(); + }; + const pv = new V3(); + const project = (p) => { + pv.copy(p).project(camera); + if (pv.z > 1) return null; + return [(pv.x * 0.5 + 0.5) * size.w, (-pv.y * 0.5 + 0.5) * size.h]; + }; + const setQuality = ({samples, shadow}) => { + if (samples !== undefined) + for (const t of [composer.renderTarget1, composer.renderTarget2]) { + t.samples = samples; + t.dispose(); + } + if (shadow !== undefined) { + lamp.shadow.mapSize.set(shadow, shadow); + lamp.shadow.map?.dispose(); + lamp.shadow.map = null; + } + }; + return {renderer, scene, camera, mac, composer, lamp, resize, frame, project, size, setQuality}; +} diff --git a/machines/rope/check.mjs b/machines/rope/check.mjs new file mode 100644 index 0000000..a661f56 --- /dev/null +++ b/machines/rope/check.mjs @@ -0,0 +1,88 @@ +// Recomputes, from the same functions the page draws with, every figure Rope shows, and fails if one leaves the range +// its source gives. node machines/rope/check.mjs (CI runs it on every push). +import * as M from './agc-shared/machine.js'; +import {simulate} from './agc-shared/executive.js'; + +let bad = 0; +const near = (name, v, lo, hi, unit = '') => { + const ok = v >= lo && v <= hi; + if (!ok) bad++; + const f = (x) => (unit === 'octal' ? `0${x.toString(8)}` : Number(Number(x).toPrecision(7))); + console.log(`${ok ? 'ok ' : 'BAD'} ${name.padEnd(50)} ${f(v)} ${unit === 'octal' ? '' : unit} [${f(lo)} … ${f(hi)}]`); +}; + +// the clock [W] [H]: 2.048 MHz halved, 12 timing pulses per memory cycle +near('memory cycle (MCT)', M.MCT * 1e6, 11.71, 11.72, 'µs'); +near('MCT per second', M.MCT_PER_S, 85333, 85334); +near('addition, 2 MCT', M.ADD_US, 23.43, 23.44, 'µs'); +near('additions per second', M.ADDS_PER_S, 42666, 42667); +// the word [W]: 15 data bits + odd parity +near('word', M.AGC.dataBits + 1, 16, 16, 'bits'); +// the memories [W] [S]: 6 ropes x 512 cores x 12 words = 36,864 words; 2,048 erasable words +near('rope words per module (512 cores x 12)', M.WORDS_PER_MODULE, 6144, 6144); +near('fixed words (6 modules)', M.AGC.ropeModules * M.WORDS_PER_MODULE, 36864, 36864); +near('fixed words = 36 banks of 1,024', 36 * M.AGC.bankWords, 36864, 36864); +near('fixed memory in bits', M.FIXED_BITS, 589824, 589824); +near('sense lines per core (12 strands of 16)', M.AGC.wordsPerCore * 16, M.AGC.senseLinesPerCore, M.AGC.senseLinesPerCore); +near('erasable memory in bits', M.ERASABLE_BITS, 32768, 32768); +// one kind of gate: ~2,800 dual 3-input NOR flat-packs [W] +near('NOR gates', M.AGC.ics * M.AGC.gatesPerIc, 5600, 5600); +// the box [W]: 24 x 12.5 x 6.5 in = 61 x 32 x 17 cm +M.AGC.sizeIn.forEach((x, i) => near(` box dimension ${i + 1}`, x * 0.0254, M.AGC.sizeM[i] - 0.005, M.AGC.sizeM[i] + 0.005, 'm')); +// odd parity on every word of the excerpt [L]: the count of ones, parity included, is odd +let parityBad = 0; +for (const w of M.ROPE_WORDS) if (w.bits.reduce((a, b) => a + b, 0) % 2 !== 1) parityBad++; +near('words with even parity in the excerpt', parityBad, 0, 0); +// the word the film reads, CAF NO.CORES at 01,2627 = 32634 octal [L] +const caf = M.ROPE_WORDS.find((w) => w.op === 'CAF NO.CORES'); +near('CAF NO.CORES at 01,2627', caf.word, 0o32634, 0o32634, 'octal'); +near('its place: module B1', M.ropePlace(caf.bank, caf.addr).module + 1, 1, 1); +// NOVAC2 with all 8 core sets busy falls through to BAILOUT1 and fetches 01202 from the rope +const full = M.novacTrace(8); +near('NOVAC with 8 busy: found', full.found, -1, -1); +near(' the word it fetches from the rope: OCT 1202', M.ROPE_WORDS[full.trace[full.trace.length - 1].fetch].word, 0o1202, 0o1202, 'octal'); +near(' MCTs from NOVAC to the alarm code', full.mct, 60, 140); +// the radar [E1]: 2 angles x 6,400 pulses/s, one MCT each +near('radar steal, theoretical maximum', M.TLOSS_THEORY * 100, 14.9, 15.1, '%'); +near('radar steal used by the model', M.EXEC.tloss * 100, 13, M.EXEC.tlossMax * 100, '%'); +// the duty at the first alarm [E1]: braking 85 % + radar data + V16 N68 3 % + 13 % stolen > 100 % +const duty = M.EXEC.braking + M.EXEC.lrConvert + M.EXEC.n68 + M.EXEC.tloss; +near('duty asked at the 1202', duty * 100, 100.01, 104, '%'); +near('duty without the radar', (duty - M.EXEC.tloss) * 100, 85, 91, '%'); +// the log as flown, against Apollo 11's alarms [R] +const L = simulate(); +const a = L.alarms; +near('first alarm is a 1202', a[0].code, 1202, 1202); +near(' at, s after PDI (flown 317, 102:38:22)', a[0].s, 314, 320, 's'); +near(' core sets busy at it', a[0].busy, 8, 8); +near('second alarm is a 1202', a[1].code, 1202, 1202); +near(' at (flown 357, 102:39:02)', a[1].s, 352, 362, 's'); +const p64 = a.filter((x) => x.s > M.EVENTS.p64 && x.s < M.EVENTS.p66); +near('alarms in P64 (flown 3)', p64.length, 2, 4); +near('alarms in P66 and after (flown 0)', a.filter((x) => x.s >= M.EVENTS.p66).length, 0, 0); +near('alarms between the 2nd and P64 (flown 0)', a.filter((x) => x.s > a[1].s + 1 && x.s < M.EVENTS.p64).length, 0, 0); +for (const r of L.restarts) { + if (r.kept.length !== 1 || r.kept[0].kind !== 'servicer') { + bad++; + console.log(`BAD restart at ${r.s.toFixed(2)} kept ${JSON.stringify(r.kept)}`); + } +} +near('restarts that keep exactly the newest SERVICER', L.restarts.filter((r) => r.kept.length === 1 && r.kept[0].kind === 'servicer').length, L.restarts.length, L.restarts.length); +// the radar off: no alarm at all +near('alarms with the radar steals off', simulate({radar: false}).alarms.length, 0, 0); +// the descent [J] [E1]: the published points +near('altitude at the first alarm (~33,500 ft)', M.descent(a[0].s).h, 32500, 34500, 'ft'); +near('altitude at high gate (7,400 ft)', M.descent(M.EVENTS.p64).h, 7300, 7500, 'ft'); +near('slant range at high gate (~7.8 km [G])', M.descent(M.EVENTS.p64).slantNm * 1852, 7000, 8600, 'm'); +near('altitude at contact', M.descent(M.EVENTS.contact).h, 0, 8, 'ft'); +// Quindar tones [Q] +// the Quindar tones the score plays [Q]: 2,525 Hz to key the ground transmitter, 2,475 Hz to release it, 250 ms +near('Quindar intro tone', M.QUINDAR.intro, 2525, 2525, 'Hz'); +near('Quindar release tone', M.QUINDAR.outro, 2475, 2475, 'Hz'); +near('Quindar tone length', M.QUINDAR.ms, 250, 250, 'ms'); + +if (bad) { + console.error(`\n${bad} figure(s) out of range`); + process.exit(1); +} +console.log('\nevery figure in range'); diff --git a/machines/rope/og.png b/machines/rope/og.png new file mode 100644 index 0000000000000000000000000000000000000000..98961852aeacaf683dae9fef600b2cf81df5235d GIT binary patch literal 513362 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 z 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�rMkA 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 z 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 { write: false, target: 'es2022', legalComments: 'none', + loader: {'.woff2': 'base64'}, // a machine's own font, as the teardown kit's build loads it logLevel: 'warning', }); return res.outputFiles[0].text.replace(/<\/script/g, '<\\/script'); diff --git a/scripts/machines.mjs b/scripts/machines.mjs index a73ce2c..485c80f 100644 --- a/scripts/machines.mjs +++ b/scripts/machines.mjs @@ -1,6 +1,35 @@ // The collection: one entry per machine, newest first (the gallery's order). Each machine lives in machines//, // its live page's entry point is `entry`, its share card `og` (1200 x 630, also the gallery's thumbnail). export const MACHINES = [ + { + slug: 'rope', + name: 'Rope', + entry: 'machines/rope/agc-live/main.js', + og: 'machines/rope/og.png', + meta: { + en: { + title: 'Rope · the Apollo Guidance Computer, taken apart', + line: 'The Apollo Guidance Computer and its DSKY: a program woven into core rope, one kind of gate, and the 1202 alarm of Apollo 11.', + description: + 'The Apollo Guidance Computer you can take apart in the browser: a word read from the core rope bit by bit, an erasable core read and rewritten, the Executive running out of core sets as the radar steals cycles, the 1202 of Apollo 11. A model after public sources (MIT Instrumentation Lab, NASA); not affiliated with NASA or MIT.', + locale: 'en_US', + }, + fr: { + title: 'Rope · l’ordinateur de bord d’Apollo, démonté', + line: 'L’Apollo Guidance Computer et son DSKY : un programme tissé dans la mémoire à tores, un seul type de porte, et l’alarme 1202 d’Apollo 11.', + description: + 'L’Apollo Guidance Computer à démonter dans le navigateur : un mot lu bit par bit dans la core rope, un tore effaçable lu puis réécrit, l’Executive à court de core sets quand le radar vole des cycles, le 1202 d’Apollo 11. Un modèle d’après les sources publiques (MIT Instrumentation Lab, NASA) ; sans lien avec la NASA ni le MIT.', + locale: 'fr_FR', + }, + es: { + title: 'Rope · el ordenador de guiado del Apolo, desmontado', + line: 'El Apollo Guidance Computer y su DSKY: un programa tejido en memoria de núcleos, un solo tipo de puerta y la alarma 1202 del Apolo 11.', + description: + 'El Apollo Guidance Computer para desmontar en el navegador: una palabra leída bit a bit en la core rope, un núcleo borrable leído y reescrito, el Executive sin core sets mientras el radar roba ciclos, el 1202 del Apolo 11. Un modelo según fuentes públicas (MIT Instrumentation Lab, NASA); sin relación con la NASA ni el MIT.', + locale: 'es_ES', + }, + }, + }, { slug: 'quantum', name: 'Quantum', @@ -67,7 +96,7 @@ export const GALLERY = { lead: 'Real machines, built from code with their real numbers, that you can take apart in the browser.', sub: 'Every gauge reads the same model that moves the parts. Left alone, each one plays a guided tour; any click hands control over.', open: 'Open', - description: 'Real machines, built from code with their real numbers, that you can take apart in the browser: a hard drive, a photonic quantum computer.', + description: 'Real machines, built from code with their real numbers, that you can take apart in the browser: a hard drive, a photonic quantum computer, the Apollo Guidance Computer.', locale: 'en_US', }, fr: { @@ -75,7 +104,7 @@ export const GALLERY = { lead: 'De vraies machines, construites en code avec leurs vrais chiffres, à démonter dans le navigateur.', sub: 'Chaque jauge lit le modèle qui fait bouger les pièces. Laissée seule, chacune joue une visite guidée ; un clic suffit pour prendre la main.', open: 'Ouvrir', - description: 'De vraies machines, construites en code avec leurs vrais chiffres, à démonter dans le navigateur : un disque dur, un ordinateur quantique photonique.', + description: 'De vraies machines, construites en code avec leurs vrais chiffres, à démonter dans le navigateur : un disque dur, un ordinateur quantique photonique, l’ordinateur de bord d’Apollo.', locale: 'fr_FR', }, es: { @@ -83,7 +112,7 @@ export const GALLERY = { lead: 'Máquinas reales, construidas en código con sus cifras reales, para desmontar en el navegador.', sub: 'Cada indicador lee el mismo modelo que mueve las piezas. Si la dejas sola, cada una hace una visita guiada; cualquier clic te da el control.', open: 'Abrir', - description: 'Máquinas reales, construidas en código con sus cifras reales, para desmontar en el navegador: un disco duro, un ordenador cuántico fotónico.', + description: 'Máquinas reales, construidas en código con sus cifras reales, para desmontar en el navegador: un disco duro, un ordenador cuántico fotónico, el ordenador de guiado del Apolo.', locale: 'es_ES', }, };