; 17 jly 85 esj converted ;----------------------------------------< rfile >-------------------------- E'F A:S(NWLS) E'O RFILE.(X) ;---------------------------------------------------------------------------- ; ; Purpose ; read a file header packet from the other KERMIT ; Input ; none ; Output ; none ; Inserts /INCLUDE BYU.PROG.KERMIT.SYM.EQU.KERCOM /INCLUDE BYU.PROG.KERMIT.SYM.EQU.KERDEF ; Globals ; none ; Locals I'R NUM,LEN,STATUS,LCLSTATE,X,TNUM I'R TV1,TV2,TV3,TV4,XWRITE ;---------------------------< start of code >------------------------------- XWRITE=1 W'R (NUMTRY.GT.MAXTRY) LCLSTATE=BIGA ;exceeded max. # of re-try F'N LCLSTATE ;gives up O'E NUMTRY=NUMTRY+1 E'L STATUS=RPACK.(LEN,NUM,PACKET) W'R (STATUS.EQ.BIGS) ;we got a SINIT packet W'R (OLDTRY.GT.MAXTRY) LCLSTATE=BIGA ;re-try it again F'N LCLSTATE O'E OLDTRY=OLDTRY+1 E'L W'R (NUM.EQ.(N-1)) ;we already got the SINIT E'E SPAR.(PACKET) ;packet, get my file-transf TV1=BIGY ;requirement/parameters TV2=6 E'E SPACK.(TV1,NUM,TV2,PACKET) ;ACK it NUMTRY=0 LCLSTATE=STATE F'N LCLSTATE O'E LCLSTATE=BIGA ;unexpected sequence # F'N LCLSTATE ;gives up E'L O'R (STATUS.EQ.BIGZ) ;we got a EOF packet W'R (OLDTRY.GT.MAXTRY) LCLSTATE=BIGA ;exceeded max # of re-try F'N LCLSTATE ;gives up O'E OLDTRY=OLDTRY+1 ;re-try one more time E'L W'R (NUM.EQ.(N-1)) TV1=BIGY ;we already got the EOF pac TV2=0 TV3=0 E'E SPACK.(TV1,NUM,TV2,TV3) ;just ACK it NUMTRY=0 LCLSTATE=STATE F'N LCLSTATE O'E LCLSTATE=BIGA ;unexpected sequence # F'N LCLSTATE E'L O'R (STATUS.EQ.BIGF) ;we got the file header pac W'R (NUM.NE.N) LCLSTATE=BIGA ;unexpected sequence #,give F'N LCLSTATE E'L PACKET(LEN)=EOS ;filename packet W'R (HOSTON.EQ.NO) E'E TYPE.(0,0) E:E TYPMSG.($Receiving !$) E'E PUTLIN.(PACKET,LOCALDEV) ;display the incoming file E'E TYPE.(0,0) E'L ERR = OPENTEXT.(PACKET,$SU$, $KM$, FD) ;open that file for writing W'R (ERR.NE.0) LCLSTATE=BIGA ;we got a ERR in opening th F'N LCLSTATE E'L TNUM=N TV1=BIGY TV2=0 TV3=0 E'E SPACK.(TV1,TNUM,TV2,TV3) ;ACK the file header packet OLDTRY=NUMTRY NUMTRY=0 N=(N+1) .MOD. 64 LCLSTATE=BIGD ;change state to look for DA F'N LCLSTATE ;packet O'R (STATUS.EQ.BIGB) ;we got a BREAK transmission W'R (NUM.NE.N) LCLSTATE=BIGA F'N LCLSTATE E'L TNUM=N TV1=BIGY TV2=0 TV3=0 E'E SPACK.(TV1,TNUM,TV2,TV3) ;ACK the BREAK packet LCLSTATE=BIGC ;change state to complete sta F'N LCLSTATE O'R (STATUS.EQ.BAD) ;we got an error on the check LCLSTATE=STATE TNUM=N TV1=BIGN TV2=0 TV3=0 E'E SPACK.(TV1,TNUM,TV2,TV3) ;NAK it F'N LCLSTATE O'E LCLSTATE=BIGA ;unexpected packet type, give E'L F'N LCLSTATE E'N