mirror of
https://github.com/simh/simh.git
synced 2026-01-11 23:52:58 +00:00
Only interface code to Type 340 is for Richard Cornwell's KA10 (but could be used on PDP-1/4/7/9 as well)
178 lines
4.7 KiB
C
178 lines
4.7 KiB
C
/*
|
|
* constants for type 340 words
|
|
* (use for writing test programs)
|
|
*/
|
|
|
|
/*
|
|
* Copyright (c) 2018, Philip L. Budne
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
* THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*
|
|
* Except as contained in this notice, the name of the author shall
|
|
* not be used in advertising or otherwise to promote the sale, use or
|
|
* other dealings in this Software without prior written authorization
|
|
* from the authors.
|
|
*/
|
|
|
|
|
|
#define CHAR(C1,C2,C3) \
|
|
(((C1)<<12)|((C2)<<6)|(C3))
|
|
|
|
#define INCRPT(P1,P2,P3,P4) (((P1)<<12)|((P2)<<8)|((P3)<<4)|(P4))
|
|
|
|
/*
|
|
* adapted from
|
|
* 7-13_340_Display_Programming_Manual.pdf
|
|
* Appendix 1: Mnemonics
|
|
*
|
|
* tst340.c dump() routine uses/prints these
|
|
*/
|
|
|
|
/* modes: */
|
|
#define MPAR 0000000 /* parameter */
|
|
#define MPT 0020000 /* point */
|
|
#define MSLV 0040000 /* slave */
|
|
#define MCHR 0060000 /* character */
|
|
#define MVCT 0100000 /* Vector */
|
|
#define MVCTC 0120000 /* Vector continue */
|
|
#define MINCR 0140000 /* Increment */
|
|
#define MSUBR 0160000 /* Subroutine */
|
|
|
|
#define MODEMASK 0160000
|
|
|
|
/****************
|
|
* Parameter Mode Words
|
|
*/
|
|
|
|
#define LPON 014000
|
|
#define LPOFF 010000
|
|
|
|
#define STP 0003000 /* stop & interrupt */
|
|
#define STOP 0001000 /* just stop: not in display manual */
|
|
|
|
/* scale settings */
|
|
#define S0 0000100
|
|
#define S1 0000120
|
|
#define S2 0000140
|
|
#define S3 0000160
|
|
|
|
/* intensity settings */
|
|
#define IN0 0000010
|
|
#define IN1 0000011
|
|
#define IN2 0000012
|
|
#define IN3 0000013
|
|
#define IN4 0000014
|
|
#define IN5 0000015
|
|
#define IN6 0000016
|
|
#define IN7 0000017
|
|
|
|
/****************
|
|
* Point Mode Words
|
|
*/
|
|
|
|
#define V 0200000 /* Vertical word */
|
|
#define H 0000000 /* Horizontal word */
|
|
#define IP 0002000 /* Intensify point */
|
|
|
|
/****************
|
|
* Slave Mode Words
|
|
*/
|
|
|
|
#define S1ON 05000
|
|
#define S1OFF 04000
|
|
#define LP1ON 02000
|
|
|
|
#define S2ON 0500
|
|
#define S2OFF 0400
|
|
#define LP2ON 0200
|
|
|
|
#define S3ON 050
|
|
#define S3OFF 040
|
|
#define LP3ON 020
|
|
|
|
#define S4ON 05
|
|
#define S4OFF 04
|
|
#define LP4ON 02
|
|
|
|
// for use in XXX macro:
|
|
#define SXON 05
|
|
#define SXOFF 04
|
|
#define LPXON 02
|
|
|
|
/****************
|
|
* Character mode
|
|
*/
|
|
|
|
/* defines from ITS: 340def 4 */
|
|
#define CHRESC 037 /* escape from character mode */
|
|
#define CHRUC 035 /* shift to upper-case */
|
|
#define CHRLC 036 /* " " lower-case */
|
|
#define CHRLF 033 /* line-feed */
|
|
#define CHRCR 034 /* carriage-return */
|
|
#define CHRSP 040 /* space (identity!) */
|
|
|
|
/****************
|
|
* Vector and Vector Continue Words
|
|
*/
|
|
|
|
#define ESCP 0400000 /* Escape */
|
|
#define INSFY 0200000 /* Intensify */
|
|
|
|
/** y position */
|
|
|
|
#define DN 0100000 /* Down */
|
|
#define UP 0000000 /* Up */
|
|
|
|
/* number of points moved */
|
|
#define YP64 0040000
|
|
#define YP32 0020000
|
|
#define YP16 0010000
|
|
#define YP8 0004000
|
|
#define YP4 0002000
|
|
#define YP2 0001000
|
|
#define YP1 0000400
|
|
|
|
/** x position */
|
|
#define LT 0000200 /* Left */
|
|
#define RT 0000000 /* Right */
|
|
|
|
#define XP64 0000100
|
|
#define XP32 0000040
|
|
#define XP16 0000020
|
|
#define XP8 0000010
|
|
#define XP4 0000004
|
|
#define XP2 0000002
|
|
#define XP1 0000001
|
|
|
|
/****************
|
|
* increment
|
|
*/
|
|
|
|
#define PR 010
|
|
#define PL 014
|
|
#define PU 002
|
|
#define PD 003
|
|
|
|
#define PUL (PU|PL)
|
|
#define PUR (PU|PR)
|
|
|
|
#define PDL (PD|PL)
|
|
#define PDR (PD|PR)
|
|
|
|
/* INSFY and ESCP from vector modes */
|