Trailing-Edge
-
PDP-10 Archives
-
bb-x130a-sb
-
dpydef.mac
There are 23 other files named dpydef.mac in the archive. Click here to see a list.
UNIVERSAL DPYDEF DEFINITIONS FOR DPY MODULE
;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
;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 ;DPR 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
;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
$ERUTT==7 ;CAN'T RUN ON THIS TERMINIAL TYPE
$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