Patches by Stefan Haubenthal
git-svn-id: svn://svn.cc65.org/cc65/trunk@2687 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
9fea0c5c42
commit
20582afca5
1 changed files with 51 additions and 23 deletions
|
@ -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
|
||||||
;
|
;
|
||||||
|
|
Loading…
Add table
Reference in a new issue