つづき
LET h=5 !行数 LET w=5 !列数 SET WINDOW 0,w,0,h !表示領域 ※正方形
SET TEXT JUSTIFY "center","bottom"
DIM cTBL$(h,w),nTBL(h,w) !機器の配置位置
DO mouse poll mx,my,left,right !マウスの情報を得る IF left=1 THEN !左ボタンが押されたら LET xx=INT(mx)+1 LET yy=INT(my)+1 LET tt$=UCASE$(cTBL$(yy,xx)) IF tt$="SA" OR tt$="SB" THEN !スイッチなら LET v=nTBL(yy,xx) !番号 LET X(v)=NT(X(v)) !反転させる END IF WAIT DELAY 0.3 !※要調整 END IF IF TIME-oldtime>0.1 THEN !ほぼ実時間 CALL ladder LET oldtime=TIME END IF SET DRAW mode hidden !ちらつき防止の開始 CLEAR DRAW grid !目盛 CALL ladder_display !ラダー図 SET DRAW mode explicit !ちらつき防止の終了 LOOP UNTIL right=1 !右ボタンが押されるまで
SUB ladder_display !ラダー図を表示する RESTORE 10 FOR yy=h TO 1 STEP -1 !※左上から FOR xx=1 TO w !格子を走査する READ cmd$,nm$,s$ !機器、番号、注釈を得る LET nm=VAL(nm$) IF cmd$<>"" THEN !機器なら SELECT CASE UCASE$(cmd$) !記号へ CASE "SA" !スイッチのa接点 LET el$="─[ ]─" !機器記号 LET cc=X(nm) !状態 CASE "SB" !スイッチのb接点 LET el$="─[/]─" LET cc=NT(X(nm)) CASE "A" !リレーのa接点 LET el$="─| |─" LET cc=Y(nm) CASE "B" !リレーのb接点 LET el$="─|/|─" LET cc=NT(Y(nm)) CASE "TA" !タイマのa接点 LET el$="─| |─" LET nm$="T"&nm$ LET cc=T(nm) CASE "TB" !タイマのb接点 LET el$="─|/|─" LET nm$="T"&nm$ LET cc=NT(T(nm)) CASE "CA" !カウンタのa接点 LET el$="─| |─" LET nm$="C"&nm$ LET cc=C(nm) CASE "CB" !カウンタのb接点 LET el$="─|/|─" LET nm$="C"&nm$ LET cc=NT(C(nm)) CASE "O" !リレーのコイル LET el$="─( )─" LET cc=Y(nm) CASE "T" !タイマ LET el$="─("&s$&")─" !値 LET nm$="T"&nm$ READ s$ LET cc=T(nm) CASE "C" !カウンタ LET el$="─("&s$&")─" !値 LET nm$="C"&nm$ READ s$ LET cc=NT(T(nm))
|