|
|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 3546 (0xdda)
Types: TextFile
Notes: UNIX file
Names: »tty.h«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code
└─⟦2d53db1df⟧ UNIX Filesystem
└─⟦this⟧ »sys/h/tty.h«
/* (-lgl
* The information contained herein is a trade secret of Mark Williams
* Company, and is confidential information. It is provided under a
* license agreement, and may be copied or disclosed only under the
* terms of that agreement. Any reproduction or disclosure of this
* material without the express written authorization of Mark Williams
* Company or persuant to the license agreement is unlawful.
*
* COHERENT Version 0.7.3
* Copyright (c) 1982, 1983, 1984.
* An unpublished work by Mark Williams Company, Chicago.
* All rights reserved.
-lgl) */
/*
* Typewriter structure.
*/
#ifndef TTY_H
#define TTY_H
#include <types.h>
#include <clist.h>
#include <sgtty.h>
#define NCIB 128 /* Input buffer */
#define OHILIM 128 /* Output buffer hi water mark */
#define OLOLIM 40 /* Output buffer lo water mark */
#define IHILIM 512 /* Input buffer hi water mark */
#define ILOLIM 40 /* Input buffer lo water mark */
#define ITSLIM (IHILIM-(IHILIM/4)) /* Input buffer tandem stop mark */
#define ESC '\\' /* Some characters */
#define CTRLD 04
#define CTRLC 03
#define CTRLU 025
#define FS 034
#define CTRLS 023
#define CTRLQ 021
#define DEL 0177
typedef struct tty {
CQUEUE t_oq; /* Output queue */
CQUEUE t_iq; /* Input queue */
char *t_ddp; /* Device specific */
int (*t_start)(); /* Start function */
int (*t_param)(); /* Load parameters function */
char t_dispeed; /* Default input speed */
char t_dospeed; /* Default output speed */
int t_open; /* Open count */
int t_flags; /* Flags */
char t_nfill; /* Number of fill characters */
char t_fillb; /* The fill character */
int t_ibx; /* Input buffer index */
char t_ib[NCIB]; /* Input buffer */
int t_hpos; /* Horizontal position */
int t_opos; /* Original horizontal position */
struct sgttyb t_sgttyb;/* Stty/gtty information */
struct tchars t_tchars;/* Tchars information */
int t_group; /* Process group */
int t_escape; /* Pending escape count */
} TTY;
/*
* Flags.
*/
#define T_HILIM 01 /* Hi water mark wait */
#define T_DRAIN 02 /* Drain wait */
#define T_INPUT 04 /* Input wait */
#define T_INL 020 /* Insert newline */
#define T_STOP 040 /* Stopped */
#define T_HPCL 0100 /* Hang up dataset on last close */
#define T_EXCL 0200 /* Exclusive use */
#define T_TSTOP 0400 /* Tandem input stop */
#define T_ISTOP 01000 /* Input overflow stop */
#define T_USER0 010000 /* User bit 0 */
#define T_USER1 020000 /* User bit 1 */
#define T_USER2 040000 /* User bit 2 */
#define T_USER3 0100000 /* User bit 3 */
/*
* Test macros.
* Assume `tp' holds a TTY pointer.
* `c' a character.
* Be very careful if you work on the
* tty driver that this is true.
*/
#define ISINTR (tp->t_tchars.t_intrc == c)
#define ISQUIT (tp->t_tchars.t_quitc == c)
#define ISEOF (tp->t_tchars.t_eofc == c)
#define ISBRK (tp->t_tchars.t_brkc == c)
#define ISSTART (tp->t_tchars.t_startc == c)
#define ISSTOP (tp->t_tchars.t_stopc == c)
#define ISCRMOD ((tp->t_sgttyb.sg_flags&CRMOD) != 0)
#define ISXTABS ((tp->t_sgttyb.sg_flags&XTABS) != 0)
#define ISRIN ((tp->t_sgttyb.sg_flags&RAWIN) != 0)
#define ISROUT ((tp->t_sgttyb.sg_flags&RAWOUT)!= 0)
#define ISECHO ((tp->t_sgttyb.sg_flags&ECHO) != 0)
#define ISCRT ((tp->t_sgttyb.sg_flags&CRT) != 0)
#define ISCBRK ((tp->t_sgttyb.sg_flags&CBREAK)!= 0)
#define ISTAND ((tp->t_sgttyb.sg_flags&TANDEM)!= 0)
#define ISBBYB ((tp->t_sgttyb.sg_flags&(RAWIN|CBREAK)) != 0)
#define ISERASE (tp->t_sgttyb.sg_erase == c)
#define ISKILL (tp->t_sgttyb.sg_kill == c)
#endif