home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh3x
/
sh30b.d64
/
kern.bas
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
6KB
|
242 lines
100 REM KRIEG DER KERNE
101 REM
102 REM NACH SPEKTRUM DER WISSENSCHAFT
103 REM 8/84
104 REM
105 REM MARTIN ROGGE, MOELLENHOLT 24
106 REM 2300 KIEL 1
107 REM 11.06.87
108 :
109 GOTO1000
110 :
150 A$=""
160 LL=5:GOTO200
170 LL=16
200 PRINTA$;"[164][157]";
210 GETB$:IFB$=""GOTO210
215 B=ASC(B$):IFB>95ORB=34GOTO210
220 IFB=13THENPRINT" ":RETURN
230 IFB<>20GOTO260
240 IFLEN(A$)<1GOTO210
250 A$=LEFT$(A$,LEN(A$)-1):PRINT" [157][157][164][157]";:GOTO210
260 IFB<32GOTO210
270 IFLEN(A$)<LLTHENA$=A$+B$:PRINTB$"[164][157]";:GOTO210
280 A$=LEFT$(A$,LEN(A$)-1)+B$:PRINT"[157]"B$;:GOTO210
290 :
1000 DATA DAT,MOV,ADD,SUB,JMP,JMZ,JMN,DJN,DJZ,CMP,SPL
1200 POKE53280,0:POKE53281,0
1210 DIM F$(1,255),L(1),N$(1),W(2),B(4)
1220 FORI=0TO10:READB$(I):NEXT:L(0)=-1:L(1)=-1
1230 F(0)=28928:F(1)=30208:BA=7*4096:KF=31488
1240 :
1500 PRINT"[158][147]"," "
1510 PRINT," KRIEG DER KERNE "
1520 PRINT," "
1530 PRINT,"1 - EDITOR"
1540 PRINT,"2 - KAEMPFER LADEN"
1550 PRINT,"3 - KAEMPFER SPEICHERN"
1560 PRINT,"4 - KAMPF STARTEN"
1562 PRINT,"5 - SPEICHER LISTEN"
1565 PRINT,"6 - ENDE"
1570 GETA$:IFA$<"1"ORA$>"6"GOTO1570
1580 ONVAL(A$)GOTO8000,6000,7000,2000,9500
1590 :
1600 PRINT"[147]":END
1610 :
2000 PRINT"[147]KAEMPFER A: "N$(0)
2010 K=0:GOSUB3000:IFFGOTO2340
2100 PRINT"KAEMPFER B: "N$(1)
2110 K=1:GOSUB3000:IFFGOTO2340
2120 PRINT"WIEVIELE ZUEGE PRO KAMPF ? ";:A$="10000":GOSUB160:Z=VAL(A$)
2130 POKEBA+13,Z/256:POKEBA+12,Z-256*PEEK(BA+13)
2140 PRINT"WIEVIELE KAEMPFE ? ";:A$="1":GOSUB160:Y=VAL(A$)
2150 POKEBA+8,L(0):POKEBA+9,L(1):D=999-L(0)-L(1)
2160 W(0)=0:W(1)=0:W(2)=0
2170 FORI=1TOY:SYS26624
2175 FORJ=0TO7:POKEBA+J,0:NEXT
2180 X=INT(D*RND(1))+L(0)+1:POKE38913,X/256:POKE38912,X-256*PEEK(38913)
2190 A=USR(0):W(A)=W(A)+1
2200 NEXT
2205 POKE53280,11:GOSUB5540:POKE53280,0
2300 PRINT"[147]ERGEBNIS:"
2310 PRINT""N$(0):PRINT"[145]"SPC(18)W(1)
2320 PRINT""N$(1):PRINT"[145]"SPC(18)W(2)
2330 PRINT"UNENTSCHIEDEN "W(0)
2340 PRINT"":GOSUB5530:GOTO1500
2350 :
3000 IFL(K)<0THENPRINT"COMPILATION ERROR: KEIN QUELLCODE.":F=-1:RETURN
3005 F=0:FORI=0TOL(K)
3010 A$=F$(K,I):GOSUB4000:IFLEN(A$)<4GOTO3900
3030 B$=LEFT$(A$,3)
3040 FORJ=0TO10:IFB$=B$(J)THENX=J:J=12
3050 NEXT:IFJ<12THENF=-1:GOTO3900
3060 A$=MID$(A$,4):GOSUB4000
3070 ONXGOTO3400,3400,3400,3500,3600,3600,3800,3800,4200,3500
3080 GOSUB4700:IFFGOTO3900
3090 ZQ%=VO*ZA:ZZ%=0:AQ=0:AZ=0
3100 B(0)=XOR48ORK*64OR((X>0)AND128)
3110 B(1)=ZQ%-256*INT(ZQ%/256)
3120 B(2)=((ZQ%/256)AND15)ORAQ*64
3130 B(3)=ZZ%-256*INT(ZZ%/256)
3140 B(4)=((ZZ%/256)AND15)ORAZ*64
3150 FORJ=0TO4:POKEF(K)+256*J+I,B(J):NEXT
3160 NEXT:PRINT"COMPILATION COMPLETE, NO ERROR.":RETURN
3170 :
3400 GOSUB4600:IFFGOTO3900
3405 AQ=AA:ZQ%=VO*ZA
3410 GOSUB4800:IFFGOTO3900
3415 AZ=AA:ZZ%=VO*ZA:GOTO3100
3420 :
3500 GOSUB4800:IFFGOTO3900
3505 ZQ%=VO*ZA:ZZ%=0:AQ=AA:AZ=0:GOTO3100
3510 :
3600 GOSUB4800:IFFGOTO3900
3605 AQ=AA:ZQ%=VO*ZA
3610 GOSUB4600:IFFGOTO3900
3615 AZ=AA:ZZ%=VO*ZA:GOTO3100
3620 :
3800 GOSUB4800:IFFGOTO3900
3805 AQ=AA:ZQ%=VO*ZA
3810 GOSUB4800:IFFGOTO3900
3815 AZ=AA:ZZ%=VO*ZA:GOTO3100
3820 :
3900 X=I:I=L(K):NEXT:PRINT"COMPILATION ERROR IN LINE"X:F=-1:RETURN
3910 :
4000 IFLEFT$(A$,1)=" "THENA$=MID$(A$,2):GOTO4000
4010 RETURN
4020 :
4200 GOSUB4600:IFFGOTO3900
4205 AQ=AA:ZQ%=VO*ZA
4210 GOSUB4600:IFFGOTO3900
4215 AZ=AA:ZZ%=VO*ZA:GOTO3100
4220 :
4500 B$=LEFT$(A$,1):A$=MID$(A$,2)
4505 IFB$=" "ORB$=""THENM=-2:RETURN
4530 IFB$<"0"ORB$>"9"THENM=-1:RETURN
4540 M=VAL(B$):RETURN
4550 :
4600 AA=1:B$=LEFT$(A$,1):IFB$="#"THENAA=0:A$=MID$(A$,2)
4610 IFB$="@"THENAA=2:A$=MID$(A$,2)
4620 :
4700 VO=1:B$=LEFT$(A$,1):IFB$="-"THENVO=-1
4710 IFB$="+"ORB$="-"THENA$=MID$(A$,2)
4720 GOSUB4500:IFM<0ORM>9THENF=-1:RETURN
4730 ZA=M
4740 GOSUB4500:IFM=-2GOTO4770
4750 IFM<0ORM>9THENF=-1:RETURN
4760 ZA=10*ZA+M:GOTO4740
4770 IFZA>999THENF=-1
4780 RETURN
4790 :
4800 GOSUB4600:IFAA=0THENF=-1
4810 RETURN
4820 :
5000 PRINT"[147]KAEMPFER A ODER B ? ";
5010 GETA$:IFA$="A"THENK=0:GOTO5040
5020 IFA$<>"B"GOTO5010
5030 K=1
5040 PRINTA$:RETURN
5050 :
5500 F=0:INPUT#1,V$,W$,X$,Y$:IFVAL(V$)<9THENRETURN
5510 PRINT"DISK-ERROR:":F=-1
5520 PRINTV$":"W$":"X$":"Y$
5530 PRINT"<CR> DRUECKEN"
5540 GETA$:IFA$<>CHR$(13)GOTO5540
5550 RETURN
5560 :
6000 GOSUB5000 :REM LADEN
6010 PRINT"NAME: ";:A$="":GOSUB170:N$(K)=A$
6020 OPEN1,8,15:PRINT#1,"I0":GOSUB5500:IFFGOTO6900
6030 OPEN2,8,2,N$(K):GOSUB5500:IFFGOTO6900
6040 L(K)=-1
6050 L(K)=L(K)+1:INPUT#2,F$(K,L(K)):IFST=0GOTO6050
6060 GOSUB5500
6900 CLOSE2:CLOSE1:GOTO1500
6910 :
7000 GOSUB5000 :REM SPEICHERN
7020 OPEN1,8,15:PRINT#1,"I0":GOSUB5500:IFFGOTO6900
7025 PRINT"NAME: ";:A$=N$(K):GOSUB170:N$(K)=A$
7030 OPEN2,8,2,N$(K)+",S,W":GOSUB5500:IFFGOTO6900
7035 PRINT""N$(K)" WIRD GESPEICHERT."
7040 FORI=0TOL(K)
7050 PRINT#2,CHR$(34)F$(K,I):NEXT
7060 GOTO6060
7070 :
8000 GOSUB5000:EZ=0
8100 PRINT"[147]NAME: "N$(K):PRINT
8110 FORI=EZTOEZ+9:IFI>L(K)THENF$(K,I)=""
8120 PRINT""RIGHT$(" "+STR$(I),4)" [146] "F$(K,I)
8130 NEXT
8140 PRINT"S[146]CHREIBEN"
8150 PRINT"L[146]OESCHEN"
8160 PRINT"A[146]ENDERN"
8170 PRINT"D[146]RUCKEN"
8180 PRINT"U[146]MBENENNEN"
8190 PRINT"+/-"
8200 PRINT"E[146]NDE"
8210 GETA$:FORI=1TO8:IFA$=MID$("+-ESLADU",I,1)THENA=I:I=9
8220 NEXT:IFI<10GOTO8210
8230 ONAGOTO8300,8400,1500,8600,8800,9000,9200,9400
8240 :
8300 IFEZ<231THENEZ=EZ+10:GOTO8100
8310 GOTO8210
8320 :
8400 IFEZ>9THENEZ=EZ-10:GOTO8100
8410 GOTO8210
8420 :
8600 PRINT"SCHREIBEN AB ZEILE: ";:GOSUB150:AA=VAL(A$)
8610 IFAA<0ORAA>L(K)+1GOTO8100
8620 PRINT"[147]ABBRUCH DURCH EINE LEERZEILE.":LL=30
8630 IFL(K)>248GOTO8100
8635 PRINT""RIGHT$(" "+STR$(AA),4)" [146] ";
8640 A$="":GOSUB200:IFA$=""GOTO8100
8650 IFAA>L(K)THENF$(K,AA)=A$:AA=AA+1:L(K)=L(K)+1:GOTO8630
8660 FORI=L(K)TOAASTEP-1:F$(K,I+1)=F$(K,I):NEXT:L(K)=L(K)+1
8670 F$(K,AA)=A$:AA=AA+1:GOTO8630
8680 :
8800 PRINT"LOESCHEN VON ZEILE: ";:GOSUB150:AA=VAL(A$)
8810 PRINT" BIS ZEILE: ";:GOSUB150:BB=VAL(A$)
8820 IFBB<AAORAA<0ORAA>L(K)GOTO8100
8830 IFBB=>L(K)THENL(K)=AA-1:GOTO8100
8840 D=BB+1-AA:FORI=BB+1TOL(K):F$(K,I-D)=F$(K,I):NEXT
8850 L(K)=L(K)-D:GOTO8100
8860 :
9000 PRINT"AENDERN VON ZEILE: ";:GOSUB150:AA=VAL(A$)
9010 IFAA<EZORAA>EZ+9ORAA>L(K)GOTO8100
9020 PRINT""
9030 FORI=0TOAA-EZ:PRINT:NEXT
9040 PRINT"";:A$=F$(K,AA):LL=30
9050 GOSUB200:F$(K,AA)=A$:GOTO8100
9060 :
9200 PRINT"[147]":OPEN4,4,0
9205 PRINT#4,"NAME: "N$(K):PRINT#4
9210 FORI=0TOL(K)
9220 PRINT#4,RIGHT$(" "+STR$(I),4)" "F$(K,I)
9230 NEXT
9240 CLOSE4:GOTO8100
9250 :
9400 PRINT"NAME: ";:A$=N$(K):GOSUB170:N$(K)=A$:GOTO8100
9410 :
9500 PRINT"[147]ABBRUCH DURCH _"
9510 FORI=0TO999:PRINT""RIGHT$(" "+STR$(I),4)" [146] ";
9515 ZA=PEEK(KF+5*I)
9520 IFZA=0GOTO9800
9525 PRINT"";:IF(ZAAND64)THENPRINT"";
9530 ZA=ZAAND15:PRINTB$(ZA)" ";
9537 AQ=INT(PEEK(KF+5*I+2)/64):Q=256*(PEEK(KF+5*I+2)AND15)+PEEK(KF+5*I+1)
9538 IFQ>2047THENQ=Q-4096
9539 A$="":IFZA=0GOTO9555
9540 IFAQ=0THENA$="#"
9550 IFAQ=2THENA$="@"
9555 L=2:IFQ<0THENL=1
9560 PRINTA$MID$(STR$(Q),L)" ";
9570 IFZA=0ORZA=4ORZA=10GOTO9800
9575 AZ=INT(PEEK(KF+5*I+4)/64):Z=256*(PEEK(KF+5*I+4)AND15)+PEEK(KF+5*I+3)
9577 IFZ>2047THENZ=Z-4096
9580 A$="":IFAZ=0THENA$="#"
9590 IFAZ=2THENA$="@"
9595 L=2:IFZ<0THENL=1
9600 PRINTA$MID$(STR$(Z),L)" ";
9800 PRINT"[158]":GETA$:IFA$="_"THENI=999
9810 NEXT:GOSUB5530:GOTO1500