]> git.sur5r.net Git - cc65/commitdiff
Patches by Stefan Haubenthal
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 26 Nov 2003 21:17:29 +0000 (21:17 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 26 Nov 2003 21:17:29 +0000 (21:17 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2687 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/apple2/apple2-280-192-6.s

index 529321a201e4b482e3802caeaa890f9aeeccfdaf..7fa3dbc13123ddac17c5ded92a8c4f0716d08880 100644 (file)
@@ -2,8 +2,7 @@
 ; Graphics driver for the 280x192x6 mode on the Apple II
 ;
 ; Stefan Haubenthal <polluks@sdf.lonestar.org>
-; Based on Stephen L. Judd's GRLIB code and
-; Maciej Witkowiak's circle routine
+; Based on Maciej Witkowiak's circle routine
 ;
 
        .include        "zeropage.inc"
@@ -233,7 +232,7 @@ INIT:
 ; Switch into graphics mode
 
        jsr     HGR
-       lda     MIXOFF
+       bit     MIXOFF
 
 ; Done, reset the error code
 
@@ -289,9 +288,9 @@ CLEAR               = HCLR
 SETVIEWPAGE:
        tax
        beq     @L1
-       lda     PG2ON
+       bit     PG2ON
        rts
-@L1:   lda     PG2OFF
+@L1:   bit     PG2OFF
        rts
 
 ; ------------------------------------------------------------------------
@@ -393,7 +392,7 @@ SETPIXEL:
        ldy     X1+1
        lda     Y1
        jmp     HPLOT
-
+       
 ; ------------------------------------------------------------------------
 ; GETPIXEL: Read the color value of a pixel and return it in A/X. The
 ; coordinates passed to this function are never outside the visible screen
@@ -401,9 +400,38 @@ SETPIXEL:
 
 
 GETPIXEL:
-       lda     #TGI_ERR_INV_FUNC
-       sta     ERROR
-       rts
+               ldx     X1
+               ldy     X1+1
+               lda     Y1
+               jsr     HPOSN           ; 1st pixel
+HBASL          =       $26
+HMASK          =       $30
+               ldx     #0
+               lda     (HBASL),y
+               and     HMASK
+               beq     @L1
+               inx
+@L1:           stx     tmp1
+               lda     $E0             ; which neighbour
+               tax
+               and     #$01
+               bne     @odd
+               asl     tmp1
+               inx
+               .byte   $24
+@odd:          dex
+               ldy     $E1
+               lda     $E2
+               jsr     HPOSN           ; 2nd pixel
+               ldx     #0
+               lda     (HBASL),y
+               and     HMASK
+               beq     @L2
+               inx
+@L2:           txa
+               ora     tmp1
+               ldx     #0
+        rts
 
 ; ------------------------------------------------------------------------
 ; LINE: Draw a line from X1/Y1 to X2/Y2, where X1/Y1 = ptr1/ptr2 and
@@ -413,14 +441,14 @@ GETPIXEL:
 ;
 
 LINE:
-       ldx     X1
-       ldy     X1+1
-       lda     Y1
-       jsr     HPOSN
-       lda     X2
-       ldx     X2+1
-       ldy     Y2
-       jmp     HLIN
+               ldx     X1
+               ldy     X1+1
+               lda     Y1
+               jsr     HPOSN
+               lda     X2
+               ldx     X2+1
+               ldy     Y2
+               jmp     HLIN
 
 ; ------------------------------------------------------------------------
 ; BAR: Draw a filled rectangle with the corners X1/Y1, X2/Y2, where
@@ -428,12 +456,12 @@ LINE:
 ; Contrary to most other functions, the graphics kernel will sort and clip
 ; the coordinates before calling the driver, so on entry the following
 ; conditions are valid:
-;      X1 <= X2
-;      Y1 <= Y2
-;      (X1 >= 0) && (X1 < XRES)
-;      (X2 >= 0) && (X2 < XRES)
-;      (Y1 >= 0) && (Y1 < YRES)
-;      (Y2 >= 0) && (Y2 < YRES)
+;              X1 <= X2
+;              Y1 <= Y2
+;              (X1 >= 0) && (X1 < XRES)
+;              (X2 >= 0) && (X2 < XRES)
+;              (Y1 >= 0) && (Y1 < YRES)
+;              (Y2 >= 0) && (Y2 < YRES)
 ;
 ; Must set an error code: NO
 ;