home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C64'er
/
C64'er.iso
/
85xx
/
8512.d64
/
eprom-automat
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
6KB
|
245 lines
1 REM (C) 1985 BY DIRK GAZIC
2 REM AMSTERDAMER STR. 41
3 REM 5000 KOELN 90
4 REM TEL.:02203/32921
5 :
6 :
7 :
8 :
9 :
1000 REM INITIALIZIERUNG ---------------
1010 :
1020 POKE55,0:POKE56,128:CLR:DIMZE%(4),TE$(4)
1030 HF=0:VF=0:SF=5:REM FARBVORGABE
1040 PRINTCHR$(14)CHR$(8)CHR$(147)
1050 RE$(0)="[146]":RE$(1)=""
1060 FORI=1TO4:READZE%(I):READTE$(I):NEXT
1070 EI$="[201]HRE [197]INGABE [194]ITTE >>>":REM HAEUFIGSTE STATUSZEILE
1080 DATA 8,"[208]ROGRAMM BEARBEITEN"
1090 DATA10,"[211]PEICHERINHALT SICHERN"
1100 DATA 12,"[196]IRECTORY ZEIGEN"
1110 DATA 14,"[208]ROGRAMM BEENDEN"
1120 GOTO2560:REM HAUPTPROGRAMM
1130 :
1140 :
1150 :
1160 REM INPUT-ROUTINE -----------------
1170 :
1180 POKE204,0:POKE205,2:WAIT207,1,1:POKE204,1
1190 L=LEN(WW$):PRINTWW$;" [157]";:IFL>0THENFORZZ=1TOL:PRINT"[157]";:NEXT:L=0
1200 POKE204,0
1210 POKE198,0:WAIT198,1:GETW$
1220 POKE205,2:WAIT207,1,1:POKE204,1
1230 IFW$=CHR$(29)ANDL<MXTHEN1300
1240 IFW$=CHR$(157)ANDL>0THENL=L-1:PRINTW$;:GOTO1200
1250 IFW$=CHR$(13)THEN1320
1260 IFW$=CHR$(20)ANDL>0THEN1350
1270 IFASC(W$)<32ORASC(W$)=34THEN1200
1280 IFW$="*"ORW$=";"ORW$=","THEN1200
1290 IFASC(W$)>127ANDASC(W$)<160THEN1200
1300 L=L+1:PRINTW$;:IFL<MXTHEN1200
1310 L=MX-1:PRINT"[157]";:GOTO1200
1320 IFL>0THENFORZZ=1TOL:PRINT"[157]";:NEXT
1330 WW$="":OPEN3,3:FORZZ=1TOMX:GET#3,W$:WW$=WW$+W$:NEXT:CLOSE3
1340 RETURN
1350 IFL=0THEN1200
1360 GOSUB1320
1370 FORZZ=1TOMX:PRINT"[157]";:NEXT
1380 IFL=1THENWW$=MID$(WW$,2):GOTO1190
1390 WW$=LEFT$(WW$,L-1)+MID$(WW$,L+1):PRINTWW$;" ";
1400 FORZZ=1TOMX-L+1:PRINT"[157]";:NEXT
1410 L=L-1:GOTO1200
1420 :
1430 :
1440 :
1450 REM LEERSTELLEN ENTFERNEN ---------
1460 :
1470 L1=LEN(WW$):IFL1=0THENRETURN
1480 L2=ASC(RIGHT$(WW$,1)):IFL2<>32ANDL2<>160THENRETURN
1490 WW$=LEFT$(WW$,L1-1):GOTO1470
1500 :
1510 :
1520 :
1530 REM UNTERE STATUSZEILE ------------
1540 :
1550 I=INT((39-LEN(AN$))/2)
1560 AN$=LEFT$(" ",I)+AN$
1570 POKE214,23:SYS58640:PRINT:PRINT" [146]";
1580 POKE214,23:SYS58640:PRINT:PRINT"";AN$"[146]";
1590 POKE2023,160:POKE56295,PEEK(646)
1600 RETURN
1610 :
1620 :
1630 :
1640 REM OBERE STATUSZEILE -------------
1650 :
1660 PRINT" [146]"
1670 I=INT((39-LEN(AN$))/2)
1680 AN$=LEFT$(" ",I)+AN$
1690 PRINT"";AN$;"[146]"
1700 RETURN
1710 :
1720 :
1730 :
1740 REM FEHLERTON ---------------------
1750 :
1760 SI=54272
1770 FOR I=0 TO 23:POKE I+SI,0:NEXT
1780 POKESI+1,7:POKESI+5,60:POKESI+24,15:POKESI+2,50:POKESI+3,15:POKESI+4,65
1790 RETURN
1800 :
1810 :
1820 :
1830 REM DISK-FEHLER -------------------
1840 :
1850 INPUT#1,FF$,FE$,TT$,SS$
1860 IFFE$="OK"THENRETURN
1870 AN$=FF$+","+FE$+","+TT$+","+SS$
1880 GOSUB1530
1890 IFFF$="74"THENPRINT#1,"UJ":FORI=1TO3000:NEXT
1900 GOSUB1740:POKE198,0:WAIT198,1
1910 RETURN
1920 :
1930 :
1940 :
1950 REM DIRECTORY ---------------------
1960 :
1970 OPEN1,8,15,"I":GOSUB1830:CLOSE1:IFFE$<>"OK"THENRETURN
1980 PRINT"[147]";:RE=0
1990 OPEN1,8,0,"$0"
2000 GET#1,A$,B$
2010 GET#1,A$,B$
2020 GET#1,A$,B$
2030 GETQ$:IFQ$="[133]"THENCLOSE1:RETURN
2040 IFQ$="[134]"THENWAIT198,1:POKE198,0
2050 PRINT"[146]";
2060 C=0
2070 IF A$<>"" THEN C=ASC(A$)
2080 IF B$<>"" THEN C=C+ASC(B$)*256
2090 PRINTMID$(STR$(C),2);:POKE211,4
2100 IFRE=0THENPRINT"";
2110 GET#1,B$:IF ST<>0 THEN 2220
2120 IF B$<>CHR$(34) THEN 2110
2130 PRINTCHR$(34);
2140 GET#1,B$:PRINTB$;:IFB$<>CHR$(34)THEN2140
2150 PRINT" ";
2160 GET#1,B$:IF B$=CHR$(32) THEN 2160
2170 POKE211,24:C$=""
2180 C$=C$+B$:GET#1,B$:IFB$<>""THEN 2180
2190 IFLEFT$(C$,1)="*"THENPOKE211,23
2200 PRINTC$
2210 IF ST=0 THEN RE=1:GOTO 2010
2220 PRINT"BLOCKS FREE"
2230 CLOSE1
2240 AN$="'[212][193][211][212][197]' FUER [210]UECKKEHR INS [205]ENUE":GOSUB1530
2250 POKE198,0:WAIT198,1
2260 RETURN
2270 :
2280 :
2290 :
2300 REM MENUESTEUERUNG ----------------
2310 :
2320 PRINT"[147]":POKE646,SF
2330 AN$=NM$:GOSUB1640
2340 AN$="[215]AEHLEN MIT [195][213][210][211][207][210] UND [210][197][212][213][210][206]":GOSUB1530
2350 GOSUB2510:RE=1:GOSUB2500
2360 POKE53280,HF:POKE53281,VF
2370 POKE198,0:WAIT198,1:GETQ$
2380 IFQ$=CHR$(13)THENRETURN
2390 IFQ$="[145]"ANDZE>1THENRE=0:GOSUB2500:ZE=ZE-1:RE=1:GOSUB2500:GOTO2360
2400 IFQ$="[145]"THENRE=0:GOSUB2500:ZE=4:RE=1:GOSUB2500:GOTO2360
2410 IFQ$=""ANDZE<4THENRE=0:GOSUB2500:ZE=ZE+1:RE=1:GOSUB2500:GOTO2360
2420 IFQ$=""THENRE=0:GOSUB2500:ZE=1:RE=1:GOSUB2500:GOTO2360
2430 IFQ$="[133]"ANDHF<255THENHF=HF+1:GOTO2360
2440 IFQ$="[133]"THENHF=0
2450 IFQ$="[134]"ANDVF<255THENVF=VF+1:GOTO2360
2460 IFQ$="[134]"THENVF=0
2470 IFQ$="[135]"ANDSF<15THENSF=SF+1:GOTO2300
2480 IFQ$="[135]"THENSF=0:GOTO2300
2490 GOTO2360
2500 POKE211,8:POKE214,ZE%(ZE):SYS58640:PRINTRE$(RE)TE$(ZE):RETURN
2510 FORI=1TO4:POKE211,8:POKE214,ZE%(I):SYS58640:PRINTTE$(I):NEXT
2520 RETURN
2530 :
2540 :
2550 :
2560 REM HAUPTPROGRAMM -----------------
2570 :
2580 NM$=" [193]UTO.[197]PROM [214]1.2 (C) BY [196]IRK [199]AZIC"
2590 ZE=1:GOSUB2300
2600 ONZEGOSUB2650,3050,1950,3270
2610 GOTO2560
2620 :
2630 :
2640 :
2650 REM PROGRAMM BEARBEITEN -----------
2660 :
2670 AN$="[205]ODUS: [208]ROGRAMM BEARBEITEN":GOSUB1640
2680 AN$=EI$:GOSUB1530:WW$=""
2690 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
2700 PRINT"[221][198]ILENAME: [221]"
2710 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]"
2720 PRINT"[145][145]";:MX=16:GOSUB1160:GOSUB1450:NA$=WW$
2730 OPEN1,8,15:OPEN2,8,0,NA$
2740 GOSUB1830:IFFE$<>"OK"THENCLOSE1:CLOSE2:RETURN
2750 GET#2,LB$:GET#2,HB$
2760 IFASC(LB$+CHR$(0))=1ANDASC(HB$+CHR$(0))=8THEN2790
2770 AN$="[208]ROGRAMMSTART IST NICHT $0801":CLOSE1:CLOSE2:GOSUB1740:GOSUB1530
2780 POKE198,0:WAIT198,1:RETURN
2790 RESTORE
2800 AN$="[194]ITTE WARTEN":GOSUB1530
2810 FORI=1TO4:READA:READA$:NEXT
2820 FORI=32768TO32859:READA:POKEI,A:NEXT
2830 GET#2,A$:A$=A$+CHR$(0)
2840 POKEI,ASC(A$)
2850 I=I+1:IFI<40960ORST=64THEN2880
2860 AN$="[208]ROGRAMM IST ZU LANG":CLOSE1:CLOSE2:GOSUB1740:GOSUB1530
2870 POKE198,0:WAIT198,1:RETURN
2880 IFST<>64THEN2830
2890 CLOSE1:CLOSE2
2900 HB=INT(I/256):LB=I-HB*256
2910 POKE32838,LB:POKE32842,HB
2920 I1=I-30811:I2=I
2930 HB=INT(I1/256):LB=I1-HB*256
2940 POKE32846,LB:POKE32852,HB
2950 RETURN
2960 :
2970 DATA9,128,9,128,195,194,205,56,48,120,142,22,208,32,163,253,32,80,253,32
2980 DATA21,253,32,91,255,88,32,83,228,32,191,227,32,61,128,162,251,154,169
2990 DATA82,141,119,2,169,213,141,120,2,169,13,141,121,2,169,3,141,198,0,76
3000 DATA134,227,169,92,133,95,169,128,133,96,169,110,133,90,169,128,133,91
3010 DATA169,20,133,88,133,45,169,8,133,89,133,46,76,191,163
3020 :
3030 :
3040 :
3050 REM SPEICHERINHALT SICHERN --------
3060 :
3070 IFI2=0THENGOSUB1740:RETURN
3080 AN$="[205]ODUS: [211]PEICHERINHALT SICHERN":GOSUB1640
3090 AN$=EI$:GOSUB1530
3100 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
3110 PRINT"[221][198]ILENAME: [221]"
3120 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]":WW$="MODUL."+NA$
3130 WW$=LEFT$(WW$,16):PRINT"[145][145]";:MX=16:GOSUB1160:GOSUB1450
3140 OPEN1,8,15:OPEN2,8,1,WW$
3150 GOSUB1830:IFFE$<>"OK"THENCLOSE1:CLOSE2:RETURN
3160 PRINT"[221][211]TARTADRESSE: * 4096 "
3170 WW$=MID$(STR$(8),2):PRINT"[145]";:MX=1:GOSUB1160
3180 AD=VAL(WW$):IFAD<1ORAD>8THENGOSUB1740:GOTO3160
3190 AD=AD*4096:HB=INT(AD/256):LB=AD-HB*256
3200 PRINT#2,CHR$(LB)CHR$(HB);
3210 AN$="[194]ITTE WARTEN":GOSUB1530
3220 FORI=32768TOI2:PRINT#2,CHR$(PEEK(I));:NEXT
3230 GOSUB1830:CLOSE1:CLOSE2:I2=0:RETURN
3240 :
3250 :
3260 :
3270 REM PROGRAMM BEENDEN --------------
3280 AN$="[205]ODUS: [208]ROGRAMM BEENDEN":GOSUB1640
3290 AN$="[215]OLLEN [211]IE WIRKLICH BEENDEN [J/N]":GOSUB1530:POKE198,0:WAIT198,1:GETQ$
3300 IFQ$="N"THENRETURN
331