Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

TRS-80 102 files transfer help req'd

216 views
Skip to first unread message

Legin

unread,
Apr 1, 1995, 3:00:00 AM4/1/95
to
I'd just aquired myself a model 102, without docs.
I want to transfer files to/from my '386 using the serial port.
I have a suspicion that the 102's terminal program is using the
modem, and I can't get BASIC to talk to its serial port.

I do have a serial port on the '386, and they're connected
to each other using a lap-link (null modem) cable.

How do I get the terminal program on the 102 to speak
to the serial port?

What's the name of the device for the serial port in BASIC.
It doesn't seem to be "com1:" or "com2:".

Thanks for your help. I'm looking forward to getting this
peachie little machine up to some useful tasks.

Legin.

Kyle Silfer

unread,
Apr 2, 1995, 4:00:00 AM4/2/95
to
Since we don't have a FAQ quite yet, here's another repost of Kent Nickerson's
comprehensive file xfer discussion (with an afterword by James Cameron).

----------------------> here it is <----------------------------------------

Having been the happy owner of a Tandy 200 for a long time, I've compiled some
information that I've found useful for uploading to a PC from a T200 or T100
WITHOUT A TERMINAL PROGRAM. After a description of uploading procedure and
some tips, I've included a TANDY 100/200 program which will upload all .DO
and .BA files in a memory bank to a PC in one concatenated process, and a PC
GWBASIC program to reconstitute them.


T200/100 <-> IBM PC FILE EXCHANGE
by Kent Nickerson
1) TANDY File Types

Only 7-bit files can be transmitted and received by the T200/100. This means
that only .DO files can be exchanged, so that .BA files must be saved in .DO
(ASCII) format for uploading. .CO files on the TANDY cannot be uploaded
without some sort of code/decode scheme. Multiplan spreadsheet files can be
saved in SYLK format for upload and decoded by importing into spreadsheets
capable of decoding SYLK format (like Quattro Pro).


2) Upload/Download Procedure

File exchange between a T200/100 and a PC involves the following steps:
a) connect a null modem cable from the TANDY RS232 port and a RS232
(serial) port of the PC.
b) use the MODE command on the PC and the STAT command in TELCOM on the
T100/200 to match communications parameters.
c) To download, go into TELCOM terminal mode on the T100/200, press "Down",
then send the PC file out the appropriate port using the COPY command on
the PC. Press "Down" again when the file transfer is complete.
d) To upload, use the PC COPY command to direct its serial port input to a
file. Go into terminal mode in TELCOM on the T100/200, press "Up" and
specify the .DO file to transfer. Press CTRL-Z when the transfer is
finished.

I will expand on these points:
a) Null Modem Cable
A NULL MODEM cable is required with a 25-pin male connector on one
end (to mate with the TANDY female RS232 port connector) and a 9 or 25
pin connector on the other end to mate with a PC serial (RS232) port.
Such a cable can be made from a normal RS232 cable with a NULL MODEM
adapter available from computer shops for about $10.
A null modem cable can be made at home from a pair of connectors
(preferably with "solder cup" connections) and a 7 conductor cable. For
neatness, one should use a ribbon cable or jacketed cable with 7 or more
wires. The connectors are wired in the following way:

2 --------------------------- 3 (2)
3 --------------------------- 2 (3)
4 -,------------------------- 8 (7)
5 -' ,- 4 (8)
8 -------------------------'- 5 (1)
7 --------------------------- 7 (5)
6 --------------------------- 20 (4)
20 --------------------------- 6 (6)

Pin numbers are for 25-pin connectors, while those in brackets are for
9-pin connectors. Note that pins 4 and 5 are shorted together on each
connector. The pin numbers will be printed beside the connector pins
(they will be hard to see!).

