Skip to content

ryomuk/emu8080on4004

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

emu8080on4004

Intel 8080 Emulator on 4004 Evaluation Board

This document is written mostly in Japanese. If necessary, please use a translation service such as DeepL (I recommend this) or Google.

概要

自作の4004実験用ボードと,その上で動作する8080エミュレータです.Palo Alot Tiny BASIC(4K整数型BASIC)や,Grant Searle's BASIC(8K浮動小数点BASIC)の8080移植版がほぼそのまま動くレベルの機能が実現できています.動作速度は8080実機の1/700程度です.

制限事項等

  • P(パリティ)フラグの実装は正確ではありません.{J,C,R}{PO,PE}実行時にAレジスタの値から計算されます.
  • DAA命令の実装は正確ではありません.
  • IN命令(コントロールレジスタ)はACC=0xFF(データあり)を返します.
  • IN命令(データレジスタ)は4004ボードのソフトウェアで実装されたUARTのGETCHARを呼ぶので,入力されるまで止まります.
  • OUT命令はAレジスタを4004ボードのシリアルポートに出力します.
  • 割り込み関連命令(DI, EI)は未実装です.

実験ボードの仕様

ブレッドボード版プロトタイプの仕様

  • CPU: Intel 4004
  • Clock: 740kHz
  • DATA RAM: 4002-1 x 2 + 4002-2 x 2 (計320bit x 4)
  • Program Memory
    • ROM: AT28C64B (8k x 8bit EEPROM)
      • 000H〜EFFHの3.75KB利用可能
    • RAM: HM6268(4k x 4bit SRAM)x 2個
      • 物理メモリ F00H〜FFDHの254byte x 16バンク (上記を論理メモリ 000H〜FDFHにマッピングしてアクセス)
  • 通信ポート: 9600bps Software Serial UART (TTL level)

Rev.2.1版の仕様(ブレッドボード版との差分)

  • Program Memory
    • DATA RAM: ピンヘッダの設定により4002-1 x 4の構成も可能ですが,その場合はソフトウェアでRAM2, RAM3をアクセスしている部分を修正する必要があります.
    • ROM: AT28C64B, AT28C256, 2764, 27256をDIPスイッチで選択可能なように設計しましたが,動作確認はAT28C64Bで実施.それ以外は未確認です.
    • RAM: HM624256(1Mbit(256k x 4bit) SRAM)x 2個
      • 物理メモリ F00H〜FFDHの254byte x 256バンク (上記を論理メモリ 0000H〜FDFFHにマッピングしてアクセス)

ToDO

  • メモリ64KBに拡張 → Rev.2.1で実現(2023/4/12)
  • プリント基板作成 → Rev.2.1で実現(2023/4/12)
  • IN命令時にTESTキーを使ったSTOPボタン相当の機能の実装

動画

Youtubeで関連動画を公開しています.

ブログ

関連する情報が書いてあるかも.

4004関連開発事例

データシート

開発環境

画像集

  • ブレッドボード版のプロトタイプ
  • プロトタイプでPalo Alto BASIC実行
  • Rev.2.1基板
  • ブレッドボード版とRev.2.1基板
  • 8K BASIC 起動画面

更新履歴

  • 2023/3/21: 初版公開
  • 2023/4/3: SUBフラグ(NEC uPD8080A, uCOM-80用)に関するコードを削除
  • 2023/4/12: 基板(Rev.2.1)に合わせていろいろ更新.ブレッドボード版はprototypeフォルダに移動
  • 2023/4/15: emu.asmにレジスタ表示しながらの連続実行とTESTボタンでの停止機能を追加
  • 2023/4/16: ADC, ACIにバグ(0+FFH+Carrry(1)でCarryが立たない)があったので修正.

Releases

No releases published

Packages

No packages published

Languages