This is amitcap.c in view mode; [Download] [Up]
/* SCCS Id: @(#)amitcap.c 3.0 89/07/18
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
/* block some unused #defines to avoid overloading some cpp's */
#define MONATTK_H
#include "hack.h" /* for ROWNO, COLNO, *HI, *HE, *AS, *AE */
#ifdef LATTICE
#undef TRUE
#undef FALSE
#undef COUNT
#undef NULL
#include <proto/dos.h>
#endif
#ifndef LATTICE
extern void FDECL(Delay, (unsigned long));
#endif
extern void NDECL(Initialize);
static char HO[] = "\233H"; /* Home CSI H */
static char CL[] = "\f"; /* Clear FF */
static char CE[] = "\233K"; /* Erase EOL CSI K */
static char UP[] = "\x0B"; /* Cursor up VT */
static char ND[] = "\233C"; /* Cursor right CSI C */
static char XD[] = "\233B"; /* Cursor down CSI B */
static char BC[] = "\b"; /* Cursor left BS */
static char MR[] = "\2337m"; /* Reverse on CSI 7 m */
static char ME[] = "\2330m"; /* Reverse off CSI 0 m */
#ifdef TEXTCOLOR
static char SO[] = "\23337m"; /* Use colormap entry #7 (red) */
static char SE[] = "\2330m";
#else
static char SO[] = "\2337m"; /* Inverse video */
static char SE[] = "\2330m";
#endif
#ifdef TEXTCOLOR
/*
* Map our amiga-specific colormap into the colormap specified in color.h.
* See amiwind.c for the amiga specific colormap.
*/
static int foreg[16] = { 0, 7, 4, 2, 6, 5, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
static int backg[16] = { 1, 0, 0, 0, 0, 0, 0, 0, 1, 7, 4, 2, 6, 5, 3, 1 };
#endif
void
startup()
{
#ifdef TEXTCOLOR
register int c;
#endif
(void) Initialize(); /* This opens screen, window, console, &c */
CO = COLNO;
LI = ROWNO+3; /* used in pri.c and pager.c */
set_whole_screen();
CD = "\233J"; /* used in pager.c */
#ifdef TEXTCOLOR
/*
* Perform amiga to color.h colormap conversion - Please note that the
* console device can only handle 8 foreground and 8 background colors
* while color.h defines 8 basic and 8 hilite colors. Hilite colors
* are handled as inverses. For instance, a hilited green color will
* appear as green background with a black foreground.
*/
for (c = 0; c < SIZE(hilites); c++) {
hilites[c] = (char *) alloc(sizeof("E0;33;44m"));
Sprintf(hilites[c], "\2333%d;4%dm", foreg[c], backg[c]);
}
HI = "\2331m"; /* Bold (hilight) */
HE = "\2330m"; /* Plain */
#else
HI = "\2334m"; /* Underline */
HE = "\2330m"; /* Plain */
#endif
}
void
start_screen()
{
}
void
end_screen()
{
clear_screen();
}
/* Cursor movements */
extern xchar curx, cury;
void
curs(x, y)
register int x, y;
{
if (x != curx || y != cury) {
/* Test a few simple cases */
if (x == 1) {
if (y == cury) {
putchar('\r');
goto done;
}
if (y == cury+1) {
putchar('\n'); /* console.device is in crmod mode */
goto done;
}
} else if (x == curx) {
if (y == cury-1) {
putchar('\x0B');
goto done;
}
if (y == cury+1) {
xputs(XD);
goto done;
}
} else if (y == cury) {
if (x == curx-1) {
putchar('\b');
goto done;
}
if (x == curx+1) {
xputs(ND);
goto done;
}
}
{
static char CM[] = "\233--;--H";
CM[1] = '0' + y/10; /* Assumes 0 <= y < 100 */
CM[2] = '0' + y%10;
CM[4] = '0' + x/10; /* Assumes 0 <= x < 100 */
CM[5] = '0' + x%10;
xputs(CM);
}
done:
cury = y;
curx = x;
}
}
void
cl_end()
{
xputs(CE);
}
void
clear_screen()
{
xputs(CL);
home();
}
void
home()
{
xputs(HO);
curx = cury = 1;
}
void
standoutbeg()
{
xputs(SO);
}
void
standoutend()
{
xputs(SE);
}
void
revbeg()
{
xputs(MR);
}
#if 0 /* if you need one of these, uncomment it */
void
boldbeg()
{
xputs("\2331m"); /* CSI 1 m */
}
void
blinkbeg()
{
/* No blink available */
}
void
dimbeg()
/* not in most termcap entries */
{
/* No dim available, use italics */
xputs("\2333m"); /* CSI 3 m */
}
#endif
void
m_end()
{
xputs(ME);
}
void
backsp()
{
xputs(BC);
}
void
bell()
{
if (flags.silent) return;
(void) putchar('\007'); /* curx does not change */
(void) fflush(stdout);
}
void
delay_output() {
/* delay 50 ms */
(void) fflush(stdout);
Delay(2L);
}
void
cl_eos()
{ /* must only be called with curx = 1 */
xputs(CD);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.