Programm 7 - CAS PrePro

Bei dieses Programm scheiterten mein wav2X2cas und auch wav2cas.
Weder mit dem einen noch mit dem anderen Programm klappte es auf Anhieb. Allerdings waren laut Diagnose-File von wav2cas alle Blöcke korrekt. Trotzdem gab es einen Error beim Laden. Also habe ich kurzerhand die Daten aus dem Diagnose-File genommen und mit meinem Tool in ein CAS-File geschrieben. Nun klappte das Laden im Emulator. Ich sollte wohl noch etwas Fehleranalyse betreiben, um mein Tool zu verbessern.

Falls jemand sehr einsam ist, ist das folgende Basic-Programm das Richtige. Man kann sich damit mit dem Computer unterhalten. Nichts für mich, aber wem's gefällt.
Woher das Programm stammt, kann ich nicht mehr sagen. Gegen ein Abtipp-Listing spricht die Länge, da mit zunehmender Länge des Linstings die Motivation des Abtippens abnimmt. Selbst habe ich so einen Quatsch nicht verzapft.

10 REM TALK
20 GOSUB 100
30 GOSUB 200
40 GOSUB 300
50 GOSUB 500
60 IF NUM<>0 THEN GOSUB NUM
70 GOSUB 980
80 GOTO 30
100 PRINT CHR$(125)
102 OPEN #2,4,0,"K:"
104 POSITION 2,1:PRINT "HALLO !"
108 PRINT 
110 PRINT "ICH WUERDE MICH GERNE MIT DIR"
112 PRINT "UNTERHALTEN. DA ICH ABER KEINE"
114 PRINT "OHREN HABE, MUSST DU DEINE ANT-"
116 PRINT "WORTEN MIT DER TASTATUR GEBEN."
118 PRINT 
120 PRINT "BITTE BENUTZE KEINE SATZZEICHEN"
122 PRINT "AUSSER KOMMA."
124 PRINT 
126 PRINT "WENN DU MIT DEINEM SATZ FERTIG"
128 PRINT "BIST, DRUECKE DIE RETURN-TASTE."
130 POSITION 2,18
132 PRINT "ERZAEHL MIR VON DEINEN PROBLEMEN"
134 DIM P$(100),R$(50),M$(50),C$(50),D$(50)
136 R$=""
138 M$=""
140 D$=""
142 DIM N$(3*32)
144 FOR I=1 TO 3*32:N$(I)=" ":NEXT I
146 N$(1,32)="UND WEITER ?"
148 N$(33,64)="ICH VERSTEHE NICHT RICHTIG"
150 N$(65,96)="DARUEBER MOECHTE ICH MEHR WISSEN"
152 DIM I$(3*40)
154 FOR I=1 TO 3*40:I$(I)=" ":NEXT I
156 I$(1,40)="SPRECHEN WIR DOCH UEBER "
158 I$(41,80)="VORHIN ERZAELTEST DU VON "
160 I$(81,120)="HAT DAS ZU TUN MIT "
162 DIM J$(2*32)
164 FOR I=1 TO 2*32:J$(I)=" ":NEXT I
166 J$(1,32)="NICHT IMMER ALLES NEGATIV SEHEN"
168 J$(33,64)="ICH VRSTEHE"
170 DIM A$(100),B$(100),Z$(100),T$(50)
172 DIM W(20,2)
180 RETURN 
200 A$=" "
202 POKE 752,1
204 GET #2,B
206 IF B=155 THEN GOTO 220
208 IF B=126 AND LEN(A$)=1 THEN A$=" ":GOTO 216
210 IF B=126 AND LEN(A$)>1 THEN A$=A$(1,LEN(A$)-1):GOTO 216
212 IF B<32 OR B>123 THEN GOTO 200
214 A$(LEN(A$)+1)=CHR$(B)
216 POSITION 2,20:PRINT A$;" ";
218 GOTO 204
220 IF A$=" " THEN GOTO 200
222 IF A$(LEN(A$),LEN(A$))=" " THEN B$=A$(1,LEN(A$)-1):A$=B$:GOTO 220
224 IF A$=R$ THEN POSITION 0,21:PRINT "DU WIEDERHOLST DICH !":PRINT :PRINT :GOTO 200
226 R$=A$
228 IF A$=" " THEN GOTO 200
230 IF ASC(A$(2,2))<97 THEN A$(2,2)=CHR$(ASC(A$(2,2))+32)
232 POSITION 0,21:PRINT 
234 RETURN 
300 FOR I=1 TO 20
302 W(I,1)=0:W(I,2)=0
304 NEXT I
306 N=1
308 B=0
310 FOR I=1 TO LEN(A$)
312 IF (A$(I,I)=" " OR A$(I,I)=",") AND B=0 THEN B=1
314 IF (A$(I,I)<>" " AND A$(I,I)<>",") AND B<=1 THEN W(N,1)=I:B=2
316 IF (A$(I,I)=" " OR A$(I,I)=",") AND B=2 THEN W(N,2)=I-1:N=N+1:B=0
318 NEXT I
320 W(N,2)=LEN(A$)
322 A$(LEN(A$)+1)="   "
324 FOR I=1 TO N
326 RESTORE 380
328 READ B$
330 IF B$="S" THEN GOTO 354
332 IF B$<>A$(W(I,1),W(I,2)) THEN GOTO 352
334 READ C$
336 Z$=A$(1,W(I,1)-1):Z$(LEN(Z$)+1)=C$:Z$(LEN(Z$)+1)=A$(W(I,2)+1)
338 A$=Z$
340 W(I,2)=W(I,2)+LEN(C$)-LEN(B$)
342 FOR J=I+1 TO N
344 W(J,2)=W(J,2)+LEN(C$)-LEN(B$)
346 W(J,1)=W(J,1)+LEN(C$)-LEN(B$)
348 NEXT J
350 GOTO 354
352 READ B$
353 GOTO 328
354 NEXT I
356 RETURN 
380 DATA ICH,DU*,DU,ICH*,MEINE,DEINE*,DEINE,MEINE*,HABE,HAST*,HAST,HABE*
382 DATA MIR,DIR*,DIR,MIR*,DEIN,MEIN*,MEIN,DEIN*,MICH,DICH*,DICH,MICH*
384 DATA KANN,KANNST*,KANNST,KANN*,BIN,BIST*,BIST,BIN*,WAR,WARST*,WARST,WAR*
386 DATA S,S
500 RESTORE 600
502 READ B$,NUM
504 IF B$="S" THEN GOTO 518
506 FOR I=1 TO N
508 IF A$(W(I,1),W(I,2))<>B$ THEN GOTO 514
510 T$=A$(W(I,2)+1)
512 RETURN 
514 NEXT I
516 GOTO 502
518 NUM=0
520 IF M$<>"" THEN GOTO 530
522 Z=INT(RND(0)*3):P$=N$(Z*32+1,Z*32+32)
524 RETURN 
526 Z=INT(RND(0)*3):P$=I$(Z*40+1,Z*40+40)
528 P$(LEN(P$)+1)=M$
530 RETURN 
600 DATA COMPUTER,7000,MASCHINE,7000
602 DATA GLEICH,7100,GENAUSO,7100,AEHNLICH,7100
604 DATA WENN,7200,JEDER,7300
606 DATA KANN,8200,SICHER,8250
608 DATA WIE,8100,WEIL,8150
610 DATA IMMER,7800
612 DATA JEDER,7300,NIEMAND,7300
614 DATA WAR,7500,ICH*,8800
616 DATA NEIN,7400
617 DATA DEIN*,7600
618 DATA BIST*,8500,DU*,8650
620 DATA HALLO,8300,VIELLEICHT,8350
621 DATA MEIN*,8370,NEIN,8420
622 DATA JA,8250,WARUM,8450
624 DATA VIELLEICHT,8350,ENTSCHULDIGUNG,8400
625 DATA WAS,8450
626 DATA S,0
980 FOR J=1 TO LEN(P$)
981 IF P$(J,J)<>"*" THEN PRINT P$(J,J);
982 NEXT J
983 POSITION 0,23:PRINT :PRINT :PRINT :PRINT 
984 RETURN 
990 P$="DRUECK DICH BITTE DEUTLICHER AUS "
991 RETURN 
7000 P$="IRRITIEREN DICH COMPUTER?"
7001 RETURN 
7100 P$="IN WELCHER HINSICHT?"
7101 RETURN 
7200 P$="WARUM UEBER MOEGLICHKEITEN SPRECHEN?"
7201 RETURN 
7300 P$="WIRKLICH "
7310 P$(LEN(P$)+1)=B$
7320 P$(LEN(P$)+1)=" ?"
7330 RETURN 
7400 IF I=N THEN GOTO 7450
7410 I=I+1
7420 IF A$(W(I,1),W(I,2))="MAN" THEN B$(LEN(B$)+1)=" MAN":GOTO 7450
7450 Z=INT(RND(0)*2):P$=J$(Z*32+1,Z*32+32)
7460 RETURN 
7500 IF I=N THEN GOTO 990
7510 I=I+1
7515 IF I>N THEN GOTO 520
7520 IF A$(W(I,1),W(I,2))<>"DU*" THEN GOTO 7550
7530 P$="WAS WAERE WENN DU WAERST "
7535 P$(LEN(P$)+1)=A$(W(I,2)+1)
7536 P$(LEN(P$)+1)=" ?"
7540 RETURN
7550 IF A$(W(I,1),W(I,2))<>"ICH*" THEN GOTO 520
7560 P$="WUERDE ES DICH WEITER BRINGEN,ICH WAERE "
7565 P$(LEN(P$)+1)=A$(W(I,2)+1)
7570 RETURN
7600 I=I+1
7605 IF I>N THEN GOTO 7450
7610 IF A$(W(I,1),W(I,2))="MUTTER" THEN GOTO 7700
7620 IF A$(W(I,1),W(I,2))="VATER" THEN GOTO 7700
7630 IF A$(W(I,1),W(I,2))="SCHWESTER" THEN GOTO 7700
7640 IF A$(W(I,1),W(I,2))="BRUDER" THEN GOTO 7700
7650 IF A$(W(I,1),W(I,2))="FRAU" THEN GOTO 7700
7660 IF A$(W(I,1),W(I,2))="MANN" THEN GOTO 7700
7670 IF A$(W(I,1),W(I,2))="KINDER" THEN GOTO 7700
7680 IF LEN(T$)>10 THEN M$=T$
7690 P$="DEIN "
7692 P$(LEN(P$)+1)=T$
7694 P$(LEN(P$)+1)=" ?"
7695 RETURN
7700 P$="ERZAEHL MIR MEHR VON DEINER FAMILIE "
7710 RETURN
7800 P$="KANNST DU MIR EIN BEISPIEL NENNEN"
7810 RETURN
7900 I=I+1
7905 IF I>N THEN P$="BIN ICH WAS ?":RETURN
7920 P$="WARUM INTERESSIERT DICH OB ICH "
7924 P$(LEN(P$)+1)=A$(W(I,1))
7926 P$(LEN(P$)+1)=" BIN ODER NICHT ?"
7930 RETURN
8000 P$="BIST DU WIRKLICH "
8010 P$(LEN(P$)+1)=A$(W(I,2))
8030 RETURN
8100 P$="WARUM FRAGST DU ?"
8110 RETURN
8150 P$="UND WAS SIND DIE WIRKLICHEN GRUENDE ?"
8160 RETURN
8200 I=I+1
8205 IF I>N THEN P$="WIE BITTE ?":RETURN
8210 IF A$(W(I,1),W(I,2))="ICH*" THEN P$="MEINST DU ICH KOENNTE ":P$(LEN(P$)+1)=A$(W(I,2)+1):RETURN
8220 IF A$(W(I,1),W(I,2))="DU*" THEN P$="KANNST DU WIRKLICH ":P$(LEN(P$)+1)=A$(W(I,2)+1):RETURN
8230 GOTO 520
8250 P$="DU SCHEINST DIR DA SEHR SICHER ZU SEIN"
8260 RETURN
8300 P$="NETT DICH KENNENZULERNEN.WIR WOLLEN    UNS UEBER DEINE PROBLEME UNTERHALTEN."
8310 RETURN
8350 P$="DU SOLLTEST ETWAS SICHERER IN DEINEN   AUSSAGEN SEIN."
8360 RETURN
8370 P$="WARUM INTERRESIERST DU DICH FUER MICH"
8380 P$(LEN(P$)+1)=T$
8400 P$="DU BRAUCHST DICH NICH ZU ENTSCHULDIGEN"
8410 RETURN
8450 P$="EINIGE FRAGEN SIND SCHWER ZU BEANTWOR- TEN"
8460 RETURN
8500 I=I+1
8505 IF I>N THEN GOTO 520
8510 P$="TUT MIR LEID,DASS DU ":P$(LEN(P$)+1)=A$(W(I,1),W(I,2))
8515 P$(LEN(P$)+1)=" BIST."
8520 IF A$(W(I,1),W(I,2))="TRAURIG" THEN RETURN
8530 IF A$(W(I,1),W(I,2))="SAUER" THEN RETURN
8540 IF A$(W(I,1),W(I,2))="DEPRIMIERT" THEN RETURN
8550 IF A$(W(I,1),W(I,2))="KRANK" THEN RETURN
8560 P$="BIN ICH DER GRUND,DASS DU ":P$(LEN(P$)+1)=A$(W(I,1),W(I,2)):P$(LEN(P$)+1)=" BIST"
8570 IF A$(W(I,1),W(I,2))="GLUECKLICH" THEN RETURN
8580 IF A$(W(I,1),W(I,2))="FROEHLICH" THEN RETURN
8590 IF A$(W(I,1),W(I,2))="GESUND" THEN RETURN
8600 IF A$(W(I,1),W(I,2))="SATT" THEN RETURN
8605 P$="WILLST DU MIT MIR SPRECHEN,WEIL DU "
8610 P$(LEN(P$)+1)=A$(W(I,1),W(I,2))
8615 P$(LEN(P$)+1)=" BIST"
8620 RETURN
8650 IF I=1 THEN GOTO 8655
8654 IF A$(W(I,1),W(I,2))="BIST*" THEN GOTO 8000
8655 I=I+1
8656 IF I>N THEN GOTO 990
8660 IF A$(W(I,1),W(I,2))="BIST*" THEN GOTO 8500
8670 P$="WAS KOENNTE ":P$(LEN(P$)+1)=A$(W(I,2)+1):P$(LEN(P$)+1)=" FUER DICH BEDEUTEN"
8675 IF A$(W(I,1),W(I,2))="BRAUCHE" OR A$(W(I,1),W(I,2))="MOECHTE" THEN RETURN
8680 P$="WOHER WEISST DU DAS DU NICHT KANNST ":P$(LEN(P$)+1)=A$(W(I,2)+1)
8685 IF A$(W(I,1),W(I,2))="KANN NICHT" THEN RETURN
8690 IF A$(W(I,1),W(I,2))="FUEHLE" THEN P$="WIESO FUEHLST DU DICH SO ?"
8695 IF A$(W(I,1),W(I,2))="GLAUBE" THEN P$="GLAUBST DU DAS WIRKLICH ?"
8700 GOTO 520
8800 IF I-1<1 THEN GOTO 8805
8804 IF A$(W(I,1),W(I,2))="BIN" THEN GOTO 7790
8805 I=I+1
8810 IF I>=N THEN P$="WAS BIN ICH ?":RETURN
8820 IF A$(W(I,1),W(I,2))="BIN" THEN P$="WARUM GLAUBST DU DAS ?":RETURN
8830 P$="DAS DENKST DU ALSO VON MIR ":RETURN

Download der Datei als CAS-File (bitte im Atari mit CLOAD laden):