Last Updated on 2020年4月5日 by kabekin
CRTCのパラメータ変更後にカーソルが消えてしまう問題でカーソルを表示させる方法を
調べましたのでメモしておきます^^
結果的にはワークエリアの$0115に値を書くことでカーソルが表示できました。
値に何を設定すればいいのか調べる方法として、ベタですがループで回して確認してみます^^;;
こんな感じで$115に書込む値を変えて、
ポーズをかけながら順番に調べると・・・
次のルールが見つかりました。
設定値 | カーソル表示 |
(1111) $FF~$F8 | ブリンク無しで■カーソル表示 |
(1110) $E7~$E0 | 通常ブリンクで_カーソル表示 |
(1101) $DF~$D8 | 通常ブリンクで■カーソル表示 |
(1100) $C7~$C0 | 高速ブリンクで_カーソル表示 |
(1011) $BF~$B8 | 高速ブリンクで■カーソル表示 |
(1000) $87~$80 | ブリンク無しで_カーソル表示 |
(0111) $7F~$78 | ブリンク無しで■カーソル表示 |
(0110) $67~$60 | 通常ブリンクで_カーソル表示 |
(0101) $5F~$58 | 通常ブリンクで■カーソル表示 |
(0100) $47~$40 | 高速ブリンクで_カーソル表示 |
(0010) $3F~$38 | 高速ブリンクで■カーソル表示 |
(0000) $07~$01 | ブリンク無しで_カーソル表示 |
その他 | カーソル消去 |
S1のSYCRSTシステムコールのビット割り付けとは違うようです。
ざっくり見た感じでビットに機能があるとすれば
下位4ビットが$F~$8はカーソルが■、$7~$0はカーソルが_
4ビット目=カーソルタイプ 1=■ 0=_
ブリンクタイプやカーソル表示オン/オフは下位4ビットにも関係があるようですがビットの規則性は
もう少し調べる必要があります^^;;;
ビットの意味を考えずに単純にカーソル表示のスイッチとして設定したい場合は
$FFで■カーソルのブリンク無し
$E7で_カーソルの通常ブリンク
$DFで■カーソルの通常ブリンク
$C7で_カーソルの高速ブリンク
$BFで■カーソルの高速ブリンク
$87で_カーソルのブリンクなし
$7Fで■カーソルのブリンク無し
$67で_カーソルの高速ブリンク
$5Fで■カーソルの通常ブリンク
$47で_カーソルの高速ブリンク
$3Fで■カーソルの高速ブリンク
$07で_カーソルのブリンク無し
で対応できそうです。
こちらのプログラムでCRTCのパラメータを変更すると$115のカーソル表示が変化し下記のようになりました
設定値 | カーソル表示 |
(1111) $FF~$F8 | 通常ブリンクでカーソル表示オン |
(1101) $DF~$D8 | 通常ブリンクでカーソル表示オン |
(1011) $BF~$B8 | 高速ブリンクでカーソル表示オン |
(0111) $7F~$78 | ブリンク無しでカーソル表示オン |
(0101) $5F~$58 | 通常ブリンクでカーソル表示オン |
(0011) $3F~$38 | 高速ブリンクでカーソル表示オン |
その他 | カーソル消去 |
特にカーソルが変わるとは思っていなかったのですが、変わってしまうようです。
こちらも明確なビットの機能割付けの規則が分かっていませんが
ざっくり見た感じでは上位4ビットに機能があるとすれば
4ビット目=カーソル表示オン/オフ
7,6,5ビット目=ブリンクタイプ
下位4ビットは$F~$8までは表示オン、$7~$0は表示オフ
のように見えます。
カーソル表示オンのブリンク状態から異なる状態で$FF~$F8を指定するとブリンクタイプが
思ったものになりませんでした・・・
例えば
$7Fのブリンクなしから$FFにすると変化なし
$3Fの高速ブリンクから$FFにするとブリンク無し
になりました。
こちらも上記同様にビットの意味を考えずに単純にカーソル表示のスイッチとして設定したい場合は
$5Fで通常ブリンク
$3Fで高速ブリンク
$7Fでブリンク無し
$00でカーソル表示オフ
で対応できそうです。
正式な使い方は各ビットの持っている意味に合わせて使うのが正しいと思うのですが、
単にカーソル表示のスイッチとして使うためにはこの値でよさそうです^^
カーソルのズレを修正して快適な環境にする
CRTCのR8パラメータを$8xに設定することでカーソルのズレを解消できるとの情報を頂き試してみました。
ノンインタレース時は$80、インタレース時は$83を設定してみると・・・
カーソルのズレが解消されました(^^)
レベル3のカーソルのズレは操作に慣れても混乱することがあるので、これはありがたいです。
このプログラムでカーソルのズレは解消できます → こちら
(40文字/80文字 インタレース/ノンインタレースの切替はコメントアウトの変更で可能です^^)
そんなカーソル表示オンオフスイッチ調査の記録・・・