home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / d / k20mit.bwr < prev    next >
Text File  |  2020-01-01  |  33KB  |  986 lines

  1. Kermit-20 Version 4.2(260) Dec 1987, Known Bugs, Problems, Limitations.
  2.  
  3. 11-Dec-87 15:34:23-EST,1003;000000000001
  4. Date: Fri 11 Dec 87 15:34:19-EST
  5. From: Frank da Cruz <SY.FDC@CU20B.COLUMBIA.EDU>
  6. Subject: New Release of DEC-20 Kermit
  7. To: sy.christine@CU20B.COLUMBIA.EDU
  8.  
  9. I never thought I'd touch this program again, but it contained a thoughtless
  10. restriction, namely that it wouldn't let you issue commands to servers unless
  11. you were in local mode (e.g. after dialing out through another line).  This
  12. prevented you from putting a bunch of commands (multiple SENDs and/or GETs,
  13. followed by FINISH) into a TAKE file, TAKing the file, escaping back to the PC
  14. and putting it in server mode.  The new release, 4.2(260), removes this
  15. restriction so long as the commands (like GET, FINISH, BYE) are issued from
  16. TAKE files.  The old problem of inferior process capabilities not getting set
  17. right, e.g. after a PUSH command, is also fixed.  The new version is in
  18. KER:K20MIT.MAC on CU20B.  - Frank
  19.  
  20. Jan 88 - the above change introduced a new problem: If you issue commands to a
  21. server (like GET, FINISH, etc) while in remote mode, the TTY is not put in
  22. binary mode first, so it still has parity, echo, etc.  This should be easy
  23. to fix...
  24.  
  25. Kermit-20 Version 4.2(256) May 1985, Known Bugs, Problems, Limitations.
  26.  
  27. As of: 12:42pm  Tuesday, 23 July 1985
  28.  
  29. . Needs copyright notice.
  30.  
  31. . Server does not perform REMOTE HOST commands.
  32.  
  33. . File Attribute packets are not yet supported.
  34.  
  35. . Server, running in batch, should not give "?KERMIT-20: File not found"
  36.   message, which shuts down the batch job; use "%" messages instead.
  37.  
  38. . REMOTE SPACE command should accept a device/directory argument.
  39.  
  40. . RUN command should accept an optional command line argument.
  41.  
  42. . REMOTE WHO missing.
  43.  
  44. . Should allow "remapping" bytesize of incoming files based on whether
  45.   first page has any 8th bits set, to allow transparent uploading of 8-bit
  46.   binary data when "auto" set.
  47.  
  48. . During CONNECT, should clear output buffer (CFOBF) before sending BREAK.
  49.  
  50. . If monitor version 6.0 or greater, then line speed is reported correctly
  51.   by MTOPR, even for remote lines -- should allow for this.
  52.  
  53. . If you do "get NUL:" to a Kermit-20 server, it sends an empty F packet.
  54.  
  55. . Code to delete trailing "." in outbound F packet seems to fail sometimes.
  56.  
  57. . Reported (not verified) that SET FLOW doesn't turn XON/XOFF on/off on an
  58.   assigned TTY line (or maybe it's page mode).
  59.  
  60. . Should handle ^C during packets more intelligently?
  61.  
  62. . Reported (not verified) that ^A for status report during FT in local mode
  63.   sometimes gets lost.  Scenario: 1. SET LINE x; 2. Start FT, but with no
  64.   Kermit on other side; 3. ^C back to command level; 4. Connect.  ^A still
  65.   being trapped.
  66.  
  67. . Recover from receiving a null F packet, instead of looping with
  68.   "SPACK: illegal message length" messages forever (have to look into this
  69.   a little more deeply; should never get a null F packet anyway...)
  70.  
  71. . Capabilities word not set correctly for inferior forks in RUN or PUSH
  72.   if CONNECT not done first (CAPAS word set only in TTYINI, which is called
  73.   only for CONNECT) (reported by Jeff Jones at ORNL, not yet verified).
  74.  
  75. . TAC support:
  76.  
  77. Date: 10 Apr 1985  22:17 MST (Wed)
  78. From: "Frank J. Wancho" <WANCHO@SIMTEL20.ARPA>
  79. To:   SY.FDC@CU20B
  80. Subject: Changes to 20KERMIT.MAC
  81.  
  82. Frank,
  83.  
  84. The following are the changes I made to 20KERMIT.MAC.255 to add
  85. support for a MONITR that doubles IACs and has new MTOPR% calls to
  86. negotiate network binary mode.  Such support is in MRC's PANDA MONITR
  87. which we are running now, and the MTOPR% codes are of MRC's making,
  88. not yet DEC's.  I have made similar changes in MODEM available in the
  89. usual place here (MICRO:<CPM.TOPS-20>).
  90.  
  91. --Frank
  92. --------------------
  93. REDIT 1(103) COMPARE by user WANCHO, 10-Apr-85 22:07:04
  94. File 1: PS:<TEMP>KERMIT.MAC.255
  95. File 2: PS:<TEMP>KERMIT.MAC.256
  96. ***** CHANGE #1; PAGE 1, LINE 3; PAGE 1, LINE 3
  97. $verno==^d4            ; Major version number.
  98. $mnver==^d2            ; Minor version number.
  99. $edno==^d173             ; Edit number increases independent of version.
  100. $who==^d0            ; Who edited, 0=Columbia.
  101. ;
  102. ;PS:<TIMREK>KERMIT.MAC.1028, 11-Dec-84 19:00:29, Frank (SY.FDC@CU20B)
  103.  ---------------------------------
  104. $verno==^d4            ; Major version number.
  105. $mnver==^d2            ; Minor version number.
  106. $edno==^d174             ; Edit number increases independent of version.
  107. $who==^d0            ; Who edited, 0=Columbia.
  108. ;
  109. ;[SIMTEL20.ARPA]PS:<TEMP>20KERMIT.MAC.256,  9-Apr-85 12:44:11, Edit by WANCHO
  110. ; added PANDASW conditionals to handle network binary mode negotiations
  111. ;PS:<TIMREK>KERMIT.MAC.1028, 11-Dec-84 19:00:29, Frank (SY.FDC@CU20B)
  112. ***** CHANGE #2; PAGE 219, LINE 13; PAGE 219, LINE 13
  113. ; Returns +1 always, but prints warning on failure.
  114. ;
  115. doarpa:    skipn tvtflg        ; Are we on tvt?
  116.      ret
  117.  
  118.     move t1,netjfn        ; Yes, talk binary.
  119.  ---------------------------------
  120. ; Returns +1 always, but prints warning on failure.
  121. ;
  122. doarpa:    skipn tvtflg        ; Are we on tvt?
  123.      ret
  124.  
  125. IFE PANDASW,<
  126.     move t1,netjfn        ; Yes, talk binary.
  127. ***** CHANGE #3; PAGE 219, LINE 27; PAGE 219, LINE 28
  128.     SOUT%
  129.      %jserr(,doarpx)
  130.     movei t1,^d4000
  131.     DISMS
  132.     ret
  133.  
  134.  ---------------------------------
  135.     SOUT%
  136.      %jserr(,doarpx)
  137.     movei t1,^d4000
  138.     DISMS
  139.     ret
  140. >;IFE PANDASW
  141.  
  142. IFN PANDASW,<
  143.     MOVX t1,.CTTRM        ; read present local status
  144.     MOVX t2,.MORLT
  145.     MTOPR%
  146. ;     ERJMP NIM        ; not a Panda monitor
  147.     MOVEM t3,OLDLTS        ; save old terminal status
  148.     TXO t3,MO%NBI!MO%NBO    ; want network binary mode
  149.     MOVX t2,.MOSLT        ; want to set it
  150.     MTOPR%
  151. ;     ERJMP FATAL
  152.     MOVX B,.MORLT        ; now see what actually happened
  153.     MTOPR%
  154. ;     ERJMP FATAL
  155.     TXC C,MO%NBI!MO%NBO    ; make mask ones if either bit zero
  156.     IFXN. C,MO%NBI!MO%NBO
  157.      jrst doarpx
  158.     ENDIF.
  159. >;IFN PANDASW
  160.  
  161. ***** CHANGE #4; PAGE 222, LINE 7; PAGE 222, LINE 7
  162. ; Turn off Arpanet TAC binary mode.
  163.  
  164. unarpa:    skipn tvtflg        ; Are we on a tvt?
  165.      ret            ; No, skip this.
  166.     
  167.     dmove t2, [exp <point 8,[byte(8) iac,wont,trnbin]>,-3]
  168.  ---------------------------------
  169. ; Turn off Arpanet TAC binary mode.
  170.  
  171. unarpa:    skipn tvtflg        ; Are we on a tvt?
  172.      ret            ; No, skip this.
  173.     
  174. IFE PANDASW,<
  175.     dmove t2, [exp <point 8,[byte(8) iac,wont,trnbin]>,-3]
  176. ***** CHANGE #5; PAGE 222, LINE 20; PAGE 222, LINE 21
  177.     SOUT%
  178.      %jserr(,unarpx)
  179.     movei t1, ^d4000    ; Wait another 4 secs.
  180.     DISMS%
  181.     ret            ; Done.
  182.  
  183.  ---------------------------------
  184.     SOUT%
  185.      %jserr(,unarpx)
  186.     movei t1, ^d4000    ; Wait another 4 secs.
  187.     DISMS%
  188.     ret            ; Done.
  189. >; IFE PANDASW
  190.  
  191. IFN PANDASW,<
  192.     MOVX t1,.CTTRM        ; restore modes
  193.     MOVX t2,.MOSLT
  194.     MOVE t3,OLDLTS        ; get former status
  195.     MTOPR%
  196. ;     ERJMP FATAL
  197. >; IFN PANDASW
  198.  
  199. ***** CHANGE #6; PAGE 229, LINE 8; PAGE 229, LINE 8
  200.  
  201. ;[131] If ARPANET TVT then must double any hex FF's (TELNET IAC).
  202. ; Note, since IAC is DEL with parity bit on, we should never see one, right?
  203. ;
  204. spack6:    move t2, [point 8, sndpkt] ; The address of the packet.
  205.     skipn tvtflg        ; TVT-Binary mode?
  206.  ---------------------------------
  207.  
  208. ;[131] If ARPANET TVT then must double any hex FF's (TELNET IAC).
  209. ; Note, since IAC is DEL with parity bit on, we should never see one, right?
  210. ;
  211. spack6:    move t2, [point 8, sndpkt] ; The address of the packet.
  212.  
  213. IFN PANDASW,<
  214.     jrst spak6x
  215. >; IFN PANDASW
  216.  
  217.     skipn tvtflg        ; TVT-Binary mode?
  218. ***** CHANGE #7; PAGE 276, LINE 22; PAGE 276, LINE 22
  219. flow:    1            ;[143] Flow-Control (nonzero = XON/XOFF)
  220. itsflg:    defits            ;[75] Flag for handling ITS-binary format files
  221. itsfil:    0            ;[75] Flag for this file is ITS format.
  222. itscnt:    0            ;[75] Counter for ITS header chars matched.
  223. tvtflg:    0            ;[129] Negotiate binary mode on ARPANET TVT.
  224. incase:    defics            ;[160] Case conversion flag for INPUT search.
  225.  ---------------------------------
  226. flow:    1            ;[143] Flow-Control (nonzero = XON/XOFF)
  227. itsflg:    defits            ;[75] Flag for handling ITS-binary format files
  228. itsfil:    0            ;[75] Flag for this file is ITS format.
  229. itscnt:    0            ;[75] Counter for ITS header chars matched.
  230. tvtflg:    0            ;[129] Negotiate binary mode on ARPANET TVT.
  231. oldlts:    0
  232. incase:    defics            ;[160] Case conversion flag for INPUT search.
  233. 13-Nov-85 19:43:32-EST,734;000000000011
  234. Return-Path: <RELPH@USC-ECLC.ARPA>
  235. Received: from USC-ECLC.ARPA by CU20B.COLUMBIA.EDU with TCP; Wed 13 Nov 85 19:43:30-EST
  236. Date: Wed 13 Nov 85 15:51:29-PST
  237. From: John M. Relph <Relph@USC-ECLC.ARPA>
  238. Subject: Tops-20 Kermit V175
  239. To: SY.FDC@CU20B.COLUMBIA.EDU
  240. Message-ID: <12159023603.35.RELPH@USC-ECLC.ARPA>
  241.  
  242. Frank,
  243.   I had a problem with kermit on our Tops-20 where users could
  244. ^C out of connect mode because they had ^C privilege but hadn't
  245. enabled it.  I fixed this with the patch below, which enables
  246. the ^C priv.  This patch goes in after the RPCAP% at TTYINI+1.
  247.  
  248.     txne    t2,sc%ctc    ;[176] can they ^C trap?
  249.      call    [txo    t3,sc%ctc ;[176] yes, so let's
  250.          EPCAP%
  251.          ret]        ;[176] end edit
  252.  
  253. Thanks,
  254.     -- John
  255. -------
  256. 11-Mar-86 19:39:16-EST,947;000000000001
  257. Mail-From: SY.FDC created at 11-Mar-86 19:39:15
  258. Date: Tue 11 Mar 86 19:39:14-EST
  259. From: Frank da Cruz <SY.FDC@CU20B.COLUMBIA.EDU>
  260. Subject: TOPS-20 LAT Service
  261. To: TOPS20@SU-SCORE.ARPA
  262. Message-ID: <12189965286.29.SY.FDC@CU20B.COLUMBIA.EDU>
  263.  
  264. TOPS-20 LAT service apparently does not allow 8-bit transparent terminal
  265. i/o.  Binary files cannot be sent to DEC-20 Kermit through a LAT box
  266. (DECserver 100) unless you give SET PARITY commands to Kermit to force it
  267. to use 8th-bit prefixing.  The same binary files can be sent to DEC-20 Kermit
  268. through a regular terminal port without having to use 8th-bit prefixing.
  269. In other words, all the SFCOC's, MTOPR's, SFMOD's, STPAR's, and STIW's you
  270. must do to make the terminal transparent just don't work for a LAT terminal.
  271. By contrast, Ultrix LAT service does not pose this problem -- opening a
  272. LAT terminal in raw mode in Ultrix works just like opening a regular terminal
  273. in raw mode.
  274. -------
  275. 13-Mar-86 14:40:58-EST,2080;000000000001
  276. Mail-From: SY.FDC created at 13-Mar-86 14:40:53
  277. Date: Thu 13 Mar 86 14:40:53-EST
  278. From: Frank da Cruz <SY.FDC@CU20B.COLUMBIA.EDU>
  279. Subject: TOPS-20 LAT service vs Kermit, cont'd
  280. To: TOPS-20@SU-SCORE.ARPA
  281. Message-ID: <12190435261.12.SY.FDC@CU20B.COLUMBIA.EDU>
  282.  
  283. Disregard last message...  Turns out that, unbeknownst to me, the behavior
  284. reported previously occurred from a PC that was connected by LAT to a VAX
  285. Ultrix system that was TELNET'd to a DEC-20 via TCP/IP over Ethernet, and it
  286. was TELNET stripping the high order bit, not LAT.  However, there is still a
  287. problem with DEC-20 LAT service.  The symptom is that you can't transfer files
  288. of any kind into a DEC-20 through LAT using Kermit or Modem or any similar
  289. protocol.  You can, however, transfer files from the DEC-20 to the PC with no
  290. problem.  Logging of a file transfer reveals that a typical Kermit data packet
  291. (80-90 characters) is truncated by the LAT box to 30-40 characters.  If you
  292. reduce the Kermit packet size to, say, 37, then everything works, even binary
  293. files without 8th-bit prefixing.
  294.  
  295. The mystery is that everything works fine when the host is a VAX Ultrix
  296. system rather than a DEC-20.  Therefore, the LAT box itself is not at fault;
  297. the culprit must the TOPS-20 LAT service.
  298.  
  299. In fact, the LAT specification says LAT_MIN_RECV_SLOT_SIZE should be in the
  300. range 1-255, and 127 is recommended.  The TOPS-20 6.1 monitor's LATSRV module,
  301. however, sets the corresponding symbol MXSLSI to 40 (decimal).  We haven't
  302. tried changing the monitor to increase this number, and are not sure what the
  303. consequences would be.
  304.  
  305. For now, those who want to use Kermit to send files to a DEC-20 through a
  306. LAT box must set their packet size to 37 or less.  Those who want to use MODEM
  307. will have to use Kermit instead, since MODEM packet sizes cannot be changed.
  308.  
  309. This note does not address the other problems we've been having with TOPS-20
  310. LAT service, like random disconnections, etc.  We noticed that several of the
  311. other recommended parameter settings are not followed in LATSRV.
  312. -------
  313. 16-Mar-86 00:42:35-EST,2269;000000000001
  314. Return-Path: <@CS.COLUMBIA.EDU,@SU-SCORE.ARPA:MRC@PANDA>
  315. Received: from CS.COLUMBIA.EDU by CU20B.COLUMBIA.EDU with TCP; Sun 16 Mar 86 00:42:32-EST
  316. Received: from SU-SCORE.ARPA by CS.COLUMBIA.EDU with TCP; Sun 16 Mar 86 00:42:59-EST
  317. Received: from SUMEX-AIM.ARPA by SU-SCORE.ARPA with TCP; Sat 15 Mar 86 17:32:21-PST
  318. Received: from PANDA by SUMEX-AIM.ARPA with Cafard; Sat 15 Mar 86 17:34:15-PST
  319. Date: Sat 15 Mar 86 16:48:16-PST
  320. From: Mark Crispin <MRC%PANDA@SUMEX-AIM.ARPA>
  321. Subject: DTR control patch
  322. To: TOPS-20@SU-SCORE.ARPA
  323. Postal-Address: 1802 Hackett Ave.; Mountain View, CA  94043-4431
  324. Phone: +1 (415) 968-1052
  325. Message-ID: <12191015506.11.MRC@PANDA>
  326.  
  327.      By popular demand, I am publishing the latest and greatest
  328. DTR control patch.  It is in the form of a MIC file.  Note the
  329. instructions at the bottom of the patch, which are necessary to
  330. actually enable the patch.  You will have to do this manually
  331. since it is different between release 5.1 and release 6.1.
  332.  
  333.      This patch enables two new TTY MTOPR% functions.  Function
  334. 400003 will hang up the given terminal line, function 400004 will
  335. pick it up.  This is compatible with the functions in Stanford
  336. and PANDA monitors, where these functions are given the symbolic
  337. names .MOHUP (hang up) and .MODUP (DTR up).
  338.  
  339.      This patch uses function .DFLDU (15) to DTEQ, which is
  340. supported from the KL to the -11 only in the more recent versions
  341. of RSX-20F.  If you have an older version of RSX-20F, you'll get
  342. an 11-HALT (ILF or some such) when you try to use function
  343. 400004.  In that case, get a new version of RSX-20F from DEC.
  344.  
  345. @GET SYSTEM:MONITR
  346. @START 140
  347. *FFF/DTRPAT:CAIE T3,400003
  348. *DTRPAT+1/JRST DTRPAT+4
  349. *DTRPAT+2/CALL TTHNGU
  350. *DTRPAT+3/JRST RSKP
  351. *DTRPAT+4/CAIE T3,400004
  352. *DTRPAT+5/RET
  353. *DTRPAT+6/JSP CX,SAVT
  354. *DTRPAT+7/MOVE A,MSTRDT
  355. *DTRPAT+10/MOVS C,B
  356. *DTRPAT+11/SKIPA B,.+1
  357. *DTRPAT+12/15,,.FEDLS
  358. *DTRPAT+13/CALL FIXARG
  359. *DTRPAT+14/HLRZ D,C
  360. *DTRPAT+15/SETZ C,
  361. *DTRPAT+16/CALL DTEQI
  362. *DTRPAT+17/JRST RSKP
  363. *DTRPAT+20/FFF:
  364.  
  365. !  Now look at TTMTOP+7 (release 6.1) or TTMTO1+4 (release 5.1).  It
  366. ! jumps to a literal which has a MOVEI T1,MTOX1 followed by a RET.
  367. ! Patch the RET to JRST DTRPAT.  Then type CTRL/Z followed by
  368. ! SAVE SYSTEM:MONITR.EXE.
  369.  
  370. ------------------------------
  371.  
  372. Date: Thu 8 May 86 17:10:56-PDT
  373. From: Bob Larson <BLARSON%ECLD@USC-ECLC.ARPA>
  374. Subject: Problem with tops-20 kermit
  375.  
  376. Tops-20 does something very nasty when confronted with a file with the
  377. 36th bit (lsb) of a word set and a 7-bit data link (mark parity) and
  378. no 8th bit quoting: it sends a packet with a bad checksum.  [Tops-20
  379. kermit version 4.2(253)]  There seem to be two better ways out of this
  380. bad situation: Send an error packet, or just ignore the extra bit.  In
  381. my case the latter would be prefered.  (Apperently there is an obscure
  382. bug in mm, which is not noticed by most tops-20 programs.)
  383.  
  384. Bob Larson
  385.  
  386. ------------------------------
  387.  
  388. Date: Wed 3 Feb 88 18:35:32-PST
  389. From: Bruce Tanner <CERRITOS@ECLA.USC.EDU>
  390. Subject: TOPS-20 Kermit
  391. Keywords:
  392.  
  393. I've gotten the MS-DOS 2.30 .BOO files and decided to use the MSBPCT.C
  394. program using the Stanford KCC compiler.  The program ran fine unchanged.
  395. However, opening a file "wb" generates a 9-bit file (four nine-bit bytes
  396. per word).  OK, just use the "SET FILE SIZE AUTO" and let Kermit figure
  397. it out, right?  Wrong.  I had to teach it about 9 bit files also.
  398. So, here are the REDIT changes I've made to edit 262 (decimal 178):
  399.  
  400. 1. Recognize 9 bit files
  401. 2. Clean up the Moon: code (it kept giving me phase errors)
  402. 3. Make edit decimal (just remove the vi%dec at Version: if you don't like it)
  403.  
  404. REDIT 1(103) COMPARE by user CC.TANNER, 3-Feb-88 16:40:50
  405. File 1: PS:<CC.TANNER.WORK>KERMIT.COLUMBIA.1
  406. File 2: PS:<CC.TANNER.WORK>KERMIT.MAC.26
  407. ***** CHANGE #1; PAGE 1, LINE 4; PAGE 1, LINE 4
  408. $verno==^d4            ; Major version number.
  409. $mnver==^d2            ; Minor version number.
  410. $edno==^d178             ; Edit number increases independent of version.
  411. $who==^d0            ; Who edited, 0=Columbia.
  412. ;
  413.  ---------------------------------
  414. $verno==^d4            ; Major version number.
  415. $mnver==^d2            ; Minor version number.
  416. $edno==^d178             ; Edit number increases independent of version.
  417. $who==^d3            ; Who edited, 0=Columbia.
  418. ;
  419. ***** CHANGE #2; PAGE 14, LINE 6; PAGE 14, LINE 6
  420.  
  421.     subttl KERMIT Program entry, initialization, and exit.
  422.  
  423. kermit:    jrst start        ; Start entry.
  424.     jrst reen        ; Re-entry.
  425. versio:    byte (3)$who(9)$verno(6)$mnver(18)$edno    ; Program version.
  426. evlen==.-kermit
  427.  ---------------------------------
  428.  
  429.     subttl KERMIT Program entry, initialization, and exit.
  430.  
  431. kermit:    jrst start        ; Start entry.
  432.     jrst reen        ; Re-entry.
  433. versio:    byte (3)$who(9)$verno(6)$mnver(18)$edno+vi%dec    ;[BT] Program version.
  434. evlen==.-kermit
  435. ***** CHANGE #3; PAGE 76, LINE 46; PAGE 76, LINE 46
  436. ; file bytesize keyword table.
  437.  
  438. sfbtab:    %table
  439.     %key <7-bit>, 0
  440.     %key <8-bit>, 1
  441.     %key <auto>, 2
  442.     %key <eight-bit>, 1
  443.     %key <seven-bit>, 0
  444.  ---------------------------------
  445. ; file bytesize keyword table.
  446.  
  447. sfbtab:    %table
  448.     %key <7-bit>, 0
  449.     %key <8-bit>, 1
  450.     %key <9-bit>, 3        ;[BT]
  451.     %key <auto>, 2
  452.     %key <eight-bit>, 1
  453.     %key <nine-bit>, 3    ;[BT]
  454.     %key <seven-bit>, 0
  455. ***** CHANGE #4; PAGE 110, LINE 19; PAGE 110, LINE 19
  456.         ret ]
  457.     hrrz t3, versio        ; edit
  458.     skipe t3
  459.      call [    movei t1, "("
  460.         PBOUT
  461.         numout t3, 8
  462.         movei t1, ")"
  463.  ---------------------------------
  464.         ret ]
  465.     hrrz t3, versio        ; edit
  466.     skipe t3
  467.      call [    movei t1, "("
  468.         PBOUT
  469.         trzn t3,vi%dec    ;[BT] Decimal?
  470.          jrst $shv3    ;[BT] No, skip
  471.         numout t3, ^d10 ;[BT] Yes
  472.         skipa        ;[BT]
  473.     $shv3:    numout t3, 8
  474.         movei t1, ")"
  475. ***** CHANGE #5; PAGE 113, LINE 8; PAGE 113, LINE 8
  476.  
  477. $shfil:    tmsg <Byte size for file I/O:  >
  478.     hrroi t1, [ASCIZ/"Auto"/]
  479.     skipn autbyt
  480.      jrst [    hrroi t1, [asciz/Seven-Bit/]
  481.         skipe ebtflg
  482.          hrroi t1, [asciz/Eight-Bit/]
  483.         jrst .+1 ]
  484.  ---------------------------------
  485.  
  486. $shfil:    tmsg <Byte size for file I/O:  >
  487.     hrroi t1, [ASCIZ/"Auto"/]
  488.     skipn autbyt
  489.      jrst [    hrroi t1, [asciz/Seven-Bit/]
  490.         move t2,ebtflg            ;[BT]
  491.         cain t2,1            ;[BT]
  492.          hrroi t1, [asciz/Eight-Bit/]
  493.         cain t2,3            ;[BT]
  494.          hrroi t1, [asciz/Nine-Bit/]    ;[BT]
  495.         jrst .+1 ]
  496. ***** CHANGE #6; PAGE 161, LINE 8; PAGE 161, LINE 8
  497.  
  498. ;[66] If outputting to a file, set up the mapping page pointers.
  499.  
  500. rfil3b:    skiple filjfn        ;[66] JFN on a file?
  501.      jrst [    move t1, [point 7, mappag*1000]    ;[66] Yes, point to page.
  502.         skipe ebtflg        ;[66] Eight bit mode?
  503.          hrli t1, (point 8,)    ;[66] Then use 8-bit bytes.
  504.         movem t1, pagptr    ;[66] Save it here.
  505.  ---------------------------------
  506.  
  507. ;[66] If outputting to a file, set up the mapping page pointers.
  508.  
  509. rfil3b:    skiple filjfn        ;[66] JFN on a file?
  510.      jrst [    move t1, [point 7, mappag*1000]    ;[66] Yes, point to page.
  511.         move t2,ebtflg        ;[BT] Get file byte size
  512.         cain t2, 1        ;[BT] Eight bit?
  513.          hrli t1, (point 8,)    ;[66] Then use 8-bit bytes.
  514.         cain t2, 3        ;[BT] Nine bit?
  515.          hrli t1, (point 9,)    ;[BT] Then use 9-bit bytes.
  516.         movem t1, pagptr    ;[66] Save it here.
  517. ***** CHANGE #7; PAGE 161, LINE 18; PAGE 161, LINE 21
  518.         jrst .+1 ]
  519.  
  520. ; If running locally, echo filename to screen.
  521.  
  522.     movei t1, 7        ;[66] Remember file byte size for reporting.
  523.     skipe ebtflg        ;[66] (this may be revised later because
  524.      movei t1, 8        ;[66]  of ITS binary headers or similar...)
  525.     movem t1, bytsiz    ;[66]
  526.  ---------------------------------
  527.         jrst .+1 ]
  528.  
  529. ; If running locally, echo filename to screen.
  530.  
  531.     movei t1, 7        ;[66] Remember file byte size for reporting.
  532.     move t2,ebtflg        ;[BT] (this may be revised later because
  533.     cain t2, 1        ;[BT]
  534.      movei t1, 8        ;[66]  of ITS binary headers or similar...)
  535.     cain t2, 3        ;[BT]
  536.      movei t1, 9        ;[BT]
  537.     movem t1, bytsiz    ;[66]
  538. ***** CHANGE #8; PAGE 168, LINE 31; PAGE 168, LINE 31
  539.  
  540. rdclsb:    hrli t1, .fbbyv        ; Set the byte size.
  541.     hrr t1, filjfn
  542.     movx t2, fb%bsz        ; Byte size field mask.
  543.     movx t3, fld(7,fb%bsz)    ; Value
  544.     skipn itsfil        ;[75] ITS binary file?
  545.      skipe ebtflg        ; Or eight-bit mode?
  546.      movx t3, fld(8,fb%bsz)    ; Set it that way, then.
  547.  ---------------------------------
  548.  
  549. rdclsb:    hrli t1, .fbbyv        ; Set the byte size.
  550.     hrr t1, filjfn
  551.     movx t2, fb%bsz        ; Byte size field mask.
  552.     movx t3, fld(7,fb%bsz)    ; Value
  553.     move t4, ebtflg        ;[BT] Get bytesize
  554.     cain t4, 1        ;[BT] If 8 bit
  555.      movx t3, fld(8,fb%bsz)    ;[BT] set it
  556.     cain t4, 3        ;[BT] If 9 bit
  557.      movx t3, fld(9,fb%bsz)    ;[BT] set it
  558.     skipe itsfil        ;[75] ITS binary file?
  559.      movx t3, fld(8,fb%bsz)    ; Set it that way, then.
  560. ***** CHANGE #9; PAGE 195, LINE 33; PAGE 195, LINE 33
  561.         NOUT
  562.          nop
  563.         movei t2, 40    ; A space
  564.         BOUT
  565.         movei t2, 7    ; Bytesize
  566.         skipe ebtflg
  567.          aos t2
  568.         NOUT
  569.  ---------------------------------
  570.         NOUT
  571.          nop
  572.         movei t2, 40    ; A space
  573.         BOUT
  574.         movei t2, 7    ; Bytesize
  575.         move t4, ebtflg
  576.         cain t4, 1    ;[BT]
  577.          aos t2
  578.         cain t4,3    ;[BT]
  579.          addi t2, 2    ;[BT]
  580.         NOUT
  581. ***** CHANGE #10; PAGE 201, LINE 42; PAGE 201, LINE 42
  582.      jrst getcha        ;[75] Yes, then skip "autobyte" stuff.
  583.  
  584. ; Next, if doing "autobyte", use the file byte size.
  585.  
  586.     skipe autbyt        ;[81] Are we using autobyte?
  587.      jrst [    setzm ebtflg    ; Yes, assume seven-bit bytes.
  588.         cain t2, ^d8    ; Really 8-bit?
  589.          setom ebtflg    ;  Yes, act like user requested 8-bit.
  590.         jrst .+1 ]
  591.  ---------------------------------
  592.      jrst getcha        ;[75] Yes, then skip "autobyte" stuff.
  593.  
  594. ; Next, if doing "autobyte", use the file byte size.
  595.  
  596.     skipe autbyt        ;[81] Are we using autobyte?
  597.      jrst [    setz t3,    ;[BT] Yes, assume seven-bit bytes.
  598.         cain t2, ^d8    ; Really 8-bit?
  599.          movei t3, 1    ;[Bt] Yes, act like user requested 8-bit.
  600.         cain t2, ^d9    ;[BT] 9-bit?
  601.          movei t3, 3    ;[BT] Yes
  602.         movem t3, ebtflg ;[BT]
  603.         jrst .+1 ]
  604. ***** CHANGE #11; PAGE 201, LINE 52; PAGE 201, LINE 55
  605.  
  606. ; Now, if we're to do 8-bit input, convert the byte count if necessary.
  607.  
  608. getcha:    skipn itsfil        ; ITS binary file?
  609.      skipe ebtflg        ; Or eight bit mode?
  610.      jrst [    cain t2, ^d8    ; Yes, is the byte size 8?
  611.           jrst getchb    ;[170] If so go adjust byte count if necessary.
  612.  ---------------------------------
  613.  
  614. ; Now, if we're to do 8-bit input, convert the byte count if necessary.
  615.  
  616. getcha:    skipn itsfil        ; ITS binary file?
  617.      skipe ebtflg        ; Or eight bit mode?
  618.      jrst [    caie t2, ^d9    ;[BT] 9-bit?
  619.         cain t2, ^d8    ; Yes, is the byte size 8?
  620.           jrst getchb    ;[170] If so go adjust byte count if necessary.
  621. ***** CHANGE #12; PAGE 202, LINE 8; PAGE 202, LINE 8
  622.  
  623. ; Or, if we're to do 7-bit input, fix the byte count for that.
  624.  
  625.     caie t2, 7        ; If the bytesize is not 7 or 8, treat as 7.
  626.      cain t2, ^d8        ;[170] (don't do this to 8-bit files!
  627.      skipa            ;[170]  ...)
  628.      jrst [    movei t3, ^d36    ; Must convert, get the size of a word.
  629.         idiv t3, t2    ; Divide by the byte size.
  630.         move q1, bytcnt    ; Get the number of bytes in file.
  631.         idiv q1, t3    ; Divide by the bytes/word to get words.
  632.         imuli q1, 5    ; Multiply by 5 (as if 7bit bytes).
  633.         movem q1, bytcnt ; Save the new byte count.
  634.         jrst getch2 ]    ; Go map in page.
  635.  
  636.  ---------------------------------
  637.  
  638. ; Or, if we're to do 7-bit input, fix the byte count for that.
  639.  
  640.     caie t2, 7        ; If the bytesize is not 7 or 8, treat as 7.
  641.      cain t2, ^d8        ;[170] (don't do this to 8-bit files!
  642.      jrst getchb        ;[170]  ...)
  643.     caie t2, ^d9        ;[BT] Don't touch 9-bit
  644.      jrst getchb        ;[BT]
  645.     movei t3, ^d36        ; Must convert, get the size of a word.
  646.     idiv t3, t2        ; Divide by the byte size.
  647.     move q1, bytcnt        ; Get the number of bytes in file.
  648.     idiv q1, t3        ; Divide by the bytes/word to get words.
  649.     imuli q1, 5        ; Multiply by 5 (as if 7bit bytes).
  650.     movem q1, bytcnt    ; Save the new byte count.
  651.     jrst getch2        ; Go map in page.
  652.  
  653. ***** CHANGE #13; PAGE 205, LINE 16; PAGE 205, LINE 16
  654. mapi:    movx t2, <.fhslf,,mappag> ; Form our fork,,mapping page
  655.     movx t3, pm%rd        ; Just want to read it.
  656.     PMAP%            ; Map it in.
  657.      %jsker <Can't map in file page>,r ;  Error, fail.
  658.     move t3, [point 7, mappag*1000]    ; Success, get a pointer to the page.
  659.     skipn itsfil        ;[75] An ITS binary file?
  660.      skipe ebtflg        ; Or eight bit access?
  661.      hrli t3, (point 8,)    ; Yes, then use 8-bit pointer.
  662.  ---------------------------------
  663. mapi:    movx t2, <.fhslf,,mappag> ; Form our fork,,mapping page
  664.     movx t3, pm%rd        ; Just want to read it.
  665.     PMAP%            ; Map it in.
  666.      %jsker <Can't map in file page>,r ;  Error, fail.
  667.     move t3, [point 7, mappag*1000]    ; Success, get a pointer to the page.
  668.     move t4, ebtflg        ;[BT]
  669.     cain t4, 1        ;[BT] 8-bit?
  670.      hrli t3, (point 8,)    ; Yes, then use 8-bit pointer.
  671.     cain t4, 3        ;[BT] 9-bit?
  672.      hrli t3, (point 9,)    ;[BT]
  673.     skipe itsfil        ;[75] An ITS binary file?
  674.      hrli t3, (point 8,)    ; Yes, then use 8-bit pointer.
  675. ***** CHANGE #14; PAGE 209, LINE 40; PAGE 209, LINE 40
  676.     aos pagno        ; Advance the file page number.
  677.  
  678. ; Rewind the memory page back to word 0.
  679.  
  680. putch4:    move t1, [point 7, mappag*1000]    ; Success, make a pointer
  681.     skipn itsfil        ;[75]
  682.      skipe ebtflg        ; of the appropriate
  683.      hrli t1, (point 8,)    ; byte size.
  684.     movem t1, pagptr    ; Store it.
  685.  ---------------------------------
  686.     aos pagno        ; Advance the file page number.
  687.  
  688. ; Rewind the memory page back to word 0.
  689.  
  690. putch4:    move t1, [point 7, mappag*1000]    ; Success, make a pointer
  691.     move t4, ebtflg        ;[BT]
  692.     cain t4, 1        ;[BT] 8-bit?
  693.      hrli t1, (point 8,)
  694.     cain t4, 3        ;[BT] 9-bit?
  695.      hrli t1, (point 9,)    ;[BT]
  696.     skipe itsfil        ;[75]
  697.      hrli t1, (point 8,)    ;[BT]
  698.     movem t1, pagptr    ; Store it.
  699. ***** CHANGE #15; PAGE 267, LINE 25; PAGE 267, LINE 25
  700.     tmsg <, file bytesize >    ; File bytesize
  701.     numout bytsiz
  702.     skipl rcving        ; I/O bytesize, only if sending
  703.      jrst [    tmsg <, i/o bytesize >
  704.         movei t2, 7
  705.         skipn itsfil    ;[75]
  706.          skipe ebtflg
  707.          movei t2, 8
  708.         numout t2
  709.  ---------------------------------
  710.     tmsg <, file bytesize >    ; File bytesize
  711.     numout bytsiz
  712.     skipl rcving        ; I/O bytesize, only if sending
  713.      jrst [    tmsg <, i/o bytesize >
  714.         movei t2, 7
  715.         move t3, ebtflg    ;[BT]
  716.         cain t3, 1    ;[BT]
  717.          movei t2, ^d8
  718.         cain t3, 3    ;[BT]
  719.          movei t2, ^d9    ;[BT]
  720.         skipe itsfil    ;[75]
  721.          movei t2, ^d8    ;[BT]
  722.         numout t2
  723. ***** CHANGE #16; PAGE 271, LINE 4; PAGE 271, LINE 4
  724.     retskp            ; And return, with success.
  725.  
  726. ;[6] (this whole routine, just for fun...)
  727.  
  728. moon:    saveac <5,6>
  729.  
  730. ; This code stolen from MOON.MAC (anybody know who wrote it?).
  731. ; Just changed OUTCHR's to PBOUT%'s via a macro.  - Frank.
  732. ;
  733.     setzb 3,4
  734.     seto 2,
  735.     ODCNV%
  736.      erjmp r
  737.     tlz 4,77
  738.     IDCNV%
  739.  ---------------------------------
  740.     retskp            ; And return, with success.
  741.  
  742. ;[6] (this whole routine, just for fun...)
  743.  
  744. moon:    saveac <q1,q2>
  745.  
  746. ; This code stolen from MOON.MAC (anybody know who wrote it?).
  747. ; Just changed OUTCHR's to PBOUT%'s via a macro.  - Frank.
  748. ;
  749.     setzb t3,t4
  750.     seto t2,
  751.     ODCNV%
  752.      erjmp r
  753.     tlz t4,77
  754.     IDCNV%
  755. ***** CHANGE #17; PAGE 271, LINE 21; PAGE 271, LINE 21
  756.      erjmp r        ; Return upon any error.
  757.     tmsg <, Moon: >        ; OK so far, say what we're doing.
  758.  
  759. ; AC2= Universal time adjusted for time zone.
  760.  
  761.     move 1,2        ; Right place.
  762.     sub 1,newmn        ; Sub off base new moon
  763.     idiv 1,period        ; Divide by the period
  764.     idiv 2,perio4        ; Get fractions of a period
  765.     camg 3,perio8        ; Check for pahse + or -
  766.      jrst moon1        ; Not more than 3+ days
  767.  
  768.     sub 3,perio4        ; Make it next phase -n days
  769.     cain 2,3        ; Is it LQ+3D+?
  770.      tdza 2,2        ; It is
  771.      aoj 2,            ; Increment phase
  772.  
  773. moon1:    hllz 1,table(2)        ; Get SIXBIT phase
  774.     skipge 3        ; 3 < 0 then minus phase output
  775.      tloa 1,'-'        ; -
  776.      tloa 1,'+'        ; +
  777.      movms 3        ; Fix mag of 3
  778.     move 2,[point 6,1]    ; Byte pointer
  779.     movei 5,2        ; Loop 3 times
  780.  
  781. moon2:    ildb 4,2        ; Get a character
  782.     addi 4," "        ; Make ASCII
  783.     OUTCHR 4        ; Type it
  784.     sojge 5,moon2        ; Loop
  785.  
  786.     movsi 4,-4        ; Make aobjn pointer
  787.     ;...
  788.  
  789. moon3:    hrrz 2,table(4)        ; Get a multiplier
  790.     trz 2,774000        ; Strip off ascii character
  791.     imuli 3,(2)        ; Get the value decoded
  792.     hlrz 1,3        ; Get value
  793.     tlz 3,-1        ; Zap old LH
  794.     move 5,1        ; Use 5 & 6 here
  795.     idivi 5,12        ; Radix 10
  796.     addi 5,60        ; Make ASCII
  797.     caile 5,60        ; Check for leading zero
  798.      OUTCHR 5        ;  Type it.
  799.     addi 6,60        ; Make ASCII
  800.     OUTCHR 6
  801.     ldb 5,[point 7,table(4),24] ; Get d/h/m/s
  802.     OUTCHR 5        ; Type it.
  803.     OUTCHR ["."]        ; Follow with a dot.
  804.     aobjn 4,moon3        ; Loop.
  805.  
  806.  ---------------------------------
  807.      erjmp r        ; Return upon any error.
  808.     tmsg <, Moon: >        ; OK so far, say what we're doing.
  809.  
  810. ; AC2= Universal time adjusted for time zone.
  811.  
  812.     move t1,t2        ; Right place.
  813.     sub t1,newmn        ; Sub off base new moon
  814.     idiv t1,period        ; Divide by the period
  815.     idiv t2,perio4        ; Get fractions of a period
  816.     camg t3,perio8        ; Check for pahse + or -
  817.      jrst moon1        ; Not more than 3+ days
  818.  
  819.     sub t3,perio4        ; Make it next phase -n days
  820.     cain t2,3        ; Is it LQ+3D+?
  821.      tdza t2,t2        ; It is
  822.      aoj t2,        ; Increment phase
  823.  
  824. moon1:    hllz t1,mtable(t2)    ; Get SIXBIT phase
  825.     skipge t3        ; 3 < 0 then minus phase output
  826.      tloa t1,'-'        ; -
  827.      tloa t1,'+'        ; +
  828.      movms t3        ; Fix mag of t3
  829.     move t2,[point q2,t1]    ; Byte pointer
  830.     movei q1,2        ; Loop 3 times
  831.  
  832. moon2:    ildb t4,t2        ; Get a character
  833.     addi t4," "        ; Make ASCII
  834.     OUTCHR t4        ; Type it
  835.     sojge q1,moon2        ; Loop
  836.  
  837.     movsi t4,-4        ; Make aobjn pointer
  838.     ;...
  839.  
  840. moon3:    hrrz t2,mtable(t4)    ; Get a multiplier
  841.     trz t2,774000        ; Strip off ascii character
  842.     imuli t3,(t2)        ; Get the value decoded
  843.     hlrz t1,t3        ; Get value
  844.     tlz t3,-1        ; Zap old LH
  845.     move q1,t1        ; Use q1 & q2 here
  846.     idivi q1,12        ; Radix 10
  847.     addi q1,60        ; Make ASCII
  848.     caile q1,60        ; Check for leading zero
  849.      OUTCHR q1        ;  Type it.
  850.     addi q2,60        ; Make ASCII
  851.     OUTCHR q2
  852.     ldb q1,[point 7,mtable(t4),24] ; Get d/h/m/s
  853.     OUTCHR q1        ; Type it.
  854.     OUTCHR ["."]        ; Follow with a dot.
  855.     aobjn t4,moon3        ; Loop.
  856.  
  857. ***** CHANGE #18; PAGE 273, LINE 13; PAGE 273, LINE 13
  858. per==35,,422752            ; 29d.12h.53m.19s
  859. period:    per
  860. perio4:    per/4
  861. perio8:    per/10
  862.  
  863. table:    byte(18)'NM '(7)"d"(11)^D1 ; New moon - days - 1
  864.     byte(18)'FQ '(7)"h"(11)^D24 ; First quarter - hours - 24
  865.  ---------------------------------
  866. per==35,,422752            ; 29d.12h.53m.19s
  867. period:    per
  868. perio4:    per/4
  869. perio8:    per/10
  870.  
  871. mtable:    byte(18)'NM '(7)"d"(11)^D1 ; New moon - days - 1
  872.     byte(18)'FQ '(7)"h"(11)^D24 ; First quarter - hours - 24
  873.  
  874. ------------------------------
  875.  
  876. Date: Wed, 17 Feb 1988  23:03 MST
  877. From: "Frank J. Wancho" <WANCHO@SIMTEL20.ARPA>
  878. Subject: Using TOPS-20 Kermit with 9-Bit Files
  879.  
  880. The KCC DEC-20 C compiler defaults to 9-bit files when you create a file
  881. with "wb" for its own reasons - the internal character types are 9-bit, and
  882. four 9-bit quantities on a read will properly pick up all 36 bits in a
  883. PDP-10 word.  However, all you have to do is change the "wb" in the open to
  884. "w8" and you will get the expected behavior, i.e. 8-bit files which DEC-20
  885. Kermit can recognize automatically.
  886.  
  887. ------------------------------
  888.  
  889.  7-Jun-88 22:50:12-EDT,2542;000000000011
  890. Return-Path: <BEEBE@SCIENCE.UTAH.EDU>
  891. Received: from SCIENCE.UTAH.EDU by CU20B.CC.COLUMBIA.EDU with TCP; Tue 7 Jun 88 22:50:05-EDT
  892. Date: Tue 7 Jun 88 20:48:57-MDT
  893. From: "Nelson H.F. Beebe" <Beebe@SCIENCE.UTAH.EDU>
  894. Subject: Bug in Kermit-20
  895. To: sy.fdc@CU20B.COLUMBIA.EDU
  896. cc: BEEBE@SCIENCE.UTAH.EDU
  897. X-US-Mail: "Center for Scientific Computing, South Physics, University of Utah, Salt Lake City, UT 84112"
  898. X-Telephone: (801) 581-5254
  899. Message-ID: <12404684836.20.BEEBE@SCIENCE.UTAH.EDU>
  900.  
  901. We are running NFS-20 here on our 20/60, giving our Suns
  902. access to the -20 file system, plus good things like
  903. archiving, undelete, expunge, and multiple generations.
  904.  
  905. Sun's Network File system (NFS) is odd in that it does not
  906. conform to the age-old open--process--close model of I/O,
  907. but instead simply has a lookup (==> create if necessary)
  908. operation, plus read/write.
  909.  
  910. As a consequence of this, the NFS-20 server never is told
  911. when the Sun NFS client is done with the file, so it never
  912. can officially close the file.  Thus, we end up with NFS-20
  913. files which have 0 page count, and non-zero byte count, with
  914. the latter to be believed.  A periodic CHFDB% to set the
  915. page count is expensive, and also leads to funny things like
  916. INFORMATION (about) DISK reporting negative pages-in-user
  917. counts.
  918.  
  919. If the file is copied with the -20 COPY command, the page
  920. count then gets set to a correct non-zero value.  Otherwise,
  921. NFS-20, and most -20 programs that use SIN%/SOUT% or
  922. BIN%/BOUT% instead of PMAP%, are perfectly happy to deal
  923. with the file.  I had to fix Chris Maio's -20 implementation
  924. of Unix tar to do the page mapping correctly in the effect
  925. in a zero page count and non-zero byte count.
  926.  
  927. Tonight, I discovered that Kermit-20 has a similar
  928. deficiency -- a transfer of such a (8-bit) file sent exactly
  929. 2048 bytes, implying that one page was read, even though
  930. more bytes were available.  This is a double error -- (1)
  931. the byte count was not used, and (2) using the page count
  932. with a test at the end of a loop, instead at the beginning,
  933. would explain the transfer of 1 page instead of 0 page.
  934.  
  935. I don't expect you to fix this, because I know we all would
  936. like to put -20 MACRO programming to rest and switch to C.
  937. Just thought I'd let you know, though, for historical
  938. purposes.  I expect our -20 will be around a couple of years
  939. yet, but eventually, we too will have to bid it a fond
  940. farewell.
  941.  
  942. I'm off on a 2-month trip to Europe and India on Thursday,
  943. so you won't hear from me until I get back.
  944. -------
  945.  8-Jun-88 09:17:29-EDT,871;000000000001
  946. Mail-From: SY.FDC created at  8-Jun-88 09:17:23
  947. Date: Wed 8 Jun 88 09:17:23-EDT
  948. From: Frank da Cruz <SY.FDC@CU20B.CC.COLUMBIA.EDU>
  949. Subject: Re: Bug in Kermit-20
  950. To: Beebe@SCIENCE.UTAH.EDU
  951. In-Reply-To: <12404684836.20.BEEBE@SCIENCE.UTAH.EDU>
  952. Message-ID: <12404799240.28.SY.FDC@CU20B.CC.COLUMBIA.EDU>
  953.  
  954. You're right.  The fix would be in the routine GETCH, which already reads the
  955. byte count and adjusts it if necessary for various reasons.  After doing that
  956. it, it should calculate the number of pages based on the byte count (bytcnt)
  957. and byte size (bytsiz), rounded up to the next whole number, and store it in
  958. pagcnt.  Of course, this assumes that the FDB's byte count is more reliable
  959. than its page count, in all cases (which might not always be true).  I'll add
  960. your message and this reply to the "beware file".  Thanks for the report.
  961. - Frank
  962. -------
  963.