60 lines
1.4 KiB
C
60 lines
1.4 KiB
C
#ifndef CONSOLE_H
|
|
#define CONSOLE_H
|
|
|
|
extern int _kbhit(void);
|
|
uint8_t _getch(void);
|
|
void _putch(uint8 ch);
|
|
|
|
/* see main.c for definition */
|
|
|
|
uint8 mask8bit = 0x7f; // TO be used for masking 8 bit characters (XMODEM related)
|
|
// If set to 0x7f, RunCPM masks the 8th bit of characters sent
|
|
// to the console. This is the standard CP/M behavior.
|
|
// If set to 0xff, RunCPM passes 8 bit characters. This is
|
|
// required for XMODEM to work.
|
|
// Use the CONSOLE7 and CONSOLE8 programs to change this on the fly.
|
|
|
|
uint8 _chready(void) // Checks if there's a character ready for input
|
|
{
|
|
return(_kbhit() ? 0xff : 0x00);
|
|
}
|
|
|
|
uint8 _getchNB(void) // Gets a character, non-blocking, no echo
|
|
{
|
|
return(_kbhit() ? _getch() : 0x00);
|
|
}
|
|
|
|
void _putcon(uint8 ch) // Puts a character
|
|
{
|
|
_putch(ch & mask8bit);
|
|
}
|
|
|
|
void _puts(const char* str) // Puts a \0 terminated string
|
|
{
|
|
while (*str)
|
|
_putcon(*(str++));
|
|
}
|
|
|
|
void _puthex8(uint8 c) // Puts a HH hex string
|
|
{
|
|
_putcon(tohex(c >> 4));
|
|
_putcon(tohex(c & 0x0f));
|
|
}
|
|
|
|
void _puthex16(uint16 w) // puts a HHHH hex string
|
|
{
|
|
_puthex8(w >> 8);
|
|
_puthex8(w & 0x00ff);
|
|
}
|
|
|
|
void _putdec(uint16_t w) {
|
|
char buf[] = " 0";
|
|
size_t i=sizeof(buf)-1;
|
|
while(w) {
|
|
assert(i > 0);
|
|
buf[--i] = '0' + (w % 10);
|
|
w /= 10;
|
|
}
|
|
_puts(buf);
|
|
}
|
|
#endif
|