home *** CD-ROM | disk | FTP | other *** search
- 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
-