Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site medstar.UUCP Path: utzoo!watmath!clyde!cbosgd!ihnp4!houxm!whuxl!whuxlm!akgua!gatech!medstar!robin From: ro...@medstar.UUCP (Robin Cutshaw) Newsgroups: net.unix-wizards,net.micro.pc Subject: Xenix286 Wonders, Bugs, and Patches... Message-ID: <168@medstar.UUCP> Date: Thu, 2-May-85 17:03:22 EDT Article-I.D.: medstar.168 Posted: Thu May 2 17:03:22 1985 Date-Received: Fri, 3-May-85 23:35:04 EDT Distribution: net Organization: Medical Systems Technology and Research, Inc., Atlanta, Ga. Lines: 250 For the most part I have been very impressed with Xenix286 3.0 for the AT. It seems to be fairly fast (except for c-compiles) and has greatly increased the amount of work that I can accomplish. The DOS cross-development utilities work very well (at least so far). I have just about completed a device driver for the IBM PC Network adapter. Anyone interested in beta testing please let me know. I will also be posting an article on writing device drivers for Xenix. I have found many wonderful buglets while porting code to Xenix. Many of these bugs were found while porting news2.10.2 and HACK, both of which now work wonderfully (with several modifications). Patches mentioned below will follow shortly. I would be interested in getting any other bugs that you find. adb: ./W 'abcd' writes 'cdcd' ?M just doesn't work /*/ IBM says this command is not and will not be supported, it will be removed from the documentation size of /dev/mem is short by 1/2K. See related variable in the kernel. .cshrc/.login : set ignoreeof in .cshrc should be in .login /* IBM agrees */ malloc : never returns more than ~32KB (actually 32634) /* IBM says "too bad" */ realloc : doesn't work in large model programs cc : order of args is important (like where you put -M2el) arrays of exactly 64K bomb the loader with "> 64K array" error, if you create an array of 64K-1 it will create a 64K array due to even alignment no crypt() in libc.a /* IBM says it cannot ship overseas with this */ error recovery is terrible (a missing ")" can bomb every following line) uname() returns NULL for nodename instead of the nodename in /etc/systemid, you can patch the kernel with your nodename at _utsname+8 (should not exceed 7 characters). exec() doesn't always work with the large model due to NULL being placed at the end of the arg list instead of (char *)NULL. This is a programmer problem more than a bug. system() doesn't work in the large model if the si register is non-zero. This is due to the exec() error above. They used NULL instead of (char *) NULL is compiling this routine, therefore any non-zero value on the stack prior to the exec call will not give the routine a zero terminator. The si register is on the stack prior to the exec call. BITFIELDS initialize wrong. Bytes are initialized instead of bits leading to massive initialization errors down the line. Don't auto-initialize them. The -MxTyyyy option is documented wrong. It is a hex value which defaults to 0xffff (don't use the 0x). All pointer arithmetic is 16 bits long (including the large model 32 bit pointers). This can get you into trouble if you were crazy enough to subtract pointers in differing segments. (ala HACK). The loader will only give you 4004 usable stack space. You must run stackuse to see if that will be enough (GASP!) and use the -F option (which uses a hex value i.e. -F 2000 for 8K) to increase stack space. This is GROSS!! Your program may bomb in one of several ways if you don't have enough stack allocated. Stackuse doesn't always work! The first data segment and stack segment share the same 64K segment, even in large model programs. Good luck. The O_NDELAY option to open() may not work in some instances. make : make -n doesn't always give you the sequence that make alone will make will run out of environment space if you have several things set in yours, especially if you run the c-shell tar : one must link /dev/mt1 to /dev/fd0 for tar to work (or your standard floppy device) tar doesn't back up empty directories (not sure that it should) tar uk 1150 won't work properly restor : Will not work if your environment is too large, may not work anyway function keys : These are user defined (GASP!!). It would have been much better for application programmers if they had just given them a standard escape sequence and been done with it. One cannot read their values back to see what they are currently set to do, so if you have multiple processes changing them you can get into lots of trouble. The SETKEY command does not allow the standard "^*" escapes so one cannot insert control characters with this command, use Esc Q x "sss". All fkey defs are erased when you log off. I will be posting a patch to read the fkeys and a patch to permanently set them to some "known" string. cursor keys/setkey : Only Home, left, right, up, and down, are recognized by the kernel. There is a table of strings to pass on to ttin for each key and the other cursor keys are set to NULL. I have a patch for this and will post shortly. stackuse : Will barf if more than a few programs to scan. Uses a .cu file for internal use, but this will overwrite the source file if only the .c part is used due to the filename length (BARF!) vi : Cannot edit large files. One must patch the stacksize in the x.out header from 0x8000 to 0x5000. Will post patch shortly. csh : No pushd-popd Doesn't notify you when a background task has finished #!/bin/sh doesn't work No unsetenv so you are stuck with it sh : #!/bin/sh will execute csh strings : The -o option for offsets doesn't work because they compiled the Berkeley version with "%D" instead of "%ld". This compiler doesn't recognize D as a valid format for printf. stty/gtty : If one passes the sgttyb struct to stty that came from gtty, the echoe bit will be cleared. dmesg : No man entry. /usr/adm/msgbuf must be present before the - option works as seen in crontab cron : Even if /etc/default/cron parameter CRONLOG is set to YES the file /usr/lib/cronlog must exist to get the log (it doesn't create it) uucp : A bug in S3 uucp make uustat unusable if /usr/lib/uucp and /usr/spool/uucp are not on the same file system due to us_open trying to link rstat.pid in /usr/spool/uucp to R_stat in /usr/lib/uucp. This was fixed in S5. The basic operations guide gives an incorrect example of a dialin/dialout script for crontab. A corrected one follows (/usr/lib/uucp/uuhourly) : # /bin/disable /dev/tty00 if ($status == 0) then sleep 20 /usr/lib/uucp/uucico -r1 /bin/enable /dev/tty00 endif EGA support : Xenix only supports compatability mode on the EGA. A patch has already been posted to the net to fix this (ret for initCRTC in /xenix). Does not support monochrome monitor on EGA. DOC : Many, many, many, misprints! Lots of spaces between switches and arguments (i.e. -M2eT xxxx where it should be -M2eTxxxx). In the device driver section replace all cent signs with [ and most | signs with ]. Patching the kernel : Permanent - adb -w /xenix - Online - adb -w /xenix /dev/kmem * $x * /m 18 0 e400 * ...your patches... DISKINFO : If you use a drive other than the standard type 2 you will have to patch the kernel. It seems that the diskinfo table which corresponds with the BIOS table of 15 is incorrect. Also, /boot will not work if you have more than 4 heads. I will post a patch to this shortly. /etc/hdinit will work for type 2 but not well for others. Shared data : The function sdget() must include the size param at all times and the mode param one the first call. This is documented wrong in the manual. Color : Color works well with the ansi escape sequences as described in the DOS manual. No multiple arguments are allowed though (i.e. Esc[#;#m must be Esc[#mEsc[#m). from .cshrc : if ($TERM == ansi) set prompt="Esc[36m# Esc[0mEsc[37m" # set blue prompt else set prompt="# " endif note : replace Esc with the escape character Questions, comments, bugs to me... -- ---- Robin Cutshaw Director of Systems Research, MedSTAR, Inc. ..{akgua,gatech,gacsr}!medstar!robin
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84 SMI; site sun.uucp Path: utzoo!watmath!clyde!burl!ulysses!gamma!epsilon!zeta!sabre!bellcore! decvax!decwrl!sun!guy From: g...@sun.uucp (Guy Harris) Newsgroups: net.unix-wizards,net.micro.pc Subject: Re: Xenix286 Wonders, Bugs, and Patches... Message-ID: <2158@sun.uucp> Date: Sat, 4-May-85 05:19:34 EDT Article-I.D.: sun.2158 Posted: Sat May 4 05:19:34 1985 Date-Received: Mon, 6-May-85 00:55:05 EDT References: <168@medstar.UUCP> Distribution: net Organization: Sun Microsystems, Inc. Lines: 75 > no crypt() in libc.a /* IBM says it cannot ship overseas with this AT&T also says so. The problem is that the gov't has some sort of embargo on exporting "encryption technology", and instead of AT&T trying to get an exemption for the code in UNIX they just decided to say "no, you can't export any encryption code" and introduced "International System V". Feh. > uname() returns NULL for nodename instead of the nodename in > /etc/systemid, you can patch the kernel with your nodename at > _utsname+8 (should not exceed 7 characters). Every other System(III|V) I've seen supported 9 characters (or 8 plus a '\0' at the end) for the names in the "utsname" structure. Don't know why Microsoft changed it... > exec() doesn't always work with the large model due to NULL being > placed at the end of the arg list instead of (char *)NULL. This is a > programmer problem more than a bug. > > system() doesn't work in the large model if the si register is > non-zero. This is due to the exec() error above. They used NULL > instead of (char *) NULL... The former is not at all a bug. *Good* programmers know to cast null pointers properly. Other programmers write code that breaks on all the machines out there with 16-bit "int"s and > 16-bit pointers... > tar doesn't back up empty directories (not sure that it should) Standard "tar" doesn't dump directories at all; the only reason non-empty directories appear is that "tar" creates needed directories when extracting files. The 4.xBSD "tar" writes entries for directories as well as files, which has the side effect that empty directories are dumped. > csh : > > #!/bin/sh doesn't work > > sh : > > #!/bin/sh will execute csh "#!" is a kernel feature, and is only in 4.xBSD and a few other systems (Masscomp?). Microsoft didn't pick it up. > strings : > > The -o option for offsets doesn't work because they compiled the > Berkeley version with "%D" instead of "%ld". This compiler doesn't > recognize D as a valid format for printf. "printf" was changed in System III so that %[DOX] no longer are equivalent to %l[dox]. The latter is preferable, both because System III/V don't support the former and because %D in programs gets turned into a date by SCCS. Nobody should be using %D, %O, or %X anymore; %ld, %lo, and %lx work just as well and will also work in System III/V. > stty/gtty : > > If one passes the sgttyb struct to stty that came from gtty, the > echoe bit will be cleared. By your mention of "echoe", I presume Xenix 286 is System III or V compatible. If so, you should *NOT* be using "stty" or "gtty"! They are implemented only as, to quote the comment in the code, a "compatibility aide"(sic). They are backwards compatible NOT with V7, but with UNIX/TS 1.0. UNIX/TS 1.0 didn't support "echoe" (i.e., CRT rubout), but then neither did V7; as such, AT&T decided to have "stty" clear the "echoe" bit (rather than leaving it alone). V7 terminal "ioctl"s will NOT work under System III/V's tty driver, so programs written for V7 which use "stty" or "gtty" have to be rewritten; programs written for UNIX/TS 1.0 should be rewritten so that, among other things, they preserve the setting of the ECHOE bit. Guy Harris
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!henry From: he...@utzoo.UUCP (Henry Spencer) Newsgroups: net.unix-wizards,net.micro.pc Subject: Re: Xenix286 Wonders, Bugs, and Patches... Message-ID: <5574@utzoo.UUCP> Date: Wed, 8-May-85 13:44:47 EDT Article-I.D.: utzoo.5574 Posted: Wed May 8 13:44:47 1985 Date-Received: Wed, 8-May-85 13:44:47 EDT References: <168@medstar.UUCP> <2158@sun.uucp>, <1143@cbosgd.UUCP> Organization: U of Toronto Zoology Lines: 7 > I wonder what the /usr/group standard and the System V standard recently > published say? [about the last argument to execl] Both get it right: the last argument is "(char *)0", not just "0". -- Henry Spencer @ U of Toronto Zoology {allegra,ihnp4,linus,decvax}!utzoo!henry
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site mips.UUCP Path: utzoo!linus!philabs!cmcl2!seismo!uwvax!harvard!talcott!panda!genrad! decvax!decwrl!Glacier!mips!mash From: m...@mips.UUCP (John Mashey) Newsgroups: net.unix-wizards,net.micro.pc Subject: Re: Xenix286 Wonders, Bugs, and Patches... Message-ID: <131@mips.UUCP> Date: Wed, 8-May-85 13:51:01 EDT Article-I.D.: mips.131 Posted: Wed May 8 13:51:01 1985 Date-Received: Sat, 11-May-85 08:19:51 EDT References: <168@medstar.UUCP> <2158@sun.uucp> <1143@cbosgd.UUCP> Organization: MIPS Computer Systems, Mountain View, CA Lines: 36 > In article <2...@sun.uucp> g...@sun.uucp (Guy Harris) writes: > >By your mention of "echoe", I presume Xenix 286 is System III or V > >compatible. If so, you should *NOT* be using "stty" or "gtty"! They are > >implemented only as, to quote the comment in the code, a "compatibility > >aide"(sic). They are backwards compatible NOT with V7, but with UNIX/TS > >1.0. UNIX/TS 1.0 didn't support "echoe" (i.e., CRT rubout), but then > >neither did V7; as such, AT&T decided to have "stty" clear the "echoe" bit .... Mark Horton <1...@cbosgd.UUCP> writes: > > You mean UNIX/TS 2.0; 1.0 was released to the public as PWB 1.0. My > impression of Xenix was that they had enhanced the stty emulation to > ... Not quite: more accurately (<bad words> upon the numbering): PWB/UNIX 1.0 was a Version 6-based system, as was 1.1 & 1.2; only 1.0 was released outside, as I recall [which was too bad: 1.2 was a really clean, well-tuned V6]. UNIX/TS 1.0 [my manual says Nov 78] was basically V7 + few kernel changes derived from PWB + some USG Generic 3 stuff. It's goal was to get at least the time-sharing kernel interface standard. It didn't have SCCS & other PWB major user-level subsystems, although little things crept in. PWB/UNIX 2.0 [June 1979] was UNIX/TS 1.0 + the rest of the PWB stuff. UNIX 3.0 [June 1980] was System III. Note there was no UNIX 2.0, whose number was taken by the last PWB release. Most of PWB/UNIX 2.0 was included. This is where ioctl & echoe appear. -- -john mashey UUCP: {decvax,ucbvax,ihnp4}!decwrl!glacier!mips!mash ARPA: mips!m...@SU-Glacier.ARPA DDD: 415-960-1200 USPS: MIPS, 1330 Charleston Rd, Mtn View, CA 94043