home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / cdccyber / cd3ker.mod < prev    next >
Text File  |  2020-01-01  |  10KB  |  332 lines

  1. *IDENT UVA1
  2. *I COMCKER.39
  3.       PARAMETER (CSB812=6)
  4. *I 174
  5.       LOGICAL EOCONV
  6. *I 182
  7.       COMMON /PROTO/ EOCONV
  8.       COMMON /PROTO/ BINMODE
  9. *I 298
  10. *     OPERATING SYSTEM/NETWORK FLAGS/CONSTANTS
  11.   
  12.       PARAMETER (CCP=1, CDCNET=2)
  13.       COMMON /OPSYS/ TSTATUS(2)
  14.       COMMON /OPSYS/ NETTYPE
  15.   
  16. *I KERMIT.36
  17. *     3.4  10/05/87 OLAF PORS, UNIVERSITY OF VIRGINIA
  18. *          NOS 2.5.1, LEVEL 664.
  19. *
  20. *       1. ADD SUPPORT FOR 8/12 ASCII BINARY FILES.
  21. *          PACKED BINARY FILES ARE EFFICIENT AND USABLE
  22. *          WITH CDC-RELEASED FILE TRANSFER PROGRAMS,
  23. *          BUT CANNOT ACCURATELY PRESERVE FILE LENGTHS
  24. *          DUE TO FILLER IN THE LAST WORD.  8/12 BINARY
  25. *          TAKES CARE OF THE LIMITATION AND IS COMPATIBLE
  26. *          WITH UTILITIES SUCH AS FCOPY.
  27. *          A SUMMARY OF RELATED KERMIT COMMANDS - 
  28. *
  29. *          "SET FILE-MODE TEXT" (THE DEFAULT) INDICATES THAT
  30. *          A TEXT FILE(S) IS TO BE SENT OR RECEIVED IN
  31. *          THE CURRENT TEXT MODE.  THE CURRENT TEXT MODE
  32. *          IS SET WITH THE "SET TEXT-MODE XXX" COMMAND.
  33. *          XXX IS "AUTO" (THE DEFAULT), "6/12", "DISPLAY", OR
  34. *          "8/12".  AUTO ATTEMPTS TO DETERMINE THE CHARACTER
  35. *          SET OF A CDC FILE BEFORE SENDING IT, AND
  36. *          CREATES A 6/12 CDC FILE IF RECEIVING.
  37. *          THE OTHERS READ/CREATE CDC FILES IN THE
  38. *          RESPECTIVE CHARACTER SET.
  39. *          THE "AUTO" DEFAULT MAY BE CHANGED, DEPENDING
  40. *          ON SITE PREFERENCE, BY PUTTING ONE OF THE
  41. *          FOLLOWING INTO "KERMOD2" DURING INSTALLATION -
  42. *
  43. *             *DEFINE,TEXT612 
  44. *             *DEFINE,TEXTDISP
  45. *          OR *DEFINE,TEXT812 
  46. *
  47. *          "SET FILE-MODE BINARY" ALLOWS THE COMMAND
  48. *          "SET BIN-MODE YYY" TO BE ENTERED.
  49. *          YYY IS "PACKED" (THE DEFAULT) OR "8/12".
  50. *          PACKED READS/STUFFS 7.5 BYTES INTO A CM WORD.
  51. *          8/12 READS/PUTS EACH 8-BIT BYTE INTO A 12-BIT BYTE.
  52. *          THE DEFAULT MAY BE CHANGED AS FOLLOWS -
  53. *
  54. *             *DEFINE,BIN812
  55. *
  56. *       2. MAKE EOR/EOF CONVERSION TO #EOR/#EOF OPTIONAL.
  57. *          #EOR/#EOF LINES CREATED IN/TRANSLATED FROM
  58. *          TEXT FILES ON A MICRO ARE GREAT FOR PRESERVING
  59. *          EOR/EOF MARKS AND FOR USE WITH CDC-RELEASED
  60. *          FILE TRANSFER PACKAGES, BUT ARE EXTREMELY
  61. *          ANNOYING FOR USERS WHO DON'T CARE ABOUT EOR-S
  62. *          AND DON'T USE THE CDC PACKAGES.  THEREFORE,
  63. *          THE "SET EOR-EOF-MODE ZZZ" COMMAND ALLOWS THE USER
  64. *          TO SELECT WHAT HE WANTS.  ZZZ IS "ON" TO
  65. *          CREATE/RECOGNIZE THE LINES, "OFF" IF NOT TO.
  66. *          THE DEFAULT IS "ON", BUT MAY BE CHANGED WITH
  67. *
  68. *             *DEFINE,EORMOFF 
  69. *
  70. *       3. ADD SUPPORT FOR CDCNET.  DIFFERENT 0016 CONTROL BYTE
  71. *          SEQUENCES ARE USED DEPENDING ON WHETHER KERMIT
  72. *          IS ACCESSED FROM A CDCNET OR NPU LINE. 
  73. *
  74. *I KERMIT.424
  75. *     FILMODE IS SET TO TEXT OR BINARY.  IF TEXT, 
  76. *     THEN TXTMODE IS RELEVANT.  TXTMODE IS SET BY THE
  77. *     SET TEXT-MODE COMMAND TO CSNONE, CSDSP, CS812,
  78. *     OR CS612.  IF BINARY, THEN BINMODE IS RELEVANT.
  79. *     BINMODE IS CORRESPONDINGLY SET BY THE SET BIN-MODE
  80. *     COMMAND TO CSB812 OR CSBIN.
  81. *     WHEN A FILE IS BEING READ OR WRITTEN, THE FCSET ENTRY 
  82. *     IS SET TO CSDSP, CS812, CS612, CSTXP, CSBIN OR
  83. *     CSB812, DEPENDING ON THE SETTINGS OF THE ABOVE
  84. *     PARAMETERS, AND, IF FILMODE=TEXT, TXTMODE=NONE,
  85. *     THE CONTENTS OF THE FILE BEING READ.
  86.   
  87. *I KERMIT.429
  88. *IF -DEF,TEXTDISP,3 
  89. *IF -DEF,TEXT612,2
  90. *IF -DEF,TEXT812,1
  91. *I KERMIT.430
  92. *IF DEF,TEXTDISP,1
  93.       DATA TXTMODE          / CSDSP          /
  94. *IF DEF,TEXT612,1
  95.       DATA TXTMODE          / CS612          /
  96. *IF DEF,TEXT812,1
  97.       DATA TXTMODE          / CS812          /
  98. *IF DEF,EORMOFF,1
  99.       DATA EOCONV           / .FALSE.        /
  100. *IF -DEF,EORMOFF,1
  101.       DATA EOCONV           / .TRUE.         /
  102. *IF DEF,BIN812,1
  103.       DATA BINMODE          / CSB812         /
  104. *IF -DEF,BIN812,1
  105.       DATA BINMODE          / CSBIN          /
  106. *D 493,494
  107.       DATA VERSION / '^CYBER-170/^N^O^S ^K^E^R^M^I^T ^VER 3.4    @S\N' /
  108.       DATA HLPASCH / '^DECIMAL, OCTAL (^B), OR HEXADECIMAL (^H) CODE FOR
  109. *D 668,669
  110.       CALL    USTART
  111.       IF ( AND( SHIFT(TSTATUS(2),-48),O"77") .NE. 2 ) THEN
  112.          CALL REMARK(' KERMIT - JOB IS NOT INTERACTIVE')
  113. *I 671
  114.       NETTYPE = SHIFT(TSTATUS(2),-54)
  115. *D 1037,1038
  116.       PARAMETER (TSIZE=12)
  117.       CHARACTER*15 SETTYP(TSIZE)
  118. *D 1041
  119.      +    'TEXT-MODE', 'BIN-MODE', 'EOR-EOF-MODE' /
  120. *D 1046
  121.       GO TO (20,30,40,10,50,70,75,80,90,100,110,120), INDX
  122. *I 1096
  123.   
  124. *     SET BINARY MODE (8/12, PACKED)
  125.   
  126. 110   CALL BINMCMD
  127.       RETURN
  128.   
  129. *     SET EOR-EOF LINE MODE (OFF OR ON) 
  130.   
  131. 120   CALL EOMDCMD
  132.       RETURN
  133. *D KERMIT.1150
  134.          CALL FPRINTF(STDOUT,'^BINARY (',0,0,0,0) 
  135.          IF(BINMODE .EQ. CSB812) THEN
  136.             CALL FPRINTF(STDOUT,'8/12)',0,0,0,0)
  137.          ELSE
  138.             CALL FPRINTF(STDOUT,'PACKED)',0,0,0,0)
  139.          ENDIF
  140. *I 1160
  141.   
  142. *     DISPLAY THE EOR/EOF FLAG
  143.   
  144.       CALL FPRINTF(STDOUT,'  ^EOR/^EOF LINES: ',0,0,0,0) 
  145.       IF(EOCONV) THEN
  146.          CALL FPRINTF(STDOUT,'^ON\N',0,0,0,0)
  147.       ELSE
  148.          CALL FPRINTF(STDOUT,'^OFF\N',0,0,0,0)
  149.       ENDIF
  150. *D 1213,1214
  151.       CALL FPRINTF(STDOUT,'^INIT PACKET RETRY COUNT: @D     ',MAXRINI,
  152.      +0,0,0)
  153. *I KERMLIB.51
  154.       SUBROUTINE BINMCMD
  155.   
  156. ***   BINMCMD - PERFORM A SET BIN-MODE XXXX COMMAND
  157.   
  158.       IMPLICIT INTEGER (A-Z)
  159.       PARAMETER (COMLIS = 0)
  160. *CALL COMCKER
  161.       LOGICAL CONFIRM
  162.       PARAMETER (TSIZE=2)
  163.       CHARACTER*10 MODETYP(TSIZE)
  164.       DATA MODETYP / 'PACKED', '8/12' / 
  165.   
  166.       INDX = MATCH(MODETYP,TSIZE,.FALSE.)
  167.       IF (INDX .LE. 0) RETURN 
  168.       IF (.NOT. CONFIRM(CMDFD)) RETURN
  169.   
  170.       GO TO (10, 20), INDX
  171.   
  172. *     SET PACKED (7.5 BYTES PER CM WORD) BINARY MODE
  173.   
  174. 10    BINMODE = CSBIN
  175.       RETURN
  176.   
  177. *     SET 8/12 BINARY MODE
  178.   
  179. 20    BINMODE = CSB812
  180.       RETURN
  181.   
  182.       END 
  183. *D 126
  184.             IF (FCSET(FD).EQ.CSBIN .OR. FCSET(FD).EQ.CSB812) THEN
  185. *D KERMLIB.322
  186.           COMMENT CHECK FILES EXISTENCE 
  187. *D 324
  188. **        CFE - CHECK FILES EXISTENCE.
  189. *I KERMLIB.995
  190.       SUBROUTINE EOMDCMD
  191.   
  192. ***   EOMDCMD - PERFORM A SET EOR-EOF-MODE XXXX COMMAND
  193.   
  194.       IMPLICIT INTEGER (A-Z)
  195.       PARAMETER (COMLIS = 0)
  196. *CALL COMCKER
  197.       LOGICAL CONFIRM
  198.       PARAMETER (TSIZE=2)
  199.       CHARACTER*5 MODETYP(TSIZE)
  200.       DATA MODETYP / 'OFF', 'ON' /
  201.   
  202.       INDX = MATCH(MODETYP,TSIZE,.FALSE.)
  203.       IF (INDX .LE. 0) RETURN 
  204.       IF (.NOT. CONFIRM(CMDFD)) RETURN
  205.   
  206.       GO TO (10, 20), INDX
  207.   
  208. *     DON'T RECOGNIZE OR PRODUCE EOR/EOF LINES
  209.   
  210. 10    EOCONV = .FALSE.
  211.       RETURN
  212.   
  213. *     RECOGNIZE/PRODUCE EOR/EOF LINES
  214.   
  215. 20    EOCONV = .TRUE.
  216.       RETURN
  217.   
  218.       END 
  219. *D 1162
  220. *           TEXT MODE AND NOT A CONNECTED FILE
  221.             IF (FCHBUF(1,FD).EQ.EORLINE .AND. EOCONV) THEN
  222. *D 1164
  223.             ELSE IF (FCHBUF(1,FD).EQ.EOFLINE .AND. EOCONV) THEN
  224. *I 1403
  225. *                     = *CSB812* FOR 8/12 BINARY
  226. *D 2059
  227.          IF (FCSET(FD).EQ.CSBIN .OR. FCSET(FD).EQ.CSB812) THEN
  228. *D 2074
  229.          IF (FCSET(FD).EQ.CSBIN .OR. FCSET(FD).EQ.CSB812) THEN
  230. *I 2096
  231.                   IF (EOCONV) THEN
  232. *I 2098
  233.                   ENDIF
  234. *I 2102
  235.                   IF (EOCONV) THEN
  236. *I 2104
  237.                   ENDIF
  238. *I 2107
  239.                IF (EOCONV) THEN
  240. *I 2109
  241.                ELSE 
  242.                NWDS = 0
  243.                ENDIF
  244. *D 2638
  245.       ELSE IF ( FCSET(FD).NE.CSBIN .AND. FCSET(FD).NE.CSB812 ) THEN
  246. *I 2672
  247.                   IF (NETTYPE .EQ. CCP) THEN
  248. *I 2673
  249.                   ELSE
  250. *                 SET IEM=1 FOR CDCNET
  251.                   FCHBUF(FNWDS(FD),FD) = O"0010 4202 4001 4001 0000"
  252.                   ENDIF
  253. *I 2696
  254.          IF (FCSET(FD).EQ.CSB812) THEN
  255.             IF (CH.EQ.0) CH=O"4000"
  256.          ENDIF
  257. *D 3414
  258.             FFD = FOPEN(FILENAM,CREATE,BINMODE)
  259. *D 4156
  260.             FFD = FOPEN(FILENAM,RD,BINMODE)
  261. *D 4159
  262.             SFILE = A
  263. *I 4630
  264.             IF (NETTYPE .EQ. CCP) THEN
  265. *           EP=N
  266. *I 4631
  267.             ELSE
  268.             FCHBUF(1,STDOUT) = O"0010 4332 4001 4000 0000"
  269.             ENDIF
  270. *I 4633
  271.             IF (NETTYPE .EQ. CCP) THEN
  272. *           EP=Y
  273. *I 4634
  274.             ELSE
  275.             FCHBUF(1,STDOUT) = O"0010 4332 4001 4001 0000"
  276.             ENDIF
  277. *I 4642
  278.          IF (NETTYPE .EQ. CCP) THEN
  279. *        SET MULTIMESSAGE TRANSPARENT INPUT.
  280. *        XL=X0D, C4094 (NO TIMEOUT, 2 CARRIAGE RETURNS IN A ROW
  281. *        TERMINATE XPT INPUT), MULTIMESSAGE=YES, EP=N,
  282. *        IN=XPT, TRANSMISSION BLOCK SIZE = 3770B. 
  283. *I 4648
  284.          ELSE
  285. *        EP=NO
  286. *        HOLD-PAGE=NO
  287. *        XPT-TERMINATE-CHAR = 0D OR 8D
  288. *        XPT-FORWARD-CHAR = 0D OR 8D
  289. *        XPT-CHARACTER-MODE = FORWARD-TERMINATE
  290. *        XPT-MESSAGE-LENGTH = 4094
  291. *        XPT-LENGTH-MODE = FORWARD-EXACT
  292. *        INPUT-BLOCK-SIZE = 2000
  293. *        INPUT-EDITING-MODE = XPT
  294.          FCHBUF(1,STDOUT) = O"0010 4332 4001 4000 4311"
  295.          FCHBUF(2,STDOUT) = O"4001 4000 4205 4002 4015"
  296.          FCHBUF(3,STDOUT) = O"4215 4204 4002 4015 4215"
  297.          FCHBUF(4,STDOUT) = O"4203 4001 4003 4210 4002"
  298.          FCHBUF(5,STDOUT) = O"4017 4376 4207 4001 4003"
  299.          FCHBUF(6,STDOUT) = O"4214 4002 4007 4320 4202"
  300.          FCHBUF(7,STDOUT) = O"4001 4001 0000 0000 0000"
  301.          FNWDS(STDOUT) = 7
  302.          ENDIF
  303. *I 4655
  304.             IF (NETTYPE .EQ. CCP) THEN
  305. *           IN = NOT TRANSPARENT
  306. *I 4656
  307.             ELSE
  308. *           IEM = NORMAL
  309.             FCHBUF(1,STDOUT) = O"0010 4202 4001 4000 0000"
  310.             ENDIF
  311. *I 4658
  312.             IF (NETTYPE .EQ. CCP) THEN
  313. *           EP=Y, IN = NOT TRANSPARENT
  314. *I 4660
  315.             ELSE
  316. *           EP=Y, IEM = NORMAL
  317.             FCHBUF(1,STDOUT) = O"0010 4332 4001 4001 4202"
  318.             FCHBUF(2,STDOUT) = O"4001 4000 0000 0000 0000"
  319.             ENDIF
  320. *D 4689
  321.       DATA MODETYP / 'AUTO', 'DISPLAY', '6/12', '8/12' /
  322. *I 4753
  323.   
  324.           USE    /OPSYS/
  325.  TSTATUS  BSS    2
  326.           USE    *
  327. *D 4760
  328. *I 4762
  329.           TSTATUS  TSTATUS
  330. *D  4765,4767
  331. */ END OF MOD
  332.