Trailing-Edge
-
PDP-10 Archives
-
BB-X116A-BB_1984
-
swimsc.mac
There are 4 other files named swimsc.mac in the archive. Click here to see a list.
TITLE .MISC SWIL miscellaneous support routines
SUBTTL Robert Houk/RDH
SEARCH SWIDEF, SWIL ;SWIL PACKAGE DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIREC FLBLST ;PRETTIER LISTINGS
TWOSEG 400000
Copyright (C) Digital Equipment Corporation 1984.
COMMENT \
Copyright (C) 1984
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copied only
in accordance with the terms of such license and with the inclusion of the
above copyright notice. This software or any other copies thereof may not
be provided or otherwise made available to any other person. No title to
and ownership of the software is hereby transferred.
The information in this software is subject to change without notice and
should not be construed as a commitment by Digital Equipment Corporation.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
\
;SWIMSC VERSION IDENTIFICATION
MAJVER==1 ;MAJOR VERSION LEVEL
MINVER==0 ;MINOR (MAINTENANCE RELEASE) LEVEL
CSTVER==0 ;CUSTOMER VERSION (WHO LAST . . .)
EDTVER==0 ;EDIT LEVEL
%%MISC==:<BYTE (3)CSTVER(9)MAJVER(6)MINVER(18)EDTVER>
IF2,< PURGE CSTVER,MAJVER,MINVER,EDTVER>
SUBTTL Revision history
PRGEND
TITLE .MNET SWIL miscellaneous network routines
SUBTTL
SEARCH SWIDEF, SWIL ;SWIL PACKAGE DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIREC FLBLST ;PRETTIER LISTINGS
TWOSEG 400000
;Copyright (C) Digital Equipment Corporation 1984.
COMMENT \
Copyright (C) 1984
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copied only
in accordance with the terms of such license and with the inclusion of the
above copyright notice. This software or any other copies thereof may not
be provided or otherwise made available to any other person. No title to
and ownership of the software is hereby transferred.
The information in this software is subject to change without notice and
should not be construed as a commitment by Digital Equipment Corporation.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
\
SUBTTL NDNAM Return node name based on node specification
;NDNAM -- TRY TO MAKE A NAME OUT OF A NODE SPECIFIER
;CALL IS:
;
; MOVX T3,<NODE>
; PUSHJ P,NDNAM
; RETURN
;
;WHERE <NODE> IS SIXBIT NODE NAME, SIXBIT NODE NUMBER, OR OCTAL NODE NUMBER.
;
;ON RETURN T1 WILL HAVE THE NODE NAME IF <NODE> IS MEANINGFUL, OTHERWISE
;T1 WILL HAVE <NODE>, ASSUMING WHOEVER WANTS TO USE IT WILL BE BETTER
;SITUATED TO COMPLAIN ABOUT NO SUCH NODE. T2 WILL HAVE THE NODE NUMBER
;ASSOCIATED WITH THE NAME IN T1, OR -1 IF THE NODE SPEC WAS UNIDENTIFIABLE.
;
;USES T1 - T4.
ENTRY .NDNAM
.NDNAM: PUSH P,T3 ;SAVE INPUT
CAMN T3,.MYNOD## ;LOCAL (KNOWN) NAME?
JRST NDNAM5 ;YES, THEN ALL SET
TLNN T3,770000 ;SIXBIT OF SOME SORT?
JRST NDNAM3 ;NO, MUST BE OCTAL NODE NUMBER
MOVE T1,[.NDRNN,,T2] ;YES, MAY BE SIXBIT NODE NUMBER
MOVEI T2,2 ;SO ASK MONITOR FOR OCTAL NODE NUMBER
NODE. T1, ;SINCE WE CAN'T TELL THE DIFFERENCE
JRST NDNAM5 ;JUNK, PRESERVE INPUT
MOVE T3,T1 ;SET UP NODE NUMBER
NDNAM3: MOVE T1,[.NDRNN,,T2] ;ARG POINTER
MOVEI T2,2 ;AND ARG BLOCK LENGTH
NODE. T1, ;TO READ NODE NAME GIVEN NODE NUMBER
NDNAM5: MOVE T1,0(P) ;NO SUCH NODE, RETURN INPUT SPECIFIER
PUSH P,T1 ;SAVE NODE NAME
MOVE T3,T1 ;POSITION NAME IN T3
MOVE T1,[.NDRNN,,T2] ;ARG POINTER
MOVEI T2,2 ;AND ARG BLOCK LENGTH
NODE. T1, ;TO READ NODE NUMBER FOR NAME
SETO T1, ;NONE KNOWN
MOVE T2,T1 ;RETURN NODE NUMBER IN T2
POP P,T1 ;AND NODE NAME IN T1
POP P,T3 ;ADJUST STACK
POPJ P, ;AND RETURN
SUBTTL HST6W Return host node name
;HST6W -- RETURN HOST NAME IN SIXBIT
;Call is:
;
; PUSHJ P,HST6W
; ERROR RETURN
; NORMAL RETURN
;
;The error return is taken if no networks exist.
;
;On normal return the host name (in sixbit) is in T1.
;
;All acs are preserved.
ENTRY .HST6W
.HST6W: PUSHJ P,.SAVE2## ;NEED A COUPLA SCRATCH ACS
MOVEI P1,2 ;LENGTH 2
MOVSI P2,'CTY' ;IDENTIFY HOST
WHERE P2,UU.PHY ;BY TRADITIONAL MEANS
JRST HST6W8 ;NO NETWORKS
ANDI P2,-1 ;REDUCE TO ONLY NODE NUMBER
MOVE T1,[.NDRNN,,P1] ;NODE. ARG BLOCK TO
NODE. T1, ;GET HOST NAME IN SIXBIT
JRST HST6W8 ;NO NETWORKS
JRST .POPJ1## ;SUCCESSFUL RETURN
HST6W8: MOVX M0,$EFNNS ;NO NETWORK SOFTWARE
SETO T1, ;MAKE JUNK NAME
POPJ P, ;RETURN ERROR
XLIST ;THE LITERALS
LIT
LIST
PRGEND
TITLE .MCODE SWIL "code" searching and dispatch routines
SUBTTL
SEARCH SWIDEF, SWIL ;SWIL PACKAGE DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIREC FLBLST ;PRETTIER LISTINGS
TWOSEG 400000
;Copyright (C) Digital Equipment Corporation 1984.
COMMENT \
Copyright (C) 1984
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copied only
in accordance with the terms of such license and with the inclusion of the
above copyright notice. This software or any other copies thereof may not
be provided or otherwise made available to any other person. No title to
and ownership of the software is hereby transferred.
The information in this software is subject to change without notice and
should not be construed as a commitment by Digital Equipment Corporation.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
\
SUBTTL CDISP Dispatch on code value
;CDISP -- DISPATCH ON CODE
;Call is:
;
; MOVX T2,<CODE>
; JSP T4,CDISP
; DISP1,,CODE1
; DISP2,,CODE2
; . . .
; DISPN,,CODEN
; 0
; NO DISPATCH
;
;Where <CODE> is the code upon which to dispatch. CODE1, CODE2, . . .,
;CODEN are the possible codes to match, and DISP1, DISP2, . . ., DISPN
;are the dispatch addresses if the code matches.
;
;If no matching code is found the "NO DISPATCH" return is taken.
;
;Uses acs T1, T4.
ENTRY .CDISP
.CDISP: MOVE T1,(T4) ;GET FIRST TABLE ENTRY
JRST CDISP4 ;AND START LOOKING THERE
CDISP2: SKIPN T1,(T4) ;END OF TABLE YET?
JRST 1(T4) ;YES, TAKE "NO DISPATCH" RETURN
CDISP4: CAIE T2,(T1) ;CODES MATCH?
AOJA T4,CDISP2 ;NO, SEARCH REST OF TABLE
HLRZ T1,(T4) ;GET DISPATCH ADDRESS
JRST (T1) ;AND DISPATCH AS DIRECTED
SUBTTL CFIND Return value based on code
;CFIND -- FIND A CONTROL CODE IN A TABLE
;Call is:
;
; MOVX T2,<CODE>
; MOVEI T4,<TABL>
; PUSHJ P,CFIND
; ERROR RETURN
; NORMAL RETURN
;
;Where <TABL> is a table a la CDISP above (codes in right half of words,
;return value in left half of words, table terminated by a 0 word)
;and <CODE> is the code to match.
;
;On error return, <CODE> was not in the table.
;
;On normal return, T4 will point to the table entry that matched, and
;T1 will contain the matching value for <CODE>.
;
;Uses acs T1, T4.
ENTRY .CFIND
.CFIND: MOVE T1,(T4) ;GET FIRST TABLE ENTRY
JRST CFIND4 ;AND START LOOKING THERE
CFIND2: SKIPN T1,(T4) ;END OF TABLE YET?
POPJ P, ;YES, TAKE ERROR RETURN
CFIND4: CAIE T2,(T1) ;CODES MATCH?
AOJA T4,CFIND2 ;NO, SEARCH REST OF TABLE
HLRZ T1,(T4) ;GET RETURN VALUE
JRST .POPJ1## ;SUCCESSFUL RETURN
XLIST ;THE LITERALS
LIT
LIST
PRGEND
TITLE .BYBLT SWIL byte "BLT" routines
SUBTTL
SEARCH SWIDEF, SWIL ;SWIL PACKAGE DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIREC FLBLST ;PRETTIER LISTINGS
TWOSEG 400000
;Copyright (C) Digital Equipment Corporation 1984.
COMMENT \
Copyright (C) 1984
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copied only
in accordance with the terms of such license and with the inclusion of the
above copyright notice. This software or any other copies thereof may not
be provided or otherwise made available to any other person. No title to
and ownership of the software is hereby transferred.
The information in this software is subject to change without notice and
should not be construed as a commitment by Digital Equipment Corporation.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
\
SUBTTL BYBLT Byte "BLT" routine
;.BYBLT -- "BLT" A BYTE STRING
;Call is:
;
; MOVX T2,<CNT>
; MOVX T3,<SRC>
; MOVX T4,<DST>
; PUSHJ P,BYBLT
; error return
; normal return
;
;Where <CNT> is the number of bytes to "BLT"; <SRC> and <DST> are the
;source and destination byte pointers respectively (must be single
;word byte pointers, they may use indexing (with, e.g., register IO)
;for global addressing).
;
;The error return is not used (if a non-positive count is supplied then
;BYBLT will STOPCD).
;
;On successful return, the byte string will have been moved as directed
;with T2 returned 0, and T4 pointing to the last byte copied (e.g.,
;ready for consecutive use in multiple calls to BYBLT used to gather
;multiple independent byte strings).
;
;Uses T1, T2, T3, T4.
ENTRY .BYBLT
.BYBLT: JUMPG T2,BYBLT2 ;OK IF REALLY SOMETHING TO DO
JUMPE T2,.POPJ1## ;DONE SUCCESSFULLY IF NOTHING TO DO
STOPCD <BYBLT called with negative byte count>
;Now here is a good place for a really nifty routine. For now though . . .
BYBLT2: ILDB T1,T3 ;GET A SOURCE BYTE
IDPB T1,T4 ;AND MAKE IT A DESTINATION BYTE
SOJG T2,BYBLT2 ;LOOP FOR ENTIRE SOURCE STRING
JRST .POPJ1## ;SUCCESSFUL RETURN
XLIST ;THE LITERALS
LIT
LIST
PRGEND
TITLE .XTYIO SWIL "command" input/output redirection
SUBTTL
SEARCH SWIDEF, SWIL ;SWIL PACKAGE DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIREC FLBLST ;PRETTIER LISTINGS
TWOSEG 400000
;Copyright (C) Digital Equipment Corporation 1984.
COMMENT \
Copyright (C) 1984
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copied only
in accordance with the terms of such license and with the inclusion of the
above copyright notice. This software or any other copies thereof may not
be provided or otherwise made available to any other person. No title to
and ownership of the software is hereby transferred.
The information in this software is subject to change without notice and
should not be construed as a commitment by Digital Equipment Corporation.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
\
SUBTTL XTYPI Coroutine to redirect command input
;XTYPI -- SET TYPEIN STREAM ROUTINE
;Call is:
;
; MOVX T1,<ADDR>
; PUSHJ P,XTYPI
; RETURN
;
;Where <ADDR> is the address of the routine to call to perform "typein".
;
;On normal return all command input requests will be redirected to the
;specified routine.
;
;When the caller returns, typein will be automatically restored to the
;previous state. If the previous state is top level (no previous calls
;to XTYPI) then the input service will be cleaned down in such a fashion
;as to keep SCAN happy.
;
;Uses T1.
ENTRY .XTYPI
.XTYPI: PUSHJ P,.TYPRE## ;SELECT PRE-EMPTIVE INPUT SERVICE
PUSH P,T1 ;SAVE OLD ROUTINE
PUSHJ P,@-1(P) ;CALL OUR CALLER
CAIA ;NON-SKIP RETURN
AOS -2(P) ;SKIP RETURN
POP P,T1 ;RESTORE PREVIOUS STATE OF INPUT
JUMPN T1,XTYPI4 ;AND SIMPLY UN-NEST IF NESTED
XMOVEI T1,XTYPI7 ;OTHERWISE MOMENTARILY SUPPLY OUR VERY OWN
PUSHJ P,.TYPRE## ;EOL INPUT SERVICE
PUSHJ P,.CLEOL## ;MAKE SURE SCAN AT NICE END OF LINE STATE
SETZ T1, ;NOW CLEAR OUT PRE-EMPTIVE SERVICE
XTYPI4: PUSHJ P,.TYPRE## ;SET NEW INPUT SERVICE
POP P,T1 ;ADJUST STACK
POPJ P, ;RETURN AS APPROPRIATE
;SUPPLY EOL TO .TI---
XTYPI7: MOVEI CH,.CHLFD ;A NICE JUICY EOL CHARACTER
POPJ P, ;EASY AS COULD BE
SUBTTL XTYPO Coroutine to redirect command output
;XTYPO -- SET TYPEOUT STREAM ROUTINE
;Call is:
;
; MOVX T1,<ADDR>
; PUSHJ P,XTYPO
; RETURN
;
;Where <ADDR> is the address of the routine to call to perform "typeout".
;
;On normal return the typeout will be directed to the addressed routine.
;When the caller returns the original typeout routine in effect before
;the call to XTYPO will be restored.
;
;Preserves all acs.
ENTRY .XTYPO
.XTYPO: PUSHJ P,.TYOCH## ;SET TYPEOUT ROUTINE
PUSH P,T1 ;SAVE PREVIOUS ROUTINE
PUSHJ P,@-1(P) ;CALL OUR CALLER
CAIA ;NON-SKIP RETURN
AOS -2(P) ;SKIP RETURN
POP P,T1 ;ORIGINAL TYPEOUT ROUTINE
POP P,(P) ;JUNK ADDRESS
PJRST .TYOCH## ;RESTORE ORIGINAL TYPEOUT ROUTINE
SUBTTL XERRT Coroutine to process [SCAN] error interception
;XERRT -- SET SCAN ERROR INTERCEPTION
;Call is:
;
; MOVX T1,<ADDR>
; PUSHJ P,XERRT
; RETURN
;
;Where <ADDR> is the address of the routine to call on error detection.
;
;On normal return, the caller can call SCAN routines, and if any fatal
;syntax errors occur, the caller's specified routine will be called rather
;than aborting. The specified error intercept routine will be entered
;with the stack "phased" to immediately after the caller's call to .XERRT.
;
;Preserves all acs.
ENTRY .XERRT
.XERRT: PUSH P,T1 ;SAVE CALLER'S NEW ERROR INTERCEPT ROUTINE
PUSH P,NFTERP## ;SAVE PRE-CALLER ERROR STACK POINTER
PUSH P,NFTERT## ;SAVE PRE-CALLER ERROR INTERCEPT
PUSHJ P,XERRT1 ;PSEUDOINCESTOUSLY CALL OURSELF
CAIA ;NON-SKIP RETURN
AOS -4(P) ;SKIP RETURN
POP P,NFTERT## ;RESTORE PRE-CALLER ERROR INTERCEPT
POP P,NFTERP## ;RESTORE PRE-CALLER ERROR STACK
POP P,(P) ;PITCH CALLER'S INTERCEPT ADDRESS
POP P,(P) ;JUNK ADDRESS
POPJ P, ;NON/SKIP AS APPROPRIATE
XERRT1: MOVEM P,NFTERP## ;REMEMBER PRE-INTERCEPT STACK
XMOVEI T1,XERRT7 ;PROVIDE AN INTERMEDIATE ERROR INTERCEPT
MOVEM T1,NFTERT## ;SO THAT CALLER GETS CALLED WITH GOOD STACK
PJRST @-4(P) ;FINALLY WEND OUR WAY BACK TO THE CALLER
XERRT7: MOVE P,NFTERP## ;RESTORE STACK TO KNOWN CONDITION
PJRST @-3(P) ;CALL CALLER'S INTERCEPT ROUTINE
XLIST ;THE LITERALS
LIT
LIST
PRGEND
TITLE .LKNAM SWIL Table lookup with abbreviations
SUBTTL
SEARCH SWIDEF, SWIL ;SWIL PACKAGE DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIREC FLBLST ;PRETTIER LISTINGS
TWOSEG 400000
;Copyright (C) Digital Equipment Corporation 1984.
COMMENT \
Copyright (C) 1984
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copied only
in accordance with the terms of such license and with the inclusion of the
above copyright notice. This software or any other copies thereof may not
be provided or otherwise made available to any other person. No title to
and ownership of the software is hereby transferred.
The information in this software is subject to change without notice and
should not be construed as a commitment by Digital Equipment Corporation.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
\
SUBTTL LKNAM Lookup name in table with abbreviations
;.LKNAM -- LOOKUP NAME IN TABLE ALLOWING FOR UNIQUE ABBREVIATIONS
;ALWAYS CHECK FOR EXACT MATCH FIRST.
;CALL: MOVE T1,[IOWD LENGTH,START OF TABLE]
; MOVE T2,NAME
; PUSHJ P,.LKNAM
; ERROR RETURN IF UNKNOWN OR DUPLICATE
; AND WITH T1.LT.0 IF NOT MATCH, .GT.0 IF SEVERAL MATCHES
; SKIP RETURN IF FOUND WITH T1 POINTING TO ENTRY
; AND WITH LH(T1)=0 IF ABBREVIATION, OR T1.LT.0 IF EXACT MATCH
;USES T3, T4
;PRESERVES T2
ENTRY .LKNAM
.LKNAM: JUMPGE T1,[SETOM T1 ;FLAG UNKNOWN
POPJ P,] ;ERROR RETURN
PUSHJ P,.SAVE2## ;SAVE P1, P2
PUSH P,T1 ;SAVE ARGUMENT
MOVE T3,T2 ;SET ARG TO MASK MAKER
PUSHJ P,.MKMSK ;MAKE MASK
MOVE T2,T3 ;RESTORE NAME
MOVE P1,T1 ;SAVE FOR MATCHING
POP P,T1 ;RECOVER ARGUMENT
SETOM P2 ;SET ABBREVIATION MATCH COUNTER
AOS T1 ;POSITION POINTER
NAME1: MOVE T3,(T1) ;FETCH TABLE ENTRY
TLNE T3,(3B1) ;NOTE THAT * IS 12 IN SIXBIT
JRST NAME2 ;NOT FORCED MATCH
LSH T3,6 ;SEE IF IT MATCHES
XOR T3,T2 ;EVEN IN AN ABBR.
TRZ T3,77 ;CLEAR LAST CHAR SINCE WE DON'T KNOW IT
AND T3,P1 ; ..
JUMPE T3,.POPJ1## ;YES--GIVE MATCH RETURN
JRST NAME3 ;NO--LOOP
NAME2: XOR T3,T2 ;SEE IF EXACT MATCH
JUMPE T3,.POPJ1## ;YES--A WINNER
AND T3,P1 ;SEE IF A SUITABLE ABBREVIATION
JUMPN T3,NAME3 ;NO--LOOP BACK FOR MORE
MOVE T4,T1 ;SALT AWAY THE LOCATION JUST IN CASE
AOS P2 ;YES--COUNT
NAME3: AOBJN T1,NAME1 ;ADVANCE--LOOP IF NOT DONE YET
HRRZ T1,T4 ;RESTORE LOCATION OF A WINNER
JUMPE P2,.POPJ1## ;DONE--JUMP IF ONE ABBREVIATION
MOVE T1,P2 ;GIVE FLAG TO CALLER
POPJ P, ;NONE OR TWO, SO FAIL
;.MKMSK -- MAKE MASK CORRESPONDING TO NON-BLANKS IN SIXBIT WORD
;CALL: MOVE T3,WORD
; PUSHJ P,.MKMSK
;RETURN WITH MASK IN T1
;USES T2
ENTRY .MKMSK
.MKMSK: MOVEI T1,0 ;CLEAR MASK
MOVSI T2,(77B5) ;START AT LEFT END
MAKMS1: TDNE T3,T2 ;SEE IF SPACE HERE
IOR T1,T2 ;NO--IMPROVE MASK
LSH T2,-6 ;MOVE RIGHT ONE CHAR
JUMPN T2,MAKMS1 ;LOOP UNTIL DONE
POPJ P, ;RETURN
XLIST ;THE LITERALS
LIT
LIST
PRGEND
TITLE .GTPUT SWIL "GET" and "PUT" list entry routines
SUBTTL
SEARCH SWIDEF, SWIL ;SWIL PACKAGE DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIREC FLBLST ;PRETTIER LISTINGS
TWOSEG 400000
;Copyright (C) Digital Equipment Corporation 1984.
COMMENT \
Copyright (C) 1984
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copied only
in accordance with the terms of such license and with the inclusion of the
above copyright notice. This software or any other copies thereof may not
be provided or otherwise made available to any other person. No title to
and ownership of the software is hereby transferred.
The information in this software is subject to change without notice and
should not be construed as a commitment by Digital Equipment Corporation.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
\
SUBTTL INVWD Initialization vector manipulation
;INVWD -- READ A WORD FROM A VECTOR
;Call is:
;
; PUSHJ P,INVWD
; RETURN
;
;The next vector word is returned in T1 unless the vector is exhausted,
;in which case 0 is returned.
;
;To initialize, call INVWI with T2 containing the base address of the
;vector. The first word of the vector is the length of the vector, ex-
;cluding itself. INVWI sets P1 to be the length word and P2 to be the
;current address.
;
;uses T1, P1, P2.
ENTRY .INVWI, .INVWD
.INVWI: MOVE P1,0(T2) ;LENGTH OF THE VECTOR
AOS P2,T2 ;ADDRESS OF REST OF THE VECTOR
PUSHJ P,.INVWD ;READ VERSION WORD
CAMN T1,['NS',,102030] ;MATCH OUR "SPECIAL" VERSION?
POPJ P, ;RETURN ALL SET UP
OUTSTR [ASCIZ/? Version incompatibility/]
EXIT
.INVWD: SOSGE P1 ;COUNT DOWN, ANY WORDS LEFT?
TDZA T1,T1 ;NO, RETURN 0
MOVE T1,(P2) ;YES, READ NEXT WORD FROM VECTOR
AOJA P2,.POPJ## ;RETURN WITH VALUE IN T1
;.GTWRD -- SUBROUTINE TO GET NEXT WORD FROM USER'S PARAMETER LIST
;CALL: MOVE T1,ADDRESS OF TABLE
; MOVE T2,COUNTER OF LENGTH TO GO
; PUSHJ P,.GTWRD
;RETURNS WITH T1 INCREMENTED, T2 DECREMENTED, T3=CONTENTS OR 0
ENTRY .GTWRD
.GTWRD: SOJL T2,GETWRX ;DECREMENT COUNTER--CHECK OVERRUN
SKIPA T3,(T1) ;GET USER'S VALUE
GETWRX: MOVEI T3,0 ;GET 0 DUE TO OVERRUN
AOS T1 ;ADVANCE POINTER FOR NEXT TIME
POPJ P, ;RETURN
;.PTWRD -- STORE WORD IN USER PARAMETER AREA IF ROOM
;CALL: MOVE T1,LOCATION (WILL BE INCREMENTED BY ONE)
; MOVE T2,LENGTH TO GO (WILL BE DECREMENTED BY ONE)
; MOVE T3,DATA ITEM
; PUSHJ P,.PTWRD
;RETURNS WITH T1=T1+1, T2=T2-1, WORD STORED (OLD T1) IF OLD T2.GT.0
ENTRY .PTWRD
.PTWRD: SOSL T2 ;DECREMENT COUNT
MOVEM T3,(T1) ;STORE VALUE
AOS T1 ;ADVANCE LOCATION
POPJ P, ;RETURN
XLIST ;THE LITERALS
LIT
LIST
PRGEND
TITLE .ISLGI SWIL check for logged-in
SUBTTL
SEARCH SWIDEF, SWIL ;SWIL PACKAGE DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIREC FLBLST ;PRETTIER LISTINGS
TWOSEG 400000
;Copyright (C) Digital Equipment Corporation 1984.
COMMENT \
Copyright (C) 1984
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copied only
in accordance with the terms of such license and with the inclusion of the
above copyright notice. This software or any other copies thereof may not
be provided or otherwise made available to any other person. No title to
and ownership of the software is hereby transferred.
The information in this software is subject to change without notice and
should not be construed as a commitment by Digital Equipment Corporation.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
\
SUBTTL ISLGI Check if job is logged in
;.ISLGI -- ROUTINE TO SEE IF JOB IS LOGGED IN
;CALL: PUSHJ P,.ISLGI
; RETURN +1 IF NOT (1/-1) OR UNKNOWN (1/1)
; RETURN +2 IF KNOWN LOGGED IN
ENTRY .ISLGI
.ISLGI: PJOB T1, ;GET JOB NUMBER
MOVNS T1 ;COMPLEMENT
JOBSTS T1, ;GET OUT STATUS
JRST [MOVEI T1,1 ;DOESN'T WORK--INDICATE PROBLEM
POPJ P,] ;ERROR RETURN
TXNE T1,JB.ULI ;SEE IF LOGGED IN
AOSA (P) ;YES--GIVE SKIP RETURN
SETOM T1 ;NO--INDICATE NOT
POPJ P, ;RETURN
XLIST ;THE LITERALS
LIT
LIST
PRGEND
TITLE .SAVE SWIL "AC" save and restore coroutines
SUBTTL
SEARCH SWIDEF, SWIL ;SWIL PACKAGE DEFINITIONS
SEARCH JOBDAT, MACTEN, UUOSYM ;STANDARD DEFINITIONS
SALL ;PRETTY LISTINGS
.DIREC FLBLST ;PRETTIER LISTINGS
TWOSEG 400000
;Copyright (C) Digital Equipment Corporation 1984.
COMMENT \
Copyright (C) 1984
Digital Equipment Corporation, Maynard, Massachusetts, U.S.A.
This software is furnished under a license and may be used and copied only
in accordance with the terms of such license and with the inclusion of the
above copyright notice. This software or any other copies thereof may not
be provided or otherwise made available to any other person. No title to
and ownership of the software is hereby transferred.
The information in this software is subject to change without notice and
should not be construed as a commitment by Digital Equipment Corporation.
Digital assumes no responsibility for the use or reliability of its
software on equipment which is not supplied by Digital.
\
SUBTTL SAVEn Coroutine to save/restore the "P" registers
;.SAVE1 -- SUBROUTINE TO SAVE P1 FOR A SUBROUTINE
;CALL: PUSHJ P,.SAVE1
;RETURN POPJ OR .POPJ1, RESTORES P1 AND EXITS AS SKIP OR NON-SKIP
ENTRY .SAVE1
.SAVE1: EXCH P1,(P) ;SAVE P1, GET CALLER PC
HRLI P1,(P) ;GET ADDRESS WHERE P1 IS SAVED [307,521]
PUSHJ P,SAVJMP ;STACK NEW RETURN PC AND JUMP [521]
SOS -1(P) ;NON-SKIP RETURN, COMPENSATE .POPJ1 [521]
JRST RET1 ;RESTORE P1 AND EXIT
;.SAVE2 -- SUBROUTINE TO SAVE P1 AND P2 FOR A SUBROUTINE
;CALL: PUSHJ P,.SAVE2
;RETURN POPJ OR .POPJ1, RESTORES P1 AND P2 AND EXITS AS SKIP OR NON-SKIP
ENTRY .SAVE2
.SAVE2: EXCH P1,(P) ;SAVE P1, GET CALLER PC
HRLI P1,(P) ;GET ADDRESS WHERE P1 IS SAVED [307,521]
PUSH P,P2 ;SAVE P2
PUSHJ P,SAVJMP ;STACK NEW RETURN PC AND JUMP [521]
SOS -2(P) ;NON-SKIP RETURN, COMPENSATE .POPJ1 [521]
JRST RET2 ;RESTORE P1 AND P2 AND EXIT
;.SAVE3 -- SUBROUTINE TO SAVE P1 AND P2 AND P3 FOR A SUBROUTINE
;CALL: PUSHJ P,.SAVE3
;RETURN POPJ OR .POPJ1, RESTORES P1-3 AND SKIPS OR NOT
ENTRY .SAVE3
.SAVE3: EXCH P1,(P) ;SAVE P1, GET CALLER PC
HRLI P1,(P) ;GET ADDRESS WHERE P1 IS SAVED [307,521]
PUSH P,P2 ;SAVE P2
PUSH P,P3 ;SAVE P3
PUSHJ P,SAVJMP ;STACK NEW RETURN PC AND JUMP [521]
SOS -3(P) ;NON-SKIP RETURN, COMPENSATE .POPJ1 [521]
JRST RET3 ;RESTORE P1-3 AND EXIT
;.SAVE4 -- SUBROUTINE TO SAVE P1-4 FOR A SUBROUTINE
;CALL: PUSHJ P,.SAVE4
;RETURN POPJ OR .POPJ1, RESTORES P1-4 AND SKIPS OR NOT
ENTRY .SAVE4
.SAVE4: EXCH P1,(P) ;SAVE P1, GET CALLER PC
HRLI P1,(P) ;GET ADDRESS WHERE P1 IS SAVED [307,521]
PUSH P,P2 ;SAVE P2
PUSH P,P3 ;SAVE P3
PUSH P,P4 ;SAVE P4
PUSHJ P,SAVJMP ;STACK NEW RETURN PC AND JUMP [521]
.SAVX4:: SOS -4(P) ;NON-SKIP RETURN, COMPENSATE .POPJ1 [521]
RET4: POP P,P4 ;RESTORE P4
RET3: POP P,P3 ;RESTORE P3
RET2: POP P,P2 ;RESTORE P2
RET1: POP P,P1 ;RESTORE P1
ENTRY .POPJ, .POPJ1
.POPJ1: AOS (P) ;INCREMENT PC [521]
.POPJ: POPJ P, ;RETURN
;THE FOLLOWING INSTRUCTION RETSTORES P1 AND DISPATCHES TO THE CALLER.
SAVJMP: JRA P1,(P1) ;RETURN TO CALLER [521]
SUBTTL Pxx4T PUSH/POP the 4 "T" registers
;.PSH4T -- PUSH T1-T4 ONTO STACK
;.POP4T -- POP T1-T4 FROM STACK
;CALL: PUSHJ P,.PSH4T/.POP4T
;USES NO ACS
ENTRY .PSH4T, .POP4T
.PSH4T: PUSH P,T2 ;SAVE T2
PUSH P,T3 ;SAVE T3
PUSH P,T4 ;SAVE T4
EXCH T1,-3(P) ;SAVE T1/GET RETURN
PUSH P,T1 ;PUT INTO SAFE PLACE
MOVE T1,-4(P) ;RESTORE T1
POPJ P, ;RETURN
.POP4T: POP P,T1 ;GET RETURN
POP P,T4 ;RESTORE T4
POP P,T3 ;RESTORE T3
POP P,T2 ;RESTORE T2
EXCH T1,(P) ;RESTORE T1/SAVE RETURN
POPJ P, ;RETURN
SUBTTL SACIO Save IO and setup I/O context from T1
;SACIO -- SAVE AND SETUP IO
;Call is:
;
; MOVX T1,<CDB>
; PUSHJ P,SACIO
; RETURN
;
;Register IO will be preserved and setup to point at the I/O CDB address
;in T1. T1 will be automatically restored on return from the current IO
;(he who calls SACIO must not destroy IO!)
ENTRY .SACIO
.SACIO: PUSH P,IO ;SAVE OLD IO
MOVE IO,T1 ;SET IO FROM T1
PUSHJ P,@-1(P) ;CALL OUR CALLER
CAIA ;NON-SKIP RETURN
AOS -2(P) ;SKIP RETURN
MOVE T1,IO ;RESTORE ORIGINAL T1
POP P,IO ;RESTORE IO REGISTER
POP P,(P) ;RESTORE STACK (OUR CALLERS ADDRESS)
POPJ P, ;RETURN
SUBTTL TSAVn Coroutine to save and restore the "T" registers
;TSAVMN -- SAVE TEMP ACS T<M> TO T<N>
;Call is:
;
; PUSHJ P,TSAVMN
; RETURN
;
;On return the acs are saved on the stack. The caller may reference
;the saved acs via "-Tn(P)" construction.
ENTRY TSAV11, TSAV12, TSAV13, TSAV14
TSAV11: PUSH P,T1 ;SAVE T1
PUSHJ P,@-1(P) ;CALL OUR CALLER
CAIA ;RETURN CPOPJ0
AOS -2(P) ;RETURN CPOPJ1
POP P,T1 ;RESTORE T1
POP P,(P) ;JUNK ADDRESS
POPJ P, ;RETURN FROM CALLER AS INDICATED
TSAV12: PUSH P,T2 ;SAVE T2
PUSH P,T1 ;SAVE T1
PUSHJ P,@-2(P) ;CALL OUR CALLER
CAIA ;RETURN CPOPJ0
AOS -3(P) ;RETURN CPOPJ1
POP P,T1 ;RESTORE T1
POP P,T2 ;RESTORE T2
POP P,(P) ;JUNK ADDRESS
POPJ P, ;RETURN FROM CALLER AS INDICATED
TSAV13: PUSH P,T3 ;SAVE T3
PUSH P,T2 ;SAVE T2
PUSH P,T1 ;SAVE T1
PUSHJ P,@-3(P) ;CALL OUR CALLER
CAIA ;RETURN CPOPJ0
AOS -4(P) ;RETURN CPOPJ1
POP P,T1 ;RESTORE T1
POP P,T2 ;RESTORE T2
POP P,T3 ;RESTORE T3
POP P,(P) ;JUNK ADDRESS
POPJ P, ;RETURN FROM CALLER AS INDICATED
TSAV14: PUSH P,T4 ;SAVE T4
PUSH P,T3 ;SAVE T3
PUSH P,T2 ;SAVE T2
PUSH P,T1 ;SAVE T1
PUSHJ P,@-4(P) ;CALL OUR CALLER
CAIA ;RETURN CPOPJ0
AOS -5(P) ;RETURN CPOPJ1
POP P,T1 ;RESTORE T1
POP P,T2 ;RESTORE T2
POP P,T3 ;RESTORE T3
POP P,T4 ;RESTORE T4
POP P,(P) ;JUNK ADDRESS
POPJ P, ;RETURN FROM CALLER AS INDICATED
XLIST ;THE LITERALS
LIT
LIST
END