📄 ui.c
字号:
/*
** Kenobi2 version 1.3
**
** ** This code has been made to check/learn the 1161 functionalities **
** ** Release 25-Feb-2002 **
**
** OKANO, Akifumi
**
** Computing Segment, Semisonductors Div, Philips Japan Ltd.
** akifumi.okano@philips.com
** +81-3-3740-4668
*/
#include <stdio.h>
#include <string.h>
#include <dos.h>
#include <conio.h>
#include <bios.h>
#include <ctype.h>
#include "hc_comm.h"
#include "hw_acces.h"
#include "init.h"
#include "isr.h"
#include "isr_as.h"
#include "ui.h"
#include "data_tr.h"
#include "tr_gene.h"
#include "dev_ep.h"
#include "sing.h"
#include "printer.h"
#include "general.h"
#include "beep.h"
int g_status_monitor_switch = 1;
unsigned char key_polling_flag = 0;
typedef struct st_coodinate {
int x;
int y;
}
coodinate;
coodinate Hc_message_coodinate = { 1, 1 };
coodinate Dc_message_coodinate = { 1, 1 };
void regster_dump( void );
void help_messsage( void );
void version_info( void );
void environment_info( void );
void port_device_info( void );
unsigned char user_debug_command_key( void )
{
#if 1
if( bioskey(1) )
return ( bioskey(0) & 0xFF );
#else
if ( kbhit() )
return ( getch() );
#endif
return ( 0 );
}
#ifndef _MiniKit
unsigned char user_debug_command_handler( unsigned char command )
{
int tmp;
static unsigned char quit_flag;
if ( !command )
return ( 0 );
if ( quit_flag )
if ( command == 'y' )
return ( 1 );
else
{
mprintf( RED, CONTINUE, "\r\nQuit command cancelled key [0x%02X] '%c' pressed.\r\n", command, command );
return ( quit_flag = 0 );
}
switch( command )
{
case 0x1b: /* ESC */
case 'q':
if ( !quit_flag )
{
quit_flag = 1;
mprintf( RED, CONTINUE, "\r\nQuit? press [y] >> \r\n" );
}
break;
case '?':
case 'h':
help_messsage();
break;
case 'v':
version_info();
break;
case 'd':
regster_dump();
break;
case 'x':
if ( g_status_monitor_switch )
mprintf( LIGHTGRAY, CONTINUE, "\r\nstatus monitor stopped.\r\n" );
g_status_monitor_switch = !g_status_monitor_switch;
break;
case 'a':
audio_main();
break;
#ifndef NoBEEP
case 'b':
beep( 221.50, 0.50, DECAY, POLY );
break;
case 'Z':
beep( 440.00 * (12.00 / 10.00) * 1.00, 0.20, SUSTAIN, MONO );
break;
case 'X':
beep( 440.00 * (12.00 / 10.00) * (9.00 / 8.00), 0.20, SUSTAIN, MONO );
break;
case 'C':
beep( 440.00 * (12.00 / 10.00) * (5.00 / 4.00), 0.20, SUSTAIN, MONO );
break;
case 'V':
beep( 440.00 * (12.00 / 10.00) * (4.00 / 3.00), 0.20, SUSTAIN, MONO );
break;
case 'B':
beep( 440.00 * (12.00 / 10.00) * (3.00 / 2.00), 0.20, SUSTAIN, MONO );
break;
case 'N':
beep( 440.00 * (12.00 / 10.00) * (5.00 / 3.00), 0.20, SUSTAIN, MONO );
break;
case 'M':
beep( 440.00 * (12.00 / 10.00) * (15.00 / 8.00), 0.20, SUSTAIN, MONO );
break;
case '<':
beep( 440.00 * (12.00 / 10.00) * 2.00, 0.20, SUSTAIN, MONO );
break;
#endif
case 'p':
printer_main();
break;
case 'e':
environment_info();
break;
case 'i':
port_device_info();
break;
case 't':
// create_device( Speed_Full );
break;
case 'r':
// rh_event_handler();
break;
case '0':
// dma_test();
break;
case 'm':
// monitor_device();
break;
case '-':
{
unsigned long lo;
unsigned long hi;
lo = read_register32( Com32_HcFmInterval );
hi = lo & (~0x3FFF);
lo &= 0x3FFF;
lo -= 100;
write_register32( Com32_HcFmInterval, hi | lo );
mprintf( LIGHTGREEN, CONTINUE, "frameinterval changed %d / 11999\r\n", lo );
}
break;
case '+':
{
unsigned long lo;
unsigned long hi;
lo = read_register32( Com32_HcFmInterval );
hi = lo & (~0x3FFF);
lo &= 0x3FFF;
lo += 100;
write_register32( Com32_HcFmInterval, hi | lo );
mprintf( LIGHTGREEN, CONTINUE, "frameinterval changed %d / 11999\r\n", lo );
}
break;
case '1' :
break;
case '2' :
break;
case '3' :
break;
case '4' :
break;
case '5' :
break;
case '6' :
break;
case '7' :
break;
case '8' :
// write_register16( Com16_HcHardwareConfiguration, ( read_register16( Com16_HcHardwareConfiguration ) | 0x0002 ) );
// mprintf( LIGHTGREEN, CONTINUE, "0x%04X", read_register16( Com16_HcHardwareConfiguration ) );
break;
case '9' :
// write_register16( Com16_HcHardwareConfiguration, ( read_register16( Com16_HcHardwareConfiguration ) & ~0x0002 ) );
// mprintf( LIGHTGREEN, CONTINUE, "0x%04X", read_register16( Com16_HcHardwareConfiguration ) );
break;
default :
break;
}
return ( 0 );
}
#else // #ifndef _MiniKit
unsigned char user_debug_command_handler( unsigned char command )
{
audio_main();
return ( 0 );
}
#endif // #ifndef _MiniKit
#include <stdarg.h>
void mprintf( unsigned char color, unsigned char mode, char *format, ... )
{
char str[ 256 ];
va_list args;
#ifdef DC_CONBINED
window( 1, 2, 80, 13 );
gotoxy( Hc_message_coodinate.x, Hc_message_coodinate.y );
#endif // DC_CONBINED
if ( mode == ABORT )
{
textattr( RED );
cprintf( "\r\n" );
cprintf( " * * * ABORTED! * * *\r\n" );
}
va_start( args, format );
vsprintf( str, format, args );
#ifdef DC_CONBINED
textattr( color | (BLUE << 4) );
#else
textattr( color );
#endif // DC_CONBINED
cprintf( str );
textattr( 7 );
#ifdef DC_CONBINED
Hc_message_coodinate.x = wherex();
Hc_message_coodinate.y = wherey();
#endif // DC_CONBINED
if ( mode == ABORT )
{
status_monitor();
// regster_dump();
exit ( 1 );
}
}
#ifdef DC_CONBINED
void Dc_printf( unsigned char color, unsigned char mode, char *format, ... )
{
char str[ 256 ];
va_list args;
window( 1, 14, 80, 25 );
gotoxy( Dc_message_coodinate.x, Dc_message_coodinate.y );
if ( mode == ABORT )
{
textattr( RED );
cprintf( "\r\n" );
cprintf( " * * * ABORTED! * * *\r\n" );
}
va_start( args, format );
vsprintf( str, format, args );
textattr( color | (GREEN << 4) );
cprintf( str );
textattr( 7 );
Dc_message_coodinate.x = wherex();
Dc_message_coodinate.y = wherey();
if ( mode == ABORT )
{
status_monitor();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -