2020.4.8
前へ
次へ
ホームページトップへ戻る

トランジスタでCPUをつくろう!
トランジスタで8080をつくってしまおうというまさにびっくり仰天、狂気のプロジェクトです!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
見事にできましたら、もちろんTK−80モニタを乗せて、それからBASIC、CP/Mを走らせましょう!
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


[第213回]



●命令デコード回路(15)DECODE3テストプログラム(2)

DECODE3のテストプログラムは[第211回]で作りました。
DECODE1とDECODE2からの出力を合わせることで命令回路をアクティブにする回路のテストでした。
今回はDECODE3のもうひとつの回路、DECODE5基板の回路をアクティブにするための信号回路のテストです。
その回路については[第209回]で回路図をお見せしましたがプログラムの説明の参考にするため下に再掲します。

回路は2つの部分に分かれています。
1つは図の右下にあるIC219セレクト回路です。
OP7=0、OP6=0、OP2=0、OP1=1、OP0=0のときに出力がアクティブ(H)になります。
OP7=OP6=0は”00”信号としてDECODE1から出力されます。
OP2〜OP0の信号もDECODE1から出力されていずれも20pinコネクタに配置されています。
DECODE3のもう1つの回路はIC9セレクト回路です。
こちらは少し複雑です。
DECODE2(”11”に設定)からの出力信号とT4、T8のANDをとってそれをOR回路を通して出力します。
具体的にはDECODE2のY0出力とT4のAND、Y2とT8のAND、Y4とT8のANDです。
最終的に出力される信号はアクティブHです。
IC219セレクト回路は1つだけですがIC9セレクト回路は3つの回路のORですから都合4通りの回路をテストすることになります。
各回路の出力に接続されるDECODE5回路はOP5〜OP3が000〜111である場合にそれぞれの出力をアクティブにします。
そのDECODE5をテストするときにも利用できるようにと考えてプログラムを作りました。
下がそのプログラムリストです。

    10 OUT $83,$82
    20 PRINT "00b5b4b3010"
    30 X%=$10
    40 GOSUB 200
    50 PRINT "11b5b4b3010 T4"
    60 X%=$03
    70 OUT $82,$02
    80 GOSUB 200
    90 PRINT "11b5b4b3010 T8 Y2"
    95 X%=$13
   100 OUT $82,$40
   110 GOSUB 200
   120 PRINT "11b5b4b3010 T8 Y4"
   130 X%=$83
   140 OUT $82,$40
   150 GOSUB 200
   160 PRINT "end"
   170 STOP 
   200 A%=X%:OUT $80,A%
   210 B%=IN($81)
   220 PRINT "000 ",HEX$(A%,2),BI$(A%),HEX$(B%,2),BI$(B%)
   230 A%=$40+X%:OUT $80,A%
   240 B%=IN($81)
   250 PRINT "001 ",HEX$(A%,2),BI$(A%),HEX$(B%,2),BI$(B%)
   260 A%=$04+X%:OUT $80,A%
   270 B%=IN($81)
   280 PRINT "010 ",HEX$(A%,2),BI$(A%),HEX$(B%,2),BI$(B%)
   290 A%=$44+X%:OUT $80,A%
   300 B%=IN($81)
   310 PRINT "011 ",HEX$(A%,2),BI$(A%),HEX$(B%,2),BI$(B%)
   320 A%=$08+X%:OUT $80,A%
   330 B%=IN($81)
   340 PRINT "100 ",HEX$(A%,2),BI$(A%),HEX$(B%,2),BI$(B%)
   350 A%=$48+X%:OUT $80,A%
   360 B%=IN($81)
   370 PRINT "101 ",HEX$(A%,2),BI$(A%),HEX$(B%,2),BI$(B%)
   380 A%=$0C+X%:OUT $80,A%
   390 B%=IN($81)
   400 PRINT "110 ",HEX$(A%,2),BI$(A%),HEX$(B%,2),BI$(B%)
   410 A%=$4C+X%:OUT $80,A%
   420 B%=IN($81)
   430 PRINT "111 ",HEX$(A%,2),BI$(A%),HEX$(B%,2),BI$(B%)
   440 RETURN 

いずれの回路のテストも入力はAポートからの出力で、結果はBポートから入力されます。
そこで共通する部分をサブルーチンにまとめました。
200〜の部分です。
今回のAポートからの出力データはビット並びの変換を行なっていないためちょっとわかりにくいところがあります。
実はAポートに出力するところのOP5〜OP3の部分は[第195回]のテストプログラムの後半部分を利用しました。
サブルーチンのA%のところの定数項はそのプログラムからの引用です。
それと合成するX%の値はOP7、OP6、OP2、OP1、OP0のビットの値をビット並びを変換しないでAポートに与えるときの値です。
下が実行結果です。

>r.
00b5b4b3010
000          10           00010000     96           10010110
001          50           01010000     96           10010110
010          14           00010100     96           10010110
011          54           01010100     96           10010110
100          18           00011000     56           01010110
101          58           01011000     56           01010110
110          1C           00011100     56           01010110
111          5C           01011100     56           01010110
11b5b4b3010 T4
000          03           00000011     A9           10101001
001          43           01000011     A9           10101001
010          07           00000111     A9           10101001
011          47           01000111     A9           10101001
100          0B           00001011     69           01101001
101          4B           01001011     69           01101001
110          0F           00001111     69           01101001
111          4F           01001111     69           01101001
11b5b4b3010 T8 Y2
000          13           00010011     A9           10101001
001          53           01010011     A9           10101001
010          17           00010111     A9           10101001
011          57           01010111     A9           10101001
100          1B           00011011     69           01101001
101          5B           01011011     69           01101001
110          1F           00011111     69           01101001
111          5F           01011111     69           01101001
11b5b4b3010 T8 Y4
000          83           10000011     A9           10101001
001          C3           11000011     A9           10101001
010          87           10000111     A9           10101001
011          C7           11000111     A9           10101001
100          8B           10001011     69           01101001
101          CB           11001011     69           01101001
110          8F           10001111     69           01101001
111          CF           11001111     69           01101001
end

break in 170

最初はIC219セレクト回路のテストです。
219S出力はBポートのビット1から入力されます。
結果はBポートのビット1は全て1(アクティブH)になっています。
なおビット0は9S出力です。
ここでは全て0になっています。
このときの入力信号の組み合わせでは9S出力はアクティブにならないことが確認できます。
今回のテストではそのほかのビットは無視します。
次の3グループはIC9セレクト回路のテストです。
9S出力はBポートのビット0から入力されます。
いずれの結果もBポートのビット0は1(アクティブH)になっています。
なおこのときのビット1はすべて0になっています。
このときの入力信号の組み合わせでは219S出力はアクティブにならないことが確認できます。

以上でDECODE3試作基板の動作テストが完了しました。

トランジスタでCPUをつくろう![第213回]
2020.4.8upload

前へ
次へ
ホームページトップへ戻る