Added ioctl for mixing graphics with 4 lines of text.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4521 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -81,7 +81,7 @@ Y2 := ptr4
|
|||||||
.word 280 ; X resolution
|
.word 280 ; X resolution
|
||||||
.word 192 ; Y resolution
|
.word 192 ; Y resolution
|
||||||
.byte 8 ; Number of drawing colors
|
.byte 8 ; Number of drawing colors
|
||||||
.byte 2 ; Number of screens available
|
pages: .byte 2 ; Number of screens available
|
||||||
.byte 7 ; System font X size
|
.byte 7 ; System font X size
|
||||||
.byte 8 ; System font Y size
|
.byte 8 ; System font Y size
|
||||||
.word $100 ; Aspect ratio
|
.word $100 ; Aspect ratio
|
||||||
@@ -118,10 +118,6 @@ Y2 := ptr4
|
|||||||
|
|
||||||
ERROR: .res 1 ; Error code
|
ERROR: .res 1 ; Error code
|
||||||
|
|
||||||
.ifdef __APPLE2ENH__
|
|
||||||
Set80: .res 1 ; Set 80 column store
|
|
||||||
.endif
|
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
|
|
||||||
.rodata
|
.rodata
|
||||||
@@ -139,6 +135,28 @@ FONT:
|
|||||||
|
|
||||||
.code
|
.code
|
||||||
|
|
||||||
|
; INSTALL routine. Is called after the driver is loaded into memory. May
|
||||||
|
; initialize anything that has to be done just once. Is probably empty
|
||||||
|
; most of the time.
|
||||||
|
; Must set an error code: NO
|
||||||
|
INSTALL:
|
||||||
|
.ifdef __APPLE2ENH__
|
||||||
|
; No page switching if 80 column store is enabled
|
||||||
|
lda #$02
|
||||||
|
bit RD80COL
|
||||||
|
bpl :+
|
||||||
|
lda #$01
|
||||||
|
: sta pages
|
||||||
|
.endif
|
||||||
|
|
||||||
|
; Fall through
|
||||||
|
|
||||||
|
; UNINSTALL routine. Is called before the driver is removed from memory. May
|
||||||
|
; clean up anything done by INSTALL but is probably empty most of the time.
|
||||||
|
; Must set an error code: NO
|
||||||
|
UNINSTALL:
|
||||||
|
rts
|
||||||
|
|
||||||
; INIT: Changes an already installed device from text mode to graphics mode.
|
; INIT: Changes an already installed device from text mode to graphics mode.
|
||||||
; Note that INIT/DONE may be called multiple times while the driver
|
; Note that INIT/DONE may be called multiple times while the driver
|
||||||
; is loaded, while INSTALL is only called once, so any code that is needed
|
; is loaded, while INSTALL is only called once, so any code that is needed
|
||||||
@@ -149,16 +167,10 @@ FONT:
|
|||||||
; active, so there is no need to protect against that.
|
; active, so there is no need to protect against that.
|
||||||
; Must set an error code: YES
|
; Must set an error code: YES
|
||||||
INIT:
|
INIT:
|
||||||
.ifdef __APPLE2ENH__
|
|
||||||
; Save and clear 80 column store
|
|
||||||
lda RD80COL
|
|
||||||
sta Set80
|
|
||||||
sta CLR80COL
|
|
||||||
.endif
|
|
||||||
|
|
||||||
; Switch into graphics mode
|
; Switch into graphics mode
|
||||||
bit HIRES
|
|
||||||
bit MIXCLR
|
bit MIXCLR
|
||||||
|
bit LOWSCR
|
||||||
|
bit HIRES
|
||||||
bit TXTCLR
|
bit TXTCLR
|
||||||
|
|
||||||
; Beagle Bros Shape Mechanic fonts don't
|
; Beagle Bros Shape Mechanic fonts don't
|
||||||
@@ -169,20 +181,6 @@ INIT:
|
|||||||
; Done, reset the error code
|
; Done, reset the error code
|
||||||
lda #TGI_ERR_OK
|
lda #TGI_ERR_OK
|
||||||
sta ERROR
|
sta ERROR
|
||||||
|
|
||||||
; Fall through
|
|
||||||
|
|
||||||
; INSTALL routine. Is called after the driver is loaded into memory. May
|
|
||||||
; initialize anything that has to be done just once. Is probably empty
|
|
||||||
; most of the time.
|
|
||||||
; Must set an error code: NO
|
|
||||||
INSTALL:
|
|
||||||
; Fall through
|
|
||||||
|
|
||||||
; UNINSTALL routine. Is called before the driver is removed from memory. May
|
|
||||||
; clean up anything done by INSTALL but is probably empty most of the time.
|
|
||||||
; Must set an error code: NO
|
|
||||||
UNINSTALL:
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
; DONE: Will be called to switch the graphics device back into text mode.
|
; DONE: Will be called to switch the graphics device back into text mode.
|
||||||
@@ -194,13 +192,14 @@ DONE:
|
|||||||
bit TXTSET
|
bit TXTSET
|
||||||
bit LOWSCR
|
bit LOWSCR
|
||||||
|
|
||||||
.ifdef __APPLE2ENH__
|
.ifdef __APPLE2ENH__
|
||||||
; Restore 80 column store
|
; Limit SET80COL-HISCR to text
|
||||||
lda Set80
|
bit LORES
|
||||||
bpl :+
|
.endif
|
||||||
sta SET80COL
|
|
||||||
: bit LORES ; Limit SET80COL-HISCR to text
|
; Reset the text window top
|
||||||
.endif
|
lda #$00
|
||||||
|
sta WNDTOP
|
||||||
rts
|
rts
|
||||||
|
|
||||||
; GETERROR: Return the error code in A and clear it.
|
; GETERROR: Return the error code in A and clear it.
|
||||||
@@ -210,6 +209,36 @@ GETERROR:
|
|||||||
stx ERROR
|
stx ERROR
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
; CONTROL: Platform/driver specific entry point.
|
||||||
|
; Must set an error code: YES
|
||||||
|
CONTROL:
|
||||||
|
; Check val msb and code to be 0
|
||||||
|
ora ptr1+1
|
||||||
|
bne err
|
||||||
|
|
||||||
|
; Check val lsb to be [0..1]
|
||||||
|
lda ptr1
|
||||||
|
cmp #1+1
|
||||||
|
bcs err
|
||||||
|
|
||||||
|
; Set text window top
|
||||||
|
tax
|
||||||
|
beq :+
|
||||||
|
lda #20
|
||||||
|
: sta WNDTOP
|
||||||
|
|
||||||
|
; Switch 4 lines of text
|
||||||
|
.assert MIXCLR + 1 = MIXSET, error
|
||||||
|
lda MIXCLR,x ; No BIT absolute,X available
|
||||||
|
|
||||||
|
lda #TGI_ERR_OK
|
||||||
|
beq :+ ; Branch always
|
||||||
|
|
||||||
|
; Done, set the error code
|
||||||
|
err: lda #TGI_ERR_INV_ARG
|
||||||
|
: sta ERROR
|
||||||
|
rts
|
||||||
|
|
||||||
; CLEAR: Clears the screen.
|
; CLEAR: Clears the screen.
|
||||||
; Must set an error code: NO
|
; Must set an error code: NO
|
||||||
CLEAR:
|
CLEAR:
|
||||||
@@ -249,11 +278,6 @@ SETCOLOR:
|
|||||||
bit $C080 ; Switch in LC bank 2 for R/O
|
bit $C080 ; Switch in LC bank 2 for R/O
|
||||||
rts
|
rts
|
||||||
|
|
||||||
; CONTROL: Platform/driver specific entry point.
|
|
||||||
; Must set an error code: YES
|
|
||||||
CONTROL:
|
|
||||||
; Fall through
|
|
||||||
|
|
||||||
; SETPALETTE: Set the palette (not available with all drivers/hardware).
|
; SETPALETTE: Set the palette (not available with all drivers/hardware).
|
||||||
; A pointer to the palette is passed in ptr1. Must set an error if palettes
|
; A pointer to the palette is passed in ptr1. Must set an error if palettes
|
||||||
; are not supported
|
; are not supported
|
||||||
|
|||||||
Reference in New Issue
Block a user