X1 BASIC-ROM(CZ-8RB)

■ 回路図

論理的に間違ってるとかあったら、ツイッターとかで教えてください(@morian)。プルリク出してもらえると嬉しいです。

配線が雑なのは許してください。

(クリックで拡大)

以下の場所に、KiCad用のプロジェクト一式を置いてあります。回路図をおこしてフットプリントの作成までしてみました。(作り方が適切かどうかはわかりません)

X1用BASIC ROMボード CZ-8RB回路

■ 基板写真

(クリックで拡大)

■ 基板外形

てきとーに測りました。実物は角の部分がマルッとしてます。外形図なのでエッジコネクタ部分の金属端子までの余白があります。

基板の厚さは1.6mmです。

■ BASIC-ROMボードへのアクセス

ボード上のROMがZ80空間に配置されるのではなく、X1本体側(Z80側)から、I/Oポートを通して1バイト単位でボード上のROMから読み込みを行います。

アドレス指定 I/Oポート

I/Oポート 用途
0E00h アドレス上位
0E01h アドレス中位
0E02h アドレス下位

データ読込みI/Oポート

I/Oポート 用途
0E03h 指定されたアドレスのデータ

■ 電源投入時の動作

IPL ROMは電源投入時にBASIC ROMボード上のアドレス000000Hから1バイト読み込みし、それが01HであればBASIC-ROMボードにアクセスできるものと判定し、BASIC-ROMからプログラムを読み込み、実行を開始します。

BASIC-ROMボードからのプログラム読み込み処理は以下の流れになります。

  1. BASIC-ROMアドレスの000001hから20hバイト分をX1本体側RAMのFF00hからに読み込む
  2. FF01hからの0Dh分を画面上部にテキストとして表示する
  3. FF1Dh,FF1Eh,FF1FhからのBASIC-ROMアドレスから、FF12,FF13hの長さ分だけ、FF14h、FF15hに読み込む
  4. FF16h,FF17hをHLレジスタに読み込んでJP (HL)でBASIC起動

BASIC-ROM上の最初の20hバイト分は以下の内容になっています。

アドレス 用途 データ ASCII

000000h

CHECK用

01h

 
000001h 起動メッセージ 42h B
000002h 41h A
000003h 53h S
000004h 49h I
000005h 43h C
000006h 20h  
000007h 43h C
000008h 5Ah Z
000009h 38h 8
00000Ah 52h R
00000Bh 42h B
00000Ch 30h 0
00000Dh 31h 1
00000Eh   20h  
00000Fh   20h  
000010h   20h  
000011h   20h  
000012h 読込む長さ 00h  
000013h A6h  
000014h Z80側読込み先 00h  
000015h 00h  
000016h Z80側開始アドレス 00h  
000017h 00h  
000018h   20h  
000019h   20h  
00001Ah   20h  
00001Bh   20h  
00001Ch   20h  
00001Dh

BASIC ROM読込み元アドレス

20h  
00001Eh 00h  
00001Fh 00h  

■ X1のI/Oアドレス空間

アドレス 用途
0000 ユーザI/Oポート
0FFF
1000 システムI/Oポート
1FFF
2000 属性V-RAM
27FF
   
3000 テキストV-RAM
37FF
   
4000

GRAPHIC V-RAM1(B)

7FFF
8000 GRAPHIC V-RAM1(R)
BFFF
C000 GRAPHIC V-RAM1(G)
FFFF

■ 拡張I/Oポート

拡張I/Oポートコネクタピン配置図(本体後面側から見た図)

A側(上部) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
B側(下部) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

※X1Cのマニュアルでは端子番号の並びが左右逆になっています。

信号名

端子番号 A側信号名 B側信号名
1 Vcc1 Vcc1
2 DB2 DB3
3 DB1 DB4
4 DB0 DB5
5 GND DB6
6 AB15 DB7
7 AB14 CPU CLK
8 AB13 ^M1
9 AB12 ^WR
10 AB11 ^RD
11 AB10 ^IORQ
12 AB9 ^MREQ
13 AB8 GND
14 AB7 ^HALT
15 AB6 IEI
16 AB5 N.C.
17 AB4 RESET
18 AB3 ^EXIO
19 AB2 ^EXINT
20 AB1 ^EXWAIT
21 AB0 ^NMI
22 GND GND

■ 拡張I/Oポート信号用途

信号名 論理 用途
DB0-7 データバス
AB0-15 アドレスバス
CLK   単相4MHzのクロック出力
^M1 Z80 M1
^WR Z80 WR
^RD Z80 RD
^IORQ Z80 IORQ
^MREQ Z80 MREQ
^HALT Z80 HALT
IEI 割込みイネーブル入力信号
RESET Z80 HALT
^EXIO 0000h-0fffhまでのアドレスデコード出力
^EXINT 外部機器からの割込み要求信号
^EXWAIT 外部機器からのウェイト信号
^NMI 外部機器からのNMI割込み要求信号

■ X1起動時のメモリ構成

電源投入時(IPL起動時は)、Z80メモリ空間の0000-0FFFhに4KByteのIPL ROMが配置され、メモリからの読込みはIPL ROM、書込みはRAMになります。また、この時のメモリ読み込み動作はWAITが1つ挿入されます。8000-FFFFhへの読み書き先はRAMになります。

IPLからシステムが以降すると、IPLはZ80メモリ空間から切り離され、RAM全領域(64KByte)への読み書きとなります。