home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / computervision / kermit.rfile < prev    next >
Text File  |  2020-01-01  |  4KB  |  140 lines

  1. ; 17 jly 85 esj converted
  2. ;----------------------------------------< rfile >--------------------------
  3.       E'F A:S(NWLS)
  4.       E'O RFILE.(X)
  5. ;----------------------------------------------------------------------------
  6. ;
  7. ; Purpose
  8. ;  read a file header packet from the other KERMIT
  9.  
  10. ; Input
  11. ;  none
  12.  
  13. ; Output
  14. ;  none
  15.  
  16. ; Inserts
  17. /INCLUDE BYU.PROG.KERMIT.SYM.EQU.KERCOM
  18. /INCLUDE BYU.PROG.KERMIT.SYM.EQU.KERDEF
  19.  
  20. ; Globals
  21. ;  none
  22.  
  23. ; Locals
  24.    I'R NUM,LEN,STATUS,LCLSTATE,X,TNUM
  25.    I'R TV1,TV2,TV3,TV4,XWRITE
  26.  
  27. ;---------------------------< start of code >-------------------------------
  28.  
  29.       XWRITE=1
  30.       W'R (NUMTRY.GT.MAXTRY)
  31.          LCLSTATE=BIGA                          ;exceeded max. # of re-try
  32.          F'N LCLSTATE                              ;gives up
  33.       O'E
  34.           NUMTRY=NUMTRY+1
  35.       E'L
  36.       STATUS=RPACK.(LEN,NUM,PACKET)
  37.       W'R (STATUS.EQ.BIGS)                 ;we got a SINIT packet
  38.          W'R (OLDTRY.GT.MAXTRY)
  39.             LCLSTATE=BIGA                       ;re-try it again
  40.             F'N LCLSTATE
  41.          O'E
  42.              OLDTRY=OLDTRY+1
  43.          E'L
  44.  
  45.          W'R (NUM.EQ.(N-1))                ;we already got the SINIT
  46.             E'E SPAR.(PACKET)                ;packet, get my file-transf
  47.             TV1=BIGY                         ;requirement/parameters
  48.             TV2=6
  49.             E'E SPACK.(TV1,NUM,TV2,PACKET)   ;ACK it
  50.             NUMTRY=0
  51.             LCLSTATE=STATE
  52.             F'N LCLSTATE
  53.  
  54.          O'E
  55.              LCLSTATE=BIGA                      ;unexpected sequence #
  56.              F'N LCLSTATE                          ;gives up
  57.          E'L
  58.  
  59.       O'R (STATUS.EQ.BIGZ)            ;we got a EOF packet
  60.               W'R (OLDTRY.GT.MAXTRY)
  61.                  LCLSTATE=BIGA                  ;exceeded max # of re-try
  62.                  F'N LCLSTATE                      ;gives up
  63.  
  64.               O'E
  65.                   OLDTRY=OLDTRY+1            ;re-try one more time
  66.               E'L
  67.  
  68.               W'R (NUM.EQ.(N-1))
  69.                  TV1=BIGY                    ;we already got the EOF pac
  70.                  TV2=0
  71.                  TV3=0
  72.                  E'E SPACK.(TV1,NUM,TV2,TV3) ;just ACK it
  73.                  NUMTRY=0
  74.                  LCLSTATE=STATE
  75.                  F'N LCLSTATE
  76.  
  77.               O'E
  78.                   LCLSTATE=BIGA                 ;unexpected sequence #
  79.                   F'N LCLSTATE
  80.               E'L
  81.  
  82.       O'R (STATUS.EQ.BIGF)            ;we got the file header pac
  83.               W'R (NUM.NE.N)
  84.                  LCLSTATE=BIGA                  ;unexpected sequence #,give
  85.                  F'N LCLSTATE
  86.               E'L
  87.  
  88.               PACKET(LEN)=EOS              ;filename packet
  89.               W'R (HOSTON.EQ.NO)
  90.                  E'E TYPE.(0,0)
  91.                  E:E TYPMSG.($Receiving !$)
  92.                  E'E PUTLIN.(PACKET,LOCALDEV) ;display the incoming file
  93.                  E'E TYPE.(0,0)
  94.               E'L
  95.  
  96.               ERR = OPENTEXT.(PACKET,$SU$, $KM$, FD) ;open that file for writing
  97.               W'R (ERR.NE.0)
  98.                  LCLSTATE=BIGA                  ;we got a ERR in opening th
  99.                  F'N LCLSTATE
  100.               E'L
  101.  
  102.               TNUM=N
  103.               TV1=BIGY
  104.               TV2=0
  105.               TV3=0
  106.               E'E SPACK.(TV1,TNUM,TV2,TV3)   ;ACK the file header packet
  107.               OLDTRY=NUMTRY
  108.               NUMTRY=0
  109.               N=(N+1) .MOD. 64
  110.               LCLSTATE=BIGD                    ;change state to look for DA
  111.               F'N LCLSTATE                        ;packet
  112.  
  113.       O'R (STATUS.EQ.BIGB)           ;we got a BREAK transmission
  114.               W'R (NUM.NE.N)
  115.                  LCLSTATE=BIGA
  116.                  F'N LCLSTATE
  117.               E'L
  118.  
  119.               TNUM=N
  120.               TV1=BIGY
  121.               TV2=0
  122.               TV3=0
  123.               E'E SPACK.(TV1,TNUM,TV2,TV3) ;ACK the BREAK packet
  124.               LCLSTATE=BIGC                   ;change state to complete sta
  125.               F'N LCLSTATE
  126.  
  127.       O'R (STATUS.EQ.BAD)           ;we got an error on the check
  128.               LCLSTATE=STATE
  129.               TNUM=N
  130.               TV1=BIGN
  131.               TV2=0
  132.               TV3=0
  133.               E'E SPACK.(TV1,TNUM,TV2,TV3) ;NAK it
  134.               F'N LCLSTATE
  135.       O'E
  136.           LCLSTATE=BIGA                       ;unexpected packet type, give
  137.       E'L
  138.       F'N LCLSTATE
  139.       E'N
  140.