mirror of
https://github.com/PDP-10/stacken.git
synced 2026-02-22 07:07:39 +00:00
163 lines
4.3 KiB
Plaintext
163 lines
4.3 KiB
Plaintext
UNIVERSAL DPYDEF DEFINITIONS FOR DPY MODULE
|
||
|
||
|
||
|
||
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
|
||
; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
|
||
;
|
||
;COPYRIGHT (C) 1976,1977,1978,1979 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
|
||
|
||
|
||
|
||
;THIS IS THE DEFINITION FILE FOR DPY. THE DPY MODULE IS CALLED BY LUUOS.
|
||
;A STACK POINTER MUST EXIST IN AC 17. THE FOLLOWING INSTRUCTIONS SHOW
|
||
;HOW TO BEGIN TO USE DPY:
|
||
;
|
||
; SEARCH DPYDEF ;GET DEFINITIONS
|
||
;
|
||
; MOVE T1,[PUSHJ P,DPYUUO] ;GET CALLING INSTRUCTION
|
||
; MOVEM T1,.JB41 ;AND SET UP LUUO DISATCH
|
||
;
|
||
;THEN ANY OF THE LUUOS CAN BE USED. THE INI$ LUUO MUST BE DONE FIRST.
|
||
|
||
|
||
|
||
|
||
;GLOBAL SYMBOLS USED TO COMMUNICATE BETWEEN DPY AND OUTSIDE PROGS:
|
||
|
||
|
||
EXTERN DPYUUO ;ADDRESS OF ROUTINE TO ENTER DPY
|
||
EXTERN DPYTAB ;ADDRESS OF TABLE OF VARIABLES
|
||
|
||
|
||
|
||
;LUUO DEFINITIONS:
|
||
|
||
|
||
OPDEF INI$ [ 1B8] ;INITIALIZE DPY
|
||
OPDEF STR$ [ INI$ 1,] ;GIVE ASCIZ STRING TO DPY
|
||
OPDEF CHR$ [ INI$ 2,] ;GIVE SINGLE CHARACTER TO DPY
|
||
OPDEF CHI$ [ INI$ 3,] ;GIVE IMMEDIATE CHARACTER TO DPY
|
||
OPDEF SIZ$ [ INI$ 4,] ;SET WINDOW BOUNDARIES
|
||
OPDEF TAB$ [ INI$ 5,] ;SET TAB STOPS
|
||
OPDEF REF$ [ INI$ 6,] ;REFRESH THE SCREEN
|
||
OPDEF DPY$ [ INI$ 7,] ;SHOW CHANGES TO SCREEN
|
||
OPDEF SET$ [ INI$ 10,] ;SET VARIOUS PARAMETERS
|
||
OPDEF TTY$ [ INI$ 11,] ;DO VARIOUS TTY ACTIONS
|
||
OPDEF LOC$ [ INI$ 12,] ;RETURN ADDRESS OF NEXT OUTPUT TO DPY
|
||
OPDEF ADR$ [ INI$ 13,] ;MOVE CURSER TO GIVEN SCREEN LOCATION
|
||
|
||
;OFFSETS INTO THE INI$ ARGUMENT BLOCK:
|
||
|
||
|
||
$INCNT==0 ;ARGUMENTS FOLLOWING AND FLAGS
|
||
$INADR==1 ;ADDRESS OF STORAGE FOR DPY'S DATA
|
||
$INERR==2 ;LOCATION TO GO TO ON ERRORS
|
||
$INTTY==3 ;TERMINAL TYPE CODE OR POINTER
|
||
$INJFN==4 ;JFN OR BUFFER,,CHANNEL FOR OUTPUT
|
||
$INMAX==4 ;HIGHEST ARGUMENT
|
||
|
||
|
||
;FLAGS AND FIELDS DEFINED FOR THE VARIOUS LUUOS:
|
||
|
||
|
||
IN$NCL==400000 ;FOR INI$ - DON'T CLEAR SCREEN
|
||
|
||
RE$CLR==000001 ;FOR REF$ - CLEAR SCREEN FIRST
|
||
RE$NOH==000002 ;FOR REF$ - DON'T HOME UP WHEN DONE
|
||
|
||
DP$NOH==000002 ;FOR DPY$ - DON'T HOME UP WHEN DONE
|
||
|
||
AD$NOM==400000 ;FOR ADR$ - DON'T MOVE CURSER
|
||
|
||
|
||
|
||
|
||
;FUNCTIONS FOR SET$ LUUO:
|
||
|
||
|
||
$SEACR==1 ;DO AUTOMATIC CRLFS AT END OF LINE
|
||
$SEDCW==2 ;DON'T CLEAR END OF WINDOWS
|
||
$SEUDA==3 ;KEEP DPY'S ACS WHEN GIVING CHARS TO USER
|
||
$SECHR==4 ;SET OUTPUT ROUTINE FOR GETTING CHARS
|
||
$SEERR==5 ;SET ERROR ROUTINE HANDLER
|
||
$SEWND==6 ;SET MULTIPLE WINDOWS
|
||
$SEUOK==7 ;UPDATING SAME LOCATION TWICE IS OK
|
||
$SEEAT==10 ;SET NUMBER OF LINES TO IGNORE
|
||
|
||
|
||
|
||
;FUNCTIONS FOR TTY$ LUUO:
|
||
|
||
|
||
$TTHOM==0 ;HOME TO TOP LEFT CORNER
|
||
$TTCLR==1 ;HOME UP AND CLEAR SCREEN
|
||
|
||
;OFFSETS IN DPYTAB TABLE:
|
||
|
||
|
||
$DPLEN==0 ;POINTER TO TERMINAL'S LENGTH
|
||
$DPWID==1 ;POINTER TO TERMINAL'S WIDTH
|
||
$DPSIZ==2 ;POINTER TO 4 WORDS GIVING CURRENT WINDOW
|
||
$DPWCT==3 ;POINTER TO CURRENT WINDOW COUNTER
|
||
$DPDTL==4 ;LENGTH OF RELOCATABLE DATA
|
||
$DPADR==5 ;POINTER TO ADDRESS OF RELOCATABLE DATA
|
||
$DPSCR==6 ;POINTER TO SCREEN STORAGE
|
||
$DPERR==7 ;HIGHEST ERROR,,ADDRESS OF ERROR TABLE
|
||
$DPTTY==10 ;ADDRESS OF TERMINAL TYPE TABLE
|
||
$DPJFN==11 ;POINTER TO JFN USED FOR TTY
|
||
$DPEAT==12 ;POINTER TO NUMBER OF LINES LEFT TO EAT
|
||
$DPMAX==12 ;HIGHEST LEGAL OFFSET
|
||
|
||
|
||
;ERROR CODES RETURNED FROM DPY:
|
||
|
||
|
||
$ERUKE==0 ;UNKNOWN ERROR
|
||
$ERILR==1 ;ILLEGAL LUUO RECEIVED
|
||
$ERUSL==2 ;UPDATED SAME LOCATION TWICE
|
||
$ERIWS==3 ;ILLEGAL WINDOW SIZE GIVEN
|
||
$ERISF==4 ;ILLEGAL SET FUNCTION GIVEN
|
||
$ERITF==5 ;ILLEGAL TTY FUNCTION GIVEN
|
||
$ERCDS==6 ;CANNOT OUTPUT DESIRED SEQUENCE
|
||
$EROPF==7 ;OUTPUT FAILURE OCCURRED
|
||
$ERIPG==10 ;ILLEGAL TERMINAL ADDRESS GIVEN
|
||
$ERING==11 ;INITIALIZE FUNCTION NOT GIVEN
|
||
$ERIFF==12 ;INITIALIZE FUNCTION FAILED
|
||
|
||
;MACRO TO GENERATE TAB STOPS. MAKES 4 WORDS OF DATA, WHERE BIT N
|
||
;MEANS SET A TAB STOP AT COLUMN N. ALL QUANTITIES ARE IN DECIMAL.
|
||
|
||
|
||
|
||
|
||
|
||
DEFINE $TABS(COLS),<
|
||
|
||
$TAB$1==0 ;;INITIALIZE ALL 4 WORDS
|
||
$TAB$2==0
|
||
$TAB$3==0
|
||
$TAB$4==0
|
||
|
||
IRP <COLS>,< ;;LOOP OVER ALL DESIRED COLUMNS
|
||
|
||
$TAB$N==^D<COLS>/^D36 ;;FIND WHICH WORD TO PUT BIT IN
|
||
$TAB$B==1B0_<$TAB$N*^D36-^D<COLS>> ;;AND BIT VALUE
|
||
|
||
IFE <$TAB$N-0>,<$TAB$1==$TAB$1!$TAB$B>
|
||
IFE <$TAB$N-1>,<$TAB$2==$TAB$2!$TAB$B>
|
||
IFE <$TAB$N-2>,<$TAB$3==$TAB$3!$TAB$B>
|
||
IFE <$TAB$N-3>,<$TAB$4==$TAB$4!$TAB$B>
|
||
>
|
||
|
||
EXP $TAB$1 ;;DUMP THE FOUR DATA WORDS NOW
|
||
EXP $TAB$2
|
||
EXP $TAB$3
|
||
EXP $TAB$4
|
||
>
|
||
|
||
|
||
|
||
|
||
END
|