home *** CD-ROM | disk | FTP | other *** search
/ C64'er / C64'er.iso / 85xx / 8512.d64 / eprom-automat (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  6KB  |  245 lines

  1. 1 REM (C) 1985 BY DIRK GAZIC
  2. 2 REM             AMSTERDAMER STR. 41
  3. 3 REM             5000 KOELN 90
  4. 4 REM             TEL.:02203/32921
  5. 5 :
  6. 6 :
  7. 7 :
  8. 8 :
  9. 9 :
  10. 1000 REM INITIALIZIERUNG ---------------
  11. 1010 :
  12. 1020 POKE55,0:POKE56,128:CLR:DIMZE%(4),TE$(4)
  13. 1030 HF=0:VF=0:SF=5:REM FARBVORGABE
  14. 1040 PRINTCHR$(14)CHR$(8)CHR$(147)
  15. 1050 RE$(0)="[146]":RE$(1)=""
  16. 1060 FORI=1TO4:READZE%(I):READTE$(I):NEXT
  17. 1070 EI$="[201]HRE [197]INGABE [194]ITTE >>>":REM HAEUFIGSTE STATUSZEILE
  18. 1080 DATA 8,"[208]ROGRAMM BEARBEITEN"
  19. 1090 DATA10,"[211]PEICHERINHALT SICHERN"
  20. 1100 DATA 12,"[196]IRECTORY ZEIGEN"
  21. 1110 DATA 14,"[208]ROGRAMM BEENDEN"
  22. 1120 GOTO2560:REM HAUPTPROGRAMM
  23. 1130 :
  24. 1140 :
  25. 1150 :
  26. 1160 REM INPUT-ROUTINE -----------------
  27. 1170 :
  28. 1180 POKE204,0:POKE205,2:WAIT207,1,1:POKE204,1
  29. 1190 L=LEN(WW$):PRINTWW$;" [157]";:IFL>0THENFORZZ=1TOL:PRINT"[157]";:NEXT:L=0
  30. 1200 POKE204,0
  31. 1210 POKE198,0:WAIT198,1:GETW$
  32. 1220 POKE205,2:WAIT207,1,1:POKE204,1
  33. 1230 IFW$=CHR$(29)ANDL<MXTHEN1300
  34. 1240 IFW$=CHR$(157)ANDL>0THENL=L-1:PRINTW$;:GOTO1200
  35. 1250 IFW$=CHR$(13)THEN1320
  36. 1260 IFW$=CHR$(20)ANDL>0THEN1350
  37. 1270 IFASC(W$)<32ORASC(W$)=34THEN1200
  38. 1280 IFW$="*"ORW$=";"ORW$=","THEN1200
  39. 1290 IFASC(W$)>127ANDASC(W$)<160THEN1200
  40. 1300 L=L+1:PRINTW$;:IFL<MXTHEN1200
  41. 1310 L=MX-1:PRINT"[157]";:GOTO1200
  42. 1320 IFL>0THENFORZZ=1TOL:PRINT"[157]";:NEXT
  43. 1330 WW$="":OPEN3,3:FORZZ=1TOMX:GET#3,W$:WW$=WW$+W$:NEXT:CLOSE3
  44. 1340 RETURN
  45. 1350 IFL=0THEN1200
  46. 1360 GOSUB1320
  47. 1370 FORZZ=1TOMX:PRINT"[157]";:NEXT
  48. 1380 IFL=1THENWW$=MID$(WW$,2):GOTO1190
  49. 1390 WW$=LEFT$(WW$,L-1)+MID$(WW$,L+1):PRINTWW$;" ";
  50. 1400 FORZZ=1TOMX-L+1:PRINT"[157]";:NEXT
  51. 1410 L=L-1:GOTO1200
  52. 1420 :
  53. 1430 :
  54. 1440 :
  55. 1450 REM LEERSTELLEN ENTFERNEN ---------
  56. 1460 :
  57. 1470 L1=LEN(WW$):IFL1=0THENRETURN
  58. 1480 L2=ASC(RIGHT$(WW$,1)):IFL2<>32ANDL2<>160THENRETURN
  59. 1490 WW$=LEFT$(WW$,L1-1):GOTO1470
  60. 1500 :
  61. 1510 :
  62. 1520 :
  63. 1530 REM UNTERE STATUSZEILE ------------
  64. 1540 :
  65. 1550 I=INT((39-LEN(AN$))/2)
  66. 1560 AN$=LEFT$("                                    ",I)+AN$
  67. 1570 POKE214,23:SYS58640:PRINT:PRINT"                                       [146]";
  68. 1580 POKE214,23:SYS58640:PRINT:PRINT"";AN$"[146]";
  69. 1590 POKE2023,160:POKE56295,PEEK(646)
  70. 1600 RETURN
  71. 1610 :
  72. 1620 :
  73. 1630 :
  74. 1640 REM OBERE STATUSZEILE -------------
  75. 1650 :
  76. 1660 PRINT"                                        [146]"
  77. 1670 I=INT((39-LEN(AN$))/2)
  78. 1680 AN$=LEFT$("                                    ",I)+AN$
  79. 1690 PRINT"";AN$;"[146]"
  80. 1700 RETURN
  81. 1710 :
  82. 1720 :
  83. 1730 :
  84. 1740 REM FEHLERTON ---------------------
  85. 1750 :
  86. 1760 SI=54272
  87. 1770 FOR I=0 TO 23:POKE I+SI,0:NEXT
  88. 1780 POKESI+1,7:POKESI+5,60:POKESI+24,15:POKESI+2,50:POKESI+3,15:POKESI+4,65
  89. 1790 RETURN
  90. 1800 :
  91. 1810 :
  92. 1820 :
  93. 1830 REM DISK-FEHLER -------------------
  94. 1840 :
  95. 1850 INPUT#1,FF$,FE$,TT$,SS$
  96. 1860 IFFE$="OK"THENRETURN
  97. 1870 AN$=FF$+","+FE$+","+TT$+","+SS$
  98. 1880 GOSUB1530
  99. 1890 IFFF$="74"THENPRINT#1,"UJ":FORI=1TO3000:NEXT
  100. 1900 GOSUB1740:POKE198,0:WAIT198,1
  101. 1910 RETURN
  102. 1920 :
  103. 1930 :
  104. 1940 :
  105. 1950 REM DIRECTORY ---------------------
  106. 1960 :
  107. 1970 OPEN1,8,15,"I":GOSUB1830:CLOSE1:IFFE$<>"OK"THENRETURN
  108. 1980 PRINT"[147]";:RE=0
  109. 1990 OPEN1,8,0,"$0"
  110. 2000 GET#1,A$,B$
  111. 2010 GET#1,A$,B$
  112. 2020 GET#1,A$,B$
  113. 2030 GETQ$:IFQ$="[133]"THENCLOSE1:RETURN
  114. 2040 IFQ$="[134]"THENWAIT198,1:POKE198,0
  115. 2050 PRINT"[146]";
  116. 2060 C=0
  117. 2070 IF A$<>"" THEN C=ASC(A$)
  118. 2080 IF B$<>"" THEN C=C+ASC(B$)*256
  119. 2090 PRINTMID$(STR$(C),2);:POKE211,4
  120. 2100 IFRE=0THENPRINT"";
  121. 2110 GET#1,B$:IF ST<>0 THEN 2220
  122. 2120 IF B$<>CHR$(34) THEN 2110
  123. 2130 PRINTCHR$(34);
  124. 2140 GET#1,B$:PRINTB$;:IFB$<>CHR$(34)THEN2140
  125. 2150 PRINT"  ";
  126. 2160 GET#1,B$:IF B$=CHR$(32) THEN 2160
  127. 2170 POKE211,24:C$=""
  128. 2180 C$=C$+B$:GET#1,B$:IFB$<>""THEN 2180
  129. 2190 IFLEFT$(C$,1)="*"THENPOKE211,23
  130. 2200 PRINTC$
  131. 2210 IF ST=0 THEN RE=1:GOTO 2010
  132. 2220 PRINT"BLOCKS FREE"
  133. 2230 CLOSE1
  134. 2240 AN$="'[212][193][211][212][197]' FUER [210]UECKKEHR INS [205]ENUE":GOSUB1530
  135. 2250 POKE198,0:WAIT198,1
  136. 2260 RETURN
  137. 2270 :
  138. 2280 :
  139. 2290 :
  140. 2300 REM MENUESTEUERUNG ----------------
  141. 2310 :
  142. 2320 PRINT"[147]":POKE646,SF
  143. 2330 AN$=NM$:GOSUB1640
  144. 2340 AN$="[215]AEHLEN MIT [195][213][210][211][207][210] UND [210][197][212][213][210][206]":GOSUB1530
  145. 2350 GOSUB2510:RE=1:GOSUB2500
  146. 2360 POKE53280,HF:POKE53281,VF
  147. 2370 POKE198,0:WAIT198,1:GETQ$
  148. 2380 IFQ$=CHR$(13)THENRETURN
  149. 2390 IFQ$="[145]"ANDZE>1THENRE=0:GOSUB2500:ZE=ZE-1:RE=1:GOSUB2500:GOTO2360
  150. 2400 IFQ$="[145]"THENRE=0:GOSUB2500:ZE=4:RE=1:GOSUB2500:GOTO2360
  151. 2410 IFQ$=""ANDZE<4THENRE=0:GOSUB2500:ZE=ZE+1:RE=1:GOSUB2500:GOTO2360
  152. 2420 IFQ$=""THENRE=0:GOSUB2500:ZE=1:RE=1:GOSUB2500:GOTO2360
  153. 2430 IFQ$="[133]"ANDHF<255THENHF=HF+1:GOTO2360
  154. 2440 IFQ$="[133]"THENHF=0
  155. 2450 IFQ$="[134]"ANDVF<255THENVF=VF+1:GOTO2360
  156. 2460 IFQ$="[134]"THENVF=0
  157. 2470 IFQ$="[135]"ANDSF<15THENSF=SF+1:GOTO2300
  158. 2480 IFQ$="[135]"THENSF=0:GOTO2300
  159. 2490 GOTO2360
  160. 2500 POKE211,8:POKE214,ZE%(ZE):SYS58640:PRINTRE$(RE)TE$(ZE):RETURN
  161. 2510 FORI=1TO4:POKE211,8:POKE214,ZE%(I):SYS58640:PRINTTE$(I):NEXT
  162. 2520 RETURN
  163. 2530 :
  164. 2540 :
  165. 2550 :
  166. 2560 REM HAUPTPROGRAMM -----------------
  167. 2570 :
  168. 2580 NM$=" [193]UTO.[197]PROM [214]1.2      (C) BY [196]IRK [199]AZIC"
  169. 2590 ZE=1:GOSUB2300
  170. 2600 ONZEGOSUB2650,3050,1950,3270
  171. 2610 GOTO2560
  172. 2620 :
  173. 2630 :
  174. 2640 :
  175. 2650 REM PROGRAMM BEARBEITEN -----------
  176. 2660 :
  177. 2670 AN$="[205]ODUS: [208]ROGRAMM BEARBEITEN":GOSUB1640
  178. 2680 AN$=EI$:GOSUB1530:WW$=""
  179. 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]"
  180. 2700 PRINT"[221][198]ILENAME:                 [221]"
  181. 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]"
  182. 2720 PRINT"[145][145]";:MX=16:GOSUB1160:GOSUB1450:NA$=WW$
  183. 2730 OPEN1,8,15:OPEN2,8,0,NA$
  184. 2740 GOSUB1830:IFFE$<>"OK"THENCLOSE1:CLOSE2:RETURN
  185. 2750 GET#2,LB$:GET#2,HB$
  186. 2760 IFASC(LB$+CHR$(0))=1ANDASC(HB$+CHR$(0))=8THEN2790
  187. 2770 AN$="[208]ROGRAMMSTART IST NICHT $0801":CLOSE1:CLOSE2:GOSUB1740:GOSUB1530
  188. 2780 POKE198,0:WAIT198,1:RETURN
  189. 2790 RESTORE
  190. 2800 AN$="[194]ITTE WARTEN":GOSUB1530
  191. 2810 FORI=1TO4:READA:READA$:NEXT
  192. 2820 FORI=32768TO32859:READA:POKEI,A:NEXT
  193. 2830 GET#2,A$:A$=A$+CHR$(0)
  194. 2840 POKEI,ASC(A$)
  195. 2850 I=I+1:IFI<40960ORST=64THEN2880
  196. 2860 AN$="[208]ROGRAMM IST ZU LANG":CLOSE1:CLOSE2:GOSUB1740:GOSUB1530
  197. 2870 POKE198,0:WAIT198,1:RETURN
  198. 2880 IFST<>64THEN2830
  199. 2890 CLOSE1:CLOSE2
  200. 2900 HB=INT(I/256):LB=I-HB*256
  201. 2910 POKE32838,LB:POKE32842,HB
  202. 2920 I1=I-30811:I2=I
  203. 2930 HB=INT(I1/256):LB=I1-HB*256
  204. 2940 POKE32846,LB:POKE32852,HB
  205. 2950 RETURN
  206. 2960 :
  207. 2970 DATA9,128,9,128,195,194,205,56,48,120,142,22,208,32,163,253,32,80,253,32
  208. 2980 DATA21,253,32,91,255,88,32,83,228,32,191,227,32,61,128,162,251,154,169
  209. 2990 DATA82,141,119,2,169,213,141,120,2,169,13,141,121,2,169,3,141,198,0,76
  210. 3000 DATA134,227,169,92,133,95,169,128,133,96,169,110,133,90,169,128,133,91
  211. 3010 DATA169,20,133,88,133,45,169,8,133,89,133,46,76,191,163
  212. 3020 :
  213. 3030 :
  214. 3040 :
  215. 3050 REM SPEICHERINHALT SICHERN --------
  216. 3060 :
  217. 3070 IFI2=0THENGOSUB1740:RETURN
  218. 3080 AN$="[205]ODUS: [211]PEICHERINHALT SICHERN":GOSUB1640
  219. 3090 AN$=EI$:GOSUB1530
  220. 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]"
  221. 3110 PRINT"[221][198]ILENAME:                 [221]"
  222. 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$
  223. 3130 WW$=LEFT$(WW$,16):PRINT"[145][145]";:MX=16:GOSUB1160:GOSUB1450
  224. 3140 OPEN1,8,15:OPEN2,8,1,WW$
  225. 3150 GOSUB1830:IFFE$<>"OK"THENCLOSE1:CLOSE2:RETURN
  226. 3160 PRINT"[221][211]TARTADRESSE:   * 4096    "
  227. 3170 WW$=MID$(STR$(8),2):PRINT"[145]";:MX=1:GOSUB1160
  228. 3180 AD=VAL(WW$):IFAD<1ORAD>8THENGOSUB1740:GOTO3160
  229. 3190 AD=AD*4096:HB=INT(AD/256):LB=AD-HB*256
  230. 3200 PRINT#2,CHR$(LB)CHR$(HB);
  231. 3210 AN$="[194]ITTE WARTEN":GOSUB1530
  232. 3220 FORI=32768TOI2:PRINT#2,CHR$(PEEK(I));:NEXT
  233. 3230 GOSUB1830:CLOSE1:CLOSE2:I2=0:RETURN
  234. 3240 :
  235. 3250 :
  236. 3260 :
  237. 3270 REM PROGRAMM BEENDEN --------------
  238. 3280 AN$="[205]ODUS: [208]ROGRAMM BEENDEN":GOSUB1640
  239. 3290 AN$="[215]OLLEN [211]IE WIRKLICH BEENDEN [J/N]":GOSUB1530:POKE198,0:WAIT198,1:GETQ$
  240. 3300 IFQ$="N"THENRETURN
  241. 331