mirror of
https://github.com/Interlisp/maiko.git
synced 2026-03-22 16:58:03 +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.
186 lines
4.5 KiB
C
186 lines
4.5 KiB
C
/* $Id: dspsubrs.c,v 1.3 2001/12/26 22:17:02 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved
|
|
*/
|
|
/*** ADOPTED NEW VERSION ***/
|
|
|
|
/************************************************************************/
|
|
/* */
|
|
/* (C) Copyright 1989-2000 Venue. All Rights Reserved. */
|
|
/* Manufactured in the United States of America. */
|
|
/* */
|
|
/************************************************************************/
|
|
|
|
#include "version.h"
|
|
|
|
#include <stdio.h>
|
|
|
|
#include "lispemul.h"
|
|
#include "lsptypes.h"
|
|
#include "lispmap.h"
|
|
#include "display.h"
|
|
#include "arith.h"
|
|
|
|
#include "dspsubrsdefs.h"
|
|
#include "commondefs.h"
|
|
#ifdef XWINDOW
|
|
#include "xcursordefs.h"
|
|
#include "xlspwindefs.h"
|
|
#endif
|
|
|
|
extern int DebugDSP;
|
|
extern int displaywidth, displayheight;
|
|
|
|
#ifdef XWINDOW
|
|
extern int Mouse_Included;
|
|
#endif /* XWINDOW */
|
|
|
|
/****************************************************
|
|
*
|
|
* DSP_dspbout() entry of SUBRCALL 9 1
|
|
* called from (DSPBOUT X)
|
|
*
|
|
****************************************************/
|
|
|
|
void DSP_dspbout(LispPTR *args) /* args[0] : charcode */
|
|
{ putc((args[0] & 0xFFFF) & 0x7f, BCPLDISPLAY); }
|
|
|
|
/****************************************************
|
|
*
|
|
* DSP_showdisplay() entry of SUBRCALL 19 2
|
|
* called from (SHOWDISPLAY BASE RASTERWIDTH)
|
|
*
|
|
****************************************************/
|
|
|
|
extern int DisplayInitialized;
|
|
|
|
void DSP_showdisplay(LispPTR *args)
|
|
{ DisplayInitialized = 1; }
|
|
|
|
/****************************************************
|
|
*
|
|
* DSP_VideoColor() entry of SUBRCALL 66 1
|
|
* called from (VIDEOCLOR BLACKFLG)
|
|
*
|
|
****************************************************/
|
|
|
|
LispPTR DSP_VideoColor(LispPTR *args) /* args[0] : black flag */
|
|
{
|
|
int invert;
|
|
#if defined(XWINDOW)
|
|
invert = args[0] & 0xFFFF;
|
|
lisp_Xvideocolor(invert);
|
|
if (invert)
|
|
return ATOM_T;
|
|
else
|
|
return NIL;
|
|
#else
|
|
return NIL;
|
|
#endif
|
|
}
|
|
|
|
extern struct cursor CurrentCursor;
|
|
extern int LispWindowFd;
|
|
|
|
/****************************************************
|
|
*
|
|
* DSP_Cursor() entry of SUBRCALL 64 2
|
|
* called from \HARDCURSORUP etc.
|
|
*
|
|
****************************************************/
|
|
void DSP_Cursor(LispPTR *args, int argnum)
|
|
/* args[0] : hot spot X
|
|
* args[1] : hot spot Y
|
|
*/
|
|
{
|
|
extern int ScreenLocked;
|
|
extern DLword *EmCursorX68K, *EmCursorY68K;
|
|
extern int LastCursorX, LastCursorY;
|
|
|
|
|
|
#ifdef XWINDOW
|
|
/* For X-Windows, set the cursor to the given location. */
|
|
Set_XCursor((int)(args[0] & 0xFFFF), (int)(args[1] & 0xFFFF));
|
|
#endif /* XWINDOW */
|
|
}
|
|
|
|
/****************************************************
|
|
*
|
|
* DSP_SetMousePos() entry of SUBRCALL 65 2
|
|
* called from macro \SETMOUSEXY etc.
|
|
*
|
|
****************************************************/
|
|
/* args[0] : X pos
|
|
* args[1] : Y pos
|
|
*/
|
|
void DSP_SetMousePos(register LispPTR *args)
|
|
{
|
|
|
|
#ifdef XWINDOW
|
|
if (Mouse_Included)
|
|
set_Xmouseposition((int)(GetSmalldata(args[0])), (int)(GetSmalldata(args[1])));
|
|
#endif /* XWINDOW */
|
|
}
|
|
|
|
/****************************************************
|
|
*
|
|
* DSP_ScreenWidth() entry of SUBRCALL 67 0
|
|
* called from \Katana.DisplayWidth.
|
|
*
|
|
****************************************************/
|
|
LispPTR DSP_ScreenWidth(LispPTR *args)
|
|
{ return (S_POSITIVE | (0xFFFF & displaywidth)); }
|
|
|
|
/****************************************************
|
|
*
|
|
* DSP_ScreenHight() entry of SUBRCALL 68 0
|
|
* called from \Katana.DisplayHeight.
|
|
*
|
|
****************************************************/
|
|
LispPTR DSP_ScreenHight(LispPTR *args)
|
|
{ return (S_POSITIVE | (0xFFFF & displayheight)); }
|
|
|
|
/****************************************************
|
|
*
|
|
* flip_cursor()
|
|
*
|
|
****************************************************/
|
|
|
|
extern DLword *EmCursorBitMap68K;
|
|
extern int for_makeinit;
|
|
|
|
#ifdef XWINDOW
|
|
extern int Current_Hot_X, Current_Hot_Y;
|
|
#endif /* XWINDOW */
|
|
|
|
void flip_cursor() {
|
|
register DLword *word;
|
|
register int cnt;
|
|
extern int ScreenLocked;
|
|
extern DLword *EmCursorX68K, *EmCursorY68K;
|
|
|
|
word = EmCursorBitMap68K;
|
|
|
|
#ifdef INIT
|
|
|
|
/* since this is called frequently, and you don't want to have
|
|
to build a different LDE to run the 2 parts of a Loadup, there is
|
|
an ifdef AND a test. This way we don't generate
|
|
extra code for anybody else building an LDE
|
|
except those who want to try building loadups. */
|
|
|
|
if (!for_makeinit) {
|
|
for (cnt = CURSORHEIGHT; (cnt--);) { GETWORD(word++) ^= 0xFFFF; };
|
|
};
|
|
|
|
#else
|
|
|
|
for (cnt = CURSORHEIGHT; (cnt--);) { GETWORD(word++) ^= 0xFFFF; };
|
|
|
|
#endif
|
|
|
|
|
|
#ifdef XWINDOW
|
|
/* JDS 011213: 15- cur y, as function does same! */
|
|
Set_XCursor(Current_Hot_X, 15 - Current_Hot_Y);
|
|
#endif /* XWINDOW */
|
|
}
|