************ Topic 17 Date: Thu Dec 19, 1985 DEB [*Sysop/deb!*] Sub: 2400 baud and UartART 2400 baud on a C-64...?! ------------ CHARRINGTON Can anyone pass on some advice on the US Robotics Courier 300/1200/2400 modem? I have one on order...and could use some ideas as to what is a GOOD PD term pgm for it like Comm Term III etc. ------------ LAPTOPS I & a friend both have US Robotics Courier 2400 modems. I've never had any trouble with it & I use many of the arcane S register commands. Its command set is much simpler than the Hayes 2400. (It doesn't let you program European guard tones, CCITT 1200bps, or synchronous operation.) I love the x6 fast dialing mode & the > to redial 10 times. The US Robotics is the modem used by the 5 local 2400 bps BBSs that I know. ------------ DEB Weeel, Courtney, first item on the agenda to note is that a C64 will not *work* at 2400 baud. Some of my favorite 1200 baud PD terminals include XMOBUF, Cand COMMTERM. But Sixth Sense really spoiled me &`I rarely use anythin but 6th or BobsTerm Pro anymore. ------------ CHARRINGTON Hi Deb! I picked up a US Robotics Courier & seems to work great..at 300 & 1200. Question: why won't the 64/128 work at 2400? I had thought 9600 was the top end for data xfer. Don't tell me I gotta buy an Amiga to get 2400?!? There's a C64/128 BBS in Calif that is planning to go 2400 in about 2 weeks. I thought the sysop said he got it all worked out. ------------ DEB Courtney...the C-64/128 is running as HARD & as FAST as it can at 1200. Unless someone completely re-writes the RS-232 drivers/kernal, 2400 baud is not possible. So far, no one has written it that I know of. It just *might* be possible on the c128 in the New Version of Sixth Sense that Rick Sterling is writing, I really know, but could ask. Let's hear it for CBM's Non-UART!!! ------------ CHARRINGTON Please don't be upset...but I up'd a small effort on my part that runs at 300/1200/2400 baud. It should show up in the C64 Telecommunications library in a couple of days. It's called 2400 term & it supports punter or xmodem at all 3 speeds. It does show a few line errors at 2400 when calling long distance, but it successfully downloaded a 73K program between Hawaii & California at 2400. Maybe someone can improve upon it a bit. It's pretty simple, but I was working more to get it completed than get it pretty. Now! Let's see if we can get to 4800 baud!!! Courtney ------------ LFRANKLIN [Mr.Wizard] Why doesn't someone come up with a little UART board for the 64/128 with an on-board baud-rate generator & rs232 level conerters preferably. It shouldn't be too difficult for a halfway decent hardware type. Of course, it wouldn't help those with Commodore modems, but then again, the present hardware doesn't handle anything over 1200 anyway (at least not reliably) so commodore will probably never come out with a 2400 baud modem. But is sure would be a help for those with those non-commodore modems! If anybody is interested, I think I still have 1 or 2 prototyping boards for the expansion socket on the 64/128. ------------ CHARRINGTON I've done a bit more work on the 300/1200/2400 terminal prograam for the c64. It's been uploaded into the telecommunications DB under "300-2400 term". Not Not completely full featured but looks a lot better than the original work. ------------ DEB Courtney...I'll make that term program available right now. Thanks! You ACTUALLY got 2400 baud on the 64 using the existing drivers???! LF...YOU have a board that replaces the UART? Do tell us more..!!! ------------ Message 10 Date: Thu Dec 19, 1985 LFRANKLIN [Mr.Wizard] DEB...no, that's not what I said...what i said (or at least meant to say is that I have a couple of Prototyping boards for the C64 expansion jack in the back...these are perf boards with a card-edge connector to 1 side that plugs into the expansion connector on the back of the C64 or 128. Hardware types can use these to create prototype boards from just looking at the Schematics of the 64, I am thinking that it should not be too difficult to create a UART board for the 64/128...of course, to talk to the board you'd have to talk directly to the hardware, or put in patches to the Kernal RS232 routines to talk to the UART..but this would be the only RELIABLE way I know of to get speeds above 1200 baud....any hardware types out there who want to try it, they are available from Boreas Products in Colorado Springs, Co for 15.95 (the board is 6.5 by 4.5 inches) or 12.95 (for a 4.5 by 4 inch version) &, for those who are interested, the plated thru holes have .100 (vert) by .300 (horz) inch spacing. Their number in Colorado is (303) 593-1274. I'd try to build 1 myself but who has the time? ------------ Message 12 Date: Thu Dec 19, 1985 DAFORMAN I don't know about the C64, but the C128 in FAST mode can do 2400 baud. UART boards for C64 and C128 already exist in all of the MIDI music interfaces. Midi is VERY fast, & the software UART in the computers doesn't have a chance of keeping up so all the MIDI interfaces include a real live hardware UART. I don't know if it would be possible to use a MIDI interface to work with a modem, but it is evidently no big problem to get very high baud rates on a c64 or C128 by adding some hardware. Dean ------------ Message 15 Sun Jan 12, 1986 FAFHRD [Fafhrd] Has anyone seen any Joystick modems for the 64? I seem to recall the Atari being able to handle high bps via joystick port. Any comments? FAF ------------ ------------ BOBR [Bob Retelle] Actually, the real reason for the Atari modems which attaach to the joystick ports is to avoid having to buy the Atari interface module, which is somewhat like the US/ART board being discussed, but costs $100-$200... With the interface module, speeds up to 19K baud can be used. The joyports are parallel, so the serial/parallel conversion has to be done in software, but that's no real problem. Which all goes to say there probably wouldn't be much point in a modem which goes in via the joyports on the 64. When you said 'joystick modem', I thought you were referring to the actual terminal software! My favorite program lets me use a JOYSTICK to control the terminal, so I can just sit back and use the stick to CTRL S, CTRL Q, RETURN, CTRL O & whatever else... I only have to use the keyboard to actually enter text. & at 1200 baud, it's like playing a video game to keep up with the screen! ------------ SPLITR [SpLiT] At one point CBM stated flatly that the C64 would not function at 1200bps, hackers proved them wrong. They also said it would not work at 2400 bps, & again the programmers made it happen. But beyond 2400bps is not possible with the hardware (or lack thereof) present. Mainly because the c644 uses a Soft-U/ART. What do you expect? But a hardware U/ART inerface is not only possible, not only been done (MIDI, as stated earlier), but I am designing a multi-port expansion for the C64. This little baby is a computer in it's own right, & is expandible to 16 ports. We all know the C64 is not multitasking, but a tricky programer can make it multiuser if only he could get more than 1 stuck in the back of the thing. Don't belive me? Diversi-dial for the Apple ][ multiuser but not multitasking of course. With this in place & with the software drivers I am writing, a multiuser RTC or CB or Multiuser game (any maybe a multiuser BBS also) can be rigged. Since the expansion itself is a self contained computer, it handles all I/O (using smart software) & lets the C64 do what it wants until it requests something from the expansion. The system has RAM & EPROM (initilizing) and is capable of running the 6 U/ART system independent of the C64. At this time, most of it is on paper still. The testing prototypes have proved it is possible. My concern is that the system will be more expensive in the end than getting something that could do it already. But in the interest of hacking out the C64, how can I resist? SpLiT/ /iNfInItY ------------ Message 19 Sat Jul 05, 1986 LAPTOPS It says in different messages here that there IS 2400 baud code & then again that there ISN'T 2400-baud code. If any of you DEVELOPERS are interested, I've got 2400 baud code THAT WORKS. Even in full-duplex (both ways at once), it works fine & doesn't slobber all over the machine. The catch is that it's not free. After all, this is the age of Reaganomics (you only get what you pay for), & I'm not a tenured professor. Paul Schick (608) 258 7065 ------------ Message 20 Sat Jul 05, 1986 SURVIVOR [S. Gutknecht] There are some FREE 2400 baud terminal programs, they are not loaded with features, but they DO work. ML is the secret. Question: what are the 2 open bytes for 2400 that are a TRUE 2400?^ ------------ CHARRINGTON There is a 64 terminal program on GEnie that suppots 300/1200/2400. I wrote it. It ain't fancy, but it works. Maybe someone will add some bells & whistles on it. It's called '2400 term' Courtney ------------ Message 22 Tue Jan 13, 1987 PFOUNTZ [Greg] With the prices rapidly dropping on 2400 baud modems ( Ijust found 1 for $229), I feel we are going to see more & more c64 owners wanting to move up to 2400. I just reread the message thread in this topic (no messages posted since last summer) & last comment made was that it does work, but not as good as it should. When sending "AT" commands to the modem, quite often the command will garble and/or not take. Makes autodialing at 2400 a real chore. Once online, communications is pretty good. I have noticed about 25% retrys while receiving a file using XMODEM but zero errors while sending. Guess this kind of confirms the 64 is overtaxed at 2400?? I realize that a C64 running at 1 meg will have a hard time buffering text at that speed & that a 25K or less capture buffer (common in most terms for the 64) will fill up in the blink of an eye. All I am trying to do is get a stable 2400 baud (no garbage when sending the AT commands), then we can worry about keeping up with the flow. Anyway, just thought I would ask again, has anyone made any more progress since Charrington's 300-2400 TERM?? I see the same errant characters when sending AT commands using 300-2400 TERM as I do with the term in my BBS running at 2400. I am hoping to get the baud rate clean enough to make it a regular part of Color 64 BBS. But I need to get a more stable 2400 baud. Any information is appreciated. Also, am interested in any hardware "UART" add-ons for the 64 that would help. ------------ Deb I have used both BTPro 128 & Sixth Sense 128 at 2400 baud..flawlessly. Will keep my eyes open, Greg, I agree with ya, its going to be more & more affordable soon, & I'm glad to know that someone is working on a fix for it now. ------------ Message 24 Wed Jan 14, 1987 KEVIN-S. [KeS] Darn, I remember someone that was putting out an interface for the expansion port that was to include a "real" UART...back in the new products section of 1 of the popular Commodore mags last spring maybe? Of course, then you have to program something to look for it there. ------------ Message 28 Wed Dec 16, 1987 S.PROCTOR1 Greg: I don't know what you've tried with the 2400 baud, but I hve a few suggestions. I found the VIC-20 appears to handle HS much better than the C64. I think the reasons are both the VIC generates 0 wait states, & the nested MNI. On the C64, I occasionally get garbage when typing & receiving data at once, like an echo, and most commonly during a wordwrap. Usually I get 0 error transfers, with my C-64. I've found 1 problem with this nested NMI, the RS232 gets disabled if I hit RESTORE instead of RETURN, requiring a COLD START to restore this. It may help to rewrite the c64 routines to RAM, using no variables, ie. eliminate the variable stop-bits, data-bits, & parity. This will eliminate the constant checking of RAM, but may not add alot of time, I haven't looked into this too closely, yet. It wouldn't be hard to intall a UART in the C-64, but you will have to avoid the I/O lines, as many cartridges use them (between my TURBO LOAD&SAVE, & second SID, its fully addressed, not to mention IEEE and RAM use them.) This would mean multiplexing the high data lines with the chip-select of something, like a SID or CIA, it doesn't matter, as long as your routine knows where it is. This will eliminate the mirrors, for those programs that insist on using them, to try 6 hide what its doing, for a simple protection scheme. I hope I have given you some ideas to work with. I haven't worked too hard in this area, but with a BBS I'm working on I had to consider these problems, & possible solutions I could use in the future. Steve Proctor ------------ Message 29 Thu Feb 23, 1989 DEBS-GUEST I've developed both single-port & multiport UART boards for both the expansion port and the user port The real trick was getting 'true' 8-bit control with the user port. With that done, as you suspect, the rest was pretty cut & dried. You can check on the progress of those boards as a formal product with the boys at SOFTECH in Lexington, or author Bill Brier of Chicago. Both Softech & Bill are working on different releases of the same devices. The four-port device can support 4 ports SIMULTANEOUSLY, in full-duplex at speeds in excess of 2400 baud & can suppot a composite rate of over 11,000 (thousand) baud. The single-port version will do ROCK SOLID 17,800 baud... I use that 1 myself in IBM mainframe to CBM 64 interfacing. Lloyd Sponenburgh ************ Topic 101 Sun Jan 22, 1989 P.HALTON Sub: 1200 baud xmodem upload problems another solution to 1200 xmodem uploading problems you don't have to adjust the baud rate factor ------------ Message 1 Sun Jan 22, 1989 P.HALTON A few weeks ago I started using a 1200 baud modem (the commodore 1670). I adjusted the baud rate factor & opened the modem channel with the settings open2,2,0,chr$(0)+chr$(0)+chr$(61)+chr$(1). Everything worked great except when I tried to upload using XMODEM. I was told that it was a matter of fine tuning the BRF, but no matter what settings I tried, I couldn't get uploading to work. I have discovered that the problem is not with brf. The problem is caused by the number of stop bits appended to the end of each character frame. More precisely, the lack of a sufficient number of stop bits. Here is my reasoning. When you send a byte to the modem it is stored in the UART transmit queue. The UART then sends it to the modem bit serially preceded by 1 start (sync) bit, & followed by 1 or more stop (idle) bits. The start or 'sync' bit has the opposite polarity of the stop bits, & is used by the modem to get in step (synchronize) with the UART. This synchronization allows the modem to correctly receive the subsequent data bits. Stop bits are appended to the data bits to insure that the next start bit will be seen by the modem. The stop bits act as a sort of 'line idle' state. Unfortunately, at 1200 baud on the commodore's software UART, 1 stop bit does not seem to be enough to allow the UART & modem to stabilize in the idle state. Thus, the next 'sync' bit is not always seen by the modem synchronization goes right out the window. This results in garbled information arriving at the modem from the UART. This synchronization problem doesn't show up when typing characters at the keyboard,because, no matter how fast you type, the UART is always way ahead of you, & thus there is always alot of idle time between characters. Uploading often fails because most terminal programs send XMODEM blocks to the UART transmitt queue in 1 qiocl blast. There is no delay between characters of the block, & thus, the only idle time is provided by the single top bit at the end of each character frame. If you are not able to modify the coding of your terminal software, the only suggestion I have is to try setting it for 2 stop bits, or more if possible. If you are writing your own terminal program though, try sending the XMODEM blocks byte by byte, allowing the transmitt queue to empty briefly between bytes. The following code segment has the effect of appending an additional 10 or so stop bits to each character frame. A little math will bear this out. ldx #2 ;modem file # 2 jsr chkout ;connect output channel to modem lda #0 sta 162 ; clear low byte of software jiffy clock wait lda 162 ;let 1/60 second elapse before sending a byte to the UART cmp #1 bcc wait ldy #0 sty 162 ; reset timer for next byte lda (251),y ;assumes that block is pointed to by 251, and is stored ; beginning at an even page boundary jsr chrout ; send to UART inc 251 ; set pointer to next byte dec bytecount ; assumes that 'bytecount' holds # of bytes left to send bne wait jsr clrchn ; reset default I/O channels rts At 1200 baud, the UART can transmit roughly 20 bits per sixtieth of a second. The above routine passes it 1 byte (10 bits with framing) per sixtieth of a second. The remaining 10 bit capacity of this interval is idle. This 10 bit idle time after each byte insures that the modem will 'see' the start bit of the next character frame, & properly synchronize with the UART. The trade off here is that it will take roughly 2.4 seconds to get the entire XMODEM block into the transmit queue, cutting the upload speed in half to about 600 baud. However, it is still a lot better than 300 baud, but just as reliable. Even if this theory is right off the wall, it sounds pretty good to me. More importantly, the introduction of brief delays between charaacters works. I would welcome any discussion on the matter. ------------ C128.CPM [Bill] At 2400 baud, a 1K block takes about 1 second (guessing) to xmit, with a short ACK, then another block. Your brief delay would slow this down too much. You are compensating for the lack of a hardware UART. ------------ H.HERMAN1 PH, The stuff you posted is really out of my league. However, you keep referring to a UART, which is non-existant in both the 64 & 128. I recall having read postings while Bob Lentini had his support BBS running, about how difficult he found writing code to compensate for the lack of the UART. At one time he mentioned that half the time he spent on writing BTP128 was dealing with this prob. He seems to have done very well, since I routinely up/download & post messages at 2400 baud wtih BTP128, without the need to add nulls, delay timing or even fool around with the hi/low trim settings. [BTP seems limited to 2400, but I have read postings by Fred Bowen that he has his 128 running a null-modem at 4800 baud, & I have seen postings by others that have achieved 9600. 9600 baud seems to be the absolute limit, however. So, even without a UART, some nice transmittal speeds can be accomplished thru code control.] Now that I have said all this, watch some line noise come in & mess up this posting..... :( ------------ WC.COLEMAN [GeoOp] 4800 baud is possible in fast mode if the term is pure ML (but it's a near thing)! 9600+ is possible for printer dumps & such where you are only going in one direction & little processing is involved. -WC ------------ EMJAY I used 9600 baud to transfer between my TRS Model 100 & the C=128 using a null modem, CS-DOS for the C=128 & a CRC XMODEM term program with the TRS 100. CS-DOS is the only C=128 terminal program that I know that has settings for more than 2400 baud. Am I mistaken?? I have no problems with these transfers. By the way, I use a Supra 2400 & it has never required any adjustment at all in any of the half dozen term programs that I use. It worked straight out of the box & with no changes to any prior terminal programs other than the change for BT for a Hayes. ------------ C128.CPM [Bill] Yup! CS-DOS is one of the few that can do 9600 Buad. My Supra worked great, out of the box, as described above. ------------ P.HALTON Howe, A uart, universal asynchronous receiver transmitter, is usually a hardware device which converts data from your terminal to a format that can be transmitted over a communications link. At regular intervals, it sends 1 bit of each character to the modem which puts that bit out on the phone line using either frequency or phase shift keying depending on the modem. The c64 doesn't have a hardware uart. To cut costs, they simulated the functions of the uart in software. That's the principle reason why they have so much trouble with timing sensitivity. But nontheless, it is there. It's simply written in software. simply written in software.