1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-24 11:31:31 +00:00

Added TGI_COLOR_... macros to be used both for hires and lores. Introduced color mapping on lores to allow for common color macros.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4992 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
ol.sc 2011-04-25 11:16:56 +00:00
parent 98fdd6f792
commit 012e3e456a
3 changed files with 87 additions and 79 deletions

View File

@ -49,65 +49,63 @@
/* Color Defines */ /* Color defines */
#define COLOR_BLACK 0x00 #define COLOR_BLACK 0x00
#define COLOR_GREEN 0x01 #define COLOR_WHITE 0x01
#define COLOR_VIOLET 0x02
#define COLOR_WHITE 0x03
#define COLOR_BLACK2 0x04
#define COLOR_ORANGE 0x05
#define COLOR_BLUE 0x06
#define COLOR_WHITE2 0x07
#define LORES_BLACK 0x00 /* TGI color defines */
#define LORES_MAGENTA 0x01 #define TGI_COLOR_BLACK 0x00
#define LORES_DARKBLUE 0x02 #define TGI_COLOR_GREEN 0x01
#define LORES_VIOLET 0x03 #define TGI_COLOR_VIOLET 0x02
#define LORES_DARKGREEN 0x04 #define TGI_COLOR_WHITE 0x03
#define LORES_GRAY 0x05 #define TGI_COLOR_BLACK2 0x04
#define LORES_BLUE 0x06 #define TGI_COLOR_ORANGE 0x05
#define LORES_CYAN 0x07 #define TGI_COLOR_BLUE 0x06
#define LORES_BROWN 0x08 #define TGI_COLOR_WHITE2 0x07
#define LORES_ORANGE 0x09
#define LORES_GRAY2 0x0A #define TGI_COLOR_MAGENTA TGI_COLOR_BLACK2
#define LORES_PINK 0x0B #define TGI_COLOR_DARKBLUE TGI_COLOR_WHITE2
#define LORES_GREEN 0x0C #define TGI_COLOR_DARKGREEN 0x08
#define LORES_YELLOW 0x0D #define TGI_COLOR_GRAY 0x09
#define LORES_AQUA 0x0E #define TGI_COLOR_CYAN 0x0A
#define LORES_WHITE 0x0F #define TGI_COLOR_BROWN 0x0B
#define TGI_COLOR_GRAY2 0x0C
#define TGI_COLOR_PINK 0x0D
#define TGI_COLOR_YELLOW 0x0E
#define TGI_COLOR_AQUA 0x0F
/* Characters codes */ /* Characters codes */
#define CH_ENTER 0x0D #define CH_ENTER 0x0D
#define CH_ESC 0x1B #define CH_ESC 0x1B
#define CH_CURS_LEFT 0x08 #define CH_CURS_LEFT 0x08
#define CH_CURS_RIGHT 0x15 #define CH_CURS_RIGHT 0x15
#define CH_ULCORNER '+' #define CH_ULCORNER '+'
#define CH_URCORNER '+' #define CH_URCORNER '+'
#define CH_LLCORNER '+' #define CH_LLCORNER '+'
#define CH_LRCORNER '+' #define CH_LRCORNER '+'
#define CH_TTEE '+' #define CH_TTEE '+'
#define CH_BTEE '+' #define CH_BTEE '+'
#define CH_LTEE '+' #define CH_LTEE '+'
#define CH_RTEE '+' #define CH_RTEE '+'
#define CH_CROSS '+' #define CH_CROSS '+'
/* Return codes for get_ostype */ /* Return codes for get_ostype */
#define APPLE_UNKNOWN 0x00 #define APPLE_UNKNOWN 0x00
#define APPLE_II 0x10 /* Apple ][ */ #define APPLE_II 0x10 /* Apple ][ */
#define APPLE_IIPLUS 0x11 /* Apple ][+ */ #define APPLE_IIPLUS 0x11 /* Apple ][+ */
#define APPLE_IIIEM 0x20 /* Apple /// (emulation) */ #define APPLE_IIIEM 0x20 /* Apple /// (emulation) */
#define APPLE_IIE 0x30 /* Apple //e */ #define APPLE_IIE 0x30 /* Apple //e */
#define APPLE_IIEENH 0x31 /* Apple //e (enhanced) */ #define APPLE_IIEENH 0x31 /* Apple //e (enhanced) */
#define APPLE_IIECARD 0x40 /* Apple //e Option Card */ #define APPLE_IIECARD 0x40 /* Apple //e Option Card */
#define APPLE_IIC 0x50 /* Apple //c */ #define APPLE_IIC 0x50 /* Apple //c */
#define APPLE_IIC35 0x51 /* Apple //c (3.5 ROM) */ #define APPLE_IIC35 0x51 /* Apple //c (3.5 ROM) */
#define APPLE_IICEXP 0x53 /* Apple //c (Mem. Exp.) */ #define APPLE_IICEXP 0x53 /* Apple //c (Mem. Exp.) */
#define APPLE_IICREV 0x54 /* Apple //c (Rev. Mem. Exp.) */ #define APPLE_IICREV 0x54 /* Apple //c (Rev. Mem. Exp.) */
#define APPLE_IICPLUS 0x55 /* Apple //c Plus */ #define APPLE_IICPLUS 0x55 /* Apple //c Plus */
#define APPLE_IIGS 0x80 /* Apple IIgs */ #define APPLE_IIGS 0x80 /* Apple IIgs */
#define APPLE_IIGS1 0x81 /* Apple IIgs (ROM 1) */ #define APPLE_IIGS1 0x81 /* Apple IIgs (ROM 1) */
#define APPLE_IIGS3 0x83 /* Apple IIgs (ROM 3) */ #define APPLE_IIGS3 0x83 /* Apple IIgs (ROM 3) */
extern unsigned char _dos_type; extern unsigned char _dos_type;
/* Valid _dos_type values: /* Valid _dos_type values:
@ -140,8 +138,8 @@ extern unsigned char _dos_type;
/* The file stream implementation and the POSIX I/O functions will use the /* The file stream implementation and the POSIX I/O functions will use the
* following variables to determine the file type and the aux type to use. * following variables to determine the file type and the aux type to use.
*/ */
extern unsigned char _filetype; /* Default 6 */ extern unsigned char _filetype; /* Default 6 */
extern unsigned int _auxtype; /* Default 0 */ extern unsigned int _auxtype; /* Default 0 */
@ -168,12 +166,12 @@ int __fastcall__ rootdir (unsigned char drive, char* buf);
* ProDOS 8 drive. Returns 0 on success and -1 on error. * ProDOS 8 drive. Returns 0 on success and -1 on error.
*/ */
#define ser_apple2_slot(num) ser_ioctl (0, (void*) (num)) #define ser_apple2_slot(num) ser_ioctl (0, (void*) (num))
/* Select a slot number from 1 to 7 prior to ser_open. /* Select a slot number from 1 to 7 prior to ser_open.
* The default slot number is 2. * The default slot number is 2.
*/ */
#define tgi_apple2_mix(onoff) tgi_ioctl (0, (void*) (onoff)) #define tgi_apple2_mix(onoff) tgi_ioctl (0, (void*) (onoff))
/* If onoff is 1, graphics/text mixed mode is enabled. /* If onoff is 1, graphics/text mixed mode is enabled.
* If onoff is 0, graphics/text mixed mode is disabled. * If onoff is 0, graphics/text mixed mode is disabled.
*/ */
@ -182,9 +180,9 @@ int __fastcall__ rootdir (unsigned char drive, char* buf);
* to be overlaid by macros with the same names, saving the function call * to be overlaid by macros with the same names, saving the function call
* overhead. * overhead.
*/ */
#define _textcolor(color) COLOR_WHITE #define _textcolor(color) COLOR_WHITE
#define _bgcolor(color) COLOR_BLACK #define _bgcolor(color) COLOR_BLACK
#define _bordercolor(color) COLOR_BLACK #define _bordercolor(color) COLOR_BLACK

