10 'NOI'z BASIC GUI Support Library System Ver4.1
20 'このライブラリを使うと、４Ｍ必要となります。
30 '２Ｍしか無い人に配付するとき、フリコレに送るときは、ご注意ください。
40 GOSUB *FORMAT
50 *FED_IN
60 FOR I=0 TO 15
70 FOR COL=0 TO 15
80 PALETTE COL,[PAL%(0,COL)*I,PAL%(1,COL)*I,PAL%(2,COL)*I]
90 NEXT
100 NEXT:RETURN
110 *FED_OUT
120 FOR I=15 TO 0 STEP -1
130 FOR COL=0 TO 15
140 PALETTE COL,[PAL%(0,COL)*I,PAL%(1,COL)*I,PAL%(2,COL)*I]
150 NEXT
160 NEXT:RETURN
170 *CONNECT
180 CONNECT (X1,Y2)-(X1,Y1)-(X2,Y1),7,PSET
190 CONNECT (X2,Y1+1)-(X2,Y2)-(X1+1,Y2),%8,PSET
200 RETURN
210 *CONNECT2
220 CONNECT (X1,Y2)-(X1,Y1)-(X2,Y1),7,PSET
230 CONNECT (X1+1,Y2-1)-(X1+1,Y1+1)-(X2-1,Y1+1),7,PSET
240 CONNECT (X2,Y1+1)-(X2,Y2)-(X1+1,Y2),%8,PSET
250 CONNECT (X2-1,Y1+2)-(X2-1,Y2-1)-(X1+2,Y2-1),%8,PSET
260 RETURN
270 *CONNECTR
280 CONNECT (X1,Y2)-(X1,Y1)-(X2,Y1),%8,PSET
290 CONNECT (X2,Y1+1)-(X2,Y2)-(X1+1,Y2),7,PSET
300 RETURN
310 *CONNECT2R
320 CONNECT (X1,Y2)-(X1,Y1)-(X2,Y1),%8,PSET
330 CONNECT (X1+1,Y2-1)-(X1+1,Y1+1)-(X2-1,Y1+1),%8,PSET
340 CONNECT (X2,Y1+1)-(X2,Y2)-(X1+1,Y2),7,PSET
350 CONNECT (X2-1,Y1+2)-(X2-1,Y2-1)-(X1+2,Y2-1),7,PSET
360 RETURN
370 *PALETTEON
380 FOR I=0 TO 15
390 PALETTE I,[PAL%(0,I)*16,PAL%(1,I)*16,PAL%(2,I)*16]
400 NEXT
410 RETURN
420 *HAIKEI
430 IF HAIKEI>=8 THEN C=HAIKEI-8:LINE(0,0)-(639,479),PSET,%C,BF ELSE LINE(0,0)-(639,479),PSET,HAIKEI,BF
440 RETURN
450 *INIT_GUI
460 DIM BS$(MAX),HX(MAX),HY(MAX),HDX(MAX),HDY(MAX),COL(MAX),MOJI$(MAX),PUSHB(MAX),PUL(MAX)
470 RETURN
480 *ERASE_GUI
490 ERASE BS$,HX,HY,HDX,HDY,COL,MOJI$,PUSHB,PUL
500 RETURN
510 *RK
520 FOR I=0 TO MAX
530 IF BS$(I)="BOXFIL" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF
540 IF BS$(I)="BOXFIL" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF
550 IF BS$(I)="CONNECT" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT
560 IF BS$(I)="CONNECT" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT
570 IF BS$(I)="CONNECT2" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2
580 IF BS$(I)="CONNECT2" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2
590 IF BS$(I)="CONNECTR" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECTR
600 IF BS$(I)="CONNECTR" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECTR
610 IF BS$(I)="CONNECT2R" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2R
620 IF BS$(I)="CONNECT2R" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2R
630 IF BS$(I)="FMTOWNS" THEN PUT@A(HX(I),HY(I))-(HDX(I),HDY(I)),FMTOWNS,MATTE,,,0
640 IF BS$(I)="MCONNECT" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT
650 IF BS$(I)="MCONNECT" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT
660 IF BS$(I)="MCONNECT2" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2
670 IF BS$(I)="MCONNECT2" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2
680 IF BS$(I)="MCONNECTR" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECTR
690 IF BS$(I)="MCONNECTR" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECTR
700 IF BS$(I)="MCONNECT2R" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2R
710 IF BS$(I)="MCONNECT2R" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2R
720 IF BS$(I)="MOJI" AND COL(I)>=0 AND COL(I)<=7 THEN SYMBOL(HX(I),HY(I)),MOJI$(I),(HDX(I)-HX(I))/(LEN(MOJI$(I))*8),(HDY(I)-HY(I))/16,COL(I)
730 IF BS$(I)="MOJI" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:SYMBOL(HX(I),HY(I)),MOJI$(I),(HDX(I)-HX(I))/(LEN(MOJI$(I))*8),(HDY(I)-HY(I))/16,%C
740 IF BS$(I)="EXIT" THEN PUT@A(HX(I),HY(I))-(HDX(I),HDY(I)),EXIT,MATTE,,,0
750 IF BS$(I)="PULLDOWN" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT
760 IF BS$(I)="PULLDOWN" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT
770 IF BS$(I)="PULLDOWN2" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2
780 IF BS$(I)="PULLDOWN2" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2
790 IF BS$(I)="PULLDOWNR" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECTR
800 IF BS$(I)="PULLDOWNR" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECTR
810 IF BS$(I)="PULLDOWN2R" AND COL(I)>=0 AND COL(I)<=7 THEN LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,COL(I),BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2R
820 IF BS$(I)="PULLDOWN2R" AND COL(I)>=8 AND COL(I)<=15 THEN C=COL(I)-8:LINE(HX(I),HY(I))-(HDX(I),HDY(I)),PSET,%C,BF:X1=HX(I):Y1=HY(I):X2=HDX(I):Y2=HDY(I):GOSUB *CONNECT2R
830 IF BS$(I)="SANKAKU" THEN PUT@A(HX(I),HY(I))-(HDX(I),HDY(I)),SANKAKU,MATTE,,,0
840 NEXT
850 RETURN
860 *SANKAKU
870 RESTORE 880
880 DATA -1,0,0,0,0
890 DATA -1,-1,0,0,0
900 DATA -1,-1,-1,0,0
910 DATA -1,-1,-1,-1,0
920 DATA -1,-1,-1,-1,-1
930 DATA -1,-1,-1,-1,0
940 DATA -1,-1,-1,0,0
950 DATA -1,-1,0,0,0
960 DATA -1,0,0,0,0
970 DATA 0,0,0,0,0
980 FOR I=0 TO 9:FOR A=0 TO 4:READ DOT
990 IF DOT=-1 THEN PSET(I,480+A),7
1000 NEXT:NEXT
1010 GET@A(0,480)-(9,484),SANKAKU
1020 RETURN
1030 *EXIT
1040 RESTORE 1080
1050 FOR Y=0 TO 12:FOR X=0 TO 10:READ E
1060 IF E=1 THEN PSET(640+X,Y),7
1070 NEXT:NEXT
1080 DATA 0,0,0,0,1,1,1,0,0,0,0
1090 DATA 0,0,0,0,1,1,1,0,0,0,0
1100 DATA 0,0,0,0,1,1,1,0,0,0,0
1110 DATA 0,0,0,0,1,1,1,0,0,0,0
1120 DATA 0,0,0,0,0,0,0,0,0,0,0
1130 DATA 0,0,0,0,1,1,1,0,0,0,0
1140 DATA 0,0,0,0,1,1,1,0,0,0,0
1150 DATA 0,0,0,1,1,1,1,1,0,0,0
1160 DATA 0,0,0,1,1,1,1,1,0,0,0
1170 DATA 0,0,1,1,1,1,1,1,1,0,0
1180 DATA 0,0,1,1,1,1,1,1,1,0,0
1190 DATA 0,1,1,1,1,1,1,1,1,1,0
1200 DATA 1,1,1,1,1,1,1,1,1,1,1
1210 GET@A(640,0)-(650,12),EXIT
1220 *FMTOWNS
1230 RESTORE 1240
1240 DATA 0,0,0,0,0,0,-1,0,0,0,-1
1250 DATA 0,0,0,0,0,0,-1,-1,-1,-1,-1
1260 DATA 0,0,0,0,0,0,-1,0,-1,0,-1
1270 DATA 0,0,0,0,0,0,-1,0,-1,0,0
1280 DATA 0,0,0,0,0,0,-1,-1,0,0,0
1290 DATA 0,0,0,0,0,0,0,0,0,0,0
1300 DATA 0,0,0,0,0,0,-1,0,0,0,-1
1310 DATA 0,0,0,0,0,0,-1,-1,-1,-1,-1
1320 DATA 0,0,0,0,0,0,0,-1,-1,0,0
1330 DATA 0,0,0,0,0,0,0,0,0,-1,-1
1340 DATA 0,0,0,0,0,0,0,0,-1,-1,0
1350 DATA 0,0,0,0,0,0,-1,-1,0,0,-1
1360 DATA -1,-1,0,0,0,0,-1,-1,-1,-1,-1
1370 DATA -1,-1,0,0,0,0,-1,0,0,0,-1
1380 DATA -1,-1,0,0,0,0,0,0,0,0,0
1390 DATA -1,-1,0,0,0,0,0,0,0,0,0
1400 DATA -1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1
1410 DATA -1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1
1420 DATA -1,-1,0,0,0,0,0,0,0,0,0
1430 DATA -1,-1,0,0,0,0,0,0,0,0,0
1440 DATA -1,-1,0,0,0,0,0,0,0,0,0
1450 DATA -1,-1,0,0,-1,0,-1,0,0,0,0
1460 DATA 0,0,-1,-1,-1,0,-1,-1,-1,0,0
1470 DATA 0,-1,-1,-1,-1,0,-1,-1,-1,-1,0
1480 DATA 0,-1,-1,0,0,0,0,0,-1,-1,0
1490 DATA -1,-1,0,0,0,0,0,0,0,-1,-1
1500 DATA -1,-1,0,0,0,0,0,0,0,-1,-1
1510 DATA -1,-1,0,0,0,0,0,0,0,-1,-1
1520 DATA 0,-1,-1,0,0,0,0,0,-1,-1,0
1530 DATA 0,-1,-1,-1,-1,0,-1,-1,-1,-1,0
1540 DATA 0,0,-1,-1,-1,0,-1,-1,-1,0,0
1550 DATA 0,0,0,0,-1,0,-1,0,0,0,0
1560 DATA -1,-1,0,0,0,0,0,0,0,0,0
1570 DATA -1,-1,-1,-1,-1,0,0,0,0,0,0
1580 DATA 0,0,-1,-1,-1,0,-1,-1,0,0,0
1590 DATA 0,0,0,0,0,0,-1,-1,-1,-1,-1
1600 DATA 0,0,0,0,0,0,-1,-1,-1,-1,-1
1610 DATA 0,0,0,-1,-1,0,-1,-1,0,0,0
1620 DATA -1,-1,-1,-1,-1,0,0,0,0,0,0
1630 DATA -1,-1,-1,-1,-1,0,0,0,0,0,0
1640 DATA 0,0,0,-1,-1,0,-1,-1,0,0,0
1650 DATA 0,0,0,0,0,0,-1,-1,-1,-1,-1
1660 DATA 0,0,0,0,0,0,-1,-1,-1,-1,-1
1670 DATA 0,0,-1,-1,-1,0,-1,-1,0,0,0
1680 DATA -1,-1,-1,-1,-1,0,0,0,0,0,0
1690 DATA -1,-1,0,0,0,0,0,0,0,0,0
1700 DATA 0,0,0,0,0,0,0,0,0,0,0
1710 DATA -1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1
1720 DATA -1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1
1730 DATA -1,-1,0,0,0,0,0,0,0,0,0
1740 DATA -1,-1,0,0,0,0,0,0,0,0,0
1750 DATA -1,-1,-1,-1,0,0,0,0,0,0,0
1760 DATA 0,-1,-1,-1,-1,0,-1,0,0,0,0
1770 DATA 0,0,0,-1,-1,0,-1,-1,-1,0,0
1780 DATA 0,0,0,0,0,0,-1,-1,-1,-1,0
1790 DATA 0,0,0,0,0,0,0,0,-1,-1,-1
1800 DATA -1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1
1810 DATA -1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1
1820 DATA 0,0,0,0,0,0,0,0,0,0,0
1830 DATA 0,-1,-1,-1,0,0,0,0,0,-1,-1
1840 DATA -1,-1,-1,-1,-1,0,0,0,0,-1,-1
1850 DATA -1,-1,-1,-1,-1,0,0,0,0,-1,-1
1860 DATA -1,-1,0,-1,-1,0,0,0,0,-1,-1
1870 DATA -1,-1,0,-1,-1,0,0,0,0,-1,-1
1880 DATA -1,-1,0,-1,-1,0,0,0,0,-1,-1
1890 DATA -1,-1,0,-1,-1,0,0,0,0,-1,-1
1900 DATA -1,-1,0,-1,-1,0,-1,-1,-1,-1,-1
1910 DATA -1,-1,0,-1,-1,0,-1,-1,-1,-1,-1
1920 DATA 0,0,0,0,-1,0,-1,-1,-1,-1,0
1930 DATA 0,0,0,0,0,0,0,0,0,0,0
1940 CLS:FOR I=0 TO 69:FOR A=0 TO 10:READ DOT
1950 IF DOT=-1 THEN PSET(I,480+A),7
1960 NEXT:NEXT
1970 GET@A(0,480)-(69,490),FMTOWNS:RETURN
1980 *ボタン処理
1990 IF PUSHB(HMX)=2 THEN *BOTTONXOR
2000 IF PUSHB(HMX)=1 THEN *BOTTONH
2010 IF COL(HMX)<=7 AND COL(HMX)>=0 AND BS$(HMX)="CONNECT" THEN LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),PSET,COL(HMX),B
2020 IF COL(HMX)<=15 AND COL(HMX)>=8 AND BS$(HMX)="CONNECT" THEN C=COL(HMX)-8:LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),PSET,%C,B
2030 IF COL(HMX)<=7 AND COL(HMX)>=0 AND BS$(HMX)="CONNECT2" THEN
2040 FOR I=0 TO 1:LINE(HX(HMX)+I,HY(HMX)+I)-(HDX(HMX)-I,HDY(HMX)-I),PSET,COL(HMX),B:NEXT
2050 ENDIF
2060 IF COL(HMX)<=15 AND COL(HMX)>=8 AND BS$(HMX)="CONNECT2" THEN
2070 C=COL(HMX)-8:FOR I=0 TO 1:LINE(HX(HMX)+I,HY(HMX)+I)-(HDX(HMX)-I,HDY(HMX)-I),PSET,%C,B:NEXT
2080 ENDIF
2090 IF COL(HMX)<=7 AND COL(HMX)>=0 AND BS$(HMX)="CONNECTR" THEN LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),PSET,COL(HMX),BF
2100 IF COL(HMX)<=15 AND COL(HMX)>=8 AND BS$(HMX)="CONNECTR" THEN C=COL(HMX)-8:LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),PSET,%C,B
2110 IF COL(HMX)<=7 AND COL(HMX)>=0 AND BS$(HMX)="CONNECT2R" THEN
2120 FOR I=0 TO 1:LINE(HX(HMX)+I,HY(HMX)+I)-(HDX(HMX)-I,HDY(HMX)-I),PSET,COL(HMX),B:NEXT
2130 ENDIF
2140 IF COL(HMX)<=15 AND COL(HMX)>=8 AND BS$(HMX)="CONNECT2R" THEN
2150 C=COL(HMX)-8:FOR I=0 TO 1:LINE(HX(HMX)+I,HY(HMX)+I)-(HDX(HMX)-I,HDY(HMX)-I),PSET,%C,B:NEXT
2160 ENDIF
2170 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
2180 IF MX>=HX(HMX) AND MY>=HY(HMX) AND MX<=HDX(HMX) AND MY<=HDY(HMX) THEN
2190 ELSE
2200 IF BS$(HMX)="CONNECT" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT
2210 IF BS$(HMX)="CONNECT2" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2
2220 IF BS$(HMX)="CONNECTR" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECTR
2230 IF BS$(HMX)="CONNECT2R" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2R
2240 RETURN:ENDIF
2250 WEND
2260 IF BS$(HMX)="CONNECT" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT
2270 IF BS$(HMX)="CONNECT2" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2
2280 IF BS$(HMX)="CONNECTR" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECTR
2290 IF BS$(HMX)="CONNECT2R" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2R
2300 SWITCH=1:RETURN
2310 *BOTTONXOR
2320 LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),XOR,,BF
2330 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
2340 IF MX>=HX(HMX) AND MY>=HY(HMX) AND MX<=HDX(HMX) AND MY<=HDY(HMX) ELSE LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),XOR,,BF:RETURN
2350 WEND
2360 LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),XOR,,BF:SWITCH=1:RETURN
2370 *BOTTONH
2380 IF BS$(HMX)="CONNECT" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECTR
2390 IF BS$(HMX)="CONNECT2" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2R
2400 IF BS$(HMX)="CONNECTR" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT
2410 IF BS$(HMX)="CONNECT2R" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2
2420 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
2430 IF MX>=HX(HMX) AND MY>=HY(HMX) AND MX<=HDX(HMX) AND MY<=HDY(HMX) THEN
2440 ELSE
2450 IF BS$(HMX)="CONNECT" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT
2460 IF BS$(HMX)="CONNECT2" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2
2470 IF BS$(HMX)="CONNECTR" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECTR
2480 IF BS$(HMX)="CONNECT2R" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2R
2490 RETURN:ENDIF
2500 WEND
2510 IF BS$(HMX)="CONNECT" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT
2520 IF BS$(HMX)="CONNECT2" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2
2530 IF BS$(HMX)="CONNECTR" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECTR
2540 IF BS$(HMX)="CONNECT2R" THEN X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX):GOSUB *CONNECT2R
2550 SWITCH=1:RETURN
2560 *PULLDOWN
2570 IF PUSHB(HMX)=2 THEN *PULLXOR
2580 IF PUSHB(HMX)=1 THEN *PULLH
2590 IF COL(HMX)<=7 AND COL(HMX)>=0 AND BS$(HMX)="PULLDOWN" THEN LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),PSET,COL(HMX),B
2600 IF COL(HMX)<=15 AND COL(HMX)>=8 AND BS$(HMX)="PULLDOWN" THEN C=COL(HMX)-8:LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),PSET,%C,B
2610 IF COL(HMX)<=7 AND COL(HMX)>=0 AND BS$(HMX)="PULLDOWN2" THEN
2620 FOR I=0 TO 1:LINE(HX(HMX)+I,HY(HMX)+I)-(HDX(HMX)-I,HDY(HMX)-I),PSET,COL(HMX),B:NEXT
2630 ENDIF
2640 IF COL(HMX)<=15 AND COL(HMX)>=8 AND BS$(HMX)="PULLDOWN2" THEN
2650 C=COL(HMX)-8:FOR I=0 TO 1:LINE(HX(HMX)+I,HY(HMX)+I)-(HDX(HMX)-I,HDY(HMX)-I),PSET,%C,B:NEXT
2660 ENDIF
2670 IF COL(HMX)<=7 AND COL(HMX)>=0 AND BS$(HMX)="PULLDOWNR" THEN LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),PSET,COL(HMX),BF
2680 IF COL(HMX)<=15 AND COL(HMX)>=8 AND BS$(HMX)="PULLDOWNR" THEN C=COL(HMX)-8:LINE(HX(HMX),HY(HMX))-(HDX(HMX),HDY(HMX)),PSET,%C,B
2690 IF COL(HMX)<=7 AND COL(HMX)>=0 AND BS$(HMX)="PULLDOWN2R" THEN
2700 FOR I=0 TO 1:LINE(HX(HMX)+I,HY(HMX)+I)-(HDX(HMX)-I,HDY(HMX)-I),PSET,COL(HMX),B:NEXT
2710 ENDIF
2720 IF COL(HMX)<=15 AND COL(HMX)>=8 AND BS$(HMX)="PULLDOWN2R" THEN
2730 C=COL(HMX)-8:FOR I=0 TO 1:LINE(HX(HMX)+I,HY(HMX)+I)-(HDX(HMX)-I,HDY(HMX)-I),PSET,%C,B:NEXT
2740 ENDIF
2750 X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX)
2760 LP=VAL(MOJI$(HMX))
2770 GOSUB *PULLDOWNMENU
2780 IF BS$(HMX)="PULLDOWN" THEN GOSUB *CONNECT
2790 IF BS$(HMX)="PULLDOWN2" THEN GOSUB *CONNECT2
2800 IF BS$(HMX)="PULLDOWNR" THEN GOSUB *CONNECTR
2810 IF BS$(HMX)="PULLDOWN2R" THEN GOSUB *CONNECT2R
2820 SWITCH=1:RETURN
2830 *PULLXOR
2840 X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX)
2850 LINE(X1,Y1)-(X2,Y2),XOR,,BF
2860 LP=VAL(MOJI$(HMX))
2870 GOSUB *PULLDOWNMENU
2880 LINE(X1,Y1)-(X2,Y2),XOR,,BF:SWITCH=1:RETURN
2890 *PULLH
2900 LP=VAL(MOJI$(HMX))
2910 X1=HX(HMX):Y1=HY(HMX):X2=HDX(HMX):Y2=HDY(HMX)
2920 IF BS$(HMX)="PULLDOWN" THEN GOSUB *CONNECTR
2930 IF BS$(HMX)="PULLDOWN2" THEN GOSUB *CONNECT2R
2940 IF BS$(HMX)="PULLDOWNR" THEN GOSUB *CONNECT
2950 IF BS$(HMX)="PULLDOWN2R" THEN GOSUB *CONNECT2
2960 GOSUB *PULLDOWNMENU
2970 IF BS$(HMX)="PULLDOWN" THEN GOSUB *CONNECT
2980 IF BS$(HMX)="PULLDOWN2" THEN GOSUB *CONNECT2
2990 IF BS$(HMX)="PULLDOWNR" THEN GOSUB *CONNECTR
3000 IF BS$(HMX)="PULLDOWN2R" THEN GOSUB *CONNECT2R
3010 SWITCH=1:RETURN
3020 *GETWIN
3030 GET@A(LPX,PY)-(LPX+LP,PY+LPY),WIN%
3040 LINE(LPX,PY)-(LPX+LP,PY+LPY),PSET,%7,BF:LINE(LPX+1,PY+1)-(LPX+LP-3,PY+LPY-3),PSET,7,BF
3050 RETURN
3060 *PUTWIN
3070 PUT@A(LPX,PY)-(LPX+LP,PY+LPY),WIN%
3080 RETURN
3090 *PULLDOWNMENU
3100 'プルダウンメニューを出す部分をメモリに記憶する
3110 LPX=X1
3120 PY=Y2+1
3130 LPY=N(PUL(HMX))*17+3:GOSUB *GETWIN
3140 'プルダウンメニューアイテムを呼び出す
3150 FOR I=0 TO N(PUL(HMX))-1
3160 SYMBOL(LPX+10,PY+4+17*I),PULL$(PUL(HMX),I),.75!,.75!,%7
3170 NEXT
3180 'プルダウンメニュー選択
3190 PHMX=-2:TMP=-20
3200 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
3210 PHMX=(MY-PY-1)\17
3220 IF MY<PY-1 THEN 3330 ELSE IF MX<LPX OR MX>LPX+LP-2 OR MY>PY+I*17 THEN PHMX=-1:GOTO 3250
3230 IF PHMX=TMP THEN GOTO 3260
3240 LINE(LPX+1,PHMX*17+PY+1)-(LPX+LP-3,PHMX*17+PY+17),XOR,,BF
3250 IF TMP=>0 THEN LINE(LPX+1,TMP*17+PY+1)-(LPX+LP-3,TMP*17+PY+17),XOR,,BF
3260 TMP=PHMX:WEND
3270 IF PHMX=-2 THEN
3280 WHILE MOUSE(2,0)=0:WEND
3290 GOTO 3190
3300 ELSE
3310 GOTO 3350
3320 ENDIF
3330 IF MX>=X1 AND MX<=X2+1 THEN PHMX=-2:GOTO 3250 ELSE PHMX=-3
3340 'プルダウンメニューを消す
3350 GOSUB *PUTWIN
3360 '戻る
3370 RETURN
3380 *FORMAT 'ディスクの初期化ではない｡
3390 '********ここからは変更しないでください。********
3400 CLEAR ,,,,,300*1024:SCREEN 0:SCREEN@0
3410 CLS
3420 WINDOW(0,0)-(1023,511):VIEW(0,0)-(1023,511)
3430 MAX=0:GOSUB *INIT_GUI
3440 AND0$=CHR$(&H7F,&HFF,&H3F,&HFF,&H1F,&HFF,&H0F,&HFF,&H07,&HFF,&H03,&HFF,&H01,&HFF,&H00,&HFF,&H00,&H7F,&H00,&H3F,&H00,&H1F,&H00,&HFF,&H00,&HFF,&H18,&H7F,&H38,&H7F,&HFC,&H7F)
3450 DOT0$=CHR$(&H00,&H00,&H00,&H00,&H40,&H00,&H20,&H00,&H50,&H00,&H38,&H00,&H5C,&H00,&H2E,&H00,&H5F,&H00,&H2F,&H80,&H5E,&H00,&H26,&H00,&H42,&H00,&H03,&H00,&H01,&H00,&H00,&H00)
3460 AND1$=CHR$(&HFE,&H7F,&HF0,&H0F,&HE0,&H07,&HE0,&H01,&H80,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H80,&H00,&H80,&H00,&HC0,&H01,&HC0,&H01,&HE0,&H03,&HF0,&H07,&HFC,&H1F)
3470 DOT1$=CHR$(&H00,&H00,&H01,&H80,&H0D,&HB0,&H0D,&HB0,&H0D,&HB6,&H6D,&HB6,&H6F,&HF6,&H7F,&HFE,&H7F,&HFE,&H3F,&HFE,&H3F,&HFE,&H1F,&HFC,&H1F,&HFC,&H0F,&HF8,&H03,&HE0,&H00,&H00)
3480 AND2$=CHR$(&HFF,&HE7,&HFF,&H83,&HFE,&H01,&HF8,&H01,&HE0,&H21,&HC0,&H63,&H81,&HC3,&H07,&HC7,&H0F,&H87,&H0F,&H8F,&H0F,&H0F,&H9F,&H1F,&HF0,&H1F,&HE0,&H3F,&HF0,&H7F,&HF0,&HFF)
3490 DOT2$=CHR$(&H00,&H00,&H00,&H18,&H00,&H7C,&H01,&H8C,&H06,&H08,&H18,&H08,&H20,&H10,&H40,&H10,&H40,&H20,&H40,&H20,&H40,&H40,&H00,&H40,&H00,&H80,&H0F,&H00,&H00,&H00,&H00,&H00)
3500 DIM PAL%(2,15),SANKAKU(500),EXIT(500)
3510 DIM FMTOWNS(500),PULL$(10,20),WIN%(20000)
3520 LOAD@"palette2.pal",PAL%
3530 DEF FONT"システム   12ﾄﾞｯﾄ"
3540 GOSUB *EXIT
3550 GOSUB *FMTOWNS
3560 GOSUB *SANKAKU
3570 CLS:GOSUB *PALETTEON
3580 MOUSE 0:MOUSE 1,320,240,1:MOUSE 2,AND0$,DOT0$
3590 '************************************************
