Ich habe dennoch die Routine bei mir eingebaut und es funktioniert gut... den Code musste ich dabei kaum anpassen:
Code: Alles auswählen
.proc drawto
			
* Schnelle Berechnung von Linien 
* 
* Parameter: XALT,YALT: Startpunkt 
*           <X>,<Y>   : Endpunkt
DRAWTO		STX XNEU	;Endpunkt merken 
			STY YNEU
			LDX XALT	;Anfangspunkt
			LDY YALT	;zeichnen
			JSR PLOT	; Sprung zur Plot-Routine
			
			LDA #0		;Flags ruecksetzen
			STA XFLAG
			STA YFLAG
			LDX XNEU	;Endpunkt in Register
			LDY YNEU	;(einfacher)
			CPX XALT	;Anfang = Ende?
			BNE DR1
			CPY YALT
			BNE DR1
 			RTS			;ja fertig!==>
DR1			CPX XALT	;Neuer Punkt ist
 			BCC DRX		;links von alten P.->
 			INC XFLAG	;rechts!
			TXA			;Delta ausrechnen
			SBC XALT
			JMP DR2
DRX			DEC XFLAG	;links!
			SEC
 			LDA XALT	;Delta her.
 			SBC XNEU
DR2			STA DELTAX	;Abstand merken
 			CPY YALT	;neuer Punkt ist
 			BCC DRY		;oberhalb alten P. 
 			INC YFLAG	;unterhalb
 			TYA
 			SBC YALT	;Delta berechnen
			JMP DR3
DRY			DEC YFLAG	;oberhalb
			SEC
			LDA YALT	;Abstand (delta)
			SBC YNEU
DR3			STA DELTAY	;und merken
			LDA XALT	;Neuer P.= alter P.
			STA XNEU
			LDA YALT
			STA YNEU
			LDA DELTAX	;welches Delta ist
			CMP DELTAY	;groesser?
			BCC DRYSTEP	;DY ist groesser->
			LDA DELTAY	;DX ist groesser!
			ASL
			STA HILFA	;Naeherung fuer
			LDA #0		;Schrittweite
			ROL
			STA HILFA+1
						;SUB HILFA,DELTAX,HILFT
			sec
			lda HILFA
			sbc DELTAX
			sta HILFT
			lda HILFA+1
			sbc #0
			sta HILFT+1
						;SUB HILFT,DELTAX,HILFB
			sec
			lda HILFT
			sbc DELTAX
			sta HILFB
			lda HILFT+1
			sbc #0
			sta HILFB+1
			
			LDA DELTAX	;Zaehler fuer
			STA ZAEHLER	;Pixels einrichten
DXSCHL		CLC
			LDA XNEU	;X weiterzaehlen
			ADC XFLAG
			STA XNEU
			LDA HILFT+1	;Schritt nach Y
			BPL DRX5	;erfoderlich? Ja->
			clc			;ADD HILFA,HILFT
			lda HILFT
			adc HILFA
			sta HILFT
			lda HILFT+1
			adc HILFA+1
			sta HILFT+1
			JMP DRX4	;kein Schritt
DRX5		 
			clc			;ADD HILFB,HILFT
			lda HILFT
			adc HILFB
			sta HILFT
			lda HILFT+1
			adc HILFB+1
			sta HILFT+1
			
			CLC
			LDA YNEU	;Schritt nach Y
			ADC YFLAG	;ausfuehren
			STA YNEU
DRX4		LDX XNEU	;Pixel plotten
			LDY YNEU
			JSR PLOT			; Sprung zur Plot-Routine
			DEC ZAEHLER	;ganzes Deltax
			BNE DXSCHL	;abgefahren? nein->
			JMP DREND 	;fertig !==>
DRYSTEP		LDA DELTAX	;Delta Y war groesser
			ASL
			STA HILFA	;Naeherung fuer
			LDA #0		;Schritt in X-Richt.
			ROL
			STA HILFA+1
						;SUB HILFA,DELTAY,HILFT
			sec
			lda HILFA
			sbc DELTAY
			sta HILFT
			lda HILFA+1
			sbc #0
			sta HILFT+1
						;SUB HILFT,DELTAY,HILFB
			sec
			lda HILFT
			sbc DELTAY
			sta HILFB
			lda HILFT+1
			sbc #0
			sta HILFB+1
			
			LDA DELTAY	;Zaehler fuer Abstand
			STA ZAEHLER	;einrichten
DYSCHL		CLC
			LDA YNEU	;Y weiterzaehlen
			ADC YFLAG
			STA YNEU
			LDA HILFT+1	;Schritt nach X
			BPL DRY5	;noetig? ja ->
			clc			;ADD HILFA,HILFT
			lda HILFT
			adc HILFA
			sta HILFT
			lda HILFT+1
			adc HILFA+1
			sta HILFT+1
			JMP DRY4	;keine X-Korrektur
DRY5		clc			;ADD HILFB,HILFT
			lda HILFT
			adc HILFB
			sta HILFT
			lda HILFT+1
			adc HILFB+1
			sta HILFT+1
			CLC
			LDA XNEU	;X-Korrektur aus-
			ADC XFLAG	;fuehren
			STA XNEU
DRY4		LDX XNEU	;Pixel ausgeben
			LDY YNEU
			JSR PLOT		; Sprung zur Plot-Routine
			DEC ZAEHLER	;alle Punkte?
			BNE DYSCHL	;nein —->
DREND		LDX XNEU	;Ende der Linie
			LDY YNEU	;kann Anfang einer
			STX XALT	;neuen sein.
			STY YALT
			RTS	
			
			.endpPeter


 
  
 


