Sourcecode


TextEddie

1280 FETCH 24,15,3,N(18),TN$:IF N(18)>255 THEN 1280 1290 FETCH 3,15,3,N(19),TN$:IF N(19)>255 THEN 1290 1300 GOTO 120 2000 REM ------------------------ 2010 REM PERSONENDATEN 2020 REM ------------------------ 2030 FETCH 7,4,14,PN$(LF),T$ 2040 FETCH 18,5,2,PX(LF),TN$:PX(LF)=PX(LF)*2:IF PX(LF)>127 THEN 2040 2050 FETCH 21,5,2,PY(LF),TN$:PY(LF)=PY(LF)*2:IF PY(LF)>127 THEN 2050 2060 FETCH 6,6,2,A,TN$:IF A>31 THEN 2060 2070 TY(LF)=TY(LF) AND 128 OR A 2075 AT 11,6," ":AT 11,6,PS$(A)")":A=0 2080 AT 11,7:MENU "WAFSGBRLCPHODTRM-"+CR$,A$,1 2085 IF A$=CR$ THEN 2110

Assemblercode

0 ; 1 ;hauptprogramm 2 ; 3             jmp KALTSTART 4             jmp ENEMY 5             jmp SPRSHADE 6             jmp MAPLOAD 7             jmp CITYLOAD ... 19             jmp PLSPRANI 20             jmp PLRONSCR 21 ; 22 ; 23 KALTSTART jsr MAINSET 24             jsr IRQINIT 25             jsr INIT 26             jsr DISPLAY 27 ; 28 WARMSTART ldx #255 29             txs 30             inx 31             stx CIA2+14 32             stx CIA2+15 33             stx ATTACKFLG 34             inx 35             stx INITFLG 36 ; 37 MAINMENU    lda MANMENTXT 38             ldy MANMENTXT+1 39             sta NMENUHPTR ...

Assembler Source Code

Hier möchte ich versuchen, möglichst viel von unserer damaligen Arbeit an dem Programm zu beschreiben. Ich versuche seit geraumer Zeit die alten Assembler Quelltexte zu reaktivieren. Da die Quellen mit dem damaligen "Milan-Ass" geschrieben wurden und es keinerlei Dokumentation zu diesem (damals genialen) Assembler mehr gibt, kenne ich auch den Druck-Befehl nicht mehr. Jetzt habe ich mit Hilfe diverser Tools und einem Perl-Script den Quelltext wieder hergestellt.

TextEddie

Desweiteren hier der Quelltext des sogenannten "TextEddie". Damit wurden alle Personen- und Städtedaten verwaltet und auf Disk geschrieben. Das Programm selber wurde mit "HypraBasic" (einem erweiterbaren Basic Derivat) erstellt und enthält Befehle, die über den C64 Standard hinausgehen.

Weitere Editoren gibt es auf der Eddies Seite.

Ein EDDIE ?

Damals hießen alle Editoren "Eddies" - begonnen mit "HiEddi" einem genialen Hires-Grafik Programm. Mit HiEddi wurde damals auch die Hauptkarte von Nippon gemalt. Zuerst wurden die Landmassen gemalt und das Wasser ausgespart. HiEddi konnte nur Pixelweise in einer Farbe zeichnen, aber die Hauptarbeit der Kontinente war damit ein Leichtes.

Kompletter Sourcecode

Der komplette Sourcecode vom TextEddie ist unten abgedruckt. Alle anderen Assembler Codes sind downloadbar, da sie das Seitenlayout hier unnötig sprengen würden.

Und um gleich irgendwelchen Rechtsverdrehern den Wind aus den Segeln zu nehmen: "Nein, man kann mit diesen Listings das Spiel nicht nachprogrammieren ! Sie haben reinen Dokumentationscharakter ! Bätsch !"

TextEddie komplett

