mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-15 15:57:13 +00:00
* Remove code for unsupported Sun display configurations Initial cleanup removing all code that was #ifdef'd for SUNDISPLAY. Other SunWindows dependent code may also be removeable * prropstyle will never be defined with no SunWindows support and therefore no pixrect code * Remove code that is ifndef NOPIXRECT, since pixrects are part of the obsolete Sun windows code. There are still traces of pixrect dependent code that could be removed.
161 lines
3.8 KiB
C
161 lines
3.8 KiB
C
/* $Id: kbdsubrs.c,v 1.2 1999/01/03 02:07:10 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved
|
|
*/
|
|
|
|
/************************************************************************/
|
|
/* */
|
|
/* (C) Copyright 1989-95 Venue. All Rights Reserved. */
|
|
/* Manufactured in the United States of America. */
|
|
/* */
|
|
/************************************************************************/
|
|
|
|
#include "version.h"
|
|
|
|
#include <errno.h>
|
|
#include <stdio.h>
|
|
#ifdef DOS
|
|
#include <time.h>
|
|
#include <conio.h>
|
|
#else
|
|
#include <sys/time.h>
|
|
#include <sys/types.h>
|
|
#include <sys/file.h>
|
|
#include <sys/select.h>
|
|
#endif /* DOS */
|
|
|
|
|
|
#include "lispemul.h"
|
|
|
|
#include "kbdsubrsdefs.h"
|
|
#include "commondefs.h"
|
|
#ifdef XWINDOW
|
|
#include "lisp2cdefs.h"
|
|
#include "xwinmandefs.h"
|
|
#endif
|
|
|
|
#ifdef DOS
|
|
#define PORT_A 0x60
|
|
#include "devif.h"
|
|
extern KbdInterface currentkbd;
|
|
extern DspInterface currentdsp;
|
|
#elif XWINDOW
|
|
#include "devif.h"
|
|
extern KbdInterface currentkbd;
|
|
extern DspInterface currentdsp;
|
|
#endif /* DOS */
|
|
|
|
/****************************************************
|
|
*
|
|
* KB_enable() entry of SUBRCALL 82 1
|
|
* called from (\KB_enable X)
|
|
*
|
|
****************************************************/
|
|
|
|
|
|
#ifdef XWINDOW
|
|
#include <X11/Xlib.h>
|
|
#endif /* XWINDOW */
|
|
|
|
extern int LispWindowFd;
|
|
extern fd_set LispReadFds;
|
|
|
|
void KB_enable(LispPTR *args) /* args[0] : ON/OFF flag
|
|
* T -- ON
|
|
* NIL -- OFF
|
|
*/
|
|
{
|
|
if (args[0] == ATOM_T) {
|
|
#if XWINDOW
|
|
enable_Xkeyboard(currentdsp);
|
|
#elif DOS
|
|
(currentkbd->device.enter)(currentkbd);
|
|
#endif /* DOS */
|
|
} else if (args[0] == NIL) {
|
|
#if XWINDOW
|
|
disable_Xkeyboard(currentdsp);
|
|
#elif DOS
|
|
(currentkbd->device.exit)(currentkbd);
|
|
#endif /* DOS */
|
|
} else {
|
|
error("KB_enable: illegal arg \n");
|
|
printf("KB_enable: arg = %d\n", args[0]);
|
|
}
|
|
}
|
|
|
|
/****************************************************
|
|
*
|
|
* KB_beep() entry of SUBRCALL 80 2
|
|
* called from (\KB_beep SW FREQ)
|
|
*
|
|
****************************************************/
|
|
/*
|
|
struct timeval belltime ={
|
|
0,100
|
|
};
|
|
*/
|
|
extern int LispKbdFd;
|
|
|
|
#ifdef DOS
|
|
int bell_status_word;
|
|
#endif /* DOS */
|
|
|
|
void KB_beep(LispPTR *args) /* args[0] : ON/OFF flag
|
|
* T -- ON
|
|
* NIL -- OFF
|
|
* args[1] : frequency
|
|
*/
|
|
{
|
|
#if XWINDOW
|
|
if (args[0] == ATOM_T) beep_Xkeyboard(currentdsp);
|
|
#elif DOS
|
|
if (args[0] == ATOM_T) {
|
|
bell_status_word = inp(0x61);
|
|
outp(0x61, bell_status_word | 0x3); /* Turn on the speaker */
|
|
/* Prepare timer by sending 10111100 to port 43. */
|
|
outp(0x43, 0xb6);
|
|
|
|
/* Divide input frequency by timer ticks per second and
|
|
* write (byte by byte) to timer. */
|
|
outp(0x42, (char)(1193180L / (LispIntToCInt(args[1]))));
|
|
outp(0x42, (char)(1193180L / (LispIntToCInt(args[1])) >> 8));
|
|
} else {
|
|
outp(0x61, bell_status_word & ~0x3); /* Turn off the speaker (with */
|
|
/* bits 0 and 1). */
|
|
}
|
|
#endif /* SUNDISPLAY, XWINDOW, DOS */
|
|
}
|
|
|
|
/****************************************************
|
|
*
|
|
* KB_setmp() entry of SUBRCALL 81 1
|
|
* called from (\KB_setMP MPCODE)
|
|
*
|
|
****************************************************/
|
|
|
|
void KB_setmp(LispPTR *args) /* args[0] : MPCODE */
|
|
{
|
|
#ifdef DEBUG
|
|
printf("MP: %d\n", args[0] & 0xffff);
|
|
#endif
|
|
}
|
|
|
|
/****************************************************
|
|
*
|
|
* KB_setled()
|
|
* Set the status LED's on the kbd.
|
|
* arg[0] Caps lock LED.
|
|
* arg[1] Num lock LED.
|
|
* arg[2] Scroll lock LED.
|
|
* NIL -> LED off
|
|
* not NIL -> LED on.
|
|
*
|
|
****************************************************/
|
|
|
|
void KB_setled(LispPTR *args)
|
|
{
|
|
#ifdef DOS
|
|
outp(PORT_A, (unsigned char)0xED);
|
|
outp(PORT_A,
|
|
(unsigned char)(((args[0] != NIL) << 2) | ((args[1] != NIL) << 1) | (args[2] != NIL)));
|
|
#endif /* DOS */
|
|
}
|