見出し画像

Apple II ▷ タッチディスプレイ工作記(15)

▷ 座標の読み取りについて
タッチディスプレイで検出した(x, y)座標をApple IIから取得する方法についてBASICによるプログラム例を紹介します.以下ではインタフェースカードは4番スロットに装着した場合です.最初にMC6821のポート入出力を設定する必要があります.その設定をBASICで記述すると次のようになります.

POKE -16179, 0     :REM BIT2=0 ACCESS DDRA
POKE -16180, 0     :REM SET PORT-A AS INPUT
POKE -16179, 4     :REM BIT2=1 ACCESS PORT-A DATA BUFFER
POKE -16177, 0     :REM BIT2=0 ACCESS DDRB
POKE -16178, 0     :REM SET PORT-B AS INPUT
POKE -16177, 4     :REM BIT2=1 ACCESS PORT-B DATA BUFFER

もし4番スロット以外に装着する場合,POKEするアドレスは,1つ下位のスロットに移動させるごとに[ー16],1つ上位のスロットに移動させるごとに[+16]となると知っていれば差し当たりは間にあいます.
タッチディスプレイの(x,y)座標は次のようにして取得することができます.

X = PEEK ( - 16180) : Y = PEEK( - 16178)

▷ 有効表示領域の設定
ディスプレイにより有効表示領域が変わることを記事(6)で書きました.今回工作した8インチディスプレイの場合,xmin=110, xmax=910, ymin=70, ymax=660としています.これらはディスプレイやタッチパネルにより変わるので参考値です.

▷ 動作確認|タッチ座標
タッチパネル上で取得したタッチ座標データを表示する様子を動画でお見せします.ディスプレイの四隅に三角形のマーカーを貼っていますが,これは有効表示領域の境界を示すものです.領域内で指先が触れた位置の(x, y)座標データを0から255の範囲の値を返しています.

▷ 動作確認|お絵描き
タッチディスプレイとして画面上の(x, y)座標データを取得できるようになったので,指先で画面に触れて絵を描くプログラムをつくってみました.高分解能グラフィックスHGR2モードで表示画面いっぱい(画面中の四角枠の範囲)にお絵描きができます.1ドットでは線が細くなるので3x3ドットの点をプロットしています.

▷ 一体型タッチディスプレイ
ぼくの工作は既存のディスプレイにタッチパネルを後付けするものです.
最近ではRaspberry Piに接続できるタッチディスプレイが販売されていますが,ぼくの工作と区別するため「一体型」と表記することにします.
この一体型を加工してApple IIに用いることを考えるのは当然のことでしょう.通常一体型はタッチシグナルはUSBで出力されているのですが,仕様によりタッチドライバICの出力を直接取り出せるものがあります.これはそういう仕様になっているというわけではなく,タッチパネルから出ているフラットケーブルからシグナルをもらってしまうという意味です.
問題はタッチドライバICがなにかということになります.ぼくの工作はこの点においては限定的で,GOODIX社のGT911, GT9271, GT811が搭載されたタッチディスプレイが対象となります.調べてみたところこの条件をみたす製品がいくつかあることがわかりました.
といっても今のところぼくはディスプレイの台数は間にあっており,技術的にも工作可能であることはわかっているので,あえて購入してまで工作することは考えていません.

▷ 余談
有効表示領域の外側にも使いがあります.10インチディスプレイの場合,アスペクト比が16:9と幅広なので両端で切り落とされた領域はそれなりの大きさがあります.この領域でタッチされた座標情報ももちろん取得されているので,その使い途があるというのです.例えば上で示したようなお絵描きソフトでカラーパレットやツール選択キーといった機能を与えることができます.そうすることでApple IIの限られた表示領域を「有効」に利用できるのです.


この記事が気に入ったらサポートをしてみませんか?