1 CHARSET 49152,63488 50 EOB 40960:INIT0 60 GOSUB 20000 :REM VARINIT 110 HE$="TEXTEDDI 10.0" 111 FO$=" " 112 GOSUB 40000:REM MENUSCREEN 120 AT 1,1:MENU "SPZIHAGKHDTSML_+-,."+CHR$(13),A$,1:AT 1,1," " 121 IF A$=CR$ AND SC=0 THEN 120 122 IF A$=CR$ AND SC=2 THEN 2000 125 IF A$=CR$ AND SC=1 THEN 1000 127 IF A$=CR$ AND SC=3 THEN 3000 132 IF A$="H" THEN GOSUB 40400:GOTO 110 140 IF A$="L" THEN GOSUB 400:GOTO 110 145 IF A$="I" THEN GOSUB 30000:GOTO 110 147 IF A$="A" THEN GOSUB 60000:GOTO 110 150 IF A$="S" THEN GOSUB 700:GOTO 110 155 IF A$="Z" THEN GOSUB 7000:GOTO 110 160 IF A$="_" THEN END 170 IF A$="K" THEN SC=1:GOTO 41000 180 IF A$="D" THEN SC=2:GOTO 42000 190 IF A$="T" THEN SC=3:GOTO 43000 200 IF A$="M" THEN SC=4:GOSUB 44000:GOSUB 6000:GOTO 110 202 IF A$="S" THEN OPEN 1,8,15,"S:TEXTEDDI":CLOSE 1:SAVE"TEXTEDDI":GOTO 120 205 IF A$="P" THEN GOSUB 52000:GOTO 110 210 IF A$="+" THEN LF=LF+1:GOTO 380 220 IF A$="-" THEN LF=LF-1:GOTO 380 225 IF A$="G" AND (SC=2 OR SC=3) THEN :FETCH 6,1,2,LF,TN$:GOTO 380 227 IF A$="" THEN PRINT "IR:KEYBOARD:SC=0:GOTO 110 230 IF A$="," THEN FR=FR-1:GOTO 370 240 IF A$="." THEN FR=FR+1:GOTO 370 370 IF FR>4 THEN FR=1 375 IF FR<1 THEN FR=4 376 IF SC=3 THEN 43200 377 GOTO 120 380 IF LF>15 THEN LF=0 390 IF LF<0 THEN LF=15 391 IF SC=2 THEN 42150 392 IF SC=3 THEN 43200 395 GOTO 120 400 REM--------------------------- 410 REM LADEN DER DATEN 420 REM--------------------------- 430 HE$="LADEN":FO$=" " 432 GOSUB 40000:REM MAINSCREEN 480 BOX 5,7,34,9 485 AT 6,8,"NUMMER DER STADT:" 490 FETCH 23,8,2,TW:IF TW>40 THEN 490 495 IF TW=-1 THEN 110 500 AT 6,8,H5$:AT 6,8,"LOADING: "TW$(TW) 550 DV=QF:GOSUB 30300 :REM CHECKDRIVE 560 IF C=1 THEN 110 580 A$="Q/"+TW$(TW) 585 DV=QF:GOSUB 30400 :REM OPEN FILE 592 TAKE 1,SN$,RN$,XP,YP,FZ,WZ,WZ$ 593 FOR I=0 TO 19:TAKE 1,N(I):NEXT 600 FOR I=0 TO 15 610 TAKE 1,PX(I),PY(I),TY(I),PD(I),PA(I),PN$(I),A1(I),A2(I),A3(I),HD(I),B(I) 620 TAKE 1,MW(I):NEXT:FOR I=0 TO 15:TAKE 1,H$(I),A(I):NEXT 630 FOR I=0 TO 15:FOR J=1 TO 4:TAKE 1,FT$(I,J),AN$(I,J):NEXT:NEXT:CLOSE 1 642 BU=0:FOR LF=0 TO 15:GOSUB 30600:BU=BU+A::B(LF)=A:NEXT 650 BF=3072-BU:LF=0 660 RETURN 700 REM--------------------------- 710 REMSAVEN DER DATEN 720 REM--------------------------- 730 HE$="SPEICHERN":FO$=" " 732 GOSUB 40000:REM MAINSCREEN 780 BOX 5,7,34,9 790 AT 6,8,"NUMMER DER STADT:" 795 FETCH 23,8,2,TW:IF TW>40 THEN 790 800 IF TW=-1 THEN 110 810 AT 6,8,H5$:AT 6,8,"SAVING: "TW$(TW) 820 DV=QF:GOSUB 30300 :REM CHECKDRIVE 825 IF C=1 THEN 110 830 A$="Q/"+TW$(TW) 850 OPEN 1,QF,15,"S:"+A$:CLOSE 1 860 OPEN 1,QF,2,A$+",S,W" 870 PRINT#1,SN$:PRINT#1,RN$:PRINT#1,XP:PRINT#1,YP:PRINT#1,FZ:PRINT#1,WZ 890 PRINT#1,WZ$:FOR I=0 TO 19:PRINT#1,N(I):NEXT 900 FOR I=0 TO 15:PRINT#1,PX(I):PRINT#1,PY(I):PRINT#1,TY(I):PRINT#1,PD(I) 910 PRINT#1,PA(I):PRINT#1,PN$(I):PRINT#1,A1(I):PRINT#1,A2(I):PRINT#1,A3(I) 920 PRINT#1,HD(I):PRINT#1,B(I):PRINT#1,MW(I):NEXT 930 FOR I=0 TO 15:PRINT#1,H$(I):PRINT#1,A(I):NEXT 940 FOR I=0 TO 15:FOR J=1 TO 4:PRINT#1,FT$(I,J):PRINT#1,AN$(I,J) 950 NEXT:NEXT:CLOSE 1 960 RETURN 1000 REM ------------------------ 1010 REM HEADERDATEN 1020 REM ------------------------ 1030 FETCH 12,4,12,SN$,T$ 1040 FETCH 12,5,14,RN$,T$ 1050 FETCH 18,6,3,XP,TN$:IF XP>127 THEN 1050 1060 FETCH 22,6,3,YP,TN$:IF YP>127 THEN 1060 1070 FETCH 18,7,3,N(0),TN$:IF N(0)>255 THEN 1070 1080 FETCH 22,7,3,N(1),TN$:IF N(1)>255 THEN 1080 1090 FETCH 33,7,3,N(2),TN$:IF N(2)>255 THEN 1090 1100 FETCH 18,8,3,N(3),TN$:IF N(3)>255 THEN 1100 1110 FETCH 22,8,3,N(4),TN$:IF N(4)>255 THEN 1110 1120 FETCH 18,9,3,N(5),TN$:IF N(5)>255 THEN 1120 1130 FETCH 22,9,3,N(6),TN$:IF N(6)>255 THEN 1130 1140 FETCH 18,10,3,N(7),TN$:IF N(7)>255 THEN 1140 1150 FETCH 22,10,3,N(8),TN$:IF N(8)>255 THEN 1150 1160 FETCH 18,11,3,N(9),TN$:IF N(9)>255 THEN 1160 1170 FETCH 22,11,3,N(10),TN$:IF N(10)>255 THEN 1170 1180 FETCH 10,12,3,N(11),TN$:IF N(11)>255 THEN 1180 1190 FETCH 24,12,2,N(12),TN$:IF N(12)>64ORN(12)=0 THEN 1190 1200 FETCH 35,12,1,N(13),TN$:IF N(13)>1 THEN 1200 1220 FETCH 24,13,2,N(15),TN$:IF N(15)>255 THEN 1220 1230 FETCH 35,13,3,N(16),TN$:IF N(16)>255 THEN 1230 1240 FETCH 10,14,2,FZ,TN$:IF FZ>63 THEN 1240 1250 FETCH 24,14,3,WZ,TN$:IF WZ>255 THEN 1250 1260 FETCH 35,14,2,WZ$,"01" 1270 FETCH 10,15,3,N(17),TN$:IF N(17)>255 THEN 1270 1280 FETCH 24,15,3,N(18),TN$:IF N(18)>255 THEN 1280 1290 FETCH 3,15,3,N(19),TN$:IF N(19)>255 THEN 1290 1300 GOTO 120 2000 REM ------------------------ 2010 REM PERSONENDATEN 2020 REM ------------------------ 2030 FETCH 7,4,14,PN$(LF),T$ 2040 FETCH 18,5,2,PX(LF),TN$:PX(LF)=PX(LF)*2:IF PX(LF)>127 THEN 2040 2050 FETCH 21,5,2,PY(LF),TN$:PY(LF)=PY(LF)*2:IF PY(LF)>127 THEN 2050 2060 FETCH 6,6,2,A,TN$:IF A>31 THEN 2060 2070 TY(LF)=TY(LF) AND 128 OR A 2075 AT 11,6," ":AT 11,6,PS$(A)")":A=0 2080 AT 11,7:MENU "WAFSGBRLCPHODTRM-"+CR$,A$,1 2085 IF A$=CR$ THEN 2110 2090 IF A$="-" THEN TY(LF)=TY(LF) AND 127:AT 11,7,"-------------":GOTO 2110 2095 FOR I=0 TO 15:IF LEFT$(HD$(I),1)=A$ THEN A=I 2096 NEXT 2100 AT 11,7," ":AT 11,7,HD$(A):HD(LF)=A:TY(LF)=TY(LF)OR128 2110 AT 32,7:MENU"JN"+CR$,A$,1:IF A$="J" THEN :AT 32,7,"JA ":A2(LF)=A2(LF) AND 127 2120 IF A$="N" THEN :AT 32,7,"NEIN":A2(LF)=A2(LF)OR128 2130 FETCH 13,8,2,A,TN$:IF A>15 THEN 2130 2140 A=A*16:A3(LF)=A3(LF) AND 15ORA 2150 FETCH 27,8,2,MW(LF),TN$:IF MW(LF)>15 THEN 2150 2155 GOSUB 30100 2160 WINP 27,10,27,16,X$," X",0;A1$:A1$=A1$+RIGHT$(AL$,7-LEN(A1$)) 2170 Z=0:PA(LF)=0:FOR I=1 TO 7:A$=MID$(A1$,I,1) 2180 IF A$=" " THEN 2240 2230 PA(LF)=PA(LF)OR2I-1) 2240 NEXT 2255 GOSUB 2310 2260 AT 14,18:MENU"0123456789-"+CR$,A$,1 2265 IF A$=CR$ THEN 2300 2270 IF A$="-" THEN PD(LF)=64:AT 14,18,"--":GOTO 2300 2280 FETCH 14,18,2,A,TN$:IF A>63 THEN 2280 2290 PD(LF)=PD(LF) AND 63OR A OR192 2300 GOTO 120 2310 FETCH 34,10,1,A,"01234":A1(LF)=A 2320 FETCH 34,11,1,A,"01234":A2(LF)=(A2(LF) AND 128)ORA 2330 FETCH 34,12,1,A,"01234":A3(LF)=(A3(LF) AND 240)ORA :RETURN 3000 REM ------------------------ 3010 REM TEXTDATEN 3020 REM ------------------------ 3025 GOSUB 30600:REM BYTES/PERS 3027 BF=BF+A:GOSUB 30200 3030 WINP 17,4,37,8,H$(LF),T$,0;A$:H$(LF)=A$ 3035 ARRAY H$(LF),0,A:BF=BF-A 3040 GOSUB 30200 3045 A(LF)=0 3050 FETCH 8,16,10,FT$(LF,1),T$:IF FT$(LF,1)<>"" THEN A(LF)=A(LF)+1 3070 FETCH 26,16,10,FT$(LF,2),T$:IF FT$(LF,2)<>"" THEN A(LF)=A(LF)+1 3080 FETCH 8,17,10,FT$(LF,3),T$:IF FT$(LF,3)<>"" THEN A(LF)=A(LF)+1 3090 FETCH 26,17,10,FT$(LF,4),T$:IF FT$(LF,4)<>"" THEN A(LF)=A(LF)+1 3100 IF A(LF)=0 THEN 3045 3105 FOR I=1 TO A(LF):BF=BF-LEN(FT$(LF,I)):NEXT:GOSUB 30200 3110 FOR I=1 TO A(LF):FR=I:NUMSET FR,8,14 3120 WINP 17,10,37,14,AN$(LF,I),T$,0;A$:AN$(LF,I)=A$:ARRAY AN$(LF,I),0,A 3130 IF A$="" THEN 3120 3140 BF=BF-A:GOSUB 30200 3150 NEXT I:ARRAY H$(LF),0,A:B(LF)=A 3155 FOR I=1 TO A(LF):ARRAY H$(LF),0,A:B(LF)=B(LF)+LEN(FT$(LF,I))+A:NEXT 3160 GOTO 120 6000 REM ---------------------------- 6010 REM POKE SCHLEIFE 6020 REM ---------------------------- 6135 OCCUPY 40960,48640,0 6140 VARRAM AD(1),SN$ 6160 VARRAM AD(2),RN$ 6165 A=0:IF LEFT$(WZ$,1)="1" THEN A=AOR2 6166 IF RIGHT$(WZ$,1)="1" THEN A=AOR1 6167 A=AOR N(19)*16 6170 POKE AD(1)+26,XP 6171 POKE AD(1)+27,YP 6172 POKE AD(1)+28,N(7):POKE AD(1)+29,N(8) 6173 POKE AD(1)+30,N(9):POKE AD(1)+31,N(10) 6175 POKE AD(1)+32,(N(12)-1)OR128*N(13) 6177 POKE AD(1)+33,N(11) 6178 POKE AD(1)+34,N(15) 6180 POKE AD(1)+35,FZ:POKE AD(1)+36,WZ 6181 POKE AD(1)+37,N(16) 6182 POKE AD(1)+38,N(17) 6183 POKE AD(1)+39,N(18) 6185 POKE AD(1)+40,N(3):POKE AD(1)+41,N(4):POKE AD(1)+42,N(5) 6187 POKE AD(1)+43,N(6):POKE AD(1)+44,N(0) 6188 POKE AD(1)+45,N(1):POKE AD(1)+46,N(2) 6189 POKE AD(1)+47,A 6190 FOR I=0 TO 15 6200 : POKE AD(7)+I,TY(I) 6205 : POKE AD(8)+I,PD(I) 6207 : POKE AD(9)+I,PA(I) 6240 : POKE AD(17)+I,A1(I) 6242 : POKE AD(18)+I,A2(I) 6244 : POKE AD(19)+I,A3(I) 6250 : POKE AD(20)+I,HD(I) OR (MW(I)*16) 6255 NEXT 6263 FOR I=0 TO 15 6264 : IF LEN(PN$(I))=0 THEN PX(I)=255:PY(I)=255: GOTO 6267 6265 VARRAM AD(10)+14*I,PN$(I) 6266 : NEXTI 6267 FOR I=0 TO 15 6268 : POKE AD(5)+I,PX(I) 6269 : POKE AD(6)+I,PY(I) 6270 NEXT 6272 REM ----------------------------- 6273 REM STRINGS POKE N 6274 REM ----------------------------- 6279 BT=36864:BA=45568:KK=-1:HH=0:REM $B200 6280 KK=KK+1 6282 IF KK=16 THEN 6430 6283 S1=0:IF (TY(KK) AND 128)=128 THEN S1=1:HH=HH+1 6284 IF PF=1 THEN 6295 :REM OHNEAUSGABE 6285 POKE 199,S1 6290 IF KK<8 THEN :NUMSETB(KK),4+KK*4,4 6292 IF KK>7 THEN :NUMSETB(KK),4+(KK-8)*4,5 6293 POKE 199,0 6295 IF PX(KK)>127 THEN 6280 6320 HT(KK)=INT(BT/256) 6322 LT(KK)=BT-(HT(KK)*256) 6330 ARRAY H$(KK),BA,A:BT=BT+(A-BA):BA=A 6340 HZ(KK)=INT(BT/256) 6342 LZ(KK)=BT-(HZ(KK)*256) 6350 A=0:FOR J=1 TO A(KK) 6360 : VARRAM BA,FT$(KK,):A=LEN(FT$(KK,J)) 6370 : BT=BT+A:BA=BA+A 6380 NEXT 6382 HA(KK)=INT(BT/256) 6383 LA(KK)=BT-(HA(KK)*256) 6390 FOR J=1 TO A(KK) 6400 : ARRAY AN$(KK,J),BA,A:BT=BT+(A-BA):BA=A 6415 NEXT 6420 GOTO 6280 6430 FOR I=0 TO 15 6432 : POKE AD(11)+I,LT(I) 6440 : POKE AD(12)+I,HT(I) 6442 : POKE AD(13)+I,LZ(I) 6444 : POKE AD(14)+I,HZ(I) 6450 : POKE AD(15)+I,LA(I) 6452 : POKE AD(16)+I,HA(I) 6454 NEXT:IF PF=1 THEN 6470 6455 A=0:FOR I=0 TO 15:A=A+B(I):NEXT 6460 B=3072-A:AT 13,9,B:AT 13,10,A:AT 13,8,HH 6470 IF TW=11 ORTW=31 THEN POKE 47874,65 6475 A$=TW$(TW):DV=MF:GOSUB 30300 6500 IF QF=MF THEN GOSUB 30500:CENTER22,"MAPDISK EINLEGEN":KEYBOARD 6510 ADRLOD 40960,TW$(TW),MF 6530 IF QF=CD OR MF=CD THEN GOSUB 30500:CENTER22,"CITYDISK EINLEGEN":KEYBOARD 6535 IF TW>19 THEN T=TW-20:GOTO 6539 6536 T=TW 6539 OPEN 1,CD,15:OPEN 2,CD,2,"#":PRINT#1,"U1 2 0 35 16";:PRINT#1,"B-P 2 255"; 6540 GET#2,A$:CLOSE 1:CLOSE 2:IF A$="2" AND TW<20 THEN 6545 6542 IF A$="3" AND TW>19 THEN 6545 6543 GOSUB 30500:CENTER22,"FALSCHE DISKETTE !":KEYBOARD:GOTO 6539 6545 BLWRITE 40960,30,TR(T),SE(T),CD 6550 RETURN 7000 REM ------------------------------ 7002 REM STATISTIK 7005 REM ------------------------------ 7010 HE$="STATISTIK AUSWERTUNG":FO$=" " 7020 GOSUB 40000:GOSUB 45000 7050 FOR TW=0 TO 39 7055 AT 1,19,H5$:AT 1,19,TW$(TW) 7060 GOSUB 580 :REM LADEN DER STADT 7070 VA=16:FOR I=15 TO 0STEP-1 7080 IF PX(I)>127 THEN VA=I 7090 NEXT 7100 AP=AP+VA 7110 IF N(7)<>255 THEN AS=AS+1 7115 BY=BY+BU 7120 FOR LF=0 TO VA-1 7130 IF (TY(LF) AND 128)=0 THEN 7160 7135 IF HD(LF)=14 THEN 7150 7140 AH=AH+1 7150 AH(HD(LF))=AH(HD(LF))+1 7160 A=TY(LF) AND 127:SP(A)=SP(A)+1 7170 AW=AW+A(LF)+1 7180 NEXT LF 7190 NUMSET AH(0),9,4,AH(1),21,4 7200 NUMSET AH(2),9,5,AH(3),21,5 7210 NUMSET AH(4),9,6,AH(5),21,6 7220 NUMSET AH(6),9,7,AH(8),21,7 7230 NUMSET AH(9),9,8,AH(10),21,8 7240 NUMSET AH(11),9,9,AH(12),21,9 7250 NUMSET AH(13),9,10,AH(15),21,10 7260 NUMSET AP,24,12,AH,24,13 7270 NUMSET AS,24,14,AW,24,15,BY,24,17 7300 NEXT TW 7400 CENTER 22,"AUSDRUCK (J/N) ? ":MENU"JN",A$,1 7410 IF A$="N" THEN RETURN 8000 OPEN 1,4:CMD1 8010 PRINT CHR$(27)CHR$(64); 8020 PRINT "S T A T I S T I K":PRINT CHR$(27)CHR$(15)H6$ 8030 PRINT "ANZAHL DER PERSONEN :"AP" ="INT(100/640*AP)"%" 8040 PRINT "ANZAHL DER HAENDLER :"AH 8050 PRINT "ANZAHL DER STATUEN :"AS 8060 PRINT "ANZAHL DER TEXTSCREENS:"AW 8070 PRINT "BYTES TEXT :"INT(BY/1024)"K ("BY") ="; 8075 PRINT INT(100/122880*BY)"%" 8100 PRINT H6$ 8110 PRINT HP$(0)TB$"15"AH(0)TB$"20"HP$(1)TB$"35"AH(1) 8120 PRINT HP$(2)TB$"15"AH(2)TB$"20"HP$(3)TB$"35"AH(3) 8130 PRINT HP$(4)TB$"15"AH(4)TB$"20"HP$(5)TB$"35"AH(5) 8140 PRINT HP$(6)TB$"15"AH(6)TB$"20"HP$(8)TB$"35"AH(8) 8150 PRINT HP$(9)TB$"15"AH(9)TB$"20"HP$(10)TB$"35"AH(10) 8160 PRINT HP$(11)TB$"15"AH(11)TB$"20"HP$(12)TB$"35"AH(12) 8170 PRINT HP$(13)TB$"15"AH(13)TB$"20"HP$(15)TB$"35"AH(15) 8180 PRINT H6$ 8190 FOR I=0 TO 15 8200 PRINT PS$(I)TB$"15"SP(I)TB$"20"PS$(I+16)TB$"35"SP(I+16) 8210 NEXT:PRINT H6$ 8500 PRINT#1:CLOSE 1:RETURN 19999 END 20000 DIM PX(15),PY(15),TY(15),PD(15) 20010 DIM PA(15),LT(15),HT(15),LZ(15) 20020 DIM HZ(15),LA(15),AH(15) 20030 DIM HA(15),A1(15),A2(15),A3(15) 20040 DIM AD(22),PN$(15),HD(15) 20050 DIM AN$(15,4),MW(15),TW$(39) 20060 DIM TR(19),SE(19),HD$(15),HP$(15) 20070 DIM H$(15),A(15),B(15),FT$(15,4) 20080 DIM PS$(31),N(20),CS$(63),CL$(63) 20085 DIM SP(31),WA$(15,15) 20090 RESTORE 20100 FOR I=1 TO 22:READAD(I) 20110 AD(I)=AD(I)+8704:NEXT 20120 FOR I=0 TO 39:READTW$(I):NEXT 20130 FOR I=0 TO 19:READTR(I),SE(I):NEXT 20140 FOR I=0 TO 15:READHD$(I):NEXT 20150 FOR I=0 TO 15:READHP$(I):NEXT 20160 FOR I=0 TO 31:READPS$(I):NEXT 20170 FOR I=0 TO 63:READCS$(I):NEXT 20180 FOR I=0 TO 63:READCL$(I):NEXT 20185 FOR I=0 TO 15 :READA 20186 FOR K=0 TO A:READ WA$(I,K):NEXT:NEXT 20190 TN$="1234567890 " 20200 T$=TN$+"ABCDEFGHIJKLMNOPQRSTUVWXYZ!#$%&'()+-\*@:;=,./<>?[]" 20210 CR=1:BF=3072:WZ=255:FZ=1:TT$="20" 20220 CR$=CHR$(13):SC=0:FR=1:WZ$="00" 20230 FOR I=0 TO 15:PX(I)=128:PY(I)=128:NEXT 20280 TB$=CHR$(16): 20290 H6$="££££££££££££££££££££££££££££££££££££££££":H6$=H6$+H6$+H6$ 20300 H6$=H6$+LEFT$(H6$,16) 20310 H5$=" " 20320 F1=0:QF=8:CD=8:MF=8:DD=8 20330 FOR I=1 TO 21*5:AL$=L$+" ":NEXT 20900 RETURN 21000 DATA 36352,36364,36378,36386,36400,36416,36432,36448,36464,36480,36704 21010 DATA 36720,36736,36752,36768,36784,36800,36816,36832,36848,36853,36858 21020 REM ----------- 21030 REM STADTNAMEN 21040 REM ----------- 21050 DATA AKUJI,TAKE DO,UKOSA,TOKORO CHIAN,WATASHIBUNE,HAYAGAKE-DO,FUJOKAWA 21060 DATA OCHI-NA,KOKUSO-DO,NAMAZAKI,UBAMACHI,SAMUSA-TOSHI,FUKO-MURA,YUGURE 21070 DATA TSUSHO-JO,HAYASHI-TORI,YAMABITO,SAWA-BYOKI,MAWARI-MICHI,FUNATABI 21080 REM ----------- 21090 DATA TEIJNASHI,MAHO-TORI,CHUIBUKAI,SHIN-EN,MINAMI-KADO,YOGAN-HAIKYO 21100 DATA MIZU-DO,NIKKOYOKU,HINODE-TORI,JANGURU,KAMI-NO-MURA,TAIYO-HOKA 21110 DATA ATSAMUI,ARFNI-DO,ATATAKAMI,KOKORO-KAZAN,KOKORO-HI,HI-DO,MOKUTEKI 21120 DATA ULTI-TORI 21130 REM ------------ 21140 REM TRACK/SECTOR 21150 REM ------------ 21160 DATA 1,0,2,9,3,18,5,6,6,15,8,3,9,12,11,0,12,9,13,18,15,6,16,15,18,3,19,14 21170 DATA 21,6,22,17,24,9,26,2,27,14,29,8 21180 REM ---------------------- 21190 REM HAENDLER BEZEICHNUNGEN 21200 REM ---------------------- 21210 DATA WEAPONS,ARMOURS,FOOD,SKILLS,G.STORE,BATH,REPAIRS,LIQUORS,CURSES 21220 DATA PFERDE,HENCHMAN,OCEAN SERVICE,DOCTOR,TAVERN,RIDDLE,MASTER 21230 REM ---------------------- 21240 DATA WAFFEN,RUESTUNGEN,NAHRUNG,WAFFENSCHULE,LADEN,BADEHAUS,REPARATUREN 21250 DATA GETRAENKE,BESCHWOERER,PFERDE,SKLAVEN,SCHIFFE,DOKTOR,TAVERNE,RAETSEL 21260 DATA SENSEI 21270 REM ------------------ 21280 REM PERSONENTYPENNAMEN 21290 REM ------------------ 21300 DATA FLEDERMAUS,SPINNE,OGER,VIPER,KOPF,UBA,BEHEMOTH,MAGMAN,ETWAS 21310 DATA PHILOSOPH,WACHE,GEISHA,BUSHI,NINJA,PRIESTER,HAENDLER,VAMPIR 21320 DATA WASSER SPINNE,RIESE,SCHLANGE,KOPF,SHIKOME,BEHEMOTH,AUGEN,BUDDHA 21330 DATA SHUGENJA,WACHE,FRAU,PILGER,MOERDER,MOENCH,BAUER 21340 REM ------------------ 21350 REM ZEICHENNAMEN STADT 21360 REM ------------------ 21370 DATA WASSER,LAND,STEINFLIESEN,BODEN GRUEN,TEPPICH1,TEPPICH 2,HOLZBODEN 21380 DATA KACHELBODEN,WAND,MAUER,SAEULE,SHOIJWAND,SHOIJWAND,SHOIJTUER 21390 DATA SHOIJTUER,BAUM,BUSCH,LAMPE,TEPPICH 3,VASE,KL.BUDDHA,BUDDHA,BUDDHA 21400 DATA BUDDHA 21410 DATA BUDDHA,SCROLL,WAFFE,RUESTUNG,DRUGS,MAG.FELD,SCHIFF,GOLD,SCHALE,FEUER 21420 DATA SPACE L,SPACE R,SPACE,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,R,S,T,U,V,W,Y 21430 DATA Z,WECHSELZEICHEN,VOID,SHADE 21440 REM ----------------- 21450 REM ZEICHENNAMENLAND 21460 REM ----------------- 21470 DATA WASSER,BERGE,LAND,HUEGEL,WINTERLAND,WINTERBERGE,SUMPF,BAUM,PALME 21480 DATA BRUECKE,BRUECKE,FUJI,FUJI,FUJI,FUJI,WASSER,WASSER,WASSER,FEUER 21490 DATA FEUER,FEUER,FEUER,FEUER,FEUER,FEUER,FEUER,FEUER,WALD,WALD,WALD,WALD 21500 DATA WALD,WALD,WALD,WALD,WALD,PALME,PASS,PASS,PASS,PASS,PASS,PASS 21510 DATA SCHIFF,SCHAEDEL,BURG,BURG,BURG,BURG,FUJI,FUJI,SCHLOSS,SCHLOSS 21520 DATA SCHREIN,SCHULE,STEED,HERMIT,STADT,STADT,DORF,GATE,GATE,VOID,SHADE 21600 REM ---------------------- 21605 REM WARENNAMEN 21610 REM ---------------------- 21620 DATA 15,TANTO,KAMA,SHURIKEN,BO-STAB,NUNCHAKU,KATANA,HAN-KYU,SASUMATA 21630 DATA YARI,DAI-KYU,ONO,NAGAMAKI,NO-DACHI,JIN-KATANA,JIN-NO-DACHI 21640 DATA JIN-SHURIKEN 21650 DATA 7,BAUERNKLUFT,MOENCHSROBE,ASHIGARU,SAMURAI,STAHLRUESTUNG,ROBE BUDDHAS 21660 DATA ASHIGARU-MAHO,MEISTER SAMURAI 21670 DATA 5,PORTION REIS,FISCHE,BAMBUS,SOJABOHNEN,FRUECHTE,HONIG 21680 DATA 12,TANTO,KAMA,SHURIKEN,BO-STAB,NUNCHAKU,KATANA,HAN-KYU,SASUMATA 21690 DATA YARI,DAI-KYU,ONO,NAGAMAKI,NO-DACHI 21700 DATA 5,SACK,SCHLUESSEL,WEIHRAUCH,UHR,WACHHUND,TOR-SYMBOL 21710 DATA 3,REINIGUNG,MASSAGE,NACHT ZUZWEIT,ZEREMONIE 21720 DATA 2,WAFFE,RUESTUNG,GALEERE 21725 DATA 0,X 21730 DATA 3,FREI SEIN,SPRECHEN,LESEN,HEILEN 21740 DATA 0,PFERD PFLEGEN 21750 DATA 0,SKLAVE 21760 DATA 0,GALEERE 21770 DATA 4,HEILEN,KRAEFTIGEN,GENESEN,VERJUENGEN,ALTERN 21780 DATA 3,ZIMMER,ZIMMER+BAD,ZIMMER+FRUEHST.,ZIMMER+WEIB 21790 DATA 0,X 21795 DATA 4,AUSDAUER,SCHWIMMEN,VERSTECKEN,INFRAVISION,ZAUBERN 29997 REM ------------------------- 29998 REM FLOPPY INSTALL 29999 REM ------------------------- 30000 HE$="FLOPPY INSTALLATION" 30010 FO$=" " 30020 GOSUB 40000 :REM MAINSCREEN 30030 BOX 10,7,29,12 30040 AT 11,8,"QUELLFILES:";QF 30045 AT 11,9,MAPFILES :";MF 30047 AT 11,10,"CITYDISK :";CD 30048 AT 11,11,"DATADISK :";DD 30050 FETCH 23,8,2,QF 30055 FETCH 23,9,2,MF 30056 FETCH 23,10,2,CD 30057 FETCH 23,11,2,DD 30060 IF QF=10 OR MF=10OR CD=10 THEN 30070 30065 RETURN 30070 GOSUB 30500:CENTER22,"NUR EINE FLOPPY (8) EINSCHALTEN" 30080 KEYBOARD 30090 OPEN 1,8,15:PRINT#1,"M-W";CHR$(119)CHR$(0)CHR$(2)CHR$(42)CHR$(74) 30095 CLOSE 1:RETURN 30100 REM ---- NR.FRAGENSTRING ---- 30110 X$="":Z=0:FOR I=0 TO 6 30120 IF (PA(LF)AND2)=0 THEN X$=X$+" ":GOTO 30170 30160 X$=X$+"X" 30170 NEXT:RETURN 30200 REM ---- BF AUSGEBEN --- 30210 AT 13,18," ":IF BF<>ABS(BF) THEN POKE 199,1 30220 NUMSETBF,13,18:POKE 199,0 30230 RETURN 30300 REM ---- CHECKDRIVE ---- 30305 C=0:IF PF=0 THEN GOSUB 30500 30310 OPEN 1,DV,15:CLOSE 1 30320 IF ST<>-128 THEN RETURN 30330 CENTER22,"DEVICE NOT PRESENT" 30340 KEYBOARD:C=1:RETURN 30400 REM ---- OPEN FILE---- 30405 IF PF=0 THEN GOSUB 30500 30410 OPEN 1,DV,2,A$:CLOSE 1 30420 OPEN 3,DV,15:INPUT#3,A:CLOSE 3 30430 IF A=0 THEN OPEN 1,DV,2,A$:RETURN 30435 IF A=62 THEN GOSUB 30500:CENTER22,"DISKETTE WENDEN":KEYBOARD:GOTO 30405 30440 CENTER22,"DISK ERROR":KEYBOARD 30450 GOTO 30410 30500 REM ---- UNTERES FELD LOESCHEN 30520 AT 1,22," " 30530 RETURN 30600 REM ---- BYTES FUER PERSON BER. 30610 A1=0:A2=0:A3=0:ARRAY H$(LF),0,A1:FOR I=1 TO A(LF):A2=A2+LEN(FT$(LF,I)) 30620 ARRAY AN$(LF,I),0,A:A3=A3+A:NEXT:A=A1+A2+A3:RETURN 39000 END 39997 REM ---------------------------- 39998 REM MAINSCREEN 39999 REM ---------------------------- 40000 PRINT "" 40010 BOX 0,0,39,2,1,0,1 40020 BOX 0,21,39,23,1,0,1 40180 CENTER1,HE$ 40181 CENTER22,FO$ 40190 FILL 0,3,39,20,32,1 40399 RETURN 40400 REM -------------------------- 40410 REM HELPSCREEN 40420 REM -------------------------- 40430 HE$="HELPSCREEN":FO$=" " 40440 GOSUB 40000 :REM MAINSCREEN 40450 BOX 5,3,34,19 40460 AT 6,4," LADEN DER DATEN" 40470 AT 6,5," SPEICHERN DER DATEN" 40480 AT 6,6," ALLE ST@DTE TRACKEN" 40490 AT 6,7," MEMORY" 40500 AT 6,8," HEADER EINGEBEN" 40510 AT 6,9," PERSONENDATEN" 40520 AT 6,10," TEXTDATEN" 40540 AT 6,11," FLOPPY INSTALL" 40550 AT 6,12," GOTO LFD" 40560 AT 6,13,"<+> LFD +1" 40570 AT 6,14,"<-> LFD -1" 40576 AT 6,16," STATISTIK" 40580 AT 6,18,"<_> EXIT" 40800 KEYBOARD:RETURN 40900 REM -------------------------- 40910 REM HEADERSCREEN 40920 REM -------------------------- 41000 HE$="CITY HEADER":FO$="" 41001 GOSUB 40000 :REM MAINSCREEN 41005 BOX 0,20,39,23,1,0,1:CENTER21,"DIREC: S=0 ,W=1" 41007 CENTER22,"SHAPE: Q=192,S=194,X=196,W=198" 41020 AT 0,4," STADTNAME:" 41025 PRINT " REGION :" 41030 PRINT " POSITION PLAYER /" 41035 PRINT " POSITION GATE / GATE:" 41040 PRINT " POSITION SHIP /" 41055 PRINT " POSITION SLEEP /" 41060 PRINT " POSITION BUDDHA /" 41070 PRINT " POSITION CHAR /" 41075 PRINT " ZEICHEN: ANZAHL : DIREC :" 41077 PRINT " NUMMER AUS WARENLST. : TYPART:" 41080 PRINT " FUELLZ.: WECHSELZ.: WZBITS:" 41090 PRINT " SPEED : SHAPE : WZCOL :" 41110 REM BOX 0,3,39,16 41200 REM --------------------------- 41210 REM AUSFUELLEN DER MASKE 1 41220 REM --------------------------- 41230 AT 12,4,SN$:AT 12,5,RN$ 41240 NUMSET XP,18,6,YP,22,6 41250 NUMSET N(0),18,7,N(1),22,7,N(2),33,7 41260 NUMSET N(3),18,8,N(4),22,8 41270 NUMSET N(5),18,9,N(6),22,9 41280 NUMSET N(7),18,10,N(8),22,10 41290 NUMSET N(9),18,11,N(10),22,11 41300 NUMSET N(11),10,12 41310 NUMSET N(12),24,12 41320 NUMSET N(13),35,12 41340 NUMSET N(15),24,13 41350 NUMSET FZ ,10,14 41360 NUMSET WZ ,24,14 41370 NUMSET N(16),35,13 41380 NUMSET N(17),10,15 41390 NUMSET N(18),24,15 41400 NUMSET N(19),35,15 41410 AT 35,14,WZ$ 41890 GOTO 120 41900 REM --------------------------- 41910 REM PERSONSCREEN 41920 REM --------------------------- 42000 HE$=" LFD: PERSONENDATEN " 42001 FO$=" " 42010 GOSUB 40000 :REM MAINSCREEN 42020 AT 0,4," NAME:" 42030 PRINT " POSITION PLAYER /" 42040 PRINT " TYP: (" 42050 PRINT " H@NDLER : BILD:" 42060 PRINT " LISTANFANG: LISTENDE:" 42065 PRINT " O¤P" 42070 PRINT " ANSPECHART : INFERIOR´ ª A.1:" 42080 PRINT " PIOUS´ ª A.2:" 42090 PRINT " NORMAL´ ª A.3:" 42100 PRINT " FRIENDLY´ ª" 42110 PRINT " OFFER GOLD´ ª" 42120 PRINT " SUPERIOR´ ª" 42130 PRINT " THREATEN´ ª" 42135 PRINT " L£º" 42137 PRINT " AUF ZEICHEN:" 42138 BOX 1,3,38,19 42150 REM -------------------------- 42160 REM AUSFUELLEN DER MASKE 2 42170 REM -------------------------- 42180 AT 6,1," ":NUMSETLF,6,1 42200 AT 7,4," ":AT 7,4,PN$(LF):A=INT(PX(LF)/2):B=INT(PY(LF)/2) 42210 AT 18,5," ":AT 21,5," ":NUMSET A,18,5,B,21,5:A=TY(LF) AND 63 42215 AT 6,6," ":NUMSETA,6,6:AT 11,7," " 42217 AT 11,6," ":AT 11,6,PS$(A)")" 42220 IF (TY(LF) AND 128)=128 THEN :AT 11,7,HD$(HD(LF)):GOTO 42235 42230 AT 11,7,"-------------" 42235 IF (A2(LF) AND 128)=128 THEN :AT 32,7,"NEIN":GOTO 42240 42237 AT 32,7,"JA " 42240 A=(A3(LF) AND 240)/16:AT 13,8," ":AT 27,8," " 42250 NUMSET A,13,8,MW(LF),27,8 42260 GOSUB 30100: REM X$ ERSTELLEN 42320 WOUTP 27,10,27,16,X$ 42325 A1=A1(LF):A2=A2(LF) AND 15:A3=A3(LF) AND 15:NUMSET A1,34,10,A2,34,11,A3,34,12 42327 AT 14,18," " 42330 IF (PD(LF) AND 128)=128 THEN A=PD(LF) AND 63:NUMSETA,14,18:GOTO 42900 42340 AT 14,18,"--" 42900 GOTO 120 42910 REM ---------------------------- 42915 REM SCREEN 3 42920 REM ---------------------------- 43000 HE$=" LFD: TEXTDATEN " 43001 FO$=" " 43010 GOSUB 40000 :REM MAINSCREEN 43020 BOX 16,3,38,9 43030 AT 2,5,"HAUPTTEXT" 43040 BOX 16,9,38,15 43050 AT 16,9,"«":AT 38,9,"³" 43055 AT 2,12,"ANTWORT AUF" 43060 AT 2,14,"FRAGE" 43160 AT 2,16,"FRG 1: FRG 2:" 43170 AT 2,17,"FRG 3: FRG 4:" 43180 AT 2,18,"BYTES FREE:" 43200 REM --------------------------- 43210 REM AUSFUELLEN DER MASKE 3 43220 REM --------------------------- 43230 WOUTP 17,4,37,8,H$(LF) 43240 WOUTP 17,10,37,14,AN$(LF,FR):AT 8,16," ":AT 8,16,FT$(LF,1) 43250 AT 26,16," ":AT 26,16,FT$(LF,2) 43260 AT 8,17," ":AT 8,17,FT$(LF,3) 43265 AT 26,17," ":AT 26,17,FT$(LF,4) 43270 AT 6,1," ":NUMSETFR,8,14,LF,6,1:GOSUB 30200 43280 GOTO 120 44000 REM --------------------------- 44010 REM SCREEN 4 44020 REM --------------------------- 44030 HE$="MEMORY":FO$=" " 44040 GOSUB 40000 :REM MAINSCREEN 44050 BOX 1,3,38,6 44060 BOX 1,7,38,11 44070 AT 2,8,"ANZ.H@NDL :" 44080 AT 2,9,"B. FREE :" 44090 AT 2,10,"B. USED :" 44180 RETURN 45000 REM --------------------------- 45010 REM MASKE5 45020 REM --------------------------- 45030 AT 1,4,"WAFFEN : R]STUNG:" 45040 PRINT " NAHRUNG: SKILLS :" 45050 PRINT " LADEN : BAD :" 45060 PRINT " REPAIRS: FLUCH :" 45070 PRINT " PFERDE : SKLAVEN:" 45080 PRINT " SCHIFFE: HEILER :" 45090 PRINT " TAVERNE: SENSEI :" 45100 PRINT 45110 PRINT " ANZAHL DER PERSONEN :" 45120 PRINT " ANZAHL DER H@NDLER :" 45130 PRINT " ANZAHL DER STATUEN :" 45140 PRINT " ANZAHL DER TEXTSCREENS:" 45150 PRINT 45160 PRINT " BYTES TEXT :" 45900 RETURN 50000 REM ------------------------- 50010 REM PERSONPRINT DATEN 50020 REM ------------------------- 50022 BOX 10,7,29,12,1,0,1 50025 AT 11,9, "PRINTING " 50026 AT 11,10,TW$(TW)+"-DATEN" 50030 OPEN 1,4:CMD1 50040 PRINT CHR$(27)CHR$(64); 50050 PRINT CHR$(27)"C"CHR$(69); 50060 PRINT "STADT: "TW;"("TW$(TW)")" 50070 PRINT CHR$(27)CHR$(15)H6$ 50080 PRINT "REGION"TB$TT$" "RN$ 50090 PRINT "POSITION PLAYER"TB$TT$XP"/"YP 50100 PRINT "FUELLZEICHEN"TB$TT$" "CS$(FZ) 50110 PRINT "WECHSELZEICHEN"TB$TT$; 50120 IF WZ=255 THEN PRINT " KEINS" 50130 IF WZ<>255 THEN PRINT " "CL$(WZ) 50140 PRINT "FARBE:"TB$TT$;N(19) 50150 PRINT "BIT:"TB$TT$" "WZ$:PRINT "TYPART:"TB$TT$; 50160 IF N(16)=255 THEN PRINT " NIEMAND" 50170 IF N(16)=128 THEN PRINT " MENSCHEN" 50180 IF N(16)=192 THEN PRINT " ALLE" 50190 IF N(16)=160 THEN PRINT " MONSTER" 50200 IF N(16)<32 THEN PRINT " "PS$(N(16)) 50210 PRINT "GATE"TB$TT$N(0)"/"N(1) 50220 PRINT "NR."TB$TT$N(2) 50230 PRINT "SHIP"TB$TT$N(3)"/"N(4) 50240 PRINT "SLEEP"TB$TT$N(5)"/"N(6) 50250 PRINT "BUDDHA"TB$TT$N(7)"/"N(8) 50260 PRINT "CHAR"TB$TT$N(9)"/"N(10) 50270 PRINT "NR."TB$TT$N(11) 50280 PRINT "ANZ"TB$TT$N(12) 50290 PRINT "DIRET."TB$TT$N(13) 50300 PRINT "WARE"TB$TT$N(15) 50310 PRINT "SHAPE"TB$TT$" "; 50320 IF N(18)=192 THEN PRINT "UP" 50330 IF N(18)=194 THEN PRINT "DOWN" 50340 IF N(18)=196 THEN PRINT "LEFT" 50350 IF N(18)=198 THEN PRINT "RIGHT" 50360 PRINT "SPEED:"TB$TT$N(17) 50370 PRINT H6$ 50380 VA=16:FOR I=15 TO 0STEP-1 50390 IF PX(I)>127 THEN VA=I 50400 NEXT:AH=0 50410 PRINT "NR"TB$"04";"NAME"TB$"21";"X/Y POS TYP"TB$"43";"HAENDLER"; 50420 PRINT TB$"58";"WARE"TB$"65";"ZEICHEN"TB$"80";"UFNFGUB";TB$"90";"FRAGEN":PRINT 50430 FOR LF=0 TO VA-1 50440 PRINT LF;TB$"04"PN$(LF);TB$"20"; 50450 PRINT PX(LF)/2;"/";PY(LF)/2; 50460 PRINT TB$"30";:A=TY(LF) AND 128 50470 PRINT PS$(TY(LF) AND 127);TB$"43"; 50480 IF A=128 THEN PRINT HP$(HD(LF));:AH=AH+1 50490 PRINT TB$"57";:IF A<>128 THEN 50520 50500 A=(A3(LF) AND 240)/16:B=MW(LF) 50510 PRINT A"-"A+(B-1); 50520 PRINT TB$"65"; 50530 A=PD(LF) AND 192 50540 IF A=192 THEN PRINT CS$(PD(LF) AND 63); 50550 PRINT TB$"80";:GOSUB 50640:PRINT X$; 50560 PRINT TB$"90";:FOR I=1 TO A(LF) 50570 IF FT$(LF,I)="X" THEN PRINT "NEIN ";:NEXT:PRINT:GOTO 50590 50580 PRINT FT$(LF,I)" ";:NEXT:PRINT 50590 NEXTLF:PRINT H6$ 50600 PRINT TB$"57";"S T A T I S T I K":PRINT:PRINT 50610 PRINT "ANZAHL DER HAENDLER:"AH 50620 PRINT "FREIE BYTES :"BF:PRINT:GOSUB 50800 50630 PRINT CHR$(12):PRINT#1:CLOSE 1:RETURN 50640 REM ---- NR.FRAGENSTRING ---- 50650 X$="":Z=0:FOR II=0 TO 6 50660 IF (PA(LF) AND 2I)=0 THEN 50710 50670 Z=Z+1:IF Z=1 THEN A=A1(LF) 50680 IF Z=2 THEN A=A2(LF) AND 127 50690 IF Z=3 THEN A=A3(LF) AND 15 50700 X$=X$+RIGHT$(STR$(A),1):NEXT:RETURN 50710 X$=X$+".":NEXT:RETURN 50720 PRINT#1:CLOSE 1:RETURN 50800 FOR LF=0 TO VA-1 50810 IF (TY(LF) AND 128)=0 THEN 50860 50820 A1=(A3(LF) AND 240)/16 50830 A2=MW(LF):PRINT HP$(HD(LF))TB$"14";:IF HD(LF)=14 THEN PRINT MW(LF):GOTO 50860 50840 FOR I=A1 TO A1+A2-1 50845 IF I=(A1+A2-1) THEN PRINT WA$(HD(LF),I);:NEXTI:PRINT:GOTO 50860 50850 PRINT WA$(HD(LF),I)",";:NEXT I:PRINT 50860 NEXTLF:RETURN 51000 REM ------------------------- 51010 REM PERSONPRINT TEXTE 51020 REM ------------------------- 51022 BOX 10,7,29,13,1,0,1 51025 AT 11,9, "PRINTING " 51026 AT 11,10,TW$(TW)+"-TEXTE" 51030 OPEN 1,4:CMD1 51040 PRINT CHR$(27)CHR$(64); 51050 PRINT "STADT: "TW;"("TW$(TW)")" 51060 PRINT CHR$(27)"S"CHR$(1); 51070 PRINT CHR$(27)"A"CHR$(5); 51080 PRINT CHR$(27)"C"CHR$(0)CHR$(11); 51090 PRINT CHR$(27)CHR$(15)H6$ 51100 VA=16:FOR I=15 TO 0STEP-1 51110 IF PX(I)>127 THEN VA=I 51120 NEXT 51130 FOR LF=0 TO VA-1 51140 PRINT STR$(LF)TB$"07"PN$(LF)":" 51150 FT$(LF,0)="HAUPTTEXT" 51160 PRINT TB$"04"; 51170 FOR KK=0 TO A(LF) 51180 IF FT$(LF,KK)="X" THEN FT$(LF,KK)="NEIN" 51190 PRINT " ";FT$(LF,KK);LEFT$(AL$,14-LEN(FT$(LF,KK)));" "; 51200 NEXTKK:PRINT 51210 PRINT TB$"04";:FOR KK=0 TO A(LF):PRINT "°ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ® ";:NEXT:PRINT 51220 AN$(LF,0)=H$(LF) 51230 FOR KK=0 TO A(LF) 51240 AN$(LF,KK)=AN$(LF,KK)+LEFT$(AL$,105-LEN(AN$(LF,KK))):NEXT 51250 PRINT TB$"04";:FOR KK=0 TO A(LF) 51260 PRINT "Ý"LEFT$(AN$(LF,KK),21)"Ý ";:NEXT 51270 PRINT:PRINT TB$"04";:FOR KK=0 TO A(LF) 51280 PRINT "Ý"MID$(AN$(LF,KK),22,21)"Ý ";:NEXT 51290 PRINT:PRINT TB$"04";:FOR KK=0 TO A(LF) 51300 PRINT "Ý"MID$(AN$(LF,KK),43,21)"Ý ";:NEXT 51310 PRINT:PRINT TB$"04";:FOR KK=0 TO A(LF) 51320 PRINT "Ý"MID$(AN$(LF,KK),64,21)"Ý ";:NEXT 51330 PRINT:PRINT TB$"04";:FOR KK=0 TO A(LF) 51340 PRINT "Ý"MID$(AN$(LF,KK),85,21)"Ý ";:NEXT:PRINT 51350 PRINT TB$"04";:FOR KK=0 TO A(LF):PRINT "ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ½ ";:NEXT:PRINT 51360 PRINT 51370 NEXT LF 51380 IF VA<16 THEN PRINT CHR$(12) 51385 FOR I=1 TO 8:PRINT:NEXT 51390 PRINT#1 51400 CLOSE 1:RETURN 52000 REM ------------------------ 52005 REM PRINT 52010 REM ------------------------ 52020 HE$="PRINTMENU":FO$=" " 52030 GOSUB 40000 52040 BOX 10,7,29,13 52050 AT 11,9, "VON STADT " 52055 AT 11,10,"BIS STADT " 52060 AT 11,11,"DATEN/TEXTE:" 52070 FETCH 26,9,2,T1 52075 FETCH 26,10,2,T2 52080 AT 26,11:MENU "DT",Z$,1 52100 IF Z$="D" THEN FOR TW=T1 TO T2:GOSUB 550:GOSUB 50000:NEXT:RETURN 52110 IF Z$="T" THEN FOR TW=T1 TO T2:GOSUB 550:GOSUB 51000:NEXT:RETURN 60000 REM -------------------------- 60005 REM ALLE STAEDTE TRACKEN 60010 REM -------------------------- 60015 HE$="ALLE ST@DTE TRACKEN" 60030 FO$=" " 60040 GOSUB 40000 :REM MAINSCREEN 60050 BOX 10,7,29,10 60060 AT 11,8,"VN STADT:0" 60070 AT 11,9,"BIS STADT:39" 60080 FETCH 21,8,2,UG 60090 FETCH 21,9,2,OG 60100 IF OG39 OR OG>39OR UG<0OR OG<0 THEN RETURN 60120 FOR TW=UG TO OG:PF=1 60125 GOSUB 30500 :REM SCR.CLR 60127 CENTER 22,TW$(TW) 60130 GOSUB 550 :REM LADEN 60140 GOSUB 6000 :REM MEMORY 60150 NEXT 60160 PF=0:RETURN