You've summed it up very well indeed.

Putting it another way:

If the 'server' handles it correctly (and apparently some versions of Linux do 
not) then the actual XON/XOFF protocol is completely reliable if you are 
connected directly or through compatible modems. The receiving client sends an 
XOFF (CTL-S, CHR$(19)) to signal that it needs time to process the received 
data and the sending server immediately stops and waits for an XON (CTL-Q, 
CHR$(17)) to start sending again.

Note that XON/XOFF is not just used for communication; many programs also use 
it locally, e.g. to pause scrolling while listing a large file.

Hardware handshaking works the same way, but instead of sending handshaking 
characters it uses additional wires in the connecting cable to send and receive 
equivalent electrical signals. Unfortunately the M100 does not natively 
implement hardware handshaking, although there are programs that do, such as 
John H's Hterm

Problems can arise when the M100 with its puny 64 byte buffer is connected 
through a USB<>RS232 adapter or an Ethernet or WiFi 'modem'; these devices send 
data in packets of multiple bytes at a time and will finish sending the packet 
before they acknowledges the XOFF and pause. Unless the packet size can be 
adjusted to a small enough size (e.g. 1) then the M100's receive buffer will 
probably overflow and drop characters by then.

As you say, some adapters/modems do work well if properly configured, while 
others do not and you have to run at a baud rate low enough that the receiving 
program can process the characters as they come. 

Reliable maximum download speeds on the M100 without handshaking are around:
BASIC: 600 bd to allow time to tokenize and store.
TERM: 2400 because of the slow LCD scrolling.
TEXT: 9600 since it does not display while loading.

YMMV of course.

Myself, I play with a number of vintage systems and prefer to use 'real' RS232 
ports whenever practical.

m

  ----- Original Message ----- 
  From: B 9 
  To: m...@bitchin100.com 
  Sent: Monday, October 31, 2022 1:03 AM
  Subject: Re: [M100] Notoriously S.L.O.W BASIC posted - help speeding it up 
appreciated


  On Sun, Oct 30, 2022 at 7:16 PM Mike Stein <mhs.st...@gmail.com> wrote:

    That's odd; can't your terminal program just wait forever for the next 
dump? If it times out, can't you override that?



  Sure, it's actually even easier to just let it all accumulate in one file. It 
just hadn't occurred to me to do it that way. 




    It probably won't matter with a small file like this but I've found that at 
19200 even TEXT has trouble keeping up when downloading. The M100 doesn't have 
hardware handshaking and only has XON/XOFF, which is not always reliable.


  I used to believe the same things about XON/XOFF: I derisively referred to it 
as an unreliable protocol that should have died with disco. I never understood 
how people could have used serial connections before hardware handshaking. (Nor 
did I understand disco.)



  It turns out, I was wrong. On my Tandy 200, what I've discovered is that 
XON/XOFF is 100% reliable at 19200, if you've got a good serial card on your 
PC. The key thing is that latency has to be very low. That means, either Ⓐ 
disabling all buffers, including the FIFO buffer on the serial port, or Ⓑ, 
which is preferable if your UART chips support doing so, enabling 
hardware-level XON/XOFF. (The Linux kernel automatically sets this up for you 
if your hardware can handle it; I presume other systems are similar.)  



  Ⓐ Back in the days of yore, when the Model T was current, serial cards had a 
1-byte buffer, which meant every single byte caused a system interrupt. (!) 
That meant, they actually had less latency relative to speed of filling the 
output buffer than our fast, modern computers. I haven't had one to test, but I 
believe old PCs with an 8250 UART would not overwhelm a Model T, even at 
19,200. Nowadays, every serial card comes with a minimum of 16-bytes for the 
FIFO and it is not always easy (or possible) to disable it. 



  Ⓑ Despite XON/XOFF being called "software flow control", many chips actually 
offer hardware implementations so they can stop the flow of communication the 
instant the Model 100 holds up its hand and says, “Whoa!”  Without 
hardware-level support, you have to wait for the XOFF (^S) character to go 
through all the buffers on the PC and get processed before data stops getting 
sent. By the time that happens, the buffer of data going to the Model 100, 
which has been filling up at 19,200 bps, is now so large that it will overwhelm 
the M100, causing data loss. 



  Some cheap USB Serial adapters do not offer on-chip XON/XOFF and they are 
