Kermit-20 Version 4.2(260) Dec 1987, Known Bugs, Problems, Limitations. 11-Dec-87 15:34:23-EST,1003;000000000001 Date: Fri 11 Dec 87 15:34:19-EST From: Frank da Cruz Subject: New Release of DEC-20 Kermit To: sy.christine@CU20B.COLUMBIA.EDU I never thought I'd touch this program again, but it contained a thoughtless restriction, namely that it wouldn't let you issue commands to servers unless you were in local mode (e.g. after dialing out through another line). This prevented you from putting a bunch of commands (multiple SENDs and/or GETs, followed by FINISH) into a TAKE file, TAKing the file, escaping back to the PC and putting it in server mode. The new release, 4.2(260), removes this restriction so long as the commands (like GET, FINISH, BYE) are issued from TAKE files. The old problem of inferior process capabilities not getting set right, e.g. after a PUSH command, is also fixed. The new version is in KER:K20MIT.MAC on CU20B. - Frank Jan 88 - the above change introduced a new problem: If you issue commands to a server (like GET, FINISH, etc) while in remote mode, the TTY is not put in binary mode first, so it still has parity, echo, etc. This should be easy to fix... Kermit-20 Version 4.2(256) May 1985, Known Bugs, Problems, Limitations. As of: 12:42pm Tuesday, 23 July 1985 . Needs copyright notice. . Server does not perform REMOTE HOST commands. . File Attribute packets are not yet supported. . Server, running in batch, should not give "?KERMIT-20: File not found" message, which shuts down the batch job; use "%" messages instead. . REMOTE SPACE command should accept a device/directory argument. . RUN command should accept an optional command line argument. . REMOTE WHO missing. . Should allow "remapping" bytesize of incoming files based on whether first page has any 8th bits set, to allow transparent uploading of 8-bit binary data when "auto" set. . During CONNECT, should clear output buffer (CFOBF) before sending BREAK. . If monitor version 6.0 or greater, then line speed is reported correctly by MTOPR, even for remote lines -- should allow for this. . If you do "get NUL:" to a Kermit-20 server, it sends an empty F packet. . Code to delete trailing "." in outbound F packet seems to fail sometimes. . Reported (not verified) that SET FLOW doesn't turn XON/XOFF on/off on an assigned TTY line (or maybe it's page mode). . Should handle ^C during packets more intelligently? . Reported (not verified) that ^A for status report during FT in local mode sometimes gets lost. Scenario: 1. SET LINE x; 2. Start FT, but with no Kermit on other side; 3. ^C back to command level; 4. Connect. ^A still being trapped. . Recover from receiving a null F packet, instead of looping with "SPACK: illegal message length" messages forever (have to look into this a little more deeply; should never get a null F packet anyway...) . Capabilities word not set correctly for inferior forks in RUN or PUSH if CONNECT not done first (CAPAS word set only in TTYINI, which is called only for CONNECT) (reported by Jeff Jones at ORNL, not yet verified). . TAC support: Date: 10 Apr 1985 22:17 MST (Wed) From: "Frank J. Wancho" To: SY.FDC@CU20B Subject: Changes to 20KERMIT.MAC Frank, The following are the changes I made to 20KERMIT.MAC.255 to add support for a MONITR that doubles IACs and has new MTOPR% calls to negotiate network binary mode. Such support is in MRC's PANDA MONITR which we are running now, and the MTOPR% codes are of MRC's making, not yet DEC's. I have made similar changes in MODEM available in the usual place here (MICRO:). --Frank -------------------- REDIT 1(103) COMPARE by user WANCHO, 10-Apr-85 22:07:04 File 1: PS:KERMIT.MAC.255 File 2: PS:KERMIT.MAC.256 ***** CHANGE #1; PAGE 1, LINE 3; PAGE 1, LINE 3 $verno==^d4 ; Major version number. $mnver==^d2 ; Minor version number. $edno==^d173 ; Edit number increases independent of version. $who==^d0 ; Who edited, 0=Columbia. ; ;PS:KERMIT.MAC.1028, 11-Dec-84 19:00:29, Frank (SY.FDC@CU20B)  --------------------------------- $verno==^d4 ; Major version number. $mnver==^d2 ; Minor version number. $edno==^d174 ; Edit number increases independent of version. $who==^d0 ; Who edited, 0=Columbia. ; ;[SIMTEL20.ARPA]PS:20KERMIT.MAC.256, 9-Apr-85 12:44:11, Edit by WANCHO ; added PANDASW conditionals to handle network binary mode negotiations ;PS:KERMIT.MAC.1028, 11-Dec-84 19:00:29, Frank (SY.FDC@CU20B)  ***** CHANGE #2; PAGE 219, LINE 13; PAGE 219, LINE 13 ; Returns +1 always, but prints warning on failure. ; doarpa: skipn tvtflg ; Are we on tvt? ret move t1,netjfn ; Yes, talk binary.  --------------------------------- ; Returns +1 always, but prints warning on failure. ; doarpa: skipn tvtflg ; Are we on tvt? ret IFE PANDASW,< move t1,netjfn ; Yes, talk binary.  ***** CHANGE #3; PAGE 219, LINE 27; PAGE 219, LINE 28 SOUT% %jserr(,doarpx) movei t1,^d4000 DISMS ret  --------------------------------- SOUT% %jserr(,doarpx) movei t1,^d4000 DISMS ret >;IFE PANDASW IFN PANDASW,< MOVX t1,.CTTRM ; read present local status MOVX t2,.MORLT MTOPR% ; ERJMP NIM ; not a Panda monitor MOVEM t3,OLDLTS ; save old terminal status TXO t3,MO%NBI!MO%NBO ; want network binary mode MOVX t2,.MOSLT ; want to set it MTOPR% ; ERJMP FATAL MOVX B,.MORLT ; now see what actually happened MTOPR% ; ERJMP FATAL TXC C,MO%NBI!MO%NBO ; make mask ones if either bit zero IFXN. C,MO%NBI!MO%NBO jrst doarpx ENDIF. >;IFN PANDASW  ***** CHANGE #4; PAGE 222, LINE 7; PAGE 222, LINE 7 ; Turn off Arpanet TAC binary mode. unarpa: skipn tvtflg ; Are we on a tvt? ret ; No, skip this. dmove t2, [exp ,-3]  --------------------------------- ; Turn off Arpanet TAC binary mode. unarpa: skipn tvtflg ; Are we on a tvt? ret ; No, skip this. IFE PANDASW,< dmove t2, [exp ,-3]  ***** CHANGE #5; PAGE 222, LINE 20; PAGE 222, LINE 21 SOUT% %jserr(,unarpx) movei t1, ^d4000 ; Wait another 4 secs. DISMS% ret ; Done.  --------------------------------- SOUT% %jserr(,unarpx) movei t1, ^d4000 ; Wait another 4 secs. DISMS% ret ; Done. >; IFE PANDASW IFN PANDASW,< MOVX t1,.CTTRM ; restore modes MOVX t2,.MOSLT MOVE t3,OLDLTS ; get former status MTOPR% ; ERJMP FATAL >; IFN PANDASW  ***** CHANGE #6; PAGE 229, LINE 8; PAGE 229, LINE 8 ;[131] If ARPANET TVT then must double any hex FF's (TELNET IAC). ; Note, since IAC is DEL with parity bit on, we should never see one, right? ; spack6: move t2, [point 8, sndpkt] ; The address of the packet. skipn tvtflg ; TVT-Binary mode?  --------------------------------- ;[131] If ARPANET TVT then must double any hex FF's (TELNET IAC). ; Note, since IAC is DEL with parity bit on, we should never see one, right? ; spack6: move t2, [point 8, sndpkt] ; The address of the packet. IFN PANDASW,< jrst spak6x >; IFN PANDASW skipn tvtflg ; TVT-Binary mode?  ***** CHANGE #7; PAGE 276, LINE 22; PAGE 276, LINE 22 flow: 1 ;[143] Flow-Control (nonzero = XON/XOFF) itsflg: defits ;[75] Flag for handling ITS-binary format files itsfil: 0 ;[75] Flag for this file is ITS format. itscnt: 0 ;[75] Counter for ITS header chars matched. tvtflg: 0 ;[129] Negotiate binary mode on ARPANET TVT. incase: defics ;[160] Case conversion flag for INPUT search.  --------------------------------- flow: 1 ;[143] Flow-Control (nonzero = XON/XOFF) itsflg: defits ;[75] Flag for handling ITS-binary format files itsfil: 0 ;[75] Flag for this file is ITS format. itscnt: 0 ;[75] Counter for ITS header chars matched. tvtflg: 0 ;[129] Negotiate binary mode on ARPANET TVT. oldlts: 0 incase: defics ;[160] Case conversion flag for INPUT search. 13-Nov-85 19:43:32-EST,734;000000000011 Return-Path: Received: from USC-ECLC.ARPA by CU20B.COLUMBIA.EDU with TCP; Wed 13 Nov 85 19:43:30-EST Date: Wed 13 Nov 85 15:51:29-PST From: John M. Relph Subject: Tops-20 Kermit V175 To: SY.FDC@CU20B.COLUMBIA.EDU Message-ID: <12159023603.35.RELPH@USC-ECLC.ARPA> Frank, I had a problem with kermit on our Tops-20 where users could ^C out of connect mode because they had ^C privilege but hadn't enabled it. I fixed this with the patch below, which enables the ^C priv. This patch goes in after the RPCAP% at TTYINI+1. txne t2,sc%ctc ;[176] can they ^C trap? call [txo t3,sc%ctc ;[176] yes, so let's EPCAP% ret] ;[176] end edit Thanks, -- John ------- 11-Mar-86 19:39:16-EST,947;000000000001 Mail-From: SY.FDC created at 11-Mar-86 19:39:15 Date: Tue 11 Mar 86 19:39:14-EST From: Frank da Cruz Subject: TOPS-20 LAT Service To: TOPS20@SU-SCORE.ARPA Message-ID: <12189965286.29.SY.FDC@CU20B.COLUMBIA.EDU> TOPS-20 LAT service apparently does not allow 8-bit transparent terminal i/o. Binary files cannot be sent to DEC-20 Kermit through a LAT box (DECserver 100) unless you give SET PARITY commands to Kermit to force it to use 8th-bit prefixing. The same binary files can be sent to DEC-20 Kermit through a regular terminal port without having to use 8th-bit prefixing. In other words, all the SFCOC's, MTOPR's, SFMOD's, STPAR's, and STIW's you must do to make the terminal transparent just don't work for a LAT terminal. By contrast, Ultrix LAT service does not pose this problem -- opening a LAT terminal in raw mode in Ultrix works just like opening a regular terminal in raw mode. ------- 13-Mar-86 14:40:58-EST,2080;000000000001 Mail-From: SY.FDC created at 13-Mar-86 14:40:53 Date: Thu 13 Mar 86 14:40:53-EST From: Frank da Cruz Subject: TOPS-20 LAT service vs Kermit, cont'd To: TOPS-20@SU-SCORE.ARPA Message-ID: <12190435261.12.SY.FDC@CU20B.COLUMBIA.EDU> Disregard last message... Turns out that, unbeknownst to me, the behavior reported previously occurred from a PC that was connected by LAT to a VAX Ultrix system that was TELNET'd to a DEC-20 via TCP/IP over Ethernet, and it was TELNET stripping the high order bit, not LAT. However, there is still a problem with DEC-20 LAT service. The symptom is that you can't transfer files of any kind into a DEC-20 through LAT using Kermit or Modem or any similar protocol. You can, however, transfer files from the DEC-20 to the PC with no problem. Logging of a file transfer reveals that a typical Kermit data packet (80-90 characters) is truncated by the LAT box to 30-40 characters. If you reduce the Kermit packet size to, say, 37, then everything works, even binary files without 8th-bit prefixing. The mystery is that everything works fine when the host is a VAX Ultrix system rather than a DEC-20. Therefore, the LAT box itself is not at fault; the culprit must the TOPS-20 LAT service. In fact, the LAT specification says LAT_MIN_RECV_SLOT_SIZE should be in the range 1-255, and 127 is recommended. The TOPS-20 6.1 monitor's LATSRV module, however, sets the corresponding symbol MXSLSI to 40 (decimal). We haven't tried changing the monitor to increase this number, and are not sure what the consequences would be. For now, those who want to use Kermit to send files to a DEC-20 through a LAT box must set their packet size to 37 or less. Those who want to use MODEM will have to use Kermit instead, since MODEM packet sizes cannot be changed. This note does not address the other problems we've been having with TOPS-20 LAT service, like random disconnections, etc. We noticed that several of the other recommended parameter settings are not followed in LATSRV. ------- 16-Mar-86 00:42:35-EST,2269;000000000001 Return-Path: <@CS.COLUMBIA.EDU,@SU-SCORE.ARPA:MRC@PANDA> Received: from CS.COLUMBIA.EDU by CU20B.COLUMBIA.EDU with TCP; Sun 16 Mar 86 00:42:32-EST Received: from SU-SCORE.ARPA by CS.COLUMBIA.EDU with TCP; Sun 16 Mar 86 00:42:59-EST Received: from SUMEX-AIM.ARPA by SU-SCORE.ARPA with TCP; Sat 15 Mar 86 17:32:21-PST Received: from PANDA by SUMEX-AIM.ARPA with Cafard; Sat 15 Mar 86 17:34:15-PST Date: Sat 15 Mar 86 16:48:16-PST From: Mark Crispin Subject: DTR control patch To: TOPS-20@SU-SCORE.ARPA Postal-Address: 1802 Hackett Ave.; Mountain View, CA 94043-4431 Phone: +1 (415) 968-1052 Message-ID: <12191015506.11.MRC@PANDA> By popular demand, I am publishing the latest and greatest DTR control patch. It is in the form of a MIC file. Note the instructions at the bottom of the patch, which are necessary to actually enable the patch. You will have to do this manually since it is different between release 5.1 and release 6.1. This patch enables two new TTY MTOPR% functions. Function 400003 will hang up the given terminal line, function 400004 will pick it up. This is compatible with the functions in Stanford and PANDA monitors, where these functions are given the symbolic names .MOHUP (hang up) and .MODUP (DTR up). This patch uses function .DFLDU (15) to DTEQ, which is supported from the KL to the -11 only in the more recent versions of RSX-20F. If you have an older version of RSX-20F, you'll get an 11-HALT (ILF or some such) when you try to use function 400004. In that case, get a new version of RSX-20F from DEC. @GET SYSTEM:MONITR @START 140 *FFF/DTRPAT:CAIE T3,400003 *DTRPAT+1/JRST DTRPAT+4 *DTRPAT+2/CALL TTHNGU *DTRPAT+3/JRST RSKP *DTRPAT+4/CAIE T3,400004 *DTRPAT+5/RET *DTRPAT+6/JSP CX,SAVT *DTRPAT+7/MOVE A,MSTRDT *DTRPAT+10/MOVS C,B *DTRPAT+11/SKIPA B,.+1 *DTRPAT+12/15,,.FEDLS *DTRPAT+13/CALL FIXARG *DTRPAT+14/HLRZ D,C *DTRPAT+15/SETZ C, *DTRPAT+16/CALL DTEQI *DTRPAT+17/JRST RSKP *DTRPAT+20/FFF: ! Now look at TTMTOP+7 (release 6.1) or TTMTO1+4 (release 5.1). It ! jumps to a literal which has a MOVEI T1,MTOX1 followed by a RET. ! Patch the RET to JRST DTRPAT. Then type CTRL/Z followed by ! SAVE SYSTEM:MONITR.EXE. ------------------------------ Date: Thu 8 May 86 17:10:56-PDT From: Bob Larson Subject: Problem with tops-20 kermit Tops-20 does something very nasty when confronted with a file with the 36th bit (lsb) of a word set and a 7-bit data link (mark parity) and no 8th bit quoting: it sends a packet with a bad checksum. [Tops-20 kermit version 4.2(253)] There seem to be two better ways out of this bad situation: Send an error packet, or just ignore the extra bit. In my case the latter would be prefered. (Apperently there is an obscure bug in mm, which is not noticed by most tops-20 programs.) Bob Larson ------------------------------ Date: Wed 3 Feb 88 18:35:32-PST From: Bruce Tanner Subject: TOPS-20 Kermit Keywords: I've gotten the MS-DOS 2.30 .BOO files and decided to use the MSBPCT.C program using the Stanford KCC compiler. The program ran fine unchanged. However, opening a file "wb" generates a 9-bit file (four nine-bit bytes per word). OK, just use the "SET FILE SIZE AUTO" and let Kermit figure it out, right? Wrong. I had to teach it about 9 bit files also. So, here are the REDIT changes I've made to edit 262 (decimal 178): 1. Recognize 9 bit files 2. Clean up the Moon: code (it kept giving me phase errors) 3. Make edit decimal (just remove the vi%dec at Version: if you don't like it) REDIT 1(103) COMPARE by user CC.TANNER, 3-Feb-88 16:40:50 File 1: PS:KERMIT.COLUMBIA.1 File 2: PS:KERMIT.MAC.26 ***** CHANGE #1; PAGE 1, LINE 4; PAGE 1, LINE 4 $verno==^d4 ; Major version number. $mnver==^d2 ; Minor version number. $edno==^d178 ; Edit number increases independent of version. $who==^d0 ; Who edited, 0=Columbia. ;  --------------------------------- $verno==^d4 ; Major version number. $mnver==^d2 ; Minor version number. $edno==^d178 ; Edit number increases independent of version. $who==^d3 ; Who edited, 0=Columbia. ;  ***** CHANGE #2; PAGE 14, LINE 6; PAGE 14, LINE 6 subttl KERMIT Program entry, initialization, and exit. kermit: jrst start ; Start entry. jrst reen ; Re-entry. versio: byte (3)$who(9)$verno(6)$mnver(18)$edno ; Program version. evlen==.-kermit  --------------------------------- subttl KERMIT Program entry, initialization, and exit. kermit: jrst start ; Start entry. jrst reen ; Re-entry. versio: byte (3)$who(9)$verno(6)$mnver(18)$edno+vi%dec ;[BT] Program version. evlen==.-kermit  ***** CHANGE #3; PAGE 76, LINE 46; PAGE 76, LINE 46 ; file bytesize keyword table. sfbtab: %table %key <7-bit>, 0 %key <8-bit>, 1 %key , 2 %key , 1 %key , 0  --------------------------------- ; file bytesize keyword table. sfbtab: %table %key <7-bit>, 0 %key <8-bit>, 1 %key <9-bit>, 3 ;[BT] %key , 2 %key , 1 %key , 3 ;[BT] %key , 0  ***** CHANGE #4; PAGE 110, LINE 19; PAGE 110, LINE 19 ret ] hrrz t3, versio ; edit skipe t3 call [ movei t1, "(" PBOUT numout t3, 8 movei t1, ")"  --------------------------------- ret ] hrrz t3, versio ; edit skipe t3 call [ movei t1, "(" PBOUT trzn t3,vi%dec ;[BT] Decimal? jrst $shv3 ;[BT] No, skip numout t3, ^d10 ;[BT] Yes skipa ;[BT] $shv3: numout t3, 8 movei t1, ")"  ***** CHANGE #5; PAGE 113, LINE 8; PAGE 113, LINE 8 $shfil: tmsg hrroi t1, [ASCIZ/"Auto"/] skipn autbyt jrst [ hrroi t1, [asciz/Seven-Bit/] skipe ebtflg hrroi t1, [asciz/Eight-Bit/] jrst .+1 ]  --------------------------------- $shfil: tmsg hrroi t1, [ASCIZ/"Auto"/] skipn autbyt jrst [ hrroi t1, [asciz/Seven-Bit/] move t2,ebtflg ;[BT] cain t2,1 ;[BT] hrroi t1, [asciz/Eight-Bit/] cain t2,3 ;[BT] hrroi t1, [asciz/Nine-Bit/] ;[BT] jrst .+1 ]  ***** CHANGE #6; PAGE 161, LINE 8; PAGE 161, LINE 8 ;[66] If outputting to a file, set up the mapping page pointers. rfil3b: skiple filjfn ;[66] JFN on a file? jrst [ move t1, [point 7, mappag*1000] ;[66] Yes, point to page. skipe ebtflg ;[66] Eight bit mode? hrli t1, (point 8,) ;[66] Then use 8-bit bytes. movem t1, pagptr ;[66] Save it here.  --------------------------------- ;[66] If outputting to a file, set up the mapping page pointers. rfil3b: skiple filjfn ;[66] JFN on a file? jrst [ move t1, [point 7, mappag*1000] ;[66] Yes, point to page. move t2,ebtflg ;[BT] Get file byte size cain t2, 1 ;[BT] Eight bit? hrli t1, (point 8,) ;[66] Then use 8-bit bytes. cain t2, 3 ;[BT] Nine bit? hrli t1, (point 9,) ;[BT] Then use 9-bit bytes. movem t1, pagptr ;[66] Save it here.  ***** CHANGE #7; PAGE 161, LINE 18; PAGE 161, LINE 21 jrst .+1 ] ; If running locally, echo filename to screen. movei t1, 7 ;[66] Remember file byte size for reporting. skipe ebtflg ;[66] (this may be revised later because movei t1, 8 ;[66] of ITS binary headers or similar...) movem t1, bytsiz ;[66]  --------------------------------- jrst .+1 ] ; If running locally, echo filename to screen. movei t1, 7 ;[66] Remember file byte size for reporting. move t2,ebtflg ;[BT] (this may be revised later because cain t2, 1 ;[BT] movei t1, 8 ;[66] of ITS binary headers or similar...) cain t2, 3 ;[BT] movei t1, 9 ;[BT] movem t1, bytsiz ;[66]  ***** CHANGE #8; PAGE 168, LINE 31; PAGE 168, LINE 31 rdclsb: hrli t1, .fbbyv ; Set the byte size. hrr t1, filjfn movx t2, fb%bsz ; Byte size field mask. movx t3, fld(7,fb%bsz) ; Value skipn itsfil ;[75] ITS binary file? skipe ebtflg ; Or eight-bit mode? movx t3, fld(8,fb%bsz) ; Set it that way, then.  --------------------------------- rdclsb: hrli t1, .fbbyv ; Set the byte size. hrr t1, filjfn movx t2, fb%bsz ; Byte size field mask. movx t3, fld(7,fb%bsz) ; Value move t4, ebtflg ;[BT] Get bytesize cain t4, 1 ;[BT] If 8 bit movx t3, fld(8,fb%bsz) ;[BT] set it cain t4, 3 ;[BT] If 9 bit movx t3, fld(9,fb%bsz) ;[BT] set it skipe itsfil ;[75] ITS binary file? movx t3, fld(8,fb%bsz) ; Set it that way, then.  ***** CHANGE #9; PAGE 195, LINE 33; PAGE 195, LINE 33 NOUT nop movei t2, 40 ; A space BOUT movei t2, 7 ; Bytesize skipe ebtflg aos t2 NOUT  --------------------------------- NOUT nop movei t2, 40 ; A space BOUT movei t2, 7 ; Bytesize move t4, ebtflg cain t4, 1 ;[BT] aos t2 cain t4,3 ;[BT] addi t2, 2 ;[BT] NOUT  ***** CHANGE #10; PAGE 201, LINE 42; PAGE 201, LINE 42 jrst getcha ;[75] Yes, then skip "autobyte" stuff. ; Next, if doing "autobyte", use the file byte size. skipe autbyt ;[81] Are we using autobyte? jrst [ setzm ebtflg ; Yes, assume seven-bit bytes. cain t2, ^d8 ; Really 8-bit? setom ebtflg ; Yes, act like user requested 8-bit. jrst .+1 ]  --------------------------------- jrst getcha ;[75] Yes, then skip "autobyte" stuff. ; Next, if doing "autobyte", use the file byte size. skipe autbyt ;[81] Are we using autobyte? jrst [ setz t3, ;[BT] Yes, assume seven-bit bytes. cain t2, ^d8 ; Really 8-bit? movei t3, 1 ;[Bt] Yes, act like user requested 8-bit. cain t2, ^d9 ;[BT] 9-bit? movei t3, 3 ;[BT] Yes movem t3, ebtflg ;[BT] jrst .+1 ]  ***** CHANGE #11; PAGE 201, LINE 52; PAGE 201, LINE 55 ; Now, if we're to do 8-bit input, convert the byte count if necessary. getcha: skipn itsfil ; ITS binary file? skipe ebtflg ; Or eight bit mode? jrst [ cain t2, ^d8 ; Yes, is the byte size 8? jrst getchb ;[170] If so go adjust byte count if necessary.  --------------------------------- ; Now, if we're to do 8-bit input, convert the byte count if necessary. getcha: skipn itsfil ; ITS binary file? skipe ebtflg ; Or eight bit mode? jrst [ caie t2, ^d9 ;[BT] 9-bit? cain t2, ^d8 ; Yes, is the byte size 8? jrst getchb ;[170] If so go adjust byte count if necessary.  ***** CHANGE #12; PAGE 202, LINE 8; PAGE 202, LINE 8 ; Or, if we're to do 7-bit input, fix the byte count for that. caie t2, 7 ; If the bytesize is not 7 or 8, treat as 7. cain t2, ^d8 ;[170] (don't do this to 8-bit files! skipa ;[170] ...) jrst [ movei t3, ^d36 ; Must convert, get the size of a word. idiv t3, t2 ; Divide by the byte size. move q1, bytcnt ; Get the number of bytes in file. idiv q1, t3 ; Divide by the bytes/word to get words. imuli q1, 5 ; Multiply by 5 (as if 7bit bytes). movem q1, bytcnt ; Save the new byte count. jrst getch2 ] ; Go map in page.  --------------------------------- ; Or, if we're to do 7-bit input, fix the byte count for that. caie t2, 7 ; If the bytesize is not 7 or 8, treat as 7. cain t2, ^d8 ;[170] (don't do this to 8-bit files! jrst getchb ;[170] ...) caie t2, ^d9 ;[BT] Don't touch 9-bit jrst getchb ;[BT] movei t3, ^d36 ; Must convert, get the size of a word. idiv t3, t2 ; Divide by the byte size. move q1, bytcnt ; Get the number of bytes in file. idiv q1, t3 ; Divide by the bytes/word to get words. imuli q1, 5 ; Multiply by 5 (as if 7bit bytes). movem q1, bytcnt ; Save the new byte count. jrst getch2 ; Go map in page.  ***** CHANGE #13; PAGE 205, LINE 16; PAGE 205, LINE 16 mapi: movx t2, <.fhslf,,mappag> ; Form our fork,,mapping page movx t3, pm%rd ; Just want to read it. PMAP% ; Map it in. %jsker ,r ; Error, fail. move t3, [point 7, mappag*1000] ; Success, get a pointer to the page. skipn itsfil ;[75] An ITS binary file? skipe ebtflg ; Or eight bit access? hrli t3, (point 8,) ; Yes, then use 8-bit pointer.  --------------------------------- mapi: movx t2, <.fhslf,,mappag> ; Form our fork,,mapping page movx t3, pm%rd ; Just want to read it. PMAP% ; Map it in. %jsker ,r ; Error, fail. move t3, [point 7, mappag*1000] ; Success, get a pointer to the page. move t4, ebtflg ;[BT] cain t4, 1 ;[BT] 8-bit? hrli t3, (point 8,) ; Yes, then use 8-bit pointer. cain t4, 3 ;[BT] 9-bit? hrli t3, (point 9,) ;[BT] skipe itsfil ;[75] An ITS binary file? hrli t3, (point 8,) ; Yes, then use 8-bit pointer.  ***** CHANGE #14; PAGE 209, LINE 40; PAGE 209, LINE 40 aos pagno ; Advance the file page number. ; Rewind the memory page back to word 0. putch4: move t1, [point 7, mappag*1000] ; Success, make a pointer skipn itsfil ;[75] skipe ebtflg ; of the appropriate hrli t1, (point 8,) ; byte size. movem t1, pagptr ; Store it.  --------------------------------- aos pagno ; Advance the file page number. ; Rewind the memory page back to word 0. putch4: move t1, [point 7, mappag*1000] ; Success, make a pointer move t4, ebtflg ;[BT] cain t4, 1 ;[BT] 8-bit? hrli t1, (point 8,) cain t4, 3 ;[BT] 9-bit? hrli t1, (point 9,) ;[BT] skipe itsfil ;[75] hrli t1, (point 8,) ;[BT] movem t1, pagptr ; Store it.  ***** CHANGE #15; PAGE 267, LINE 25; PAGE 267, LINE 25 tmsg <, file bytesize > ; File bytesize numout bytsiz skipl rcving ; I/O bytesize, only if sending jrst [ tmsg <, i/o bytesize > movei t2, 7 skipn itsfil ;[75] skipe ebtflg movei t2, 8 numout t2  --------------------------------- tmsg <, file bytesize > ; File bytesize numout bytsiz skipl rcving ; I/O bytesize, only if sending jrst [ tmsg <, i/o bytesize > movei t2, 7 move t3, ebtflg ;[BT] cain t3, 1 ;[BT] movei t2, ^d8 cain t3, 3 ;[BT] movei t2, ^d9 ;[BT] skipe itsfil ;[75] movei t2, ^d8 ;[BT] numout t2  ***** CHANGE #16; PAGE 271, LINE 4; PAGE 271, LINE 4 retskp ; And return, with success. ;[6] (this whole routine, just for fun...) moon: saveac <5,6> ; This code stolen from MOON.MAC (anybody know who wrote it?). ; Just changed OUTCHR's to PBOUT%'s via a macro. - Frank. ; setzb 3,4 seto 2, ODCNV% erjmp r tlz 4,77 IDCNV%  --------------------------------- retskp ; And return, with success. ;[6] (this whole routine, just for fun...) moon: saveac ; This code stolen from MOON.MAC (anybody know who wrote it?). ; Just changed OUTCHR's to PBOUT%'s via a macro. - Frank. ; setzb t3,t4 seto t2, ODCNV% erjmp r tlz t4,77 IDCNV%  ***** CHANGE #17; PAGE 271, LINE 21; PAGE 271, LINE 21 erjmp r ; Return upon any error. tmsg <, Moon: > ; OK so far, say what we're doing. ; AC2= Universal time adjusted for time zone. move 1,2 ; Right place. sub 1,newmn ; Sub off base new moon idiv 1,period ; Divide by the period idiv 2,perio4 ; Get fractions of a period camg 3,perio8 ; Check for pahse + or - jrst moon1 ; Not more than 3+ days sub 3,perio4 ; Make it next phase -n days cain 2,3 ; Is it LQ+3D+? tdza 2,2 ; It is aoj 2, ; Increment phase moon1: hllz 1,table(2) ; Get SIXBIT phase skipge 3 ; 3 < 0 then minus phase output tloa 1,'-' ; - tloa 1,'+' ; + movms 3 ; Fix mag of 3 move 2,[point 6,1] ; Byte pointer movei 5,2 ; Loop 3 times moon2: ildb 4,2 ; Get a character addi 4," " ; Make ASCII OUTCHR 4 ; Type it sojge 5,moon2 ; Loop movsi 4,-4 ; Make aobjn pointer ;... moon3: hrrz 2,table(4) ; Get a multiplier trz 2,774000 ; Strip off ascii character imuli 3,(2) ; Get the value decoded hlrz 1,3 ; Get value tlz 3,-1 ; Zap old LH move 5,1 ; Use 5 & 6 here idivi 5,12 ; Radix 10 addi 5,60 ; Make ASCII caile 5,60 ; Check for leading zero OUTCHR 5 ; Type it. addi 6,60 ; Make ASCII OUTCHR 6 ldb 5,[point 7,table(4),24] ; Get d/h/m/s OUTCHR 5 ; Type it. OUTCHR ["."] ; Follow with a dot. aobjn 4,moon3 ; Loop.  --------------------------------- erjmp r ; Return upon any error. tmsg <, Moon: > ; OK so far, say what we're doing. ; AC2= Universal time adjusted for time zone. move t1,t2 ; Right place. sub t1,newmn ; Sub off base new moon idiv t1,period ; Divide by the period idiv t2,perio4 ; Get fractions of a period camg t3,perio8 ; Check for pahse + or - jrst moon1 ; Not more than 3+ days sub t3,perio4 ; Make it next phase -n days cain t2,3 ; Is it LQ+3D+? tdza t2,t2 ; It is aoj t2, ; Increment phase moon1: hllz t1,mtable(t2) ; Get SIXBIT phase skipge t3 ; 3 < 0 then minus phase output tloa t1,'-' ; - tloa t1,'+' ; + movms t3 ; Fix mag of t3 move t2,[point q2,t1] ; Byte pointer movei q1,2 ; Loop 3 times moon2: ildb t4,t2 ; Get a character addi t4," " ; Make ASCII OUTCHR t4 ; Type it sojge q1,moon2 ; Loop movsi t4,-4 ; Make aobjn pointer ;... moon3: hrrz t2,mtable(t4) ; Get a multiplier trz t2,774000 ; Strip off ascii character imuli t3,(t2) ; Get the value decoded hlrz t1,t3 ; Get value tlz t3,-1 ; Zap old LH move q1,t1 ; Use q1 & q2 here idivi q1,12 ; Radix 10 addi q1,60 ; Make ASCII caile q1,60 ; Check for leading zero OUTCHR q1 ; Type it. addi q2,60 ; Make ASCII OUTCHR q2 ldb q1,[point 7,mtable(t4),24] ; Get d/h/m/s OUTCHR q1 ; Type it. OUTCHR ["."] ; Follow with a dot. aobjn t4,moon3 ; Loop.  ***** CHANGE #18; PAGE 273, LINE 13; PAGE 273, LINE 13 per==35,,422752 ; 29d.12h.53m.19s period: per perio4: per/4 perio8: per/10 table: byte(18)'NM '(7)"d"(11)^D1 ; New moon - days - 1 byte(18)'FQ '(7)"h"(11)^D24 ; First quarter - hours - 24  --------------------------------- per==35,,422752 ; 29d.12h.53m.19s period: per perio4: per/4 perio8: per/10 mtable: byte(18)'NM '(7)"d"(11)^D1 ; New moon - days - 1 byte(18)'FQ '(7)"h"(11)^D24 ; First quarter - hours - 24 ------------------------------ Date: Wed, 17 Feb 1988 23:03 MST From: "Frank J. Wancho" Subject: Using TOPS-20 Kermit with 9-Bit Files The KCC DEC-20 C compiler defaults to 9-bit files when you create a file with "wb" for its own reasons - the internal character types are 9-bit, and four 9-bit quantities on a read will properly pick up all 36 bits in a PDP-10 word. However, all you have to do is change the "wb" in the open to "w8" and you will get the expected behavior, i.e. 8-bit files which DEC-20 Kermit can recognize automatically. ------------------------------ 7-Jun-88 22:50:12-EDT,2542;000000000011 Return-Path: Received: from SCIENCE.UTAH.EDU by CU20B.CC.COLUMBIA.EDU with TCP; Tue 7 Jun 88 22:50:05-EDT Date: Tue 7 Jun 88 20:48:57-MDT From: "Nelson H.F. Beebe" Subject: Bug in Kermit-20 To: sy.fdc@CU20B.COLUMBIA.EDU cc: BEEBE@SCIENCE.UTAH.EDU X-US-Mail: "Center for Scientific Computing, South Physics, University of Utah, Salt Lake City, UT 84112" X-Telephone: (801) 581-5254 Message-ID: <12404684836.20.BEEBE@SCIENCE.UTAH.EDU> We are running NFS-20 here on our 20/60, giving our Suns access to the -20 file system, plus good things like archiving, undelete, expunge, and multiple generations. Sun's Network File system (NFS) is odd in that it does not conform to the age-old open--process--close model of I/O, but instead simply has a lookup (==> create if necessary) operation, plus read/write. As a consequence of this, the NFS-20 server never is told when the Sun NFS client is done with the file, so it never can officially close the file. Thus, we end up with NFS-20 files which have 0 page count, and non-zero byte count, with the latter to be believed. A periodic CHFDB% to set the page count is expensive, and also leads to funny things like INFORMATION (about) DISK reporting negative pages-in-user counts. If the file is copied with the -20 COPY command, the page count then gets set to a correct non-zero value. Otherwise, NFS-20, and most -20 programs that use SIN%/SOUT% or BIN%/BOUT% instead of PMAP%, are perfectly happy to deal with the file. I had to fix Chris Maio's -20 implementation of Unix tar to do the page mapping correctly in the effect in a zero page count and non-zero byte count. Tonight, I discovered that Kermit-20 has a similar deficiency -- a transfer of such a (8-bit) file sent exactly 2048 bytes, implying that one page was read, even though more bytes were available. This is a double error -- (1) the byte count was not used, and (2) using the page count with a test at the end of a loop, instead at the beginning, would explain the transfer of 1 page instead of 0 page. I don't expect you to fix this, because I know we all would like to put -20 MACRO programming to rest and switch to C. Just thought I'd let you know, though, for historical purposes. I expect our -20 will be around a couple of years yet, but eventually, we too will have to bid it a fond farewell. I'm off on a 2-month trip to Europe and India on Thursday, so you won't hear from me until I get back. ------- 8-Jun-88 09:17:29-EDT,871;000000000001 Mail-From: SY.FDC created at 8-Jun-88 09:17:23 Date: Wed 8 Jun 88 09:17:23-EDT From: Frank da Cruz Subject: Re: Bug in Kermit-20 To: Beebe@SCIENCE.UTAH.EDU In-Reply-To: <12404684836.20.BEEBE@SCIENCE.UTAH.EDU> Message-ID: <12404799240.28.SY.FDC@CU20B.CC.COLUMBIA.EDU> You're right. The fix would be in the routine GETCH, which already reads the byte count and adjusts it if necessary for various reasons. After doing that it, it should calculate the number of pages based on the byte count (bytcnt) and byte size (bytsiz), rounded up to the next whole number, and store it in pagcnt. Of course, this assumes that the FDB's byte count is more reliable than its page count, in all cases (which might not always be true). I'll add your message and this reply to the "beware file". Thanks for the report. - Frank -------