vgatext library  v0.90
Provides functions to simplify Propeller text display on a VGA monitor
Data Structures | Macros | Typedefs | Enumerations | Functions
vgatext.h File Reference

VGA_Text native device driver interface. More...

#include "simpletext.h"

Go to the source code of this file.

Data Structures

struct  _vga_text_struct

Macros

#define VGA_TEXT_WHITE_BLUE   0
 vgatext color indices
#define VGA_TEXT_YELLOW_BROWN   1
#define VGA_TEXT_MAGENTA_BLACK   2
#define VGA_TEXT_GREY_WHITE   3
#define VGA_TEXT_CYAN_DARKCYAN   4
#define VGA_TEXT_GREEN_WHITE   5
#define VGA_TEST_RED_PINK   6
#define VGA_TEXT_CYAN_BLUE   7
#define VGA_TEXT_COLORS   8
#define VGA_TEXT_PAL_WHITE_BLUE   0
#define VGA_TEXT_PAL_YELLOW_BROWN   2
#define VGA_TEXT_PAL_MAGENTA_BLACK   4
#define VGA_TEXT_PAL_GREY_WHITE   6
#define VGA_TEXT_PAL_CYAN_DARKCYAN   8
#define VGA_TEXT_PAL_GREEN_WHITE   10
#define VGA_TEST_PAL_RED_PINK   12
#define VGA_TEXT_PAL_CYAN_BLUE   14
#define VGA_TEXT_COLORTABLE_SIZE   8*2
#define VGA_TEXT_COLS   30
#define VGA_TEXT_ROWS   14
#define VGA_TEXT_SCREENSIZE   (VGA_TEXT_COLS * VGA_TEXT_ROWS)
#define VGA_TEXT_LASTROW   (VGA_TEXT_SCREENSIZE-VGA_TEXT_COLS)

Typedefs

typedef text_t vgatext
typedef struct _vga_text_struct vgatextdev_t

Enumerations

enum  vgaTextStat_t { VGA_TEXT_STAT_DISABLED, VGA_TEXT_STAT_INVISIBLE, VGA_TEXT_STAT_VISIBLE }

Functions

int vgatext_start (volatile vgatextdev_t *vga, int basepin)
void vgatext_stop (int id)
vgatext * vgatext_open (int basepin)
 Open a VGA connection. This function launches VGA driver code into the next available cog.
void vgatext_close (vgatext *device)
 Close VGA connection, stop and recover cog running VGA code and memory that was allocated.
int vgatext_out (int c)
 Prints a character at current cursor position or performs a screen function based on the following table:
int vgatext_putchar (vgatext *vga, int c)
 Print character to screen.
void vgatext_setColorPalette (char *palette)
 sets the palette using a character array. This overrides the default color palette.
void vgatext_clear (void)
 Clear the VGA display.
void vgatext_home (void)
 Send cursor to top-left home position.
void vgatext_clearEOL (void)
 Clear to end of line, then place cursor after the last character printed on the line.
void vgatext_setXY (int x, int y)
 Set position to x rows and y columns from top-left.
void vgatext_setX (int x)
 Set cursor to x columns from left.
void vgatext_setY (int y)
 Set cursor to y rows from top.
void vgatext_setCoordPosition (int x, int y)
 Set cursor position to Cartesian x, y from bottom-left.
int vgatext_getX (void)
 get cursor's column position.
int vgatext_getY (void)
 Get cursor's row position.
void vgatext_setColors (int value)
 Set palette color index.
int vgatext_getColors (void)
 Get palette color index.
int vgatext_getColumns (void)
 Get screen width.
int vgatext_getRows (void)
 Get screen height.

Detailed Description

VGA_Text native device driver interface.

Author
Steve Denson
Core Usage
A call to vgatext_open will launch 1 additional core that supplies signaling necessary for displaying text with a VGA display.
Memory Models
Use with CMM or LMM.
Version
v0.90
Note
Currently setting individual character foreground/background colors does not work. Setting a screen palette is OK with setColorPalette(&gpalette[VGA_TEXT_PAL_MAGENTA_BLACK]);
Help Improve this Library
Please submit bug reports, suggestions, and improvements to this code to edito.nosp@m.r@pa.nosp@m.ralla.nosp@m.x.co.nosp@m.m.

