home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 55
/
64er_Magazin_Sonderheft_55_19xx_Markt__Technik_de_Side_A.d64
/
dreieck.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
4KB
|
164 lines
110 opt oo
120 *= $4000
130 :
140 :
150 zoommoeg = 210 ; flag ob zoom moeglich, muss bei erweiterung 1 sein
160 :
170 in1 = 217 ; zwischenspeicher
180 in2 = 219 ; zum indizieren
190 :
200 mrk = 221 ; zwischenspeicher
210 in3 = 222 ;
220 :
230 posix = 225 ; position des cursors
240 posiy = 226 ; wird in irq-routine gesetzt
250 button = 238 ; 1=knopf gedrueckt 0=nicht
260 korx = 239 ; x/y koordinate bei
270 kory = 240 ; linien/bloecken
280 :
290 fire = 251 ; 1 nachdem knopf gedrueckt (von irq gesetzt)
300 :
310 korx2 = 23 ; x/y koordin. bei
320 kory2 = 24 ; linien ...
330 :
340 x1 = 35 ; zwischenspeicher fuer
350 x2 = 36 ; x/y kootrdinaten bei
360 x3 = 37 ; verschiedenen befehlen
370 y1 = 38
380 y2 = 39
390 y3 = 40
400 x4 = 47
410 y4 = 48
420 x5 = 49
430 x6 = 50
440 y5 = 51
450 y6 = 52
460 in4 = 53
470 in5 = 55
480 in6 = 57
490 x7 = 59
500 y7 = 60
510 x8 = 61
520 y8 = 62
530 :
540 :
550 sintab = $ae00 ; sinuswerte
560 priofeld = $af00 ; prioritaetentabelle
570 strimust = $b000 ; linien stricheln muster
580 stribytes = $b060 ;aktuelles muster (linien str.)
590 patterns = $b080 ; fuellmuster
600 fapinsel = $b480 ; farbpinsel
610 pbrei = $b05e ; groesse des farbpinsel
620 phoeh = $b05f ; hoehe/breite
630 frottab = $b700 ; tabelle fuer farbtausch
640 makromem = $0800 ; makro
650 xspei = $0900 ; x/y speicher bei
660 yspei = $0a00 ; fill ...
670 :
680 menu(NULL) = $1000+3 ; sprung in's menue (=brk)
690 plmust = $9000+30 ; plot routinen
700 plotpr = $9000+33 ; fuer muster,prioritaeten
710 plpins = $9000+48 ; pinselform
720 pl(NULL) = $9000+75 ; linien
730 :
740 gettas = $9000+78 ; taste einlesen und "_"/"^" testen
750 plot = $c000+9 ; punkt setzen
760 clrunten = $c000+36 ; sprites unten loeschen
770 textpr = $c000+39 ; text in sprites ausgeben
780 exorline = $c000+51 ; linie invertieren
790 waitout = $c000+120 ; "bitte warten" ausgeben
800 comsub = $a900+57 ; statuszeile ausgeben und tastaturabfrage
810 lflash = $a900+63 ; linie blinken
820 ldraw = $a900+66 ; linie ziehen
830 befinit = $a900+87 ; allgemeine initialisierung
840 mainsub = $7000+18 ; undo vorbereiten etc...
850 :
860 jsr mainsub ; sollte immer 1. bef. einer erw. sein. schaltet grafik ein usw
870 inc zoommoeg ; verhindert einschalten des zoom-fensters
880 :
890 dreieck ldx #<text1
900 ldy #>text1
910 jsr befinit ; textausgabe in sprites und initialisierung
920 :
930 loop1 jsr comsub ; comsub gibt statuszeile aus, fragt editortasten ab und
931 ;prueft auf sprung in untermenues mit f-tasten oder e/f/m/s/o
940 lda fire ; wurde feuerknopf inzwischen gedrueckt
950 beq loop1 ; nein, dann weiter
960 :
970 dec fire ; knopfflag =0
980 ldx posix
990 ldy posiy ; aktuelle pfeilposition
1000 stx x1 ; merken
1010 sty y1
1020 :
1030 ldx #<text2 ; naechten text
1040 ldy #>text2 ; ausgeben
1050 jsr textpr
1060 :
1070 loop2 jsr comsub
1080 ldx posix
1090 ldy posiy ; position merken
1100 stx x2
1110 sty y2
1120 jsr lflash ; linie von x1/y1 zu x2/y2 einmal blinken
1130 lda fire
1140 beq loop2
1150 :
1160 dec fire
1170 jsr ldraw ; linie von x1/y1 zu x2/y2 ziehen
1180 ldx #<text3
1190 ldy #>text3
1200 jsr textpr
1210 :
1220 loop3 jsr comsub
1230 ldx posix
1240 ldy posiy ; position merken
1250 stx x3
1260 sty y3
1270 jsr fladrei ; siehe unten
1280 jsr fladrei
1290 lda fire
1300 beq loop3
1310 :
1320 dec fire
1330 ldx x1
1340 ldy y1 ; x1/y1 merken
1350 stx x4
1360 sty y4
1370 ldx x3
1380 ldy y3
1390 stx x1
1400 sty y1
1410 jsr ldraw ; linie ziehen
1420 ldx x4
1430 ldy y4
1440 stx x2 ; zuruekholen
1450 sty y2
1460 jsr ldraw ; und zweite linie ziehen
1470 jmp dreieck ; weitere dreiecke zeichnen
1480 :
1490 fladrei ldx x1 ; zwei linien invertieren
1500 ldy y1 ; x1/y1 - x3/y3
1510 stx korx ; und x2/y2 - x3/y3
1520 sty kory
1530 ldx x3
1540 ldy y3
1550 stx korx2
1560 sty kory2
1570 jsr exorline
1580 :
1590 ldx x2
1600 ldy y2
1610 stx korx
1620 sty kory
1630 ldx x3
1640 ldy y3
1650 stx korx2
1660 sty kory2
1670 jsr exorline
1680 rts
1690 :
1700 text1 byt 1,49,3:asc "dreieck punkt a":byt 0
1710 text2 byt 1,49,3:asc "dreieck punkt b":byt 0
1720 text3 byt 1,49,3:asc "dreieck punkt c":byt 0