home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1989 July
/
64er_Magazin_89-07_1989_Markt__Technik_de_Side_A.d64
/
line.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
3KB
|
67 lines
80 open1,8,2,"line.obj,p,w"
85 sys9*4096:.opt o1:*=$c000
86 .asc "using plot,3:program:"
90 ckcom = $aefd:frmnum = $ad8a
100 jsr frmnum:jsr $bc9b:lda $65:sta xl0:lda $64:sta xh0:jsr $e200:stx y0
110 jsr ckcom:jsr frmnum:jsr $bc9b:lda $65:sta xl1:lda $64:sta xh1
114 jsr $e200:stx y1:jsr $e200:stx modus
140 lda xl1:cmp xl0:bne l200
142 lda xh1:cmp xh0:bne l200
144 lda y1:cmp y0:bne l200
150 ; x1/y1 = x0/y0
160 lda modus:pha:lda xl0:ldx xh0:ldy y0:jmp plot2
190 ; *** linie ***
200 l200 lda #0:sta dyh:lda y1:sec:sbc y0:sta dyl:sta absdy:bcs l210
204 eor #255:sta absdy:inc absdy:lda #255:sta dyh; zweierkomplement
210 l210 lda xl1:sec:sbc xl0:sta dxl:sta absdxl
211 lda xh1:sbc xh0:sta dxh:sta absdxh:bcs l220
212 lda dxl:eor #255:clc:adc #1:sta absdxl
214 lda dxh:eor #255:adc #0:sta absdxh
218 ; *** max (absdx,absdy) ***
220 l220 lda #$80:sta mid:lda #0:sta low
222 lda absdxh:bne xgroesser:lda absdxl:cmp absdy:bcs xgroesser
224 jmp ygroesser
230 ; *** dx > dy ***
232 xgroesser lda dyh:ldy dyl:jsr $b395:ldx abl+1:ldy abl+2:jsr $bbd4
234 lda dxh:ldy dxl:jsr $b395
235 lda abl+1:ldy abl+2:jsr $bb0f
236 lda $61:clc:adc #16:sta $61:jsr $bc9b
240 lda dxh:bpl linx:jsr tauschen
250 ; *** linie ziehen ***
252 linx lda xl0:sta xl:lda xh0:sta xh:lda y0:sta yb
254 l254 jsr plot:inc xl:bne l256:inc xh
256 l256 lda low:clc:adc $65:sta low:lda mid:adc $64:sta mid
257 lda yb:adc $63:sta yb
258 sec:lda xl1:sbc xl:lda xh1:sbc xh:bcs l254:rts
270 ; *** dy > dx ***
272 ygroesser lda dxh:ldy dxl:jsr $b395:ldx abl+1:ldy abl+2:jsr $bbd4
274 lda dyh:ldy dyl:jsr $b395
275 lda abl+1:ldy abl+2:jsr $bb0f
276 lda $61:clc:adc #16:sta $61:jsr $bc9b
280 lda dyh:bpl liny:jsr tauschen
290 ; *** linie ziehen ***
292 liny lda xl0:sta xl:lda xh0:sta xh:lda y0:sta yb
294 l294 jsr plot
296 lda low:clc:adc $65:sta low:lda mid:adc $64:sta mid
297 lda xl:adc $63:sta xl:lda xh:adc $62:sta xh
298 l298 inc yb:lda yb:cmp y1:bcc l294:rts
320 ; *** x0/y0 und x1/y1 tauschen ***
322 tauschen lda xl1:pha:lda xl0:sta xl1:pla:sta xl0
323 lda xh1:pha:lda xh0:sta xh1:pla:sta xh0
324 lda y0:pha:lda y1:sta y0:pla:sta y1::rts
350 ; plotroutine anspringen
352 plot lda modus:pha:lda xl:ldx xh:ldy yb:plot2 jmp $ffff
480 abl lda abl2
500 ; *** local variable ***
502 abl2 .byte $ff,0,0,0,0
504 low .byte 00:mid .byte 00
506 xl .byte 00:xh .byte 00
508 xl0 .byte 00:xl1 .byte 00
510 xh0 .byte 00:xh1 .byte 00
512 y0 .byte 00:y1 .byte 00:yb .byte 00
514 dyl .byte 00:dyh .byte 00
516 dxl .byte 00:dxh .byte 00
518 absdxl .byte 00:absdxh .byte 00:absdy .byte 00
520 modus .byte 00
610 .end:close1