はじめに
Fuzixの情報を調べていると、Z80マシンで動作するuzi、MSXで動作するuZixを参考に、Fuzixが作成されたことがわかります。
uziの動作環境の情報は失われ、ハードとソフトに強い自作勢が、自身の作成したZ80ボード上にuziを移植して動作させています。
本稿では、市販のボードに移植されたuziを紹介します。なお、本稿の内容には、「OSC2024名古屋」で行われた「Fuzixユーザーグループ」の展示内容を含みます。
2024年のuziの動作環境
UZIは"Unix: Z80 Implementation"の略号で、RAMサイズが64 KBののZ80を搭載したコンピュータ用びUNIXカーネルを搭載したOSです。1980年代中ごろ、Douglas Braunさんにより作製されました。バージョン7のUNIXカーネルのほとんどの機能が移植されています。
Z80用のDOSである、CP/Mのコマンドとして起動します。その後、Z280に移植されました。
2024年現在、お手軽に構築できそうなuziの動作環境には、主に、以下の2件があります。
1つは、FPGAでZ80コンピュータの環境を構築した「socz80」です。ここで使用するFPGAボードは、Papilio Proボードです。
ハードウェアのスペックは以下の通りです。
・128 MHzで動作するT80CPUコンパチのZ80
・4 KBのページングMMU(64 KBが仮想で、64 MBの物理アドレス空間)
・16 KBのダイレクトマップ方式の8 MBのSDRAM(128 MHz駆動)
・モニタープログラム搭載の4 KBのROM
・4KBのSRAM
・FIFOを受信可能なUART
・2つ目のUARTも利用可能
・1 MHzのタイマー
・SPIのマスターはSPI接続されたフラッシュROMに接続
・SPIのマスターはオプションで取り付けるSDカードソケットにも接続
・GPIO
2つ目は、自作ボードのsmariboardに搭載されるuzicsです。
ここでは、入手容易なボードのPapilio Proボードを使ったsocz80上のuziを取り上げます。
Socz80の環境構築
Socz80のサイトに掲載のREADME.txtに環境構築法が掲載されています。このテキストには、ボードの構造も記載されていますので、自作プログラムを作成する際に参考になります。
ここで必要な情報は、UARTの端子、必要ならば、SDカードスロットで利用するSPI端子です。
P131 -- 3.3 Vを入力するとリセット
P126 -- LED1 (出力)
P124 -- LED2 (出力)
P127 -- LED3 (出力)
P123 -- LED4 (出力)
P118 -- UART1 TX (出力)
P119 -- UART1 RTS (出力)
P120 -- UART1 RX (入力)
P121 -- UART1 CTS (入力)
P134 -- コンソール選択用ジャンパ (GNDに接続すると UART1がシステムコンソール)
P116 -- SDカードソケット card socket SPI CLK (出力)
P114 -- SDカードソケット SPI CS (出力)
P115 -- SDカードソケット SPI MOSI (出力)
P117 -- SDカードソケット SPI MISO (入力)
以降は、Linuxマシンを使った操作となります。
まず、最新の「socz80-2014-04-30.tar.gz」をダウンロードします。
2番目に、Papilio ProのFPGAへbitstrem「papilio_pro_spartan6.bit"」を書き込む際に必要なコマンド「papilio-prog」をリポジトリからgitcloneします。
3番目にFPGAのビットストリーム「papilio_pro_spartan6.bit」を「papilio-prog -f」を使ってアップロードします。
4番目にRAMディスクのイメージをアップロードします。
./software/tools/write_phys_mem ./disk-images/disk-200000.img 200000 /dev/ttyUSB1
./software/tools/write_phys_mem ./disk-images/disk-400000.img 400000 /dev/ttyUSB1
./software/tools/write_phys_mem ./disk-images/disk-600000.img 600000 /dev/ttyUSB1
最後に、アップロードしたRAMディスクのイメージをROMに保存します。
rwrite 200 200
rwrite 400 400
rwrite 600 600
ROMに保存したイメージは、以下のコマンドでRAMディスクに再読み込み可能です。
rread 200 200
rread 400 400
rread 600 600
UZIの起動
Socz80の電源を入れると、「Z80 ROM Monitor」が起動します。
ROMディスクからRAMディスクにファイルを転送して、200ページからrbootすると、CP/Mが起動します。
Socz80では、uziのディスクは1番に保存されています。CP/Mが起動した後、Aドライブのコマンドプロンプトで「uzi 1」と入力します。
A>uzi 1
カーネルが起動し、コマンド入力時に指定したドライブ上のルートファイルシステムをマウントします。
シリアル端末には、Wio terminalを使用しています。
おわりに
Socz80の環境は、様々なFPGAボードに移植されています。
DE0-nano, DE2 と DE2-70用では、
Alan Coxの移植、Lattice EC5ボード用では、
これらの情報を参考にすると、最近販売されているFPGAでも、socz80の環境を実現することが可能でしょう。