View File

@ -56,31 +56,31 @@
/* Characters codes */ /* Characters codes */
#define CH_DEL 0x7F #define CH_DEL 0x7F
#define CH_CURS_UP 0x0B #define CH_CURS_UP 0x0B
#define CH_CURS_DOWN 0x0A #define CH_CURS_DOWN 0x0A
/* These are defined to be OpenApple + NumberKey */ /* These are defined to be OpenApple + NumberKey */
#define CH_F1 0xB1 #define CH_F1 0xB1
#define CH_F2 0xB2 #define CH_F2 0xB2
#define CH_F3 0xB3 #define CH_F3 0xB3
#define CH_F4 0xB4 #define CH_F4 0xB4
#define CH_F5 0xB5 #define CH_F5 0xB5
#define CH_F6 0xB6 #define CH_F6 0xB6
#define CH_F7 0xB7 #define CH_F7 0xB7
#define CH_F8 0xB8 #define CH_F8 0xB8
#define CH_F9 0xB9 #define CH_F9 0xB9
#define CH_F10 0xB0 #define CH_F10 0xB0
/* Styles for textframe */ /* Styles for textframe */
#define TEXTFRAME_WIDE 0x00 #define TEXTFRAME_WIDE 0x00
#define TEXTFRAME_TALL 0x04 #define TEXTFRAME_TALL 0x04
/* Video modes */ /* Video modes */
#define VIDEOMODE_40x24 0x0011 #define VIDEOMODE_40x24 0x0011
#define VIDEOMODE_80x24 0x0012 #define VIDEOMODE_80x24 0x0012
#define VIDEOMODE_40COL VIDEOMODE_40x24 #define VIDEOMODE_40COL VIDEOMODE_40x24
#define VIDEOMODE_80COL VIDEOMODE_80x24 #define VIDEOMODE_80COL VIDEOMODE_80x24

