Date: Fri, 8 Jan 93 04:30:18 PST From: Advanced Amateur Radio Networking Group <tcp-group@ucsd.edu> Errors-To: TCP-Group-Errors@UCSD.Edu Reply-To: TCP-Group@UCSD.Edu Precedence: Bulk Subject: TCP-Group Digest V93 #8 To: tcp-group-digest TCP-Group Digest Fri, 8 Jan 93 Volume 93 : Issue 8 Today's Topics: CPU ID test code (3 msgs) CPU ID test update DPMI et al... DPMI library posted DPMI mode (5 msgs) MID dups problem - Revisited REPEAT (4 msgs) Shared Interupts UNSUBSCRIBE update for directory code update on repeat WAMPES Convers Problems (2 msgs) XSPAWN.... Revisited and fixed Send Replies or notes for publication to: <TCP-Group@UCSD.Edu>. Subscription requests to <TCP-Group-REQUEST@UCSD.Edu>. Problems you can't solve otherwise to brian@ucsd.edu. Archives of past issues of the TCP-Group Digest are available (by FTP only) from UCSD.Edu in directory "mailarchives". We trust that readers are intelligent enough to realize that all text herein consists of personal comments and does not represent the official policies or positions of any party. Your mileage may vary. So there. ---------------------------------------------------------------------- Date: Thu, 7 Jan 1993 15:31:00 -0500 (EST) From: MIKEBW@ids.net (Mike Bilow, <MIKEBW@ids.net>) Subject: CPU ID test code To: JT@zfja-gate.fuw.edu.pl, tcp-group@ucsd.edu Everything you say makes good sense. No one has reported any problem with my CPU type detection scheme, so it looks good so far. Your comment about the use of the machine ID byte being misleading was a surprise. I have run across ancient XTs that had junk in there, but the junk was always zero if not a legal ID code. There were some few manufacturers who made up their own codes, especially Compaq, but I coded the am_i_an_AT() routine to default to XT mode if the code was not the proper one for an AT. As you say, this would blow up if the code in an XT happened to be the right code for an AT, but I have never seen this. Testing the DMA channels and such is more trouble than it is worth. If someone actually had an XT with an AT type code, then they could do a manual override by putting the "isat 0" command in AUTOEXEC.NOS. The model ID is more reliable than the direct CPU testing scheme for the purposes of setting the "isat" flag, since there are a fair number of machines with 80186 or 80286 CPUs but XT architectures otherwise, especially the ATT 6300 series and several early Tandys. In answer to a couple of your questions, I think that the later Intel processors reused the NEC-specific opcodes. I believe these were for REPC and REPNC on the NECs. I don't know if attempting to execute them on a later Intel processor would do anything harmful. I do have the needed references and can check, but, as I said, this is beyond the scope of anything we need for NOS. High resolution timing on channel 3 of the 8253 works in an XT, but isn't safe. That same timer channel is used to drive the speaker, so anything which so much as beeps -- including, for example, the keyboard buffer on some machines -- will corrupt your timer. This means that the high precision timer has to be done with interrupts down, which is not a good thing to do in NOS. The 55 ms garnularity of the standard system timer tick is good enough for most things in NOS, even if it would be nice to have something better. The 80486SX (there is such an animal) was a marketing invention by Intel. It has the same internal and external data path sizes as the 80486DX, so there is no similarity in the 80386SX/80386DX nomenclature. What an 80486SX chip is, is just an 80486DX chip with the floating point unit disabled. Originally, Intel was affirmatively disabling the FPU in the 80486DX die to make an 80486SX, but they are now using a different die. Cyrix has a competitive 80486SL, which is a pin-for-pin replacement for the 80386SX, which obviously has the narrower external data paths. Maybe the Next Big Thing will not be RISC, but RCSC (reduced chip set computing). -- Mike Bilow, <mikebw@ids.net> (Internet) ------------------------------ Date: Thu, 7 Jan 93 21:45:49 PST From: "Jerzy Tarasiuk" <JT@zfja-gate.fuw.edu.pl> Subject: CPU ID test code To: MIKEBW@ids.net (Mike Bilow, <MIKEBW@ids.net>) > Date: Thu, 7 Jan 1993 15:31:00 -0500 (EST) > Message-Id: <930107153100.3ee0@ids.net> > Your comment about the use of the machine ID byte being misleading was > a surprise. I have run across ancient XTs that had junk in there, but > the junk was always zero if not a legal ID code. There were some few I saw a machine which had BIOS creation date there. It wasn't anything similar to AT ID. I saw it because someone had problem with a program interpreting it incorrectly. > Testing the DMA channels and such is more trouble than it is worth. > If someone actually had an XT with an AT type code, then they could do > a manual override by putting the "isat 0" command in AUTOEXEC.NOS. Fact. The only worth of interest is to write a test program (separate from NOS) which can detect it and say need put "isat 0" or "isat 1". > The model ID is more reliable than the direct CPU testing scheme for Yes, of course. My colleage had an accelerator board - containing 80286 and suitable to plug into 8088 socket. > In answer to a couple of your questions, I think that the later Intel > processors reused the NEC-specific opcodes. I believe these were for > REPC and REPNC on the NECs. I don't know if attempting to execute them It is almost sure, at least for 80386. Probably can write program which can execute on any of these CPU-s and recognize which it is. But I don't even know why NOS is to recognize CPU type: if it has code for better CPU, it cannot be used on worse. Putting code compiled for 8088 and 80386 in one file: what way load only needed code to memory ? I have read Phil's msg about interrupt entry/exit code for program compiled for 80386 CPU, but what way cause to load 80386 code when have 80386 and 8088 code when have 8088 only ? Seems simplest is short program which exit code depends on CPU (call your CPUID; mov AH,4C; int 21h) and use it in a batch file... Or allow user to do it manually. Verify CPU is suitable for our code ? Need to be sure no 80386 opcode is to be executed (in C library start code) before we verify it. > High resolution timing on channel 3 of the 8253 works in an XT, but (channel 2, I suppose, Intel uses names Counter 0 .. Counter 2). I thought about channel 0, with different mode - 2 instead 3. 55ms is poor resolution when I want to check response time on fast local network (Ethernet, for example; the time is several ms). Tnx for info about 486SX/SL. > Maybe the Next Big Thing will not be RISC, but RCSC (reduced chip set > computing). It was already tried - 80188 which has inside: 2 DMA channels, 3 Timers, Interrupt Controller (4 external inputs only, 8 levels; 4 of them only from internal devices like timer or DMA). NEC V40/50 are even better, they have 4 DMA channels (suppose Intel made 80188 before IBM published PC documentation and NEC after since NEC knew need 4 DMA channels). But I don't know anyone to have 80188/6/V40/50 based computer. 73's, JT ------------------------------ Date: Thu, 7 Jan 1993 16:55:07 -0500 (EST) From: MIKEBW@ids.net (Mike Bilow, <MIKEBW@ids.net>) Subject: CPU ID test code To: JT@zfja-gate.fuw.edu.pl, tcp-group@ucsd.edu The remark about "reduced chip set computing" was mostly a joke. There is a U.S. company, Chips and Technologies, which sells an entire XT computer on one chip. I think the number is F8680. The Hewlett-Packard 95LX palmtop must use something similar. The main objective for my CPU test program right now is so obvious that you didn't think of it! If there is going to be a 386-specific version on NOS, it has to at least produce and intelligible error message if someone tries to run it on an XT or 80286. This is a user support issue. If the program isn't smart enough to quit gracefully on a machine that can't run it, it will most likely just lock up. I must have personally answered 300 user support questions because of the change in asy handshaking. After telling several hundred people that they needed to add "param ax0 dtr 1" and "param ax0 rts 1" to their AUTOEXEC.NOS files. I think we learned this lesson once. It would be nice if my CPU test program eventually can be used to run one version of NOS which will automatically select 386 or generic instructions, but the performance penalty would probably be too high to make this realistic. -- Mike Bilow, <mikebw@ids.net> (Internet) ------------------------------ Date: Thu, 07 Jan 93 06:32:03 MST From: rnielsen@tapr.ampr.org (Bob Nielsen) Subject: CPU ID test update To: MIKEBW@ids.net (Mike Bilow, <MIKEBW@ids.net>) MIKEBW@ids.net (Mike Bilow, <noao!MIKEBW@ids.net>) writes: > I have now received confirmation that my little CPU ID test program > correctly detects: 8088, 80286, and 80486DX. I would still like to > have someone confirm it on the 80386 (DX and SX), and the V20. Any > testing on really weird stuff, like the 8086 or 80186, would be nice, > if it's not too much trouble. Mike, I get the following: 80386DX reads as 80386/80486 V30 reads as 8088/8086/V20/V30 Bob Bob Nielsen W6SWE ax.25: w6swe@wb7tpy.az.usa.na Internet: rnielsen@tapr.ampr.org amateur IP: 44.124.12.16 CIS: 71540,2364 ------------------------------ Date: Thu, 7 Jan 93 12:30:56 PST From: "Roy Engehausen (8-457-2712)" <enge@almaden.ibm.com> Subject: DPMI et al... To: TCP-GROUP@UCSD.EDU It has been pointed out to me that BC++ 3.1 only has DPMI support for the compiler and not for user programs. I guess the next version of the compiler will have the DMPI support for user programs that is just appearing with BPascal 7.0. Also, I need to clarify a few things. While the new version of AA4RE BBS will have DPMI support, there will also be a non-DPMI version of the code circulated. They will have the same features except for the on-line editor. I had to use a different editor for the DMPI version since I didn't have all the source for the old one. A similar tact could be taken with NOS (DPMI versus non-DPMI) using simple conditional compile statements. Now if I can find a copy of TCPIP written either in DLLs (which the DPMI pascal supports) or in Pascal itself, I would add it to my BBS. Roy ------------------------------ Date: Fri, 8 Jan 1993 2:21:47 -0500 (EST) From: MIKEBW@ids.net (Mike Bilow, <MIKEBW@ids.net>) Subject: DPMI library posted To: tcp-group@ucsd.edu For those interested in experimenting with it, I have posted the Qualitas freeware DPMI library (the Borland C++ 3.x version) to ucsd.edu in the .../incoming directory. This is a royalty-free, freeware, library with full source code included. There are also versions for Borland C++ 2.0, Microsoft C 6.0, and Microsoft C/C++ 7.0, but I did not post them. -- Mike Bilow, mikebw@ids.net ------------------------------ Date: Thu, 7 Jan 1993 10:05:31 -0600 From: miltonm@inetnode.austin.ibm.com (Milton Miller) Subject: DPMI mode To: TCP-GROUP@UCSD.EDU, enge@almaden.ibm.com In message <9301070237.AA23071@ucsd.edu>, Roy Engehausen <enge@almaden.ibm.com> wrote: > > I have started playing with Turbo Pascal's DPMI mode. This puts the > computer into 286 mode and allows use of more than 640K. ...[Used by his BBS now] > Now the $64,000 question for the NOS people. Borland C++ 3.1 has DPMI > support also. Anybody experimenting with it yet? This could solve > the NOS constraints that everybody has been complaining about. > > Roy, AA4RE Two comments: 1) Not everyone is using Borland C++ 3.1 2) Not everyone is using 286s or 386s (I fall into the second category). The existance of the memory constraints you mention depends on the features you compile. Here, we took out NET/ROM support to give room for RSPF. Later we took out RSPF. So on a 640K 8088 running DOS 3.3, I often have over 100k free. I admit you can not compile a NOS with all the features available, but I don't have any problem with picking my features. If the features are too big, lets take a critical look at how they are coded. milton ------------------------------ Date: Thu, 7 Jan 93 10:37:27 PST From: Eric Hermanson <erich@hpvcijm.vcd.hp.com> Subject: DPMI mode To: tcp-group@ucsd.edu > Two comments: > 1) Not everyone is using Borland C++ 3.1 > 2) Not everyone is using 286s or 386s > > (I fall into the second category). The existance of the memory constraints > you mention depends on the features you compile. Here, we took out NET/ROM > support to give room for RSPF. Later we took out RSPF. So on a 640K 8088 > running DOS 3.3, I often have over 100k free. I admit you can not compile > a NOS with all the features available, but I don't have any problem with > picking my features. If the features are too big, lets take a critical look > at how they are coded. > > milton This is an interesting topic that has come up in every software house that I have worked in. The actual question is whether we should write software for obsolete hardware or should we write software for today's machines with an eye towards tomorrow's? Most software vendors take the approach of writing for today's machines. I believe that packages such as NOS should probably go the same way. The 8088/8086 obsolete? Yes, it is. This architecture is as obsolete as Apple II, VIC-20, TI/44, Radio Shack, etc. Even the future of MS-DOS looks pretty limited now (Windows/NT looks like the first step in making Windows a full operating system instead of just an operating environment). Software such as NOS should be looking at this and other advancements and try to take advantage of what it can. -- ---------------------------------------------------------------------------- Eric Hermanson | "You can't discover new oceans unless you have the erich@hp-vcd.vcd.hp.com | courage to loose sight of the shore." --Anon 1-206-944-2939 | ------------------------------ Date: Thu, 7 Jan 1993 14:38:12 -0500 (EST) From: MIKEBW@ids.net (Mike Bilow, <MIKEBW@ids.net>) Subject: DPMI mode To: miltonm@inetnode.austin.ibm.com, enge@almaden.ibm.com, tcp-group@ucsd.edu The Borland C++ 3.1 compiler runs under DPMI, but it doesn't come with any useful utilities or tools to make programs that use DPMI. The Phar Lap DOS extender that is bundled with BC++ 3.1 is crippleware. If a real DPMI server is available (as it is in a DOS window under OS/2 2.0 or under Windows 3.x in enhanced mode), there are a number of libraries available for accessing DPMI services. Qualitas (the maker of 386 to the MAX) publishes a freeware DPMI library with full source, since their 386 to the MAX product provides DPMI services. This library is available from wuarchive.wustl.edu in version for BC++ 2.0, BC++ 3.x, MSC 6.0, and MSC/C++ 7.0 as a single file. I split them up into four separate files on ChowdaNet, DPMIBC2.ZIP, DPMIBC3.ZIP, DPMIMSC6.ZIP, and DPMIMSC7.ZIP. (Downloadable at 9600 bps V.32, (401)331-0334, or at 14400 bps V.32bis, (401)3315587. Fidonet FReq'able from 1:323/120.) -- Mike Bilow, <mikebw@ids.net> (Internet) ------------------------------ Date: Thu, 7 Jan 1993 16:24:45 -0800 (PST) From: Bruce Perens <bruce@pixar.com> Subject: DPMI mode To: Eric Hermanson <erich@hpvcijm.vcd.hp.com> I was thinking about trying to build under a DOS extender, and then I decided to trash DOS and put Linux on my system. For those of us lucky enough to have 386 and higher systems, this seems to be a good route to take. The whole system uses less than 10MB of disk, including the standard Unix executables, man pages, and a few megabytes for swap space, the free GNU C/C++ compiler, and the entire kernel source. There's an existing KA9Q port that runs on the system. The advantages you get over DPMI/DOS are: Robustness. True multiple protected address spaces. Crashing NOS doesn't lock up the system. Servers can be broken out into their own processes, True 32-bit flat address space. No switching to 16-bit to service interrupts, etc. Virtual memory. Idle servers occupy swap space, not RAM. You can configure _everything_ into NOS without bogging down the system. 4MB RAM makes a practical system, 2MB runs. True preemptive multiprocessing. Use the system for something else while NOS is running. Compile and edit while NOS is up. You can do something useful with telnet, since there is true multiprocessing. You get all of the kernel source, and it's even reasonably readable. Have you ever been able to fix a bug in DOS? The C/C++ compiler is free, and it's a lot better than Turbo. Debugger support is in a state of flux at the moment, since the kernel debugger interface (a /proc filesystem) is being worked on. Everything else is free, too. Good support through the news groups. There is TCP/IP in the kernel now, and kernel support for amateur protocols is evolving. Support for bus mice in the kernel. Sound board drivers are in beta test. Most anything that has ran under Berkeley Unix can be made to run under Linux. Shared library support, makes your executables smaller. More stable than 386BSD at the moment. This won't always be the case. Disadvantages: Steep learning curve if you don't know Unix. There's a DOS emulator that I haven't tested. If your program touches hardware directly, it probably won't work. This includes direct screen write applications, things that touch the serial port registers, etc. The major thing I'd want to run is Quicken, which can be made to use BIOS to get to the screen. I haven't tested that yet. Doesn't support Microsoft Windows. There is a free version of the X Window System, which might not run well unless you have 8MB ram. If you have a lot of RAM and disk, 386BSD is an alternative. Bruce Perens ------------------------------ Date: Fri, 8 Jan 1993 1:08:37 -0500 (EST) From: MIKEBW@ids.net (Mike Bilow, <MIKEBW@ids.net>) Subject: DPMI mode To: erich@hpvcijm.vcd.hp.com, tcp-group@ucsd.edu Whoa! I did not mean to get involved with/conspire in/have anything to do with starting another one of these periodic religious arguments about whether to abandon the 8088 support. I think it is important to recall that NOS is distributed in source code form. As long as this is the case., it should have 8088 support in it. That does not, however, imply that my particular EXE cannot be restricted to 1 386 or better, nor that we can't have conditional compilation directives that might result in XT non-support. -- Mike Bilow, mikebw@ids.net ------------------------------ Date: 07 Jan 1993 23:11:10 -0500 (EST) From: "Brian A. Lantz" <BRIANLANTZ@delphi.com> Subject: MID dups problem - Revisited To: tcp-group@UCSD.EDU Well, with a simple addition to the forward.c file of WG7J1.07b, the dup MIDs problem is history! This is the snip of code I added to TNOS to handle the problem. I've sent it to Johan, and he is adding it to JNOS. The code changes the bid from $abcde_host.domain to $abcde%destinationuser. This makes it unique for each message. Modifications while you wait! In by 9, out by 5! ;-) -------------------insert at line 488 of 1.07b forward.c ------------ /* This fixes the problem with personal MIDs being the same with * messages generated from aliases, RMAIL, or mail-groups. Changes * the bid from $abcde_host.domain to $abcde%destinationuser. - KO4KS */ if (!bulletin && (m->sid & MBX_MID)) { if ((cp = strrchr (bid, '_')) != NULLCHAR) { cp++; if (!strnicmp (Hostname, cp, strlen(cp))) { *(cp-1) = '%'; /* change '_' to '%' */ if(dest != NULLCHAR && *dest != '\0') strcpy (cp, dest); else strcpy (cp, to); bid[13] = '\0'; if ((cp = strchr (bid, '.')) != NULLCHAR) *cp = '\0'; } } } /* Add the bid to bulletins, * AND ALSO to anything that came in with a bid ! * Takes care off duplicate 'SP SYSOP@xxx $BID' problems. * ALSO add it to ALL messages if the remote system supports MID's - WG7J */ ---------------------------------------------------------------------- 73 from Brian A. Lantz KO4KS@KO4KS.#TPAFL.FL.USA.NA 3100813105 Internet: brianlantz@delphi.com Amprnet: ko4ks@ko4ks.ampr.org [44.98.0.167] P.S. Yes, it says "RMAIL, or mail-groups"! Trust me, you'll find TNOS WORTH THE WAIT!! Coming soon to a CRT near you!!! ------------------------------ Date: Thu, 7 Jan 93 11:01:33 EST From: crompton@NADC.NADC.NAVY.MIL (D. Crompton) Subject: REPEAT To: tcp-group@ucsd.edu I have ported Phil K's repeat function into WG7J107. The required modules are in incoming at UCSD. The file is DSP107A.ZIP. Copy these over 107 and recompile. The base is the latest 107 code - 107B. It does not work as well as in Phil's code but that is mainly because he handles the video differently. I opted to do a gotoxy rather than a clrscr because at least at higher rates this looks better. It may not always properly update though as it is an overwrite as compared to a clean write. Be prudent in the use of repeat because some things obviously should not be repeated! Try a 'repeat 100 t s' or 'repeat 100 ps' - ajust the rate up if the update rate is annoying. I am using a fast computer and on slow ones this may not work very well - you may not be able to use faster rates. Questions I have regarding the repeat code --- How do you turn off the cursor in Borlandc without using ansi characters? When you create a newsession but not a socket - I.E. a local stream What can you use with a loop to detect closure/reset of that session? sp=newsession(.....) for (;;) { pwait(null); if (??????) get outta here } sp->s always equals -1 in this case so you can't use it. So in the repeat code I simply close the session when you leave it - hit F10 or any other session. Just repeat the 'repeat' command again. I briefly reviewed Phil's latest and I was impressed with the screen update speed. I was using the 386/486 version. Phil's code is as different as night and day now compared to WG7J which is based on KA9Q base of over a year ago now. Porting many of the new things over without making wholesale changes would be difficult if not impossible. One nice feature is the view command which allows scrolling back and forth in a file. A couple of features that could be ported over are the telnet to a serial port (port 5000) with password and telnet to a BSR device. As in BSR/X10. Doug ------------------------------ Date: Thu, 7 Jan 1993 15:54:44 -0500 (EST) From: MIKEBW@ids.net (Mike Bilow, <MIKEBW@ids.net>) Subject: REPEAT To: crompton@NADC.NAVY.MIL, tcp-group@ucsd.edu You can always cheat and call _setcursortype(_NOCURSOR) from the Borland run-time library. (One of those RTFM things...) The session descriptors are maintained as an array with a global base. "Sessions" points to the first session data structure (struct sp*). As a result, "Sessions[0]" is the first session data structure, "Sessions[1]" is the second session data structure, and so on, up to "Sessions[Nessions-1]". I think you can see from this explanation and a little hunting in SESSION.C, especially in newsession() and sessptr(), how to do what you want to do? -- Mike Bilow, <mikebw@ids.net> (Internet) ------------------------------ Date: Thu, 7 Jan 93 16:03:53 EST From: kz1f@RELAY.WESTBORO.LEGENT.COM Subject: REPEAT To: tcp-group@ucsd.edu Doug writes: When you create a newsession but not a socket - I.E. a local stream What can you use with a loop to detect closure/reset of that session? sp=newsession(.....) for (;;) { pwait(null); if (??????) get outta here } This was a pervasive problem in making the OS/2 version of nos. In that case each session was asociated with a seperate task within the system, Doug, this would be identical under NT as well. With this architecture for(;;) are dangerous since the task never acually goes away, soon nos has reached the system's max tasks. I had actually mentioned this "problem" to Phil yesterday and asked if he had addressed this in his new kernel. I havent heard back yet. What I did was change the api that could indefinately block a thread to return EABORT in the event the task was "killed". By testing for this the task could actually unwind itself and leave the system. This also required changing killproc/killself and pwait as well as various blocking api. I realize Doug is not asking abt how to implement nos as a real multitasking program but the fix I came up with will also resolve his problem/question. Walt ------------------------------ Date: Thu, 7 Jan 93 17:11:25 EST From: crompton@NADC.NAVY.MIL (D. Crompton) Subject: REPEAT To: MIKEBW@ids.net, crompton@NADC.NAVY.MIL, tcp-group@ucsd.edu Mike, Yes I found the _setcursortype and put it in. It works fine. I have already done a lot of that hunting and it appears that when you do a close or reset it does not seem to effect anything in the session structure. The session is closed by freesession. From that example that I gave I want to be able to detect that the session was closed from within the loop - that is closed by a close or reset at the net prompt. I have looked thru the session structure parameters and even displayed some for debug while reseting and nothing seems to change. I also was not able to find anywhere where this is currently done in NOS because unlike tis repeat other functions have logical ends - not an endless loop. I know (hope) I must be missing something. Anyhow the way it is working right now is not bad the repeat session closes as soon as you leave it. Being able to detect closure from within would allow you to go back to the session but it is no big deal. Doug ------------------------------ Date: 07 Jan 93 19:21:57 CST From: Jack Snodgrass <kf5mg@vnet.ibm.com> Subject: Shared Interupts To: <TCP-Group@UCSD.Edu> Anyone know how shared interrupt processing for 4, 19.2kb async devices performs compared to using individual interupts? If I have a board and code that supports shared interupts, should I configure it for that? If the answers yes.... anyone want to add Phil's shared interupt code to Johan's code? Thanks. 73's de Jack - kf5mg AMPRnet - kf5mg@kf5mg.ampr.org - 44.28.0.14 AX25net - kf5mg@kf5mg.#dfw.tx.usa.na - work (817) 962-4409 Internet - kf5mg@vnet.ibm.com - home (817) 488-4386 ------------------------------ Date: Thu, 7 Jan 1993 20:52:49 -0800 (PST) From: "Hank E. Eggers" <heggers@eis.CalState.EDU> Subject: UNSUBSCRIBE To: tcp-group@ucsd.edu DELETE TCP-GROUP UNSUBSCRIBE ------------------------------ Date: Thu, 7 Jan 93 23:43:05 EST From: crompton@NADC.NAVY.MIL (D. Crompton) Subject: update for directory code To: Johan@ece.orst.edu Fix to allow FTPCLI to use NOS curdir at session start as opposed to using DOS's ---------------------------------------------------------------------- Line 255 - main.c - change line init_dirs(&dirs,""); ************************************************** Line 183 - ftpcli.c - change line tprintf("Local Directory - %s\n",init_dirs(&dirs,Command->curdirs->dir)); ************************************************** New 'init_dirs' in dirutil.c - (ALSO change prototype in dirutil.h) /* Initialize Structure cur_dirs - use current 'path' if given else use drive/directory as derived from DOS curdrv/curdir */ char * init_dirs(struct cur_dirs * dirs,char *path) { char buf[128],fullpath[128],*a; int x,drive; for(x=0;x<=26;x++) dirs->curdir[x]='\0'; if (! *path){ drive=getdisk()+1; getcurdir(drive,buf); undosify(buf); sprintf(fullpath,"%c:/%s",drive+'@',buf); } else { a=path; if ((*(a+1)==':') && (isalpha(*a))){ drive=toupper(*a)-'@'; } else { drive=getdisk()+1; } strcpy(fullpath,path); } dirs->curdir[drive]=strdup(fullpath); dirs->drv=drive; dirs->dir=dirs->curdir[drive]; return dirs->curdir[drive]; } END OF CHANGE Doug ------------------------------ Date: Thu, 7 Jan 93 14:30:41 EST From: crompton@NADC.NAVY.MIL (D. Crompton) Subject: update on repeat To: johan@ece.orst.edu, tcp-group@ucsd.edu Add the >>> lines to the 'dorepeat' function in main.c - dsp107a.zip at ucsd and wg7j incoming. while(MYsession==Current){ /* clrscr(); */ /* gotoxy seems to work better - turn cursor off?? */ gotoxy(1,1); >>> _setcursortype(_NOCURSOR); ret = subcmd(Cmds,argc,argv,p); if(ret != 0 || pause(interval) == -1) break; } >>> _setcursortype(_NORMALCURSOR); keywait(NULLCHAR,1); This makes the display easier to read with quick updates. Doug ------------------------------ Date: Thu, 07 Jan 93 15:28:58 CET From: BARRY TITMARSH <BTITMARS%ESOC.BITNET@vm.gmd.de> Subject: WAMPES Convers Problems To: TCP-GROUP <TCP-GROUP@ucsd.edu>, Hello. Useing the wampes port 921129 done by dc1ik, is working fine with old versions of Linux. Now that Linux has progressed there are now a number of things not working correctly. One is the conversd daemon. Under Linux 0.99 this is acting strange, in that after it has made an auto connect to another host soc 3600 this daemon is takeing 89 95 percent of the cpu. Before the connect is made the conversd daemon only uses 0.9 to 1.0 percent of the cpu I have also noticed that finger makes a disconnect when you make a finger to a user on the wampes box, also ftp responds with 0 files found when a dir NLIST is done in a directory that does have files in it. Since the bug reports for this code go to you DC1IK Olaf, for the Wampes that is ported to Linux. please send any comment to me via internet and or tcp-group. thanks to you,. Barry. GM8SAU [linux 0.99p2 user.] ------------------------------ Date: Thu, 7 Jan 93 21:20:35 MET From: erb@insu7.etec.uni-karlsruhe.de (Olaf Erb) Subject: WAMPES Convers Problems To: BTITMARS@esoc.bitnet (BARRY TITMARSH) BARRY TITMARSH writes: > > Hello. Useing the wampes port 921129 done by dc1ik, is working fine with > old versions of Linux. Now that Linux has progressed there are now a number > of things not working correctly. One is the conversd daemon. Under Linux 0.99 > this is acting strange, in that after it has made an auto connect to another > host soc 3600 this daemon is takeing 89 95 percent of the cpu. Before the > connect is made the conversd daemon only uses 0.9 to 1.0 percent of the cpu That's right. There's a problem in the select() stuff; Linus changed something in ~linux/fs/select.c, and WAMPES still has some problems with it. Here's a quick and dirty fix in select.c. At the beginning there's something like #define ROUND_UP .... Look around line 200, where this is used. Near this there's something like if (timeout <= jiffies) timeout = 0; I just commented this out, (#if 0 ... #endif) and all works fine again. You can use this as a quick solution of your problem. There was also (after(!) this fix) reported that 'net' eats up cpu-time. This was caused by a bad V.24 cable that caused select() to return immediately. Changing the cable solved this problem. > > I have also noticed that finger makes a disconnect when you make a finger > to a user on the wampes box, also ftp responds with 0 files found when > a dir NLIST is done in a directory that does have files in it. The finger problem should not be WAMPES', because the NET program only gates port 79 via tcpgate to Linux' IP, so you should take a look at your fingerd. FTP works fine for me: 220 dc1ik FTP version WAMPES-921130 ready at Thu Jan 7 21:06:35 1993 user ftp 331 Enter PASS command pass guest 230 User "ftp" logged in dir 200 Port command okay 150 Opening data connection for LIST /users/ftp total 128 drwxr-xr-x 2 root root 48 Nov 19 05:50 bin drwxr-xr-x 2 root root 64 Nov 19 05:50 dev drwxr-xr-x 2 root root 64 Nov 19 05:50 etc drwxr-xr-x 2 root root 48 Nov 19 05:51 lib -rw-r--r-- 1 ftp ftp 125157 Jan 7 03:02 c-sources.taz drwxr-xr-x 3 ftp ftp 176 Dec 29 21:40 pub Get complete, 381 bytes received 226 File sent OK 73, Olaf -- ---------------------------------------------------------- ! erb@insu1.etec.uni-karlsruhe.de dc1ik@db0sao.ampr.org ! ---------------------------------------------------------- ------------------------------ Date: Thu, 7 Jan 93 19:36:05 PST From: "Jerzy Tarasiuk" <JT@zfja-gate.fuw.edu.pl> Subject: XSPAWN.... Revisited and fixed To: "Brian A. Lantz" <BRIANLANTZ@delphi.com> > Date: 07 Jan 1993 02:07:14 -0500 (EST) > From: "Brian A. Lantz" <BRIANLANTZ@delphi.com> > Subject: XSPAWN.... Revisited and fixed > Message-Id: <01GT7Y7D1O7M8WWK2B@delphi.com> > I pulled the JNOS107b sources off Wednesday afternoon and looked them over > tonight. Well (sorry it took so long), here is the fix ;-) > > The thread was correct in diagnosing the problem... it was the interrupt > vectors blowing the system away. The fix at first seems difficult, but is > very simple. NOS only replaces a limited number of regular interrupt vectors. > And when any NEW device sets up an IRQ vector, it goes though the setirq() > routine. So, only two files need to be modified. XSPAWN provides an addvect() > function that does all the dirty work. > > These have been tested pretty heavily, but only over the course of a few > hours. There STILL MIGHT be other problems, BUT, I have XSPAWNed off and > started up WINDOWS, to come back and find that all is well! Same with a > second incarnation of NOS, Norton Utilities, etc. Seems to work fine, now! > > Hope this takes care of it! Enjoy! Not so well. NOS can use packet driver and define procedure to be called when new packet arrives. As I remember, the driver checks first few bytes of code where it is to jump into, but it isn't enough. If just these bytes are intact and other code is destroyed, this will blow the system. In my configuration, it is not possible to fix it by changing interrupt vectors or masking interrupts - if I'll mask the interrupt used by ethernet card, I will be unable to access network drives where are much of my data and almost all executable programs. However, adding some code to packet driver interface can fix it - need save information about any "registration", "unregister" from packet driver on XSPAWN, then swap NOS to disk, and after swapping it back into memory "register" on the packet driver again. Should work. Note also need save interrupt mask on entry (to NOS) and restore it on XSPAWN before restoring vectors - note the vector saved on entry may be invalid if corresponding interrupt is masked. But, anyway, congratulations on great step ahead. 73's, JT ------------------------------ End of TCP-Group Digest V93 #8 ****************************** ******************************