100 '---------------  ＶＩＬローダファイル Ver3.00　---------------
110 '--------------------  ＶＩＬ組み込み開始　--------------------
120 CLEAR ,,512,1024*700,0,0                      'メモリ領域設定
130 SCREEN 0:CLS
140 VIL_W0%=0:VIL_W1%=0:VIL_W2%=0:VIL_W3%=0:VIL_W4%=0  '汎用ワーク変数
150 VIL_W5%=0:VIL_W6%=0:VIL_W7%=0:VIL_W8%=0:VIL_W9%=0
160 VIL_W0&=0:VIL_W1&=0:VIL_W2&=0:VIL_W3&=0:VIL_W4&=0  '汎用ワーク変数
170 VIL_W5&=0:VIL_W6&=0:VIL_W7&=0:VIL_W8&=0:VIL_W9&=0
180 VIL_W0$="":VIL_W1$="":VIL_W2$="":VIL_W3$=""
190 VIL_I%=0:VIL_J%=0:VIL_K%=0                    'ループ変数
200 VIL_L%=0                                      '長さ
210 VIL_A$=""                                     '文字列汎用
220 VIL_F$=""                                     'ファイル名汎用
230 VIL_C%=15:VIL_CB%=0:VIL_CC%=7                 '描画色・背景色(0..15)
240 VIL_X%=0:VIL_Y%=0:VIL_W%=0:VIL_Z%=0           '左上隅・右下隅座標
250 VIL_XL%=0:VIL_YL%=0:VIL_XN%=0:VIL_YN%=0       'Ｘ・Ｙ軸方向長さ・個数
260 VIL_P%=0                                      'パレット番号
270 VIL_KN%=0                                     '入力番号
280 VIL_K$="":VIL_KY%=0                           '入力キー,アスキーコード
290 VIL_MX%=0:VIL_MY%=0:VIL_MW%=0:VIL_MZ%=0       'マウス位置
300 '
310 VIL_E%=0                                      'エラー番号
320 VIL_DIR$=""                                   'VILディレクトリ
330 VIL_APPCNF$="APPLI.CNF"                       'アプリ設定ファイル名
340 DIM VIL_ENVNAM$(31),VIL_ENVVAL$(31)           '環境変数　名前／値
350 VIL_ENVNUM%=0                                 '環境変数の数
360 VIL_VER%=300                                  'ＶＩＬ VER3.00
370 '
380 *VIL_CNF                              '設定ファイル"VIL.CNF"読込
390 PRINT"Searching "+CHR$(34)+"VIL.CNF"+CHR$(34)
400 PRINT"Searching current directory"
410 GOSUB *VIL_ERR_ON:VIL_E%=0
420 OPEN "I",#1,"VIL.CNF"                 'カレントディレクトリを探す
430 IF VIL_E%=63 THEN
440   PRINT"Searching root directory"
450   VIL_E%=0
460   OPEN "I",#1,"\VIL.CNF"              'ルートディレクトリを探す
470   IF VIL_E%=63 THEN                   '見つからなければ設定中止
480     PRINT"WARNING:"+CHR$(34)+"VIL.CNF"+CHR$(34)+" not found"
490     GOTO *VIL_L_BGN
500   ENDIF
510 ENDIF
520 PRINT"Reading "+CHR$(34)+"VIL.CNF"+CHR$(34)
530 '
540 '    環境変数設定
550 WHILE EOF(1)=0
560   GOSUB *VIL_LNR
570   VIL_W0%=INSTR(VIL_W0$," "):VIL_W1%=VIL_W0%          'スペース開始
580   WHILE MID$(VIL_W0$,VIL_W1%,1)=" ":VIL_W1%=VIL_W1%+1:WEND
590   VIL_ENVNAM$(VIL_ENVNUM%)=LEFT$(VIL_W0$,VIL_W0%-1)
600   VIL_ENVVAL$(VIL_ENVNUM%)= MID$(VIL_W0$,VIL_W1%)
610   VIL_ENVNUM%=VIL_ENVNUM%+1
620 '  GOSUB *VIL_LNR
630 WEND
640 'FOR VIL_I%=0 TO VIL_ENVNUM%-1:                                                 PRINT VIL_I%;"|";VIL_ENVNAM$(VIL_I%);"|";VIL_ENVVAL$(VIL_I%);"|":          NEXT':VIL_W0$=INPUT$(1)                        'デバッグ用
650 VIL_W0%=SEARCH(VIL_ENVNAM$,"VILDIR"):                                        IF VIL_W0%>-1 THEN VIL_DIR$=VIL_ENVVAL$(VIL_W0%) 'VILディレクトリ設定
660 VIL_W0%=SEARCH(VIL_ENVNAM$,"APPLICNF"):                                      IF VIL_W0%>-1 THEN VIL_APPCNF$=VIL_ENVVAL$(VIL_W0%)
670 '    ELSE IF INSTR(VIL_W0$,"FMTITLEDIR") THEN 'FMTITLEディレクトリ設定
680 '      VIL_FMTDIR$=MID$(VIL_W0$,INSTR(VIL_W0$,"=")+1)
690 CLOSE #1
700 '
710 *VIL_L_BGN                                ' VIL リンク開始
720 ON ERROR GOTO 0
730 *VIL_L_BAS:                                                                  CHAIN MERGE VIL_DIR$+"VIL_BAS.BAS",*VIL_L_VWM,ALL,DELETE *VIL_L_BAS
740 *VIL_L_VWM:                                                                  CHAIN MERGE VIL_DIR$+"VIL_VWM.BAS",*VIL_L_END,ALL,DELETE *VIL_L_VWM
750 '*VIL_L_VWM:                                                                  CHAIN MERGE VIL_DIR$+"VIL_VWM.BAS",*VIL_L_UTY,ALL,DELETE *VIL_L_VWM
760 '*VIL_L_UTY:                                                                  CHAIN MERGE VIL_DIR$+"VIL_UTY.BAS",*VIL_L_END,ALL,DELETE *VIL_L_UTY
770 *VIL_L_END                                ' VIL リンク終了
780 '
790 GOSUB *VIL_ERR_ON
800 GOSUB *VIL_DEFFN:GOTO *VIL_INITEND
810 '
820 *VIL_DEFFN
830 '  S$:文字列に変換 SS$:左にスペースを詰める S0$:左に0を詰める
840 '  P :正の整数     I  :整数                 R  :実数
850 DEF FNVIL_P2S$(X&)       =MID$(STR$(X&),2)
860 DEF FNVIL_P2SS$(X&,Y%)   =RIGHT$("          "+STR$(X&),Y%)
870 DEF FNVIL_P2S0$(X&,Y%)   =RIGHT$("0000000000"+MID$(STR$(X&),2),Y%)
880 DEF FNVIL_I2S$(X&)       =MID$(STR$(X&),1-(X&>=0))
890 DEF FNVIL_I2SS$(X&,Y%)   =RIGHT$("          "+STR$(X&),Y%)
900 '符号１桁(+-) + 00… + 数値
910 DEF FNVIL_I2S0$(X&,Y%)   =MID$("+-",1-(X&<0),1)                                                       +RIGHT$("0000000000"+MID$(STR$(ABS(X&)),2)                                          ,Y%-1)
920 DEF FNVIL_R2S$(X#)       =MID$(STR$(X#),1-(X#>=0))
930 DEF FNVIL_R2SS$(X#,Y%,Z%)=RIGHT$("          "+STR$(FIX(X#)),Y%)+"."                                   +MID$("0000000000"+STR$(X#)+"0000000000"                                          ,INSTR("0000000000"+STR$(X#),".")+1,Z%)
940 DEF FNVIL_R2S0$(X#,Y%,Z%)=MID$("+-",1-(X#<0),1)+RIGHT$("0000000000"              +MID$(STR$(FIX(ABS(X#))),2),Y%-1)+MID$("0000000000"+STR$(X#)                 +"0000000000",INSTR("0000000000"+STR$(X#),".")+1,Z%)
950 RETURN
960 '
970 'ＶＩＬ汎用モジュール
980 '
990 *VIL_ERR_ON:ON ERROR GOTO *VIL_ERR:RETURN
1000 '
1010 '*VIL_ERR:SCREEN 0:VIL_E%=ERR:PRINT "ERR";VIL_E%;"IN";ERL:BEEP:A$=INPUT$(1):IF A$=" " THEN ON ERROR GOTO 0 ELSE RESUME NEXT   'デバッグ用
1020 *VIL_ERR:VIL_E%=ERR:RESUME NEXT
1030 '
1040 *VIL_CNFOP
1050 'VIL_APPCNF$ をオープン。正常終了時 VIL_E%=0
1060 VIL_E%=0
1070 OPEN "I",#1,VIL_APPCNF$
1080 RETURN
1090 '
1100 *VIL_CNFCL
1110 'VIL_APPCNF$ をクローズ。正常終了時 VIL_E%=0
1120 VIL_E%=0
1130 CLOSE #1
1140 RETURN
1150 '
1160 *VIL_CNFERR
1170 'ＶＩＬ設定ファイル読み込み時のエラー処理（現バージョンでは強制終了）
1180 PRINT"CNFファイルに誤りがあります"
1190 PRINT"エラー行:";VIL_W0$
1200 STOP
1210 RETURN
1220 '
1230 *VIL_LNR
1240 '１行読み込み（空行・コメント行スキップ）
1250 LINE INPUT #1,VIL_W0$':SCREEN 0:PRINT VIL_W0$;"!"
1260 IF (VIL_W0$="" OR LEFT$(VIL_W0$,1)="'") AND EOF(1)=0 THEN 1250
1270 RETURN
1280 '
1290 *VIL_INITEND
1300 '--------------------  ＶＩＬ組み込み終了　--------------------
10000 '<<<<<<<<<<<<<<<  Visual Interface Library Demo  >>>>>>>>>>>>>>>
10010 '
10020 RANDOMIZE TIME:DEFINT A-Z
10030 '
10040 SCREEN 1,0,1,0:VIEW(0,0)-(639,479):WINDOW(0,0)-(639,479)
10050 PALETTE@:CLS
10060 PLAY OFF
10070 '
10080 '起動画面
10090 '
10100 SCREEN 0:CLS
10110 LINE(160,160)-(479,319),PSET,7,BF
10120 SYMBOL(224,168),"ＶＩＬ",4,4,4
10130 SYMBOL(224,260),"Visual Interface Library",1,1,0
10140 SYMBOL(224,280)," Demonstration  Program ",1,1,0
10150 '
10160 '<<<<<<<<<<<<<<<<<<<<  VIL INITIALIZE  >>>>>>>>>>>>>>>>>>>>
10170 '
10180 'ＶＩＬパッケージ初期化
10190 '
10200 GOSUB *VIL_CNFOP
10210 '
10220 GOSUB *VIL_ENV_INITM
10230 '
10240 GOSUB *VIL_BEEP_INITM
10250 '
10260 VIL_W0&=1024*500\2            '画面退避(最大ウィンドウ総面積)
10270 VIL_W1%=20                    '最大ウィンドウ番号
10280 GOSUB *VIL_WIN_INITM
10290 '
10300 VIL_W0%=120                   '最大メニュー番号
10310 VIL_W1%=256                   '最大ボックス数
10320 VIL_W2%=10                    '設定メニュー最大行数
10330 GOSUB *VIL_MSEL_INITM
10340 '
10350 VIL_W0%=2                     'ヒストリー系列数
10360 GOSUB *VIL_INP_INITM
10370 '
10380 VIL_W0%=110                   '最大ウィンドウ通し番号
10390 VIL_W1%=8                     'ウィンドウ背景色用パレット番号
10400 GOSUB *VIL_VWM_INITM
10410 '
10420 GOSUB *VIL_SEL_INITM
10430 '
10440 GOSUB *VIL_CNFCL
10450 '
10460 'アプリ環境ファイル読み込み
10470 '
10480 GOSUB *VIL_ENV_ROP
10490   GOSUB *VIL_BEEP_ENVR
10500   GOSUB *VIL_WIN_ENVR
10510   GOSUB *VIL_MSEL_ENVR
10520   GOSUB *VIL_INP_ENVR
10530   GOSUB *VIL_VWM_ENVR
10540   GOSUB *VIL_SEL_ENVR
10550 GOSUB *VIL_ENV_RCL
10560 '
10570 '<<<<<<<<<<<<<<<<<<<<  MAIN MENU  >>>>>>>>>>>>>>>>>>>>
10580 *MAINMENU
10590 '
10600 GOSUB *VIL_WIN_PMA
10610 CLS:PALETTE 4,[100,0,150]
10620 LINE(0,0)-(639,479),PSET,%4,BF
10630 LINE(216,128)-(423,399),PRESET,,BF
10640 SYMBOL(224,32),"Visual Interface Library",1,1,7
10650 SYMBOL(272,64),"ＶＩＬ",2,2,4,,,7
10660 SYMBOL(192,104),"デモンストレ－ション  プログラム",1,1,4
10670 RESTORE 10720
10680 FOR Y=0 TO 3
10690   READ A$
10700   SYMBOL(232,Y*32+144),FNVIL_P2S$(Y+1)+" "+A$,1,1,7
10710 NEXT
10720 DATA "はじめに","基本パッケージ"
10730 DATA "ウィンドウマネージャ","ユーティリティ"
10740 '
10750 VIL_X%=224:VIL_Y%=142:VIL_W%=VIL_X%+191:VIL_Z%=VIL_Y%+19
10760 VIL_XN%=1:VIL_YN%=4:VIL_YL%=32:VIL_MSEL_BD%=0:VIL_C%=15:VIL_CB%=0
10770 VIL_MSEL_MN%=100:VIL_MSEL_BC%=0:VIL_MSEL_BB%=1:VIL_MSEL_BE%=4
10780 GOSUB *VIL_MSEL_M
10790 IF VIL_KN%>0 THEN ON VIL_KN% GOSUB *INTRO,*BAS,*VWM,*UTY
10800 GOTO *MAINMENU
10810 '
10820 '<<<<<<<<<<<<<<<<<<<<  はじめに  >>>>>>>>>>>>>>>>>>>>
10830 *INTRO
10840 CLS
10850 VIL_WIN_X%=8:VIL_WIN_Y%=14:VIL_WIN_W%=VIL_WIN_X%+399:VIL_WIN_Z%=471
10860 VIL_VWM_AT%=0:VIL_VWM_T$="INTRO"
10870 GOSUB *VIL_VWM_OP
10880 SYMBOL(8,  8),"　　　　　　　　　～　はじめに　～　　　　　　　",1,1,6
10890 SYMBOL(8, 36),"　ＶＩＬはＦ－ＢＡＳＩＣ３８６上のプログラムで、",1,1,7
10900 SYMBOL(8, 56),"マルチウィンドウ表示・マウス入力などのユーザ・イ",1,1,7
10910 SYMBOL(8, 76),"ンタフェースを実現するサブルーチン集です。　　　",1,1,7
10920 SYMBOL(8, 96),"　このデモンストレーション・プログラムでは、以下",1,1,7
10930 SYMBOL(8,116),"の項目でその機能を説明します。　　　　　　　　　",1,1,7
10940 SYMBOL(8,136),"　２．基本パッケージ　　　　　　　　　　　　　　",1,1,7
10950 SYMBOL(8,156),"　３．ウィンドウマネージャ　　　　　　　　　　　",1,1,7
10960 SYMBOL(8,176),"　４．ユーティリティ　　　　　　　　　　　　　　",1,1,7
10970 SYMBOL(8,436)," リターンキーかマウスの左ボタンを押してください ",1,1,6
10980 WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND
10990 GOSUB *VIL_VWM_CL
11000 RETURN
11010 '
11020 '<<<<<<<<<<<<<<<<<<<<  基本パッケージ  >>>>>>>>>>>>>>>>>>>>
11030 *BAS
11040 '
11050 SCREEN 0:CLS
11060 LINE(0,0)-(639,479),PSET,4,BF
11070 FOR I=0 TO 30
11080   LINE(RND*639,RND*480)-(RND*639,RND*480),XOR,RND*6+1,BF
11090 NEXT
11100 '
11110 VIL_WIN_X%=30:VIL_WIN_Y%=50
11120 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
11130 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
11140 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
11150 CLS
11160 SYMBOL(8,  8)," ～　ＶＩＬ　基本パッケージ　～ ",1,1,6
11170 SYMBOL(8, 36),"基本パッケージは以下のパッケージ",1,1,7
11180 SYMBOL(8, 56),"から成っています。              ",1,1,7
11190 SYMBOL(8, 76),"・ブザー音パッケージ            ",1,1,7
11200 SYMBOL(8, 96),"・ウィンドウ・パッケージ        ",1,1,7
11210 SYMBOL(8,116),"・メニュー選択パッケージ        ",1,1,7
11220 SYMBOL(8,136),"・入力パッケージ                ",1,1,7
11230 '
11240 VIL_WIN_X%=50:VIL_WIN_Y%=240
11250 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+68+16+7
11260 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
11270 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
11280 CLS
11290 SYMBOL(8,  8),"ウィンドウ・パッケージでは",1,1,7
11300 SYMBOL(8, 28),"このように画面の矩形領域を",1,1,7
11310 SYMBOL(8, 48),"退避し、ウィンドウを開くこ",1,1,7
11320 SYMBOL(8, 68),"とができます。　　　　　　",1,1,7
11330 '
11340 VIL_WIN_X%=30:VIL_WIN_Y%=350
11350 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7
11360 VIL_WIN_UB%=5:VIL_WIN_DB%=5:VIL_WIN_LB%=5:VIL_WIN_RB%=5
11370 GOSUB *VIL_WIN_PMA
11380 GOSUB *VIL_WIN_OP
11390 'GOSUB *VIL_WIN_PMA
11400 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-5)-(VIL_WIN_W%+5,VIL_WIN_Z%+5),PSET,0,B
11410 LINE(VIL_WIN_X%-4,VIL_WIN_Y%-4)-(VIL_WIN_W%+4,VIL_WIN_Z%+4),PSET,7,BF
11420 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+2,VIL_WIN_Z%+2),PSET,0,B
11430 LINE(VIL_WIN_X%-1,VIL_WIN_Y%-1)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,0,B
11440 GOSUB *VIL_WIN_PMR
11450 SYMBOL(8,  8),"必要ならばユーザ・プログラムが",1,1,0
11460 SYMBOL(8, 28),"枠などを描画できます。　　　　",1,1,0
11470 '
11480 VIL_WIN_X%=360:VIL_WIN_Y%=40
11490 VIL_WIN_W%=VIL_WIN_X%+16*11+15:VIL_WIN_Z%=VIL_WIN_Y%+139
11500 VIL_WIN_UB%=2:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2
11510 GOSUB *VIL_WIN_PMA
11520 GOSUB *VIL_WIN_OP
11530 'GOSUB *VIL_WIN_PMA
11540 DEF PEN 0,2
11550 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,1,B
11560 GOSUB *VIL_WIN_PMR
11570 CLS
11580 FOR I=1 TO 7
11590   CIRCLE(0,0),I*5,I
11600   CIRCLE(190,10),I*5,I
11610   SYMBOL(-60+I*8*6,120),"SAMPLE",1,1,I
11620 NEXT
11630 SYMBOL(8, 50),"ウィンドウ内への描画は",1,1,7
11640 SYMBOL(8, 70),"このようにクリッピング",1,1,7
11650 SYMBOL(8, 90),"させることが可能です。",1,1,7
11660 '
11670 PALETTE 4,[ 64, 64, 64]
11680 PALETTE 5,[128,  0,  0]
11690 RESTORE 11920
11700 FOR I=0 TO 2
11710   VIL_WIN_X%=320+I*24:VIL_WIN_Y%=240+I*48
11720   VIL_WIN_W%=VIL_WIN_X%+119:VIL_WIN_Z%=VIL_WIN_Y%+63
11730   VIL_WIN_UB%=16:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2
11740   GOSUB *VIL_WIN_PMA
11750   GOSUB *VIL_WIN_OP
11760   'GOSUB *VIL_WIN_PMA
11770   LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16)                                                -(VIL_WIN_W%+2,VIL_WIN_Y%- 2),PSET,%5,BF
11780   DEF PEN 0,2
11790   LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16)                                                -(VIL_WIN_W%+1,VIL_WIN_Z%+ 1),PSET,%4,B
11800   LINE(VIL_WIN_X%-2,VIL_WIN_Y%- 2)                                                -(VIL_WIN_W%+1,VIL_WIN_Y% -2),PSET,%4
11810   DEF PEN 0,1
11820   LINE(VIL_WIN_X%+1,VIL_WIN_Y%-13)                                                -(VIL_WIN_X%+9,VIL_WIN_Y%-4),PSET,%4,B
11830   CIRCLE(VIL_WIN_X%+5,VIL_WIN_Y%-8.6!),2,%1,1.5!,,,F
11840   LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13)                                                -(VIL_WIN_W%-9,VIL_WIN_Y%- 4),PSET,%4,B
11850   LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13)                                                -(VIL_WIN_W%-5,VIL_WIN_Y%- 8),PSET,%4,B
11860   SYMBOL(VIL_WIN_X%+13,VIL_WIN_Y%-11),"xterm",.5!,.5!,%4
11870   GOSUB *VIL_WIN_PMR
11880   CLS
11890   READ A$
11900   SYMBOL(8,8),A$,1,1,7
11910 NEXT
11920 DATA "ウィンドウの","重ね合わせも","このとおり"
11930 '
11940 RESTORE 12050
11950 GOSUB *VIL_WIN_PMA
11960 LINE(272,434)-(639,479),PSET,7,BF
11970 SYMBOL(280,440),"[RET]キー／マウスの左クリック／パッドの[A]で",1,1,0
11980 SYMBOL(280,460),"ウィンドウが１個ずつ閉じます。              ",1,1,0
11990 FOR I=1 TO 6 
12000   WHILE INKEY$=CHR$(13) OR MOUSE(3,0) OR PTRIG(1)=1:WEND
12010   WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0 AND PTRIG(1)<>1:WEND
12020   READ VIL_WIN_UB%,VIL_WIN_DB%,VIL_WIN_LB%,VIL_WIN_RB%
12030   GOSUB *VIL_WIN_CL 
12040 NEXT
12050 DATA 16,2,2,2, 16,2,2,2, 16,2,2,2, 2,2,2,2, 5,5,5,5, 0,0,0,0
12060 '
12070 LINE(272,434)-(639,479),PSET,7,BF
12080 SYMBOL(280,440),"取消キー／マウスの右クリック／パッドの[B]で",1,1,0
12090 SYMBOL(280,460),"次に進みます。",1,1,0
12100 '
12110 VIL_WIN_X%=50:VIL_WIN_Y%=240
12120 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+148+16+7
12130 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
12140 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
12150 CLS
12160 SYMBOL(8,  8),"メニュー選択パッケージでは",1,1,7
12170 SYMBOL(8, 28),"・マウス　　　　　　　　　",1,1,7
12180 SYMBOL(8, 48),"・パッド　　　　　　　　　",1,1,7
12190 SYMBOL(8, 68),"・テンキー　　　　　　　　",1,1,7
12200 SYMBOL(8, 88),"・カ－ソルキー　　　　　　",1,1,7
12210 SYMBOL(8,108),"などを使用して、　　　　　",1,1,7
12220 SYMBOL(8,128),"画面の矩形領域（ボックス）",1,1,7
12230 SYMBOL(8,148),"の一つを選択できます。　　",1,1,7
12240 '
12250 VIL_WIN_X%=320:VIL_WIN_Y%=40
12260 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+359
12270 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
12280 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
12290 '
12300 CLS
12310 SYMBOL(8,  8),"例えば下の数字の中から",1,1,7
12320 SYMBOL(8, 28),"一つ選択してみてください。",1,1,7
12330 FOR Y=0 TO 2
12340   FOR X=0 TO 2
12350     LINE(X*64+16,192-Y*64)-(X*64+63,192-Y*64+47),PSET,7,B
12360     SYMBOL(X*64+28,194-Y*64),FNVIL_I2S$(Y*3+X+1),3,3,7
12370   NEXT
12380 NEXT
12390 SYMBOL(16, 304),"選択→",1,1,7
12400 LINE(80,288)-(127,335),PSET,7,B
12410 '
12420 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0
12430 '
12440 VIL_X%=12:VIL_Y%=188:VIL_W%=VIL_X%+55:VIL_Z%=VIL_Y%+55
12450 VIL_XN%=3:VIL_YN%=3:VIL_XL%=64:VIL_YL%=64:VIL_MSEL_BD%=4:VIL_C%=10
12460 VIL_MSEL_BB%=1:VIL_MSEL_BE%=9
12470 GOSUB *VIL_MSEL_M
12480 IF VIL_KN%>0 THEN
12490   LINE(81,289)-(126,334),PRESET,,BF
12500   SYMBOL(92,290),FNVIL_P2S$(VIL_KN%),3,3,6
12510 ENDIF
12520 IF VIL_KN%<>-1 THEN 12440
12530 '
12540 CLS
12550 '
12560 ANS=INT(RND*64)+1
12570 FOR Y=0 TO 7
12580   FOR X=0 TO 7
12590     XA=RND*8:YA=RND*8
12600     SYMBOL(X*24+XA+64,Y*24+YA+64),                                                     KMID$("ΤＴ",2+(Y*8+X+1=ANS),1),1,1,RND*6+1
12610   NEXT
12620 NEXT
12630 SYMBOL(8,260)," ☆☆☆  「Τを探せ」ゲ－ム  ☆☆☆ ",1,1,6
12640 SYMBOL(8,280),"Ｔ(ティー)の中に一つだけ隠れている  ",1,1,4
12650 SYMBOL(8,300),"Τ(タウ)を見つけて選択してください。",1,1,4
12660 '
12670 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0
12680 '
12690 VIL_X%=64:VIL_Y%=64:VIL_W%=VIL_X%+23:VIL_Z%=VIL_Y%+23
12700 VIL_XL%=24:VIL_YL%=24:VIL_XN%=8:VIL_YN%=8:VIL_MSEL_BD%=0:VIL_C%=15
12710 VIL_MSEL_BB%=1:VIL_MSEL_BE%=64
12720 GOSUB *VIL_MSEL_M
12730 IF VIL_KN%>0 THEN 
12740   IF VIL_KN%=ANS THEN
12750     LINE(80,320)-(239,335),PRESET,,BF
12760     SYMBOL(80,320),"☆☆☆ 正解！ ☆☆☆",1,1,6
12770     GOSUB *VIL_BEEP_G
12780     GOTO 12540
12790   ELSE
12800     LINE(80,320)-(239,335),PRESET,,BF
12810     SYMBOL(80,320),"××× はずれ ×××",1,1,2
12820     GOSUB *VIL_BEEP_B
12830   ENDIF
12840 ENDIF
12850 IF VIL_KN%<>-1 THEN 12700
12860 '
12870 CLS
12880 '
12890 LINE(4,  4)-(299,295),PSET,4,B
12900 LINE(8, 30)-(295,229),PSET,4,B
12910 LINE(8,234)-(295,261),PSET,4,B
12920 SYMBOL(104,10),"MYSTIC HOUSE",1,1,4
12930 SYMBOL(16,238),"見る   取る   動かす たたく 終わる",1,1,4
12940 SYMBOL(8,302),"　↑　アドベンチャーゲームなどにも",1,1,7
12950 SYMBOL(8,322),"　　　利用できます。",1,1,7
12960 RESTORE 13010
12970 FOR I=0 TO 17
12980   READ K,X,Y:LINE(X,Y)-(X,Y),PSET,4
12990   FOR J=2 TO K:READ X,Y:LINE -(X,Y),PSET,4:NEXT
13000 NEXT
13010 DATA 4,  48, 30,  48,110, 255,110, 255, 30
13020 DATA 2,  48,110,   8,229
13030 DATA 2, 255,110, 295,229
13040 DATA 4,  70,110,  70, 35, 110, 35, 110,110
13050 DATA 5,  74, 70,  74, 73,  77, 73,  77, 70,  74, 70
13060 DATA 5, 130,130, 120,160, 210,160, 200,130, 130,130
13070 DATA 4, 120,160, 120,170, 210,170, 210,160
13080 DATA 4, 135,170, 125,210, 130,210, 140,170
13090 DATA 4, 195,170, 205,210, 200,210, 190,170
13100 DATA 5, 265, 40, 265, 80, 280,130, 280, 90, 265, 40
13110 DATA 5, 160, 45, 160, 80, 200, 80, 200, 45, 160, 45
13120 DATA 5, 170, 50, 173, 74, 187, 70, 188, 52, 170, 50
13130 DATA 2, 174, 56, 177, 55
13140 DATA 2, 182, 56, 185, 58
13150 DATA 2, 180, 57, 178, 62
13160 DATA 2, 176, 70, 181, 67
13170 DATA 5,  65,127,  65, 122, 70,127,  65,127, 58,134
13180 DATA 2,  61,131,63,134
13190 '
13200 VIL_MSEL_BN%=1:VIL_MSEL_BC%=0
13210 '
13220 VIL_X%=14:VIL_Y%=236:VIL_W%=VIL_X%+51:VIL_Z%=VIL_Y%+23
13230 VIL_XN%=5:VIL_YN%=1:VIL_XL%=56:VIL_MSEL_BD%=0:VIL_C%=15
13240 VIL_MSEL_BB%=1:VIL_MSEL_BE%=5:VIL_MSEL_MN%=101
13250 GOSUB *VIL_MSEL_M
13260 IF VIL_KN%>0 THEN
13270   VIL_X%=8:VIL_Y%=265:VIL_L%=36:VIL_C%=12
13280   VIL_A$=KMID$("見る　取る　動かすたたく終わる",VIL_KN%*3-2,3)
13290   GOSUB *VIL_INP_GPRINT
13300   IF VIL_KN%=5 THEN 13760
13310   VERB=VIL_KN%
13320 '
13330   RESTORE 13430
13340   FOR I=1 TO 5
13350     READ VIL_MSEL_X%(I),VIL_MSEL_Y%(I),VIL_MSEL_W%(I),VIL_MSEL_Z%(I)
13360   NEXT
13370   VIL_XN%=5:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15
13380   VIL_MSEL_MN%=102:VIL_MSEL_BC%=0
13390   VIL_MSEL_BB%=1:VIL_MSEL_BE%=5
13400   GOSUB *VIL_MSEL_IN
13410   GOSUB *VIL_MSEL_BC
13420   IF VIL_KN%<1 THEN 13330
13430   DATA  68, 33,112,112
13440   DATA 158, 43,202, 82 
13450   DATA 263, 38,282,132
13460   DATA  56,120, 72,136
13470   DATA 118,128,212,212
13480 '
13490   RESTORE 13500:FOR I=1 TO VIL_KN%:READ VIL_A$:NEXT
13500   DATA ドア,肖像画,窓,鍵,テーブル
13510   VIL_X%=64:VIL_Y%=265:VIL_L%=8:VIL_C%=12:VIL_CB%=0
13520   GOSUB *VIL_INP_GPRINT
13530 '
13540   RESTORE 13620
13550   FOR I=1 TO VERB
13560     IF I=VERB THEN
13570       FOR J=1 TO VIL_KN%:READ VIL_A$:NEXT
13580     ELSE
13590       FOR J=1 TO 5:READ VIL_A$:NEXT
13600     ENDIF
13610   NEXT
13620   DATA "閉まっている　　　","見覚えのない顔だ　","外は晴れている　　"
13630   DATA "黄金の鍵だ　　　　","埃が積もっている　"
13640   DATA "取れるわけがない　","使い道はなさそうだ","取れるわけがない　"
13650   DATA "何故か取れない　　","重くて持てない　　"
13660   DATA "鍵が掛かっている　","ネジ止めされている","錆びついている　　"
13670   DATA "何故か動かない　　","疲れるからいやだ　"
13680   DATA "トントン　　　　　","手が痛いからいやだ","叩いても開かない　"
13690   DATA "叩いてどーする　　","ドンドン　　　　　"
13700   VIL_X%=136:VIL_Y%=265:VIL_L%=20:VIL_C%=12:VIL_CB%=0
13710   VIL_A$=": "+VIL_A$
13720   GOSUB *VIL_INP_GPRINT
13730 ENDIF
13740 GOTO 13220
13750 '
13760 MAXTURN=50
13770 RESTORE 13810
13780 FOR I=1 TO 8
13790   READ J:VIL_MSEL_BN%(105+I)=J
13800 NEXT
13810 DATA 2,1,1,2,2,4,1,1
13820 '
13830 CLS
13840 SYMBOL(16,  8),"　☆☆☆☆☆　設　定　☆☆☆☆☆　",1,1,6
13850 SYMBOL(16, 36),"表示      　英語　　　　日本語　　",1,1,7
13860 SYMBOL(16, 60),"ＢＧＭ      ＯＮ    　　ＯＦＦ　　",1,1,7
13870 SYMBOL(16, 84),"効果音　　　ＯＮ　　　　ＯＦＦ　　",1,1,7
13880 SYMBOL(16,108),"ヒント      あり    　　なし　　　",1,1,7
13890 SYMBOL(16,132),"難易度      初級　中級　上級　　　",1,1,7
13900 SYMBOL(16,156),"表示速度　　０　１　２　３　４　５",1,1,7
13910 SYMBOL(16,180),"最大ターン　(00)  ←　  　→  (99)",1,1,7
13920 SYMBOL(16,212),"　　　　～　決定　取消　～　　　　",1,1,7
13930 SYMBOL(16,276),"　↑　設定メニューも実現できます。",1,1,5
13940 GOSUB *PRINT_TURN
13950 '
13960 VIL_MSEL_BC%=0:VIL_VWM_R%=0
13970 VIL_C%=15:VIL_CC%=7
13980 VIL_MSEL_CMN%=105:VIL_MSEL_CMR%=8
13990 GOSUB *VIL_MSEL_CNFSV
14000 MAXTURN_OLD=MAXTURN
14010 '
14020 RESTORE 14120
14030 FOR I=1 TO 8
14040   READ VIL_MSEL_CX%(I),VIL_MSEL_CY%(I)
14050   READ W,Z
14060     VIL_MSEL_CW%(I)=VIL_MSEL_CX%(I)+W
14070     VIL_MSEL_CZ%(I)=VIL_MSEL_CY%(I)+Z
14080   READ VIL_MSEL_CL%(I)
14090   READ VIL_MSEL_CN%(I),VIL_MSEL_CBB%(I),VIL_MSEL_CBE%(I)
14100 NEXT
14110 '
14120 DATA 108, 34, 51, 19,  96,  2,1,2
14130 DATA 108, 58, 51, 19,  96,  2,1,2
14140 DATA 108, 82, 51, 19,  96,  2,1,2
14150 DATA 108,106, 51, 19,  96,  2,1,2
14160 DATA 108,130, 35, 19,  48,  3,1,3
14170 DATA 108,154, 19, 19,  32,  6,0,5
14180 DATA 108,178, 35, 19, 144,  2,1,2
14190 DATA 108,210, 35, 19,  48,  2,1,2
14200 '
14210 ENDF=0
14220 WHILE ENDF=0
14230   GOSUB *VIL_MSEL_CNFM
14240   IF VIL_MSEL_CR%=7 AND VIL_KN%>0 THEN
14250     MAXTURN=MAXTURN-(VIL_KN%=1)*(MAXTURN>0)+(VIL_KN%=2)*(MAXTURN<99)
14260     GOSUB *PRINT_TURN
14270   ELSE IF VIL_MSEL_CR%=8 THEN
14280     ENDF=-1
14290     IF VIL_KN%=2 THEN GOSUB *VIL_MSEL_CNFLD:MAXTURN=MAXTURN_OLD
14300 '                    設定を取消
14310   ENDIF
14320 WEND
14330 '
14340 SYMBOL(16,304)," 　　　もう一度やりますか？　　　 ",1,1,7
14350 VIL_X%=92:VIL_Y%=334:VIL_MSEL_BN%=1:VIL_C%=15
14360 GOSUB *VIL_SEL_YN
14370 SYMBOL(16,304),"　　　　　　　　　　　　　　　　　",1,1,7
14380 IF VIL_KN%=1 THEN 13830 ELSE IF VIL_KN%=2 THEN 14460 ELSE 14350 
14390 '
14400 *PRINT_TURN
14410 VIL_X%=192:VIL_Y%=180:VIL_L%=2:VIL_C%=15:VIL_CB%=0
14420 VIL_A$=FNVIL_P2S0$(MAXTURN,2)
14430 GOSUB *VIL_INP_GPRINT
14440 RETURN
14450 '
14460 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_CL:GOSUB *VIL_WIN_CL
14470 '
14480 LINE(272,434)-(639,479),PSET,4,BF
14490 VIL_WIN_X%=16:VIL_WIN_Y%=240
14500 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+68+16+7
14510 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
14520 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
14530 CLS
14540 SYMBOL(8,  8),"入力パッケージでは、　　　　　",1,1,7
14550 SYMBOL(8, 28),"・入力文字列の最大長を指定可能",1,1,7
14560 SYMBOL(8, 48),"・日本語入力が可能　　　　　　",1,1,7
14570 SYMBOL(8, 68),"・ヒストリー呼び出しが可能    ",1,1,7
14580 '
14590 VIL_WIN_X%=320:VIL_WIN_Y%=8
14600 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+376+16+7
14610 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0
14620 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR
14630 NAM$="":TIM$=""
14640 '
14650 CLS:GOSUB *VIL_INP_FEPON
14660 SYMBOL(8,  8),"＊＊＊＊＊　使用可能キー　＊＊＊＊＊",1,1,6
14670 SYMBOL(8, 28),"[RET]   : 決定　　　　　　　　　　　",1,1,7
14680 SYMBOL(8, 48),"[取消]  : 取消　　　　　　　　　　　",1,1,7
14690 SYMBOL(8, 68),"←　→  : カーソル移動　　　　　　　",1,1,7
14700 SYMBOL(8, 88),"[BS]    : カーソル位置の左１文字削除",1,1,7
14710 SYMBOL(8,108),"[削除]  : カーソル位置１文字削除　　",1,1,7
14720 SYMBOL(8,128),"[HOME]  : クリア　　　　　　　　　　",1,1,7
14730 SYMBOL(8,148),"↑↓    : ヒストリー呼び出し  　　　",1,1,7
14740 SYMBOL(8,168),"マウス左/右 : [決定]/[取消]と等価　 ",1,1,7
14750 SYMBOL(8,188),"パッドＡ/Ｂ : [決定]/[取消]と等価　 ",1,1,7
14760 SYMBOL(8,208),"方向ボタン  : カーソルキーと等価　　",1,1,7
14770 SYMBOL(8,228),"＊＊＊＊＊　 　使用例　 　＊＊＊＊＊",1,1,6
14780 '
14790 SYMBOL(8,248),"あなたの名前を入力してください。　　",1,1,7
14800 SYMBOL(8,268),"(半角16文字以内) :　　　　　　　　　",1,1,7
14810 '
14820 VIL_X%=8+16*9:VIL_Y%=268:VIL_L%=16:VIL_C%=15:VIL_CB%=0:VIL_A$="" 'NAM$
14830 VIL_INP_HSN%=1
14840 GOSUB *VIL_INP_STR
14850 IF VIL_KN%=-1 OR VIL_A$="" THEN 14820
14860 NAM$=VIL_A$
14870 '
14880 SYMBOL(8,288),"現在時刻を入力してください。　　　　",1,1,7
14890 SYMBOL(8,308),"(00:00～23:59)   :　　　　　　　　　",1,1,7
14900 '
14910 VIL_INP_HSN%=2
14920 VIL_X%=8+16*9:VIL_Y%=308:VIL_L%=5:VIL_C%=15:VIL_CB%=0:VIL_A$="" 'TIM$
14930 GOSUB *VIL_INP_STR
14940 IF VIL_KN%=-1 OR VIL_A$="" THEN 14920
14950 TIM$=VIL_A$
14960 IF LEN(VIL_A$)<>5 OR MID$(VIL_A$,3,1)<>":" THEN 14920
14970 HOUR=VAL(LEFT$(VIL_A$,2)):MINUTE=VAL(MID$(VIL_A$,4,2))
14980 IF HOUR<0 OR 23<HOUR OR MINUTE<0 OR 59<MINUTE THEN
14990   GOSUB *VIL_BEEP_B:GOTO 14920
15000 ENDIF
15010 IF 6<=HOUR AND HOUR<=11 THEN
15020   A$="おはよう。"
15030 ELSE IF 12=<HOUR AND HOUR<=18 THEN
15040   A$="こんにちは。"
15050 ELSE
15060   A$="こんばんは。"
15070 ENDIF
15080 '
15090 SYMBOL(8,328),"現在"+FNVIL_P2S$(HOUR)+"時"+FNVIL_P2S$(MINUTE)+"分。"                      ,1,1,4
15100 SYMBOL(8,348),NAM$+"さん、"+A$,1,1,4
15110 SYMBOL(8,376),"もう一度やる？",1,1,7
15120 VIL_MSEL_BN%=1
15130 VIL_X%=132:VIL_Y%=372
15140 GOSUB *VIL_SEL_YN
15150 IF VIL_KN%<1 THEN 15130
15160 IF VIL_KN%=1 THEN 14650
15170 '
15180 GOSUB *VIL_INP_FEPOFF
15190 '
15200 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_CLALL
15210 RETURN
15220 '
15230 '<<<<<<<<<<<<<<<<<<<<  ウィンドウマネージャ  >>>>>>>>>>>>>>>>>>>>
15240 *VWM
15250 CLS
15260 VIL_VWM_N%=0
15270 VIL_WIN_UB%=14:VIL_WIN_DB%=8:VIL_WIN_RB%=8:VIL_WIN_LB%=8
15280                                               'ウィンドウ枠幅設定
15290 PALETTE 7,[255,255,255]  'パレット(8 XOR 15)を白にする
15300 PALETTE 5,[80,80,0]
15310 FOR Y=0 TO 479 STEP 16
15320   FOR X=0 TO 639 STEP 8*7
15330     SYMBOL(X,Y),"ＶＩＬ ",1,1,%5,,NOT
15340   NEXT
15350 NEXT
15360 '
15370 VIL_WIN_X%=100                :VIL_WIN_Y%=40
15380 VIL_WIN_W%=VIL_WIN_X%+16*19+15:VIL_WIN_Z%=VIL_WIN_Y%+8+16+7
15390 VIL_VWM_T$="VWM":VIL_VWM_AT%=0
15400 GOSUB *VIL_VWM_OP
15410 SYMBOL(  8,  8),"～ ウィンドウマネージャ・パッケージ ～",1,1,6
15420 '
15430 GOSUB *VIL_WIN_PMA
15440 VIL_WIN_X%=20                 :VIL_WIN_Y%=80
15450 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
15460 VIL_VWM_T$="MOVE":VIL_VWM_AT%=8
15470 GOSUB *VIL_VWM_OP
15480 SYMBOL(  8,  8),"　　 ～　ウィンドウ移動　～ 　　",1,1,6
15490 SYMBOL(  8, 36)," MOVE 属性をもつウィンドウは、上",1,1,7
15500 SYMBOL(  8, 56),"部のタイトルバーにマウスカーソル",1,1,7
15510 SYMBOL(  8, 76),"を合わせて左ボタンを押すと、ドラ",1,1,7
15520 SYMBOL(  8, 96),"ッグで動かすことができます。　　",1,1,7
15530 SYMBOL(  8,136),"　　　　　　　納得した。→　　　",1,1,7
15540 '
15550 VIL_KN%=0
15560 WHILE VIL_KN%<>1
15570   VIL_X%=228:VIL_Y%=132
15580   GOSUB *VIL_SEL_OK
15590   IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN
15600 WEND
15610 '
15620 VIL_WIN_X%=60                 :VIL_WIN_Y%=122
15630 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+116+16+7
15640 VIL_VWM_T$="CLOSE 0":VIL_VWM_AT%=0
15650 GOSUB *VIL_VWM_OP
15660 SYMBOL(8, 8)," ～　ウィンドウ・クローズ　～ ",1,1,6
15670 SYMBOL(8,36),"CLOSE 属性をもつウィンドウは、",1,1,7
15680 SYMBOL(8,56),"左上隅の　スイッチをクリックす",1,1,7
15690 SYMBOL(8,76),"ると、閉じることができます。　",1,1,7
15700 LINE(75,60)-(84,69),PSET,7,B
15710 LINE(75,60)-(84,69),PSET,7
15720 LINE(75,69)-(84,60),PSET,7
15730 '
15740 VIL_WIN_X%=160                :VIL_WIN_Y%=250
15750 VIL_WIN_W%=VIL_WIN_X%+16*12+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7
15760 VIL_VWM_T$="CLOSE 1":VIL_VWM_AT%=2
15770 GOSUB *VIL_VWM_OP
15780 SYMBOL(8, 8),"例えば、このウィンドウを",1,1,7
15790 SYMBOL(8,28),"閉じてみてください。　　",1,1,7
15800 '
15810 VIL_VWM_R%=0
15820 WHILE VIL_VWM_R%<>2
15830   MOUSE 1,,,1
15840   WHILE MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND
15850   VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1)
15860   MOUSE 1,,,0
15870   GOSUB *VIL_VWM_WIN
15880 WEND
15890 '
15900 WHILE INKEY$<>"":WEND
15910 SYMBOL(8,116),"もう一度やる？",1,1,7
15920 'VIL_KN%=0
15930 VIL_X%=132:VIL_Y%=112
15940 GOSUB *VIL_SEL_YN
15950 IF VIL_KN%<1 THEN 15930
15960 IF VIL_KN%=1 THEN 15740
15970 '
15980 VIL_WIN_X%=100                :VIL_WIN_Y%=164
15990 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
16000 VIL_VWM_T$="HIDE":VIL_VWM_AT%=4
16010 GOSUB *VIL_VWM_OP
16020 SYMBOL(8,  8),"　～　ウィンドウ一時消去　～　",1,1,6
16030 SYMBOL(8, 36)," HIDE 属性をもつウィンドウは、",1,1,7
16040 SYMBOL(8, 56),"左上隅の　スイッチをクリックす",1,1,7
16050 SYMBOL(8, 76),"ると、左ボタンを押している間、",1,1,7
16060 SYMBOL(8, 96),"一時的に閉じることができます。",1,1,7
16070 SYMBOL(8,136),"　　納得したら  →　　　　　　",1,1,7
16080 LINE(75,60)-(84,69),PSET,7,B
16090 LINE(75,69)-(84,60),PSET,7
16100 '
16110 VIL_KN%=0
16120 WHILE VIL_KN% <> 1
16130   VIL_X%=212:VIL_Y%=132
16140   GOSUB *VIL_SEL_OK
16150   IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN
16160 WEND
16170 '
16180 VIL_WIN_X%=140                :VIL_WIN_Y%=206
16190 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7
16200 VIL_VWM_T$="RESIZE":VIL_VWM_AT%=16
16210 GOSUB *VIL_VWM_OP
16220 SYMBOL(8,  8)," ～　ウィンドウ・サイズ変更　～ ",1,1,6
16230 SYMBOL(8, 36)," RESIZE 属性をもつウィンドウは、",1,1,7
16240 SYMBOL(8, 56),"右上隅の　スイッチにマウスカーソ",1,1,7
16250 SYMBOL(8, 76),"ルを合わせて左ボタンを押すと、ド",1,1,7
16260 SYMBOL(8, 96),"ラッグで大きさを変えることができ",1,1,7
16270 SYMBOL(8,116),"ます。                          ",1,1,7
16280 SYMBOL(8,136),"　　納得したら  →　　　　　　　",1,1,7
16290 LINE(75,60)-(84,69),PSET,7,B
16300 LINE(75,64)-(80,69),PSET,7,B
16310 '
16320 'VIL_KN%=0
16330 VIL_X%=212:VIL_Y%=132
16340 GOSUB *VIL_SEL_OK
16350 IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN:IF VIL_VWM_R%=16 THEN 16220
16360 IF VIL_KN%<>1 THEN 16330
16370 '
16380 FOR I=1 TO 4:GOSUB *VIL_VWM_CL:NEXT
16390 VIL_WIN_X%=20                 :VIL_WIN_Y%=80
16400 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+218+16+7
16410 VIL_VWM_T$="ALL 0":VIL_VWM_AT%=0
16420 GOSUB *VIL_VWM_OP
16430 SYMBOL(8,  8),"　最後の例として、全属性を指定したウ",1,1,7
16440 SYMBOL(8, 28),"ィンドウを右に挙げます。いろいろ試し",1,1,7
16450 SYMBOL(8, 48),"てみてください。　　　　　　　　　　",1,1,7
16460 SYMBOL(8, 68),"　なお、このウィンドウは　　　　　　",1,1,7
16470 SYMBOL(8, 88),"・移動範囲　 　: (120,40)-(599,439) ",1,1,4
16480 SYMBOL(8,108),"・最大サイズ 　: 328×248ドット　 　",1,1,4
16490 SYMBOL(8,128),"・最小サイズ　 : 136× 72ドット　 　",1,1,4
16500 SYMBOL(8,148),"・移動単位　 　: X・Y方向共 8ドット ",1,1,4
16510 SYMBOL(8,168),"・リサイズ単位 : X・Y方向共16ドット ",1,1,4
16520 SYMBOL(8,188),"となっています。　　　　　　　　　　",1,1,7
16530 '
16540 VIL_WIN_X%=320           :VIL_WIN_Y%=120
16550 VIL_WIN_W%=VIL_WIN_X%+167:VIL_WIN_Z%=VIL_WIN_Y%+119
16560 VIL_VWM_T$="ALL 1":VIL_VWM_AT%=1+2+4+8+16
16570 GOSUB *VIL_VWM_OP
16580 GOSUB 17040
16590 VIL_VWM_XM%=120       '移動/リサイズ時ウィンドウ左上隅座標最小値
16600 VIL_VWM_YM%= 40
16610 VIL_VWM_WM%=599       '移動/リサイズ時ウィンドウ右下隅座標最大値
16620 VIL_VWM_ZM%=439
16630 VIL_VWM_XL%=136       'リサイズ時のＸ・Ｙ方向長さ最小値
16640 VIL_VWM_YL%= 72
16650 VIL_VWM_WL%=328       'リサイズ時のＸ・Ｙ方向長さ最大値
16660 VIL_VWM_ZL%=248
16670 VIL_VWM_XD%=  8       '移動時の単位ドット数
16680 VIL_VWM_YD%=  8
16690 VIL_VWM_WD%= 16       'リサイズ時の単位ドット数
16700 VIL_VWM_ZD%= 16
16710 '
16720 MOUSE 1,,,1:VIL_VWM_R%=0
16730 WHILE VIL_VWM_R%<>2
16740   VIL_X%=8:VIL_Y%=8:VIL_W%=VIL_X%+7:VIL_Z%=VIL_Y%+7
16750   VIL_XN%=1:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15:VIL_MSEL_MN%=0
16760   VIL_MSEL_BB%=1:VIL_MSEL_BE%=1
16770   GOSUB *VIL_MSEL_M
16780   GOSUB *VIL_VWM_CHECK
16790   IF VIL_VWM_R% AND VIL_VWM_R%<>2 THEN GOSUB 17040
16800 WEND
16810 '
16820 SYMBOL(8,218),"もう一度やる？",1,1,7
16830 'VIL_KN%=0
16840 VIL_X%=132:VIL_Y%=218
16850 GOSUB *VIL_SEL_YN
16860 IF VIL_KN%<1 THEN 16850
16870 IF VIL_KN%=1 THEN 16540
16880 '
16890 VIL_VWM_XM%=  8       '移動/リサイズ時ウィンドウ左上隅座標最小値
16900 VIL_VWM_YM%= 14
16910 VIL_VWM_WM%=631       '移動/リサイズ時ウィンドウ右下隅座標最大値
16920 VIL_VWM_ZM%=471
16930 VIL_VWM_XL%= 32       'リサイズ時のＸ・Ｙ方向長さ最小値
16940 VIL_VWM_YL%=  8
16950 VIL_VWM_WL%=624       'リサイズ時のＸ・Ｙ方向長さ最大値
16960 VIL_VWM_ZL%=458
16970 VIL_VWM_XD%=  1       '移動時の単位ドット数
16980 VIL_VWM_YD%=  1
16990 VIL_VWM_WD%=  1       'リサイズ時の単位ドット数
17000 VIL_VWM_ZD%=  1
17010 GOSUB *VIL_VWM_CLALL
17020 RETURN
17030 '
17040 GOSUB *VIL_VWM_CLS
17050 CIRCLE((VIL_WIN_W%-VIL_WIN_X%)\2,(VIL_WIN_Z%-VIL_WIN_Y%)\2)                        ,(VIL_WIN_W%-VIL_WIN_X%)\2,1                                                 ,(VIL_WIN_Z%-VIL_WIN_Y%)/(VIL_WIN_W%-VIL_WIN_X%)
17060 A$="位置　("+FNVIL_P2S0$(VIL_WIN_X%,3)+","                                               +FNVIL_P2S0$(VIL_WIN_Y%,3)+")"
17070 SYMBOL(8, 8),A$,1,1,6
17080 A$="　 　-("+FNVIL_P2S0$(VIL_WIN_W%,3)+","                                               +FNVIL_P2S0$(VIL_WIN_Z%,3)+")"
17090 SYMBOL(8,28),A$,1,1,6
17100 A$="サイズ("+FNVIL_P2S0$(VIL_WIN_W%-VIL_WIN_X%+1,3)+","                                  +FNVIL_P2S0$(VIL_WIN_Z%-VIL_WIN_Y%+1,3)+")"
17110 SYMBOL(8,48),A$,1,1,6
17120 RETURN
17130 '
17140 '<<<<<<<<<<<<<<<<<<<<  ユーティリティ  >>>>>>>>>>>>>>>>>>>>
17150 *UTY
17160 '
17170 VIL_WIN_X%=192                :VIL_WIN_Y%=320
17180 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+32+16+7
17190 VIL_VWM_T$="CAUTION":VIL_VWM_AT%=0
17200 GOSUB *VIL_VWM_OP
17210 SYMBOL(8,  8),"この機能は現在未サポートです。",1,1,7
17220 VIL_X%=108:VIL_Y%=32
17230 GOSUB *VIL_SEL_OK
17240 IF VIL_KN%<>1 THEN 17230
17250 GOSUB *VIL_VWM_CL
17260 RETURN
17270 '
