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
|
|
|