09.04.2013 Views

Washington Apple Pi Journal, July 1986

Washington Apple Pi Journal, July 1986

Washington Apple Pi Journal, July 1986

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Line 174: An additional command choice to do a disk catalog<br />

has been added, so you can confinn a file name before up<br />

or downloading.<br />

Line 711: This is where the downloading bails out if the<br />

buffer becomes full (Note: there is no advance warning of this<br />

situation).<br />

Lines 726, 740: In DOS, I had to resort to a trick to save<br />

a text me using the much faster BSAVE operation. ProDOS<br />

has the equivalent built in: the "T" parameter designates the<br />

file as type "TXT", and a BSAVE is then used.<br />

Subroutine 2000:<br />

2010: confinns 80 column card is installed<br />

2030: a 6850-type card is in slot 2<br />

2040: an SSC-type card is in slot 2<br />

2060nO: BLOAD the appropriate binary module<br />

2323: for the SSC, a 2400 baud choice has been added<br />

(Note: 2400 baud is apparently too fast for most 80-column<br />

cards, and some character dropping occurs during line scrolls.<br />

Command the sending system to insert some nulls after each<br />

line if possible.)<br />

2510: 6850-type cards should be set to 1200 baud. (The<br />

old <strong>Apple</strong> Comm. card should be modified.) If these cards are<br />

installed with some other baud rate, the menu choices 1200<br />

or 300 will not reflect the actual baud rate. Rather, choosing<br />

"1200" simply sets the card to whatever baud rate its switches<br />

(or wiring) say it is, while "300" puts the card into a baud<br />

rate 1/4 of what the switches say.<br />

Line 2620 and Subroutine 3000: If this is a 40 column<br />

<strong>Apple</strong>, we need to find out whether the user has lower case<br />

display.<br />

4. THE MACHINE LANGUAGE PROGRAMS<br />

SSC.OBJ AND SSM.OBJ<br />

What I have done in the complete Comm-Tenn "package"<br />

is to prepare two separate machine language modules,<br />

SSC.OBJ for the 6551 case, and SSM.OBJ for the 6850 case.<br />

Obviously, any given computer will only have one or the<br />

other card type in slot 2. The BASIC program decides which<br />

one is needed, and loads it. In this article, I have listed only<br />

the SSC.OBJ version. Only a handful of bytes are different in<br />

SSM.OBJ from SSC.OBJ. In retrospect, it would have made<br />

more sense to have only one module, and POKE in the<br />

changes necessary to adapt to the other if necessary. If you<br />

have a 6850 card, I suggest that you nevertheless enter the<br />

SSC.OBJ code, BSAVE it, then use the modification<br />

infonnation in the Appendix to modify what's already in<br />

memory to SSM.OBJ, and BSAVE that.<br />

Another reflection of how this grew like Topsy, rather<br />

than being written anew, is that I have no source code in the<br />

nonnal sense. What I list below is the machine language code<br />

as disassembled by the <strong>Apple</strong> Monitor, and with some<br />

comments added manually after the fact. Actually, the routine<br />

isn't so dreadfully long that entering it directly in hex with the<br />

<strong>Apple</strong> in Monitor is all that difficult, but if you're not that<br />

ambitious, wait for the Disketeria. A highly desirable improvement,<br />

of course, would be to despaghetti-ize the code by<br />

a complete rewrite in Assembly source ... Real soon, maybe...<br />

In addition to the commented code, the following may<br />

help:<br />

1. Cursor management: the old version used a flashing<br />

space for a cursor. This doesn't work with 80 columns, especially<br />

the enhanced MouseText character set. So, NOPs appcm<br />

in S9OO7-9009 and S9015-90l7.<br />

2. Extra code was needed to detect the buffer full condition.<br />

This code is squeezed into S9033-903C.<br />

3. Originally, COMM-TERM made provision for replacing<br />

the back arrow (S88) with the DELete character. Since the<br />

back arrow is now accepted by most systems, and the lie has a<br />

DEL key anyway, this code was eliminated. Thus the NOPs<br />

in $9052-9056.<br />

4. $9077-9079: Old COMM-TERM buffer started at<br />

page $IC (or memory location 7168). This program needed<br />

more room, so the buffer starts at page $20 (location 8192).<br />

5. $90A5-90A9: see note 3 above.<br />

6. S90C5-90D5: The old code simply sent data to be displayed<br />

to good ole' SFDFO (See instructions at 909F, 9012,<br />

and 9072). But many control characters cause 80 column<br />

board difficulties, especially those that switch the computer<br />

back to 40 column mode. Also, the screen clear, Ctrl-L, takes<br />

a long time to process, during which data is lost. So the code<br />

here filters out all control characters except the carriage return<br />

(Ctrl-M). Since this little routine is at the end of the machine<br />

language section, it could be easily modified if you wanted to<br />

only filter out some control characters, or to translate<br />

characters. (One change that I recently realized would be<br />

desirable is to permit Ctrl-H, the backspace, to come through<br />

as well.)<br />

S. CONCLUSION<br />

I encourage readers to try out, improve, and comment<br />

upon this program. I realize it's not terribly elegant, but<br />

perhaps it will give someone the raw materials for something<br />

belter. The <strong>Apple</strong> DOS and now especially ProDOS public<br />

domains need some decent communications software like<br />

those available under CP/M, MS-DOS, and even laptop<br />

computer operating systems.<br />

I am working on ways to use the machine language routines<br />

plus some simple code to perform at least auto-dialing<br />

and other simple "Macro" functions. It's easy to see what's<br />

needed: a series of text files, or file entries, containing the<br />

auto-dial command strings (e.g., AT DT 9868085

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!