Patches by Stefan Haubenthal

git-svn-id: svn://svn.cc65.org/cc65/trunk@2687 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2003-11-26 21:17:29 +00:00
parent 9fea0c5c42
commit 20582afca5

View file

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