Trailing-Edge
-
PDP-10 Archives
-
bb-y390o-bm_tops20_v41_atpch_20
-
autopatch/qsradm.c10
There are no other files named qsradm.c10 in the archive.
REP 17/13 ;10C1
WIT
;**;[1234]Add 2 lines at A$STND:+11L DRB 1/11/84
LOAD S1,NETSTS(S2),NETSNA ;[1234]Is it a SNA node?
JUMPN S1,STND.2 ;[1234]Yes, go start it up
INS 48/13 ;10C2
;**;[1234]Add 21 lines at STAERR:-1L DRB 1/11/85
; Here to start up an SNA type node, S2 contains pointer to node entry
;
STND.2: MOVE P1,S2 ;[1234]Save pointer to node entry
MOVX S1,.OTBAT ;[1234]Get batch stream object type
MOVEM S1,.OHDRS+ARG.DA+OBJ.TY(M) ;[1234]Save as the object type
MOVEI S1,1 ;[1234]Unit 1 is main batch stream
MOVEM S1,.OHDRS+ARG.DA+OBJ.UN(M) ;[1234]Save as the object unit
MOVEI S1,.OHDRS+ARG.DA(M) ;[1234]Get the start of the object block
PUSHJ P,A$OSTA ;[1234]Start a batch stream for the node
MOVE S1,NETNOB(P1) ;[1234]Link List Index for Objects
$CALL L%FIRST ;[1234]Get first object
SKIPA ;[1234]
STND.3: $CALL L%NEXT ;[1234]Get next object
JUMPF STND.4 ;[1234]All done
MOVE S1,NOBTYP(S2) ;[1234]Get type
MOVEM S1,.OHDRS+ARG.DA+OBJ.TY(M) ;[1234]Save as the object type
MOVE S1,NOBUNI(S2) ;[1234]Get Unit
MOVEM S1,.OHDRS+ARG.DA+OBJ.UN(M) ;[1234]Save as the object unit
PUSHJ P,A$OSTA ;[1234]Start the object
MOVE S1,NETNOB(P1) ;[1234]Link List Index for Objects
JRST STND.3 ;[1234]Loop for all objects
STND.4: SETOM .MSCOD(M) ;[1234]Clear common ACK code
$RETT ;[1234]And return
INS 29/17 ;10C3
;**;[1234]Add 51 lines at SETTBL:-1L DRB 1/11/85
SETDST: $SAVE <P2> ;[1234]Save P2
MOVE S1,OBJNOD(P1) ;[1234]Get node name
$CALL N$NODE## ;[1234]Get the node DB entry
MOVE P2,S2 ;[1234]Keep it
LOAD S1,NETSTS(P2),NETSNA ;[1234]Is this an SNA Workstation?
JUMPE S1,SETE.2 ;[1234]No, return error
LOAD S1,OBJSCH(P1) ;[1234]Get scheduler flags
TXNE S1,OBSSUP!OBSSIP ;[1234]Error if setup started
JRST SETE.1 ;[1234]
MOVE S1,NETNOB(P2) ;[1234]Get list index
$CALL GETNOB ;[1234]Get NOB entry for this object
JUMPF SETE.3 ;[1234]Return failure
MOVE S2,NETNOB(P2) ;[1234]Get list index, again
MOVE P2,S1 ;[1234]P2 points to NOB
MOVE T1,P3 ;[1234]Address of destination string
HRLI T1,(POINT 7) ;[1234]Make a pointer
SETD.1: ILDB T2,T1 ;[1234]Get a char
JUMPE T2,[MOVE S1,S2 ;[1234]If null,
$CALL L%DENT ;[1234]Delete this entry
JRST SETMSG] ;[1234]Finish up
CAIN T2," " ;[1234]If blank,
JRST SETD.1 ;[1234]Keep looking
MOVEI S1,DSTSIZ ;[1234]Size of "destination field"
MOVEI S2,NOBDST(P2) ;[1234]Its address
$CALL .ZCHNK ;[1234]Clear it
SETZM NOBFLG(P2) ;[1234]Clear any flags
LOAD S1,ARG.HD-ARG.DA(P3),AR.LEN ;[1234]Get length
CAILE S1,DSTSIZ ;[1234]Make sure
JRST SETE.4 ;[1234]We have enough room
HRLZ S2,P3 ;[1234]Source
HRRI S2,NOBDST(P2) ;[1234]Source,,destination
ADDI S1,NOBDST-2(P2) ;[1234]Last address
BLT S2,(S1) ;[1234]Move it
SETD.2: PUSHJ P,A$GBLK ;[1234]Get next message block
JUMPF SETMSG ;[1234]None, all done
MOVEI S1,1 ;[1234]Get a 1
CAIN T1,.STSPL ;[1234]/SPOOL ?
JRST [STORE S1,NOBFLG(P2),NOBSPL ;[1234]Yes, set the flag
JRST SETD.2]
CAIE T1,.STNTL ;[1234]/NOTRANSLATE ?
JRST BADMSG ;[1234]No, error
STORE S1,NOBFLG(P2),NOBNTL ;[1234]Set the flag
JRST SETD.2 ;[1234]
SETE.1: $ACK (<Set ignored>,<Object already started>,OBJTYP(P1),.MSCOD(M))
$RETF ;[1234]
SETE.2: $ACK (<Set ignored>,<Node must be an SNA Workstation>,OBJTYP(P1),.MSCOD(M))
$RETF ;[1234]
SETE.3: $ACK (<Set ignored>,<Could not create object block>,OBJTYP(P1),.MSCOD(M))
$RETF ;[1234]
SETE.4: $ACK (<Set ignored>,<Destination string too long>,OBJTYP(P1),.MSCOD(M))
$RETF ;[1234]
REP 38/17 ;10C4
NSETS==.-SETTBL
WIT
;**;[1234]Replace 1 line at NSETS with 45 lines DRB 1/11/85
.STDST,,SETDST ;[1234]Set Destination
NSETS==.-SETTBL
SUBTTL GETNOB -- Get NOB entry in the SNA workstation object list
;[1234]CALL: S1/ NOB List Index
;[1234] P1/ The address of object queue entry for object
;[1234]
;[1234]RET: S1/ The address of the NOB entry or false
FNDNOB::
SKIPA S2,[1] ;[1234]Indicate "FIND"
GETNOB: SETZ S2, ;[1234]Indicate "GET"
PUSHJ P,.SAVET ;[1234]Save the 'T' ACs
PUSH P,S1 ;[1234]Keep index
PUSH P,S2 ;[1234]Keep entry flag
MOVE T1,OBJTYP(P1) ;[1234]Get the model object type
MOVE T2,OBJUNI(P1) ;[1234]Get the model object unit
MOVE T3,OBJNOD(P1) ;[1234]Get the model object node
$CALL L%FIRST ;[1234]Get first entry
SKIPA ;[1234]
GETN.1: $CALL L%NEXT ;[1234]Get next entry
JUMPF GETN.2 ;[1234]No more entries
MOVE T4,S2 ;[1234]Address of NOB
CAMN T1,NOBTYP(T4) ;[1234]Do object types match ???
CAME T2,NOBUNI(T4) ;[1234]Do object units match ???
JRST GETN.1 ;[1234]No to either,,try next object
MOVE S1,T3 ;[1234]Get the model object node name/number
MOVE S2,NOBNOD(T4) ;[1234]Get the source object node name/number
PUSHJ P,N$MTCH## ;[1234]Do they match ???
JUMPF GETN.1 ;[1234]No,,try next object in the queue
ADJSP P,-2 ;[1234]Adjust stack
MOVE S1,T4 ;[1234]Get the NOB entry address
$RETT ;[1234]And return
;[1234]
;[1234]Could not find the entry so here to create a new entry
;[1234]
GETN.2: POP P,S2 ;[1234]Entry flag
POP P,S1 ;[1234]List index
JUMPN S2,.RETF ;[1234]Quit now, if only looking
MOVEI S2,NOBSIZ ;[1234]Entry size
$CALL L%CENT ;[1234]Create an entry
JUMPF .RETF ;[1234]Pass on failure
MOVEM T1,NOBTYP(S2) ;[1234]Save type
MOVEM T2,NOBUNI(S2) ;[1234]Save unit
MOVEM T3,NOBNOD(S2) ;[1234]Save node
MOVE S1,S2 ;[1234]Get the NOB entry address
$RETT ;[1234]And return
INS 10/18 ;10C5
;**;[1234]Add 7 lines at NETSET:+4L DRB 1/11/85
SETZ S2, ;[1234]Say we want online check
$CALL N$CKND## ;[1234]Check out the node
JUMPF NETS.3 ;[1234]Failed, online
JUMPE S2,NETS.2 ;[1234]Not found, not defined
MOVE P1,S2 ;[1234]Save the data base entry address
LOAD S2,NETSTS(P1),NETSNA ;[1234]Is this an SNA node
JUMPN S2,NETS.5 ;[1234]Yes, go do it
REP 14/18 ;10C6
JUMPE S2,NETS.2 ;Not found, not defined
MOVE P1,S2 ;SAVE THE DATA BASE ENTRY ADDRESS
WIT
;**;[1234]Delete 2 lines at NETSET:+7L DRB 1/11/85
INS 46/18 ;10C7
;**;[1234]Add 7 lines at NETS.2:-2L DRB 1/11/85
MOVSI S1,-NETS ;[1234]Get negative # of SET commands.
NETS.0: HLRZ S2,NETTBL(S1) ;[1234]Pick up a SET command type.
CAMN S2,T1 ;[1234]Do we match ???
JRST [MOVEI S1,[ITEXT(Parameter invalid for IBM remote)] ;[1234]Yes
MOVE S2,P1 ;[1234]Address of Node database entry
JRST NETS.3] ;[1234]Go report error
AOBJN S1,NETS.0 ;[1234]Bump to next tbl entry and continue.
INS 57/18 ;10C8
;**;[1234]Add 29 lines at NETS.4:+2L DRB 1/11/85
;[1234]CONTINUED ON THE NEXT PAGE
;[1234]CONTINUED FROM THE PREVIOUS PAGE
NETS.5: ;[1234]Here to set SNA attributes
PUSHJ P,A$GBLK ;[1234]Go get a block
JUMPF BADMSG ;[1234]No more, return through 'BADMSG'
CAIN T1,.ORNOD ;[1234]Is this the node block (already done)
JRST NETS.5 ;[1234]Yes, try the next one
MOVSI S1,-NETS ;[1234]Get negative # of SET commands.
NETS.6: HLRZ S2,NETTBL(S1) ;[1234]Pick up a SET command type.
CAMN S2,T1 ;[1234]Do we match ???
JRST NETS.7 ;[1234]Yes, Go process it
AOBJN S1,NETS.6 ;[1234]Bump to next tbl entry and continue.
MOVEI S1,[ITEXT(Parameter invalid for SNA-Workstation)] ;[1234]No match
MOVE S2,P1 ;[1234]Address of Node database entry
JRST NETS.3 ;[1234]Go report error
NETS.7: HRRZ S2,NETTBL(S1) ;[1234]Get the NAB offset
LOAD S1,NETNAB(P1),NA.ADR ;[1234]Get address of Node Attribute Block
ADD S1,S2 ;[1234]Add in appropriate offset
HRL S1,T3 ;[1234]Get source address
ADDI T2,-2(S1) ;[1234]Determine last destination address
BLT S1,(T2) ;[1234]Move value to Node Attribute Block
$ACK (<Set for Node ^T/NETASC(P1)/ Accepted>,,,.MSCOD(M))
$RETT ;[1234]RETURN
NETTBL: .STDAT,,NABDAT ;[1234]LOGON DATA
.STLOM,,NABLOM ;[1234]LOGON MODE
.STPLU,,NABPLU ;[1234]APPLICATION
.STCIR,,NABCIR ;[1234]CIRCUIT
.STCHS,,NABCHS ;[1234]CHARACTER SET TRANSLATION FILE
NETS==.-NETTBL ;[1234]
INS 16/21 ;10C9
;**;[1234]Add 2 lines at A$OREQ:+11L DRB 1/11/85
TXNE S1,OBSSNA ;[1234]Is this an SNA Workstation device
JRST OREQ.3 ;[1234]Yes, just send the message.
INS 28/23 ;10C10
;**;[1234]Add 2 lines at A$OSND:+11L DRB 1/11/85
TXNE S2,NETSNA ;[1234]Is this node an SNA Workstation
JRST OSND.1 ;[1234]Yes, go take care of it
REP 33/23 ;10C11
LOAD S2,OBJSCH(S1) ;SO FAR, SO GOOD - GET SCHEDULING BITS
WIT
;**;[1234]Change 1 line at A$OSND:+17L DRB 1/11/85
OSND.1: LOAD S2,OBJSCH(S1) ;SO FAR, SO GOOD - GET SCHEDULING BITS
INS 42/28 ;10C12
;**;[1234]Add 3 lines at A$DEFINE:+14L DRB 1/11/85
;[1234]Add the node to the data base, purging any existing entry
MOVE S1,P1 ;[1234]Get the node name
PUSHJ P,N$NNET## ;[1234]Add the node
MOVE P2,S2 ;[1234]Remember the entry
REP 63/28 ;10C13
; Add the node to the data base if needed
DEFI.1: JUMPN P2,DEFI.2 ;Skip this if node already defined
PUSHJ P,N$NNET## ;Add the node
MOVE P2,S2 ;Remember the entry
DEFI.2: MOVE S2,DEF.MD(P3) ;Get the node mode
CAXN S2,DF.TRM ;Is it termination
WIT
;**;[1234]Replace 5 lines with 2 lines at DEFI.1: DRB 1/11/85
DEFI.1: MOVE S2,DEF.MD(P3) ;[1234]Get the node mode
CAXN S2,DF.TRM ;[1234]Is it termination
INS 75/28 ;10C14
;**;[1234]Add 8 lines at DEFI.1:+9L DRB 1/11/85
MOVEI S1,DEFD60 ;[1234]Try for DN60 type node
CAXN S2,DF.SNA ;[1234]Is it SNA workstation
MOVEI S1,DEFSNA ;[1234]Yes, set for that
$CALL (S1) ;[1234]Go do right kind of initialization
$ACK (< ^T/DEFTAB(P4)/efine for node ^T/NETASC(P2)/ accepted >,,,.MSCOD(M))
$RETT ;[1234]AND RETURN
DEFBD1: $ACK(< Define for node ^N/P1/ ignored >,<^I/0(S1)/>,,.MSCOD(M))
$RETT ;[1234]
DEFD60: ;[1234]Here for DN60 type initialization
REP 131/28 ;10C15
$ACK (< ^T/DEFTAB(P4)/efine for node ^T/NETASC(P2)/ accepted >,,,.MSCOD(M))
$RETT ;AND RETURN
DEFBD1: $ACK(< Define for node ^N/P1/ ignored >,<^I/0(S1)/>,,.MSCOD(M))
$RETT
>
WIT
;**;[1234]Replace 4 lines with 18 lines at DEFBD1:-2L DRB 1/11/85
$RET ;[1234]
DEFSNA: ;[1234]Here for SNA type initialization
MOVEI S1,1 ;[1234]Get a 1
STORE S1,NETSTS(P2),NETSNA ;[1234]Lite the SNA node bit
LOAD S1,DEF.GW(P3) ;[1234]Get the Gateway Name
STORE S1,NETGWY(P2) ;[1234]Store in Node database
HRLI S1,DEF.AN(P3) ;[1234]Get start of access name
HRRI S1,NETACC(P2) ;[1234]And destination
BLT S1,NETACC+2(P2) ;[1234]Copy to Node database
MOVEI S1,NABSIZ ;[1234]Get size of Node Attribute Block
PUSHJ P,M%GMEM ;[1234]Go get the memory
JUMPF [MOVEI S1,[ITEXT(<No memory to create Node Attribute Block>)]
JRST DEFBD1] ;[1234]Fail
STORE S1,NETNAB(P2),NA.LEN ;[1234]Save length
STORE S2,NETNAB(P2),NA.ADR ;[1234]And address
PUSHJ P,L%CLST ;[1234]Create a linked list for objects
MOVEM S1,NETNOB(P2) ;[1234]Save index
$RET
>
INS 46/48 ;10C16
;**;[1234]Add 6 lines at GETO.0:+20L DRB 1/11/85
MOVX S2,OBSSNA ;[1234]Get SNA bit
LOAD S1,NETSTS(P2),NETSNA ;[1234]Is this SNA Workstation
JUMPN S1,[MOVE S1,OBJTYP(AP) ;[1234]Yes, get object type
CAIE S1,.OTBAT ;[1234]Is it batch
IORM S2,OBJSCH(AP) ;[1234]No,,lite the SNA bit
JRST .+1] ;[1234]Continue on
;[1234]CONTINUED ON THE NEXT PAGE
;[1234]CONTINUED FROM THE PREVIOUS PAGE
REP 51/48 ;10C17
;CONTINUED ON THE NEXT PAGE
;CONTINUED FROM THE PREVIOUS PAGE
WIT
;**;[1234]Delete 2 lines at GETO.0:+24L DRB 1/11/85
INS 4/50 ;10C18
;**;[1234]Add 2 lines at CHKOBJ:+1L DRB 1/11/85
LOAD S2,NETSTS(P2),NETSNA ;[1234]Is this an SNA-Workstation?
JUMPN S2,CHKO.4 ;[1234]Yes, go process it
INS 33/50 ;10C19
;**;[1234]Add 15 lines at CHKO.3:+1L DRB 1/11/85
CHKO.4: CAIE S1,.OTBAT ;[1234]Is it batch object
CAIN S1,.OTLPT ;[1234]Or printer
JRST CHKO.5 ;[1234]Yes
CAIE S1,.OTCDP ;[1234]Or card-punch
CAIN S1,.OTRDR ;[1234]Or reader
JRST CHKO.5 ;[1234]Yes
$ACK (<Ignored>,<Device invalid for SNA-Workstation>,0(P1),.MSCOD(M))
$RETF ;[1234]
CHKO.5: LOAD S1,OBJ.UN(P1) ;[1234]GET THE UNIT NUMBER.
CAIL S1,1 ;[1234]
CAILE S1,7 ;[1234]UNIT IN RANGE?
SKIPA
$RETT ;[1234]NO,,THEN RETURN TRUE.
$ACK (<Ignored>,<Invalid unit for SNA-Workstation>,0(P1),.MSCOD(M)) ;TELL OPR
$RETF ;[1234]RETURN FALSE.
SUM 223197