Memory systems and peripherals implemented on Tang Nano 20K for Intersil IM6100 PDP-8 Processor
This document is written mostly in Japanese, so please use machine translation if necessary.
- PDP-8の命令セットを持つCPU「Intersil IM6100」のメモリシステムと周辺回路をFPGA(TangNano20K)上に実装する試みです.
- FPGAに実装するのはメモリ,UART, HDDなどの周辺装置の部分だけで,CPU自体は本物を使用します.ソフトウェアやFPGAによるシミュレータやエミュレータではなく,実物のCPUを動かします.
- "TangNano6100"だとTangNano上にIM6100を実装したみたいな名前になってしまうので,"MEM"を付けて"TangNano6100MEM"という名前になっています.
- モニタプログラムとして,Haruo Asano氏によるUniversal MonitorIM6100版をControl Panel空間で動くように改変したものを搭載しました.MITライセンスだったので,使用した部分のソースを同梱しています.
- 2026/01/28: 初版公開
- 2026/02/01: version 20260201, 紙テープエミュレータ実装
- 2026/02/02: version 20260202, 割り込み関連のバグ修正
- 2026/02/02: CP空間のuniversal monitorにコンテキストの保存復帰を実装しました.
- 2026/02/06: version 20260206, 拡張メモリ関連の微修正
- 2026/02/06: OS/8のRK2, RK3を有効化する方法についてのドキュメントを追加.
.
├── doc : 説明用文書
├── hdl : Gowin EDA用プロジェクト
│ ├── old : 旧版のバックアップ(あれば)
│ └── TangNano6100MEM_project: HDLソース一式
│ └── src
│ ├── dbglog.v : debug log用モジュール
│ ├── mem.v : メモリ初期データ(OS/8 bootloader)
│ ├── mem_cp.v : CPメモリデータ(unimon)
│ ├── sdhd.v : HDエミュレータモジュール
│ ├── sdtape.v : 紙tapeエミュレータモジュール
│ ├── switch.v : スイッチ用モジュール
│ ├── TangNano6100MEM_project.sdc : 時間制約(適当)
│ ├── tn20k.cst : 物理制約(ピンアサイン)
│ ├── top.v : メインプログラム
│ ├── uart.v : uartモジュール
│ ├── ws2812.v : WS2812モジュール
│ └── ws2812_matrix.v : WS2812 matrix用モジュール
├── images : 文書用画像ファイル
├── LICENSE
├── pcb
│ └── rev2.1 : 回路図,基板データ等(KiCAD 9用)
├── README.md : このファイル
└── tools
├── papertape
│ └── ptp2v.c : 紙テープバイナリ変換用ソフト
├── sample : bootやテスト用プログラム(unimonで書く用)
└── unimon : Universal Monitor
├── im6100 : IM6100 Control Panel版
└── LICENSE.txt : 上記のライセンスファイル
各種説明はdoc/に項目に分けて記載しています.
以下,雑多な情報です.
- 紙テープソフトやOS/8およびOS/8上で動く言語処理系などがある程度動作します.
- OS/8のBASICで簡単なプログラムを入力したりセーブ/ロードしたりできます.
- STRTRK.BAやSNOOPY.BAが動きました.
- コントロールパネル空間でUniversal Monitorが動きます.
- ステップ実行後に戻ってくるとおかしくなることがある.
OS/8版のFOCALが動かない.おそらく割り込み関連の問題.→ やはり割り込みの問題でした.20260202版で修正して解決.OS/8でDIR SYS: はできるが DIR RKA0: は止まる.→ PDP/8ハンドブックの誤植が原因でした.RK_DONEフラグを修正したら動くようになりました.OS/8 BASICでSTRTRK.BAやSNOOPY.BAが動かない.動きました.
- 紙テープイメージからOS/8のディスクイメージを作成.
- → ある程度はできたのですが,CCL.SVがうまく作れなかったりEPICの動作が不安定なのであきらめました.
- 磁気テープドライブエミュレータ実装.(紙テープは実装済なので,必要でなければやらないかも)
- → いろいろ面倒な仕様があったのであきらめました.
