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: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