b) Setting Up Communications
When the cable has been installed, go into TELCOM on the laptop and
select communications parameters which match those of the PC's serial
port. Personally, I've experienced the occasional error at baud rates
greater than 1200. There are many parameter permutations possible, but
the one that I use is 1200 baud, even parity. Set this up on the TANDY
by pressing "Stat" and typing:
57e1enn (on the T200)
or
57e1e (on the T100)

To set up the PC communications parameters, type:
mode comx: 1200,e,7,1
where "comx" is the PC serial port the null modem cable is hooked into
(com1 or com2). If other comm parameters are desired, see the end of
this document.
After the comm parameters are set and matched, press "Term" on the
laptop to prepare for up/download. More details on communications
parameters are included at the end of this document.


c) Download from PC to T200/100:
Press "Down" on the Tandy. When it turns reverse video, type on the PC:
copy filename comx:
where "comx" is the PC serial port used and "filename" the PC file to
download. When transfer is complete (the transfer will appear on the
laptop screen), push "Down" again to terminate.
NOTE: If there are many errors in download, decrease the baud rate.
Conversely, one may try a higher baud rate if no problems are
experienced at 1200 baud.

d) Upload from T200/100 to PC:
On the PC, type:
copy comx: filename
where "filename" is the file you want to upload data to. Press "Up" and
enter the name of .DO file to upload (extension not required). The
"Width" parameter, if one is entered, specifies a maximum uploaded line
length and will cause lines exceeding the length you specify to be cut
into several lines less than or equal to it. If you do not specify this
parameter, lines will be sent without any breaks other than those
already in the file. Generally, specifying no width is ok, but
sometimes will cause a PC buffer overflow and abort if there are lines
exceeding 255 characters.
After pressing Enter, the "Up" label should go into reverse video,
indicating that upload is progressing. When it returns to normal video,
the upload is finished. If the "Up" label is still in reverse video
after a time (in seconds) of about the ten times the size of the file in
bytes divided by the baud rate (e.g. about 20 seconds for a 2000 byte
file at 1200 baud), there is something wrong with the cable or the
communications parameters are not matched. You may have to reboot the
PC in this case to break it out of its reverie. If the upload has been
performed, press CTRL-Z on the laptop (Hold down CTRL and press Z) to
close the connection to the PC. The PC should save the file and return
with a screen prompt. To abort an upload, press the reset switch in the
back ot the laptop, enter TELCOM again, press "Term", then CTRL-Z to
close the PC connection.
On most PCs, uploading in this manner will create files which have
only line feeds for line breaks, resulting
in lines which appear without
carraige
returns, like this, or in lines which overwrite when displayed
because they have carriage returns but no line feeds. You can make your
T100/200 send <CR><LF> pairs by modifying a specific byte by going into
BASIC on the laptop and typing:

POKE 61243,1 (for the T200), or
POKE 63066,1 (for the T100)

The default value is 0 (for sending <LF> only). The new value will stay
in effect as long as the computer is not cleared (by memory reset or by
being without batteries for a long time). This modification may cause
null characters (ASCII 0) to be added to the beginning and end of the
document, but these are easily removed and indeed are ignored and
stripped by some processors like WordPerfect.


3) Memory Bank Upload Utility
For those who wish to upload whole memory bank(s) at a time, I've
written the following programs: BK.BA for the T100/200, and a PC GWBASIC
parser. Program BK will upload all .DO and .BA files on a bank to a single
concatenated file on the PC. The component (ASCII) files will be separated
with a header with a marker line and the filename, like so:
!@#$!@#$
FILENAME
The component files can then be separated with a word processor or
automatically parsed by the PC GWBASIC program UNPACK, which is listed further
on in this document.

Because of the Usenet's 80 column limitation, program lines 90, 100, and 180
are broken. Download the program as described above to the TANDY and restore
the broken lines (without spaces) on the T100/200. It must be converted to a
BA file and named "BK" for use. To do this, go into BASIC and type:
load "filename"
where filename is the TANDY .DO program file. When the "Load" label stops
flashing, type:
save "bk
The .DO file can then be erased (KILLed).