Macro Definition Documentation

#define VGA_TEXT_COLORTABLE_SIZE   8*2

Color table size. Table holds foreground and background info, so size is 2 x table colors.

#define VGA_TEXT_COLS   30

Column count

#define VGA_TEXT_LASTROW   (VGA_TEXT_SCREENSIZE-VGA_TEXT_COLS)

Last row position count

#define VGA_TEXT_PAL_WHITE_BLUE   0

VGA_Text palette color indices

#define VGA_TEXT_ROWS   14

Row count

#define VGA_TEXT_SCREENSIZE   (VGA_TEXT_COLS * VGA_TEXT_ROWS)

Screen size count

Typedef Documentation

Control structure

Enumeration Type Documentation

Status enumeration

Function Documentation

void vgatext_close ( vgatext *  device)

Close VGA connection, stop and recover cog running VGA code and memory that was allocated.

Parameters
*devicevalue that was returned by vgatext_open.
int vgatext_getColors ( void  )

Get palette color index.

Returns
number representing color set index See vgatext color indices.
int vgatext_getColumns ( void  )

Get screen width.

Returns
Screen column count.
int vgatext_getRows ( void  )

Get screen height.

Returns
Screen row count.
int vgatext_getX ( void  )

get cursor's column position.

Returns
columns from left.
int vgatext_getY ( void  )

Get cursor's row position.

Returns
rows from top.
vgatext* vgatext_open ( int  basepin)

Open a VGA connection. This function launches VGA driver code into the next available cog.

Parameters
basepincan be 0, 8, 16, or 24, which correspond to base pins of P0, P8, or P16 or P24. The basepin should be connected to VGA V, basepin + 1 to VGA H, and so on... Here is the full connection list.

basepin Connected to

  • 7 R1
  • 6 R0
  • 5 G1
  • 4 G0
  • 3 B1
  • 2 B0
  • 1 H
  • 0 V
Returns
vgatext identifier. It's the address that gets copied to a pointer variable, which is passed as an identifier to simpletext functions with text_t *dev parameters and/or vgatext functions with vgatext *vga parameters.
int vgatext_out ( int  c)

Prints a character at current cursor position or performs a screen function based on the following table:

0 = clear screen
1 = home
8 = backspace
9 = tab (8 spaces per)
10 = set X position (X follows)
11 = set Y position (Y follows)
12 = set color (color follows)
13 = return
16 = clear screen
others = printable characters

Parameters
cchar to print.
int vgatext_putchar ( vgatext *  vga,
int  c 
)

Print character to screen.

Parameters
*vgathe device identifier
cis character to print
void vgatext_setColorPalette ( char *  palette)

sets the palette using a character array. This overrides the default color palette.

Each custom color palette is defined in a byte with values of r, g, and b that can range from 0 to 3, and are packed as follows:

Example: Set color palette 0 foreground to r = 1, g = 2, b = 3 and background to r = 3, b = 0, and g = 1. Also set color palette 1's foreground with color palette 0's background and vice-versa.

char custom[16];

custom[0] = (1 << 4) | (2 << 2) | 3; // Foreground 0
custom[1] = (3 << 4) | (0 << 2) | 1; // Background 0
custom[2] = (3 << 4) | (0 << 2) | 1; // Foreground 1
custom[3] = (1 << 4) | (2 << 2) | 3; // Background 1
// ...etc up to custom[15] for background 7

Parameters
paletteis a char array[16].
void vgatext_setColors ( int  value)

Set palette color index.

Parameters
valueis a color set index number 0 .. 7 See vgatext color indices.
void vgatext_setCoordPosition ( int  x,
int  y 
)

Set cursor position to Cartesian x, y from bottom-left.

Parameters
xis column counted from left.
yis row counted from bottom.
void vgatext_setX ( int  x)

Set cursor to x columns from left.

Parameters
xcolumns from left
void vgatext_setXY ( int  x,
int  y 
)

Set position to x rows and y columns from top-left.

Parameters
xcolumns from left.
yrows from top.
void vgatext_setY ( int  y)

Set cursor to y rows from top.

Parameters
yrows from top