home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma30.dms / ma30.adf / LightMachine / Light.source < prev    next >
Text File  |  1994-09-02  |  12KB  |  430 lines

  1. 1 :  SCREEN 1,640,200,4,2
  2. 2 : WINDOW 2,"Lightmachine V1.0    14.July 1989 by Arno Wolff",(0,0)-(630,97),18,1
  3. 3 : CLEAR ,50000&,19500
  4. 4 : DIM sequenz(1000),backwardsequenz(1000),bit(7),testbit(7)
  5. 5 : POKE 12575489&,255:POKE 12574977&,0:position=1:a=3:pause=200
  6. 6 : FOR i=300 TO 10
  7. 7 : PALETTE i,.73,.73,.73
  8. 8 : NEXT i
  9. 9 :PALETTE 2,0,1,0:PALETTE 11,.8,.6,1
  10. 10 :
  11. 11  titelbild:
  12. 12 : LINE (380,0)-(380,56),2
  13. 13 : LINE (380,56)-(0,56),2
  14. 14 : FOR i=99 TO 281 STEP 26
  15. 15 : CIRCLE (i,28),9,2,,,.6
  16. 16 : PAINT (i,28),a,2:a=a+1
  17. 17 : NEXT i:a=3
  18. 18 : FOR i=5 TO 47 STEP 6
  19. 19 : LINE (25,i)-(60,i+4),2,b
  20. 20 : PAINT(40,i+2),a,2
  21. 21 : LINE (320,i)-(355,i+4),2,b
  22. 22 : PAINT (340,i+2),a,2:a=a+1
  23. 23 : NEXT i
  24. 24 : FOR i=3 TO 339 STEP 48
  25. 25 : LINE (i,77)-(i+41,89),,b
  26. 26 :NEXT i
  27. 27 : LINE (387,5)-(499,17),2,b
  28. 28 :FOR i=1 TO 22
  29. 29 : READ x1,y1,x2,y2
  30. 30 : LINE (x1,y1)-(x2,y2),,b
  31. 31 : NEXT i
  32. 32 :
  33. 33 : DATA 506,5,620,17,387,29,452,41,459,29,523,41
  34. 34 : DATA 530,29,620,41,387,45,435,57,442,45,523,57
  35. 35 : DATA 530,45,620,57,3,61,37,73,44,61,76,73
  36. 36 : DATA 83,61,124,73,131,61,180,73,187,61,236,73
  37. 37 : DATA 243,61,276,73,283,61,316,73,323,61,380,73
  38. 38 : DATA 387,61,460,73,467,61,508,73,515,61,571,73
  39. 39 : DATA 578,61,620,73,393,77,445,89,452,77,523,89
  40. 40 : DATA 530,77,620,89
  41. 41 :
  42. 42 : LOCATE 2,52:PRINT "Dateiname":LOCATE 2,65:PRINT "Position:"
  43. 43 : LOCATE 5,50:PRINT "Pause +":LOCATE 5,59:PRINT "Pause -"
  44. 44 : LOCATE 7,57:PRINT "Speichern":LOCATE 7,68:PRINT "Diskinhalt"
  45. 45 : LOCATE 5,68:PRINT "Pause:":LOCATE 7,50:PRINT "Laden"
  46. 46 : LOCATE 9,2:PRINT "SET":LOCATE 9,7:PRINT "Inv":LOCATE 9,12:PRINT "Back"
  47. 47 : LOCATE 9,18:PRINT "Pos +":LOCATE 9,25:PRINT "Pos -"
  48. 48 : LOCATE 9,32:PRINT "INS":LOCATE 9,37:PRINT "CLR":LOCATE 9,42:PRINT "DELETE"
  49. 49 : LOCATE 9,50:PRINT "Ausgeben":LOCATE 9,60:PRINT "Stop"
  50. 50 : LOCATE 9,66:PRINT "Weiter":LOCATE 9,74:PRINT "Quit"
  51. 51 : LOCATE 11,51:PRINT "Merge":LOCATE 11,2:PRINT "Bit0"
  52. 52 : LOCATE 11,8:PRINT "Bit1":LOCATE 11,14:PRINT "Bit2"
  53. 53 : LOCATE 11,20:PRINT "Bit3":LOCATE 11,26:PRINT "Bit4"
  54. 54 : LOCATE 11,32:PRINT "Bit5":LOCATE 11,38:PRINT "Bit6"
  55. 55 : LOCATE 11,44:PRINT "Bit7":LOCATE 11,58:PRINT "schleife"
  56. 56 : LOCATE 11,68:PRINT "position 1"
  57. 57 :
  58. 58 auswahl:
  59. 59 : POKE 12574977&,code:LOCATE 2,75:PRINT USING "###";position
  60. 60 : LOCATE 5,75:PRINT USING "###";pause
  61. 61 : test=MOUSE(0)
  62. 62 : ON MOUSE GOSUB auswertung
  63. 63 : MOUSE ON
  64. 64  : GOTO auswahl
  65. 65 :
  66. 66 auswertung:
  67. 67 : test=MOUSE(0)
  68. 68 : x=MOUSE(1):y=MOUSE(2)
  69. 69 : IF y>29 AND y<41 THEN
  70. 70 : IF x>387 AND x<452 THEN pauseplus
  71. 71 : IF x>459 AND x<523 THEN pauseminus
  72. 72  END IF
  73. 73 : IF y>45 AND y<57 THEN
  74. 74 : IF x>387 AND x<435 THEN loadflag=1:GOTO dateiname
  75. 75 : IF x>442 AND x<523 AND anzahl>0 THEN speicherflag=1:GOTO dateiname
  76. 76 : IF x>530 AND x<620 THEN diskinhalt
  77. 77 END IF
  78. 78 : IF y>61 AND y<73 THEN
  79. 79 : IF x>3 AND x<37 THEN setzen
  80. 80 : IF x>44 AND x<76 AND anzahl>0 THEN invertieren
  81. 81 : IF x>83 AND x<124 AND anzahl>0 THEN backward
  82. 82 : IF x>131 AND x<180 THEN posplus
  83. 83 : IF x>187 AND x<236 THEN posminus
  84. 84 : IF x>243 AND x<276 THEN einfuegen
  85. 85 : IF x>283 AND x<316 AND anzahl>0 THEN loeschen
  86. 86 : IF x>323 AND x<380 AND anzahl>0 THEN ruecksetzen
  87. 87 : IF x>387 AND x<460 AND anzahl>0 THEN position2=1:GOTO ausgeben
  88. 88 : IF x>515 AND x<571 THEN weiter
  89. 89 : IF x>578 AND x<620 THEN quit
  90. 90 END IF
  91. 91 : IF y>77 AND y<89 THEN
  92. 92 : IF posflag=1 THEN posflag=0:code=0
  93. 93 : IF x>3 AND x<44 THEN GOTO Bitnr0
  94. 94 : IF x>51 AND x<92 THEN GOTO Bitnr1
  95. 95 : IF x>99 AND x<140 THEN GOTO Bitnr2
  96. 96 : IF x>147 AND x<188 THEN GOTO Bitnr3
  97. 97 : IF x>195 AND x<236 THEN GOTO Bitnr4
  98. 98 : IF x>243 AND x<284 THEN GOTO Bitnr5
  99. 99 : IF x>291 AND x<332 THEN GOTO Bitnr6
  100. 100 : IF x>339 AND x<380 THEN GOTO Bitnr7
  101. 101 : IF x>393 AND x<445 AND anzahl>0 AND anzahl<999 THEN mergeflag=1:GOTO dateiname
  102. 102 : IF x>452 AND x<523 AND anzahl>0 THEN schleife
  103. 103 : IF x>530 AND x<620 THEN anfangsposition
  104. 104 END IF
  105. 105 : IF y>0 AND y<56 AND x>0 AND x<380 AND screenflag=0 THEN screenflag=1:GOTO auswahl
  106. 106 : IF y>0 AND y<56 AND x>0 AND x<380 AND screenflag=1 THEN screenflag=0
  107. 107 GOTO auswahl
  108. 108 :
  109. 109 Bitnr0:
  110. 110 : IF bit(0)=0 THEN
  111. 111 : PALETTE 3,1,0,0
  112. 112 : bit(0)=1:code=code+1
  113. 113 ELSE
  114. 114 : PALETTE 3,.73,.73,.73
  115. 115 : bit(0)=0:code=code-1
  116. 116 END IF:GOTO auswahl
  117. 117 Bitnr1:
  118. 118 : IF bit(1)=0 THEN
  119. 119 : PALETTE 4,1,0,0
  120. 120 : bit(1)=1:code=code+2
  121. 121 ELSE
  122. 122 : PALETTE 4,.73,.73,.73
  123. 123 : bit(1)=0:code=code-2
  124. 124 END IF:GOTO auswahl
  125. 125 Bitnr2:
  126. 126 : IF bit(2)=0 THEN
  127. 127 : PALETTE 5,1,0,0
  128. 128 : bit(2)=1:code=code+4
  129. 129 ELSE
  130. 130 : PALETTE 5,.73,.73,.73
  131. 131 : bit(2)=0:code=code-4
  132. 132 END IF:GOTO auswahl
  133. 133 Bitnr3:
  134. 134 : IF bit(3)=0 THEN
  135. 135 : PALETTE 6,1,0,0
  136. 136 : bit(3)=1:code=code+8
  137. 137 ELSE
  138. 138 : PALETTE 6,.73,.73,.73
  139. 139 : bit(3)=0:code=code-8
  140. 140 END IF:GOTO auswahl
  141. 141 Bitnr4:
  142. 142 : IF bit(4)=0 THEN
  143. 143 : PALETTE 7,1,0,0
  144. 144 : bit(4)=1:code=code+16
  145. 145 ELSE
  146. 146 : PALETTE 7,.73,.73,.73
  147. 147 : bit(4)=0:code=code-16
  148. 148 END IF:GOTO auswahl
  149. 149 Bitnr5:
  150. 150 : IF bit(5)=0 THEN
  151. 151 : PALETTE 8,1,0,0
  152. 152 : bit(5)=1:code=code+32
  153. 153 ELSE
  154. 154 : PALETTE 8,.73,.73,.73
  155. 155 : bit(5)=0:code=code-32
  156. 156 END IF:GOTO auswahl
  157. 157 Bitnr6:
  158. 158 : IF bit(6)=0 THEN
  159. 159 : PALETTE 9,1,0,0
  160. 160 : bit(6)=1:code=code+64
  161. 161 ELSE
  162. 162 : PALETTE 9,.73,.73,.73
  163. 163 : bit(6)=0:code=code-64
  164. 164 END IF:GOTO auswahl
  165. 165 Bitnr7:
  166. 166 : IF bit(7)=0 THEN
  167. 167 : PALETTE 10,1,0,0
  168. 168 : bit(7)=1:code=code+128
  169. 169 ELSE
  170. 170 : PALETTE 10,.73,.73,.73
  171. 171 : bit(7)=0:code=code-128
  172. 172 END IF:GOTO auswahl
  173. 173 :
  174. 174 setzen:
  175. 175 : IF anzahl=198 THEN auswahl
  176. 176 : IF position<anzahl+1 THEN sequenz(position3)=code:position3=position3+1:position=position+1:GOTO faerben
  177. 177 : sequenz(position)=code
  178. 178 : anzahl=anzahl+1:position=position+1
  179. 179 faerben:
  180. 180 : IF code>0 THEN FOR i=3 TO 10:PALETTE i,.73,.73,.73:NEXT i
  181. 181 : code=0
  182. 182 : FOR i=0 TO 7
  183. 183 : bit(i)=0
  184. 184 : NEXT i
  185. 185 : GOTO auswahl
  186. 186 :
  187. 187 ruecksetzen:
  188. 188 : IF position<anzahl+1 THEN
  189. 189 : FOR i=position TO anzahl
  190. 190 : sequenz(i)=sequenz(i+1)
  191. 191 : NEXT i
  192. 192 : sequenz(anzahl)=0:anzahl=anzahl-1:GOTO auswahl
  193. 193 ELSE
  194. 194 : sequenz(anzahl)=0:anzahl=anzahl-1:position=position-1
  195. 195 : GOTO auswahl
  196. 196 END IF
  197. 197 :
  198. 198 weiter:
  199. 199 : stopflag=0
  200. 200 : IF position3=0 THEN auswahl
  201. 201 : position2=position3
  202. 202 : 
  203. 203 : FOR i=3 TO 10
  204. 205 : PALETTE i,.73,.73,.73:bit(i-3)=0
  205. 206 : NEXT i
  206. 207 : stopflag=0
  207. 208 : FOR i=position2 TO anzahl+1
  208. 209 : IF i=999 THEN
  209. 210 : IF schleifenflag=1 THEN ausgeben
  210. 211 : position=999:GOTO auswahl
  211. 212 ELSE
  212. 213 : LOCATE 2,75:PRINT USING "###";i
  213. 214 END IF
  214. 215 : code=sequenz(i):POKE 12574977&,code
  215. 216 : IF screenflag=0 THEN ausgeben2
  216. 217 : FOR j=0 TO 7
  217. 218 : testbit(j)=code AND 2^j
  218. 219 : IF testbit(j)-2^j=0 THEN PALETTE j+3,1,0,0
  219. 220 NEXT j
  220. 221 ausgeben2:
  221. 222 : x=MOUSE(1):y=MOUSE(2):z=MOUSE(0)
  222. 223 : IF z<>0 AND x>467 AND x<508 AND y>61 AND x<73 THEN halt
  223. 224 : FOR o=1 TO pause:NEXT o
  224. 225 : IF screenflag=0 THEN ausgeben3
  225. 226 : FOR u=3 TO 10
  226. 227 : PALETTE u,.73,.73,.73
  227. 228 : NEXT u
  228. 229 ausgeben3:
  229. 230 : NEXT i
  230. 231 : IF schleifenflag=1 THEN position2=1:GOTO ausgeben
  231. 232 : position=anzahl+1
  232. 233 : GOTO auswahl
  233. 234 :
  234. 235 halt:
  235. 236 : stopflag=1
  236. 237 : code=0
  237. 238 : FOR u=3 TO 10
  238. 239 : PALETTE u,.73,.73,.73
  239. 240 : NEXT u
  240. 241 : position3=1:position=1:GOTO auswahl
  241. 242 :
  242. 243 schleife:
  243. 244 : stopflag=0
  244. 245 : IF schleifenflag=0 THEN
  245. 246 : schleifenflag=1:LINE (452,77)-(523,89),11,b
  246. 247 : GOTO auswahl
  247. 248 ELSE
  248. 249 : schleifenflag=0:LINE (452,77)-(523,89),,b
  249. 250 : GOTO auswahl
  250. 251 END IF
  251. 252 :
  252. 253 invertieren:
  253. 254 : IF inversflage=0 THEN
  254. 255 : inversflage=1:LINE (44,61)-(76,73),11,b
  255. 256 : GOTO invers
  256. 257 ELSE
  257. 258 : invertflag=0:LINE (44,61)-(76,73),,b
  258. 259 END IF
  259. 260 invers:
  260. 261 : FOR i=1 TO anzahl
  261. 262 : sequenz(i)=256+NOT sequenz(i)
  262. 263 : NEXT:GOTO auswahl
  263. 264 :
  264. 265 backward:
  265. 266 : IF backflag=0 THEN
  266. 267 : backflag=1:LINE (83,61)-(124,73),11,b
  267. 268 : GOTO back
  268. 269 ELSE
  269. 270 : backflag=0:LINE (83,61)-(124,73),,b
  270. 271 END IF
  271. 272 back:
  272. 273 : FOR i=1 TO anzahl
  273. 274 : backwardsequenz(i)=sequenz(anzahl+1-i)
  274. 275 : NEXT i
  275. 276 : FOR i=1 TO anzahl
  276. 277 : sequenz(i)=backwardsequenz(i)
  277. 278 : NEXT i
  278. 279 : GOTO auswahl
  279. 280 :
  280. 281 einfuegen:
  281. 282 : IF anzahlz2 OR anzahl>998 THEN auswahl
  282. 283 : anzahl=anzahl+1
  283. 284 : FOR i=anzahl TO position STEP -1
  284. 285 : sequenz(i)=sequenz(i-1)
  285. 286 : NEXT i:sequenz(position)=code
  286. 287 : GOTO faerben
  287. 288 :
  288. 289 pauseplus:
  289. 290 : IF pause>980 THEN auswahl
  290. 291 : pause=pause+10
  291. 292 : GOTO auswahl
  292. 293 :
  293. 294 pauseminus:
  294. 295 : IF pause=0 THEN auswahl
  295. 296 : pause=pause-10
  296. 297 : GOTO auswahl
  297. 298 :
  298. 299 posplus:
  299. 300 : IF position=999 OR position>anzahl THEN auswahl
  300. 301 : posflag=1
  301. 302 : position=position+1:code=sequenz(position)
  302. 303 : GOTO auswahl
  303. 304 posminus:
  304. 306 : IF position=1 THEN auswahl
  305. 307 : posflag=1
  306. 308 : position=position-1:code=sequenz(position)
  307. 309 : GOTO auswahl
  308. 310 :
  309. 311 anfangsposition:
  310. 312 : posflag=1
  311. 313 : position=1:code=sequenz(position)
  312. 314 : GOTO auswahl
  313. 315 :
  314. 316 loeschen:
  315. 317 : WINDOW 3,"  Sequenz wirklich loeschen ?  ",(387,0)-(630,25),2,1
  316. 318 : LOCATE 2,3:PRINT "('J' fuer JA / 'N' fuer NEIN"
  317. 319 : GOSUB taste
  318. 320 : IF taste$="n" THEN WINDOW CLOSE 3:GOTO auswahl
  319. 321 : anzahl=0:position=1:LOCATE 2,3:PRINT "    Einen Moment bitte !   "
  320. 322 : FOR i=1 TO 999
  321. 323 : sequenz(i)=0
  322. 324 : NEXT i
  323. 325 : WINDOW CLOSE 3:LOCATE 2,50:PRINT "  Dateiname  ":GOTO auswahl
  324. 326 :
  325. 327 dateiname:
  326. 328 : WINDOW 3,"Bitte Dateinamen eingeben !",(387,0)-(630,25),2,1
  327. 329 : LOCATE 2,2:LINE INPUT "Dateiname: ";seqname$
  328. 330 : IF seqname$="" THEN WINDOW CLOSE 3:speicherflag=0:loadflag=0:mergeflag=0:GOTO auswahl
  329. 331 : WINDOW CLOSE 3
  330. 332 : LOCATE 2,50:PRINT "             ":LOCATE 2,50:PRINT LEFT$(seqname$,13)
  331. 333 : IF loadflag=1 THEN GOSUB laden:loadflag=0:GOTO auswahl
  332. 334 : IF speicherflag=1 THEN speichern
  333. 335 : IF mergeflag=1 THEN GOSUB laden:mergeflag=0:GOTO auswahl
  334. 336 : GOTO auswahl
  335. 337 :
  336. 338 speichern:
  337. 339 : OPEN "sequenzen/"+seqname$ FOR OUTPUT AS #1
  338. 340 : PRINT #1,pause
  339. 341 : FOR i=1 TO anzahl
  340. 342 : PRINT #1,sequenz(i)
  341. 343 : NEXT i
  342. 344 : CLOSE #1:speicherflag=0
  343. 345 : KILL "Seqenzen/"+seqname$+".info"
  344. 346 : GOTO auswahl 
  345. 347 :
  346. 348 laden:
  347. 349 : OPEN "Sequenzen/"+seqname$ FOR APPEND AS #1
  348. 350 : IF LOF(1)=0 THEN
  349. 351 : CLOSE #1:BEEP:BEEP:BEEP
  350. 352 : LOCATE 2,50:PRINT "  Dateiname":seqname$=""
  351. 353 : RETURN
  352. 354 ELSE
  353. 355 : CLOSE #1
  354. 356 END IF
  355. 357 : IF mergeflag=1 THEN
  356. 358 : i=anzahl+1
  357. 359 ELSE
  358. 360 : FOR i=1 TO 999:sequenz(i)=0:NEXT i:i=1
  359. 361 END IF
  360. 362 : OPEN "Sequenzen/"+seqname$ FOR INPUT AS #1
  361. 363 : INPUT #1,pause
  362. 364 : WHILE NOT EOF(1)
  363. 365 : IF i=999 THEN CLOSE #1:anzahl=i-1:position=i:RETURN
  364. 366 : INPUT #1,sequenz(i):i=i+1
  365. 367 : WEND
  366. 368 : CLOSE #1:anzahl=i-1:position=i
  367. 369 : RETURN
  368. 370 :
  369. 371 quit:
  370. 372 : WINDOW 3,"  Programm wirklich beeden ?  ",(387,0)-(630,25),2,1
  371. 373 : LOCATE 2,3:PRINT "('J' fuer JA / 'N' fuer NEIN)"
  372. 374 : GOSUB taste
  373. 375 : IF taste$="j" THEN SYSTEM
  374. 376 : WINDOW CLOSE 3:GOTO auswahl
  375. 377 :
  376. 378 taste:
  377. 379 : taste$=INKEY$
  378. 380 : IF taste$="j" OR taste$="n" THEN RETURN
  379. 381 : GOTO taste
  380. 382 :
  381. 383 diskinhalt:
  382. 384 : WINDOW 3,"Disketteninhaltsverzeichnis",(410,0)-(630,185),2,1
  383. 385 : FILES "Sequenzen"
  384. 386 mausklick:
  385. 387 : test=MOUSE(0)
  386. 388 : ON MOUSE GOSUB ferting
  387. 389 : MOUSE ON
  388. 390 : GOTO mausklick
  389. 391 ferting:
  390. 392 : WINDOW CLOSE 3:GOTO auswahl
  391.  
  392.  
  393.  
  394.  
  395.  
  396.   
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.