SUBROUTINE SPACK (XTYPE,NUM,LEN,XDATA) C C **************************************************************** C C KERMIT for the MODCOMP MAXIV operating system C C Compliments of: C C SETPOINT, Inc. C 10245 Brecksville Rd. C Brecksville, Ohio 44141 C C C KERMIT is a copyrighted protocol of Columbia Univ. The authors C of this version hereby grant permission to copy this software C provided that it is not used for an explicitly commercial C purpose and that proper credit be given. SETPOINT, Inc. makes C no warranty whatsoever regarding the accuracy of this package C and will assume no liability resulting from it's use. C C **************************************************************** C C Abstract: SEND THIS PACKET TO THE REMOTE KERMIT C C C MODIFICATION HISTORY C C BY DATE REASON PROGRAMS AFFECTED C C C **************************************************************** C C Author: BOB BORGESON Version: A.0 Date: Oct-86 C C Calling Parameters: C C R XTYPE - DATA PACKET TYPE C R NUM - PACKET SEQUENCE NUMBER (MODULO 64) C R LEN - LENGTH IN WORDS OF XDATA C R XDATA - DATA PORTION OF PACKET C C **************************************************************** C C Messages generated by this module : None C C **************************************************************** C C Subroutines called directly : TOCHAR, TPUTCH C C **************************************************************** C C Files referenced : None C C **************************************************************** C C Local variable definitions : C C BUFFER - SCRATCH TO PIECE TOGETHER THE WHOLE PACKET C CH - UFT # TO OUTPUT TO C CHKSUM - BLOCK CHECKSUM C COUNT - RUNNING COUNT OF HOW MANY CHARACTERS IN PACKET C C **************************************************************** C C Commons referenced : KER and KERPAR C C **************************************************************** C C (*$END.DOCUMENT*) C C **************************************************************** C * * C * D I M E N S I O N S T A T E M E N T S * C * * C **************************************************************** C IMPLICIT INTEGER (A-Z) C INTEGER*2 XDATA(1), BUFFER(132) C C **************************************************************** C * * C * T Y P E S T A T E M E N T S * C * * C **************************************************************** C C C **************************************************************** C * * C * C O M M O N S T A T E M E N T S * C * * C **************************************************************** C INCLUDE USL/KERCOM INCLUDE USL/KERPMC C C **************************************************************** C * * C * E Q U I V A L E N C E S T A T E M E N T S * C * * C **************************************************************** C C C **************************************************************** C * * C * D A T A S T A T E M E N T S * C * * C **************************************************************** C C C **************************************************************** C C Code starts here : C C C C !THIS IS THE CHANNEL TO SEND PACKET C !OUT ON, START WITH THE FIRST BYTE CH=RMTOUT I=1 C 100 CONTINUE C !SEND OUT PADCHAR IF NEEDED IF(I.GT.PAD)GO TO 200 CALL TPUTCH(PADCHAR,CH) I=I+1 GO TO 100 200 CONTINUE C !BUILD UP THE PACKET COUNT=1 BUFFER(COUNT)=SOH COUNT=COUNT+1 CHKSUM=TOCHAR(LEN+3) BUFFER(COUNT)=TOCHAR(LEN+3) COUNT=COUNT+1 CHKSUM=CHKSUM+TOCHAR(NUM) BUFFER(COUNT)=TOCHAR(NUM) COUNT=COUNT+1 CHKSUM=CHKSUM+XTYPE BUFFER(COUNT)=XTYPE COUNT=COUNT+1 C C !COPY THE CONTENT OF PACKET INFORMA IF (LEN .LT. 1) GO TO 310 DO 300 I=1,LEN C !CALCULATE THE CHECKSUM BUFFER(COUNT)=XDATA(I) COUNT=COUNT+1 CHKSUM=CHKSUM+XDATA(I) 300 CONTINUE 310 CONTINUE C TV1=IAND(CHKSUM,192) TV2=TV1/64 TV3=TV2+CHKSUM CHKSUM=IAND(TV3,63) BUFFER(COUNT)=TOCHAR(CHKSUM) COUNT=COUNT+1 BUFFER(COUNT)=EOL BUFFER(COUNT+1)=EOS COUNT=1 CH=RMTOUT C C !SEND OUT THE PACKET 400 CONTINUE IF(BUFFER(COUNT).EQ.EOS)GO TO 500 CALL TPUTCH(BUFFER(COUNT),CH) COUNT=COUNT+1 GO TO 400 500 CONTINUE RETURN END