SBCZ8002でhello,worldに成功

Z8002でhello, worldをやるぞって目標を立てたのが約2箇月前。案の定、間抜けな失敗を繰り返しながらも何とかゴールに辿り着いたので経緯を報告する。ハードウェアの現状を下に示す。Z8002の発熱が予想を超えたが、45℃以下にはとどまる模様。なお、このプリント基板には間違いがあり、現在、修正したものが工場を出て我が家へ向かっている。

sbcz8002_photo1

Z8002はアドレス信号がワード指定のバイト選択。すなわち、A1~A15でワードを指定し、A0で上位バイト/下位バイトを区別する。そのくらいは先刻ご承知だぜってことでメモリはうまく接続したが、体が慣れていなかったのかESCC(Z85230)の接続を間違えた。

sbcz8002_photo2

プリント基板のパターンの2箇所を切断し、電線で正しい接続に修正。結果として回路の間違いはここだけなのだが、間違いが1箇所だろうが100箇所だろうがプリント基板を作り直さなければならないことは同じ。そう考えると、これはむしろ痛恨のミスといえる。

sbcz8002_photo3

最初に実行してみたプログラムはリセットしてすぐ永久ループに入るやつ。Z8002のメモリアドレスは先頭ワードが無効、次のワードがフラグの初期値、次のワードが開始アドレス。で、偶数アドレスのコードを奇数ROMに持っておくヘンタイな構造。開発ツールを使うとこの構造をどう処理するかわからないから、ハンドアセンブルして書き込みソフトへ手入力。何度か暴走させたのちハンドアセンブルのミスを発見、修正して成功。

sbcz8002_photo4

ここからはESCCと格闘。コマンドチェインで初期化するやりかたはZ80 SIOと同じ、コマンドの働きもZ80 SIOとそっくりなんだけど、設定と同時に設定を有効にしてはいけないなど微妙に違うし、マニュアルのところどころに誤植がある。こうした罠に足をとられ、こけつまろびつしながらSCC初期化ワークシートを埋めた。これ、ザイログのアプリケーションズリファレンスに付いてるやつ。1970年代のみんなも悩んだんだろうね。

sbcz8002_photo5

hello, worldを表示するプログラムは、さすがにハンドアセンブルというわけにはいかなくてLinuxのクロスアセンブラを使った。ただし、この時点ではHEXファイルを作る方法がわからなかったし、もし作れても偶数/奇数コードの振り分けができないから、リスティングを見て書き込みソフトへ手入力。動かなかったらこのひどい力仕事をやり直し。

sbcz8002_photo6

数回のやり直しを経てhello, worldが表示され、続いてエコーバックテストにも成功。このプログラム、出来上がったものを見ると何てことはなくて、頑張れば誰にでも書けそうな感じ。問題は、正しいプログラムが正しく動くとは限らない状況で、頑張れるかどうかだよね。徒労に終わるかもしれない作業をちゃんとやれるのも才能だと思う。

sbcz8002_photo7

その後、Linuxのクロス開発ツールを徹底的に調べ上げ、現在はC言語のソースから直接ROMイメージを作る方法までわかっている。そのへんとハードウェアの詳細は、のちほど改めて紹介する。この投稿は、とりあえず、こんなに頑張ったんだぜって言うのが目的。hello, worldを成し遂げたんだから、そのくらいは認めてもらいたい。そして、修正したプリント基板が届き、最終確認ができたら、予告どおりお祭り騒ぎだぜ。

カテゴリー: Z8000 パーマリンク

コメントを残す