ASMB,L,R,C HED DMESS 91700-16132 REV.A 760216 * (C) HEWLETT-PACKARD CO. 1976 NAM DMESS,7 91700-16132 REV.A 760216 SPC 1 ****************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ****************************************************************** SPC 2 ENT DMESS EXT D65MS,MESSS,.ENTR * * * DMESS * SOURCE: 91700-18132 * BINARY: 91700-16132 * PRGMR: BOB SHATZER * DATE: 09 DEC 75 * * MODIFIED BY: C.C.H. 02-16-76 * * DMESS IS A UTILITY SUBROUTINE WHICH IS USED TO SEND OPERATOR * COMMANDS TO A REMOTE CPU. * * CALLING SEQUENCE: * * JSB DMESS * DEF *+4 * DEF * DEF * DEF (IN + BYTES) * * * ON RETURN, THE REGISTERS HAVE THE FOLLOWING MEANING: * * = 0 NO RESPONSE FROM REMOTE * < 0 NEGATIVE OF NUMBER OF BYTES IN RESPONSE * = -1 INDICATES AN ILLEGAL REQUEST LENGTH (>19 BYTES) * * DLU NOP DESTINATION LU BUFAA NOP MESSAGE BUFFER BUFLA NOP MESSAGE LENGTH DMESS NOP START OF ROUTINE JSB .ENTR DEF DLU GET PRAMS LDA DLU,I GET REQUESTED LU CCE,SZA,RSS IS IT LOCAL? JMP LOCAL YES - SEND IT LOCALLY RAL,ERA SET SIGN-BIT FOR ERROR RETURN. STA DLU SAVE LU# AND ERROR-FLAG, LOCALLY. LDA D7 REMOTE - GET STREAM TYPE STA PARMB AND PUT IT INTO PARMB LDA BUFLA,I GET REQUEST LENGTH STA LNGH STORE IT INTO PARMB STA BUFL1 AND SAVE IT FOR COUNTER LDA BUFAA GET BUFFER ADDRESS LDB MESSA GET DESTINATION ADDRESS JSB MOVE MOVE BUFFER BUFL1 NOP LENGTH GOES HERE SPC 1 JSB D65MS WRITE REQUEST TO REMOTE DEF *+7 DEF D2 DEF DLU DEF PARMB DEF D35 DEF DUMMY DEF DUMMY JMP MSERR ERROR RETURN POINT LDA LNGH ANY RETURN MESSAGE? SZA,RSS JMP DMESS,I NO RETURN MESSAGE STA BUFL2 SAVE LENGTH AS POSITIVE BYTES. LDA MESSA GET ADDRESS OF MESSAGE TO BE RETURNED LDB BUFAA GET ADDRESS OF USER'S BUFFER. JSB MOVE GO TRANSFER RESPONSE TO USER'S BUFFER. BUFL2 NOP LDA LNGH GET LENGTH OF MESSAGE CMA,INA JMP DMESS,I AND RETURN SPC 2 LOCAL JSB MESSS HERE IF LOCAL MESSAGE DEF *+3 DEF BUFAA,I DEF BUFLA,I JMP DMESS,I AND RETURN * MSERR DST BUFAA,I SAVE ERROR CODES FOR USER'S ANALYSIS. LDA D4 RETURN WITH = -4, AND = -1, CMA,INA,RSS TO INDICATE 4-BYTE ERROR-CODE MESSAGE. * SZERR CLA BUFFER SIZE ERROR - CLEAR A CCB AND SET B TO -1 JMP DMESS,I AND RETURN SPC 2 * * SUBROUTINE TO MOVE BUFFERS * CALLING SEQUENCE * JSB MOVE * DEC +# OF BYTES * A REG=SOURCE ADDRESS * B REG=DESTINATION ADDRESS * MOVE NOP STA MOVEA SAVE SOURCE ADDRESS LDA MOVE,I GET LENGTH SZA,RSS IS LENGTH ZERO? JMP SZERR YES - BUFFER SIZE ERROR ADA MXSIZ ADD MAXIMUM BUFFER SIZE SSA,RSS DID IT OVERFLOW? JMP SZERR YES - BUFFER SIZE ERROR LDA MOVE,I NO - GO MOVE DATA CLE,ERA CONVERT TO WORD LENGTH SEZ ODD? INA YES CMA,INA NEGATE FOR DOWN COUNT STA MOVE,I SAVE FOR DOWN COUNTER MOVE1 LDA MOVEA,I STA B,I INB ISZ MOVEA ISZ MOVE,I DONE? JMP MOVE1 NO...CONTINUE ISZ MOVE JMP MOVE,I AND RETURN * B EQU 1 DUMMY NOP MOVEA NOP MXSIZ DEC -36 MESSA DEF PARMB+6 D7 DEC 7 D2 DEC 2 D4 DEC 4 D35 DEC 35 PARMB BSS 35 LNGH EQU PARMB+5 * END