Once the program is on the laptop (it must be in the bank you want to upload),
type "copy comx: filename" on the PC and run the program. The PC should
automatically be released at the end of the transfer.
Note: Sometimes this program will close the PC file after a BASIC
(*.BA) file has been sent up from the TANDY. See comment on line 100 if
you have this problem.

------ beginning of program listing for BK.BA ---------------------
10 ' Saves all .BA and .DO type files in the current ram bank to RS232.
20 ' If program stopped, running again will save next file, but POKE Q,0
30 ' will cause it to start over. WARNING: Run program from .BA format.
40 MAXFILES=2:CLEAR600
45 IFPEEK(1)=171THENSL=62122:KB=64798:LF=61243 ELSESL=63919:KB=65450:LF=63066
50 POKE LF,1:OPEN "COM:57e1enn" FOR OUTPUT AS 2
60 Q=SL+3:F=PEEK(Q):IFF>48THENF=0
70 F=F+1:POKEQ,F:RD=F*11+SL:S=PEEK(RD)
75 IFS=255THENPOKE Q,0: PRINT #2,CHR$(26):PRINT"Done.":BEEP:END
80 IFS=0THEN70
90 F$="":FORM=RD+3TORD+10:F$=F$+CHR$(PEEK(M)):NEXT:FP$=LEFT$(F$,6):F$=FP$+
"."+RIGHT$(F$,2)
100 IFS<>192ANDS<>128THENPRINT"File is binary or not recognized --
";S;F$:GOTO70
110 IFF$="BK .BA"THEN70
120 IFS=128THEN180 ' BASIC file
150 GOSUB230:OPEN F$ FOR INPUT AS 1
160 A$=INPUT$(1,1):PRINT #2,A$;
170 IFNOTEOF(1)THEN160ELSECLOSE1:GOTO70
180 GOSUB230:Q$=CHR$(34):K$=CHR$(127)+"Loadf$"+CHR$(13)+"Save"+Q$
+"com:57e1enn"+CHR$(13)+"Run"+Q$+"BK"+CHR$(13)
190 ' Activate Keyboard Buffer
200 FORL=1TOLEN(K$):POKEKB+L*2-1,ASC(MID$(K$,L,1)):NEXT
210 POKE KB,L-1
220 END
230 PRINT"Saving:";CHR$(27)+"p"+F$+CHR$(27)+"q"
240 PRINT #2," ":PRINT #2,"!@#$!@#$":PRINT#2,F$:PRINT#2," "
250 RETURN
---- end -----------------------

Some documentation:

Line 45 - Location 1 identifies a Model 100 or 200 (PEEK(1)=171 for a 200).
File directory, keyboard buffer, line feed enable locations assigned.
50 - The line feed patch is enabled. Normally, the TANDY does not issue LF
characters on file transfers. This patch is useful for most computers, but
some PCs' (HP150) will terminate receiving at the first carraige return if it
is invoked. In such a case, change the first statement of this line to POKE
lf,0. The RS-232 port is set as an output device at 1200 baud. Edit this
segment if you want comm parameters changed.
60 - Location Q serves to count the number of files transferred, and to supply
an index to byte RD, which contains a file type code (128=BASIC file, 192=text
file). Since there is a maximum of 48 files, any greater number implies this
program has not been run, and the file number is reset. Q is not an internal
because all such variables are lost when the program calls itself in line
180-210.
70 - Head of program loop.
75 - Code = 255 indicates no more files. CTRL-Z sent to terminate PC receive.
80 - Provision for empty entry.
90 - Q is file name pointer.
100 - This program handles transfer of text and BASIC files only. Some PC's
will stop receiving data from this program at the end of transmission of a
BASIC file. If this is the case, change line 140 to:

140 IFS=128THEN70:' BASIC file (e.g. jump to 70 instead of 180)

