懐かしいので
中学生の頃に書いたコードを晒してみます。よく残ってたなあ……。SAPPとはこんなプリプロセッサだ!
/* PC-98用マウスドライバーのクライアント */ -- common - MouDrive.ra .code #MouseDriver(int M0,int M1,int M2,int M3) { #<SI; SI = M0; AX = *2 SI; SI = M1; BX = *2 SI; SI = M2; CX = *2 SI; SI = M3; DX = *2 SI; int 33h; SI = M0; *2 SI = AX; SI = M1; *2 SI = BX; SI = M2; *2 SI = CX; SI = M3; *2 SI = DX; } #MouseDriverES(int M0,int M1,int M2,int M3,int M4) { #<SI,ES; SI = M4; AX = *2 SI; ES = AX; SI = M0; AX = *2 SI; SI = M1; BX = *2 SI; SI = M2; CX = *2 SI; SI = M3; DX = *2 SI; int 33h; SI = M0; *2 SI = AX; SI = M1; *2 SI = BX; SI = M2; *2 SI = CX; SI = M3; *2 SI = DX; } end - MouReady.ra /* 0 - ドライバが用意されていない 1 - MS 2 - NEC */ .code int Mouse_drv = 0; #MouseReady() { AX = Mouse_drv; return( AX != 0 ); AX = 0; BX = 0; int 33h; return( AX == 0 ); if( BX != 0 ){ AX = 1; }else{ AX = 2; } //↑MSドライバはBXに2(ボタン個数)を返す事から推定 //もしNECドライバが同じ動作をするようになればおしめーだ(~_~) Mouse_drv = AX; } end /*############################# 実態 #############################*/ -- common extern MouseReady(); - MouBtn.ra .code #MouseButton() int B; { MouseReady(); return( AX == 0 ); B = 0; ////////マウス if( AX == 1 ){ AX = 3; int 33h; if( BX & 1 ){or B, 1;} if( BX & 2 ){or B, 2;} }else{ AX = 3; int 33h; if( AX != 0 ){or B, 1;} if( BX != 0 ){or B, 2;} } AX = B; } end - MouDis.ra .code #MouseDistance(int pX, int pY) { MouseReady(); return( AX == 0 ); AX = 11; int 33h; BX = pX; [BX] = CX; BX = pY; [BX] = DX; } end - MouSpeed.ra .code #MouseSpeed(int X, int Y) { return( X <- 1 ); return( Y <- 1 ); MouseReady(); return( AX == 0 ); AX = 15; CX = X; DX = Y; int 33h; } end - MouLocat.ra .code #MouseLocate(int X, int Y) { MouseReady(); return( AX == 0 ); AX = 4; CX = X; DX = Y; int 33h; } end
なんかえらい筋の悪い気もするが……見逃して。なんせ三日前どころか(ry
SAPPは、たしか後のほうになると、classすら作れるようになっていたと思います。
段々思い出してきた。"-"で始まってる行は、プリプロセッサのプリプロセッサが切り分けて、続くファイル名を付けて別々の.objにしてくれるんです確か。当時はスマートリンカなんて無かったので、ライブラリを作るときは余計なコードがリンクされないように様々な工夫を凝らしてました。
……いや、今だってldがCOFFでは--gc-sections動いてくれないってんで.sをセクションで切って.aにするツールなんか作ったりして、同じことやっているわけですがっ。本気で進歩無いな。
私の精神世界は未だこの時代にいる気がします。だから実行ファイル小さくできない言語は敵なんだよな……。