]> git.sur5r.net Git - cc65/commitdiff
Oliver Schmidt fixed errors in the LINE and SETPIXELCLIP routines.
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 25 Feb 2008 07:47:04 +0000 (07:47 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 25 Feb 2008 07:47:04 +0000 (07:47 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3812 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/c128/c128-640-200-2.s
libsrc/c128/c128-640-480-2.s

index e195a4a864c2586296162a5b0d7d2da999c64864..3dfed639f8de951c1ece4d6319d5b160edf960e5 100644 (file)
@@ -141,6 +141,7 @@ NY:          .res   2
 Y3:
 DX:             .res   1
 DY:             .res   1
+AX:             .res   1
 AY:             .res   1
 
 ; Text output stuff
@@ -508,25 +509,25 @@ SETPIXELCLIP:
        bmi     @finito         ; y<0
        lda     X1+1
        bmi     @finito         ; x<0
-       lda     xres
-       ldx     xres+1
+       lda     X1
+       ldx     X1+1
        sta     ADDR
        stx     ADDR+1
        ldx     #ADDR
-       lda     X1
-       ldy     X1+1
-       jsr     icmp            ; if (xres<x1)
-       bcs     @cont           ; !(xres<x1)
-@finito:rts
-@cont: lda     yres
-       ldx     yres+1
+       lda     xres
+       ldy     xres+1
+       jsr     icmp            ; ( x < xres ) ...
+       bcs     @finito
+       lda     Y1
+       ldx     Y1+1
        sta     ADDR
        stx     ADDR+1
        ldx     #ADDR
-       lda     Y1
-       ldy     Y1+1
-       jsr     icmp            ; if (yres<y1)
-       bcc     @finito
+       lda     yres
+       ldy     yres+1
+       jsr     icmp            ; ... && ( y < yres )
+       bcc     SETPIXEL
+@finito:rts
 
 SETPIXEL:
         jsr     CALC            ; Calculate coordinates
@@ -634,10 +635,11 @@ LINE:
        ; dy = -1;
 @L024A:        lda     #$ff
 @L024B:        sta     DY
-       ; err = ay = 0;
+       ; err = ax = ay = 0;
        lda     #0
        sta     ERR
        sta     ERR+1
+       sta     AX
        sta     AY
 
        ; if (nx<ny) {
@@ -655,8 +657,11 @@ LINE:
        ldx     NY+1
        sta     NY+1
        stx     NX+1
-       ; ay = dx
+       ; ax = dx
        lda     DX
+       sta     AX
+       ; ay = dy
+       lda     DY
        sta     AY
        ; dx = dy = 0;
        lda     #0
@@ -734,10 +739,10 @@ LINE:
        lda     PB
        ldx     PB+1
        jmp     @L0312
-       ; } else { x1 = x1 + ay
+       ; } else { x1 = x1 + ax
 @L027F:
        ldx     #0
-       lda     AY
+       lda     AX
        bpl     @L0288
        dex
 @L0288:        clc
index f30f09bb6c0cb4d29143dfc5bbc2bf6e43ee8bc4..9090bd4ffdf25379fa713f1277ddf9facd764dcc 100644 (file)
@@ -140,6 +140,7 @@ NY:          .res   2
 Y3:
 DX:             .res   1
 DY:             .res   1
+AX:             .res   1
 AY:             .res   1
 
 ; Text output stuff
@@ -506,25 +507,25 @@ SETPIXELCLIP:
        bmi     @finito         ; y<0
        lda     X1+1
        bmi     @finito         ; x<0
-       lda     xres
-       ldx     xres+1
+       lda     X1
+       ldx     X1+1
        sta     ADDR
        stx     ADDR+1
        ldx     #ADDR
-       lda     X1
-       ldy     X1+1
-       jsr     icmp            ; if (xres<x1)
-       bcs     @cont           ; !(xres<x1)
-@finito:rts
-@cont: lda     yres
-       ldx     yres+1
+       lda     xres
+       ldy     xres+1
+       jsr     icmp            ; ( x < xres ) ...
+       bcs     @finito
+       lda     Y1
+       ldx     Y1+1
        sta     ADDR
        stx     ADDR+1
        ldx     #ADDR
-       lda     Y1
-       ldy     Y1+1
-       jsr     icmp            ; if (yres<y1)
-       bcc     @finito
+       lda     yres
+       ldy     yres+1
+       jsr     icmp            ; ... && ( y < yres )
+       bcc     SETPIXEL
+@finito:rts
 
 SETPIXEL:
         jsr     CALC            ; Calculate coordinates
@@ -632,10 +633,11 @@ LINE:
        ; dy = -1;
 @L024A:        lda     #$ff
 @L024B:        sta     DY
-       ; err = ay = 0;
+       ; err = ax = ay = 0;
        lda     #0
        sta     ERR
        sta     ERR+1
+       sta     AX
        sta     AY
 
        ; if (nx<ny) {
@@ -653,8 +655,11 @@ LINE:
        ldx     NY+1
        sta     NY+1
        stx     NX+1
-       ; ay = dx
+       ; ax = dx
        lda     DX
+       sta     AX
+       ; ay = dy
+       lda     DY
        sta     AY
        ; dx = dy = 0;
        lda     #0
@@ -732,10 +737,10 @@ LINE:
        lda     PB
        ldx     PB+1
        jmp     @L0312
-       ; } else { x1 = x1 + ay
+       ; } else { x1 = x1 + ax
 @L027F:
        ldx     #0
-       lda     AY
+       lda     AX
        bpl     @L0288
        dex
 @L0288:        clc