(Lines 180 to 210 inclusive can be removed in this case, but will do no harm
otherwise). If transfer of BASIC files are desired in this event, they must
first be saved in ASCII format before invoking this program.
110 - Prevents transmission of the program file itself (save in .DO format if
file copy desired).
120 - Escape (chr$(27)) sequences cause file name display in reverse video.
130 - Print file separation header to the PC file. If sequence changed,
modify program UNPACK as well.
180-210: Load keyboard buffer with instructions to load .BA file, and save in
ASCII form to RS232 port, and invoke BK again. Marker set in 60,70 gives
restart point.

If the program is aborted, type POKE Q,0 to reset it fully.

Do not change the name of this program from "BK" without similarly changing
all references to itself in the program. At any rate, the name cannot be
longer than two letters, given keyboard buffer size limit in line 180.

The (concatenated) PC file can then be separated by a word processor, using
the component file headers or else by using the GWBASIC program below on the
PC. The program will check against overwriting existing files.

10 REM ******************** PROGRAM "UNPACK" *****************************
20 REM
30 REM This program unpacks a composite text file composed of a number of
40 REM files delimited by a three line header. The first header line is
50 REM the string:
60 REM !@#$!@#$ (e.g. a distinct marker)
70 REM followed by the file name and a blank line. These headers are
80 REM stripped and the separate files reconstituted.
90 REM
100 DIM BUFFER$(1001) 'A buffer is used to reduce disk file writes.
110 REM
120 ON ERROR GOTO 800
130 INPUT "Enter name of composite file >",C$
140 OPEN C$ FOR INPUT AS #1
150 EOFFL=0: ERRFL=0
160 REM
170 REM If a drive is specified (second character = ":"), set the drive
180 REM as a filename prefix. Unpacked files will go to this drive as well.
190 REM
200 PREFIX$=""
210 IF MID$(C$,2,1)=":" THEN PREFIX$=LEFT$(C$,2)
220 REM
230 REM Go through the file line by line until the first file header is found.
240 REM The first header usually is right at the file beginning, but "junk"
250 REM characters may precede it - hence the initial search using INSTR.
260 REM
270 LINE INPUT #1, A$
280 IF INSTR(A$,"!@#$!@#$")<>0 THEN 560
290 IF NOT EOF(1) THEN 270
300 PRINT "End of file reached - No file bounds found":END
310 REM
320 REM Read lines of the composite file until:
330 REM 1) 1000 lines are read
340 REM 2) the "!@#$!@#$" delimiter line is found, or
350 REM 3) end of file is reached.
360 REM In case 2), the counter is reduced by 1 to omit the delimiter line
370 REM
380 FOR I=1 TO 1000
390 LINE INPUT #1, BUFFER$(I)
400 IF NOT EOF(1) GOTO 430
410 EOFFL=1 'End of file flag
420 GOTO 540
430 IF LEFT$(BUFFER$(I),8)="!@#$!@#$" THEN I=I-1: GOTO 540
440 NEXT I
450 REM
460 REM If 1000 lines read, write them to the output file, and resume reading
470 REM
480 FOR J=1 TO 1000: PRINT #2, BUFFER$(J): NEXT J
490 GOTO 380
500 REM
510 REM Case of delimiter encoutered. Variable FIRST prevents "close #2"
520 REM statement on first pass, since no output file is open then.
530 REM
540 FOR J=1 TO I: PRINT #2, BUFFER$(J): NEXT J 'Write final data
550 CLOSE #2 'Close file
560 IF EOFFL<>0 GOTO 770 'End program if input file exhausted
570 LINE INPUT #1,F$ 'Read file name
580 F$ = PREFIX$+F$ 'Add directory
590 OPEN F$ FOR INPUT AS #2 'Attempt to open file
600 REM
610 IF ERRFL<>0 THEN 720 'File does not exist if no error
620 BEEP 'Case of file already existing
630 PRINT "File ";F$;" exists. Overwrite? (Y,y=yes) >";
640 INPUT ANS$
650 IF ANS$="y" OR ANS$="Y" THEN 720
660 INPUT "Enter alternative file name (No entry will skip file) >",F$
670 REM
680 REM A null file name will initiate search for the next file header.
690 REM Otherwise, an existence check is performed on the new file name.
700 REM
710 IF F$="" THEN 150 ELSE GOTO 580
720 ERRFL=0:CLOSE #2
730 OPEN F$ FOR OUTPUT AS #2 'Open new output file
740 PRINT "Restoring file ";F$
750 LINE INPUT #1, A$ 'Ignore blank header line
760 GOTO 380
770 CLOSE
780 END
790 REM Error Handler. Primarily used to detect an error condition in 520.
800 ERRFL=ERR:RESUME NEXT 'Set error flag in case of error (ERR <> 0)
--------- end of listing for UNPACK.BAS -----------------------------------

