From 20582afca51d54b21c8c347fceb55dc460ec5042 Mon Sep 17 00:00:00 2001 From: cuz Date: Wed, 26 Nov 2003 21:17:29 +0000 Subject: [PATCH] Patches by Stefan Haubenthal git-svn-id: svn://svn.cc65.org/cc65/trunk@2687 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- libsrc/apple2/apple2-280-192-6.s | 74 ++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 23 deletions(-) diff --git a/libsrc/apple2/apple2-280-192-6.s b/libsrc/apple2/apple2-280-192-6.s index 529321a20..7fa3dbc13 100644 --- a/libsrc/apple2/apple2-280-192-6.s +++ b/libsrc/apple2/apple2-280-192-6.s @@ -2,8 +2,7 @@ ; Graphics driver for the 280x192x6 mode on the Apple II ; ; Stefan Haubenthal -; 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 ; -- 2.39.5