メモ1:ミニテルをターミナルとして使用する、ゼロから組み立てられた6502コンピュータ

2026/07/28 22:56

メモ1:ミニテルをターミナルとして使用する、ゼロから組み立てられた6502コンピュータ

RSS: https://news.ycombinator.com/rss

要約

日本語訳:

メモ-1 は、32KB の RAM と 16KB の ROM を備えた 1MHz で動作する 65C02 CPU を中心としたシンプルなコンピュータです。システムには 65C22 VIA と 6551 ACIA が搭載されており、後者は本物の Minitel ターミナルとの互換性に不可欠です(W65C51 バリ언トは互換性がありません)。システムのメモリアドレス配列は以下の通りです:0x0000–0x7FFF で RAM(実質 8KB 使用可能)、0x8000–0x9FFF で VIA と ACIA、0xA000–0xBFFF で 32 ピンコネクター(J4)を介して接続された外部スロット(完全な CPU バスを暴露)、0xC000–0xFFFF で ROM。$8000 の VIA は 2 つのアタリ CX40 ジョイスティックポート(ポート A とポート B)を提供し、各ポートのビット 0–4 がそれぞれ Up、Down、Left、Right、Fire を定義します。ソフトウェアは JOY() 関数を通じてこれらの入力を制御します(JOY(0) はポート A、JOY(1) はポート B)。ポート B ビット 7 の VIA タイマーは、提供された周波数-値テーブルを使用して音階を生成します(例:DO が 1911、LA が 1136)。起動時にシステムは src/startup.s を実行し、ACIA と VIA を初期化し、Minitel 1b ターミナルのボーレートを設定し、ブートメニューを表示します。このメニューからユーザーは WOZMON(スティーブ・ウォズニアックによるもの)を起動したり、MS-BASIC のインタプリタを使用して実行したり、スロットから読み込まれた外部 ROM コードを実行したり、システム情報を表示したりできます。外部 ROM の検出には $A000 における最初のオペコードを確認し、$A0 の値は空のスロットを示し、有効な ROM は $A008 から以降のアドレスで実行を許可します。開発者は ca65 および ld65 などのツールを使用してアセンブリコードをコンパイルし、memo.cfg を介して msbasic.s から memo.bin などのファームウェアを生成するための特定のコマンドシーケンスに従う必要があります。このプロジェクトは Benoit Aveline(Memoire Morte)によって CC BY-NC-SA ライセンス(2025 年)の下で公開されており、クレジットを残しつつ変更を歓迎しています。主要な依存関係には WOZMON、BASIC-M6502、Michael Steil の逆アセンブリが含まれます。

本文

メモワール・モルト:65C02 ベースのコンピュータ「メモー 1」

Benno Aveline(別名「メモワール・モルト」) が作成した、娯楽と学習を目的としたシンプルな 65C02 搭載コンピュータです。 プロジェクトページには BOM(材料リスト)、組み立て手順、ROM ファイルなどが公開されています。