unreliable at high-speeds.  What serial card / USB adapter are you using? I 
know the 16950 UART has on-chip xon/xoff, as do most (all?) FTDI chips. 
ProLific's PL2303 *sometimes* has support, but they rarely label it on the box 
so it's hard to know before you buy an adapter.



  —b9






    When uploading/saving from BASIC there doesn't seem to be much difference 
between 9600 and 19200, since it has to detokenize as it goes. Try it and see 
how it goes at 19200; TELCOM and text would probably be a little faster.



    I've added an option to send the dump output to the com port; that seems to 
work fine at 19200.


    BTW, I don't think we'll do much better than 34 seconds/50 lines; as I 
mentioned, LCD performance is pretty bad, especially scrolling.


    For comparison, outputting to the com port halves the time to 17 seconds, 
and of course you can scroll, save and print that on your PC as well.


    m



    On Sun, Oct 30, 2022 at 9:54 PM B 9 <hacke...@gmail.com> wrote:

      That sounds like a nice workflow. This ought to be in a FAQ of tips and 
hints for people new to the M100.



      I might just try it out. I'm pretty rigorous about using SAVE 
"COM:98N1ENN", but I have to tell my Unix box to receive the file each time (cp 
/dev/ttyUSB0 foo.do). And every copy I save overwrites the previous one, unlike 
the natural history you'll have in your log file if you find you need to go 
back a few revisions. 



      One question though: why do you send at 9600 bps? I thought all Model T's 
could do 19,200bps.



      —b9



      On Sat, Oct 29, 2022 at 10:26 AM MikeS <dm...@torfree.net> wrote:

        Hi Will,

        Too many times I've made some changes and either accidentally deleted 
the file or messed it up so badly that I want to revert to the previous 
version, so I've learned the hard way that it's a good idea to save the work 
before making major changes.

        One way is to SAVE it locally on the M100 as a .DO file ("Foo.do" or 
"Foo",A) , changing the name as appropriate; note that BASIC will save a file 
as .BA by default but will LOAD a .DO file without specifying the '.DO' or ',A' 
if no .BA file with the same file exists. Of course if it's a very large file 
you may not have room for both the .BA and .DO files in RAM at the same time.

        What I do if I'm close enough to a PC to easily connect or stay 
connected is to open a file (e.g. "backup.txt") on the PC for ASCII text 
download with a terminal program and just leave it open.

        On the M100 I've programmed F7 to 'Key 7, "COM:88N1E"', so when I want 
to save the file I'm working on I press F3 to save, F7 in response to 'Save "' 
and Return. It's a good idea to embed a version no. in the program and update 
it every time.

        This concatenates all the saved files in one file; if you actually need 
to go back then you'd have to stop the transfer, edit the file on the PC and 
send it back to the M100. Of course you can open a new file on the PC every 
time if you don't mind typing on the PC every time.

        To Load a .DO file from the PC, open TEXT, enter the File name, LOAD 
(F2) and enter 'COM:88N1E' in response to 'Load from:'; on the PC terminal 
program select Upload ASCII or whatever it's called and the file name (which 
does not have to be the same as on the M100). You may not see anything 
happening but the terminal program should indicate somehow when the transfer is 
finished. Type a CTL-Z on the PC and the file should appear on the M100; switch 
to BASIC and Load it, and Bob's your mother's brother.

        This is mainly meant for folks who want to or have to just use the 
M100's built-in functions, and to show how to avoid overruns when Loading BASIC 
.DO programs as in a previous post here a few days ago.

        Teeny, TS-DOS etc. certainly are very useful and in fact necessary if 
you're working with .BA tokenized files or Machine language code.

        Other than my phone I'm not an Apple kind of guy, so I can't give any 
Mac-specific hints.

        One other hint: to simplify switching from RUN to EDIT mode I've 
programmed 'F6,"Edit"+chr$(13)'

        Not too verbose, I hope...

        m


          ----- Original Message ----- 
          From: Will Senn 
          To: m100@lists.bitchin100.com 
          Sent: Saturday, October 29, 2022 10:16 AM
          Subject: Re: [M100] Notoriously S.L.O.W BASIC posted - help speeding 
it up appreciated


          Hi Mike,

          I'm curious about the COM stuff. In a later note you said:


          It's actually sorta been fun programming on the 'real' M100; I left a 
download running on the PC and every time I wanted to backup an interim version 
just in case, I just pressed F3 and F7 (which I'd programmed with the COM 
stats).

          and here, you say stuff about programming the function keys with 
