0100 ; DRAWTO ROUTINE BY JEFF BRENNER›0110 ;›0120 ; BASED ON DDA BASIC ALGORITHM›0130 ; DETAILED BY MIKE HIGGINS,›0140 ; "FAST LINE-DRAWING TECHNIQUE,"›0150 ; BYTE MAGAZINE, (AUGUST 1981),›0160 ; pp. 414-416›0170 ;›0180 ; FORM: A=USR(DRAWTO,X,Y)›0190 ;›0200 DELTAX = $D4›0210 DELTAY = $D5›0220 ADDX2 = $D6›0230 ADDY2 = $D7›0240 ADDX =  $D8›0250 ADDY =  $D9›0260 SLOPECALC = $DA›0270 COUNT = $DB›0280 OLDX =  $CE›0290 OLDY =  $CF›0300 DRAWTOX = 97›0310 DRAWTOY = 96›0320 ;›0330     *=  $0600   ;RELOCATABLE›0340 ;›0350 DRAWTO PLA ›0360     PLA ›0370     PLA ›0380     BMI RET1›0390     CMP #40     ;HORIZ POS>39 OR <0?›0400     BCS RET1›0410     ADC #24›0420     STA DRAWTOX ;X TO DRAW TO›0430     PLA ›0440     PLA ›0450     CMP #0›0460     BCC RET2›0470     CMP #192    ;VERT POS>191 OR <0?›0480     BCS RET2›0490     ADC #32›0500     STA DRAWTOY ;Y TO DRAW TO›0510     LDX #0›0520     STX ADDX2›0530     STX ADDY›0540     INX ›0550     STX COUNT›0560     STX ADDY2›0570     STX ADDX›0580     LDA DRAWTOX›0590     SEC ›0600     SBC OLDX    ;DRAWTOX-OLDX›0610     BCS SKIP1›0620     DEC ADDX›0630     DEC ADDX›0640     LDA OLDX›0650     SEC ›0660     SBC DRAWTOX›0670 SKIP1 STA DELTAX›0680     LDA DRAWTOY›0690     SEC ›0700     SBC OLDY    ;DRAWTOY-OLDY›0710     BCS SKIP2›0720     DEC ADDY2›0730     DEC ADDY2›0740     LDA OLDY›0750     SEC ›0760     SBC DRAWTOY›0770 SKIP2 STA DELTAY›0780     LDA DELTAX›0790     CMP DELTAY›0800     BCS SKIP3›0810     LDX DELTAX  ;DELTAX<DELTAY? SWITCH›0820     LDA DELTAY›0830     STA DELTAX›0840     TXA ›0850     STA DELTAY›0860     LDA ADDX›0870     STA ADDX2›0880     LDA ADDY2›0890     STA ADDY›0900     LDA #0›0910     STA ADDX›0920     STA ADDY2›0930 SKIP3 LDA DELTAX›0940     LSR A›0950     STA SLOPECALC›0960     LDA DELTAX›0970     BEQ RETURN›0980     BNE MAIN›0990 RET1 PLA ›1000     PLA ›1010 RET2 RTS ›1020 MAIN LDA OLDX   ;ADD X OFFSET›1030     CLC ›1040     ADC ADDX›1050     STA OLDX›1060     LDA OLDY    ;ADD Y OFFSET›1070     CLC ›1080     ADC ADDY›1090     STA OLDY›1100     INC COUNT›1110     LDA SLOPECALC›1120     CLC ›1130     ADC DELTAY›1140     STA SLOPECALC›1150     LDA DELTAX›1160     CMP SLOPECALC›1170     BCS PLOT›1180     LDA SLOPECALC›1190     SEC ›1200     SBC DELTAX›1210     STA SLOPECALC›1220     LDA OLDX›1230     CLC ›1240     ADC ADDX2   ;SIMILAR TO ADDX›1250     STA OLDX›1260     LDA OLDY›1270     CLC ›1280     ADC ADDY2   ;SIMILAR TO ADDY›1290     STA OLDY›1300 PLOT LDA DELTAX›1310     CMP COUNT   ;COUNT>DELTAX? DONE›1320     BCC RETURN›1330     JSR $FFFF   ;REPLACED WITH PLOT ADDR›1340     SEC ›1350     BCS MAIN›1360 RETURN LDA DRAWTOY›1370     STA OLDY    ;PLOT LAST POINT›1380     LDA DRAWTOX›1390     STA OLDX›1400     JMP $FFFF   ;PLOT ROUTINE›1410     .END ›