home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1991 February
/
64er_Magazin_91-02_1991_Markt__Technik_de_Side_A.d64
/
hidden-src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
3KB
|
77 lines
5 poke56,32:clr
10 sys36864
20 .opt oo
30 *= $c000
40 ;
42 ;hires-plot mit hidden-line
44 ;nikolaus heusler, 6.9.90
46 ;sys 49152 grafik an
48 ;sys 49155 grafik aus
50 ;sys 49158,x,y punkt setzen
52 ;
90 ;variablen und konstanten
100 av =2;zwischenspeicher
102 komma =$aefd;komma nach sys holen
104 getkoord =$b7eb;x- und y-koordinaten holen
106 xcoord =20;x-koordinate low/high
108 cint =65409;vic initialisieren
110 mmtab =$4000;hidden-line tabelle (768 bytes)
112 flag =4;flag, ob punkt gezeichnet werden soll
900 ;sprungtabelle
1000 jmp gron;grafik loeschen und einschalten
1002 jmp cint;grafik aus
1004 jmp set;punkt mit hidden-line setzen
1090 ;mathematische daten
1100 grbit .byt $80,$40,$20,$10,8,4,2,1;potenzen
1102 mult =*;multiplikationstabelle
1104 .wor $2000,$2140,$2280,$23c0
1106 .wor $2500,$2640,$2780,$28c0
1108 .wor $2a00,$2b40,$2c80,$2dc0
1110 .wor $2f00,$3040,$3180,$32c0
1112 .wor $3400,$3540,$3680,$37c0
1114 .wor $3900,$3a40,$3b80,$3cc0
1116 .wor $3e00
2000 ;grafik loeschen
2002 gron ldx #32:stx av+1:ldy #0:sty av;zeiger auf 8192, 32 pages
2004 tya;loeschen
2006 clr sta (av),y:iny:bne clr:inc av+1:dex:bne clr;loesch-schleife
2008 ldx #4:stx av+1:ldy #0:sty av:lda #1;grafik faerben
2010 frb sta (av),y:iny:bne frb:inc av+1:dex:bne frb;faerb-schleife
2012 lda #26:sta 53272;pointer auf grafik
2014 lda #59:sta 53265;grafik ein
2016 ;hidden-line-tabelle loeschen
2018 ldx #3;3 pages = 768 bytes
2020 lda #<mmtab:ldy #>mmtab:sta av:sty av+1;zeiger auf tabelle
2022 ldy #0
2024 clrhilo lda #-1:sta (av),y:iny;minimum setzen
2026 lda #0:sta (av),y:iny;maximum setzen
2028 bne clrhilo:inc av+1:dex:bne clrhilo;schleife
2030 rts;grafik 'steht' !
3000 ;turbo-hires-plot mit hidden-line
3002 set jsr komma:jsr getkoord;komma und parameter holen
3004 cpx #200:bcc ok;y-koordinate pruefen
3006 wrong rts;falsche koordinaten, dann zurueck
3008 ok lda xcoord+1:beq ok1:cmp #>320:bne wrong;x-koordinate high pruefen
3010 lda xcoord:cmp #<320:bcs wrong;und low pruefen
3012 ;koordinaten ok
3014 ;hidden-line-routine
3016 ok1 lda xcoord:sta av:lda xcoord+1;av = x-koordinate * 2 + mmtab
3017 asl av:rol:clc:adc #>mmtab:sta av+1
3018 ldy #0:sty flag;0 = punkt nicht zeichnen
3019 ;pruefe, ob neues minimum
3020 txa:cmp (av),y:bcs no1;wenn y-wert > minimum
3022 sta (av),y;y-wert = neues minimum
3024 inc flag;punkt soll gezeichnet werden
3026 ;pruefe, ob neues maximum
3028 no1 iny:txa:cmp (av),y:bcc no2;wenn y-wert < maximum
3029 sta (av),y;y-wert = neues maximum
3030 inc flag;punkt soll gezeichnet werden
3031 no2 lda flag:beq wrong;null, dann punkt nicht zeichnen
3032 ;punkt darf gezeichnet werden
3034 plot txa:lsr:lsr:lsr:asl:tay;adresse zeilenafg. berechnen
3036 lda mult+1,y:sta av+1:txa:and #7:clc:adc mult,y:sta av;av=320*zeile+8192
3038 lda xcoord:and #$f8:adc av:sta av:lda av+1:adc xcoord+1:sta av+1;x-offset
3040 lda xcoord:and #7:tax:lda grbit,x;bitposition berechnen
3042 ldy #0:ora (av),y:sta (av),y;punkt in grafik setzen
3044 rts;fertig mit turbo-plot