back to ( void ), I have seen the errors in my ways

https://stackoverflow.com/questions/29326149/is-it-mandatory-to-use-return-and-void-in-the-functions-in-c
This commit is contained in:
Gwenhael Le Moine 2023-05-03 12:51:32 +02:00
parent bf9af92b91
commit 5f18956212
No known key found for this signature in database
GPG key ID: FDFE3669426707A7
15 changed files with 112 additions and 378 deletions

View file

@ -22,7 +22,7 @@ int first_press = 1; // PATCH
int conf_bank1 = 0x00000; int conf_bank1 = 0x00000;
int conf_bank2 = 0x00000; int conf_bank2 = 0x00000;
void do_in() { void do_in( void ) {
int i, in, out; int i, in, out;
out = 0; out = 0;
@ -99,7 +99,7 @@ void swap_register_status( unsigned char* r ) {
} }
} }
void clear_status() { void clear_status( void ) {
int i; int i;
for ( i = 0; i < 12; i++ ) { for ( i = 0; i < 12; i++ ) {
@ -130,7 +130,7 @@ int get_register_bit( unsigned char* reg, int n ) {
short conf_tab_sx[] = { 1, 2, 2, 2, 2, 0 }; short conf_tab_sx[] = { 1, 2, 2, 2, 2, 0 };
short conf_tab_gx[] = { 1, 2, 2, 2, 2, 0 }; short conf_tab_gx[] = { 1, 2, 2, 2, 2, 0 };
void do_reset() { void do_reset( void ) {
int i; int i;
for ( i = 0; i < 6; i++ ) { for ( i = 0; i < 6; i++ ) {
@ -143,11 +143,11 @@ void do_reset() {
} }
} }
void do_inton() { saturn.kbd_ien = 1; } void do_inton( void ) { saturn.kbd_ien = 1; }
void do_intoff() { saturn.kbd_ien = 0; } void do_intoff( void ) { saturn.kbd_ien = 0; }
void do_return_interupt() { void do_return_interupt( void ) {
if ( saturn.int_pending ) { if ( saturn.int_pending ) {
saturn.int_pending = 0; saturn.int_pending = 0;
saturn.intenable = 0; saturn.intenable = 0;
@ -163,7 +163,7 @@ void do_return_interupt() {
} }
} }
void do_interupt() { void do_interupt( void ) {
interrupt_called = 1; interrupt_called = 1;
if ( saturn.intenable ) { if ( saturn.intenable ) {
push_return_addr( saturn.PC ); push_return_addr( saturn.PC );
@ -172,7 +172,7 @@ void do_interupt() {
} }
} }
void do_kbd_int() { void do_kbd_int( void ) {
interrupt_called = 1; interrupt_called = 1;
if ( saturn.intenable ) { if ( saturn.intenable ) {
push_return_addr( saturn.PC ); push_return_addr( saturn.PC );
@ -183,7 +183,7 @@ void do_kbd_int() {
} }
} }
void do_reset_interrupt_system() { void do_reset_interrupt_system( void ) {
int i, gen_intr; int i, gen_intr;
saturn.kbd_ien = 1; saturn.kbd_ien = 1;
@ -199,7 +199,7 @@ void do_reset_interrupt_system() {
} }
} }
void do_unconfigure() { void do_unconfigure( void ) {
int i; int i;
unsigned int conf; unsigned int conf;
@ -222,7 +222,7 @@ void do_unconfigure() {
} }
} }
void do_configure() { void do_configure( void ) {
int i; int i;
unsigned long conf; unsigned long conf;
@ -242,7 +242,7 @@ void do_configure() {
} }
} }
int get_identification() { int get_identification( void ) {
int i; int i;
static int chip_id[] = { 0, 0, 0, 0, 0x05, 0xf6, static int chip_id[] = { 0, 0, 0, 0, 0x05, 0xf6,
0x07, 0xf8, 0x01, 0xf2, 0, 0 }; 0x07, 0xf8, 0x01, 0xf2, 0, 0 };
@ -264,7 +264,7 @@ int get_identification() {
return 0; return 0;
} }
void do_shutdown() { void do_shutdown( void ) {
int wake, alarms; int wake, alarms;
t1_t2_ticks ticks; t1_t2_ticks ticks;
@ -412,7 +412,7 @@ void push_return_addr( long addr ) {
saturn.rstk[ saturn.rstkp ] = addr; saturn.rstk[ saturn.rstkp ] = addr;
} }
long pop_return_addr() { long pop_return_addr( void ) {
if ( saturn.rstkp < 0 ) if ( saturn.rstkp < 0 )
return 0; return 0;
return saturn.rstk[ saturn.rstkp-- ]; return saturn.rstk[ saturn.rstkp-- ];

View file

@ -145,7 +145,7 @@ cmd_tbl[] = {
{ 0, 0, 0 } }; { 0, 0, 0 } };
void init_debugger() { void init_debugger( void ) {
int i; int i;
num_bkpts = 0; num_bkpts = 0;
@ -620,7 +620,7 @@ static void set_st( word_64 val ) {
#endif #endif
} }
static void dump_st() { static void dump_st( void ) {
int i; int i;
int val; int val;
@ -670,7 +670,7 @@ static void set_hst( word_64 val ) {
#endif #endif
} }
static void dump_hst() { static void dump_hst( void ) {
short hst = 0; short hst = 0;
if ( saturn.XM != 0 ) if ( saturn.XM != 0 )
hst |= 1; hst |= 1;
@ -923,7 +923,7 @@ struct se {
struct se* se_next; struct se* se_next;
}; };
char* get_stack() { char* get_stack( void ) {
word_20 dsktop, dskbot; word_20 dsktop, dskbot;
word_20 sp = 0, end = 0, ent = 0; word_20 sp = 0, end = 0, ent = 0;
word_20 ram_base, ram_mask; word_20 ram_base, ram_mask;
@ -1135,7 +1135,7 @@ static void do_rstk( int argc, char** argv ) {
} }
} }
int debug() { int debug( void ) {
t1_t2_ticks ticks; t1_t2_ticks ticks;
struct cmd* cmdp; struct cmd* cmdp;
char* cp; char* cp;
@ -1322,7 +1322,7 @@ int debug() {
return 0; return 0;
} }
int emulate_debug() { int emulate_debug( void ) {
do { do {
step_instruction(); step_instruction();

View file

@ -12,7 +12,7 @@ extern int device_check;
device_t device; device_t device;
void check_devices() { void check_devices( void ) {
if ( device.display_touched > 0 && device.display_touched-- == 1 ) { if ( device.display_touched > 0 && device.display_touched-- == 1 ) {
device.display_touched = 0; device.display_touched = 0;
update_display(); update_display();

View file

@ -64,7 +64,7 @@ word_64 run;
static word_20 jumpmasks[] = { 0xffffffff, 0xfffffff0, 0xffffff00, 0xfffff000, static word_20 jumpmasks[] = { 0xffffffff, 0xfffffff0, 0xffffff00, 0xfffff000,
0xffff0000, 0xfff00000, 0xff000000, 0xf0000000 }; 0xffff0000, 0xfff00000, 0xff000000, 0xf0000000 };
int decode_group_80() { int decode_group_80( void ) {
int t, op3, op4, op5, op6; int t, op3, op4, op5, op6;
unsigned char* REG; unsigned char* REG;
long addr; long addr;
@ -233,7 +233,7 @@ int decode_group_80() {
} }
} }
int decode_group_1() { int decode_group_1( void ) {
int op, op2, op3, op4; int op, op2, op3, op4;
op2 = read_nibble( saturn.PC + 1 ); op2 = read_nibble( saturn.PC + 1 );
@ -1987,7 +1987,7 @@ static inline int decode_8_thru_f( int op1 ) {
} }
} }
inline int step_instruction() { inline int step_instruction( void ) {
int op0, op1, op2, op3; int op0, op1, op2, op3;
int stop = 0; int stop = 0;
@ -2230,7 +2230,7 @@ inline int step_instruction() {
return stop; return stop;
} }
inline void schedule() { inline void schedule( void ) {
t1_t2_ticks ticks; t1_t2_ticks ticks;
unsigned long steps; unsigned long steps;
static unsigned long old_stat_instr; static unsigned long old_stat_instr;
@ -2392,7 +2392,7 @@ inline void schedule() {
} }
} }
int emulate() { int emulate( void ) {
struct timeval tv; struct timeval tv;
#if defined( GUI_IS_X11 ) #if defined( GUI_IS_X11 )
struct timeval tv2; struct timeval tv2;

View file

@ -11,7 +11,7 @@ char fixbuf[ 1024 ] = {
0, 0,
}; };
void fatal_exit() { void fatal_exit( void ) {
if ( quiet ) if ( quiet )
exit( 1 ); exit( 1 );

View file

@ -166,7 +166,7 @@ saturn_0_3_0_t saturn_0_3_0;
#include "config.h" #include "config.h"
void saturn_config_init() { void saturn_config_init( void ) {
saturn.version[ 0 ] = VERSION_MAJOR; saturn.version[ 0 ] = VERSION_MAJOR;
saturn.version[ 1 ] = VERSION_MINOR; saturn.version[ 1 ] = VERSION_MINOR;
saturn.version[ 2 ] = PATCHLEVEL; saturn.version[ 2 ] = PATCHLEVEL;
@ -181,7 +181,7 @@ void saturn_config_init() {
saturn.lbr = 0x0; saturn.lbr = 0x0;
} }
void init_saturn() { void init_saturn( void ) {
int i; int i;
memset( &saturn, 0, sizeof( saturn ) - 4 * sizeof( unsigned char* ) ); memset( &saturn, 0, sizeof( saturn ) - 4 * sizeof( unsigned char* ) );
@ -1023,7 +1023,7 @@ void get_home_directory( char* path ) {
} }
} }
int read_files() { int read_files( void ) {
char path[ 1024 ]; char path[ 1024 ];
char fnam[ 1024 ]; char fnam[ 1024 ];
unsigned long v1, v2; unsigned long v1, v2;
@ -1379,7 +1379,7 @@ int write_mem_file( char* name, word_4* mem, int size ) {
return 1; return 1;
} }
int write_files() { int write_files( void ) {
char path[ 1024 ]; char path[ 1024 ];
char fnam[ 1024 ]; char fnam[ 1024 ];
struct stat st; struct stat st;
@ -1558,7 +1558,7 @@ int write_files() {
return 1; return 1;
} }
int init_emulator() { int init_emulator( void ) {
if ( !initialize ) if ( !initialize )
if ( read_files() ) { if ( read_files() ) {
if ( resetOnStartup ) if ( resetOnStartup )
@ -1573,7 +1573,7 @@ int init_emulator() {
return 0; return 0;
} }
void init_active_stuff() { void init_active_stuff( void ) {
serial_init(); serial_init();
#if defined( GUI_IS_X11 ) #if defined( GUI_IS_X11 )
init_annunc(); init_annunc();
@ -1581,7 +1581,7 @@ void init_active_stuff() {
init_display(); init_display();
} }
int exit_emulator() { int exit_emulator( void ) {
write_files(); write_files();
return 1; return 1;
} }

View file

@ -51,7 +51,7 @@ unsigned char nibbles[ 16 ][ 2 ] = {
static unsigned char nibble_bits[ 16 ]; static unsigned char nibble_bits[ 16 ];
void init_nibble_maps() { void init_nibble_maps( void ) {
int i; int i;
for ( i = 0; i < 16; i++ ) { for ( i = 0; i < 16; i++ ) {
@ -111,7 +111,7 @@ ann_struct_t ann_tbl[] = {
{ 0 } }; { 0 } };
#endif #endif
void init_display() { void init_display( void ) {
display.on = ( int )( saturn.disp_io & 0x8 ) >> 3; display.on = ( int )( saturn.disp_io & 0x8 ) >> 3;
display.disp_start = ( saturn.disp_addr & 0xffffe ); display.disp_start = ( saturn.disp_addr & 0xffffe );
@ -201,7 +201,7 @@ static inline void draw_row( long addr, int row ) {
} }
} }
void update_display() { void update_display( void ) {
int i, j; int i, j;
long addr; long addr;
static int old_offset = -1; static int old_offset = -1;
@ -333,7 +333,7 @@ void update_display() {
} }
} }
void redraw_display() { void redraw_display( void ) {
#if defined( GUI_IS_X11 ) #if defined( GUI_IS_X11 )
XClearWindow( dpy, disp.win ); XClearWindow( dpy, disp.win );
#endif #endif
@ -465,7 +465,7 @@ struct ann_struct {
{ 0 } }; { 0 } };
#endif #endif
void draw_annunc() { void draw_annunc( void ) {
int val; int val;
int i; int i;
@ -501,7 +501,7 @@ void draw_annunc() {
} }
#if defined( GUI_IS_X11 ) #if defined( GUI_IS_X11 )
void init_annunc() { void init_annunc( void ) {
int i; int i;
for ( i = 0; ann_tbl[ i ].bit; i++ ) { for ( i = 0; ann_tbl[ i ].bit; i++ ) {
@ -512,7 +512,7 @@ void init_annunc() {
} }
#endif #endif
void redraw_annunc() { void redraw_annunc( void ) {
last_annunc_state = -1; last_annunc_state = -1;
draw_annunc(); draw_annunc();
} }

View file

@ -1154,7 +1154,7 @@ void write_nibbles( long addr, long val, int len ) {
} }
} }
void dev_memory_init() { void dev_memory_init( void ) {
if ( opt_gx ) { if ( opt_gx ) {
read_nibble = read_nibble_gx; read_nibble = read_nibble_gx;
read_nibble_crc = read_nibble_crc_gx; read_nibble_crc = read_nibble_crc_gx;

View file

@ -8,7 +8,7 @@
#include "constants.h" #include "constants.h"
#include "resources.h" #include "resources.h"
void usage() { void usage( void ) {
fprintf( stdout, "\n\ fprintf( stdout, "\n\
%s Version %d.%d.%d\n\ %s Version %d.%d.%d\n\
\n\ \n\
@ -55,13 +55,13 @@ where options include:\n\
exit( 1 ); exit( 1 );
} }
void show_version() { void show_version( void ) {
fprintf( stdout, "\n\ fprintf( stdout, "\n\
%s Version %d.%d.%d", %s Version %d.%d.%d",
progname, VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL ); progname, VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL );
} }
void show_copyright() { void show_copyright( void ) {
fprintf( stdout, "\n\ fprintf( stdout, "\n\
COPYRIGHT\n\ COPYRIGHT\n\
\n\ \n\
@ -82,7 +82,7 @@ along with this program; if not, write to the Free Software\n\
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n\n" ); Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n\n" );
} }
void show_warranty() { void show_warranty( void ) {
fprintf( stdout, "\n\ fprintf( stdout, "\n\
NO WARRANTY\n\ NO WARRANTY\n\
\n\ \n\

View file

@ -5,20 +5,10 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#if defined( GUI_IS_X11 )
#include <X11/Xlib.h>
#include <X11/Xresource.h>
#include <X11/Xutil.h>
#endif
#include "resources.h" #include "resources.h"
#include "disasm.h" #include "disasm.h"
#include "errors.h" #include "errors.h"
#if defined( GUI_IS_X11 )
XrmDatabase rdb = ( XrmDatabase )0;
#endif
int verbose; int verbose;
int quiet; int quiet;
int useTerminal; int useTerminal;
@ -40,7 +30,13 @@ char homeDirectory[ 1024 ];
#endif #endif
#if defined( GUI_IS_X11 ) #if defined( GUI_IS_X11 )
void get_resources() { #include <X11/Xlib.h>
#include <X11/Xresource.h>
#include <X11/Xutil.h>
XrmDatabase rdb = ( XrmDatabase )0;
void get_resources( void ) {
if ( get_boolean_resource( "printVersion", "PrintVersion" ) ) if ( get_boolean_resource( "printVersion", "PrintVersion" ) )
show_version(); show_version();
if ( get_boolean_resource( "printCopyright", "PrintCopyright" ) ) if ( get_boolean_resource( "printCopyright", "PrintCopyright" ) )
@ -294,21 +290,12 @@ XFontStruct* get_font_resource( Display* dpy, char* name, char* class ) {
#elif defined( GUI_IS_SDL1 ) #elif defined( GUI_IS_SDL1 )
void get_resources( void get_resources( void ) {
void ) { /*
if (get_boolean_resource("printVersion", "PrintVersion"))
show_version();
if (get_boolean_resource("printCopyright", "PrintCopyright"))
show_copyright();
if (get_boolean_resource("printWarranty", "PrintWarranty"))
show_warranty();*/
verbose = 0; verbose = 0;
quiet = 0; quiet = 0;
useTerminal = 1; useTerminal = 1;
useSerial = 0; useSerial = 0;
strcpy( serialLine, "/dev/ttyS0" ); strcpy( serialLine, "/dev/ttyS0" );
// initialize=0;
initialize = 0; initialize = 0;
resetOnStartup = 0; resetOnStartup = 0;
@ -322,10 +309,7 @@ void get_resources(
// emulator instead initializes the state and ram from scratch, and attempts // emulator instead initializes the state and ram from scratch, and attempts
// to load the ROM // to load the ROM
// romFileName. This is just for bootstrapping: afterwards then the emulator // romFileName. This is just for bootstrapping: afterwards then the emulator
// will save the // will save the state to homeDirectory
// state
// to
// homeDirectory
// Have homeDirectory in the user's home // Have homeDirectory in the user's home
strcpy( homeDirectory, ".x48ng" ); // live files are stored in ~/.x48ng strcpy( homeDirectory, ".x48ng" ); // live files are stored in ~/.x48ng

View file

@ -9,6 +9,7 @@
extern unsigned int opt_gx; extern unsigned int opt_gx;
extern unsigned int rom_size; extern unsigned int rom_size;
extern int read_rom_file( const char* name, unsigned char** mem, unsigned int* size ); extern int read_rom_file( const char* name, unsigned char** mem,
unsigned int* size );
#endif /* !_ROMIO_H */ #endif /* !_ROMIO_H */

View file

@ -24,7 +24,7 @@ extern int rece_instr;
static char* wire_name = ( char* )0; static char* wire_name = ( char* )0;
static char* ir_name = ( char* )0; static char* ir_name = ( char* )0;
void update_connection_display() { void update_connection_display( void ) {
if ( wire_fd == -1 ) { if ( wire_fd == -1 ) {
if ( wire_name ) if ( wire_name )
free( wire_name ); free( wire_name );
@ -38,7 +38,7 @@ void update_connection_display() {
ShowConnections( wire_name, ir_name ); ShowConnections( wire_name, ir_name );
} }
int serial_init() { int serial_init( void ) {
int c; int c;
int n; int n;
char tty_dev_name[ 128 ]; char tty_dev_name[ 128 ];
@ -381,7 +381,7 @@ void serial_baud( int baud ) {
update_connection_display(); update_connection_display();
} }
void transmit_char() { void transmit_char( void ) {
if ( saturn.ir_ctrl & 0x04 ) { if ( saturn.ir_ctrl & 0x04 ) {
if ( ir_fd == -1 ) { if ( ir_fd == -1 ) {
saturn.tcs &= 0x0e; saturn.tcs &= 0x0e;
@ -438,7 +438,7 @@ void transmit_char() {
#define NR_BUFFER 256 #define NR_BUFFER 256
void receive_char() { void receive_char( void ) {
struct timeval tout; struct timeval tout;
fd_set rfds; fd_set rfds;
int nfd; int nfd;

View file

@ -66,7 +66,7 @@ word_64 time_offset = 0x0;
* 8. Prevent AutoOff by setting TIMEOUT * 8. Prevent AutoOff by setting TIMEOUT
* *
*/ */
void set_accesstime() { void set_accesstime( void ) {
struct timeval tv; struct timeval tv;
#if defined( GUI_IS_X11 ) #if defined( GUI_IS_X11 )
struct timezone tz; struct timezone tz;
@ -310,7 +310,7 @@ word_64 get_timer( int timer ) {
* *
*/ */
t1_t2_ticks get_t1_t2() { t1_t2_ticks get_t1_t2( void ) {
struct timeval tv; struct timeval tv;
#if defined( GUI_IS_X11 ) #if defined( GUI_IS_X11 )
struct timezone tz; struct timezone tz;

View file

@ -348,37 +348,8 @@ color_t colors_gx[] = {
{ "black", 0, 0, 0, 0, 0, { 0, 0, 0, 0, DoRed | DoGreen | DoBlue, 0 } }, { "black", 0, 0, 0, 0, 0, { 0, 0, 0, 0, DoRed | DoGreen | DoBlue, 0 } },
{ 0 } }; { 0 } };
typedef struct button_t { #elif defined( GUI_IS_SDL1 )
char* name;
short pressed;
short extra;
int code;
int x, y;
unsigned int w, h;
int lc;
char* label;
short font_size;
unsigned int lw, lh;
unsigned char* lb;
char* letter;
char* left;
short is_menu;
char* right;
char* sub;
Pixmap map;
Pixmap down;
Window xwin;
} button_t;
#endif
#if defined( GUI_IS_SDL1 )
// Control how the screen update is performed: at regular intervals (delayed) // Control how the screen update is performed: at regular intervals (delayed)
// or immediatly Note: this is only for the LCD. The annunciators and the // or immediatly Note: this is only for the LCD. The annunciators and the
// buttons are always immediately updated // buttons are always immediately updated
@ -980,7 +951,7 @@ icon_map_t icon_maps_gx[] = {
#define KEYBOARD_OFFSET_X SIDE_SKIP #define KEYBOARD_OFFSET_X SIDE_SKIP
#define KEYBOARD_OFFSET_Y ( TOP_SKIP + DISPLAY_HEIGHT + DISP_KBD_SKIP ) #define KEYBOARD_OFFSET_Y ( TOP_SKIP + DISPLAY_HEIGHT + DISP_KBD_SKIP )
int AllocColors() { int AllocColors( void ) {
int c, error, dyn; int c, error, dyn;
int r_shift = 0, g_shift = 0, b_shift = 0; int r_shift = 0, g_shift = 0, b_shift = 0;
XSetWindowAttributes xswa; XSetWindowAttributes xswa;
@ -1442,8 +1413,9 @@ int InitDisplay( int argc, char** argv ) {
return 0; return 0;
} }
#endif
#if defined( GUI_IS_SDL1 ) #elif defined( GUI_IS_SDL1 )
typedef struct sdltohpkeymap_t { typedef struct sdltohpkeymap_t {
SDLKey sdlkey; SDLKey sdlkey;
int hpkey; int hpkey;
@ -1940,7 +1912,7 @@ void CreateButton( int i, int off_x, int off_y, XFontStruct* f_small,
return; return;
} }
void DrawButtons() { void DrawButtons( void ) {
int i; int i;
for ( i = BUTTON_A; i <= LAST_BUTTON; i++ ) { for ( i = BUTTON_A; i <= LAST_BUTTON; i++ ) {
@ -2698,7 +2670,7 @@ void DrawKeypad( keypad_t* keypad ) {
return; return;
} }
void CreateIcon() { void CreateIcon( void ) {
XSetWindowAttributes xswa; XSetWindowAttributes xswa;
XWindowAttributes xwa; XWindowAttributes xwa;
Pixmap tmp_pix; Pixmap tmp_pix;
@ -2779,7 +2751,7 @@ void CreateIcon() {
return; return;
} }
void refresh_icon() { void refresh_icon( void ) {
int icon_state; int icon_state;
icon_state = icon_state =
@ -2821,7 +2793,7 @@ void refresh_icon() {
} }
} }
void DrawIcon() { void DrawIcon( void ) {
XCopyArea( dpy, icon_pix, iconW, gc, 0, 0, hp48_icon_width, XCopyArea( dpy, icon_pix, iconW, gc, 0, 0, hp48_icon_width,
hp48_icon_height, 0, 0 ); hp48_icon_height, 0, 0 );
return; return;
@ -2834,7 +2806,7 @@ int handle_xerror( Display* the_dpy, XErrorEvent* eev ) {
} }
#endif #endif
void CreateDispWindow() { void CreateDispWindow( void ) {
XSetWindowAttributes xswa; XSetWindowAttributes xswa;
XGCValues val; XGCValues val;
unsigned long gc_mask; unsigned long gc_mask;
@ -2870,7 +2842,6 @@ void CreateDispWindow() {
XSetForeground( dpy, disp.gc, COLOR( PIXEL ) ); XSetForeground( dpy, disp.gc, COLOR( PIXEL ) );
#ifdef HAVE_XSHM #ifdef HAVE_XSHM
disp.display_update = UPDATE_DISP | UPDATE_MENU; disp.display_update = UPDATE_DISP | UPDATE_MENU;
xerror_flag = 0; xerror_flag = 0;
@ -3450,7 +3421,7 @@ int button_released( int b ) {
return 0; return 0;
} }
static int button_release_all() { static int button_release_all( void ) {
int code; int code;
int b; int b;
@ -3516,7 +3487,7 @@ int key_event( int b, XEvent* xev ) {
} }
#ifdef HAVE_XSHM #ifdef HAVE_XSHM
void refresh_display() { void refresh_display( void ) {
if ( shm_flag ) { if ( shm_flag ) {
if ( disp.display_update & UPDATE_DISP ) { if ( disp.display_update & UPDATE_DISP ) {
XShmPutImage( dpy, disp.win, disp.gc, disp.disp_image, disp.offset, XShmPutImage( dpy, disp.win, disp.gc, disp.disp_image, disp.offset,
@ -3533,7 +3504,7 @@ void refresh_display() {
} }
#endif #endif
void DrawDisp() { void DrawDisp( void ) {
#ifdef HAVE_XSHM #ifdef HAVE_XSHM
if ( shm_flag ) { if ( shm_flag ) {
XShmPutImage( dpy, disp.win, disp.gc, disp.disp_image, disp.offset, 0, XShmPutImage( dpy, disp.win, disp.gc, disp.disp_image, disp.offset, 0,
@ -3603,7 +3574,7 @@ void get_geometry_string( Window win, char* s, int allow_off_screen ) {
x, ( y_s > 0 ) ? "+" : "-", y ); x, ( y_s > 0 ) ? "+" : "-", y );
} }
void save_command_line() { void save_command_line( void ) {
XWindowAttributes xwa; XWindowAttributes xwa;
int wm_argc, ac; int wm_argc, ac;
char **wm_argv, geom[ 128 ], icon_geom[ 128 ]; char **wm_argv, geom[ 128 ], icon_geom[ 128 ];
@ -3981,7 +3952,7 @@ int last_button = -1;
extern char* get_stack(); extern char* get_stack();
#elif defined( GUI_IS_SDL1 ) #elif defined( GUI_IS_SDL1 )
void SDLCreateHP() { void SDLCreateHP( void ) {
/* int x, y, w, h; */ /* int x, y, w, h; */
unsigned int width, height; unsigned int width, height;
@ -4022,8 +3993,6 @@ void SDLCreateHP() {
keypad.width = width; keypad.width = width;
keypad.height = height; keypad.height = height;
printf( "Screen size: %d %d\n", width, height );
cut = buttons[ BUTTON_MTH ].y + KEYBOARD_OFFSET_Y - 19; cut = buttons[ BUTTON_MTH ].y + KEYBOARD_OFFSET_Y - 19;
SDLDrawBackground( width, cut, width, height ); SDLDrawBackground( width, cut, width, height );
SDLDrawMore( width, height, cut, KEYBOARD_OFFSET_Y, KEYBOARD_OFFSET_X, SDLDrawMore( width, height, cut, KEYBOARD_OFFSET_Y, KEYBOARD_OFFSET_X,
@ -4142,7 +4111,7 @@ int button_released( int b ) {
return 0; return 0;
} }
static int button_release_all() { static int button_release_all( void ) {
int b; int b;
for ( b = BUTTON_A; b <= LAST_BUTTON; b++ ) for ( b = BUTTON_A; b <= LAST_BUTTON; b++ )
@ -4151,7 +4120,7 @@ static int button_release_all() {
return 0; return 0;
} }
/* void DrawDisp() { */ /* void DrawDisp( void ) { */
/* redraw_display(); */ /* redraw_display(); */
/* redraw_annunc(); */ /* redraw_annunc(); */
/* } */ /* } */
@ -4205,18 +4174,10 @@ int SDLKeyToKey( SDLKey k ) {
void SDLDrawMore( unsigned int w, unsigned int h, unsigned int cut, void SDLDrawMore( unsigned int w, unsigned int h, unsigned int cut,
unsigned int offset_y, unsigned int offset_x, unsigned int offset_y, unsigned int offset_x,
int keypad_width, int keypad_height ) { int keypad_width, int keypad_height ) {
/* int x, y; */
/* SDL_Surface *surf; */
int display_height = DISPLAY_HEIGHT; int display_height = DISPLAY_HEIGHT;
int display_width = DISPLAY_WIDTH; int display_width = DISPLAY_WIDTH;
printf( "display: %d %d\n", display_height, display_width );
printf( "keypad: %d %d\n", keypad_height, keypad_width );
printf( "wh: %d %d\n", w, h );
printf( "cut: %d\n", cut );
printf( "offset: %d %d\n", offset_y, offset_x );
// lower the whole thing // lower the whole thing
// bottom lines // bottom lines
@ -4354,7 +4315,6 @@ void SDLDrawLogo( unsigned int w, unsigned int h, unsigned int cut,
int x, y; int x, y;
SDL_Surface* surf; SDL_Surface* surf;
/* int display_height = DISPLAY_HEIGHT; */
int display_width = DISPLAY_WIDTH; int display_width = DISPLAY_WIDTH;
// insert the HP Logo // insert the HP Logo
@ -4500,7 +4460,7 @@ void SDLDrawLogo( unsigned int w, unsigned int h, unsigned int cut,
/////////////////////////////////////////////// ///////////////////////////////////////////////
// SDL PORT // SDL PORT
/////////////////////////////////////////////// ///////////////////////////////////////////////
void SDLCreateColors() { void SDLCreateColors( void ) {
unsigned i; unsigned i;
for ( i = WHITE; i < BLACK; i++ ) for ( i = WHITE; i < BLACK; i++ )
@ -4525,9 +4485,8 @@ void SDLCreateColors() {
/////////////////////////////////////////////// ///////////////////////////////////////////////
// SDL PORT // SDL PORT
/////////////////////////////////////////////// ///////////////////////////////////////////////
void SDLCreateKeys() { void SDLCreateKeys( void ) {
unsigned i, x, y; unsigned i, x, y;
/* SDL_Rect srect, drect; */
unsigned pixel; unsigned pixel;
for ( i = BUTTON_A; i <= LAST_BUTTON; i++ ) { for ( i = BUTTON_A; i <= LAST_BUTTON; i++ ) {
@ -4542,17 +4501,6 @@ void SDLCreateKeys() {
SDL_SWSURFACE, buttons[ i ].w, buttons[ i ].h, 32, 0x00ff0000, SDL_SWSURFACE, buttons[ i ].w, buttons[ i ].h, 32, 0x00ff0000,
0x0000ff00, 0x000000ff, 0xff000000 ); 0x0000ff00, 0x000000ff, 0xff000000 );
} }
/*
if (i < BUTTON_MTH)
pixel = ARGBColors[DISP_PAD];
else
{
if (opt_gx && buttons[i].is_menu)
pixel = ARGBColors[UNDERLAY];
else
pixel = ARGBColors[PAD];
}
*/
// Use alpha channel // Use alpha channel
pixel = 0x00000000; pixel = 0x00000000;
// pixel = 0xffff0000; // pixel = 0xffff0000;
@ -4570,7 +4518,6 @@ void SDLCreateKeys() {
SDL_FillRect( buttons[ i ].surfacedown, &rect, ARGBColors[ BUTTON ] ); SDL_FillRect( buttons[ i ].surfacedown, &rect, ARGBColors[ BUTTON ] );
// draw the released button // draw the released button
#if defined( GUI_IS_SDL1 )
// draw edge of button // draw edge of button
lineColor( buttons[ i ].surfaceup, 1, buttons[ i ].h - 2, 1, 1, lineColor( buttons[ i ].surfaceup, 1, buttons[ i ].h - 2, 1, 1,
SDLBGRA2ARGB( ARGBColors[ BUT_TOP ] ) ); SDLBGRA2ARGB( ARGBColors[ BUT_TOP ] ) );
@ -4731,7 +4678,6 @@ void SDLCreateKeys() {
stringColor( buttons[ i ].surfacedown, x, y, buttons[ i ].label, stringColor( buttons[ i ].surfacedown, x, y, buttons[ i ].label,
0xffffffff ); 0xffffffff );
} }
#endif
// Pixmap centered in button // Pixmap centered in button
if ( buttons[ i ].lw != 0 ) { if ( buttons[ i ].lw != 0 ) {
// If there's a bitmap, try to plot this // If there's a bitmap, try to plot this
@ -4763,7 +4709,7 @@ void SDLCreateKeys() {
} }
// Draw the left labels (violet on GX) // Draw the left labels (violet on GX)
void SDLDrawKeyLabelLeft() { void SDLDrawKeyLabelLeft( void ) {
int i, x, y; int i, x, y;
unsigned int pw /* , ph */; unsigned int pw /* , ph */;
int wl, wr, ws; int wl, wr, ws;
@ -4783,17 +4729,10 @@ void SDLDrawKeyLabelLeft() {
if ( opt_gx ) { if ( opt_gx ) {
pw = 58; pw = 58;
/* ph = 48; */
} else { } else {
pw = 46; pw = 46;
/* ph = 11; */
} }
// pix = XCreatePixmap(dpy, keypad->pixmap, pw, ph, depth);
// XSetForeground(dpy, gc, COLOR(UNDERLAY));
// XFillRectangle(dpy, pix, gc, 0, 0, pw, ph);
// XSetBackground(dpy, gc, COLOR(UNDERLAY));
// XSetForeground(dpy, gc, COLOR(LEFT));
colorbg = ARGBColors[ UNDERLAY ]; colorbg = ARGBColors[ UNDERLAY ];
colorfg = ARGBColors[ LEFT ]; colorfg = ARGBColors[ LEFT ];
@ -4806,14 +4745,6 @@ void SDLDrawKeyLabelLeft() {
else else
y = 9; y = 9;
if ( !opt_gx ) {
// Removed some sx draw code
// XDrawPoint(dpy, pix, gc, 0, 0);
// XDrawPoint(dpy, pix, gc, 0, ph - 1);
// XDrawPoint(dpy, pix, gc, pw - 1, 0);
// XDrawPoint(dpy, pix, gc, pw - 1, ph - 1);
}
// Set the coordinates to absolute // Set the coordinates to absolute
if ( opt_gx ) { if ( opt_gx ) {
x += offset_x + buttons[ i ].x - 6; x += offset_x + buttons[ i ].x - 6;
@ -4833,7 +4764,6 @@ void SDLDrawKeyLabelLeft() {
if ( buttons[ i ].right == ( char* )0 ) { if ( buttons[ i ].right == ( char* )0 ) {
// centered label // centered label
x = offset_x + buttons[ i ].x + x = offset_x + buttons[ i ].x +
( 1 + buttons[ i ].w - ( 1 + buttons[ i ].w -
SmallTextWidth( buttons[ i ].left, SmallTextWidth( buttons[ i ].left,
@ -4841,7 +4771,6 @@ void SDLDrawKeyLabelLeft() {
2; 2;
} else { } else {
// label to the left // label to the left
wl = SmallTextWidth( buttons[ i ].left, wl = SmallTextWidth( buttons[ i ].left,
strlen( buttons[ i ].left ) ); strlen( buttons[ i ].left ) );
wr = SmallTextWidth( buttons[ i ].right, wr = SmallTextWidth( buttons[ i ].right,
@ -4862,7 +4791,7 @@ void SDLDrawKeyLabelLeft() {
} }
// Draw the right labels (green on GX) // Draw the right labels (green on GX)
void SDLDrawKeyLabelRight() { void SDLDrawKeyLabelRight( void ) {
int i, x, y; int i, x, y;
unsigned int pw /* , ph */; unsigned int pw /* , ph */;
int wl, wr, ws; int wl, wr, ws;
@ -4873,12 +4802,6 @@ void SDLDrawKeyLabelRight() {
// draw the right labels // draw the right labels
for ( i = BUTTON_A; i <= LAST_BUTTON; i++ ) { for ( i = BUTTON_A; i <= LAST_BUTTON; i++ ) {
// if (i < BUTTON_MTH)
// pixel = COLOR(DISP_PAD);
// else
// pixel = COLOR(PAD);
if ( buttons[ i ].right == ( char* )0 ) if ( buttons[ i ].right == ( char* )0 )
continue; continue;
@ -4886,10 +4809,8 @@ void SDLDrawKeyLabelRight() {
// draw the dark shade under the label // draw the dark shade under the label
if ( opt_gx ) { if ( opt_gx ) {
pw = 58; pw = 58;
/* ph = 48; */
} else { } else {
pw = 44; pw = 44;
/* ph = 9; */
} }
colorbg = ARGBColors[ UNDERLAY ]; colorbg = ARGBColors[ UNDERLAY ];
@ -4904,14 +4825,6 @@ void SDLDrawKeyLabelRight() {
else else
y = 8; y = 8;
if ( !opt_gx ) {
// Removed some sx draw code
// XDrawPoint(dpy, pix, gc, 0, 0);
// XDrawPoint(dpy, pix, gc, 0, ph - 1);
// XDrawPoint(dpy, pix, gc, pw - 1, 0);
// XDrawPoint(dpy, pix, gc, pw - 1, ph - 1);
}
// Set the coordinates to absolute // Set the coordinates to absolute
if ( opt_gx ) { if ( opt_gx ) {
x += offset_x + buttons[ i ].x - 6; x += offset_x + buttons[ i ].x - 6;
@ -4927,9 +4840,6 @@ void SDLDrawKeyLabelRight() {
colorbg ); colorbg );
} // buttons[i].is_menu } // buttons[i].is_menu
else { else {
// XSetBackground(dpy, gc, pixel);
// XSetForeground(dpy, gc, COLOR(RIGHT));
colorbg = ARGBColors[ BLACK ]; colorbg = ARGBColors[ BLACK ];
colorfg = ARGBColors[ RIGHT ]; colorfg = ARGBColors[ RIGHT ];
@ -4942,7 +4852,6 @@ void SDLDrawKeyLabelRight() {
2; 2;
} else { } else {
// label to the right // label to the right
wl = SmallTextWidth( buttons[ i ].left, wl = SmallTextWidth( buttons[ i ].left,
strlen( buttons[ i ].left ) ); strlen( buttons[ i ].left ) );
wr = SmallTextWidth( buttons[ i ].right, wr = SmallTextWidth( buttons[ i ].right,
@ -4955,8 +4864,6 @@ void SDLDrawKeyLabelRight() {
y = offset_y + buttons[ i ].y - small_descent; y = offset_y + buttons[ i ].y - small_descent;
// DrawSmallString(dpy, keypad->pixmap, gc, x, y,
// buttons[i].right, strlen(buttons[i].right));
SDLDrawSmallString( x, y, buttons[ i ].right, SDLDrawSmallString( x, y, buttons[ i ].right,
strlen( buttons[ i ].right ), colorfg, strlen( buttons[ i ].right ), colorfg,
colorbg ); colorbg );
@ -4966,7 +4873,7 @@ void SDLDrawKeyLabelRight() {
} }
// Draw the letter bottom right of the key // Draw the letter bottom right of the key
void SDLDrawKeyLetter() { void SDLDrawKeyLetter( void ) {
int i, x, y; int i, x, y;
int offset_y = KEYBOARD_OFFSET_Y; int offset_y = KEYBOARD_OFFSET_Y;
int offset_x = KEYBOARD_OFFSET_X; int offset_x = KEYBOARD_OFFSET_X;
@ -4997,7 +4904,7 @@ void SDLDrawKeyLetter() {
} }
// Bottom label: the only one is the cancel button // Bottom label: the only one is the cancel button
void SDLDrawKeyLabelBottom() { void SDLDrawKeyLabelBottom( void ) {
int i, x, y; int i, x, y;
int offset_y = KEYBOARD_OFFSET_Y; int offset_y = KEYBOARD_OFFSET_Y;
int offset_x = KEYBOARD_OFFSET_X; int offset_x = KEYBOARD_OFFSET_X;
@ -5026,7 +4933,7 @@ void SDLDrawKeyLabelBottom() {
} }
// Draws the greyish area around keys that trigger menus // Draws the greyish area around keys that trigger menus
void SDLDrawKeyMenu() { void SDLDrawKeyMenu( void ) {
int i, x, y; int i, x, y;
int offset_y = KEYBOARD_OFFSET_Y; int offset_y = KEYBOARD_OFFSET_Y;
int offset_x = KEYBOARD_OFFSET_X; int offset_x = KEYBOARD_OFFSET_X;
@ -5065,7 +4972,7 @@ void SDLDrawKeyMenu() {
} }
} }
void SDLDrawButtons() { void SDLDrawButtons( void ) {
int i; int i;
for ( i = BUTTON_A; i <= LAST_BUTTON; i++ ) { for ( i = BUTTON_A; i <= LAST_BUTTON; i++ ) {
@ -5096,9 +5003,8 @@ void SDLDrawButtons() {
buttons[ LAST_BUTTON ].x + buttons[ LAST_BUTTON ].w - buttons[ 0 ].x, buttons[ LAST_BUTTON ].x + buttons[ LAST_BUTTON ].w - buttons[ 0 ].x,
buttons[ LAST_BUTTON ].y + buttons[ LAST_BUTTON ].h - buttons[ 0 ].y ); buttons[ LAST_BUTTON ].y + buttons[ LAST_BUTTON ].h - buttons[ 0 ].y );
} }
void SDLDrawKeypad() {
/* int i, x, y; */
void SDLDrawKeypad( void ) {
SDLDrawKeyMenu(); SDLDrawKeyMenu();
SDLDrawKeyLetter(); SDLDrawKeyLetter();
SDLDrawKeyLabelBottom(); SDLDrawKeyLabelBottom();
@ -5112,7 +5018,6 @@ void SDLDrawSmallString( int x, int y, const char* string, unsigned int length,
unsigned int coloron, unsigned int coloroff ) { unsigned int coloron, unsigned int coloroff ) {
int i; int i;
// printf("draw string: %d, %d, %s\n",x,y,string);
for ( i = 0; i < length; i++ ) { for ( i = 0; i < length; i++ ) {
if ( small_font[ ( int )string[ i ] ].h != 0 ) { if ( small_font[ ( int )string[ i ] ].h != 0 ) {
int w = small_font[ ( int )string[ i ] ].w; int w = small_font[ ( int )string[ i ] ].w;
@ -5141,7 +5046,7 @@ void SDLDrawSmallString( int x, int y, const char* string, unsigned int length,
void SDLDrawBezel( unsigned int width, unsigned int height, void SDLDrawBezel( unsigned int width, unsigned int height,
unsigned int offset_y, unsigned int offset_x ) { unsigned int offset_y, unsigned int offset_x ) {
int i /* , x, y*/; int i;
int display_height = DISPLAY_HEIGHT; int display_height = DISPLAY_HEIGHT;
int display_width = DISPLAY_WIDTH; int display_width = DISPLAY_WIDTH;
@ -5268,22 +5173,10 @@ void SDLDrawBackground( int width, int height, int w_top, int h_top ) {
SDL_FillRect( sdlwindow, &rect, ARGBColors[ LCD ] ); SDL_FillRect( sdlwindow, &rect, ARGBColors[ LCD ] );
} }
// SDL stuff
SDL_Surface* sdlwindow; SDL_Surface* sdlwindow;
SDL_Surface* sdlsurface; SDL_Surface* sdlsurface;
/* SDL_TimerCallback */ void SDLInit( void ) {
/* SDLTimerCallback () */
/* { */
/* } */
/******************************************************************************
InitSDL InitSDL InitSDL InitSDL InitSDL InitSDL InitSDL
*******************************************************************************
Basic SDL Initialization and atexit assignment.
******************************************************************************/
void SDLInit() {
SDL_version compiled; SDL_version compiled;
// Initialize SDL // Initialize SDL
@ -5299,16 +5192,6 @@ void SDLInit() {
// On exit: clean SDL // On exit: clean SDL
atexit( SDL_Quit ); atexit( SDL_Quit );
// icon
/*SDL_Surface *icon;
icon =
SDLCreateARGBSurfFromData(sdlicon_width,sdlicon_height,sdlicon_bits,SDLToARGB(255,sdlicon_bits[0],sdlicon_bits[1],sdlicon_bits[2]));
SDL_WM_SetIcon(icon, 0);
SDL_FreeSurface(icon);
*/
/* SDL_WM_SetCaption( "x48ng: HP48 emulator", "x48ng" ); */
// Initialize the geometric values // Initialize the geometric values
KEYBOARD_HEIGHT = _KEYBOARD_HEIGHT; KEYBOARD_HEIGHT = _KEYBOARD_HEIGHT;
KEYBOARD_WIDTH = _KEYBOARD_WIDTH; KEYBOARD_WIDTH = _KEYBOARD_WIDTH;
@ -5332,36 +5215,19 @@ void SDLInit() {
buttons_gx[ LAST_BUTTON ].y + buttons_gx[ LAST_BUTTON ].y +
buttons_gx[ LAST_BUTTON ].h + BOTTOM_SKIP; buttons_gx[ LAST_BUTTON ].h + BOTTOM_SKIP;
// unsigned width = (buttons_sx[LAST_BUTTON].x +
// buttons_sx[LAST_BUTTON].w)
// + 2 * SIDE_SKIP; unsigned height = DISPLAY_OFFSET_Y + DISPLAY_HEIGHT
// + DISP_KBD_SKIP + buttons_sx[LAST_BUTTON].y +
// buttons_sx[LAST_BUTTON].h + BOTTOM_SKIP;
printf( "w/h: %d %d\n", width, height );
sdlwindow = SDL_SetVideoMode( width, height, 32, SDL_SWSURFACE ); sdlwindow = SDL_SetVideoMode( width, height, 32, SDL_SWSURFACE );
if ( sdlwindow == NULL ) { if ( sdlwindow == NULL ) {
printf( "Couldn't set video mode: %s\n", SDL_GetError() ); printf( "Couldn't set video mode: %s\n", SDL_GetError() );
exit( 1 ); exit( 1 );
} }
/*sdlsurface =
SDL_CreateRGBSurface(SDL_SWSURFACE,360,800,32,0x000000ff,0x0000ff00,0x00ff0000,0xff000000);
if(sdlsurface==NULL)
{
printf("Can't create another surface\n");
exit(1);
}*/
// SDL_SetTimer(100, SDLTimerCallback);
} }
// This should be called once to setup the surfaces. Calling it multiple // This should be called once to setup the surfaces. Calling it multiple
// times is fine, it won't do anything on subsequent calls. // times is fine, it won't do anything on subsequent calls.
void SDLCreateAnnunc() { void SDLCreateAnnunc( void ) {
int i; int i;
/* int x, y, idx; */
for ( i = 0; i < 6; i++ ) { for ( i = 0; i < 6; i++ ) {
// If the SDL surface does not exist yet, we create it on the fly // If the SDL surface does not exist yet, we create it on the fly
@ -5417,59 +5283,10 @@ void SDLDrawAnnunc( char* annunc ) {
ann_tbl[ 5 ].y + ann_tbl[ 5 ].height - ann_tbl[ 0 ].y ); ann_tbl[ 5 ].y + ann_tbl[ 5 ].height - ann_tbl[ 0 ].y );
} }
// lcd_buffer contains one nibble per byte (4 useful bit of data per byte)
// void SDLDrawLcd(unsigned char lcd_buffer[DISP_ROWS][NIBS_PER_BUFFER_ROW])
/*void SDLDrawLcd()
{
// Do something here
int x,y;
int xoffset = DISPLAY_OFFSET_X+5;
int yoffset = DISPLAY_OFFSET_Y+20;
SDL_LockSurface(sdlwindow);
unsigned char *buffer=sdlwindow->pixels;
unsigned int pitch = sdlwindow->pitch;
unsigned char c = lcd_buffer[0][0];
for(y=0;y<2*DISP_ROWS;y++)
{
unsigned int *lineptr;
lineptr = (unsigned int*)(buffer + pitch*(yoffset + y));
for(x=0;x<131;x++)
{
// Check if bit is on
char c = lcd_buffer[y/2][x>>2]; // The 4
lower bits in a byte are used (1 nibble per byte) char b = c & (1<<(x&3));
if(b)
{
lineptr[xoffset+2*x]=ARGBColors[PIXEL];
lineptr[xoffset+2*x+1]=ARGBColors[PIXEL];
}
else
{
lineptr[xoffset+2*x]=ARGBColors[LCD];
lineptr[xoffset+2*x+1]=ARGBColors[LCD];
}
}
}
SDL_UnlockSurface(sdlwindow);
SDL_UpdateRect(sdlwindow, 0,0,0,0); // Should optimize:
only update the area of the icons
}*/
void SDLDrawNibble( int _x, int _y, int val ) { void SDLDrawNibble( int _x, int _y, int val ) {
int x, y; int x, y;
int xoffset = DISPLAY_OFFSET_X + 5; int xoffset = DISPLAY_OFFSET_X + 5;
int yoffset = DISPLAY_OFFSET_Y + 20; int yoffset = DISPLAY_OFFSET_Y + 20;
/* static unsigned ctr = 0; */
SDL_LockSurface( sdlwindow ); SDL_LockSurface( sdlwindow );
unsigned char* buffer = ( unsigned char* )sdlwindow->pixels; unsigned char* buffer = ( unsigned char* )sdlwindow->pixels;
@ -5582,7 +5399,6 @@ unsigned SDLBGRA2ARGB( unsigned color ) {
unsigned a, r, g, b; unsigned a, r, g, b;
SDLARGBTo( color, &a, &r, &g, &b ); SDLARGBTo( color, &a, &r, &g, &b );
// color = a | (b<<24) | (g<<16) | (r<<8);
color = a | ( r << 24 ) | ( g << 16 ) | ( b << 8 ); color = a | ( r << 24 ) | ( g << 16 ) | ( b << 8 );
return color; return color;
} }
@ -5618,11 +5434,7 @@ void SDLUIShowKey( int hpkey ) {
ssurf = buttons[ hpkey ].surfaceup; ssurf = buttons[ hpkey ].surfaceup;
// Zoomed surface // Zoomed surface
// zsurf = zoomSurface(ssurf,1.5,1.9,1);
/* unsigned t1, t2; */
/* t1 = SDL_GetTicks (); */
zsurf = zoomSurface( ssurf, zoomfactor, zoomfactor, 0 ); zsurf = zoomSurface( ssurf, zoomfactor, zoomfactor, 0 );
/* t2 = SDL_GetTicks (); */
// Background backup // Background backup
showkeylastsurf = showkeylastsurf =
@ -5669,7 +5481,7 @@ void SDLUIShowKey( int hpkey ) {
// Update // Update
SDL_UpdateRect( sdlwindow, x, y, zsurf->w, zsurf->h ); SDL_UpdateRect( sdlwindow, x, y, zsurf->w, zsurf->h );
} }
void SDLUIHideKey() { void SDLUIHideKey( void ) {
SDL_Rect drect; SDL_Rect drect;
if ( showkeylastsurf == 0 ) if ( showkeylastsurf == 0 )
@ -5688,7 +5500,7 @@ void SDLUIHideKey() {
showkeylastsurf = 0; showkeylastsurf = 0;
} }
void SDLUIFeedback() { void SDLUIFeedback( void ) {
// This function should give some UI feedback to indicate that a key was // This function should give some UI feedback to indicate that a key was
// pressed E.g. by beeping, vibrating or flashing something // pressed E.g. by beeping, vibrating or flashing something
@ -5781,10 +5593,6 @@ SDLWINDOW_t SDLCreateWindow( int x, int y, int w, int h, unsigned color,
colordark = t; colordark = t;
} }
printf( "color: %08X\n", color );
printf( "colorlight: %08X\n", colorlight );
printf( "colordark: %08X\n", colordark );
// Draw the frame // Draw the frame
int i; int i;
for ( i = 0; i < framewidth; i++ ) { for ( i = 0; i < framewidth; i++ ) {
@ -5864,7 +5672,6 @@ void SDLMessageBox( int w, int h, const char* title, const char* text[],
y = ( sdlwindow->h - h ) / 2; y = ( sdlwindow->h - h ) / 2;
SDLWINDOW_t win; SDLWINDOW_t win;
printf( "ShowWindow\n" );
win = SDLCreateWindow( x, y, w, h, color, framewidth, 0 ); win = SDLCreateWindow( x, y, w, h, color, framewidth, 0 );
stringColor( win.surf, ( w - strlen( title ) * 8 ) / 2, stringColor( win.surf, ( w - strlen( title ) * 8 ) / 2,
@ -5892,7 +5699,7 @@ void SDLMessageBox( int w, int h, const char* title, const char* text[],
SDLHideWindow( &win ); SDLHideWindow( &win );
} }
void SDLEventWaitClickOrKey() { void SDLEventWaitClickOrKey( void ) {
SDL_Event event; SDL_Event event;
while ( 1 ) { while ( 1 ) {
SDL_WaitEvent( &event ); SDL_WaitEvent( &event );
@ -5912,7 +5719,7 @@ void SDLEventWaitClickOrKey() {
} }
} }
void SDLShowInformation() { void SDLShowInformation( void ) {
const char* info_title = "x48ng - HP48 emulator"; const char* info_title = "x48ng - HP48 emulator";
const char* info_text[] = { //"12345678901234567890123456789012345", const char* info_text[] = { //"12345678901234567890123456789012345",
@ -5952,7 +5759,7 @@ void SDLShowInformation() {
} }
#endif #endif
int get_ui_event() { int get_ui_event( void ) {
#if defined( GUI_IS_X11 ) #if defined( GUI_IS_X11 )
XEvent xev; XEvent xev;
XClientMessageEvent* cm; XClientMessageEvent* cm;
@ -5993,9 +5800,6 @@ int get_ui_event() {
case KeyPress: case KeyPress:
if ( 0 && release_pending ) {
printf( "xxx release_pending\n" );
}
release_pending = 0; release_pending = 0;
if ( ( xev.xkey.time - last_release_time ) <= 1 ) { if ( ( xev.xkey.time - last_release_time ) <= 1 ) {
release_pending = 0; release_pending = 0;
@ -6594,7 +6398,6 @@ int get_ui_event() {
#elif defined( GUI_IS_SDL1 ) #elif defined( GUI_IS_SDL1 )
// printf("Get event\n");
SDL_Event event; SDL_Event event;
int hpkey; int hpkey;
int rv; int rv;
@ -6602,43 +6405,26 @@ int get_ui_event() {
static int lastticks = static int lastticks =
-1; // time at which a key was pressed or -1 if timer expired -1; // time at which a key was pressed or -1 if timer expired
static int lastislongpress = 0; // last key press was a long press static int lastislongpress = 0; // last key press was a long press
/* static unsigned ctr = 0; */ static int keyispressed = -1; // Indicate if a key is being held down by
static int keyispressed = -1; // Indicate if a key is being held down by // a finger (not set for long presses)
// a finger (not set for long presses) static int keyneedshow = 0; // Indicates if the buttons need to be shown
static int keyneedshow = 0; // Indicates if the buttons need to be shown
static int dispupdate_t1 = -1, static int dispupdate_t1 = -1,
dispupdate_t2; // Logic to display at regular intervals dispupdate_t2; // Logic to display at regular intervals
// printf("SDLGetEvent %08X\n",ctr++);
/* unsigned t1, t2; */
/* unsigned ticks = SDL_GetTicks (); */
// printf("%u\n",ticks);
// make keys that last only one cycle
// button_release_all();
rv = 0; // nothing to do rv = 0; // nothing to do
// Check whether long pres on key // Check whether long pres on key
if ( lastticks > 0 && ( SDL_GetTicks() - lastticks > 750 ) ) { if ( lastticks > 0 && ( SDL_GetTicks() - lastticks > 750 ) ) {
// time elapsed // time elapsed
printf( "Timer expired\n" );
lastticks = -1; lastticks = -1;
// Check that the mouse is still on the same last key // Check that the mouse is still on the same last key
int x, y, state; int x, y, state;
// int hpkeykbd;
// char *kstate;
state = SDL_GetMouseState( &x, &y ); state = SDL_GetMouseState( &x, &y );
// kstate = SDL_GetKeyState(0);
// hpkeykbd = SDLKeyToKey(event.key.keysym.sym);
// if(state&SDL_BUTTON(1) && ((SDLCoordinateToKey(x,y)==lasthpkey)
// ||()
// ))
if ( state & SDL_BUTTON( 1 ) && if ( state & SDL_BUTTON( 1 ) &&
SDLCoordinateToKey( x, y ) == lasthpkey ) { SDLCoordinateToKey( x, y ) == lasthpkey ) {
lastislongpress = 1; lastislongpress = 1;
printf( "\tlong press\n" );
SDLUIFeedback(); SDLUIFeedback();
} }
} }
@ -6646,10 +6432,8 @@ int get_ui_event() {
// Iterate as long as there are events // Iterate as long as there are events
// while( SDL_PollEvent( &event ) ) // while( SDL_PollEvent( &event ) )
if ( SDL_PollEvent( &event ) ) { if ( SDL_PollEvent( &event ) ) {
// printf("PollEvent got %d\n",event.type);
switch ( event.type ) { switch ( event.type ) {
case SDL_QUIT: case SDL_QUIT:
printf( "Got SDL_QUIT event\n" );
exit_x48( 0 ); exit_x48( 0 );
break; break;
@ -6657,9 +6441,6 @@ int get_ui_event() {
// pressed // pressed
case SDL_MOUSEMOTION: case SDL_MOUSEMOTION:
hpkey = SDLCoordinateToKey( event.motion.x, event.motion.y ); hpkey = SDLCoordinateToKey( event.motion.x, event.motion.y );
// printf("Mouse move %d,%d: %d hpkey: %d lasthpkey %d long
// %d\n", event.motion.x, event.motion.y,
// event.motion.state, hpkey,lasthpkey,lastislongpress);
if ( event.motion.state & SDL_BUTTON( 1 ) ) { if ( event.motion.state & SDL_BUTTON( 1 ) ) {
// Mouse moves on a key different from the last key // Mouse moves on a key different from the last key
// (state change): // (state change):
@ -6670,11 +6451,9 @@ int get_ui_event() {
if ( lasthpkey != -1 ) { if ( lasthpkey != -1 ) {
if ( !lastislongpress ) { if ( !lastislongpress ) {
// button_released(lasthpkey);
button_release_all(); button_release_all();
rv = 1; rv = 1;
SDLUIFeedback(); SDLUIFeedback();
printf( "release all\n" );
} }
// Stop timer, clear long key press // Stop timer, clear long key press
lastticks = -1; lastticks = -1;
@ -6691,7 +6470,6 @@ int get_ui_event() {
// Start timer // Start timer
lastticks = SDL_GetTicks(); lastticks = SDL_GetTicks();
SDLUIFeedback(); SDLUIFeedback();
printf( "press %d\n", hpkey );
} }
} }
} }
@ -6715,9 +6493,6 @@ int get_ui_event() {
// no space above offset_y...clicking on // no space above offset_y...clicking on
// the screen has to do something // the screen has to do something
SDLShowInformation(); SDLShowInformation();
// printf("l button up/down at %d %d. hpkey: %d lastkey:
// %d long:
// %d\n",event.button.x,event.button.y,hpkey,lasthpkey,lastislongpress);
} }
hpkey = SDLCoordinateToKey( event.button.x, event.button.y ); hpkey = SDLCoordinateToKey( event.button.x, event.button.y );
@ -6736,7 +6511,6 @@ int get_ui_event() {
// Start timer // Start timer
lastticks = SDL_GetTicks(); lastticks = SDL_GetTicks();
SDLUIFeedback(); SDLUIFeedback();
printf( "press %d\n", hpkey );
} }
} else { } else {
keyispressed = -1; keyispressed = -1;
@ -6746,7 +6520,6 @@ int get_ui_event() {
rv = 1; rv = 1;
lasthpkey = -1; // No key is pressed anymore lasthpkey = -1; // No key is pressed anymore
SDLUIFeedback(); SDLUIFeedback();
printf( "release all\n" );
} }
// Stop timer, clear long key press // Stop timer, clear long key press
@ -6757,9 +6530,6 @@ int get_ui_event() {
break; break;
case SDL_KEYDOWN: case SDL_KEYDOWN:
case SDL_KEYUP: case SDL_KEYUP:
printf( "Key: %d hpkey: %d\n", event.key.keysym.sym,
SDLKeyToKey( event.key.keysym.sym ) );
if ( event.type == SDL_KEYDOWN && if ( event.type == SDL_KEYDOWN &&
event.key.keysym.sym == SDLK_F1 ) { event.key.keysym.sym == SDLK_F1 ) {
SDLShowInformation(); SDLShowInformation();
@ -6775,7 +6545,6 @@ int get_ui_event() {
button_pressed( hpkey ); button_pressed( hpkey );
rv = 1; rv = 1;
SDLUIFeedback(); SDLUIFeedback();
printf( "press kbd %d\n", hpkey );
} }
} else { } else {
keyispressed = -1; keyispressed = -1;
@ -6783,7 +6552,6 @@ int get_ui_event() {
button_released( hpkey ); button_released( hpkey );
rv = 1; rv = 1;
SDLUIFeedback(); SDLUIFeedback();
printf( "release kbd %d\n", hpkey );
} }
} }
@ -6792,10 +6560,7 @@ int get_ui_event() {
} }
// Display button being pressed, if any // Display button being pressed, if any
/* t1 = SDL_GetTicks (); */
SDLUIShowKey( keyispressed ); SDLUIShowKey( keyispressed );
/* t2 = SDL_GetTicks (); */
// printf("Draw zoomed button: %03d\n",t2-t1);
// If we press long, then the button releases makes SDLUIShowKey restore // If we press long, then the button releases makes SDLUIShowKey restore
// the old key, but rv does not indicate that we need to update the // the old key, but rv does not indicate that we need to update the
@ -6807,32 +6572,21 @@ int get_ui_event() {
// button is pressed (otherwise it overwrites the zoomed button) // button is pressed (otherwise it overwrites the zoomed button)
if ( keyneedshow && keyispressed == -1 ) { if ( keyneedshow && keyispressed == -1 ) {
keyneedshow = 0; keyneedshow = 0;
/* t1 = SDL_GetTicks (); */
SDLDrawButtons(); SDLDrawButtons();
/* t2 = SDL_GetTicks (); */
// printf("Draw all buttons: %03d\n",t2-t1);
} }
#ifdef DELAYEDDISPUPDATE #ifdef DELAYEDDISPUPDATE
dispupdate_t2 = SDL_GetTicks(); dispupdate_t2 = SDL_GetTicks();
if ( dispupdate_t2 - dispupdate_t1 > DISPUPDATEINTERVAL ) { if ( dispupdate_t2 - dispupdate_t1 > DISPUPDATEINTERVAL ) {
/* t1 = SDL_GetTicks (); */
int xoffset = DISPLAY_OFFSET_X + 5; int xoffset = DISPLAY_OFFSET_X + 5;
int yoffset = DISPLAY_OFFSET_Y + 20; int yoffset = DISPLAY_OFFSET_Y + 20;
// LCD // LCD
SDL_UpdateRect( sdlwindow, xoffset, yoffset, 131 * 2, 64 * 2 ); SDL_UpdateRect( sdlwindow, xoffset, yoffset, 131 * 2, 64 * 2 );
// SDL_UpdateRect(sdlwindow,0,0,0,0);
/* t2 = SDL_GetTicks (); */
// printf("Update rect %03d\t%03d\n",ctr++,t2-t1);
dispupdate_t1 = dispupdate_t2; dispupdate_t1 = dispupdate_t2;
} }
#endif #endif
// return rv;
return 1; return 1;
#endif #endif

View file

@ -103,8 +103,6 @@
#define UPDATE_MENU 1 #define UPDATE_MENU 1
#define UPDATE_DISP 2 #define UPDATE_DISP 2
// Screen size
#define _KEYBOARD_HEIGHT \ #define _KEYBOARD_HEIGHT \
( buttons_gx[ LAST_BUTTON ].y + buttons_gx[ LAST_BUTTON ].h ) ( buttons_gx[ LAST_BUTTON ].y + buttons_gx[ LAST_BUTTON ].h )
#define _KEYBOARD_WIDTH \ #define _KEYBOARD_WIDTH \
@ -189,7 +187,6 @@ extern int InitDisplay( int argc, char** argv );
extern int CreateWindows( int argc, char** argv ); extern int CreateWindows( int argc, char** argv );
#endif #endif
#if defined( GUI_IS_SDL1 )
typedef struct button_t { typedef struct button_t {
const char* name; const char* name;
short pressed; short pressed;
@ -212,13 +209,18 @@ typedef struct button_t {
const char* right; const char* right;
const char* sub; const char* sub;
/////////////////////////////////////////////// #if defined( GUI_IS_X11 )
// SDL PORT Pixmap map;
/////////////////////////////////////////////// Pixmap down;
SDL_Surface *surfaceup, *surfacedown; Window xwin;
#elif defined( GUI_IS_SDL1 )
SDL_Surface* surfaceup;
SDL_Surface* surfacedown;
int __dummy;
#endif
} button_t; } button_t;
#if defined( GUI_IS_SDL1 )
// This mimicks the structure formerly lcd.c, except with SDL surfaces instead // This mimicks the structure formerly lcd.c, except with SDL surfaces instead
// of Pixmaps. // of Pixmaps.
typedef struct ann_struct { typedef struct ann_struct {
@ -228,9 +230,6 @@ typedef struct ann_struct {
unsigned int width; unsigned int width;
unsigned int height; unsigned int height;
unsigned char* bits; unsigned char* bits;
///////////////////////////////////////////////
// SDL PORT
///////////////////////////////////////////////
SDL_Surface* surfaceon; SDL_Surface* surfaceon;
SDL_Surface* surfaceoff; SDL_Surface* surfaceoff;
@ -282,8 +281,6 @@ void SDLDrawAnnunc( char* annunc );
#define NIBS_PER_BUFFER_ROW ( NIBBLES_PER_ROW + 2 ) #define NIBS_PER_BUFFER_ROW ( NIBBLES_PER_ROW + 2 )
void SDLCreateAnnunc(); void SDLCreateAnnunc();
// void SDLDrawLcd(unsigned char lcd_buffer[DISP_ROWS][NIBS_PER_BUFFER_ROW]);
// void SDLDrawLcd();
void SDLDrawNibble( int nx, int ny, int val ); void SDLDrawNibble( int nx, int ny, int val );
void SDLDrawKeypad(); void SDLDrawKeypad();
void SDLDrawButtons(); void SDLDrawButtons();
@ -293,8 +290,6 @@ SDL_Surface* SDLCreateSurfFromData( unsigned int w, unsigned int h,
SDL_Surface* SDLCreateARGBSurfFromData( unsigned int w, unsigned int h, SDL_Surface* SDLCreateARGBSurfFromData( unsigned int w, unsigned int h,
unsigned char* data, unsigned char* data,
unsigned int xpcolor ); unsigned int xpcolor );
// void SDLDrawSmallString(int x, int y, const char *string, unsigned int
// length);
void SDLDrawSmallString( int x, int y, const char* string, unsigned int length, void SDLDrawSmallString( int x, int y, const char* string, unsigned int length,
unsigned int coloron, unsigned int coloroff ); unsigned int coloron, unsigned int coloroff );
void SDLCreateColors(); void SDLCreateColors();