home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
mitsch75.zip
/
scheme-7_5_17-src.zip
/
scheme-7.5.17
/
src
/
microcode
/
nttterm.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-12-05
|
3KB
|
92 lines
/* -*-C-*-
$Id: nttterm.c,v 1.4 2000/12/05 21:23:46 cph Exp $
Copyright (c) 1992-2000 Massachusetts Institute of Technology
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* termcap(3) interface for Scheme -- Only a subset needed for Win32. */
#include "scheme.h"
#include "prims.h"
#include "osterm.h"
extern char * EXFUN (tparam, (char *, char*, int, int, ...));
extern char * EXFUN (tgoto, (char *, int, int));
extern int EXFUN (tputs, (char *, int, void (*) (int)));
extern char * BC;
extern char * UP;
extern char PC;
extern short ospeed;
#ifndef TERMCAP_BUFFER_SIZE
#define TERMCAP_BUFFER_SIZE 2048
#endif
static char tputs_output [TERMCAP_BUFFER_SIZE];
static char * tputs_output_scan;
static void
DEFUN (tputs_write_char, (c), int c)
{
(*tputs_output_scan++) = c;
return;
}
DEFINE_PRIMITIVE ("TERMCAP-PARAM-STRING", Prim_termcap_param_string, 5, 5, 0)
{
PRIMITIVE_HEADER (5);
{
char * s =
(tparam ((STRING_ARG (1)), 0, 0,
(arg_nonnegative_integer (2)),
(arg_nonnegative_integer (3)),
(arg_nonnegative_integer (4)),
(arg_nonnegative_integer (5))));
SCHEME_OBJECT result = (char_pointer_to_string ((unsigned char *) s));
free (s);
PRIMITIVE_RETURN (result);
}
}
DEFINE_PRIMITIVE ("TERMCAP-GOTO-STRING", Prim_termcap_goto_string, 5, 5, 0)
{
PRIMITIVE_HEADER (5);
{
BC = (((ARG_REF (4)) == SHARP_F) ? 0 : (STRING_ARG (4)));
UP = (((ARG_REF (5)) == SHARP_F) ? 0 : (STRING_ARG (5)));
PRIMITIVE_RETURN
(char_pointer_to_string
((unsigned char *)
(tgoto ((STRING_ARG (1)),
(arg_nonnegative_integer (2)),
(arg_nonnegative_integer (3))))));
}
}
DEFINE_PRIMITIVE ("TERMCAP-PAD-STRING", Prim_termcap_pad_string, 4, 4, 0)
{
PRIMITIVE_HEADER (4);
ospeed = (arg_baud_index (3));
PC = (((ARG_REF (4)) == SHARP_F) ? '\0' : ((STRING_ARG (4)) [0]));
tputs_output_scan = tputs_output;
tputs ((STRING_ARG (1)), (arg_nonnegative_integer (2)), tputs_write_char);
PRIMITIVE_RETURN
(memory_to_string ((tputs_output_scan - tputs_output),
((unsigned char *) tputs_output)));
}