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 >
Commodore BASIC  |  2022-10-26  |  3KB  |  67 lines

  1. 80 open1,8,2,"line.obj,p,w"
  2. 85 sys9*4096:.opt o1:*=$c000
  3. 86 .asc "using plot,3:program:"
  4. 90 ckcom = $aefd:frmnum = $ad8a
  5. 100 jsr frmnum:jsr $bc9b:lda $65:sta xl0:lda $64:sta xh0:jsr $e200:stx y0
  6. 110 jsr ckcom:jsr frmnum:jsr $bc9b:lda $65:sta xl1:lda $64:sta xh1
  7. 114 jsr $e200:stx y1:jsr $e200:stx modus
  8. 140 lda xl1:cmp xl0:bne l200
  9. 142 lda xh1:cmp xh0:bne l200
  10. 144 lda y1:cmp y0:bne l200
  11. 150 ; x1/y1 = x0/y0
  12. 160 lda modus:pha:lda xl0:ldx xh0:ldy y0:jmp plot2
  13. 190 ; *** linie ***
  14. 200 l200 lda #0:sta dyh:lda y1:sec:sbc y0:sta dyl:sta absdy:bcs l210
  15. 204 eor #255:sta absdy:inc absdy:lda #255:sta dyh; zweierkomplement
  16. 210 l210 lda xl1:sec:sbc xl0:sta dxl:sta absdxl
  17. 211 lda xh1:sbc xh0:sta dxh:sta absdxh:bcs l220
  18. 212 lda dxl:eor #255:clc:adc #1:sta absdxl
  19. 214 lda dxh:eor #255:adc #0:sta absdxh
  20. 218 ; *** max (absdx,absdy) ***
  21. 220 l220 lda #$80:sta mid:lda #0:sta low
  22. 222 lda absdxh:bne xgroesser:lda absdxl:cmp absdy:bcs xgroesser
  23. 224 jmp ygroesser
  24. 230 ; *** dx > dy ***
  25. 232 xgroesser lda dyh:ldy dyl:jsr $b395:ldx abl+1:ldy abl+2:jsr $bbd4
  26. 234 lda dxh:ldy dxl:jsr $b395
  27. 235 lda abl+1:ldy abl+2:jsr $bb0f
  28. 236 lda $61:clc:adc #16:sta $61:jsr $bc9b
  29. 240 lda dxh:bpl linx:jsr tauschen
  30. 250 ; *** linie ziehen ***
  31. 252 linx lda xl0:sta xl:lda xh0:sta xh:lda y0:sta yb
  32. 254 l254 jsr plot:inc xl:bne l256:inc xh
  33. 256 l256 lda low:clc:adc $65:sta low:lda mid:adc $64:sta mid
  34. 257 lda yb:adc $63:sta yb
  35. 258 sec:lda xl1:sbc xl:lda xh1:sbc xh:bcs l254:rts
  36. 270 ; *** dy > dx ***
  37. 272 ygroesser lda dxh:ldy dxl:jsr $b395:ldx abl+1:ldy abl+2:jsr $bbd4
  38. 274 lda dyh:ldy dyl:jsr $b395
  39. 275 lda abl+1:ldy abl+2:jsr $bb0f
  40. 276 lda $61:clc:adc #16:sta $61:jsr $bc9b
  41. 280 lda dyh:bpl liny:jsr tauschen
  42. 290 ; *** linie ziehen ***
  43. 292 liny lda xl0:sta xl:lda xh0:sta xh:lda y0:sta yb
  44. 294 l294 jsr plot
  45. 296 lda low:clc:adc $65:sta low:lda mid:adc $64:sta mid
  46. 297 lda xl:adc $63:sta xl:lda xh:adc $62:sta xh
  47. 298 l298 inc yb:lda yb:cmp y1:bcc l294:rts
  48. 320 ; *** x0/y0 und x1/y1 tauschen ***
  49. 322 tauschen lda xl1:pha:lda xl0:sta xl1:pla:sta xl0
  50. 323 lda xh1:pha:lda xh0:sta xh1:pla:sta xh0
  51. 324 lda y0:pha:lda y1:sta y0:pla:sta y1::rts
  52. 350 ; plotroutine anspringen
  53. 352 plot lda modus:pha:lda xl:ldx xh:ldy yb:plot2 jmp $ffff
  54. 480 abl lda abl2
  55. 500 ; *** local variable ***
  56. 502 abl2 .byte $ff,0,0,0,0
  57. 504 low .byte 00:mid .byte 00
  58. 506 xl .byte 00:xh .byte 00
  59. 508 xl0 .byte 00:xl1 .byte 00
  60. 510 xh0 .byte 00:xh1 .byte 00
  61. 512 y0 .byte 00:y1 .byte 00:yb .byte 00
  62. 514 dyl .byte 00:dyh .byte 00
  63. 516 dxl .byte 00:dxh .byte 00
  64. 518 absdxl .byte 00:absdxh .byte 00:absdy .byte 00
  65. 520 modus .byte 00
  66. 610 .end:close1
  67.