4) Communications Parameters for T100/200 and PC

While I have settled on 1200 baud even parity as my standard communications
parameters, others may want to experiment with different parameters.

a) PC Communications Parameters
Command Syntax:
mode comx: b,p,d,s,r
where
comx: "x" can be any number from 1 to 4, depending on the port
the null modem cable is attached to.
b=baud rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
p=parity (e,o for "even" and "odd". Other options available, but
they do not match T100/200 options)
d=data (number of dat bits - can be 5,6,7,8. Use 7 with the
T100/200)
s=stop (number of stop bits - 1,1.5, or 2. Use 1 with T100/200)
r=retry (I've not tried playing with this one)

Given the restrictions on the T100/200 communications parameters, and
the fact that using even or odd parity is arbitrary, the generic PC
communications parameter set command is (the retry parameter doesn't
have to be specified):
mode comx: b,e,7,1
with x and b being adjustable.

b) T100/200 Communications Parameters:

The generic TANDY 200 communications parameter set command ("Stat") has
9 fields. Note there is a comma between fields 7,8 and 8,9. The T100
comm parameters are the same (I beleive) except there are no fields 6
and 7.

1st character:
M : 300 baud modem is the communications port
For the following, the communications takes place through the
RS-232 port:
1 = 75 baud, 2 = 110, 3 = 300, 4 = 600, 5 = 1200, 6= 2400
7 = 4800, 8 = 9600, 9 = 19200

2nd character:
7 = 7 bit character length
8 = 8 bit character length (don't be fooled. You can't send 8 bit
data)

3rd Character: Parity:
E = Even, O = Odd, N = None, I = Ignore

4th Character:
Stop bits: 1 or 2

5th Character:
Xon/Xoff data enable/disable:
E = Enable, D = Disable

6th Character:
Control code filter:
I = Ignore control codes, N = Normal

7th Character:
Line Feed for incoming data only (not outgoing):
N = C/R = C/R
I = C/R = C/R + L/F
(comma)

8th character:
Modem Mode:
O = Originate Mode, A = Answer Mode
(comma)

9th Character(s):
10, 20, or T for 10, 20 pps pulse dialing, or tone dialling.


The generic parameter set command for the T100/200 is
B7E1ENN for the T200 (last two fields not necessary)
B7E1E for the T100
where "B" can take on any value from 1 to 9 (as described above) to
match the PC communications parameters.


I waive any claims against using or modifying the above programs and appeal to
standard disclaimers regarding the use of the programs and this information. I
hope that this, as a distillation of my satisfactory experience with the T200
serves as a complete guide and utility for TANDY to PC file exchanges.

Truly,
Kent Nickerson
nick...@mcmaster.ca

P.S. For T200 users, I've discovered a way to make expansion RAM modules
(24K) for the price of a 32K static RAM and a transistor.

