物 置


img
ひとやすみ ひとやすみ…



■ 物 置

geocities からの転送は 9/30 までらしいですよ。

vraminfo への加筆用ロケテ。

PC88 での画面描画途中での設定変更をいろいろ試してみる。
まずは、以下のようなパターンを描画しておく。
B プレーンに縦縞、R プレーンに横縞、G プレーンにドット。



これを画面途中で 200 -> 400 ラインに切り替えてみる。果たして 200/400 ライン混在は可能か。

100 ' Binary to N88-BASIC(V2-4MHz)
110 CLEAR ,&H8FFF:DEFINT A-Z
120 S=&H9000:E=&H9078:DEF USR=S
130 FOR A=S TO E:READ B$:POKE A,VAL("&H"+B$):NEXT
140 CLS:'END
150 A=USR(0):END
160 data F3,3E,99,D3,32,CD,36,90,CD,28,90,CD,23,90,CD,2F,90,21,D6,04
170 data 2B,7D,B4,20,FB,CD,1E,90,18,EA,3E,2A,D3,31,C9,3E,3B,D3,31,C9
180 data DB,40,E6,20,28,FA,C9,DB,40,E6,20,20,FA,C9,D3,5C,21,00,C0,3E
190 data 80,01,C8,28,77,23,23,10,FB,06,28,0D,20,F6,D3,5D,21,00,C0,3E
200 data FF,01,19,50,11,30,02,77,23,10,FC,19,06,50,0D,20,F6,D3,5E,21
210 data 40,C1,3E,01,01,19,28,77,23,23,10,FB,19,06,28,0D,20,F5,D3,5F
220 data C9



可能、と。画面下半分あたりから R プレーンのみで描画されている。白黒 400 ライン仕様通り。
これ応用するとアドベンチャーゲームでメッセージ部だけ 400 ライン漢字とか使えたりしないだろうか。

エミュレータで対応しているものはなさそうだった。もしかしたら j80 の新しめの方では対応してたりして。。。

グラフィック画面 on -> off はどうか。

100 ' Binary to N88-BASIC(V2-4MHz)
110 CLEAR ,&H8FFF:DEFINT A-Z
120 S=&H9000:E=&H9078:DEF USR=S
130 FOR A=S TO E:READ B$:POKE A,VAL("&H"+B$):NEXT
140 CLS:'END
150 A=USR(0):END
160 data F3,3E,99,D3,32,CD,36,90,CD,28,90,CD,23,90,CD,2F,90,21,D6,04
170 data 2B,7D,B4,20,FB,CD,1E,90,18,EA,3E,33,D3,31,C9,3E,3B,D3,31,C9
180 data DB,40,E6,20,28,FA,C9,DB,40,E6,20,20,FA,C9,D3,5C,21,00,C0,3E
190 data 80,01,C8,28,77,23,23,10,FB,06,28,0D,20,F6,D3,5D,21,00,C0,3E
200 data FF,01,19,50,11,30,02,77,23,10,FC,19,06,50,0D,20,F6,D3,5E,21
210 data 40,C1,3E,01,01,19,28,77,23,23,10,FB,19,06,28,0D,20,F5,D3,5F
220 data C9



可能。まぁテキストマスクでやれという話ではある。
あ、ちなみに 4MHz 時、1line につき 232clk くらいで計算している。かなりアバウトだけど。


デジタル -> アナログはダメだった。これは予想通り。
I/O ポート $32 の設定は、$54- のパレットレジスタへの設定モードを変えるためのものであって、デジアナの表示方法を変えるものではないようなので。

I/O ポート $30 の 80桁, 40桁変更や CRT モードコントロールの白黒・カラー変更などはどうか。
これはテキスト側なので微妙なのだけれども・・・。
リストは割愛。






そうなるんだ・・・という感じ。CRTC には触っていないので変なことになるのは薄々察してはいたけれど。
でも原理はよく分からない。


続いて、VRAM バンクを選択しているだけで遅くなる件の検証。

110 CLEAR ,&HBFFF:DEFINT A-Z:'V1S
120 S=&HB000:E=&HB016:DEF USR=S
130 FOR A=S TO E:READ B$:POKE A,VAL("&H"+B$):NEXT
140 TIME$="00:00:00"
150 A=USR(0):PRINT TIME$:END
160 data F3,D3,5C,11,0A,00,21,00,00,2B,7D,B4,20,FB,1B,7B,B2,20,F6,D3,5F,FB,C9
170 '          ^^ change to 5F

65536*10 の空ループを実行するだけ。上記のまま(VRAM.B 選択状態)だと 22 秒かかるが、
メイン RAM (F3,D3,5F に書き換え)選択状態だと 6 秒で終わる。V1S のみで V1H/V2 では影響しない。
これもエミュレータの対応状況はまちまち。しかし V1S をガチエミュレートすればするほど悲しい気持ちになりそう。

つぎ。V1S モードにおけるグラフィックの高速書き込みモード。
あまり触れていなかったので、テストプログラムを追加する。

10 'V1S graphic hi-speed mode
20 SCREEN 0,1,0,0:CLS 3
30 '        ^ change to 0(standard)
40 TIME$="00:00:00"
50 FOR I=1 TO 7
60 LINE(0,0)-(639,199),I,BF
70 NEXT
80 PRINT TIME$

具体的には I/O ポート $40.bit4 を 0=hispeed 1=standard にしている。
スタンダードだと 34 秒かかるのが、ハイスピードだと 17 秒で終わる。


cmd sing の "X0" コマンドまたは cmd text off コマンドについて。
off の方は I/O ポート $51 に 0 を書き込んでいる。on の方は例によって面倒くさい手順。
タートルグラフィックなどと同じ拡張コマンド扱い。
こういう「お手持ちのコンピュータがコマンド一つでパワーアップします」的な裏技は憧れたよね。でも冷静に考えると詐欺じゃん!


特殊制御文字についてのよくわからんテスト。

5 'V1 special control character
10 CONSOLE 0,25,0,1:WIDTH 80,25:CLS:COLOR 3
20 FOR I=0 TO 80*25:PRINT"A";:NEXT
30 Y=5:X=19
40 AD=&HF3C8+120*Y+80+X*2
50  POKE AD,&H60
60  POKE AD+1,2
70 GOTO 70

行はどこでもいいのでアトリビュートの桁数設定最後尾に $6n を書き込むと、その後ろ(アトリビュート指定部分)が特殊制御設定になる様な気がする。
bit0=1 のとき描画スキップ? bit1=1 のとき以降の描画停止???
これ以上のことは分からない。何かに使えるのだろうか。




▲ TOP