C64 Software  <  SCA: The C64 Software Collection / TM41

  Run
10 REM BENUETZTE VARIABLE (LOKAL):
20 REM A,A1,A2,A3,I,A$,A$(..)
30 REM
40 REM X,Y=POSITION DES WINDOWS
50 REM M$ =NAME DES MENUES
60 REM
70 REM ZURUECK: A=AUSGEWAEHLTER PUNKT
80 REM
90 :
1000 REM --- INITIALISIERUNG ---
1010 :
1020 POKE53280,6:POKE53281,6:POKE53269,0:POKE54296,0
1030 POKE55,0:POKE56,64:CLR:PRINT"
1040 DIMA$(144)
1050 SQ$=""
1060 A1$="":SP$="":FORI=1TO6:A1$=A1$+A1$:SP$=SP$+SP$:NEXT
1070 SP$=LEFT$(SP$,37)+CHR$(20)+CHR$(20)+"":SR$=""+SP$
1080 C$=CHR$(0):Q$=CHR$(34):Z$=""
1090 :
1100 JO=56320:REM JOYSTICK PORT 2
1110 SP=16384:REM SOUNDPLAYER
1120 PI=16896:REM PICTURE-SHOWER
1130 SE=49152:REM SCROLLEDITOR
1140 :
1150 SA=49200:REM SCROLLTEXTSPEICHER
1160 :
1170 SO$="":REM SOUNDNAME
1180 PI$="":REM BILDNAME
1190 NL$="" :REM NACHZULADEN-NAME
1200 :
1210 OPEN15,8,15
1220 REMD$="":GOSUB54000:PRINTDN$:END
1230 :
1300 REM --- FILES LADEN ---
1310 :
1320 N$="":GOSUB60000
1330 N$="":GOSUB60000
1340 N$="":GOSUB60000
1350 :
1500 REM --- TITEL ---
1510 :
1520 M$="":X=−1:Y=10:GOSUB50000
1530 IFA=−1THENEND
1540 IFA=0THENGOSUB40000
1550 :
2000 REM --- SOUND ---
2010 :
2020 M$="":X=−1:Y=10:GOSUB50000
2030 IFA=−1THEN1500
2040 IFA=2THEN3000
2050 M$="":GOSUB56000:REM DISK REQ
2060 IFA=−1THEN2000
2070 :
2080 X=−1:Y=7:M$="":GOSUB52000
2090 IFA=−1THEN2000
2100 IFA=0THEN2050
2110 SO$=A$(A):GOSUB55000:REM CLS
2120 N$=SO$:GOSUB61000:REM SOUNDLADEN
2130 GOSUB56200:REM TEMPO REQUESTER
2140 SYSSP:SS=PEEK(780):REM SPEED
2150 GOSUB59600:REM REQUESTER LOESCHEN
2160 M$="":X=−1:Y=10:GOSUB50000
2170 ONA+2GOTO2000,2050,3000
2180 GOSUB55000:GOTO2130
2190 :
2200 :
3000 REM --- PICTURE ---
3010 :
3020 M$="":X=−1:Y=10:GOSUB50000
3030 IFA=−1THEN2000
3040 IFA=2THEN4000
3050 M$="":GOSUB56000:REMDISKREQ
3060 IFA=−1THEN3000
3070 :
3080 X=−1:Y=8:M$="":GOSUB52000
3090 IFA=−1THEN3000
3100 IFA=0THEN3050
3110 PI$=A$(A):GOSUB55000:REM CLS
3120 N$=PI$:GOSUB62000:REM PIC LADEN
3130 SYSPI:GOSUB59030:SYSPI+3
3140 M$="":X=−1:Y=10:GOSUB50000
3150 ONA+2GOTO3000,3050,4000,3130
3160 STOP
3170 :
3180 :
4000 REM --- SCROLL ---
4010 :
4020 M$="":X=−1:Y=10:GOSUB50000
4030 IFA=−1THEN3000
4040 ONAGOTO45000,5000
4050 :
4100 A=SA+40:L=0:FORI=A−40TOA:POKEI,32:NEXT
4110 GOSUB55000:REM CLS
4120 GOSUB56300:REM EDITOR-REQUESTER
4130 GETA$:IFA$=""THEN4130
4140 IFA$=CHR$(20)THENL=L−1:L=L*−(L=L*SGN(L)):GOTO4180
4150 IFA$=CHR$(13)THEN4500
4160 IFA$<""OR(A$>CHR$(127)ANDA$<"")THEN4130
4170 POKEA+L,ASC(A$):L=L+1
4180 PRINTLEFT$(SQ$,13):POKESE+4,(A+L−40)/256:POKESE+3,(A+L−40)−256*PEEK(SE+4)
4190 SYSSE:GOTO4130
4200 :
4500 GOSUB59600:REM MESSAGE LOESCHEN
4510 S1$=""
4520 S2$=""
4530 GOSUB59500:REM MESSAGE AUSGEBEN
4540 :
4550 PRINT#15,""
4560 OPEN2,8,2,""
4570 PRINT#2,CHR$(0)CHR$(11);
4580 FORI=ATOA+L−1:PRINT#2,CHR$(PEEK(I));:NEXT:PRINT#2,CHR$(0);
4590 CLOSE2
4600 :
4610 :
5000 REM --- NACHLADEN ---
5010 :
5020 M$="":X=−1:Y=10:GOSUB50000
5030 IFA=−1THEN4000
5040 IFA=2THEN6000
5050 :
5100 GOSUB55000:REM CLS
5110 S1$=""
5120 S2$=""
5130 GOSUB59500:REM MESSAGE AUSGEBEN
5140 :
5150 PRINTLEFT$(SQ$,13);:INPUTA$:NL$=LEFT$(A$,16)
5160 :
5200 M$="":X=−1:Y=10:GOSUB50000
5210 IFA=−1THEN5000
5220 IFA=0THENAD=0:GOTO6000
5230 :
5300 GOSUB55000:REM CLS
5310 S1$=""
5320 S2$=""
5330 GOSUB59500:REM MESSAGE AUSGEBEN
5340 :
5350 PRINTLEFT$(SQ$,13);:INPUTA$:AD=VAL(A$)
5360 :
5370 :
6000 REM --- TITEL KREIEREN ---
6010 :
6020 GOSUB55000:REM CLS
6030 PRINTLEFT$(SQ$,10)""SO$
6040 PRINTLEFT$(SQ$,12)""PI$
6050 IFNL$=""THEN6080
6060 PRINTLEFT$(SQ$,14)""NL$
6070 PRINTLEFT$(SQ$,16)""AD
6080 :
6090 M$="":X=−1:Y=18:GOSUB51000
6100 IFA=−1THEN5000
6110 IFA=1THENRUN
6120 STOP
6130 :
6140 :
40000 GOSUB55000:PRINT""
40010 FORI=1TO1000:NEXT:RETURN
40020 :
45000 PRINT"":FORI=1TO1000:NEXT:RUN
50000 REM --- MENUE MIT TITEL ---
50010 :
50020 GOSUB55000:GOTO51000
50030 :
51000 REM --- MENUE OHNE TITEL ---
51010 :
51020 RESTORE
51030 READA$:IFA$<>M$THEN51030
51040 READM$,A2:A1=LEN(M$):FORI=0TOA2:READA$:IFLEN(A$)>A1THENA1=LEN(A$)
51050 A$(I)=A$:NEXT:A1=A1+2
51060 A=0:B=0:T=TI:A3=(A1−LEN(M$))/2
51070 IFX=−1THENX=(38−A1)/2
51080 :
51090 PRINTLEFT$(SQ$,Y+1)TAB(X)""LEFT$(A1$,A1)""
51100 IFM$=""THENY=Y−2:GOTO51140
51110 PRINTTAB(X)""LEFT$(SP$,A3)M$LEFT$(SP$,A3+.5)""
51120 PRINTTAB(X)""LEFT$(A1$,A1)""
51130 IFA2>9THENFORI=0TO9:PRINTTAB(X)""A$(I)TAB(X+A1+1)"":NEXT:GOTO51150
51140 FORI=0TOA2AND15:PRINTTAB(X)""A$(I)TAB(X+A1+1)"":NEXT
51150 PRINTTAB(X)""LEFT$(A1$,A1)""
51160 :
51170 PRINTLEFT$(SQ$,Y+B+4)TAB(X)""LEFT$(""+A$(A)+SP$,A1)
51180 IFTI−T<10THEN51180
51190 GETA$:J=PEEK(JO)AND31:IFJ=31THENIFA$=""THEN51190
51200 PRINTLEFT$(SQ$,Y+B+4)TAB(X)""LEFT$(""+A$(A)+SP$,A1)
51210 IF(JAND2)=0THENIFA0THEN51300
51230 IF(JAND16)=0THENWAITJO,16:RETURN
51240 IFA$=""THEN51170
51250 IFA$=Z$THENA=−1:WAITJO,16:RETURN
51260 S1$="":S2$="":GOSUB59500
51270 FORI=1TO2000:NEXT
51280 GOSUB59600:GOTO51170
51290 :
51300 REM --- RAUF ---
51310 :
51320 T=TI:A=A−1:IFB>0THENB=B−1:GOTO51170
51340 PRINTLEFT$(SQ$,Y+4);:FORI=0TO9:PRINTTAB(X)""LEFT$(A$(I+A)+SP$,16):NEXT
51350 GOTO51170
51360 :
51400 REM --- RUNTER ---
51410 :
51420 T=TI:A=A+1:IFB<9THENB=B+1:GOTO51170
51440 PRINTLEFT$(SQ$,Y+4);:FORI=−9TO0:PRINTTAB(X)""LEFT$(A$(I+A)+SP$,16):NEXT
51450 GOTO51170
51460 :
51470 :
52000 REM --- DISK MENUE MIT TITEL ---
52010 :
52020 GOSUB55000:GOTO53000
52030 :
53000 REM --- DISK MENUE OHNE TITEL ---
53010 :
53020 A=0:RESTORE
53030 READA$:IFA$<>M$THEN53030
53040 READM$,D$:A1=LEN(M$):A2=1:GOSUB54000
53050 GOSUB54500:IFLEN(A$)>A1THENA1=LEN(A$)
53060 A$(A2)=A$:IFS=0THENA2=A2+1:GOTO53050
53070 A2=A2−1:A1=A1+2:A$(0)="":GOTO51060
53080 :
54000 REM --- DISKNAMEN NACH DN$ ---
54010 :
54020 GOSUB56100:REM BITTE WARTEN
54030 GOSUB54600:REM FLOPPY RESET
54040 OPEN1,8,0,""+D$
54050 GET#1,A$,B$
54060 GOSUB54500:DN$=B$:RETURN
54070 :
54500 REM --- NAECHSTEN DIR-EINTRAG ---
54510 :
54520 GET#1,A$,A$,A$,B$:B$="":S=0
54530 GET#1,A$:IFA$=""THENS=−1:CLOSE1:GOTO59600
54540 IFA$<>Q$THEN54530
54550 GET#1,A$:IFA$<>Q$THENB$=B$+A$:GOTO54550
54560 GET#1,A$:IFA$<>""THEN54560
54570 A$=MID$(B$,LEN(D$)):RETURN
54580 :
54590 :
54600 REM --- FLOPPY RESET ---
54610 :
54620 PRINT#15,"":A=TI
54630 IFTI−A<128THEN54630
54640 RETURN
54650 :
55000 REM --- TITEL ---
55010 :
55020 PRINT""SR$
55030 PRINT""
55040 PRINT""SR$""
55050 RETURN
55060 :
56000 REM --- DISK REQUEST ---
56010 :
56020 S1$=""
56030 S2$=M$+""
56040 GOTO59000
56050 :
56100 REM --- BITTE WARTEN ---
56110 :
56120 S1$="":S2$=""
56130 GOTO59500
56140 :
56200 REM --- SOUND SPEED ---
56210 :
56220 PRINTLEFT$(SQ$,13)""LEFT$(A1$,32)""
56230 PRINT""TAB(36)""
56240 PRINT""LEFT$(A1$,32)""
56250 :
56260 S1$=""
56270 S2$=""
56280 GOTO59500
56290 :
56300 REM --- SCROLLTEXT ---
56310 :
56320 PRINTLEFT$(SQ$,13)LEFT$(A1$,39)""
56330 PRINT""LEFT$(A1$,39)""
56340 :
56350 S1$=""
56360 S2$=""
56370 GOTO59500
56380 :
59000 REM --- SYSTEM REQUEST S1$,S2$ --
59010 :
59020 GOSUB59500
59030 GETA$:J=PEEK(JO)AND16:IFJ=16THENIFA$<>Z$THEN59030
59040 A=0:IFA$=Z$THENA=−1
59050 WAITJO,16:GOTO59600
59060 :
59500 REM --- SYSTEM REQUEST PRINTEN --
59510 :
59520 PRINTLEFT$(SQ$,22−(S1$=""))""LEFT$(A1$,37)""
59530 PRINT""TAB(20−LEN(S1$)/2)S1$TAB(38)""
59540 IFS2$<>""THENPRINT""TAB(20−LEN(S2$)/2)S2$TAB(38)""
59550 PRINT""LEFT$(A1$,37)"":RETURN
59560 :
59570 :
59600 REM --- SYSTEM REQUEST LOESCHEN -
59610 :
59620 PRINTLEFT$(SQ$,22)SP$:PRINTSP$:PRINTSP$:PRINTSP$"":RETURN
59630 :
59640 :
60000 REM --- LADEN (N$,ABSOLUT) ---
60010 :
60020 POKE780,1:POKE781,8:POKE782,2:SYS65466
60030 :
60040 S1$=""
60050 S2$=MID$(N$,1−(ASC(N$)=129)):GOSUB59500
60060 POKE780,LEN(N$):POKE781,192:POKE782,2:SYS65469
60070 FORI=1TOLEN(N$):POKE703+I,ASC(MID$(N$,I,1)):NEXT
60080 POKE780,0:POKE781,0:POKE782,80:SYS65493:GOTO59600
60090 :
60100 :
61000 REM --- SOUND + INFO LADEN ---
61010 :
61020 OPEN1,8,2,""+N$+""
61030 INPUT#1,SN$
61040 INPUT#1,A:POKESP+4,A
61050 INPUT#1,A:POKESP+6,A
61060 INPUT#1,A:POKESP+8,A
61070 INPUT#1,A:POKESP+10,A−256*INT(A/256):POKESP+11,A/256
61080 INPUT#1,A:POKESP+16,A
61090 INPUT#1,A:POKESP+18,A
61100 INPUT#1,A:POKESP+20,A
61110 INPUT#1,A:POKESP+22,A−256*INT(A/256):POKESP+23,A/256
61120 PL$="":INPUT#1,PL$:CLOSE1
61130 IFLEFT$(PL$,2)<>""THEN61150
61140 N$=PL$:GOSUB60000:REM PLAYER
61150 N$=SN$:GOTO60000 :REM SOUND
61160 :
61170 :
62000 REM --- PICTURE LADEN (20480) ---
62010 :
62020 POKE780,1:POKE781,8:POKE782,0:SYS65466
62030 N$=""+N$:GOTO60040
62040 :
62050 :
63000 DATAINSTR,,1
63010 DATAICH WILL EINE ANLEITUNG
63020 DATAICH KENNE MICH SCHON AUS
63030 :
63040 DATASOUND,WILLST DU EINEN SOUND ?,2
63050 DATA""
63060 DATA""
63070 DATA""
63080 :
63090 DATADENSOUND,WILLST DU DIESEN SOUND ?,2
63100 DATA""
63110 DATA""
63120 DATA""
63130 :
63140 DATABILD,WILLST DU EIN HINTERGRUNDBILD ?,2
63150 DATA""
63160 DATA""
63170 DATA""
63180 :
63190 DATADASPIC,WILLST DU DIESES BILD ?,2
63200 DATA""
63210 DATA""
63220 DATA""
63230 :
63240 DATASCROLL,WILLST DU EINEN SCROLL ?,2
63250 DATANA KLAR!
63260 DATASCROLL !? WAS IST DENN DAS ???
63270 DATANEIN
63280 :
63290 DATALADEN,SOLL EIN FILE NACHGELADEN WERDEN?,2
63300 DATA""
63310 DATA""
63320 DATA""
63330 :
63340 DATAMASCHBAS,WIE MUSS ICH ES STARTEN?,1
63350 DATAMIT 'RUN'
63360 DATAMIT EINEM SYS-BEFEHL
63370 :
63380 DATAJANEIN,IST DAS KORREKT?,1
63390 DATANA KLAR!
63400 DATANEIN, DU DEPP!
63410 :
63420 :
63430 DATASOUNDDIR,WELCHEN SOUND WILLST DU ?,I/*
63440 :
63450 DATAPICDIR,WELCHES PICTURE WILLST DU ?,""
READY.