home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / network / pcftp.ftn < prev    next >
Text File  |  1994-03-04  |  1KB  |  61 lines

  1. C PCFTP - PR1ME (PRIMOS) END OF PERSONAL COMPUTER FILE TRANSFER PROTOCOL
  2. C DICK GILLMANN, JUNE 1982
  3.       DOUBLE PRECISION WAY
  4.       INTEGER FNAME(6)
  5.       INTEGER*2 LINE(200),TAB,LF,CHAR
  6. $INSERT SYSCOM>A$KEYS
  7.       DATA TAB/:104640/,LF/:105240/
  8.       READ(1,1) FNAME
  9. 1     FORMAT(6A4)
  10.       READ(1,2) WAY
  11. 2     FORMAT(A8)
  12.       IF(WAY.EQ.'UP') GOTO 1000
  13. C PRIME TO PC
  14.       CALL OPEN$A(A$READ,FNAME,INTS(24),INTS(1))
  15. C MAIN LOOP
  16. 200   READ(5,5,ERR=300,END=300) LINE
  17. 5     FORMAT(200A1)
  18.       WRITE(1,5) LINE
  19.       GOTO 200
  20. C DONE
  21. 300   WRITE(1,6)
  22. 6     FORMAT('!E!')
  23.       CALL CLOS$A(INTS(1))
  24.       CALL EXIT
  25. C PC TO PRIME
  26. 1000  IF(EXST$A(FNAME,INTS(24))) CALL DELE$A(FNAME,INTS(24))
  27.       CALL OPEN$A(A$WRIT,FNAME,INTS(24),INTS(2))
  28. C MAIN LOOP
  29. 1100  DO 1110 I=1,200
  30. 1110  LINE(I)=' '
  31.       DO 1120 I=1,200
  32. 1115  CALL T1IN(CHAR)
  33.       IF(AND(CHAR,:177).EQ.0) GO TO 1115
  34.       IF(AND(CHAR,:177).EQ.8) GO TO 1122
  35.       CHAR=LS(CHAR,8)+:240
  36.       IF(CHAR.EQ.LF) GO TO 1122
  37. 1120  LINE(I)=CHAR
  38. 1122  IF(LINE(1).EQ.'!'.AND.LINE(2).EQ.'E'.AND.LINE(3).EQ.'!')
  39.      & GOTO 1200
  40. C EXPAND TABS
  41.       DO 1175 I=1,200
  42.       IF(LINE(I).NE.TAB) GOTO 1175
  43.       J=((I-1)/8)*8 + 9
  44.       N=J-I-1
  45.       IF(N.LE.0) GOTO 1135
  46.       M=201-J
  47.       IF(M.LE.0) GOTO 1135
  48.       DO 1125 K=1,M
  49.       KK=201-K
  50. 1125  LINE(KK)=LINE(KK-N)
  51. 1135  KK=MIN0(J-1,132)
  52.       DO 1150 K=I,KK
  53. 1150  LINE(K)=' '
  54. 1175  CONTINUE
  55.       WRITE(6,5) LINE
  56.       GOTO 1100
  57. C DONE
  58. 1200  CALL CLOS$A(INTS(2))
  59.       CALL EXIT
  60.       END
  61.