スポンサーリンク

【雰囲気重視】CASIOポケコンPB-100でZORK

ポケコン

PB-100系USBインターフェスのEEPROMをもっと使いたい。
なんかないかな?と考えて、かの「ZORK」(的な)ゲームをのっけてみました。
PC側のターミナルにメッセージ表示させるようにしたら、もっとZORKっぽい。
雰囲気ZORKになりました。素敵♡

ZORKっぽいゲームはこんな感じ

いまどきはZORKもWEBで遊べる。すげー

Zork I
You can now play Zork: The Great Underground Empire here on Classic Reload. Created in 1982, Zork is a typical adventure game that does not use graphics. Instea...

Pythonで書かれた雰囲気ZORKがGitHubにありました。
ZORKの超超サブセット。なのでプログラムサイズも手ごろ。

GitHub - iamjawa/zork-py: Zork: The PY Edition (A Python Text-Adventure based loosely on the original Zork.)
Zork: The PY Edition (A Python Text-Adventure based loosely on the original Zork.) - GitHub - iamjawa/zork-py: Zork: The PY Edition (A Python Text-Adventure bas...

この雰囲気ZORKをPBに移植。
とはいえ、PBにオンメモリは無理です。今回使ったのFX-700P 1568STEPだし。
複数のBASICファイルに分割してEEPROMに格納します。
それを適宜LOADすることしました。

BASICファイルは5本。

PBはLOADがBASIC上に書けないので、LOADが必要になると
 「To continue, enter the LOAD ‘ファイル名’」
を表示させて、人力でLOADを入力する仕様です。
移動コマンド(GO)ですると、だいたい要LOAD。

EEPROMからのLOADは結構時間がかかります。
1400STEPだとLOADに1分弱。

EEPROMアクセス中は緑のLEDが点灯する。省電力のうっすい光・・・

雰囲気ZORKをPBで動かして、メッセージ表示をMODE7で印刷すると・・・
PC側のTeraTermにテキストが表示されて、こんな感じになります。
80年代のPCっぽくて雰囲気あるね!

最初はLCD表示だったけど・・・

最初はLCD表示だったんですが、雰囲気いまいち

オープニング。

メッセージは表示しきれないからスクロール。

コマンド入力待ち。

コマンドを入力して。

コマンドのレスポンスを表示。

ちまちました表示で、ちょっとな~

ひらめいた!印刷結果が表示できるんじゃね

ひらめいた!

本家の通信インターフェスのプリンタ機能に”シリアルプリンタ”があったような・・・
もしかして、PBで印刷するとPCのターミナルに表示されるのでは?
そしたら複数行見れるようになるはず!

通信インターフェスから削除したプリンタ機能を復活
予想以上に、いい感じじゃないっすか~

動画だとこんなです。
遅いので穏やかな気持ちで見てください。

1分くらい間が空いてます。変化ないのでシークお勧め。
この間は、EEPROMから次のプログラム読み込んでる時間です。

あと、コマンド入力とメッセージの間隔に間があります。
入力の手際が悪い(;^ω^)のと、入力判定に時間かかってます。

これPBの出力なんですよ。すごくないですか?
ちゃんと表示出たときの感激!最の高!!

通信インターフェースの改造

USB通信インターフェースの改造についてちょっと。

ハード

簡易版インターフェースEEPROMのっけ版を改造しました。

ビフォー

アフター

PBとの接続を追加してます。
マイコンの空きポートが無くなり、EEPROM↔シリアル切換スイッチに困りました。
結局PD6端子(EEPROM電源)にスイッチつけました。
5VでEEPROM/GNDでシリアルの切換判定するようにして解決。

ソフト

通信インタフェース本家のソフト「TAPE25D」をベース。
そこに「TAPE27H」のシリアル通信ルーチン(mass storage handle SERIAL)関連をコピペ。
ラベルと汎用レジスタのだぶりを修正します。

タイマ類やペリフェラルの設定はそのままでも動きます。
が、気になるようなら、UBRRの設定とタイマ類(wait_XXXルーチン)を調整。
調整と言っても、数値±1程度なので、外観だと動きとして全然わからんです。

main_loopルーチンで、EEPROM or シリアルの判定を追加します。
PD6端子のレベルをチェックして切り換えます。
デバウンス除去していないけど、スイッチによっては必要かも。

ちなみに、LOAD/SAVEとプリンタ出力は排他されてます。
シリアルでもLOAD/SAVEとプリンタ出力の切り換えは、気にしなくても良さげ。

【main_looのサンプル】

main_loop:	sbis	PIND,EEPROM		;SERIAL or NVM ? PD6のレベルで切り換え
		        rjmp	tape_seri
		        sbrc	Flags,TAPE_ACTIVE	;tape access request? EEPROM LOAD/SAVEモード
		        rcall	tape
		        sbrc	Flags,PRN_REQUEST	;printer access request? プリンタ出力
		        rcall	print
		        sbis	PINB,KEY		;key pressed ?
		        rcall	rewind
		        rjmp	main_loop
tape_seri:	sbrc	Flags,TAPE_ACTIVE	;tape access request? シリアル LOAD/SAVEモード
		        rcall	s_tape
		        sbrc	Flags,PRN_REQUEST	;printer access request? プリンタ出力
		        rcall	print
		        rjmp	main_loop

改造後の動作はこんな感じ

シリアルに切り替えて、LOADA→LIST→SAVEAするとこんな感じ。
マウスカーソルちらちらは、LOADするファイルをTeraTermにドロップしているところ。
ちっさくて見辛い・・・

PB-300とかFX-802Pとかプリンタ内蔵機種は、印刷のシリアル出力はダメでした。
内蔵プリンタが優先されてます。残念。

ポケコンとして本末転倒だけど・・・

ポケコン使ってPCに出力するって、ポケコンの意味ないんじゃ・・・と思わなくもないですがw

PBで、いろんな画面が出せるって胸熱すぎる!

コメント

タイトルとURLをコピーしました