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