home *** CD-ROM | disk | FTP | other *** search
- 10000 DATA " _________________________________________________________ "
- 10010 DATA " FMBED Ver1.06 1992/01/26 Copyright(c) TETSU 1992- "
- 10020 DATA " FileName=「FMBED.BAS」 "
- 10030 DATA " for FM-TOWNS 要2MbyteRAM "
- 10040 DATA " F-BASIC386 V1.1L20 以降用 "
- 10050 DATA " カレントディレクトリに「mtrnsm.rex」が必要 "
- 10060 DATA " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ "
- 10070 *INIT
- 10080 SCREEN@ 0: COLOR 7,0,7,0: WIDTH 80,25: CONSOLE 0,24,0: CLS 4
- 10090 PAL=0: FOR I=0 TO 15: PALETTE I,[PAL,PAL,PAL]: NEXT I
- 10100 COLOR 7,0,7,1: RESTORE
- 10110 FOR I=0 TO 6: READ I$: LOCATE 11,7+I: PRINT I$;: NEXT I
- 10120 COLOR 7,0,7,0
- 10130 A$="*INIT" :GOSUB *INIT_PR
- 10140 CLEAR ,,512,400000,1000
- 10150 DEFLNG A-Z: PAL=0
- 10160 'FREQCTL= 0: LOADM "freqctl.rex",FREQCTL
- 10170 MTRNSM =300: LOADM "mtrnsm.rex" ,MTRNSM
- 10180 WINDOW(0,0)-(1023,511)
- 10190 VIEW (0,0)-(1023,511)
- 10200 LINE (0,0)-(639,479),PSET,%7,BF
- 10210 DEF FNVRAM(X,Y)=INT((INT((X+8)/8)*(Y+1)*4+2-1)/2)
- 10220 DIM P1$(4),P2$(4,5),V%(23)
- 10230 P1$(0)="C4E4G4C4,R2R4E4,R2R4G4"
- 10240 P1$(1)="L16CDEFGAB>C<BAGFEDC"
- 10250 P1$(2)="C,E,G"
- 10260 P1$(3)=""
- 10270 P1$(4)=""
- 10280 VOL=64: AT=0
- 10290 PI!=3.14159!/2
- 10300 LOADWX =160: LOADWY =180: FILE$ =""
- 10310 SAVEWX =160: SAVEWY =180
- 10320 ERRWX =220: ERRWY =180
- 10330 EXITWX =220: EXITWY =180
- 10340 PLAYWX =110: PLAYWY =180
- 10350 LFOWX =160: LFOWY =180
- 10360 KX = 11: KY =425
- 10370 LFO=4
- 10380 'CALLM FREQCTL,LFO
- 10390 FOR I=0 TO 5: PART I,I: NEXT I
- 10400 BGM 1
- 10410 '
- 10420 A$="*BOX" :GOSUB *INIT_PR: GOSUB *BOX
- 10430 A$="*BAR_GET" :GOSUB *INIT_PR: GOSUB *BAR_GET
- 10440 A$="*SYMBOL" :GOSUB *INIT_PR: GOSUB *SYMBOL
- 10450 A$="*ENV_INIT" :GOSUB *INIT_PR: GOSUB *ENV_INIT
- 10460 A$="*CMP_INIT" :GOSUB *INIT_PR: GOSUB *CMP_INIT
- 10470 A$="*VOL_INIT" :GOSUB *INIT_PR: GOSUB *VOL_INIT
- 10480 A$="*PLAY_INIT" :GOSUB *INIT_PR: GOSUB *PLAY_INIT
- 10490 A$="*V_INIT" :GOSUB *INIT_PR: GOSUB *V_INIT
- 10500 A$="*KB_INIT" :GOSUB *INIT_PR: GOSUB *KB_INIT
- 10510 A$="*FSLCT_INIT":GOSUB *INIT_PR: GOSUB *FSLCT_INIT
- 10520 A$="*BTN_INIT" :GOSUB *INIT_PR: GOSUB *BTN_INIT
- 10530 A$="*MOUSE_INIT":GOSUB *INIT_PR: GOSUB *MOUSE_INIT
- 10540 MOUSE 0: MOUSE 1,320,240,1: MOUSE 1,320,240,1
- 10550 MS=MS_INIT: GOSUB *MOUSE_SET
- 10560 GOSUB *PAL_INIT: CLS 4
- 10570 ON ERROR GOTO *ERR
- 10580 '
- 10590 *MAIN
- 10600 MOUSE 4,0,0,639,479
- 10610 GOSUB *MPLOOP1
- 10620 '
- 10630 J=0
- 10640 FOR I=1 TO 18
- 10650 IF BTN%(I,0)<=MX AND BTN%(I,1)<=MY AND MX<=BTN%(I,2) AND MY<=BTN%(I,3) AND (BTN%(I,4)=3 OR PUSH=BTN%(I,4)) THEN J=I: I=18
- 10660 NEXT I
- 10670 ON J GOSUB *KB ,*ENV_OP ,*CMP_OP ,*VOL_OP ,*PLAYOFF,*EXIT ,*PLAY ,*PLAY_SET,*AT_OP ,*V_SCRN ,*V_READ ,*V_CNT ,*V_SAVE,*V_CLR ,*VNAME ,*LOAD ,*SAVE ,*LFO
- 10680 GOTO *MAIN
- 10690 '
- 10700 *PAL_INIT
- 10710 RESTORE *PAL_INIT
- 10720 DIM G(15),R(15),B(15)
- 10730 FOR I=0 TO 15
- 10740 READ G,R,B: G(I)=G*16:R(I)=R*16:B(I)=B*16
- 10750 NEXT I
- 10760 FOR I!=0 TO 1 STEP .2!
- 10770 FOR J=0 TO 15
- 10780 PALETTE J,[PAL+(G(J)-PAL)*I!,PAL+(R(J)-PAL)*I!,PAL+(B(J)-PAL)*I!]
- 10790 NEXT J
- 10800 NEXT I!
- 10810 FOR J=0 TO 15
- 10820 PALETTE J,[G(J),R(J),B(J)]
- 10830 NEXT J
- 10840 ERASE G,R,B
- 10850 RETURN
- 10860 DATA 00,00,00 , 00,00,08 , 00,08,00 , 00,08,08
- 10870 DATA 08,00,00 , 08,00,08 , 08,08,00 , 08,08,08
- 10880 DATA 04,04,04 , 00,00,15 , 00,15,00 , 00,15,15
- 10890 DATA 15,00,00 , 15,00,15 , 15,15,00 , 15,15,15
- 10900 '
- 10910 *INIT_PR
- 10920 LOCATE 0,0
- 10930 PRINT A$;" "
- 10940 RETURN
- 10950 '
- 10960 *BTN_INIT
- 10970 DIM BTN%(18,4)
- 10980 RESTORE *BTN_INIT
- 10990 FOR I=1 TO 18
- 11000 FOR J=0 TO 4
- 11010 READ BTN%(I,J)
- 11020 NEXT J
- 11030 NEXT I
- 11040 DATA 11,425,626,475,1'KB
- 11050 DATA 1, 22,500,309,3'ENV_OP
- 11060 DATA 190,320,291,420,3'CMP_OP
- 11070 DATA 310,342,411,356,3'VOL
- 11080 DATA 420,367,500,419,3'PLAY OFF
- 11090 DATA 420,311,500,337,1'EXIT
- 11100 DATA 305,394,414,416,3'PLAY
- 11110 DATA 347,373,370,388,1'PLAY_SET
- 11120 DATA 383,373,414,388,1'AT_OP
- 11130 DATA 509, 77,631,337,1'V_SCRN
- 11140 DATA 510,370,574,385,1'V_READ
- 11150 DATA 580,370,612,385,1'V_CNT
- 11160 DATA 510,395,542,410,1'V_SAVE
- 11170 DATA 580,395,628,410,1'V_CLR
- 11180 DATA 544,342,607,357,1'VNAME
- 11190 DATA 509, 29,631, 49,1'LOAD
- 11200 DATA 509, 50,631, 70,1'SAVE
- 11210 DATA 420,339,500,365,1'LFO
- 11220 RETURN
- 11230 '
- 11240 *BOX_PR
- 11250 LINE(X1,Y1)-(X2,Y2),PSET,%0,BF,%7
- 11260 CONNECT(X1,Y2)-(X1,Y1)-(X2,Y1),%15
- 11270 RETURN
- 11280 '
- 11290 *BOX
- 11300 RESTORE *BOX
- 11310 READ X1,Y1,X2,Y2
- 11320 WHILE X1<>-1
- 11330 GOSUB *BOX_PR
- 11340 READ X1,Y1,X2,Y2
- 11350 WEND
- 11360 DATA 001,001,638,020'title
- 11370 DATA 502, 22,638,419'音色達
- 11380 DATA 632, 71,508, 28'LOAD SAVE
- 11390 DATA 509, 29,631, 49'LOAD
- 11400 DATA 509, 50,631, 70'SAVE
- 11410 DATA 632, 96,508, 76'FILES
- 11420 DATA 509, 77,527, 95'<
- 11430 DATA 613, 77,631, 95'>
- 11440 DATA 632,118,508, 98'BNK NAME
- 11450 DATA 611,338,508,124'VOICE_NAMES
- 11460 DATA 632,360,508,340'VNAME
- 11470 DATA 632,338,613,124'VOICE_BAR
- 11480 DATA 614,125,631,143'V_▲
- 11490 DATA 614,319,631,337'V_▼
- 11500 DATA 1, 22,125,309'ENV
- 11510 DATA 123,103, 3, 40'ENV Pattern
- 11520 DATA 1,310,299,419'ALG
- 11530 DATA 160,413, 7,316'ALG Pattern
- 11540 DATA 1,421,638,478'KB
- 11550 DATA 420,311,500,337'EXIT
- 11560 DATA 420,339,500,365'LFO
- 11570 DATA 420,367,500,419'PLAY OFF
- 11580 DATA 301,311,418,365'VOLUME
- 11590 DATA 301,367,418,419'mml
- 11600 DATA 415,417,304,393'mml NUM
- 11610 DATA 415,391,341,369'mml com
- 11620 DATA 342,370,376,390'mml set
- 11630 DATA 377,370,414,390'mml auto
- 11640 DATA -1, -1, -1, -1
- 11650 RETURN
- 11660 '
- 11670 *SYMBOL
- 11680 RESTORE *SYMBOL
- 11690 READ X,Y,A$
- 11700 WHILE X<>-1
- 11710 SYMBOL(X,Y),A$,1,1,0
- 11720 READ X,Y,A$
- 11730 WEND
- 11740 DATA 30, 3,FMBED Ver 1.06
- 11750 DATA 500, 3,(c) TETSU 1992-
- 11760 DATA 615,127,▲
- 11770 DATA 615,320,▼
- 11780 DATA 540, 32,LOAD
- 11790 DATA 540, 53,SAVE
- 11800 DATA 510,370,読み込み
- 11810 DATA 510,395,保存
- 11820 DATA 580,370,試聴
- 11830 DATA 580,395,初期化
- 11840 DATA 430,316,EXIT
- 11850 DATA 430,345,LFO 設定
- 11860 DATA 430,375,PLAY
- 11870 DATA 437,397,OFF
- 11880 DATA 318,320,VOLUME
- 11890 DATA 347,373,SET
- 11900 DATA 309,373,MML
- 11910 DATA -1, -1,END
- 11920 RETURN
- 11930 '
- 11940 *BAR_PR
- 11950 LINE(BX,BY)-STEP(23,15),PSET,%7,BF
- 11960 SYMBOL(BX,BY),RIGHT$(" "+STR$(NUM),3),1,1,7
- 11970 PUT@A(BX+41,BY)-(BX+88,BY+14),BAR1%
- 11980 X1=BX+42+42*(NUM-MIN)/(MAX-MIN):Y1=BY:X2=X1+3:Y2=Y1+14
- 11990 PUT@A(X1,Y1)-(X2,Y2),BAR2%
- 12000 RETURN
- 12010 '
- 12020 *BAR_GET
- 12030 DIM BAR1%(200),BAR2%(200)
- 12040 LINE(41,480)-STEP(47,14),PSET,%7,BF
- 12050 X1=88: Y1=480+8: X2=41: Y2=480+6
- 12060 GOSUB *BOX_PR
- 12070 GET@A(41,480)-(41+47,480+14),BAR1%
- 12080 X1=0:Y1=480:X2=X1+3:Y2=Y1+14
- 12090 GOSUB *BOX_PR
- 12100 GET@A(0,480)-(3,480+14),BAR2%
- 12110 RETURN
- 12120 '
- 12130 *BAR_INIT
- 12140 CONNECT(BX+28,BY+7)-(BX+ 39,BY+2)-(BX+39,BY+12),0,PSET,F
- 12150 CONNECT(BX+90,BY+2)-(BX+101,BY+7)-(BX+90,BY+12),0,PSET,F
- 12160 GOSUB *BAR_PR
- 12170 RETURN
- 12180 '
- 12190 *MPLOOP1
- 12200 PUSH=0
- 12210 WHILE PUSH=0
- 12220 IF MOUSE(2,0)=-1 THEN PUSH=1
- 12230 IF MOUSE(2,1)=-1 THEN PUSH=2
- 12240 WEND
- 12250 MX=MOUSE(0):MY=MOUSE(1)
- 12260 RETURN
- 12270 '
- 12280 *MPLOOP2
- 12290 WHILE MOUSE(2,0)=-1 OR MOUSE(2,1)=-1: WEND
- 12300 RETURN
- 12310 '
- 12320 *KB_INIT
- 12330 DIM KZ(11,4)
- 12340 RESTORE *KB_INIT
- 12350 FOR I=0 TO 11
- 12360 FOR J=0 TO 4
- 12370 READ KZ(I,J)
- 12380 NEXT J
- 12390 NEXT I
- 12400 DATA 0, 0,11,50, 0 '0 C
- 12410 DATA 11, 0,22,50, 2 '1 D
- 12420 DATA 22, 0,33,50, 4 '2 E
- 12430 DATA 33, 0,44,50, 5 '3 F
- 12440 DATA 44, 0,55,50, 7 '4 G
- 12450 DATA 55, 0,66,50, 9 '5 A
- 12460 DATA 66, 0,77,50,11 '6 B
- 12470 DATA 08, 0,14,30, 1 '7 C+
- 12480 DATA 19, 0,25,30, 3 '8 D+
- 12490 DATA 41, 0,47,30, 6 '9 F+
- 12500 DATA 52, 0,58,30, 8 '10 G+
- 12510 DATA 63, 0,69,30,10 '11 A+
- 12520 FOR I=0 TO 6
- 12530 LINE(KX+KZ(I,0),KY)-(KX+KZ(I,2),KY+KZ(I,3)),PSET,%8,BF,%15
- 12540 NEXT I
- 12550 FOR I=7 TO 11
- 12560 LINE(KX+KZ(I,0),KY)-(KX+KZ(I,2),KY+KZ(I,3)),PSET,%8,BF,%8
- 12570 NEXT I
- 12580 CIRCLE(KX+5,KY+45),2,%10,,,,F
- 12590 DIM A%(FNVRAM(77,50))
- 12600 GET@A(KX,KY)-(KX+77,KY+50),A%
- 12610 FOR X=KX+77 TO KX+539 STEP 77
- 12620 PUT@A(X,KY)-(X+77,KY+50),A%
- 12630 NEXT X
- 12640 ERASE A%
- 12650 RETURN
- 12660 '
- 12670 *KB
- 12680 MOUSE 4,KX,KY,KX+615,KY+50
- 12690 MS=4: GOSUB *MOUSE_SET
- 12700 KN=-1
- 12710 GOSUB *PLAYOFF_EXE
- 12720 PLAY "%C @128 U0"
- 12730 WHILE MOUSE(2,0)=-1
- 12740 X=MOUSE(0)-KX: Y=MOUSE(1)-KY
- 12750 O=X \ 77: X=X MOD 77
- 12760 FOR I=0 TO 11
- 12770 IF KZ(I,0)<=X AND X<=KZ(I,2) AND Y<=KZ(I,3) THEN J=12*O+KZ(I,4)
- 12780 NEXT I
- 12790 IF J<>KN THEN KN=J: OUTM #255,&H90,KN+24,VOL
- 12800 WEND
- 12810 OUTM #255,&H90,KN+24,0
- 12820 MS=MS_INIT: GOSUB *MOUSE_SET
- 12830 RETURN
- 12840 '
- 12850 *ENV_INIT
- 12860 RESTORE *ENV_INIT
- 12870 DIM ENV%(3,10),ENVMIN%(8),ENVMAX%(8),ENV2%(3,10),CLR%(23)
- 12880 FOR I=0 TO 8
- 12890 READ A$,ENVMIN%(I),ENVMAX%(I)
- 12900 SYMBOL(3,110+20*I),A$,1,1,0
- 12910 BX=19: BY=110+20*I: NUM=0: MIN=ENVMIN%(I): MAX=ENVMAX%(I)
- 12920 GOSUB *BAR_INIT
- 12930 NEXT I
- 12940 SYMBOL(3,290),"AM" ,1,1,0
- 12950 SYMBOL(35,290),"0" ,1,1,7
- 12960 SYMBOL(60,290),"off",1,1,0
- 12970 FOR I=0 TO 3: ENV%(I,10)=1: NEXT I
- 12980 SYMBOL(98, 24),"on" ,1,1,0
- 12990 MSKF=1
- 13000 DATA AR, 0,31
- 13010 DATA DR, 0,31
- 13020 DATA SR, 0,31
- 13030 DATA RR, 0,15
- 13040 DATA SL, 0,15
- 13050 DATA TL, 0,127
- 13060 DATA KS, 0,3
- 13070 DATA ML, 0,15
- 13080 DATA DT,-3,3
- 13090 FOR I=0 TO 23: READ CLR%(I): NEXT I
- 13100 DATA 0,0,0,0,0,0,32639,32639,0,0,0,0,0,0,3855,3855,0,0,0,0,0,0,0,0
- 13110 S=0
- 13120 GOSUB *ENV_PR
- 13130 DIM A%(FNVRAM(124,287))
- 13140 GET@A(1,22)-(125,309),A%
- 13150 FOR I=0 TO 3
- 13160 PUT@A(1+125*I,22)-(125+125*I,309),A%
- 13170 SYMBOL(-3+125*I,24),STR$(I+1),1,1,2,,PSET,1
- 13180 NEXT I
- 13190 ERASE A%
- 13200 RETURN
- 13210 '
- 13220 *ENV_PR
- 13230 WINDOW(0,127)-(400,0)
- 13240 VIEW(4+S*125,41)-(122+S*125,102)
- 13250 TL=127-ENV%(S,5): AR=ENV%(S,0): DR=ENV%(S,1)
- 13260 SL=ENV%(S,4): SR=ENV%(S,2): RR=ENV%(S,3)
- 13270 X1=0: Y1=0: X2=0: Y2=0: X3=0: Y3=0
- 13280 X4=300: Y4=0: X5=400: Y5=0: X6=500: Y6=0
- 13290 IF AR=0 OR TL=0 GOTO *ENV_PR_3
- 13300 X2=(31-AR)*150/31: Y2=TL
- 13310 IF SL=0 THEN X3=X2: Y3=Y2: GOTO *ENV_PR_1
- 13320 IF DR=0 THEN X3=X2: Y3=Y2: SR=0: GOTO *ENV_PR_1
- 13330 Y3=(15-SL)*TL/15: X3=X2+(Y2-Y3)/TAN(PI!*(DR/31*.5!+.5!))
- 13340 *ENV_PR_1
- 13350 IF SR=31 THEN X4=X3: Y4=0: GOTO *ENV_PR_2
- 13360 IF SR=0 THEN X4=300: Y4=Y3: GOTO *ENV_PR_2
- 13370 X4=300: Y4=Y3-(X4-X3)*TAN(PI!*SR/31)
- 13380 IF Y4<=0 THEN X4=X3+(X4-X3)*Y3/(Y3-Y4): Y4=0: GOTO *ENV_PR_3
- 13390 *ENV_PR_2
- 13400 IF RR=15 THEN X5=X4: Y5=0: GOTO *ENV_PR_3
- 13410 IF RR=0 THEN X5=400: Y5=Y4: GOTO *ENV_PR_3
- 13420 X5=400: Y5=Y4-(X5-X4)*TAN(PI!*RR/15)
- 13430 IF Y5<=0 THEN X5=X4+(X5-X4)*Y4/(Y4-Y5): Y5=0
- 13440 *ENV_PR_3
- 13450 LINE(0,0)-(400,127),PSET,%7,BF
- 13460 LINE(X2,0)-(X2,127),PSET,%1,,&H6666
- 13470 LINE(X3,0)-(X3,127),PSET,%1,,&H6666
- 13480 LINE(300,0)-(300,127),PSET,%1,,&H6666
- 13490 CONNECT(X1,Y1)-(X2,Y2)-(X3,Y3)-(X4,Y4)-(X5,Y5)-(X6,Y6),1
- 13500 WINDOW(0,0)-(1023,511)
- 13510 VIEW (0,0)-(1023,511)
- 13520 RETURN
- 13530 '
- 13540 *ENV_OP
- 13550 S=MX\125: P=(MY-110)\20
- 13560 IF 22<=MY AND MY<=39 THEN P=10: GOTO *ENV_MSK
- 13570 IF P<0 RETURN
- 13580 IF P=9 GOTO *ENV_AM
- 13590 BX=19+125*S: BY=110+20*P
- 13600 NUM=ENV%(S,P): MIN=ENVMIN%(P): MAX=ENVMAX%(P)
- 13610 BC=-1: V=0
- 13620 MX=MOUSE(0): MY=MOUSE(1)
- 13630 IF BX+28<=MX AND BY<=MY AND MX<=BX+40 AND MY<=BY+14 THEN BC=0: V=-1: MOUSE 4,BX+28,BY,BX+40,BY+14
- 13640 IF BX+89<=MX AND BY<=MY AND MX<=BX+101 AND MY<=BY+14 THEN BC=0: V= 1: MOUSE 4,BX+89,BY,BX+101,BY+14
- 13650 IF BX+41<=MX AND BY<=MY AND MX<=BX+88 AND MY<=BY+14 THEN BC=0: V= 0:MOUSE 4,BX+42,BY,BX+84,BY+14
- 13660 '
- 13670 IF BC=-1 RETURN
- 13680 MOUSE 1,,,0: T=0
- 13690 IF V=0 GOTO *ENV_BAR
- 13700 '
- 13710 WHILE MOUSE(2,0)=-1 OR MOUSE(2,1)=-1
- 13720 IF 0<T AND T<200 GOTO *ENV_OP_1
- 13730 IF MOUSE(2,0)=-1 THEN PUSH=1
- 13740 IF MOUSE(2,1)=-1 THEN PUSH=10
- 13750 I=NUM+V*PUSH
- 13760 IF I<MIN THEN I=MIN
- 13770 IF MAX<I THEN I=MAX
- 13780 IF I<>NUM THEN NUM=I: ENV%(S,P)=NUM: GOSUB *ENV_PR: GOSUB *BAR_PR: GOSUB *AT ELSE MOUSE 1,MOUSE(0),MOUSE(1),1
- 13790 *ENV_OP_1
- 13800 T=T+1
- 13810 WEND
- 13820 MOUSE 1,MOUSE(0),MOUSE(1),1
- 13830 GOSUB *V_SET
- 13840 RETURN
- 13850 '
- 13860 *ENV_BAR
- 13870 IF PUSH=1 THEN NUM=(MOUSE(0)-42-BX)*(MAX-MIN)/42+MIN: ENV%(S,P)=NUM: GOSUB *ENV_PR: GOSUB *BAR_PR
- 13880 MOUSE 1,BX+42+42*(NUM-MIN)/(MAX-MIN)
- 13890 GOSUB *AT
- 13900 WHILE MOUSE(2,0)=-1 OR MOUSE(2,1)=-1
- 13910 WHILE MOUSE(9)=0 AND(MOUSE(2,0)=-1 OR MOUSE(2,1)=-1): WEND
- 13920 NUM=(MOUSE(0)-42-BX)*(MAX-MIN)/42+MIN
- 13930 IF NUM<>ENV%(S,P) THEN ENV%(S,P)=NUM: GOSUB *ENV_PR: GOSUB *BAR_PR: GOSUB *AT
- 13940 WEND
- 13950 MOUSE 1,MOUSE(0),MOUSE(1),1
- 13960 GOSUB *V_SET
- 13970 RETURN
- 13980 '
- 13990 *ENV_AM
- 14000 IF ENV%(S,P)=0 THEN ENV%(S,P)=1: A$="on" ELSE ENV%(S,P)=0: A$="off"
- 14010 LINE(19+125*S,290)-STEP(101,15),PSET,%7,BF
- 14020 SYMBOL(19+125*S,290),RIGHT$(" "+STR$(ENV%(S,P)),3),1,1,7
- 14030 SYMBOL(60+125*S,290),A$,1,1,0
- 14040 GOSUB *AT
- 14050 GOSUB *MPLOOP2
- 14060 GOSUB *V_SET
- 14070 RETURN
- 14080 '
- 14090 *ENV_MSK
- 14100 IF ENV%(S,10)=0 THEN ENV%(S,10)=1: A$="on" :CL=0 ELSE ENV%(S,10)=0: A$="off":CL=7
- 14110 LINE(98+125*S,24)-STEP(23,15),PSET,%7,BF
- 14120 SYMBOL(98+125*S,24),A$,1,1,CL
- 14130 GOSUB *AT
- 14140 GOSUB *MPLOOP2
- 14150 GOSUB *V_SET
- 14160 RETURN
- 14170 '
- 14180 *CMP_INIT
- 14190 RESTORE *CMP_INIT
- 14200 DATA ALG,0,7
- 14210 DATA FB ,0,7
- 14220 DATA PMS,0,7
- 14230 DATA AMS,0,3
- 14240 DATA PAN,0,3
- 14250 DIM CMP%(4),CMPMIN%(4),CMPMAX%(4),CMP2%(4)
- 14260 FOR I=0 TO 3
- 14270 READ A$,CMPMIN%(I),CMPMAX%(I)
- 14280 SYMBOL(166,320+20*I),A$,1,1,0
- 14290 BX=190: BY=320+20*I: NUM=0: MIN=CMPMIN%(I): MAX=CMPMAX%(I)
- 14300 GOSUB *BAR_INIT
- 14310 NEXT I
- 14320 READ A$,CMPMIN%(4),CMPMAX%(4)
- 14330 SYMBOL(166,400),A$,1,1,0
- 14340 SYMBOL(198,400),STR$(0),1,1,7
- 14350 SYMBOL(225,400),"off",1,1,0
- 14360 SYMBOL(265,400),"off",1,1,0
- 14370 '
- 14380 A$="FMBED Ver1.06"
- 14390 DIM A%(511)
- 14400 GET@A(0,511)-(1023,511),A%
- 14410 P1=PEEK(VARPTR(A$),4): P2=VARPTR(A%(0)): J=1
- 14420 FOR I=0 TO LEN(A$)-1
- 14430 IF PEEK(P1+I)<>PEEK(P2+I) THEN J=0
- 14440 POKE P2+I,PEEK(P1+I)
- 14450 NEXT I
- 14460 PUT@A(0,511)-(1023,511),A%
- 14470 ERASE A%
- 14480 IF J GOTO *CMP_INIT_2
- 14490 '
- 14500 LINE(640,0)-(1023,511),PSET,%7,BF
- 14510 CONNECT(770,50)-(660,50)-(660,30)-(687,30)-(687,50),0'------------0
- 14520 CONNECT(760,130)-(675,130)-(675,110)-(702,110)-(702,130),0'-------1
- 14530 LINE(690,170)-(720,130),PSET,0
- 14540 LINE(765,220)-(685,220),PSET,0'-----------------------------------2
- 14550 CONNECT(745,220)-(725,260)-(704,260)-(704,243)-(734,243),0
- 14560 CONNECT(765,320)-(670,320)-(670,302)-(700,302)-(700,320),0'-------3
- 14570 LINE(720,360)-(750,320),PSET,0
- 14580 CONNECT(850,70)-(900,70)-(900,30)-(835,30)-(835,10),0'------------4
- 14590 CONNECT-(865,10)-(865,30),0
- 14600 LINE(900,50)-(920,50),PSET,0
- 14610 CONNECT(915,145)-(825,145)-(825,127)-(853,127)-(853,145),0'-------5
- 14620 LINE(860,115)-(900,175),PSET,0,B
- 14630 CONNECT(858,210)-(858,228)-(832,228)-(832,210)-(900,210),0'-------6
- 14640 CONNECT-(900,270)-(875,270),0
- 14650 LINE(875,240)-(910,240),PSET,0
- 14660 CONNECT(890,305)-(890,289)-(860,289)-(860,305)-(905,305),0'-------7
- 14670 CONNECT-(905,371)-(875,371),0
- 14680 LINE(875,327)-(905,327),PSET,0
- 14690 LINE(875,349)-(905,349),PSET,0
- 14700 LINE(905,338)-(920,338),PSET,0
- 14710 FOR I=0 TO 7
- 14720 FOR J=1 TO 4
- 14730 READ X,Y,CL
- 14740 IF CL=0 THEN CL1=8:CL2=15 ELSE CL1=15:CL2=0
- 14750 LINE(X-6,Y-10)-(X+6,Y+10),PSET,0,BF,%CL1
- 14760 SYMBOL(X-12,Y-7),STR$(J),1,1,%CL2,,PSET,1
- 14770 NEXT J
- 14780 NEXT I
- 14790 *CMP_INIT_2
- 14800 GOSUB *ALG_PR
- 14810 DATA 675, 50,1, 700, 50,1, 725, 50,1, 750, 50,0
- 14820 DATA 690,130,1, 690,160,1, 715,130,1, 740,130,0
- 14830 DATA 715,260,1, 685,220,1, 715,220,1, 745,220,0
- 14840 DATA 685,320,1, 715,320,1, 715,360,1, 745,320,0
- 14850 DATA 850, 30,1, 880, 30,0, 850, 70,1, 880, 70,0
- 14860 DATA 840,145,1, 880,115,0, 880,145,0, 880,175,0
- 14870 DATA 845,210,1, 875,210,0, 875,240,0, 875,270,0
- 14880 DATA 875,305,0, 875,327,0, 875,349,0, 875,371,0
- 14890 RETURN
- 14900 '
- 14910 *CMP_OP
- 14920 P=(MY-320)\20
- 14930 IF P=4 GOTO *CMP_PAN
- 14940 BX=190: BY=320+20*P
- 14950 NUM=CMP%(P): MIN=CMPMIN%(P): MAX=CMPMAX%(P)
- 14960 BC=-1: V=0
- 14970 MX=MOUSE(0): MY=MOUSE(1)
- 14980 IF BX+28<=MX AND BY<=MY AND MX<=BX+40 AND MY<=BY+14 THEN BC=0: V=-1: MOUSE 4,BX+28,BY,BX+40,BY+14
- 14990 IF BX+89<=MX AND BY<=MY AND MX<=BX+101 AND MY<=BY+14 THEN BC=0: V= 1: MOUSE 4,BX+89,BY,BX+101,BY+14
- 15000 IF BX+41<=MX AND BY<=MY AND MX<=BX+88 AND MY<=BY+14 THEN BC=0: V= 0:MOUSE 4,BX+42,BY,BX+84,BY+14
- 15010 '
- 15020 IF BC=-1 RETURN
- 15030 MOUSE 1,,,0: T=0
- 15040 IF V=0 GOTO *CMP_BAR
- 15050 '
- 15060 WHILE MOUSE(2,0)=-1 OR MOUSE(2,1)=-1
- 15070 IF 0<T AND T<200 GOTO *CMP_OP_1
- 15080 IF MOUSE(2,0)=-1 THEN PUSH=1
- 15090 IF MOUSE(2,1)=-1 THEN PUSH=10
- 15100 I=NUM+V*PUSH
- 15110 IF I<MIN THEN I=MIN
- 15120 IF MAX<I THEN I=MAX
- 15130 IF I<>NUM THEN NUM=I: CMP%(P)=NUM: GOSUB *ALG_PR: GOSUB *BAR_PR: GOSUB *AT ELSE MOUSE 1,MOUSE(0),MOUSE(1),1
- 15140 *CMP_OP_1
- 15150 T=T+1
- 15160 WEND
- 15170 MOUSE 1,MOUSE(0),MOUSE(1),1
- 15180 GOSUB *V_SET
- 15190 RETURN
- 15200 '
- 15210 *CMP_BAR
- 15220 IF PUSH=1 THEN NUM=(MOUSE(0)-42-BX)*(MAX-MIN)/42+MIN: CMP%(P)=NUM: GOSUB *ALG_PR: GOSUB *BAR_PR
- 15230 MOUSE 1,BX+42+42*(NUM-MIN)/(MAX-MIN)
- 15240 GOSUB *AT
- 15250 WHILE MOUSE(2,0)=-1 OR MOUSE(2,1)=-1
- 15260 WHILE MOUSE(9)=0 AND(MOUSE(2,0)=-1 OR MOUSE(2,1)=-1): WEND
- 15270 NUM=(MOUSE(0)-42-BX)*(MAX-MIN)/42+MIN
- 15280 IF NUM<>CMP%(P) THEN CMP%(P)=NUM: GOSUB *ALG_PR: GOSUB *BAR_PR: GOSUB *AT
- 15290 WEND
- 15300 MOUSE 1,MOUSE(0),MOUSE(1),1
- 15310 GOSUB *V_SET
- 15320 RETURN
- 15330 '
- 15340 *CMP_PAN
- 15350 IF 225<=MX AND 400<=MY AND MX<=248 AND MY<=415 THEN CMP%(4)=CMP%(4) XOR 2
- 15360 IF 265<=MX AND 400<=MY AND MX<=288 AND MY<=415 THEN CMP%(4)=CMP%(4) XOR 1
- 15370 LINE(190,400)-(291,415),PSET,%7,BF
- 15380 SYMBOL(190,400),RIGHT$(" "+STR$(CMP%(4)),3),1,1,7
- 15390 IF CMP%(4) AND 2 THEN A$="on" ELSE A$="off"
- 15400 SYMBOL(225,400),A$,1,1,0
- 15410 IF CMP%(4) AND 1 THEN A$="on" ELSE A$="off"
- 15420 SYMBOL(265,400),A$,1,1,0
- 15430 GOSUB *AT
- 15440 GOSUB *MPLOOP2
- 15450 GOSUB *V_SET
- 15460 RETURN
- 15470 '
- 15480 *ALG_PR
- 15490 DIM A%(FNVRAM(152,96))
- 15500 X=152*(CMP%(0)\4): Y=96*(CMP%(0) MOD 4)
- 15510 GET@A(640+X,Y)-(791+X,95+Y),A%
- 15520 PUT@A(8,317)-(159,412),A%
- 15530 ERASE A%
- 15540 RETURN
- 15550 '
- 15560 *LFO
- 15570 SYMBOL(430,345),"LFO 設定",1,1,2
- 15580 WX=LFOWX: WY=LFOWY: WXS=310: WYS=130: WON=9: WF=0
- 15590 RESTORE *LFO
- 15600 GOSUB *WIN_INIT
- 15610 DATA 50, 45, 90, 65'OFF
- 15620 DATA 95, 45,135, 65'3.98
- 15630 DATA 140, 45,180, 65'5.56
- 15640 DATA 185, 45,225, 65'6.02
- 15650 DATA 230, 45,270, 65'6.37
- 15660 DATA 95, 70,135, 90'6.88
- 15670 DATA 140, 70,180, 90'9.63
- 15680 DATA 185, 70,225, 90'48.1
- 15690 DATA 230, 70,270, 90'72.2
- 15700 SYMBOL(WX+20,WY+20),"LFO 設定",1,1,0
- 15710 GOSUB *LFO_PR
- 15720 GOSUB *MPLOOP2
- 15730 WHILE MOUSE(2,1)=0
- 15740 GOSUB *WIN
- 15750 MOUSE 4,0,0,639,479
- 15760 IF 1<=WC AND WC<=9 THEN LFO=WC-1: GOSUB *LFO_PR: GOSUB *MPLOOP2
- 15770 WEND
- 15780 LFOWX=WX: LFOWY=WY
- 15790 GOSUB *WIN_END
- 15800 SYMBOL(430,345),"LFO 設定",1,1,0
- 15810 GOSUB *MPLOOP2
- 15820 RETURN
- 15830 '
- 15840 *LFO_PR
- 15850 'CALLM FREQCTL,LFO
- 15860 SYMBOL(WX+ 58,WY+48),"OFF", 1,1,-2*(LFO=0)
- 15870 SYMBOL(WX+ 99,WY+48),"3.98",1,1,-2*(LFO=1)
- 15880 SYMBOL(WX+144,WY+48),"5.56",1,1,-2*(LFO=2)
- 15890 SYMBOL(WX+189,WY+48),"6.02",1,1,-2*(LFO=3)
- 15900 SYMBOL(WX+234,WY+48),"6.37",1,1,-2*(LFO=4)
- 15910 SYMBOL(WX+ 99,WY+73),"6.88",1,1,-2*(LFO=5)
- 15920 SYMBOL(WX+144,WY+73),"9.63",1,1,-2*(LFO=6)
- 15930 SYMBOL(WX+189,WY+73),"48.1",1,1,-2*(LFO=7)
- 15940 SYMBOL(WX+234,WY+73),"72.2",1,1,-2*(LFO=8)
- 15950 RETURN
- 15960 '
- 15970 *VOL_INIT
- 15980 BX=310: BY=342: NUM=VOL: MIN=0: MAX=127
- 15990 GOSUB *BAR_INIT
- 16000 RETURN
- 16010 '
- 16020 *VOL_OP
- 16030 BX=310: BY=342: NUM=VOL: MIN=0: MAX=127: BC=-1: V=0
- 16040 MX=MOUSE(0): MY=MOUSE(1)
- 16050 IF BX+28<=MX AND BY<=MY AND MX<=BX+40 AND MY<=BY+14 THEN BC=0: V=-1: MOUSE 4,BX+28,BY,BX+40,BY+14
- 16060 IF BX+89<=MX AND BY<=MY AND MX<=BX+101 AND MY<=BY+14 THEN BC=0: V= 1: MOUSE 4,BX+89,BY,BX+101,BY+14
- 16070 IF BX+41<=MX AND BY<=MY AND MX<=BX+88 AND MY<=BY+14 THEN BC=0: V= 0:MOUSE 4,BX+42,BY,BX+84,BY+14
- 16080 '
- 16090 IF BC=-1 RETURN
- 16100 MOUSE 1,,,0: T=0
- 16110 IF V=0 GOTO *VOL_BAR
- 16120 '
- 16130 WHILE MOUSE(2,0)=-1 OR MOUSE(2,1)=-1
- 16140 IF 0<T AND T<200 GOTO *VOL_OP_1
- 16150 IF MOUSE(2,0)=-1 THEN PUSH=1
- 16160 IF MOUSE(2,1)=-1 THEN PUSH=10
- 16170 I=NUM+V*PUSH
- 16180 IF I<MIN THEN I=MIN
- 16190 IF MAX<I THEN I=MAX
- 16200 IF I<>NUM THEN NUM=I: VOL=NUM: GOSUB *BAR_PR ELSE MOUSE 1,,,1
- 16210 *VOL_OP_1
- 16220 T=T+1
- 16230 WEND
- 16240 MOUSE 1,,,1
- 16250 RETURN
- 16260 '
- 16270 *VOL_BAR
- 16280 IF PUSH=1 THEN NUM=(MOUSE(0)-42-BX)*(MAX-MIN)/42+MIN: VOL=NUM: GOSUB *BAR_PR
- 16290 MOUSE 1,BX+42+42*(NUM-MIN)/(MAX-MIN)
- 16300 WHILE MOUSE(2,0)=-1 OR MOUSE(2,1)=-1
- 16310 WHILE MOUSE(9)=0 AND(MOUSE(2,0)=-1 OR MOUSE(2,1)=-1): WEND
- 16320 NUM=(MOUSE(0)-42-BX)*(MAX-MIN)/42+MIN
- 16330 IF NUM<>VOL THEN VOL=NUM: GOSUB *BAR_PR
- 16340 WEND
- 16350 MOUSE 1,,,1
- 16360 RETURN
- 16370 '
- 16380 *V_SET
- 16390 FOR I=0 TO 10
- 16400 ENV2%(0,I)=ENV%(0,I): ENV2%(1,I)=ENV%(2,I)
- 16410 ENV2%(2,I)=ENV%(1,I): ENV2%(3,I)=ENV%(3,I)
- 16420 NEXT I
- 16430 FOR I=0 TO 4
- 16440 CMP2%(I)=CMP%(I)
- 16450 NEXT I
- 16460 P1=VARPTR(V%(0))
- 16470 FOR I=0 TO 3
- 16480 IF ENV2%(I,8)<0 THEN J=4+ABS(ENV2%(I,8)) ELSE J=ENV2%(I,8)
- 16490 POKE P1+ 8+I,16*J+ENV2%(I,7)' DT ML
- 16500 IF MSKF=1 AND ENV2%(I,10)=0 THEN POKE P1+12+I,127 ELSE POKE P1+12+I,ENV2%(I,5)'TL
- 16510 POKE P1+16+I,64*ENV2%(I,6)+ENV2%(I,0)' KS AR
- 16520 POKE P1+20+I,128*ENV2%(I,9)+ENV2%(I,1)' AM DR
- 16530 POKE P1+24+I,ENV2%(I,2)' SR
- 16540 POKE P1+28+I,16*ENV2%(I,4)+ENV2%(I,3)' SL RR
- 16550 NEXT I
- 16560 POKE P1+32,8*CMP2%(1)+CMP2%(0)' FB ALG
- 16570 POKE P1+33,64*CMP2%(4)+16*CMP2%(3)+CMP2%(2)' PAN AMS PMS
- 16580 VOICE 128,V%,0
- 16590 RETURN
- 16600 '
- 16610 *PLAYOFF
- 16620 SYMBOL(430,375),"PLAY",1,1,2
- 16630 SYMBOL(437,397),"OFF",1,1,2
- 16640 MOUSE 4,420,367,500,419
- 16650 GOSUB *PLAYOFF_EXE
- 16660 GOSUB *MPLOOP2
- 16670 SYMBOL(430,375),"PLAY",1,1,0
- 16680 SYMBOL(437,397),"OFF",1,1,0
- 16690 RETURN
- 16700 '
- 16710 *PLAYOFF_EXE
- 16720 PLAY OFF
- 16730 VOICE 128,CLR%,0
- 16740 A$="@V0 @128"
- 16750 PLAY A$,A$,A$,A$,A$,A$
- 16760 VOICE 128,V%,0
- 16770 RETURN
- 16780 '
- 16790 *EXIT
- 16800 SYMBOL(430,316),"EXIT",1,1,2
- 16810 WX=EXITWX: WY=EXITWY: WXS=190: WYS=95: WF=0: WON=2
- 16820 RESTORE *EXIT
- 16830 GOSUB *WIN_INIT
- 16840 DATA 78, 68,128, 88'実行
- 16850 DATA 133, 68,183, 88'取消
- 16860 SYMBOL(WX+50,WY+30),"終了します",1,1,0
- 16870 SYMBOL(WX+87,WY+70),"実行",1,1,0
- 16880 SYMBOL(WX+142,WY+70),"取消",1,1,0
- 16890 GOSUB *MPLOOP2
- 16900 *EXIT_LOOP
- 16910 GOSUB *WIN
- 16920 EXITWX=WX: EXITWY=WY: MOUSE 4,0,0,639,479
- 16930 IF WC=1 THEN GOSUB *EXIT_EXE
- 16940 IF WC=2 OR MOUSE(2,1)=-1 THEN GOTO *EXIT_RET
- 16950 GOTO *EXIT_LOOP
- 16960 *EXIT_RET
- 16970 GOSUB *WIN_END
- 16980 SYMBOL(430,316),"EXIT",1,1,0
- 16990 GOSUB *MPLOOP2
- 17000 RETURN
- 17010 '
- 17020 *EXIT_EXE
- 17030 CLOSE
- 17040 GOSUB *PLAYOFF_EXE
- 17050 GOSUB *WIN_END
- 17060 FOR I=0 TO 44 STEP 4
- 17070 POKE VARPTR(V%(0))+I,PEEK(VARPTR(ALLV%(0,127,0))+I,4),4
- 17080 NEXT I
- 17090 VOICE 128,V%,0
- 17100 END
- 17110 '
- 17120 *PLAY_INIT
- 17130 PN=0
- 17140 FOR I=0 TO 4
- 17150 X1=305+I*22:Y1=394: X2=X1+21:Y2=Y1+22:GOSUB *BOX_PR
- 17160 IF I=PN THEN CL=7 ELSE CL=0
- 17170 SYMBOL(303+I*22,398),STR$(I),1,1,CL,,,1
- 17180 NEXT I
- 17190 IF AT THEN CL=7 ELSE CL=0
- 17200 SYMBOL(381,373),"AUTO",1,1,CL
- 17210 FOR J=0 TO 4
- 17220 A$=P1$(J)
- 17230 FOR I=0 TO 5
- 17240 K=INSTR(A$,",")
- 17250 IF K=0 THEN P2$(J,I)=A$: A$="" ELSE P2$(J,I)=LEFT$(A$,K-1): A$=MID$(A$,K+1)
- 17260 NEXT I
- 17270 NEXT J
- 17280 'SYMBOL(309,373),"MML",1,1,0,,,1,1
- 17290 RETURN
- 17300 '
- 17310 *PLAY
- 17320 SYMBOL(303+PN*22,398),STR$(PN),1,1,0,,,1
- 17330 PN=(MOUSE(0)-305)\22
- 17340 SYMBOL(303+PN*22,398),STR$(PN),1,1,2,,,1
- 17350 GOSUB *PLAYOFF_EXE
- 17360 A$="T120 %C @128 Q8 L4 O4 U0 @V"+STR$(VOL)
- 17370 PLAY OFF
- 17380 PLAY A$,A$,A$,A$,A$,A$
- 17390 PLAY P2$(PN,0),P2$(PN,1),P2$(PN,2),P2$(PN,3),P2$(PN,4),P2$(PN,5)
- 17400 GOSUB *MPLOOP2
- 17410 SYMBOL(303+PN*22,398),STR$(PN),1,1,7,,,1
- 17420 RETURN
- 17430 '
- 17440 *PLAY_SET
- 17450 RESTORE *PLAY_SET
- 17460 SYMBOL(347,373),"SET",1,1,2
- 17470 GOSUB *MPLOOP2
- 17480 GOSUB *MPLOOP1
- 17490 IF MX<305 OR MY<394 OR 414<MX OR 416<MY OR PUSH=2 GOTO*PLAY_SET_RET
- 17500 SYMBOL(303+PN*22,398),STR$(PN),1,1,0,,,1
- 17510 PN=(MX-305)\22
- 17520 SYMBOL(303+PN*22,398),STR$(PN),1,1,2,,,1
- 17530 WX=PLAYWX: WY=PLAYWY: WXS=430: WYS=120: WF=0: WON=1
- 17540 GOSUB *WIN_INIT
- 17550 DATA 80,50,410,70
- 17560 SYMBOL(WX+20,WY+20),"MMLのSET",1,1,0
- 17570 SYMBOL(WX+30,WY+53),"MML"+STR$(PN),1,1,0,,,1,1
- 17580 IX=WX+85: IY=WY+53: IM=40: IMM=240: IA$=P1$(PN): ICL=0
- 17590 GOSUB *INP_INIT
- 17600 GOSUB *MPLOOP2
- 17610 WHILE IC<>&H0D AND MOUSE(2,1)=0 AND IC<>&H18
- 17620 GOSUB *WIN
- 17630 PLAYWX=WX: PLAYWY=WY: IX=WX+85: IY=WY+53
- 17640 IF WC=1 THEN MOUSE 4,IX,IY,IX+IM*8,IY+15 ELSE MOUSE 4,0,0,639,479
- 17650 GOSUB *INP
- 17660 WEND
- 17670 P1$(PN)=IA$: A$=IA$
- 17680 GOSUB *INP_END
- 17690 FOR I=0 TO 5
- 17700 J=INSTR(A$,",")
- 17710 IF J=0 THEN P2$(PN,I)=A$: A$="" ELSE P2$(PN,I)=LEFT$(A$,J-1): A$=MID$(A$,J+1)
- 17720 NEXT I
- 17730 GOSUB *WIN_END
- 17740 SYMBOL(303+PN*22,398),STR$(PN),1,1,7,,,1
- 17750 *PLAY_SET_RET
- 17760 SYMBOL(347,373),"SET",1,1,0
- 17770 GOSUB *MPLOOP2
- 17780 RETURN
- 17790 '
- 17800 *AT
- 17810 IF AT=0 RETURN
- 17820 GOSUB *PLAYOFF_EXE
- 17830 GOSUB *V_SET
- 17840 A$="T120 %C @128 Q8 L4 O4 U0 @V"+STR$(VOL)
- 17850 PLAY A$,A$,A$,A$,A$,A$
- 17860 PLAY P2$(PN,0),P2$(PN,1),P2$(PN,2),P2$(PN,3),P2$(PN,4),P2$(PN,5)
- 17870 RETURN
- 17880 '
- 17890 *AT_OP
- 17900 IF AT=0 THEN AT=1: CL=7: ELSE AT=0: CL=0
- 17910 SYMBOL(381,373),"AUTO",1,1,CL
- 17920 GOSUB *MPLOOP2
- 17930 RETURN
- 17940 '
- 17950 *V_INIT
- 17960 CONNECT(511,86)-(525,79)-(525,93),0,,F
- 17970 CONNECT(615,79)-(629,86)-(615,93),0,,F
- 17980 DIM ALLV%(23,127,9),VN(9),VNS(9),BNK$(9),A%(23)
- 17990 P1=VARPTR(A%(0)): P2=VARPTR(ALLV%(0,0,0))
- 18000 FOR I=0 TO 127
- 18010 VOICE COPY I+1,A%,0
- 18020 CALLM MTRNSM,P1,P2+48*I,48
- 18030 NEXT I
- 18040 ERASE A%
- 18050 FOR I=0 TO 9: VN(I)=-1: VNS(I)=0: BNK$(I)="": NEXT I
- 18060 GOSUB *V_BTN1_PR
- 18070 GOSUB *V_PR
- 18080 RETURN
- 18090 '
- 18100 *V_PR
- 18110 Q=VARPTR(Q$)
- 18120 POKE Q+4,8
- 18130 FOR I=0 TO 12
- 18140 IF I+VNS(BNK)=VN(BNK) THEN CL=2 ELSE CL=7
- 18150 POKE Q,VARPTR(ALLV%(0,I+VNS(BNK),BNK)),4
- 18160 LINE(512,127+I*16)-STEP(96,15),PSET,%7,BF
- 18170 SYMBOL(512,127+I*16),RIGHT$(" "+STR$(VNS(BNK)+I+1),3)+" "+Q$, 1,1,CL
- 18180 NEXT I
- 18190 RETURN
- 18200 '
- 18210 *V_SCRN
- 18220 VC=-1
- 18230 IF 509<=MX AND 77<=MY AND MX<=527 AND MY<= 95 GOSUB *V_LEFT
- 18240 IF 613<=MX AND 77<=MY AND MX<=631 AND MY<= 95 GOSUB *V_RIGHT
- 18250 IF 528<=MX AND 77<=MY AND MX<=612 AND MY<= 95 GOSUB *V_BAR1
- 18260 IF 614<=MX AND 125<=MY AND MX<=631 AND MY<=143 GOSUB *V_UP
- 18270 IF 614<=MX AND 319<=MY AND MX<=631 AND MY<=337 GOSUB *V_DOWN
- 18280 IF 614<=MX AND 144<=MY AND MX<=631 AND MY<=318 GOSUB *V_BAR2
- 18290 IF 509<=MX AND 125<=MY AND MX<=610 AND MY<=337 GOSUB *V_SLCT
- 18300 MOUSE 4,0,0,639,479
- 18310 RETURN
- 18320 '
- 18330 *V_LEFT
- 18340 MOUSE 4,509,77,527,95: MOUSE 1,,,0
- 18350 WHILE MOUSE(2,0)=-1
- 18360 I=BNK-1
- 18370 IF I<0 THEN I=0: MOUSE 1,MOUSE(0),MOUSE(1),1 ELSE BNK=I: GOSUB *V_BTN1_PR: GOSUB *V_PR
- 18380 WEND
- 18390 MOUSE 1,MOUSE(0),MOUSE(1),1
- 18400 RETURN
- 18410 '
- 18420 *V_RIGHT
- 18430 MOUSE 4,613,77,631,95: MOUSE 1,,,0
- 18440 WHILE MOUSE(2,0)=-1
- 18450 I=BNK+1
- 18460 IF 9<I THEN I=9: MOUSE 1,MOUSE(0),MOUSE(1),1 ELSE BNK=I: GOSUB *V_BTN1_PR: GOSUB *V_PR
- 18470 WEND
- 18480 MOUSE 1,MOUSE(0),MOUSE(1),1
- 18490 RETURN
- 18500 '
- 18510 *V_BAR1
- 18520 MOUSE 4,537,77,604,95: MOUSE 1,,,0
- 18530 WHILE MOUSE(2,0)=-1
- 18540 I=(MOUSE(0)-537)/67*9
- 18550 IF I<>BNK THEN BNK=I: GOSUB *V_BTN1_PR: GOSUB *V_PR
- 18560 WEND
- 18570 MOUSE 1,MOUSE(0),MOUSE(1),1
- 18580 RETURN
- 18590 '
- 18600 *V_UP
- 18610 MOUSE 4,614,125,631,143: MOUSE 1,,,0
- 18620 DIM A%(FNVRAM(96,208))
- 18630 WHILE MOUSE(2,0)=-1
- 18640 IF VNS(BNK)<=0 GOTO *V_UP_1
- 18650 VNS(BNK)=VNS(BNK)-1
- 18660 GOSUB *V_BTN2_PR
- 18670 GET@A(512,127)-(608,318),A%
- 18680 PUT@A(512,143)-(608,334),A%
- 18690 Q=VARPTR(Q$)
- 18700 POKE Q+4,8
- 18710 POKE Q,VARPTR(ALLV%(0,VNS(BNK),BNK)),4
- 18720 IF VNS(BNK)=VN(BNK) THEN CL=2 ELSE CL=7
- 18730 LINE(512,127)-STEP(96,15),PSET,%7,BF
- 18740 SYMBOL(512,127),RIGHT$(" "+STR$(VNS(BNK)+1),3)+" "+Q$,1,1,CL
- 18750 *V_UP_1
- 18760 WEND
- 18770 ERASE A%
- 18780 MOUSE 1,MOUSE(0),MOUSE(1),1
- 18790 RETURN
- 18800 '
- 18810 *V_DOWN
- 18820 MOUSE 4,614,319,631,337: MOUSE 1,,,0
- 18830 DIM A%(FNVRAM(96,208))
- 18840 WHILE MOUSE(2,0)=-1
- 18850 IF 115<=VNS(BNK) GOTO *V_DOWN_1
- 18860 VNS(BNK)=VNS(BNK)+1
- 18870 GOSUB *V_BTN2_PR
- 18880 GET@A(512,143)-(608,334),A%
- 18890 PUT@A(512,127)-(608,318),A%
- 18900 Q=VARPTR(Q$)
- 18910 POKE Q+4,8
- 18920 POKE Q,VARPTR(ALLV%(0,VNS(BNK)+12,BNK)),4
- 18930 IF VNS(BNK)+12=VN(BNK) THEN CL=2 ELSE CL=7
- 18940 LINE(512,319)-STEP(96,15),PSET,%7,BF
- 18950 SYMBOL(512,319),RIGHT$(" "+STR$(VNS(BNK)+13),3)+" "+Q$,1,1,CL
- 18960 *V_DOWN_1
- 18970 WEND
- 18980 ERASE A%
- 18990 MOUSE 1,MOUSE(0),MOUSE(1),1
- 19000 RETURN
- 19010 '
- 19020 *V_BAR2
- 19030 MOUSE 4,614,153,631,310: MOUSE 1,,,0
- 19040 WHILE MOUSE(2,0)=-1
- 19050 I=(MOUSE(1)-153)/157*115
- 19060 IF I<>VNS(BNK) THEN VNS(BNK)=I: GOSUB *V_BTN2_PR: GOSUB *V_PR
- 19070 WEND
- 19080 MOUSE 1,MOUSE(0),MOUSE(1),1
- 19090 RETURN
- 19100 '
- 19110 *V_BTN1_PR
- 19120 LINE(512,101)-STEP(96,15),PSET,%7,BF
- 19130 SYMBOL(512,101),RIGHT$(" "+STR$(BNK),3)+" "+BNK$(BNK),1,1,7
- 19140 X1=537+BNK*66/9-9: Y1=77: X2=X1+18: Y2=95
- 19150 LINE(528,77)-(612,95),PSET,%7,BF
- 19160 GOSUB *BOX_PR
- 19170 *V_BTN2_PR
- 19180 X1=614: Y1=153+157*VNS(BNK)/115-9: X2=631: Y2=Y1+17
- 19190 LINE(614,144)-(631,318),PSET,%7,BF
- 19200 GOSUB *BOX_PR
- 19210 RETURN
- 19220 '
- 19230 *V_SLCT
- 19240 MOUSE 4,512,127,608,334
- 19250 MS=4: GOSUB *MOUSE_SET
- 19260 I=(MOUSE(1)-127)\16
- 19270 GOSUB *V_SLCT_PR
- 19280 *V_SLCT_LOOP
- 19290 J=(MOUSE(1)-127)\16
- 19300 IF I<>J GOSUB *V_SLCT_PR: I=J: GOSUB *V_SLCT_PR
- 19310 IF MOUSE(2,1)=-1 THEN GOSUB *V_SLCT_PR:GOSUB *MPLOOP2:GOTO *V_SLCT2
- 19320 IF MOUSE(2,0)=-1 GOTO *V_SLCT_LOOP
- 19330 VC=VNS(BNK)+I
- 19340 GOSUB *V_SLCT_PR
- 19350 *V_SLCT2
- 19360 MS=MS_INIT: GOSUB *MOUSE_SET
- 19370 RETURN
- 19380 '
- 19390 *V_SLCT_PR
- 19400 LINE(511,126+I*16)-STEP(97,16),XOR,%11,BF,%3
- 19410 RETURN
- 19420 '
- 19430 *ENV_SET
- 19440 P=VARPTR(ALLV%(0,VC,BNK))
- 19450 FOR I=0 TO 3
- 19460 J=PEEK(P+8+I)
- 19470 IF J AND 64 THEN ENV2%(I,8)=-((J AND 48) \ 16) ELSE ENV2%(I,8)=(J AND 48)\16' DT
- 19480 ENV2%(I,7)=J AND 15' ML
- 19490 ENV2%(I,5)=PEEK(P+12+I) AND 127' TL
- 19500 ENV2%(I,6)=PEEK(P+16+I) \ 64' KS
- 19510 ENV2%(I,0)=PEEK(P+16+I) AND 31' AR
- 19520 ENV2%(I,9)=PEEK(P+20+I) \ 128' AM
- 19530 ENV2%(I,1)=PEEK(P+20+I) AND 31' DR
- 19540 ENV2%(I,2)=PEEK(P+24+I) AND 31' SR
- 19550 ENV2%(I,4)=PEEK(P+28+I) \ 16' SL
- 19560 ENV2%(I,3)=PEEK(P+28+I) AND 15' RR
- 19570 NEXT I
- 19580 CMP2%(1)=(PEEK(P+32) AND 56)\ 8' FB
- 19590 CMP2%(0)=PEEK(P+32) AND 7' ALG
- 19600 CMP2%(4)=PEEK(P+33) \ 64' PAN
- 19610 CMP2%(3)=(PEEK(P+33) AND 48)\ 16' AMS
- 19620 CMP2%(2)=PEEK(P+33) AND 7' PMS
- 19630 FOR I=0 TO 9: SWAP ENV2%(1,I),ENV2%(2,I): NEXT I
- 19640 RETURN
- 19650 '
- 19660 *V_READ
- 19670 SYMBOL(510,370),"読み込み",1,1,2
- 19680 *V_READ_LOOP
- 19690 GOSUB *MPLOOP2
- 19700 GOSUB *MPLOOP1
- 19710 IF MX<509 OR MY<77 OR 631<MX OR 337<MY OR PUSH=2 GOTO *V_READ_RET
- 19720 GOSUB *V_SCRN
- 19730 IF VC=-1 GOTO *V_READ_LOOP
- 19740 MOUSE 1,,,0
- 19750 VN(BNK)=VC
- 19760 GOSUB *V_PR
- 19770 VNAME$="": P=VARPTR(ALLV%(0,VN(BNK),BNK))
- 19780 FOR I=0 TO 7
- 19790 J=PEEK(P+I): IF J=0 THEN I=7 ELSE VNAME$=VNAME$+CHR$(J)
- 19800 NEXT I
- 19810 LINE(544,342)-STEP(63,15),PSET,%7,BF
- 19820 SYMBOL(544,342),VNAME$,1,1,7
- 19830 GOSUB *ENV_SET
- 19840 FOR S=0 TO 3
- 19850 FOR I=0 TO 9: ENV%(S,I)=ENV2%(S,I): NEXT I
- 19860 GOSUB *ENV_PR
- 19870 FOR I=0 TO 8
- 19880 BX=19+125*S: BY=110+20*I
- 19890 NUM=ENV%(S,I): MIN=ENVMIN%(I): MAX=ENVMAX%(I)
- 19900 GOSUB *BAR_PR
- 19910 NEXT I
- 19920 IF ENV%(S,9)=1 THEN A$="on" ELSE A$="off"
- 19930 LINE(19+125*S,290)-STEP(101,15),PSET,%7,BF
- 19940 SYMBOL(19+125*S,290),RIGHT$(" "+STR$(ENV%(S,9)),3),1,1,7
- 19950 SYMBOL(60+125*S,290),A$,1,1,0
- 19960 NEXT S
- 19970 MOUSE 1,MOUSE(0),MOUSE(1),1
- 19980 FOR I=0 TO 4: CMP%(I)=CMP2%(I): NEXT I
- 19990 GOSUB *ALG_PR
- 20000 FOR I=0 TO 3
- 20010 BX=190: BY=320+20*I: NUM=CMP%(I): MIN=CMPMIN%(I): MAX=CMPMAX%(I)
- 20020 GOSUB *BAR_PR
- 20030 NEXT I
- 20040 LINE(190,400)-(291,415),PSET,%7,BF
- 20050 SYMBOL(190,400),RIGHT$(" "+STR$(CMP%(4)),3),1,1,7
- 20060 IF CMP%(4) AND 2 THEN A$="on" ELSE A$="off"
- 20070 SYMBOL(225,400),A$,1,1,0
- 20080 IF CMP%(4) AND 1 THEN A$="on" ELSE A$="off"
- 20090 SYMBOL(265,400),A$,1,1,0
- 20100 GOSUB *V_SET
- 20110 GOSUB *AT
- 20120 *V_READ_RET
- 20130 SYMBOL(510,370),"読み込み",1,1,0
- 20140 RETURN
- 20150 '
- 20160 *V_CNT
- 20170 SYMBOL(580,370),"試聴",1,1,2
- 20180 *V_CNT_LOOP
- 20190 GOSUB *MPLOOP2
- 20200 GOSUB *MPLOOP1
- 20210 IF MX<509 OR MY<77 OR 631<MX OR 337<MY OR PUSH=2 GOTO *V_CNT_RET
- 20220 GOSUB *V_SCRN
- 20230 IF VC=-1 GOTO *V_CNT_LOOP
- 20240 DIM A%(23)
- 20250 P1=VARPTR(ALLV%(0,VC,BNK)): P2=VARPTR(A%(0))
- 20260 CALLM MTRNSM,P1,P2,48
- 20270 GOSUB *PLAYOFF_EXE
- 20280 VOICE 128,A%,0
- 20290 ERASE A%
- 20300 A$="T120 %C @128 Q8 L4 O4 U0 @V"+STR$(VOL)
- 20310 PLAY A$,A$,A$,A$,A$,A$
- 20320 PLAY P2$(PN,0),P2$(PN,1),P2$(PN,2),P2$(PN,3),P2$(PN,4),P2$(PN,5)
- 20330 GOSUB *MPLOOP2
- 20340 GOTO *V_CNT_LOOP
- 20350 *V_CNT_RET
- 20360 SYMBOL(580,370),"試聴",1,1,0
- 20370 RETURN
- 20380 '
- 20390 *V_SAVE
- 20400 SYMBOL(510,395),"保存",1,1,2
- 20410 *V_SAVE_LOOP
- 20420 GOSUB *MPLOOP2
- 20430 GOSUB *MPLOOP1
- 20440 IF MX<509 OR MY<77 OR 631<MX OR 337<MY OR PUSH=2 GOTO *V_SAVE_RET
- 20450 GOSUB *V_SCRN
- 20460 IF VC=-1 GOTO *V_SAVE_LOOP
- 20470 VN(BNK)=VC
- 20480 MSKF=0: GOSUB *V_SET
- 20490 P1=VARPTR(V%(0)): P2=VARPTR(ALLV%(0,VN(BNK),BNK))
- 20500 FOR I=0 TO 7
- 20510 A$=MID$(VNAME$,I+1,1)
- 20520 IF A$="" THEN POKE P1+I,0 ELSE POKE P1+I,ASC(A$)
- 20530 NEXT I
- 20540 FOR I=0 TO 44 STEP 4
- 20550 POKE P2+I,PEEK(P1+I,4),4
- 20560 NEXT I
- 20570 GOSUB *V_PR
- 20580 IF BNK=0 THEN VOICE VC+1,V%,0
- 20590 MSKF=1: GOSUB *V_SET
- 20600 *V_SAVE_RET
- 20610 SYMBOL(510,395),"保存",1,1,0
- 20620 RETURN
- 20630 '
- 20640 *V_CLR
- 20650 SYMBOL(580,395),"初期化",1,1,2
- 20660 *V_CLR_LOOP
- 20670 GOSUB *MPLOOP2
- 20680 GOSUB *MPLOOP1
- 20690 IF MX<509 OR MY<77 OR 631<MX OR 337<MY OR PUSH=2 GOTO *V_CLR_RET
- 20700 GOSUB *V_SCRN
- 20710 IF VC=-1 GOTO *V_CLR_LOOP
- 20720 P=VARPTR(ALLV%(0,VC,BNK))
- 20730 FOR I=0 TO 47
- 20740 POKE P+I,0
- 20750 NEXT I
- 20760 GOSUB *V_PR
- 20770 IF BNK<>0 GOTO *V_CLR_RET
- 20780 DIM A%(23)
- 20790 FOR I=0 TO 23: A%(I)=0: NEXT I
- 20800 VOICE VC+1,A%,0
- 20810 ERASE A%
- 20820 *V_CLR_RET
- 20830 SYMBOL(580,395),"初期化",1,1,0
- 20840 RETURN
- 20850 '
- 20860 *VNAME
- 20870 LINE(544,342)-STEP(63,15),PSET,%7,BF
- 20880 IX=544: IY=342: IA$=VNAME$: IM=8: IMM=8: ICL=15
- 20890 GOSUB *INP_INIT
- 20900 *VNAME_LOOP
- 20910 IF MOUSE(2,1) OR IC=&H0D OR IC=&H18 GOTO *VNAME_RET
- 20920 MX=MOUSE(0): MY=MOUSE(1)
- 20930 IF MOUSE(2,0) THEN IF 544<=MX AND 342<=MY AND MX<=607 AND MY<=357 THEN MOUSE 4,544,342,607,357 ELSE GOTO *VNAME_RET ELSE MOUSE 4,0,0,639,479
- 20940 GOSUB *INP
- 20950 GOTO *VNAME_LOOP
- 20960 *VNAME_RET
- 20970 VNAME$=IA$
- 20980 GOSUB *INP_END
- 20990 RETURN
- 21000 '
- 21010 *LOAD
- 21020 SYMBOL(540, 32),"LOAD",1,1,2
- 21030 WX=LOADWX: WY=LOADWY: WXS=335: WYS=125: WF=0: WON=4
- 21040 RESTORE *LOAD
- 21050 GOSUB*WIN_INIT
- 21060 DATA 130, 45,310, 65'文字入力
- 21070 DATA 200, 85,250,105'実行
- 21080 DATA 260, 85,310,105'取消
- 21090 DATA 260, 13,310, 33'FILES
- 21100 SYMBOL(WX+15,WY+15),"音色ファイルのLOAD",1,1,0
- 21110 SYMBOL(WX+266,WY+16),"FILES",1,1,0
- 21120 SYMBOL(WX+35,WY+47),"ファイル名",1,1,0
- 21130 SYMBOL(WX+209,WY+87),"実行",1,1,0
- 21140 SYMBOL(WX+269,WY+87),"取消",1,1,0
- 21150 *LOAD_2
- 21160 IX=WX+135: IY=WY+48: IM=21: IMM=84: IA$=FILE$: ICL=0
- 21170 LINE(IX,IY)-STEP(IM*8,15),PSET,7,BF
- 21180 GOSUB *INP_INIT
- 21190 GOSUB *MPLOOP2
- 21200 *LOAD_LOOP
- 21210 GOSUB *WIN
- 21220 LOADWX=WX: LOADWY=WY: IX=WX+135: IY=WY+48
- 21230 IF WC=1 THEN MOUSE 4,IX,IY,IX+IM*8,IY+15 ELSE MOUSE 4,0,0,639,479
- 21240 IF WC=2 OR IC=&H0D THEN GOTO *LOAD_CHK
- 21250 IF WC=3 OR MOUSE(2,1)=-1 OR IC=&H18 THEN GOSUB *INP_END: GOSUB *WIN_END: GOTO *LOAD_RET
- 21260 IF WC=4 GOSUB *LOAD_FILES
- 21270 GOSUB *INP
- 21280 FILE$=IA$
- 21290 GOTO *LOAD_LOOP
- 21300 *LOAD_RET
- 21310 CLOSE
- 21320 SYMBOL(540, 32),"LOAD",1,1,0
- 21330 GOSUB *MPLOOP2
- 21340 RETURN
- 21350 '
- 21360 *LOAD_FILES
- 21370 GOSUB *INP_END
- 21380 GOSUB *FSLCT
- 21390 IF FSLCT$<>"" THEN IA$=FSLCT$
- 21400 LINE(WX+131,WY+46)-(WX+309,WY+64),PSET,7,BF
- 21410 GOSUB *INP_INIT
- 21420 RETURN'
- 21430 '
- 21440 *LOAD_CHK
- 21450 GOSUB *INP_END
- 21460 LINE(WX+40,WY+87)-STEP(140,15),PSET,7,BF
- 21470 LFN$=FILE$
- 21480 IF INSTR(LFN$,".")=0 THEN LFN$=LFN$+".FMB"
- 21490 I=INSTR(LFN$,":")
- 21500 LFN1$=LEFT$(LFN$,I)
- 21510 LFN2$=MID$(LFN$,I+1)
- 21520 '
- 21530 ON ERROR GOTO *LOAD_ERR
- 21540 OPEN "I",1,LFN$: CLOSE
- 21550 ON ERROR GOTO *ERR
- 21560 '
- 21570 OPEN "R",1,LFN1$+"(128)"+LFN2$
- 21580 OPEN "R",2,LFN1$+"(1)" +LFN2$
- 21590 FIELD 1,128 AS A$
- 21600 FIELD 2, 1 AS B$
- 21610 FTL=LOF(2)
- 21620 IF FTL<6152 THEN CLOSE: A$="Bad File Size": GOTO *LOAD_ERR_RET
- 21630 '
- 21640 *LOAD_EXE
- 21650 DIM A%(4)
- 21660 FP=0: L=8: P=VARPTR(A%(0))
- 21670 GOSUB *FLOAD
- 21680 P=VARPTR(A%(0)): BNK$(BNK)=""
- 21690 FOR I=0 TO 7
- 21700 J=PEEK(P): IF J=0 THEN I=7 ELSE BNK$(BNK)=BNK$(BNK)+CHR$(J)
- 21710 NEXT I
- 21720 ERASE A%
- 21730 '
- 21740 FP=8: L=6144: P=VARPTR(ALLV%(0,0,BNK))
- 21750 GOSUB *FLOAD
- 21760 '
- 21770 IF BNK<>0 GOTO *LOAD_EXE_2
- 21780 DIM A%(23)
- 21790 P1=VARPTR(ALLV%(0,0,BNK)): P2=VARPTR(A%(0))
- 21800 FOR I=0 TO 127
- 21810 CALLM MTRNSM,P1+48*I,P2,48
- 21820 VOICE I+1,A%,0
- 21830 NEXT I
- 21840 ERASE A%
- 21850 *LOAD_EXE_2
- 21860 CLOSE
- 21870 GOSUB *WIN_END
- 21880 GOSUB *V_BTN1_PR
- 21890 GOSUB *V_PR
- 21900 GOTO *LOAD_RET
- 21910 '
- 21920 *LOAD_ERR
- 21930 ON ERROR GOTO *ERR
- 21940 IF ERR= 63 THEN A$="File not Find"
- 21950 IF ERR<>63 THEN A$="File Access Error"
- 21960 RESUME *LOAD_ERR_RET
- 21970 '
- 21980 *LOAD_ERR_RET
- 21990 BEEP: SYMBOL(WX+40,WY+87),A$,1,1,2
- 22000 GOTO *LOAD_2
- 22010 '
- 22020 *FLOAD 'FP L > P LFN1$,LFN2$
- 22030 N1=(FP+127)\128: L1=128*N1-FP: N3=(FP+L)\128
- 22040 L3=FP+L-128*N3: L2=L-L1-L3: N2=N3-N1
- 22050 IF FP+L<128*N1 THEN L1=L: L2=0: L3=0: N2=0
- 22060 '
- 22070 I=0
- 22080 WHILE I<L1
- 22090 GET 2,FP+I+1
- 22100 POKE P,ASC(B$)
- 22110 I=I+1: P=P+1
- 22120 WEND
- 22130 '
- 22140 I=0: P1=PEEK(VARPTR(A$),4)
- 22150 WHILE I<N2
- 22160 GET 1,N1+I+1
- 22170 CALLM MTRNSM,P1,P,128
- 22180 I=I+1: P=P+128
- 22190 WEND
- 22200 '
- 22210 I=0
- 22220 WHILE I<L3
- 22230 GET 2,128*N3+I+1
- 22240 POKE P,ASC(B$)
- 22250 I=I+1: P=P+1
- 22260 WEND
- 22270 RETURN
- 22280 '
- 22290 *ERR
- 22300 BEEP: CLOSE: MOUSE 0: MOUSE 1,,,1
- 22310 GOSUB *INP_END
- 22320 GOSUB *WIN_END
- 22330 WX=ERRWX: WY=ERRWY: WXS=190: WYS=95: WON=2: WF=0
- 22340 RESTORE *ERR
- 22350 GOSUB *WIN_INIT
- 22360 DATA 78, 68,128, 88'中断
- 22370 DATA 133, 68,183, 88'無視
- 22380 SYMBOL(WX+18,WY+15),"エラーが発生しました",1,1,0
- 22390 SYMBOL(WX+30,WY+40),"ERROR"+STR$(ERR)+"/"+STR$(ERL)+"行",1,1,0
- 22400 SYMBOL(WX+87,WY+70),"中断",1,1,0
- 22410 SYMBOL(WX+142,WY+70),"無視",1,1,0
- 22420 GOSUB *MPLOOP2
- 22430 *ERR_LOOP
- 22440 GOSUB *WIN
- 22450 ERRWX=WX: ERRWY=WY: MOUSE 4,0,0,639,479
- 22460 IF WC=1 THEN PLAY OFF: END
- 22470 IF WC=2 OR MOUSE(2,1)=-1 THEN GOSUB *WIN_END: GOSUB *MPLOOP2: RESUME NEXT
- 22480 GOTO *ERR_LOOP
- 22490 '
- 22500 *ERRKP
- 22510 ERRC=ERR
- 22520 RESUME NEXT
- 22530 '
- 22540 *SAVE
- 22550 SYMBOL(540, 53),"SAVE",1,1,2
- 22560 WX=SAVEWX: WY=SAVEWY: WXS=330: WYS=120: WF=0: WON=4
- 22570 RESTORE *SAVE
- 22580 GOSUB*WIN_INIT
- 22590 DATA 120, 40,300, 60'文字入力
- 22600 DATA 190, 85,240,105'実行
- 22610 DATA 250, 85,300,105'取消
- 22620 DATA 250, 13,300, 33'FILES
- 22630 SYMBOL(WX+15,WY+15),"音色ファイルのSAVE",1,1,0
- 22640 SYMBOL(WX+256,WY+16),"FILES",1,1,0
- 22650 SYMBOL(WX+25,WY+42),"ファイル名",1,1,0
- 22660 SYMBOL(WX+199,WY+87),"実行",1,1,0
- 22670 SYMBOL(WX+259,WY+87),"取消",1,1,0
- 22680 *SAVE_2
- 22690 IX=WX+125: IY=WY+43: IM=21: IMM=84: IA$=FILE$: ICL=0
- 22700 LINE(IX,IY)-STEP(IM*8,15),PSET,7,BF
- 22710 GOSUB *INP_INIT
- 22720 GOSUB *MPLOOP2
- 22730 *SAVE_LOOP
- 22740 GOSUB *WIN
- 22750 SAVEWX=WX: SAVEWY=WY: IX=WX+125: IY=WY+43
- 22760 IF WC=1 THEN MOUSE 4,IX,IY,IX+IM*8,IY+15 ELSE MOUSE 4,0,0,639,479
- 22770 IF WC=2 OR IC=&H0D THEN GOTO *SAVE_CHK
- 22780 IF WC=3 OR MOUSE(2,1)=-1 OR IC=&H18 THEN GOSUB *INP_END: GOTO *SAVE_RET
- 22790 IF WC=4 GOSUB *SAVE_FILES
- 22800 GOSUB *INP
- 22810 FILE$=IA$
- 22820 GOTO *SAVE_LOOP
- 22830 *SAVE_RET
- 22840 CLOSE
- 22850 GOSUB *WIN_END
- 22860 SYMBOL(540, 53),"SAVE",1,1,0
- 22870 GOSUB *MPLOOP2
- 22880 RETURN
- 22890 '
- 22900 *SAVE_FILES
- 22910 GOSUB *INP_END
- 22920 GOSUB *FSLCT
- 22930 IF FSLCT$<>"" THEN IA$=FSLCT$
- 22940 LINE(WX+121,WY+41)-(WX+299,WY+59),PSET,7,BF
- 22950 GOSUB *INP_INIT
- 22960 RETURN
- 22970 '
- 22980 *SAVE_CHK
- 22990 GOSUB *INP_END
- 23000 LINE(WX+40,WY+87)-STEP(140,15),PSET,7,BF
- 23010 SFN$=FILE$
- 23020 IF INSTR(SFN$,".")=0 THEN SFN$=SFN$+".FMB"
- 23030 I=INSTR(SFN$,":")
- 23040 IF I=0 THEN SFN1$="" ELSE SFN1$=LEFT$(SFN$,I)
- 23050 SFN2$=MID$(SFN$,I+1)
- 23060 '
- 23070 ON ERROR GOTO *SAVE_ERR
- 23080 OPEN "O",1,SFN$: CLOSE
- 23090 ON ERROR GOTO *ERR
- 23100 '
- 23110 *SAVE_EXE
- 23120 LINE(WX+40,WY+87)-STEP(140,15),PSET,7,BF
- 23130 OPEN "R",1,SFN1$+"(128)"+SFN2$
- 23140 FIELD 1,128 AS A$
- 23150 DIM B%(63)
- 23160 ERRC=0: M=0: L1=0: L2=0: L3=0: S$=STRING$(128,"*")
- 23170 ON ERROR GOTO *ERRKP
- 23180 '
- 23190 DIM A%(4): P=VARPTR(A%(0)): L=8
- 23200 FOR I=0 TO 7
- 23210 I$=MID$(BNK$(BNK),I+1,1)
- 23220 IF I$="" POKE P+I,0 ELSE POKE P+I,ASC(I$)
- 23230 NEXT I
- 23240 GOSUB *SAVE_EXE_SUB
- 23250 ERASE A%
- 23260 '
- 23270 P=VARPTR(ALLV%(0,0,BNK)): L=6144
- 23280 GOSUB *SAVE_EXE_SUB
- 23290 '
- 23300 CLOSE
- 23310 '
- 23320 OPEN "R",2,SFN1$+"(1)"+SFN2$
- 23330 FIELD 2,1 AS B$
- 23340 P2=VARPTR(B%(0))
- 23350 I=0
- 23360 WHILE I<L3 AND ERRC=0
- 23370 LSET B$=CHR$(PEEK(P2+I))
- 23380 PUT 2,128*M+I+1
- 23390 I=I+1
- 23400 WEND
- 23410 CLOSE
- 23420 ON ERROR GOTO *ERR
- 23430 ERASE B%
- 23440 IF ERRC<>0 THEN BEEP: CLOSE: KILL SFN$: A$="Scanty Free Area": GOTO *SAVE_ERR_RET
- 23450 GOTO *SAVE_RET
- 23460 '
- 23470 *SAVE_EXE_SUB
- 23480 P2=VARPTR(B%(0))'------------------------------------------------L1
- 23490 L1=128-L3
- 23500 IF L<L1 THEN L1=L
- 23510 I=0
- 23520 WHILE I<L1 AND ERRC=0
- 23530 POKE P2+L3+I,PEEK(P+I)
- 23540 I=I+1
- 23550 WEND
- 23560 IF L3+L1<128 THEN L2=0: N=0: L3=L3+L1: GOTO *SAVE_EXE_SUB_RET
- 23570 POKE VARPTR(S$),P2,4: POKE VARPTR(S$)+4,128
- 23580 LSET A$=S$
- 23590 PUT 1,M+1
- 23600 M=M+1
- 23610 '
- 23620 N=(L-L1)\128: L2=128*N: L3=(L-L1) MOD 128'------------------L2
- 23630 I=0
- 23640 WHILE I<N AND ERRC=0
- 23650 POKE VARPTR(S$),P+L1+128*I,4: POKE VARPTR(S$)+4,128
- 23660 LSET A$=S$
- 23670 PUT 1,M+1
- 23680 M=M+1: I=I+1
- 23690 WEND
- 23700 '
- 23710 I=0'-------------------------------------------------------------L3
- 23720 WHILE I<L3 AND ERRC=0
- 23730 POKE P2+I,PEEK(P+L1+L2+I)
- 23740 I=I+1
- 23750 WEND
- 23760 *SAVE_EXE_SUB_RET
- 23770 '
- 23780 RETURN
- 23790 '
- 23800 *SAVE_ERR
- 23810 IF ERR=64 THEN RESUME *SAVE_ERR_3
- 23820 *SAVE_ERR_2
- 23830 BEEP: ON ERROR GOTO *ERR
- 23840 A$="File Access Error"
- 23850 RESUME *SAVE_ERR_RET
- 23860 '
- 23870 *SAVE_ERR_3
- 23880 BEEP: ON ERROR GOTO *ERR
- 23890 SYMBOL(WX+40,WY+87),"Over Write ?",1,1,2
- 23900 GOSUB *MPLOOP2
- 23910 *SAVE_ERR_3_LOOP
- 23920 GOSUB *WIN
- 23930 SAVEWX=WX: SAVEWY=WY: MOUSE 4,0,0,639,479
- 23940 IF WC=1 THEN A$="": GOTO *SAVE_ERR_RET
- 23950 IF WC=2 OR INKEY$=CHR$(&H0D) THEN ON ERROR GOTO *SAVE_ERR_2: KILL SFN$: ON ERROR GOTO *ERR: GOTO *SAVE_EXE
- 23960 IF WC=3 OR MOUSE(2,1)=-1 GOTO *SAVE_RET
- 23970 GOTO *SAVE_ERR_3_LOOP
- 23980 '
- 23990 *SAVE_ERR_RET
- 24000 LINE(WX+40,WY+87)-STEP(140,15),PSET,7,BF
- 24010 SYMBOL(WX+40,WY+87),A$,1,1,2
- 24020 GOTO *SAVE_2
- 24030 '
- 24040 '
- 24050 *FSLCT
- 24060 WIDTH 80,25: CONSOLE 2,23,0: COLOR 0,0,7,4: CLS 4
- 24070 DIM FSLCT%(46080)
- 24080 GET@A(0,0)-(380,479),FSLCT%
- 24090 LINE(0,0)-(380,479),PSET,,BF
- 24100 LINE(380,0)-(380,479),PSET,0
- 24110 *FSLCT_1
- 24120 CL=5
- 24130 GOSUB *FSLCT_PR
- 24140 CL=4
- 24150 ON ERROR GOTO *FSLCT_ERR
- 24160 CLS 1: LOCATE 0,2:FILES DSK$+PATH$(DSK)+"*.*"
- 24170 ON ERROR GOTO *ERR
- 24180 YMAX=CSRLIN
- 24190 GOSUB *FSLCT_PR
- 24200 IF CL=4 THEN LOCATE 10,0:PRINT DSK$+PATH$(DSK)+"*.*";
- 24210 GOSUB *MPLOOP2
- 24220 *FSLCT_LOOP
- 24230 GOSUB *MPLOOP1
- 24240 Y=INT(MY/19)
- 24250 IF PUSH=2 THEN FSLCT$="": GOTO *FSLCT_RET
- 24260 IF 0<=MX AND 0<=MY AND MX<=16 AND MY<=16 THEN DSK=DSK-1: CLS 1: CL=5: GOSUB *FSLCT_PR: GOSUB *MPLOOP2
- 24270 IF 48<=MX AND 0<=MY AND MX<=64 AND MY<=16 THEN DSK=DSK+1: CLS 1: CL=5: GOSUB *FSLCT_PR: GOSUB *MPLOOP2
- 24280 IF 24<=MX AND 0<=MY AND MX<=40 AND MY<=16 GOTO *FSLCT_1
- 24290 IF CL=5 GOTO *FSLCT_LOOP
- 24300 IF 80<=MX AND 0<=MY AND MX<=80+8*LEN(PATH$(DSK))+15 AND MY<=16 THEN GOSUB *FSLCT_PATH2: GOTO *FSLCT_1
- 24310 IF MX<0 OR 380<MX OR Y<=1 OR YMAX-2<=Y GOTO *FSLCT_LOOP
- 24320 FL1$="": FL2$="": FL3$=""
- 24330 I=0
- 24340 WHILE I<=7 AND SCREEN(I,Y)<>&H20
- 24350 FL1$=FL1$+CHR$(SCREEN(I,Y)): I=I+1
- 24360 WEND
- 24370 I=0
- 24380 WHILE I<=2 AND SCREEN(9+I,Y)<>0
- 24390 FL2$=FL2$+CHR$(SCREEN(9+I,Y)): I=I+1
- 24400 WEND
- 24410 FOR I=0 TO 8
- 24420 FL3$=FL3$+CHR$(SCREEN(16+I,Y))
- 24430 NEXT I
- 24440 IF INSTR(FL1$,".")<>0 OR INSTR(FL2$,".")<>0 THEN GOSUB *FSLCT_PATH1: GOTO *FSLCT_1
- 24450 IF INSTR(FL3$,"DIR")<>0 THEN PATH$(DSK)=PATH$(DSK)+FL1$+"\": GOTO *FSLCT_1
- 24460 FSLCT$=DSK$+PATH$(DSK)+FL1$+"."+FL2$
- 24470 GOTO *FSLCT_RET
- 24480 '
- 24490 *FSLCT_PATH1
- 24500 I=LEN(PATH$(DSK))-1: PATH$(DSK)=LEFT$(PATH$(DSK),I)
- 24510 WHILE MID$(PATH$(DSK),I,1)<>"\"
- 24520 I=I-1: PATH$(DSK)=LEFT$(PATH$(DSK),I)
- 24530 WEND
- 24540 RETURN
- 24550 '
- 24560 *FSLCT_PATH2
- 24570 X=INT((MX-96)/8)+1
- 24580 IF X<=1 THEN PATH$(DSK)="\": RETURN
- 24590 FOR I=X TO LEN(PATH$(DSK))
- 24600 IF MID$(PATH$(DSK),I,1)="\" THEN J=I: I=255
- 24610 NEXT I
- 24620 PATH$(DSK)=LEFT$(PATH$(DSK),J)
- 24630 RETURN
- 24640 '
- 24650 *FSLCT_RET
- 24660 CLS 4
- 24670 PUT@A(0,0)-(380,479),FSLCT%
- 24680 ERASE FSLCT%
- 24690 GOSUB *MPLOOP2
- 24700 RETURN
- 24710 '
- 24720 *FSLCT_INIT
- 24730 DIM PATH$(16)
- 24740 DSK=0: DSK$=CHR$(&H41+DSK)
- 24750 FOR I=0 TO 16: PATH$(I)="\": NEXT I
- 24760 RETURN
- 24770 '
- 24780 *FSLCT_PR
- 24790 DSK=(DSK+17) MOD 17
- 24800 DSK$=CHR$(&H41+DSK)+":"
- 24810 CLS 2
- 24820 LOCATE 0,0: PRINT "< >";
- 24830 COLOR,,,CL: LOCATE 3,0: PRINT DSK$;: COLOR ,,,4
- 24840 RETURN
- 24850 '
- 24860 *FSLCT_ERR
- 24870 CL=5: PATH$(DSK)="\"
- 24880 IF ERR=63 THEN RESUME *FSLCT_1
- 24890 BEEP
- 24900 LOCATE 0,2: PRINT "File Access Error";
- 24910 RESUME NEXT
- 24920 '
- 24930 *INP_INIT
- 24940 IF IPC=1 GOSUB *INP_END
- 24950 IA2$=IA$: IPC=1: IC=0: IP=0: IP2=IP: IXS=8*IM-1
- 24960 DIM IA%(FNVRAM(IXS+8,15))
- 24970 GET@A(IX,IY)-(IX+IXS+8,IY+15),IA%
- 24980 GOSUB *INP_PR_2
- 24990 WHILE INKEY$<>"": WEND
- 25000 RETURN
- 25010 '
- 25020 *INP
- 25030 IC=0
- 25040 IF MOUSE(2,0)=-1 GOSUB *INP_MOUSE
- 25050 I$=INKEY$
- 25060 IF I$="" RETURN
- 25070 J$=INKEY$
- 25080 WHILE J$<>"": I$=J$: J$=INKEY$: WEND
- 25090 IC=ASC(I$)
- 25100 IF IC=&H1D THEN IP2=IP-1: GOSUB *INP_PR: RETURN '←
- 25110 IF IC=&H1C THEN IP2=IP+1: GOSUB *INP_PR: RETURN '→
- 25120 IF IC=&H08 AND 0<IP THEN IA2$=LEFT$(IA$,IP-1)+MID$(IA$,IP+1): IP2=IP-1: GOSUB *INP_PR: RETURN 'BS
- 25130 IF IC=&H7F THEN IA2$=LEFT$(IA$,IP)+MID$(IA$,IP+2): IP2=IP: GOSUB *INP_PR: RETURN 'DEL
- 25140 IF IC=&H05 THEN IA2$=LEFT$(IA$,IP): GOSUB *INP_PR: IP2=IP: RETURN 's^DEL
- 25150 IF IC=&H1B THEN GOSUB *INP_ESC: RETURN 'ESC
- 25160 IF IC<=&H1F OR IMM<=LEN(IA$) RETURN
- 25170 IA2$=LEFT$(IA$,IP)+I$+MID$(IA$,IP+1): IP2=IP+LEN(I$)
- 25180 GOSUB *INP_PR
- 25190 RETURN
- 25200 '
- 25210 *INP_MOUSE
- 25220 MX=MOUSE(0)-IX: MY=MOUSE(1)-IY
- 25230 IF MX<0 OR IXS<MX OR MY<0 OR 15<MY RETURN
- 25240 MOUSE 4,IX,IY,IX+IXS,IY+15
- 25250 IP2=(IP\IM)*IM+MX\8
- 25260 IF MX<=0 AND 0<IP2 THEN IP2=(IP\IM-1)*IM: MOUSE 1,IX+IXS-1,,1
- 25270 IF IXS<=MX AND IP2<IMM-1 AND IP2<LEN(IA2$) THEN IP2=(IP\IM+1)*IM: MOUSE 1,IX+1,,1
- 25280 GOSUB *INP_PR
- 25290 RETURN
- 25300 '
- 25310 *INP_PR
- 25320 IF IP2<0 THEN IP2=0
- 25330 IF LEN(IA2$)<IP2 THEN IP2=LEN(IA2$)
- 25340 IF IMM<=IP2 THEN IP2=IMM-1
- 25350 IF IP2=IP AND IA2$=IA$ THEN RETURN
- 25360 IP=IP2: IA$=IA2$
- 25370 *INP_PR_2
- 25380 I=(IP\IM)*IM: J=IP MOD IM
- 25390 PUT@A(IX,IY)-(IX+IXS+8,IY+15),IA%
- 25400 SYMBOL(IX,IY),MID$(IA$,I+1,IM),1,1,%ICL
- 25410 LINE(IX+8*J,IY)-STEP(1,15),PSET,2,B
- 25420 RETURN
- 25430 '
- 25440 *INP_END
- 25450 IF IPC=0 THEN RETURN
- 25460 IPC=0
- 25470 PUT@A(IX,IY)-(IX+IXS+8,IY+15),IA%
- 25480 SYMBOL(IX,IY),MID$(IA$,1,IM),1,1,%ICL
- 25490 ERASE IA%
- 25500 RETURN
- 25510 '
- 25520 *INP_ESC
- 25530 DIM IB%(FNVRAM(639,104))
- 25540 GET@A(0,375)-(639,479),IB%
- 25550 LINE(-1,375)-(640,480),PSET,0,BF,7
- 25560 CONSOLE 20,4,1: COLOR 1,,,4: LOCATE 0,20
- 25570 LINE INPUT I$
- 25580 IF I$<>"" THEN IA2$=LEFT$(I$,IMM): IP2=0
- 25590 CONSOLE 0,23,0: CLS 4
- 25600 PUT@A(0,375)-(639,479),IB%
- 25610 ERASE IB%
- 25620 GOSUB *INP_PR
- 25630 RETURN
- 25640 '
- 25650 *MOUSE_INIT
- 25660 MS_INIT=0
- 25670 RESTORE *MOUSE_INIT
- 25680 DIM MS_A$(20),MS_D$(20),MS_X(20),MS_Y(20)
- 25690 READ MS
- 25700 WHILE MS<>-1
- 25710 READ MS_X(MS),MS_Y(MS),A$,D$
- 25720 MS_A$(MS)="":MS_D$(MS)=""
- 25730 FOR J=0 TO 31
- 25740 MS_A$(MS)=MS_A$(MS)+CHR$(VAL("&h"+MID$(A$,2*J+1,2)))
- 25750 MS_D$(MS)=MS_D$(MS)+CHR$(VAL("&h"+MID$(D$,2*J+1,2)))
- 25760 NEXT J
- 25770 READ MS
- 25780 WEND
- 25790 RETURN
- 25800 DATA 0, 0,0'INIT BASIC標準
- 25810 DATA 001F001F003F007F00FF007F003F001F080F1C073E03FF01FF80FFC1FFE3FFF7
- 25820 DATA 00007FC07F807F007E007F007F8077C063E041F000F8007C003E001C00080000
- 25830 'DATA 3, 0,0'YA4 FMBED標準
- 25840 'DATA3FFF0FFF83FF80FFC03FC00FE003E000F001F007F807F807FC07FC7FFE7FFEFF
- 25850 'DATA0000400030001C000F0017C00BF005FC02F0057002B001500100000000000000
- 25860 DATA 4, 0,0'HAND4 指斜め
- 25870 DATA BE9F180F00078003C003E003E003C003C003E001F000F800FF01FF83FFC7FFCF
- 25880 DATA 0000416065B036D81B780DF806F81BF81DF80FFC07FC00F80070002000000000
- 25890 DATA 7, 9,9'HAND2 押さえ手指
- 25900 DATA FF7FFC1FF80FF807F803F803F803880300038003E003F003F807FC07F803F803
- 25910 DATA 0000008002A002A002A802A802A803F873F81BF80FF807F803F001F000000000
- 25920 DATA -1
- 25930 '
- 25940 *MOUSE_SET
- 25950 MOUSE 2,MS_A$(MS),MS_D$(MS),MS_X(MS),MS_Y(MS)
- 25960 RETURN
- 25970 '
- 25980 *WIN_ON
- 25990 VIEW (WX+5,WY+5)-(WX+WXS-10,WY+WYS-10)
- 26000 WINDOW(WX+5,WY+5)-(WX+WXS-10,WY+WYS-10)
- 26010 RETURN
- 26020 '
- 26030 *WIN_OFF
- 26040 VIEW (0,0)-(1023,511)
- 26050 WINDOW(0,0)-(1023,511)
- 26060 RETURN
- 26070 '
- 26080 *WIN_INIT
- 26090 IF WPC=1 GOSUB *WIN_END
- 26100 IF FRE(3)<(WXS+32)*WYS/2*2+WON*8 THEN ERRF=1: RETURN
- 26110 WPC=1: WC=-2: WCL=10: I=1
- 26120 DIM WA%(FNVRAM(WXS,WYS)),WB%(FNVRAM(WXS,WYS)),WOZ(WON,3)
- 26130 IF 639<WX+WXS THEN WX=639-WXS
- 26140 IF 479<WY+WYS THEN WY=479-WYS
- 26150 GET@A(WX,WY)-(WX+WXS,WY+WYS),WA%
- 26160 LINE(WX,WY)-(WX+WXS,WY+WYS),PSET,%7,BF
- 26170 LINE(WX+3,WY+3)-(WX+WXS,WY+WYS),PSET,%8,BF
- 26180 LINE(WX,WY)-(WX+WXS-3,WY+WYS-3),PSET,0,BF,7
- 26190 WHILE I<=WON AND (WF AND 2)=0
- 26200 FOR J=0 TO 3: READ WOZ(I,J): NEXT J
- 26210 LINE(WX+WOZ(I,0),WY+WOZ(I,1))-(WX+WOZ(I,2),WY+WOZ(I,3)),PSET,0,B
- 26220 I=I+1
- 26230 WEND
- 26240 RETURN
- 26250 '
- 26260 *WIN
- 26270 IF MOUSE(2,0)=0 THEN WC=-2: RETURN
- 26280 MX=MOUSE(0)-WX: MY=MOUSE(1)-WY
- 26290 IF MX<0 OR MY<0 OR WXS<MX OR WYS<MY THEN WC=0: RETURN
- 26300 WC=-3: I=1
- 26310 WHILE I<=WON
- 26320 IF WOZ(I,0)<=MX AND WOZ(I,1)<=MY AND MX<=WOZ(I,2) AND MY<=WOZ(I,3) THEN WC=I: I=WON
- 26330 I=I+1
- 26340 WEND
- 26350 IF 1<=WC OR (WF AND 1) THEN RETURN
- 26360 WC=-1
- 26370 X=MX: Y=MY: MX=WX: MY=WY
- 26380 MOUSE 4,X,Y,639-WXS+X,479-WYS+Y
- 26390 MS=7: GOSUB *MOUSE_SET
- 26400 LINE(MX,MY)-STEP(WXS,WYS),XOR,%WCL,B
- 26410 WHILE MOUSE(2,0)=-1
- 26420 WHILE MOUSE(9)=0 AND MOUSE(10)=0 AND MOUSE(2,0)=-1: WEND
- 26430 LINE(MX,MY)-STEP(WXS,WYS),XOR,%WCL,B
- 26440 MX=MOUSE(0)-X: MY=MOUSE(1)-Y
- 26450 LINE(MX,MY)-STEP(WXS,WYS),XOR,%WCL,B
- 26460 WEND
- 26470 LINE(MX,MY)-STEP(WXS,WYS),XOR,%WCL,B
- 26480 GET@A(WX,WY)-(WX+WXS,WY+WYS),WB%
- 26490 PUT@A(WX,WY)-(WX+WXS,WY+WYS),WA%
- 26500 GET@A(MX,MY)-(MX+WXS,MY+WYS),WA%
- 26510 PUT@A(MX,MY)-(MX+WXS,MY+WYS),WB%
- 26520 MS=MS_INIT: GOSUB *MOUSE_SET
- 26530 WX=MX: WY=MY
- 26540 RETURN
- 26550 '
- 26560 *WIN_END
- 26570 IF WPC=0 THEN RETURN
- 26580 WPC=0
- 26590 PUT@A(WX,WY)-(WX+WXS,WY+WYS),WA%
- 26600 ERASE WA%,WB%,WOZ
- 26610 RETURN
- 26620 '
- 26630 '
- 26640 *FLCNV 'FL$>FL1$,FL2$,FL3$,FL4$
- 26650 J=INSTR(FL$,":"): K=1: L=INSTR(FL$,".")
- 26660 FOR I=1 TO LEN(FL$)
- 26670 IF MID$(FL$,I,1)=":" OR MID$(FL$,I,1)="\" THEN K=I+1
- 26680 NEXT I
- 26690 IF L<>0 THEN FL3$=MID$(FL$,K,L-K): FL4$=MID$(FL$,L) ELSE FL3$=MID$(FL$,K): IF MODE=4 THEN FL4$=".SND" ELSE FL4$=".PMB"
- 26700 FL1$=LEFT$(FL$,J)
- 26710 FL2$=MID$(FL$,J+1,K-(J+1))
- 26720 FL$=FL1$+FL2$+FL3$+FL4$
- 26730 RETURN
- 26740 '
-