Updated glk driver:

* Removed all reference to lcd.* ; replaced with glk->*

Field testing is required.
This commit is contained in:
ddouthitt
2001-09-25 16:53:07 +00:00
parent 949a45dd0f
commit 226ec0c7b2
+24 -24
View File
@@ -242,9 +242,9 @@ int glk_init(struct lcd_logical_driver *driver, char *args)
void glk_close()
{
if(lcd.framebuf != NULL) free(lcd.framebuf);
if(glk->framebuf != NULL) free(glk->framebuf);
lcd.framebuf = NULL;
glk->framebuf = NULL;
glkclose( PortFD ) ;
}
@@ -259,12 +259,12 @@ void glk_clear_forced()
// puts( "REALLY CLEARING the display" );
clearcount = CLEARCOUNT ;
glkputl( PortFD, GLKCommand, 0x58, EOF );
memset(screen_contents, ' ', lcd.wid*lcd.hgt);
memset(screen_contents, ' ', glk->wid*glk->hgt);
}
void glk_clear()
{
// puts( "glk_clear( )" );
memset(lcd.framebuf, ' ', lcd.wid*lcd.hgt);
memset(glk->framebuf, ' ', glk->wid*glk->hgt);
if( --clearcount < 0 ) {
glk_clear_forced( );
};
@@ -277,7 +277,7 @@ void glk_clear()
void glk_flush()
{
// puts( "glk_flush( )" );
lcd.draw_frame(lcd.framebuf);
glk->draw_frame(glk->framebuf);
}
@@ -291,11 +291,11 @@ void glk_string(int x, int y, char string[])
// printf( "glk_string( %d, %d, \"%s\" )\n", x, y, string );
if( x > lcd.wid || y > lcd.hgt ) {
if( x > glk->wid || y > glk->hgt ) {
return ;
};
for( p = string ; *p && x <= lcd.wid ; ++x, ++p ) {
for( p = string ; *p && x <= glk->wid ; ++x, ++p ) {
glk_chr( x, y, *p );
};
@@ -336,7 +336,7 @@ void glk_chr(int x, int y, char c)
myc = 133 ;
};
lcd.framebuf[(y*lcd.wid) + x] = myc;
glk->framebuf[(y*glk->wid) + x] = myc;
}
@@ -431,7 +431,7 @@ void glk_init_num()
void glk_num(int x, int num)
{
// printf("BigNum(%i, %i)\n", x, num);
lcd.framebuf[x-1] = num + '0' ;
glk->framebuf[x-1] = num + '0' ;
}
//////////////////////////////////////////////////////////////////////
@@ -447,13 +447,13 @@ void glk_set_char(int n, char *dat)
//
void glk_vbar(int x, int len)
{
int y = lcd.hgt ;
int y = glk->hgt ;
// printf( "glk_vbar( %d, %d )\n", x, len );
while( len > lcd.cellhgt ) {
while( len > glk->cellhgt ) {
glk_chr( x, y, 255 );
--y ;
len -= lcd.cellhgt ;
len -= glk->cellhgt ;
};
if( y >= 0 ) {
@@ -478,13 +478,13 @@ void glk_vbar(int x, int len)
void glk_hbar(int x, int y, int len)
{
// printf( "glk_hbar( %d, %d, %d )\n", x, y, len );
while( len > lcd.cellwid ) {
while( len > glk->cellwid ) {
glk_chr( x, y, 255 );
++x ;
len -= lcd.cellwid ;
len -= glk->cellwid ;
};
if( x <= lcd.wid ) {
if( x <= glk->wid ) {
int lastc ;
switch( len ) {
case 0 : lastc = ' ' ; break ;
@@ -529,11 +529,11 @@ void glk_icon(int which, char dest)
old = CGRAM[(int)dest] ;
CGRAM[(int)dest] = new ;
p = lcd.framebuf ;
p = glk->framebuf ;
q = screen_contents ;
/* Replace all old icons with new icon in new frame */
for( count = lcd.wid * lcd.hgt ; count ; --count ) {
for( count = glk->wid * glk->hgt ; count ; --count ) {
if( *q == old ) {
// printf( "icon %d to %d at %d\n", old, new, q - screen_contents );
*p = new ;
@@ -570,14 +570,14 @@ void glk_draw_frame(char *dat)
int xs ;
char * ps = NULL ;
// printf( "glk_draw_frame( %p ) lcd.framebuf = %p\n", dat, lcd.framebuf );
// printf( "glk_draw_frame( %p ) glk->framebuf = %p\n", dat, glk->framebuf );
p = lcd.framebuf ;
p = glk->framebuf ;
q = screen_contents ;
for( y = 0 ; y < lcd.hgt ; ++y ) {
for( y = 0 ; y < glk->hgt ; ++y ) {
xs = -1 ; /* XStart not set */
for( x = 0 ; x < lcd.wid ; ++x ) {
for( x = 0 ; x < glk->wid ; ++x ) {
if( *q == *p && xs >= 0 ) {
/* Write accumulated string */
glkputl( PortFD, GLKCommand, 0x79, xs*6+1, y*8, EOF );
@@ -589,13 +589,13 @@ void glk_draw_frame(char *dat)
ps = p ;
xs = x ;
};
*q++ = *p++ ; /* Update screen_contents from lcd.framebuf */
*q++ = *p++ ; /* Update screen_contents from glk->framebuf */
};
if( xs >= 0 ) {
/* Write accumulated line */
glkputl( PortFD, GLKCommand, 0x79, xs*6+1, y*8, EOF );
glkputa( PortFD, lcd.wid - xs, ps );
// printf( "draw_frame: Writing at (%d,%d) for %d\n", xs, y, lcd.wid-xs );
glkputa( PortFD, glk->wid - xs, ps );
// printf( "draw_frame: Writing at (%d,%d) for %d\n", xs, y, glk->wid-xs );
};
}; /* For y */