home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
archives
/
dec20.zip
/
k20mit.bwr
< prev
next >
Wrap
Text File
|
1988-08-16
|
34KB
|
986 lines
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 <SY.FDC@CU20B.COLUMBIA.EDU>
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" <WANCHO@SIMTEL20.ARPA>
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:<CPM.TOPS-20>).
--Frank
--------------------
REDIT 1(103) COMPARE by user WANCHO, 10-Apr-85 22:07:04
File 1: PS:<TEMP>KERMIT.MAC.255
File 2: PS:<TEMP>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:<TIMREK>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:<TEMP>20KERMIT.MAC.256, 9-Apr-85 12:44:11, Edit by WANCHO
; added PANDASW conditionals to handle network binary mode negotiations
;PS:<TIMREK>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 <point 8,[byte(8) iac,wont,trnbin]>,-3]
---------------------------------
; Turn off Arpanet TAC binary mode.
unarpa: skipn tvtflg ; Are we on a tvt?
ret ; No, skip this.
IFE PANDASW,<
dmove t2, [exp <point 8,[byte(8) iac,wont,trnbin]>,-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: <RELPH@USC-ECLC.ARPA>
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 <Relph@USC-ECLC.ARPA>
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 <SY.FDC@CU20B.COLUMBIA.EDU>
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 <SY.FDC@CU20B.COLUMBIA.EDU>
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 <MRC%PANDA@SUMEX-AIM.ARPA>
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 <BLARSON%ECLD@USC-ECLC.ARPA>
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 <CERRITOS@ECLA.USC.EDU>
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:<CC.TANNER.WORK>KERMIT.COLUMBIA.1
File 2: PS:<CC.TANNER.WORK>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 <auto>, 2
%key <eight-bit>, 1
%key <seven-bit>, 0
---------------------------------
; file bytesize keyword table.
sfbtab: %table
%key <7-bit>, 0
%key <8-bit>, 1
%key <9-bit>, 3 ;[BT]
%key <auto>, 2
%key <eight-bit>, 1
%key <nine-bit>, 3 ;[BT]
%key <seven-bit>, 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 <Byte size for file I/O: >
hrroi t1, [ASCIZ/"Auto"/]
skipn autbyt
jrst [ hrroi t1, [asciz/Seven-Bit/]
skipe ebtflg
hrroi t1, [asciz/Eight-Bit/]
jrst .+1 ]
---------------------------------
$shfil: tmsg <Byte size for file I/O: >
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 <Can't map in file page>,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 <Can't map in file page>,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 <q1,q2>
; 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" <WANCHO@SIMTEL20.ARPA>
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: <BEEBE@SCIENCE.UTAH.EDU>
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" <Beebe@SCIENCE.UTAH.EDU>
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 <SY.FDC@CU20B.CC.COLUMBIA.EDU>
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
-------