.TITLE AUXMN ACPAUX main routine .PSECT AUXMN .IDENT /M002/ ;+ ; ; DPACP auxiliary task main routine ; ; PURPOSE ; Through DECNET, recieves a packet of information from ; the Dual-Ported ACP running on the slave system and ; uses that information to build a QIO to issue to the ; standard F11ACP running on the master system. ; For accesses it must find a lun to access the file on ; and for deaccesses it must find the same lun. ; This is accomplished by the AUXIO routine. ; Returns the status of the QIO directive to the slave ACP. ; ; PARAMETERS ; The data received from the slave system contains ; the function code for the QIO, followed by the QIO ; parameters for the ACP function. ; The FID or FNB pointers are relative to the received ; packet and must be relocated. ; ; EXTERNAL REFERENCES ; AUXINI Auxiliary task initialization ; AUXIO Set up and issue QIO ; AUXDIN Auxiliary task de-initialization ; ERRMSG Report I/O error ; BADMSG Report directive error and exit ; ; AUTHOR ; Daniel McCoy Informatics Inc. Palo Alto, Ca. ; ; REVISIONS LAST CHANGE ; DATE PERSON STATEMENT OF CHANGES ; 19 feb 80 dsm Minor mods ; 25 SEP 78 DSM Version two ; 12/18/78 DSM First coding ; ; NOTES ; Requires DECNET-11M version 2. ;- ; .MCALL RECW$E,SNDW$E,EXIT$S ; START: ; ; First, initialize the network and see who called ; No return unless call is a valid one. CALL AUXINI ; ; We are connected, ; keep looping as long as there is something to do ; 10$: ; RECW$E REC ; Try to recieve a packet from DPACP BCS RBAD ; Test for bad directive CMPB #IS.SUC,NTSTAT ; Test status BNE RERR ; Recieve error ;DEBUG ; CALL AUXDBG ; Debug ; MOV #PACKET,R5 ; Point to recieved packet MOV #RPACKT,R4 ; Point to return packet ; CALL AUXIO ; Call routine to handle the QIO ; ; DEBUG ; MOV RPACKT+Y.STAT,NTSTAT ; MOV RPACKT+Y.STAT+2,NTSTAT+2 ; MOV #BADQ,R0 ; CALL ERRMSG ; ; I/O has been done, return the information. SNDW$E SND ; Send back the news BCS SBAD ; Test for bad directive CMPB #IS.SUC,NTSTAT ; Test status BNE SERR ; Send error? ; BR 10$ ; Go get next packet ; QUIT: CALL AUXDIN ; Call routine to do clean up. ; EXIT$S ; And exit ; ; ; Error processing ; ; Send error SERR: MOV #BADS,R0 ; Point to send error message CALL ERRMSG ; Write it out BR QUIT ; And give up ; Receive error, just quit RERR: CMPB #IE.ABO,NTSTAT ; Normal disconnect? BEQ QUIT ; No error message if yes MOV #BADR,R0 ; Point to recieve error message CALL ERRMSG ; Write it out BR QUIT ; and give up ; ; Directive error, print message and stop RBAD: MOV #BADR,R0 ; Point to message BR BAD ; go write it SBAD: MOV #BADS,R0 ; Point to message BAD: JMP BADMSG ; Write error message, no return ; .END START