View File

@ -94,6 +94,12 @@ MIX: .res 1 ; 4 lines of text
DEFPALETTE: .byte $00, $01, $02, $03, $04, $05, $06, $07 DEFPALETTE: .byte $00, $01, $02, $03, $04, $05, $06, $07
.byte $08, $09, $0A, $0B, $0C, $0D, $0E, $0F .byte $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
TGI2COL: .byte $00, $0C, $03, $0F, $01, $09, $06, $02
.byte $04, $05, $07, $08, $0A, $0B, $0D, $0E
COL2TGI: .byte $00, $04, $07, $02, $08, $09, $06, $0A
.byte $0B, $05, $0C, $0D, $01, $0E, $0F, $03
MAXY: .byte 47, 39 MAXY: .byte 47, 39
; ------------------------------------------------------------------------ ; ------------------------------------------------------------------------
@ -189,7 +195,7 @@ CLEAR:
ldy MAXY,x ; Max Y depends on 4 lines of text ldy MAXY,x ; Max Y depends on 4 lines of text
jsr CLRSC2 jsr CLRSC2
pla pla
sta COLOR ; Save current drawing color sta COLOR ; Restore current drawing color
bit $C080 ; Switch in LC bank 2 for R/O bit $C080 ; Switch in LC bank 2 for R/O
rts rts
@ -198,6 +204,8 @@ CLEAR:
; Must set an error code: NO (will only be called if color ok) ; Must set an error code: NO (will only be called if color ok)
SETCOLOR: SETCOLOR:
bit $C082 ; Switch in ROM bit $C082 ; Switch in ROM
tax
lda TGI2COL,x
jsr SETCOL jsr SETCOL
bit $C080 ; Switch in LC bank 2 for R/O bit $C080 ; Switch in LC bank 2 for R/O
rts rts
@ -239,7 +247,7 @@ CONTROL:
cpx #47+1 ; Last line cpx #47+1 ; Last line
bcc :- bcc :-
pla pla
sta COLOR ; Save current drawing color sta COLOR ; Restore current drawing color
bcs :+ ; Branch always bcs :+ ; Branch always
; Clear 4 lines of text ; Clear 4 lines of text
@ -301,6 +309,8 @@ GETPIXEL:
ldy X1 ldy X1
lda Y1 lda Y1
jsr SCRN jsr SCRN
tax
lda COL2TGI,x
ldx #$00 ldx #$00
bit $C080 ; Switch in LC bank 2 for R/O bit $C080 ; Switch in LC bank 2 for R/O
rts rts