上のカバー画像の内容を C言語で疑似的に表現すると
void SENDSKP(void){
asm POP HL; //帰り番地を HLに
while(a=*HL++) TxPOUT(a);
asm PUSH HL; //0終端の次の番地を帰り番地として
return;
}
という感じの内容になります。 呼び出す方は
CALL SENDSKP
DB "Hello ",0
CALL SENDSKP
DB "World",13,0
という感じになります。 ずいぶん昔の仕事で使ったテクニックです。
どうしてこんな手法を使ったのかというと、
画面表示をする組み込みの仕事でして、画面が付くと、画面の表示で細かな注文がお客様から出ては変更、また出ては変更となりまして、組み込みですからその都度現場に行ってROMを焼き直してICソケットから交換というような事になりがちだったのです。
そこで事前に表示・操作周りをパソコン上でシミュレートさせて事前に了解を得るという方法を使う事にしました。
もう少し後なら C言語で組み込み側も書いて C++BuilderでCソース中にある画面周りだけをエミュレートという手法に移ったのですが、当時は窓付きのEPROMでとかいう時代だったので。アセンブラ全盛です。
CALL SENDSKP
DB "Hello ",0
という感じのデーターなら 解釈して画面表示を作るのが楽だったのです。
タッチパネルの受信処理も 同じ手法を使って
CALL ON_CHK_SKP
DW 24,24,48,48 ;x1,y1,x2,y2 の範囲をタッチされたら
DW LABEL1 ;このサブルーチが呼び出される
という感じで書いておいて シミュレータは LABEL1の先の 表示CALLのみを解釈して表示するという感じで PC上ではマウスで動作確認もしてもらえます。
CALLが無くてもデーター部だけでのファイルを解釈させたらとか、考えるかもしれませんが、それではミスを排除できませんからね。
しかしながら今や表示機を付けるような場合のCPUは比較的リッチでC言語開発という時代。このテクニックはC言語では使えないですし、C言語ならDelphiで表示エミュレータを作ってC言語側をBCC32でコンパイルしてDelphiにリンクすれば簡単に実機が出来る前の表示内容確認とか出来る時代になりました。