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

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


[第186回]



●INC/DEC REGISTER(9)BASICでテスト

前回はND80Z3.5をWindowsパソコンにUSB接続してZB3BASICのマシン語モニタコマンドを使って簡単な動作テストをしてみました。
今回はBASICプログラムでテストをしてみることにします。
BASICプログラムはマシン語のプログラムに比べて実行速度が遅いという欠点がありますが、その代わりにプログラムを組むのは極めて簡単です。
今回のようにとりあえずは速度は遅くてもよいというようなテストにはBASICは最適のツールです。
なんたって簡単なプログラムならいきなりキー入力してちょいちょいでできてしまいます。
下は「ちょいちょい」で作ってしまったテストプログラムです。

    10 OUT $83,$90
    20 OUT $82,$FF
    30 OUT $81,$FF
    40 OUT $83,$08
    50 PRINT "dec"
    60 FOR A=0 TO 16
    70 OUT $83,0
    80 OUT $83,1
    90 PRINT HEX$(IN($80))
   100 NEXT A
   110 PRINT "inc"
   120 OUT $83,4
   130 FOR A=0 TO 16
   140 OUT $83,2
   150 OUT $83,3
   160 PRINT HEX$(IN($80))
   170 NEXT A

最初はデクリメントのテストを行い、続いてインクリメントのテストを行ないます。
下は実行結果です。

>r.
dec
DF
DE
DD
DC
DB
DA
D9
D8
E7
E6
E5
E4
E3
E2
E1
E0
DF
inc
E0
E1
E2
E3
E4
E5
E6
E7
D8
D9
DA
DB
DC
DD
DE
DF
E0

こういうことが即席で簡単にできてしまうのがBASICの強みですし、なによりこのようなI/O制御が簡単に行なえるというのがND80Z3.5の強みでもあります。

さていよいよデータWRITEのテストです。
今度はちょっと長いプログラムですから「ちょいちょい」というわけにはいきませんが、それでも即席で作ってしまいました。
本当はこれもFOR〜NEXTを使ってちょっと工夫すればもっと短いプログラムにできるのですが、一度作って使えばそれでほぼ用済みのプログラムですから、こういう場合は多少長くなっても単純なもののほうがよいと思います。
実は部分的に作ってとりあえず動作を確認してあとはそれをコピーしながら継ぎ足し継ぎ足しで作ってしまいました。
ですのでデータWRITEをしているところ(OUT $81,$XX)のデータが変化しているだけであとは同じことの繰り返しです。

    10 OUT $83,$90
    20 OUT $82,$FF
    30 OUT $81,$FF
    40 OUT $83,6
    50 OUT $83,7
    60 OUT $83,8
    70 PRINT HEX$(IN($80))
    80 OUT $83,9
    90 OUT $81,$FE
   100 OUT $83,6
   110 OUT $83,7
   120 OUT $81,$FF
   130 OUT $83,8
   140 PRINT HEX$(IN($80))
   150 OUT $83,9
   160 OUT $81,$FD
   170 OUT $83,6
   180 OUT $83,7
   190 OUT $81,$FF
   200 OUT $83,8
   210 PRINT HEX$(IN($80))
   220 OUT $83,9
   230 OUT $81,$FB
   240 OUT $83,6
   250 OUT $83,7
   260 OUT $81,$FF
   270 OUT $83,8
   280 PRINT HEX$(IN($80))
   290 OUT $83,9
   300 OUT $81,$F7
   310 OUT $83,6
   320 OUT $83,7
   330 OUT $81,$FF
   340 OUT $83,8
   350 PRINT HEX$(IN($80))
   360 OUT $83,9
   370 OUT $81,0
   380 OUT $83,6
   390 OUT $83,7
   400 OUT $81,$FF
   410 OUT $83,8
   420 PRINT HEX$(IN($80))
   430 OUT $83,9
   440 OUT $81,1
   450 OUT $83,6
   460 OUT $83,7
   470 OUT $81,$FF
   480 OUT $83,8
   490 PRINT HEX$(IN($80))
   500 OUT $83,9
   510 OUT $81,2
   520 OUT $83,6
   530 OUT $83,7
   540 OUT $81,$FF
   550 OUT $83,8
   560 PRINT HEX$(IN($80))
   570 OUT $83,9
   580 OUT $81,4
   590 OUT $83,6
   600 OUT $83,7
   610 OUT $81,$FF
   620 OUT $83,8
   630 PRINT HEX$(IN($80))
   640 OUT $83,9
   650 OUT $81,8
   660 OUT $83,6
   670 OUT $83,7
   680 OUT $81,$FF
   690 OUT $83,8
   700 PRINT HEX$(IN($80))
   710 OUT $83,9


下が実行結果です。

>r.
DF
DE
DD
DB
E7
E0
E1
E2
E4
D8

ビット0からビット3の1ビットだけを順に最初は0にし、次は1にするようなデータを書き込んで、すぐにその結果を読み出して表示しています。
今回のテストによって、追加変更を行なったINC/DEC REGISTER回路が正しく動作することが確かめられました。
同時にND80Z3.5+ZB3BASICがこういう用途に実に重宝であることもおわかりいただけたことと思います。

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

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