技術仕様

  • CPU: 65C02(動作クロック速度:1MHz
  • RAM: 32KB
  • ROM: 16KB
  • 周辺 IC:
    • VIA:W65C22
    • ACIA: W65C51(※注:Minitel 互換性の問題から W65C51 を使用)
  • 拡張機能: 8KB の ROM スロット
  • ターミナル接続: Minitel 1b

メモリーマップ

アドレス範囲 (十六進法)機能
0x0000
-
0x0FFF
RAM
0x1000
-
0x1FFF
RAM
0x2000
-
0x2FFF
RAM
0x3000
-
0x3FFF
RAM
0x4000
-
0x4FFF
RAM
0x5000
-
0x5FFF
RAM
0x6000
-
0x6FFF
RAM
0x7000
-
0x7FFF
RAM
0x8000
-
0x8FFF
VIA
0x9000
-
0x9FFF
ACIA
0xA000
-
0xBFFF
外部スロット (拡張用)
0xC000
-
0xFFFF
ROM

注意: 65C02 は応答しないアドレスで高位ニブルを読み取るため、

$A000
$A0
が読み取られる場合、外部スロットに ROM が存在しないと判断されます。


外部スロット (拡張スロット)

32 ピンのコネクタ (J4) で構成され、CPU バスを完全にオーバーレイしています。 コードを実行するためには、

$A000
$BFFF
の間にコンパイルされた実行可能コードが必要です。

ピン配置

ピンシグナルピンシグナル
1A02D0
3A14D1
5A26D2
7A38D3
9A410D4
11A512D5
13A614D6
15A716GND
17A818GND
19A920
/Ext select
21A1022CLK
23A1124
/IRQ
25A1226
/NMI
27A1328
/RES
29A1430R/W
31A1532+5V
  • オッドピン (奇数): アドレスバス (
    A0
    ~
    A15
    )
  • イブンスロット (偶数): データバス (
    D0
    ~
    D7
    )、制御信号など
  • /Ext select
    : CPU が
    $A000
    ~
    $BFFF
    をアクセスする際にローレベルで有効化されます。

拡張機能

  • 外部 ROM 実行: カスタム名を読み取り、
    $A008
    からコードを実行します。
  • KCS (カセットテープ拡張): BASIC コードやメモリダンプの保存・読み込みに対応します。

VIA (W65C22)

VIA は

$8000
~
$8FFF
の範囲でアクセス可能ですが、割り込みトリガ機能はありません。 2 つのアタリ CX40 ジョイスティックポート を提供しています。

アドレスマップ

  • $8000: ポート B (読み書き可)
  • $8001: ポート A (読み書き可)
  • $8002: データディレクションレジスタ B
  • $8003: データディレクションレジスタ A
  • $8004: タイマー 1 の低バイト
  • $8005: タイマー 1 の高バイト
  • $800B: サポート制御レジスタ

ジョイスティック割り当て

  • ジョイスティック 0: VIA ポート A ビット
    [0~4]
  • ジョイスティック 1: VIA ポート B ビット
    [0~4]
ボタンアクションビット番号
Up (上)-0
Down (下)-1
Left (左)-2
Right (右)-3
Fire (発射)-4

BASIC の

JOY()
関数
$8000
(ポート B)と
$8001
(ポート A)のステータス値を返します。 上位ビット
[5~7]
は将来拡張用として用意されています。

サンプルコード:ジョイスティック動作確認

10 A = JOY(0)
20 IF A = 31 THEN GOTO 10
30 IF A = 30 THEN PRINT "UP"
40 IF A = 29 THEN PRINT "DOWN"
50 IF A = 27 THEN PRINT "LEFT"
60 IF A = 23 THEN PRINT "RIGHT"
70 IF A = 15 THEN PRINT "FIRE"
80 GOTO 10
RUN

TONE ルーチン (サウンド)

ポート B ビット 7 にスクエア波トーンを再生します(クロック:1MHz)。

音階周波数 (Hz)バイナリ値
DO#277.181808
RE#311.131607
MI329.631517
FA#369.991350
SOL#415.301203
SI493.881010
DO261.631911
RE293.661702
FA349.231432
SOL392.001275
LA440.001136
LA#466.161073

サンプルコード:「ラ」の音を鳴らす

10 TONE 1136
20 K = 40
30 FOR I=0 TO K STEP 1
40   PRINT I
50 NEXT I
60 TONE 0
70 END
RUN

ACIA (W65C51)

Minitel ドライバに使用される UART チップです。 (注:W65C51 は Minitel とのハードウェア互換性の問題により、ACIA-6521/6551 同等品として動作 assumed)

レジスタ名アドレス
データレジスタ
$9000
ステータスレジスタ
$9001
コマンドレジスタ
$9002
制御レジスタ
$9003

メニュー画面

起動時 (

src/startup.s
) に表示されるブートメニューです。 システム初期化(ACIA/VIA、ボーレート変更、ローカルエコー無効化)後、以下の選択肢が可能です。

キー操作動作説明
1WOZMON: スティーブ・ウォズニアック氏開発のメモリ検査・編集モニタ
2MS-BASIC: Microsoft BASIC インタープリタを起動
3外部 ROM 実行:
$A000
に ROM が検出された場合のみ表示されます
AAbout: システム情報、ライセンス、クレジットを表示

自動検知機能: メニューは外部 ROM の有無を自動的に検知し、対応するオプションを動的に調整します。


環境とターミナル

ターミナル (Minitel 1b)

  • プロジェクトでは Minitel 1b を想定しています。
  • 実装:
    src/minitel.s
    (簡易的な Minitel ドライバ)
  • 使用チップ:ACIA-6551

注記: Minitel プリンタへの対応は現在開発中です。

コードの組み立て環境

アセンブラ・リンカとして ca65ld65 を使用します。

src
ディレクトリと出力用
out
ディレクトリを前提としています。

基本的なビルドコマンド

cd src
ca65 -D memo msbasic.s -o ../out/memo.o
ld65 -C memo.cfg ../out/memo.o -o ../out/memo.bin -Ln ../out/memo.lbl

エラー対処:
asminc
の不足

longbranch.mac
が含まれていない場合、アセンブラの include パスに
/usr/local/cc65/share/cc65/asminc
を追加してください。

ca65 -I /usr/local/cc65/share/cc65/asminc -D memo msbasic.s -o ../out/memo.o

ライセンスとクレジット

著作権者: Benno Aveline (別名「メモワール・モルト」)
ライセンス: Creative Commons BY-NC-SA (© 2025)
目的: 娯楽および学習を目的としたプロジェクト

特別感謝

  • Ben Eater: 6502 ベースのコンピュータ設計とチュートリアル(CC-B ライセンス)
  • Ian Ward: 2004 LCD と 555 タイマに関する YouTube 動画(ライセンス未明)

パッチコード元ネタ

ソフトウェア著者・会社著作権情報
WOZMONSteve Wozniak© 1976 Apple (知的財産権発生前のコード)
BASIC-M6502Weiland & GatesMicrosoft / MIT ライセンス
MS-BASIC (逆アセンブル版)Michael SteilBSD 2-Clause ライセンス

同じ日のほかのニュース

一覧に戻る →

2026/07/31 2:04

この TV ストックを買う前に読んでください

## Japanese Translation: Bitsight のセキュリティ研究者ペドロ・ファレ(Pedro Falé)が、汎用的な H96 ストリーミングデバイスが秘密裏に自身を携帯電話(サムスン、ビボ、華為(Huawei)、シャオミなど)として偽装し、中国の Fengwo グループ(浙江省 Fengwo IoT Technology Ltd.)が運営する AI 生成ウェブサイト上で広告をクリックさせることを暴露しました。同グループは、これらのデバイスを広告不正のための captive traffic ソースとし、またテレビに接続した際に IP アドレスを貸し出す住宅プロキシとして利用しています。Bitsight は、かつてテレメトリ用に使用された無効化ドメインを経由して「ホームへ電話」している約 38,000 台のそのようなユニットを追跡しました。影響を受けたすべての H96 デバイスには、Fengwo の名称で登録された特許を通じて特定されるように、同グループによってインストールされた 2 つのプロプライエタリなアプリが存在し、低スキルオペレーターが偽装サイトを作成し不正実行ルーチンを動作させることを可能にする簡易的な視覚的プログラミングツール(Google Blockly ベースの実装)を採用しています。ネットワークの AI 生成コンテンツは金融、医療、教育、ゲーム、音楽、食品などのカテゴリにわたっていますが、広告はそのトラフィックが偽装されたモバイルプロファイルから来ている場合에만提供されます。単一の古いドメインからのテレメトリだけでも、この操業は毎日約 50,000 ドルを発生させており、ファレはそれが代金を含めて考慮されていないため控えめであることを警告しました。また、消費者向け IoT における不正プロキシソフトウェアやボットネットについて FBI が警告しているにもかかわらず、Amazon、ベストバイ、Newegg などの主要小売業者は依然として、これら不安全で無印の Android ボックスを販売し続けています。Google は購入者に Play Protect 認証の確認を推奨しており、Synthient は事前にプロキシソフトウェアがプリインストールされた既知の悪意のある IoT デバイスのリストを維持しています。記載されたメールアドレスへの Fengwo グループとの連絡尝试は、受信トレイ容量不足や配信問題のために失敗しました。

2026/07/31 1:26

GitHub に Stacked PR が実装されました

## Japanese Translation: GitHub は、「Stacked Pull Requests」という新機能を導入し、大規模な変更をレビューとマージのために小さな順序付きのレイヤーに分割します。チームは各レイヤーを個別にレビュー・検証でき、個別にマージするか、1 回のクリックですべて準備が整ったレイヤーをまとめてマージできます。このアプローチは、集中したレビューを通じて高いコード品質を維持しつつ、大規模な更新を並列で効率的に進めるように設計されています。既存のブランチ保護設定とシームレスに連携し、GitHub ウェブインターフェース、CLI、モバイルアプリ、Copilot などの AI コーディングエージェント(`gh-stack` スキルを通じて)全体で使用可能です。ユーザーは CLI 拡張機能(`gh extension install github/gh-stack`)をインストールすることで、スタックの作成を 1 分未満で開始できます。現在はすべてのリポジトリで公開プレビュー中であり、自動化されたマージキューへの追加サポートは今後数週間で展開されます。

2026/07/31 0:15

Gemini ロボティクス 2 でロボットに全身知能をもたらす

## Japanese Translation: Google Robotics から、ロボットを複雑な物理的作業と安全な人間の相互作用に適応可能なアシスタントに変容させる画期的な知性層「Gemini Robotics 2」が発表されました。このスイートには、3 つの新しいモデルが含まれています。**Gemini Robotics VLA**は、足先から指先までの完全なヒューマノイドの全身制御を可能にし、**Gemini Robotics ER 2**は身体に埋め込まれた推論を伴う長期的かつ多段階のタスクに対応し、**Gemini Robotics On-Device 2**は最小限のデータを用いて新たな動きを習得でき、Dexmate や SO101 など未慣れなハードウェアにも即座に適応します。システムは、繊細な作業に対応できる特製の 5 本指ハンド(SharpaWave)による高度な巧緻性を示すとともに、複雑な操作には標準の 2 本指グリップサーとも対応しています。多ロボット協調が主要な特徴であり、異なるタイプのロボット同士が通信して単一のユニットでは解決できないワークフローを完了させることができます。安全性は ASIMOV-Agentic など高度なベンチマークを通じて厳格に検証され、安全な近接応答と不安全なツールの呼び出しに対する拒否能力が確保されています。現在、Google AI Studio を通じて早期アクセスパートナーおよびエンタープライズユーザーに利用可能です。これらの革新により、多様な環境において広範な再学習なしに効率的な多ロボットワークフローを実現できます。 ## Text to translate: Google Robotics introduces Gemini Robotics 2, a groundbreaking intelligence layer that transforms robots into adaptable assistants capable of complex physical tasks and safe human interaction. The suite includes three new models: **Gemini Robotics VLA** for whole-body control of full humanoids (feet to fingertips), **Gemini Robotics ER 2** for long, multi-step tasks involving embodied reasoning, and **Gemini Robotics On-Device 2** which allows robots to master new movements using minimal data, adapting instantly to unfamiliar hardware like the Dexmate or SO101. The system demonstrates advanced dexterity through specialized five-fingered hands (SharpaWave) capable of delicate tasks, while also supporting standard two-fingered grippers for complex manipulation. Multi-robot collaboration is a key feature, enabling different robot types to communicate and complete workflows that a single unit cannot solve alone. Safety is rigorously validated via advanced benchmarks like ASIMOV-Agentic, ensuring secure proximity responses and the ability to refuse unsafe tool calls. Currently available to early-access partners and enterprise users via Google AI Studio, these innovations enable efficient multi-robot workflows across diverse environments without extensive retraining.