From rpi!uwm.edu!cs.utexas.edu!uunet!decwrl!pa.dec.com!e2big.mko.dec.com!aussie.enet.dec.com!cameron Mon Sep 13 08:28:28 EDT 1993
Article: 5961 of comp.sys.tandy
Newsgroups: comp.sys.tandy
Path: rpi!uwm.edu!cs.utexas.edu!uunet!decwrl!pa.dec.com!e2big.mko.dec.com!aussie.enet.dec.com!cameron
From: cam...@aussie.enet.dec.com ()
Subject: Re: (Almost) All about IBM PC<-> Tandy 100/200 File Exchange (LONG)
Message-ID: <1993Sep13.0...@e2big.mko.dec.com>
Lines: 56
Sender: use...@e2big.mko.dec.com (Mr. USENET)
Reply-To: cam...@aussie.enet.dec.com ()
Organization: Digital Equipment Corporation
X-Newsreader: mxrn 6.18-4
References: <1993Sep10....@mcshub.dcss.mcmaster.ca>
Date: Mon, 13 Sep 1993 04:22:45 GMT


In article <1993Sep10....@mcshub.dcss.mcmaster.ca>, nick...@nimios.eng.mcmaster.ca (Kent Nickerson) writes:
>Only 7-bit files can be transmitted and received by the T200/100

. without special software. I've had no trouble transmitting and receiving
8 bit data provided I avoid BASIC for the programming.

> A null modem cable can be made at home from a pair of connectors
> (preferably with "solder cup" connections) and a 7 conductor cable. For
> neatness, one should use a ribbon cable or jacketed cable with 7 or more
> wires. The connectors are wired in the following way:
>
> 2 --------------------------- 3 (2)
> 3 --------------------------- 2 (3)
> 4 -,------------------------- 8 (7)
> 5 -' ,- 4 (8)
> 8 -------------------------'- 5 (1)
> 7 --------------------------- 7 (5)
> 6 --------------------------- 20 (4)
> 20 --------------------------- 6 (6)

I use just pins 2, 3 and 7. It works fine then. Saves on copper.

> b) Setting Up Communications
> There are many parameter permutations possible, but
> the one that I use is 1200 baud

The reason for the data loss is almost *always* due to the lack of protocol
to prevent buffer overrun. Each machine has a buffer that it uses for the
incoming characters before saving them to disk or memory. If you can get the
non Tandy 100/200 machine to adopt XON/XOFF protocol, then the transfer will
be possible at far higher speeds. I do my transfers at 19200 baud.

Given that the PC does not have XON/XOFF protocol enabled in this raw COPY mode,
you should *not* enable it on the Tandy 100/200 machine. If you do (and you
advise that it should be done) then any spurious XOFF received by the Tandy
machine will cause it to stop transmitting; as you found happens - the UP
label remaining reversed.

> Conversely, one may try a higher baud rate if no problems are
> experienced at 1200 baud.

In the case of downloading, this depends heavily on the update speed of the
LCD display; which averages around 300 to 600 baud. The input buffer on the
serial line is about 64 bytes I think.

>Kent Nickerson
>nick...@mcmaster.ca

This is a good article. Any chance of having it saved in the FTP site?

--
James Cameron
CSS Sydney Engineering
Digital Equipment Corporation (Australia) Pty. Limited A.C.N. 000 446 800
(cam...@aussie.enet.dec.com)

Bill Marcum

unread,
Apr 4, 1995, 3:00:00 AM4/4/95
to

In the built-in terminal program, press F3 (Stat) and type "98N1E"
The first character is speed: 8 for 9600, 9 for 19200, lower numbers for
slower speeds, or "M" for the built-in 300-bps modem;
then you have 8 bits, no parity, 1 stop bit, and enable xon/xoff flow
control.
In Basic, the RS232 port is "COM:98N1E" and the modem is "MDM:8N1E".
--
Bill Marcum bma...@iglou.com
"Trap yourself in a room full of glee, and have nothing in the room but a
bucket and a mop, and an illustrated book about birds, you see alot out
there, but don't be scared." (Paul Weiss)

0 new messages