トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
[第189回]
●DATA GATE(3)
今回は前回作成したケーブルコネクタを使ってDATA GATE試作基板をND80Z3.5の82C55コネクタに接続してBASICプログラムで動作テストを行ないます。
参考までに前回お見せしたケーブルコネクタの結線図を再掲します。
下が今回も即席で作ってしまったBASICプログラムです。
5 PRINT "dx to Dx out" 10 OUT $83,$90:'A in,B,C out 20 OUT $81,$7F:'out 30 A%=1 40 FOR B%=0 TO 7 50 OUT $82,A% 60 PRINT HEX$(A%),HEX$(IN($80)) 70 PRINT BI$(A%),BI$(IN($80)) 80 A%=A%*2 90 NEXT B% 95 PRINT "Dx to dx in" 100 OUT $83,$89:'A,B out,C in 110 OUT $81,$BF:'in 130 A%=1 140 FOR B%=0 TO 7 150 OUT $80,A% 160 PRINT HEX$(A%),HEX$(IN($82)) 170 PRINT BI$(A%),BI$(IN($82)) 180 A%=A%*2 190 NEXT B% |
こういうことが簡単にできてしまうところがBASICの最大の利点です。
最初にCポートからデータを出力してそれをAポートから入力します。
出力データはビット0からビット7まで1ビットだけを1にしてそれを順にシフトしていきます。
次にAポートから同じようにしてデータを出力してそれをCポートから入力します。
下が実行結果です。
>r. dx to Dx out 1 8 00000001 00001000 2 4 00000010 00000100 4 2 00000100 00000010 8 1 00001000 00000001 10 80 00010000 10000000 20 40 00100000 01000000 40 20 01000000 00100000 80 10 10000000 00010000 Dx to dx in 1 8 00000001 00001000 2 4 00000010 00000100 4 2 00000100 00000010 8 1 00001000 00000001 10 80 00010000 10000000 20 40 00100000 01000000 40 20 01000000 00100000 80 10 10000000 00010000 |
前回書きましたようにDATA GATEコネクタとND80Z3.5の82C55コネクタの端子信号の配列は全く異なっていますから、出力と入力の結果は全く異なっています。
しかしよく見ると規則性があってきれいに並んでいます。
じつはたまたま両方のケーブルコネクタの端子配列がうまく規則的に対応していたのです。
ねらってこのように配置、接続したわけではありません。
ケーブルの接続にあわせて信号端子を追ってみましょう。
(82C55の)A0→(DATA GATEの)D6→d6→(82C55の)C3
A1→D7→d7→C2
A2→D4→d4→C1
A3→D5→d5→C0
A4→D1→d1→C7
A5→D0→d0→C6
A6→D3→d3→C5
A7→D2→d2→C4
そのように考えて上のプログラムでのテスト結果を見ると正しい結果が得られていることがわかります。
トランジスタでCPUをつくろう![第189回]
2019.12.28upload
前へ
次へ
ホームページトップへ戻る