AppleIIを80桁にする
- 2022/11/10 13:25
- カテゴリー:マニアックなおはなし
AppleIIの拡張カードの最後の砦,80桁カードを買いました。オークション,ジャンク,Videx VideoTermのデッドコピーです。
もともと40桁がAppleIIらしくて好みなのですが,CP/Mを使うようになると不便で,WordMasterなどのエディタは80桁前提なのでほぼ使い物になりません。
わざわざAppleIIでCP/Mをやることもないと思いますし,それに140KBしかない片面フロッピーでは不便極まりなく,つくづくX1をCP/Mマシンにした方が幸せになると思ったわけですが,後で欲しくなっても遅いので,リーズナブルな価格なら買っておこうと思いました。
届いたカードは香港製のようで,現在の基準で見れば信頼性がちょっと心許ない感じなので,ハンダ付けをやり直してからAppleIIのスロット3に差し込みます。そう,80桁カードはスロット3に入れるのが定番なのです。
ここには自作のUthernetIIカードがいますので,これを別に動かしてスロット3をあけて80桁カードを差し込みます。
起動後PR#3とすれば画面出力先が80桁カードに切り替わりますので,80桁カードのビデオ出力をディスプレイに繋ぎます。
おー,80桁出ました。しかし画質はかなり悪いです。
回路そのものの動作はOKのようですので,ここでCP/Mを起動します。CP/MはVidexの80桁カードなら最初から80桁で起動してくれます。
起動してみると,うまく80桁でCP/Mが起動しました。小文字も出ています。そっかー,AppleIIeやAppleIIcなんかだと最初からこんな感じなんですかね。
しかし,文字がボケボケですので,ここはRGB入力で映したいところです。もともとカラーではありませんからNTSCである必要はありません。同期信号と輝度信号が重畳して出力してあるだけですので,SYNCとRGBをパラレルに突っ込むだけでOKです。
しかし,SYNC信号はH-SYNCとV-SYNCが分離したものが必要なディスプレイが多いので,同期分離をしないといけないです。定番のLM1881を使っても良いのですが,せっかくMC6845を使ったビデオカードなんですから,6845から直接取ることにしましょう。
名付けて,80桁カード・RGB出力改造です。(バッ活っぽいですね)
繰り返しますが,カラー出力ではありませんので,RGB出力改造というよりもセパレート出力という方が正しいです。
まず同期信号ですが,MC6845の39ピンと40ピンから直接取ります。最初バッファを挟むつもりでしたが,面倒になって直結することにしました。
輝度尊号はSYNCが混じっていても構わないかも知れないと,最初そのままRGBに痛恨でいました。しかしこれだと同期信号が出た時に基準レベルが変化するので,干渉縞が出てしまうようです。それにレベルがあっていないのか,全体に緑っぽいです。
そこで同期信号が混同される前の信号を取りだします。5VのTTLレベルですが,アナログRGBに突っ込んでも別に構いません。
結果,シャープで高コントラストの文字が表示されました。考え方そのものは間違っていません。しかし,縦線が薄くなっています。Iの文字などはスペースに見えてしまうくらいです。
こういうのは電源の質が悪いとか,どっかからクロックが回り込んでいる場合があると思ったのですが,指で触ってみればパッとIがくっきり表示される時があります。
GNDかなあとコンデンサの追加やGNDの強化を行いましたがあまり効果がありません。さらに指で触る範囲を広げると,水晶発振子のケースに触れると確実に効果があることがわかりました。
ははーん,クロックのジッタだな,と目処を付け,クロック発振を行っている74LS00にパスコンを取り付け,水晶発振子の真下に銅箔テープでGND強化を行いました。
これで試すと効果てきめん,Iが綺麗に表示されるようになりました。
改めて基板を見ると,ベタGNDもありませんし,パスコンもほとんど入っていません。回路はVidex VideoTermのデッドコピー(抵抗の定数は少し違う)なんですが,パターンもオリジナルはこんなに貧弱なんでしょうかね。
とりあえず安定して動いているのでこのままCP/Mの運用に入ることが出来そうです。念願だったWordstarを実用的に動かしたり,MBASICを起動してみたりしましたが,案外ちゃんとに動くので驚きました。キャラクタベースだから当然なんでしょうが,80桁,小文字の表示がこれだけ高品位に出てくるようになるなら,そりゃ定番のオプションになるわなと思いました。
しかしですね,RGBで80桁でAppleIIとは違うフォントでCP/Mが動いているのを見ると,もうAppleIIを触っているという感覚はほとんどありません。楽しくないというかワクワクしないというか。
その上キーボード制限が強くて小文字を普通に入れられない,Backspaceがないなど,独自のお作法を覚えないと満足にWordstarを使えません。
やってみてわかったのは,AppleIIで80桁でCP/Mを動かすと,もうAppleIIじゃないということです。
それはさておき,せっかくCP/Mが動くようになったのですから,Wordstarが動くようになるまでを簡単に書いておきます。
Wordstarはスクリーンエディタですので,エスケープシーケンスやキーコードにしっかり対応した方がより使いやすくなります。しかしそれらを簡単に定義する仕組みはなく,アセンブラで対応するコードを書き,バイナリを本体にパッチする方法で行うんだそうです。
いくつかテンプレートがありますので,近そうなものを選び,修正します。これをCP/M付属のアセンブラでアセンブルし,HEXファイルをDDTコマンドを使ってパッチします。
具体的には,
ASM hoge
DDT WS.COM
I hoge.HEX
R
SAVE 38 WMhoge.COM
こんな感じです。
本当はhoge.ASMも紹介したいところなのですが,ちょっと著作権的にどうなのよという感じもするので,ここではやめておきます。とにかく,Wordstarをコンフィギュレーションしたいのだがどうすりゃいいのよ,という人の最初の一歩になればと思います。
私の場合,画面消去(国産機には画面消去のキャラクタコードがあるがVideoTermはないようです)のコードを用意したこと,表示位置制御は国産機のものをそのまま利用し,あとは表示文字数を80x25にしたことくらいです。これで最低限の動作はしてくれました。
しかし,AppleIIはSHIFTキーもなければ,Backspaceキーもありません。改造する方法も広く知られていますが,当座なんとかしないといけないので調べてみました。
まずSHIFTキーですが,これはCTRL+Aで大文字と小文字をトグルします。数字はそのままなのでSHIFTのロックとは違うのですが,"]"は"}"と入力されるようになりますのでCapsLockとも違います。
次にBackspaceですが,WordstarのヘルプではRUBキーに割り当てられています。しかしそんなキーはありません。Softcardのマニュアルを見るとRUBキーはCTRL+@にアサインされているということがわかりましたが,@を出すにはSHIFT+Pを押す必要があります。
なので先にSHIFT+CTRLを押してからPを押せばBackspaceと同じ動きをしてくれます。2回目以降はPを連打すればよいです。(WM.HLPも書き換えておきました)
最後に"["と"]","{"と"}"です。普段は使わずに済ませられる文字ですが,Cでプログラムを書くときには必須で,この文字を入力するキーがAppleIIにはないとわかった時に,私は深く絶望しました。
答えは"["がCTRL+K,"]"がSHIFT+Mでした。"{"と"}"はそれぞれCTRL+Aで小文字にトグルしてそれぞれ入力出来ます。久々にキーボードアドベンチャーをしましたよ。
ちなみに→キーはTABキーでした・・・
そんなわけで,CP/MがAppleIIで実用的に動くようになったわけですが,ディスクの容量の小ささもありますし,X1でCP/Mを使った方が普通に便利というのが,今回の結論でした。
実はVideoTermで80桁にした環境では,"Shift-Key Mod"と呼ばれる改造が半ば標準化しており,最終的にはApple公認の改造となっています(1984年にレターが出ています)。
これはSHIFTキー(エンコーダ基板の24ピンに出ている)をゲームI/OのPB2(J14の4ピンもしくはH14の1ピン)に繋ぐという改造で,ソフトウェアがSHIFTキーの状態をPB2ポートで検出出来るという仕組みです。
なんでこんなことをするかといえば,AppleIIのキーボードはSHIFTキーが押されているかどうかを本体に出力せず,SHIFTと一緒に押された時のキーコードを送出するだけだからです。悪いことに,AppleIIのキーボードエンコーダーICはSHIFTキーの状態に関係なく,アルファベットを同じコードで本体に送出するので,大文字と小文字をSHIFTキーで切り替える事が出来ないわけです。
のちにこの改造はApple公認となったばかりか,AppleIIeで採用されてしまいました。
この改造は当然ソフトウェアがPB2を見てSHIFTキーの状態を確認する必要があるのですが,VideoTermのファームウェアはこの仕組みを持っているので,CP/MでもSHIFTキーによる大文字/小文字の切り替えが可能になります。
使い方ですが,CTRL+Aで小文字のトグルしておくと,SHIFTキーを押しながら入力することで大文字になってくれます。大文字でトグルしておけばこれまでとなにも変わりませんし,40桁の標準モードではそもそもCTRL+Aが動きませんので,なにも変化しません。よく考えたなあ。
さくっと自分のAppleIIでも試してみました。SHIFTキーで大文字と小文字を切り替えることが出来るので,普通のパソコンっぽくなったという感じがしたわけですが,今度は逆に"["や"]"を入力するのに,いちいちCTRL+Aを押さないといけなくなったのが面倒になりました。
しかし,CP/Mの環境がどんどん改善していきます・・・そしてどんどんAppleIIらしさが薄れていきます。1970年代後半から1980年段前半をなぞる旅,楽しいですね。