"COM:88N1E"...

          It would be nice to be able to transfer / save from BASIC and/or my 
terminal on the Mac without the overhead of dl/TEENY.CO. I know enough to be 
dangerous and that the keys can easily be programmed to effectively type stuff. 
I'm just not clear on is how this works mechanically. Are you in BASIC, typing 
away, having just fixed some bit and are ready to SAVE it remotely, so you 
press F3 and voila, it just does it, or do you press F3 and then do something 
to get it transferring, or what?

          I have the cables hooked up and usually, I:
          1. SAVE from BASIC to .DO or .BA
          2. Start up DL on the Mac side, if it isn't already running in my 
~/m100 directory
          3. Press F8 to get menu
          4. Select TEENY.CO
          5. Type S HEXIT .DO
          6. Watch it complete without error (so long as HEXIT.DO doesn't 
already exist, I think) 

          What I'm imagining happen is:
          1. SAVE from BASIC to .DO or .BA
          2. Press F3
          3. Magically a file is sent and received on the Mac (where does it's 
name come from?)
          4. Celebration
          or
          1. F2 from BASIC
          2. Start sending a file (how?) from the Mac
          3. Celebration

          Just curious!

          Will



          On 10/28/22 12:30 PM, MikeS wrote:

             
            Yeah, that's a setup I used for a while, sort of a poor man's 
tablet/clamshell 'convertible. ;-) No problem extending the cable to around 2 
feet.

            Never did use the disk drives very much although I did install a 
second  one; even today while playing with Will's dump program it's so simple 
to plug in the cable to the PC, select download or upload on the PC and either 
BASIC F3 (SAVE) to com: or TEXT F2 (LOAD) from com:, not to mention being able 
to print on the PC and send/receive over the Internet.

            Question for the experts: I have "COM:88N1E" stored in one of the 
BASIC function keys; I don't suppose there's a way to do that for TEXT?

            Back in the day IIRC the DVI and the M100 were both around $800; 
probably still have the receipts somewhere; don't know what that'd be today..

            And yes, the Model T and NEC BASICs are remarkably versatile, 
especially considering the size constraints.

            Definitely unique and, I don't know, friendly in a way...

            m

              ----- Original Message ----- 
              From: B 9 
              To: m...@bitchin100.com 
              Sent: Friday, October 28, 2022 12:39 AM
              Subject: Re: [M100] Notoriously S.L.O.W BASIC posted - help 
speeding it up appreciated






              On Thu, Oct 27, 2022 at 8:51 AM MikeS <dm...@torfree.net> wrote:

                 It might not be so bad on a 200 but my main annoyance is 
having to scroll up and down on the M100's 8 line screen; as a matter of fact 
the larger screen was the main reason I bought a DVI when they came out.


              When they came out? I wonder if they were more expensive when 
they were new or now that they are rare and "vintage". Is that a picture of 
your Disk/Video Interface setup? Looks nifty!


                 For a lot of stuff in the old days I actually used GWBASIC or 
TBASIC to program on a PC; except for screen printing and graphics they're 
almost completely compatible and with a few conditional lines many programs 
could be run and tested on both the PC and the M100.


              There's something I didn't know! I've been surprised at how 
capable the Model T's 8-bit BASIC is. Was it the last one Microsoft made? Given 
what I had expected after seeing the Apple ][ and C64, it's quite a bit more 
advanced. (For example, ON COM GOSUB). And I read that the NEC 8201A version of 
the DVI allowed not only color graphics, but extended the BASIC language with 
graphics commands that I think may be from GW-BASIC.


                 I can understand that some folks want to relive the total 
experience of doing everything on the old hardware [...]


              Sure, and there's nothing wrong with reliving the past. But, 
that's not me. I didn't get to experience the M100 when it was current. This is 
my first time around with this technology, so part of the fun is trying to see 
what it was like back then. I know, it's sort of like people who go camping for 
a week to get in touch with their primitive hunter-gatherer ancestors. Not 
likely to be terribly accurate, but still, it's fun.


                Nevertheless, for just noodling around while relaxing on the 
couch not much can beat the M100.


              I'm beginning to learn that! I still haven't got a true Model 
100. I only have a Tandy 200 because my neighbor was throwing it away and 
wondered if I could use "an old laptop".  I had no idea what it was. But, given 
my experiences so far, maybe I should look into getting the real thing some day.



              —b9


Reply via email to