Steve Deppe (Ille Homine Albe) archived his emails (to 5.25“ floppy disks!) back in 1991 and he saved the following exchanges with Rob (Digital Man) discussing some of the earliest development of “the new BBS” (which you can see here had been given the name “synchro_net” by April of 1991). These message exchanges took place on Vertrauen which was still running WWIV v4 BBS software at that time.
Note:
We talked a lot by telephone (POTS landlines!) in those days too, so there's significant parts of these conversations between Steve and I, not represented here.
27/27: It backspaces...it wraps...it scrolls...it rings... Name: Ille Homine Albe #4 @2 Date: Tue Mar 12 20:42:30 1991 New from rAdWaReZ... putlc(int)! And if you act now, we'll throw in a link map and a batch utility! Free! (.exe not included) It always returns zero. It could return something, like the current video mode(?) The argument (16-bit int) can be: 1) 0000-00FFh Output character 2) 01xx-FExxh Set Current Attribute 3) FFC0-FFFFh Set Screen Length (Initialize) 1) Outputs all characters except 7, 8, 10, and 13, which perform their assigned functions. 2) Any attribute combination can be set except 00 (black/black) and FF (white/white, high, blinking). If the low byte is zero, no other action is taken; if non-zero, it is output as a character. 3) The screen length is the number of lines minus one, negative, so the minumum number of lines is two (-1, FFFFh). A regular 25-line screen would be set with "putlc(-24);" The best idea is to initialize it before you use it, that way it gets the current cursor position, display page, and screen width from the BIOS. Else, you end up with set defaults. ----------------------------------------------------------------------------- (1/2): RE:putlc Name: Digital Man #1 @2 Date: Wed Mar 13 00:09:12 1991 Thanks.. It's late (just got home from band practice) and I must sleep now. I will certainly check it out tommorow. Thanks again. (2/2): Putlc... Name: Digital Man #1 @2 Date: Wed Mar 13 00:37:11 1991 I take that back.. I decided it was no big deal to replace the putch calls with putlc (assuming they worked the same) and tried it out.... Well, it didn't exactly work. Have you tried it? I just added putlc.obj to the end of the bbs.prj file... it linked it in and all... strange... It's pretty fucked up - none of the extended ascii chars or and color came out and the cursor position was quite odd. Have you tried it in the bbs yet?... well, I've got to hit the hay. I'm sure you'll figure it out. See ya! - Oh, and you need to knock off that attitude of yours in Gwar... ----------------------------------------------------------------------------- Yow... It works... I'll upload my copy with the executable so you can try it out there. I've added some routines to smooth out the interface. The .obj file now contains: int putlch(int); display local char, or change current attr. void lclini(int); initialize, set main window size void lclxy(int,int); set cursor position int lclwx(void); get current column number int lclwy(void); get current line number How did you include putlc.obj in the linkage? I didn't fool with it much before I decided to just merge it into the standard CL.LIB file. Then they all act like standard C routines. Seems like some displays are output faster than others, and I noticed you're using cprintf() a lot. I think the file listings in the transfer section scroll faster than posts. Maybe it's just the line length. Control characters increment the column count, there should be a way to avoid that. When I used colors in posts or mail, I couldn't get to the end of the line before it wrapped... To : Digital Man #1 Title: P.S. Name: Ille Homine Albe #4 @2 Date: Wed Mar 13 18:22:15 1991 Just an after-note: the copy of the bbs source I was working on was the March 10 version. I included the source for reference, so you could see what I did, but it's not neat, since it has to be re-done anyway. Look at the interface (it has to be made more efficient) and let me know how you would prefer it to work. I'll be "out" tonight, but leaf me some mail or a doughnut or something. ----------------------------------------------------------------------------- (4/4): New stuff Name: Digital Man #1 @2 Date: Tue Mar 19 01:54:38 1991 Umm... the logs are fully implemented now.... The version you have now has a major new user bug that I fixed. System data (statistics) is now tracked in the system.dab file (auto-created)... but the daily reset isn't written yet. New ultra cool commands: "//STATS" lists the system statistics... '"' from the main or xfer menu allows the user to enter a command string that will execute.... ^=Ctrl... example: "t2l^m will go to the xfer section and list all the files in dir #2... it's not really any faster but it's neat. Linefeeds are now ignored.. finally... on input, so macros are killer. ----------------------------------------------------------------------------- (1/1): Hey you! Name: Digital Man #1 @2 Date: Thu Mar 21 02:40:40 1991 There weren't very many changes... real easy! Works GREAT! Real fast.... Thanks a BUNCH! Say, did you know that I had a macro for ^L (12).. it's FF... oh well.. I guess there's no need for the cls() function. A outchar(FF) would do just fine... 'cept if I wanted to do a screen of X's.. hm.. I foget, but I think I don't convert anything less than a space to X.. I foget.. well, anyways, it's late (2am) - I'm stoked. I'm probably not going to make any changes now till friday. I have to set up my drums tommorow night at the BR. Agenda: F2=Full screen system/user statistics, Find text in file descriptions, Flags saved as hex in user.dat and more... Bye. digital man To : Digital Man #1 Title: Duh gee Tennessee... Name: Ille Homine Albe #4 @2 Date: Thu Mar 21 02:58:34 1991 RE: Hey you! Did you put the changes from the one I uploaded into the one you had already? or did you put the changes from the one you had into the one I uploaded?...because the changes I made were splattered all over... Yeah, I saw the FF, but I'd changed clrscr()'s earlier. I think there may be one or two putlch(FF)'s. Was it putchar(FF)? Hmm... Let me know if any bugs happen. I doubt there'll be any, though. If you looked at that LIOTST routine, I think I tested them in more ways than you're currently using. Oh, I forgot to mention lclatr() returns the previous attribute that was set before it sets the new one. Bi bi bi bi bi.... ----------------------------------------------------------------------------- (1/1): Hey dude Name: Digital Man #1 @2 Date: Wed Mar 27 01:27:04 1991 I figured out the transfer section idea.... Libraries. When you enter the transfer section you will end up in your default library and '*' will list the directories in that library, /* will change the current library. What do you think about the scans? Should they search all libs by default, or should there be a '/N' & '/S' command? I was considering calling them volumes, but I'm pretty sure I like libraries better. Now, quite a few bbs programs have conferences, or SIGs (special interest groups)... basically the same ideas the libraries/directories idea in the transfer section, but in the message section. You have your main message bases (SIGs) and then you have sub boards off of those... Vertrauen might have, Public, Pirate, Netted and Elite or something... I don't know.. it's only really handy if you have a million subs, but some boards do! The have like 10 or so subs per SIG and they have SIGs for old people, programmers, techies, trekkies and preppies! I haven't had very much time to work on the source code.. I'm making a lot of changes at once. It's kinda scarry. I wanted to know what you thought of the bi-level message base idea though, before I implemented it. It really wouldn't be much of an advantage for Vertrauen, but quite a few PD board out there would use it.... ----------------------------------------------------------------------------- (3/3): Oh man... Name: Digital Man #1 @2 Date: Thu Apr 04 01:20:07 1991 mega changes... Things to check out: //RAW (main menu) ^R (anywhere -r0dent input) ^O (anywhere -r0dent output) The defaults section... (crazy cursor) The terminal (from the WFC) the 'V' command in Uedit or ALT-S (toggle crazy cursor) ummm...... lot's of little bug fixes... Caller log ('L' command and when you log on) Auto-Message Sysop is ? stuff ----------------------------------------------------------------------------- Two new options: 1) lf is output as cr/lf 2) tabs are expanded at 8-column boundaries The argument to lclini(int) is treated as two bytes. The high byte, if non-zero, sets or resets the two translation options. If the low byte is zero, the screen is set to the number of lines the BIOS thinks it is. The function now returns the number of lines set, so you can find out. E.g., lclini(1<<8); /* no lf translation, tab expansion off */ lclini(3<<8); /* lf output as cr/lf, tab expansion off */ lclini(5<<8); /* no lf translation, tab expansion on */ lclini(7<<8); /* lf output as cr/lf, tab expansion on */ i=lclini(7<<8); /* translation on */ ... lclini(1<<8+i-2); /* set to 23, 41, or 48 lines, translation off */ The object assembles to work with any memory model. Use masm /Dmm=x where x if the character s, m, c, l, or h. Regarding the next production, there's a bit of a problem calling any C routines in the bbs from an interrupt routine, which is I don't know how to set up the segment registers. I think I'll have to read and write the com port directly. And now, a poem: Do you have MASM, Or do you not? You told me once, But I forgot. ----------------------------------------------------------------------------- (2/3): Hey mon... Name: Digital Man #1 @2 Date: Wed Apr 10 01:18:16 1991 -ey, mon... braid yo hair for a dolla. Got big buds in bock mon... come in fa some cajun chickun. Need a toxi, mon? (wearing a red and green striped hat....) Okay, well for what I was really mailing you for (assuming that this gets to you and not some lamer on the board.), I've been checking out Borland C++ very intensly at work recently (since they bought it all legal and everything, and I've been using it there), and it has some pretty killer features that I thought would benefit the development of 'the bbs'. For example: It comes witha protected mode version of both the command line and integrated versions of the compiler that use all your available extended (or expanded) memory for compiling, linking and swapping! I thought that was trick.. couldn't use the protected mode versions at work though, cause I only have a meg my machine there, and it need 705k extended minimum. The editor (programmers' platform - corny) is pretty trick with all the clipboard, editing and windowing features, and it's AWESOME project facilities... granted, I wasn't going to write the bbs in C++, but this is Borland's latest ANSI 'C compiler as well... it only tries to compile files as C++ that have a .CPP extension. So, I installed it here at home, freed up a meg of extended and ran it... it complained about me not type casting my malloc statements, but other than that compiled just fine (afer I created the new project file format). Then I exited and looked at the .EXE file.. Remeber how I told you that the program at work compiled to 500bytes smaller as a .C file, than as a .CPP file? Well I think it would have been even smaller as a Turbo C v2.0 file... The BBS.EXE was 31k bigger! That's %15 man! What slop! The only thing I can think that would explain this is that they're 'supposedly' using new HUGE arithmatic or something, so use of HUGE pointers is much faster now... Ha... I think I'll stick with the 'slow' HUGE pointers and keep my %15 of memory. Bummer though.. it was nice having 900k free to compile with! (3/3): still more 'c shit.... Name: Digital Man #1 @2 Date: Wed Apr 10 01:36:59 1991 Well, after learing about how quickly the stack grows in 'C, I decided to check out the bbs code with this in mind... hm... much optimization needed. I had several functions the xfer section that were similar and some functions were unnecessary deep (functions calling functions calling functions etc.) and I could just see the stack growing in my minds retina (and what big eyes you have, grandma!). First, I decided to make two functions out of eight. (I put the functionality of newscan() and dirhdr() into listfiles with an option to not print the directory header - for future use. I put the functionality of download(), editfiledat(), multifileinfo(), removefiledat() and movefiledat() ->new function into listfileinfo(). The brought the .EXE down 6k! (under 200k again!) and eliminated about 6K of source code! (Ha raw!) - and this is just the beginning! I figured I had better start cleaning up before I'm too far along and lose sight of simplicity (like our good friend, Wayne). What do you think about writing the COM routines in ASM? You could define the global data there.. (the buffer pointers have to accesable from the 'c functions, or write an ASM routine to set the pointers to NULL - that's all I ever do with them -pointers, meaning Head and Tail pointers (combufbot and combuftop). Then you wouldn't have much trouble with the interrupt routine (since you'd write it).. I don't think it'd be that hard. Maybe I should wait till you've done the DOS interrupt routine(s) before I suggest anything else... Anything you do to help is greatly appreciated. Let me know if I'm asking too much of you (but programming is fun, Steve!). Well, back to the source.. I'm going to see how much I can chop away at this thing before I start adding more functionality. Se3 y4 l4t3r m0n. ----------------------------------------------------------------------------- (1/3): Com routines Name: Digital Man #1 @2 Date: Sun Apr 14 17:35:56 1991 Perhaps, we should have a Sysop Defined Output buffer... There is a mod out for WWIV to have an output buffer (NEWCOM.ZIP in the PD Comm directory). I figure you can have the size of the buffer specified in the node.cfg file. What do you think? The most important thing is that 'SPACE' (or Ctrl-C or Ctrl-X) clears the output buffer. Otherwise the remote user would have no pausing or aborting power... yeah, Pause wouldn't really work right either unless you halted the output buffer immediately. Hmm... just a thought. I took some time and looked at a few bbs oriented things in the file section today. I looked at Remote Access BBS (written by a group of guys in Australia). I didn't run the actual bbs, but the configuration program was pretty hot. It had a shitload of Sysop defined parameters.. (including the size of the outgoing buffer!). I looked Zedit (a full-screen editor that does it's own com i/o). Not bad, but I'm not sure that it's all that useful. My biggest gripe is that all the full-screen editors clear the screen before you start the message. I often like to look at the message I'm replying to as I type mine. I'd like to have a full-screen editor available on the bbs... hmm... maybe I'll just make the local editor always ED (or whatever you specify in node.cfg)... just need to create the file with the header info before I invoke the editor and hope that the sysop (or whoever's local) doesn't mess it up. Back to Remote Access: It's mainly intended for those sysops running Desqview (or topview or double dos or whatever). I thought - What an idea! I can add a node without the expense of another machine. Just run desqview and add a modem... (once I'm up with the new software). But I guess you need an output or you get degredated performance. That's why that one guy wrote the NewCom mod for WWIV - for multi-tasking sysops. You should take a look at his mod... I'm not sure that the pause would work correctly... maybe it would... hmm.... Well, anyways, I have anonymous message support now in the new bbs! ----------------------------------------------------------------------------- Yeah... The farther I went through that application the dumber it got, which was quite an achievement considering how it started...! So it is WWIV? That's pretty sad. I should create an application for them with questions like, "explain why I should even LOOK at your juvenile distortion of WWIV..." If you're thinking of multitasking, an output buffer is a good idea. It doesn't have to be big, even 100 or 200 bytes would do. I don't see any plus in making it dynamic, though, unless there's a maximum (like 512 bytes). If it's totally dynamic, that's a DOS call to allocate the memory, and then if you ever want to do something like shrink the bbs, you have to fool with it. See what I'm sayin'? Yes, indeed, i/o buffers are always flushed on an interrupt (abort/break). Your second letter ended in mid-line (mail pointer confusion?), while you were talking about protecting the bbs source: "...some way or another... Perhaps, I could just give .OBJs Mail {?} :" Was there more?/ (1/1): Yes, Name: Digital Man #1 @2 Date: Mon Apr 15 11:53:00 1991 RE: Yeah... There was much more, but fucking WWIV.... you know... Yeah, I've been talking with mike a lot lately about how to protect the bbs from r0dentialism and possibly making a little money (?). I like I should give out the executable as shareware (if you use it, you're 'supposed' to pay for it) and if someone wants the source (and most WWIV sysops would), they'd have to send me a check and then I would send them all the source except for say, MAIN.C and LCLOLL.ASM... in MAIN.C would be an encrypted registration number that appeared at the NN: prompt or something (the logon code is in MAIN.C) and like do a checksum on one section of the .exe to make sure it hasn't been tampered with (the beginning, made up of MAIN.OBJ and LCLOLL.OBJ). Is that possible (to checksum just part of an .EXE). If you always linked it in the same order and used the same OBJs, wouldn't the first part of the EXE always be the same? Well, anyways... that just to keep it somewhat copy-protected. Some people don't give out source code at all. But I don't think I'd get any money if I did that. That's what most sysops like about WWIV - being about to make it 'unique'. Wayne bell only sold the source to the BBS, not to his INIT.EXE which is necessary for initializing the bbs (creating all the data files and menus and stuff) and for changing system parameters later (modem shit, sec levels etc.) You can't go too far with WWIV without the source to INIT. This was to keep most r0dents from tinkering with his code and calling it their own. I wouldn't want what's happened to WWIV (Carnage, Telegard, Hack, etc.) to happen to synchro_net. EVERYBODY's got the source code too. It's 'supposed' to be $50.. I think the non-removable registration number would be cool. Of course I'd need your help in making it as non-crackable as possible, Mr. CrackMaster! ----------------------------------------------------------------------------- To : Digital Man #1 Title: Hey Mnan! Name: Ille Homine Albe #4 @2 Date: Sun Apr 28 03:22:26 1991 Fuck int 21h/40h! See what I'm sayin'? Think about what happens if you redirect a program's output: it goes to the file AND over the com port. I was trying to figure out how to check to see if the handle was redirected, and it was totally gay. Completely flaming dancing and singing, tossing flowers in the air, all pink and pastel, and the process would have to be done for each character. Too special. But then I got a terrific inspiration: INT 29h! It's only used to output a single character to the console, and every character that dos puts to the console goes through it! So it gets characters as a result of int 21h/40h, but not if output is re-directed. It works with my ansi driver (the one with the special VGA crazy-border feature), it works with NO ansi driver, but of course I don't know whether it works with the standard dos ansi driver. And I can't download it to see, Rob, I just can't!1 Can you check it for me, please? Huh, Rob, please? Run pc- watch, include int 29h, and see if characters you type at the prompt make it go... Or if you have that device-driver listing program I wrote, run that and see if the attr word for CON is 8013h. k? You know what else? Instead of intercepting int 16h/0,1,10h,11h, it would be way easier, faster, and cleaner to use int 16h/5 (push char/scan code). It sucks that it's an AT-only function. ------------------------------------------------------------------------------ "The Way," I think, to handle pausing is to do the checking just as you're doing it now, to pick up the local pause, and for the com i/o routines to do it also, to pick up the remote pause. So if you hit ^s locally, the bbs stops, but the user screen may continue to scroll, until it catches up to the remote screen, and then the two will look the same. If the user hits ^s, his display stops instantly. The local display is at this point ALREADY ahead, and will probably display the remainder of the current line before it detects the output is paused. In any case, if you check for a remote pause before putting up the prompt, you'll always know if the user is pausing, since the prompt won't come up until he releases it. In other news... how does our good buddy Wayn3 abort pkzip? If you hit space-bar during a "V" command, does he actually interrupt the program? Or does he just throw the rest of the output away? ------------------------------------------------------------------------------ (1/1): externals Name: Digital Man #1 @2 Date: Mon May 06 23:13:20 1991 Yeah, the pause setup you mentioned is the way to go... (check local in inkey, and have incom do it's stuff setting a flag.... right?) As for hitting 'space' while listing a zip, I guess that's one of his external modes, cause you can't have food fight abort if you hit space... I'm not sure about that one. It does abort if you hit space or ctrl-c or ctrl-x. Can you just make a mode that will abort on space? digital man ------------------------------------------------------------------------------ [input] any character should clear field. Inactive users? Clearing Note doesn't put user through test. ------------------------------------------------------------------------------ (1/1): Dude Name: Digital Man #1 @2 Date: Wed Jun 05 00:24:46 1991 I waited till midnite for your call. I called and it was busy. Sorry, but I got to hit the hay or I don't get up in the morning (I'm kinda tired too.) I certainly didn't see anything obvious. I recompiled RTST and ran it. I didn't figure out the ascii values. We'll have to do this another time I guess... I'm tired. Good night and good luck! digital man ------------------------------------------------------------------------------ To : Digital Man #1 Title: Hey mnan!@*8 Name: Ille Homine Albe #4 @2 Date: Wed Jun 05 13:35:13 1991 You probably think this is Telix I'm using, don't you? WRONG!$@#@2 It's... RTST.EXE!@!@$^#$*&^*$# The hottest new term program from rAdWaErZ! It doesn't seem like the same bbs without a status line, and with the strange hex information the interrupt routine keeps writing at line 6... Well, let's see... Telix costs $45, I should be able to get... um... about $1.50 for this gadget, don't you think? Or maybe someone will write a bbs and incorporate these nifty asm routines... you just never know... ------------------------------------------------------------------------------ ERROREM DETEGI! "I have uncovered the error." As in "errorem detegere," "to uncover the error," as opposed to "errorem detegisses," "you might have uncovered the error," or "errorem ante Veneris diem detegerimus," "we will have uncovered the error by Friday..." I had to change a "jz" to a "jnz" to make it work. Actually, it's by luck it worked at all. It was intercepting the vector for int 08 instead of int 0C, so it was actually running off the clock tick interrupt. When I realized that, I looked at my prompt, and it said 10:10, then at my clock-radio... and it said 10:21! But at least I know how much time I spent running the test program. This is the sort of thing I would have caught if I'd gone through my usual anal-retentive method of following the program flow in a listing before trying to run it. But I thought, what the hell, just takes a second, and it might work! Damned clock. If it had locked up, like it should have, I would have hit the listing right away, et errorem detegerim! No really... Virtus in segnitia est! (Romans!) ------------------------------------------------------------------------------ To : Digital Man #1 Title: yo... Name: Ille Homine Albe #4 @2 Date: Wed Jun 05 13:39:28 1991 You know what sucks: my tiny c program is so fast, the receive buffer only ever has 1 or 2 characters in it at a time... bumm3r... Alright, now I'm ready for the BIG test... I'm going to DROP DTR!! If it works, I won't be able to tell you, so if it doesn't work, I'll E-mail you again with the sad news. here we go... ------------------------------------------------------------------------------ To : Digital Man #1 Title: 0k. Name: Ille Homine Albe #4 @2 Date: Wed Jun 05 16:44:21 1991 There's a file in #27 for you to try out. Meanwhile I have to compare the test source file I've been "folling" with against the original and see what needs to be changed, and get on with the rioifc() stuff. I'll be out on a hot date tonight, but leave a doughnut if you find any bugs. To : Digital Man #1 Title: Duh... Name: Ille Homine Albe #4 @2 Date: Wed Jun 05 18:18:04 1991 Almost forgot... that one I uploaded contains debug routines that will die on anything but a 386. I just uploaded RIOTXT.ZIP which contains a .OBJ with those routines removed, in case you should want to try running the bbs on the xt. I hope I don't think of anything else... (meaning that there isn't anything else to be thought of...) ------------------------------------------------------------------------------ 33/34: Yep Name: Ille Homine Albe #4 @2 Date: Fri Jun 14 06:36:16 1991 Your USR manual says about five thousand times that if the uart rate is faster than the line rate, HARDWARE FLOW CONTROL IS REQUIRED. This is another way of saying that the modem will suck characters faster than it can handle them. And if you think about it, why else would there be a need for hardware flow control at all? It could just stop taking characters if the buffer got full and there would be no problem. Sloppy firmware, man. I found a sequence of about seven instructions in outcom(), after it checks to see if it can put the character directly to the uart, and before it actually puts the character in the buffer, during which a transmit inter- rupt could cause the pausing problem. The interrupt routine would see no characters in the buffer, so it would exit with no interrupt pending, and then outcom would finish putting the character in the buffer, and nothing would happen until some other event (like receive data available) caused an interrupt. This is all highly theoretical, of course, but I've fixed it, so if that was the problem it should work alright now. 34/34: Other News Name: Ille Homine Albe #4 @2 Date: Fri Jun 14 06:36:30 1991 I noticed that the original list of C defines show CTSCK as being 0x800, but it should be 0x1000. Did we cover this on the phone at one point? If you are using 0x800, it should have no effect. There may have been a hole in the isr due to the order in which it was doing the checking for this and other conditions on which to exit, but I straightened them out also. dtr() now waits 165-220ms if you call it with a number >1 and DCD is off when DTR is put low. If DCD is on and the arg >1, it only waits until DCD goes away (which would mean the modem saw DTR, in which case there's no need for any extra delay). rioini(0,0) now preserves the state of DTR. ------------------------------------------------------------------------------ Name: Digital Man #1 @2 Date: Fri Jun 14 19:13:14 1991 RE: Other News or however you spell that thing... that's great man... Yes, I had CTSCK still at 0x800. It did something, though. It made the com i/o not work. I'll change that to 0x1000 and re-link with the new OBJ. Yes, I remember now that the manual says that the modem has to have hardware flow control if the DTE to DCE rate is faster than the connect rate, but I forgot this fact when you asked: "Rob. Hardware flow control. Why?" And I remit my statement about running telix with the modem set the same way and working fine.. I never disabled hardware handshaking and tried telix or WWIV. Should have. Sorry. (are you mad?) BTW, I'm going to Seattle a week from Sunday. Those CDC guys are just gonna love my hair! I gotta wear a tie and be a respectable representative for Mini Control. It'll be fun. But the next week is a crash course in IEEE-488. ------------------------------------------------------------------------------ To : Digital Man #1 Title: d00d Name: Ille Homine Albe #4 @2 Date: Sat Jun 15 09:14:06 1991 Everything works by golly. Uedit stops and gives a prompt if you hit ^C, but if you hit ^C at the prompt, it redisplays the screen. The only thing that's slightly hairball is if you hit ^C while the prompt is displaying, and then it just leaves you at a partial prompt... Ga-roo-vy, as we used to say back in the 1970's, when Nixon was President. Did I ever tell you about the time, back then, when I wrote a prom that controlled six 5-meg drives with a 2MHz 6502? Using interrupts, of course... ------------------------------------------------------------------------------ (1/1): newest rio Name: Digital Man #1 @2 Date: Tue Jun 18 02:36:16 1991 works better.. the HST was having problems answering the phone before (getting too many RINGs (2's) and was interpreting them as result codes... but now, that hasn't happend once with the newer routines... might be coincidence. no abort mode? rioctl(IOCM|ABORT); doesn't cancel the abort mode anymore... other than that, don't see anything wrong with the newest. To : Digital Man #1 Title: ? Name: Ille Homine Albe #4 @2 Date: Tue Jun 18 08:03:03 1991 rioctl(IOCM|ABORT) doesn't turn off ctrl-c checking? That I don't get. The smoother communication with the modem might be a result of what I did, so I'll take credit for that. But if it's a bug, it must be Microsoft. ------------------------------------------------------------------------------ To : Digital Man #1 Title: Hey... Name: Ille Homine Albe #4 @2 Date: Sat Jun 22 06:04:07 1991 I can't run the board with a direct connection! With a null-modem cable, DCD comes on when you turn on DTR. When I run the board, it puts up the logon screen without initializing the modem. I can log on locally, though, but if I hit "/O" it immediately logs on again and the only way out is to re-boot! If I unplug the cable, then it hangs up, tries to initialize the modem, fails, and bails... ------------------------------------------------------------------------------
If you're wondering why Vertrauen was ”@2“ (its WWIV-style network address), it's because King Drafus's The Beast Domain was ”@1“ (of DOVE-Net) at that time.