ソース情報
- リポジトリ
- mattgodbolt/jsbeeb
- ソースの最終更新活動
- 2026年4月12日 16:06
- 検出された SKILL.md の言語
- 英語
- スター
- 391
- フォーク
- 76
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
SOC 職業分類に基づく
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/mattgodbolt/jsbeeb --skill emulatorコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SKILL.md を表示中
| name | emulator |
| description | Boot and interact with a headless BBC Micro or Acorn Atom emulator for testing |
| allowed-tools | Bash, Read |
Boot a BBC Micro or Acorn Atom emulator and interact with it via typed commands.
Uses MachineSession from src/machine-session.js.
Run Node.js one-liners from the jsbeeb project root:
import { MachineSession } from "./src/machine-session.js";
const session = new MachineSession("MODEL_NAME");
await session.initialise();
await session.boot(10);
session.drainOutput(); // clear boot text
await session._machine.type("PRINT 1+1");
await session._machine.runFor(2000000);
console.log(session.drainOutput().screenText);
// "\n\n PRINT 1+1\n 2\n>"
session.destroy();
Prefer text output (drainOutput().screenText) -- it's lightweight and easy to parse.
Only use screenshots when you need to verify graphical output (MODE changes, plotting, character rendering).
// Text (default, preferred):
const output = session.drainOutput();
console.log(output.screenText);
// Screenshot (only when visual verification needed):
import { writeFileSync } from "fs";
const png = await session.screenshot();
writeFileSync("/tmp/screen.png", png);
// Then use Read tool on /tmp/screen.png to view it
B-DFS1.2, B-DFS2.26, Master, Master-MOS3.20Atom-Tape, Atom-Tape-FP, Atom-MMC, Atom-DOSEND as the last line of programs* prefix: *LOAD, *SAVE, *CATrunFor valuesrunFor(n) runs n CPU cycles. At 2 MHz (BBC): n/2000000 seconds. At 1 MHz (Atom): n/1000000 seconds.drainOutput() returns { elements, screenText } and clears the buffer. Call between commands for clean output.runFor(500000) between them.session._machine.readbyte(addr) / writebyte(addr, val) for direct memory access.session.registers() returns { pc, a, x, y, s, p }.const session = new MachineSession("Atom-Tape");
await session.initialise();
await session.boot(10);
session.drainOutput();
for (const line of ['10PRINT"HELLO"', "20END"]) {
await session._machine.type(line);
await session._machine.runFor(500000);
}
session.drainOutput(); // clear line entry echo
await session._machine.type("RUN");
await session._machine.runFor(2000000);
console.log(session.drainOutput().screenText);
// HELLO>
session.destroy();