This was back in the days of when BBS's and file transfers were two separate programs. You'd first mozy around and read messages and the weekly news from from the sysop and perhaps post something yourself if you were brave enough. That usually took about 10 or 15 minutes as content was not in great quantity. Then, you'd drop to the AE line via a special command. You could not go back to the BBS & message section once you entered the file transfer section. This was more a limitation of the early software that we used. Though soon enough we worked around it.
There are three main sections to it.
1 - a basic Mousetext display. It draws the symbols and characters associated with the keyboard equivalents. It also draws 4 symbols, each made from two other individual characters. This is a simple test. Finally it "rotates" a box by flashing 4 sides in sequence. Also very simple.
2 - a spinning cursor at around 300-baud. This is what a caller would see instead of the boring _. This was hot shit back in the day.
3 - a spinning cursor at 1200-baud, and it accepts real input. This is not a fucking word processor, it doesn't support backspace or arrow keys or any kind of editing and correction. You type to the end of the line and then it clears itself and you type some more. If you don't like it, tough shit. You can hit to clear the line. You can exit gracefully with key. Don't type too fast, this in Applesoft basic and it will drop characters!
Speaking of tough shit. I bet this is the only Applesoft Basic program written while making logs, and then flooding the river on which they and their unholy stink drifted away.
The program is full of gosub's and goto's. Lots of text formatting and positioning commands too. It is a quick and dirty proof-of-concept. We later wrote up a pure assembly version that filled a string and presented input to you nicely - for ease of use and simplicity in a BBS environment. It also managed the cursor in a smart fashion; providing full editing capabilities.
Spinning cursors were a simple and effective way to say your BBS had arrived and was technically sophisticated. Some of the best wares came from boards set-up this way.
Well, we did versions where the spinning cursor could indicate disk access, or free space, or error rate during transfer, or the presence or absence of the SYSOP. Things like that. Some versions derived their RPM or spin-rate based on the timing of the UART in the modem and/or clock card. That was done for stability and "solidness". We kept that mofo cursor spinning regardless of what the user and the system were doing!
I have posted two versions:
1- The AppleSoft Basic version that you can read.
2- The same program, but compiled with Einstein Compiler.
Both versions are on the DOS.dsk in the ZIP file I posted. You can load it up in AppleWin or do whatever the fuck you want with it. I also posted the Einstein Compiler and Beagle Bros. COMPACT (from D-Code disk) for your experimentation.
I ran the Basic listing through COMPACT from Beagle Bros. And it got shrunked down a few hundred bytes. Then I ran it through The Einstein Compiler, this produced a huge speed increase. But still not as good as the 50-byte routines we did by hand as the final product.
Well, I present to you what is probably the only program in the entire world that was written in its entirety while the author was taking a shit!
1 PR# 3
7 PRINT "@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _"
10 PRINT : INVERSE : PRINT CHR$ (27);
20 FOR A = 64 TO 95
30 PRINT CHR$ (A);: NORMAL : PRINT " ";: INVERSE
43 NORMAL : PRINT : PRINT : INVERSE
45 PRINT "FG";: NORMAL : PRINT " ";: INVERSE : PRINT "XY";: NORMAL : PRINT " ";: INVERSE : PRINT "Z^";
47 NORMAL : PRINT " ";: INVERSE : PRINT "Z\_";
50 PRINT : FOR A = 1 TO 300
55 VTAB 7: PRINT "_": VTAB 7: NORMAL : PRINT "_": INVERSE : VTAB 7: PRINT "Z": VTAB 7: PRINT "L"
66 VTAB 7: HTAB 1: PRINT " "
70 PRINT CHR$ (24): NORMAL
76 VTAB 7: HTAB 1: PRINT " "
80 FOR B = 1 TO 10
85 VTAB 7: GOSUB 186: PRINT ">|": VTAB 7: GOSUB 186: PRINT ">\": VTAB 7 : GOSUB 186: PRINT ">-": VTAB 7: GOSUB 186: PRINT ">/"
150 VTAB 7: PRINT " "
160 GOTO 320
186 FOR X = 1 TO 70: NEXT
320 NORMAL : PRINT CHR$ (24):H = 1:V = 7
330 VTAB 7: HTAB 1: PRINT ">"
350 GOSUB 900
355 GOSUB 700
360 IF K < 128 THEN 350
365 IF K = 155 THEN 840
370 IF K = 141 THEN GOTO 950
380 H = H + 1
385 IF H = 80 THEN GOTO 950
400 VTAB V: HTAB H: PRINT A$;
409 POKE - 16368,0
499 GOTO 350
700 VTAB V: HTAB H + 1: PRINT "|": GOSUB 910: VTAB V: HTAB H + 1: PRINT "\": GOSUB 910: VTAB V: HTAB H + 1: PRINT "-": GOSUB 910: VTAB V: HTAB H + 1: PRINT "/"
840 HTAB 1: VTAB 7: FOR F = 1 TO 80: PRINT " ";: NEXT
843 POKE - 16368,0
850 GOTO 999
900 K = PEEK ( - 16384):A$ = CHR$ (K): RETURN
910 FOR X = 1 TO 15: NEXT : RETURN
950 VTAB V: FOR C = 1 TO 80: HTAB C: PRINT " ";: NEXT
952 H = 1
954 POKE - 16368,0
955 GOTO 330
If you don't want to download the files because you're scared of infecting yo'emulator, then just copy and paste the sucker into AppleWin and run it thataway.
Edited by Keatah, Fri Nov 18, 2011 3:08 AM.