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 ,< ;;LOOP OVER ALL DESIRED COLUMNS $TAB$N==^D/^D36 ;;FIND WHICH WORD TO PUT BIT IN $TAB$B==1B0_<$TAB$N*^D36-^D> ;;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