Path: utzoo!mnetor!tmsoft!torsqnt!jarvis.csri.toronto.edu!rutgers!usc!cs.utexas.edu!uwm.edu!dogie.macc.wisc.edu!decwrl!sgi!jmb@maddog.sgi.com From: jmb@maddog.sgi.com (Jim Barton) Newsgroups: comp.sys.sgi Subject: IRIX 3.2 Release Notes (Part 3 of 3) Message-ID: <44984@sgi.sgi.com> Date: 19 Nov 89 18:40:54 GMT Sender: jmb@maddog.sgi.com Organization: Silicon Graphics, Inc., Mountain View, CA Lines: 821 -------------------- cut here ------------------- distribution for wider availability to customers. (SCR 5975) o The ar(1) man page now mentions explicitly which operand is taken as the archive name. (SCR 6840) o (cc) In C in earlier releases a return from main() would always return 0. Now any return value from main() is correctly returned to the environment. This matches the proposed ANSI C standard. User programs which fail to either exit(2) or return a value from main() will return a useless garbage status to their environment. (SCR 6031) o (cc) A bug in ccom prevented typedef's to pointers to functions with prototypes from working. (SCR 6278) The test case is: typedef int (*Fcnptr )(int); Fcnptr _tkFcnCallEvent_fcn ; This resulted in errors such as: ccom: Error: t.c, line 3: redeclaration of Fcnptr Fcnptr _tkFcnCallEvent_fcn ; -------------------------^ ccom: Error: t.c, line 3: syntax error Fcnptr _tkFcnCallEvent_fcn ; - 10 - -------------------------^ o (cc) The bogus message: ``ccom: Warning: idbg.c, line 5100: illegal member use: u_format'' no longer occasionally appears associated with user source errors. (SCR 6385) o (prof) -clock is now documented correctly in the prof(1) man page. (SCR 6385) o (unix and m_fork and pixie) Now multi-processing programs get their own block counts by thread. (SCR 6772) o (fsplit) fsplit(1) now works with blank lines between subroutines. (SCR 7025) o (libc) strtod(3) now has a prototype in to match atof(3). This is non-standard and these will be moved to for a future release. (SCR 7091) o (f77) The following program did not work correctly due to the forced misalignment of a and b off of double boundaries. (SCR 7141) c change i to anything beside double, bug still occurs. c order of common seems significant. double precision a, b integer i common /x/ i, a, b data i/0/ a = -79.0 b = 79.0 print *, i, a, b end Code generation has been corrected to handle this correctly. 6.3 Bug_Fixes_to_Graphics o Microcode bug with either backface or Tmesh on 4D/20s is fixed. (SCR 6487) o Personal IRIS - Self-intersecting polygon fills now work correctly. (SCR 6943) o Double buffered depthcued polygons and lines were not dithered on the Personal IRIS because of inaccuracies resulting from floating point roundoff. Now depthcued as well as gouraud shaded polygon and lines are - 11 - dithered in both RGB and colorindex modes. The Personal IRIS with an RE1 chip and 24 bitplanes can not dither in colorindex mode. (SCR 6496) o Personal IRIS - The source code was optimized to improve line performance using bgnline, v,v,.. endline calls. (SCR 6833) o Personal IRIS - The line stipple was advanced one pixel too far at junction of two line segments. The stipple is correctly backed up one bit. (SCR 6702) o Personal IRIS - Wide lines and curveit no longer cause stray lines to be drawn. (SCR 6669) o Personal IRIS - Picking no longer causes systems to hang when the last element in the pick buffer is negative. (SCR 6547) o When you try to render polygons that have nearly 256 vertices and are non-monotonic in screen space on the IRIS-4D GT or GTX with graphics from non-GT's, the window manager sometimes crashes. This has been fixed. (SCR 6944) o An error in 4x4 matrix inversion that caused some invertible matrices to be inverted incorrectly was corrected. This error may have produced incorrect lighting in rare instances. (SCR 6836) o The man pages now document the limit for points per polygon The current limit is 255 on the 4D/XX machines for the polf, poly, pmv, pdr, and any other polygon- related commands. (SCR 3750) o The gamma(6T) man page now correctly represents the 4D product. (SCR 4583) o The winconstraints(3g) man page now states that winconstraints must be called AFTER winopen(). (SCR 4723) o Certain GL routines are only available on the GT. Yet there is no mention of this on the man pages (e.g. blendfunction(3G)). Hence, the new "GL Reference Guide" (007-1203-010), which contains the printed versions of the GL man pages, is therefore really the "*GT* GL Reference Guide". Non-GT customers could get really confused. The man pages now mention system- specific restrictions. (SCR 4954) - 12 - o There was no clear explanation of how the lmbind uses the current matrix on the viewing stack to do the modeling and viewing transformation of the light. This is discussed in the Graphics Library Programming Guide. (SCR 5012) o The mathematical implementation of lighting has been explained in the the graphics documentation. (SCR 5013) o The GF3 card now checks whether the zbuffer board is installed. (SCR 5099) zbuffer(TRUE); printf("zbuffer: %d0, getzbuffer); This will return 1 if zbuffer is installed and 0 if not. o The curve commands and the lighting commands used the same matrix stack space causing failures due to interference. (SCR 5160) o An exec() of a process that did a ginit caused a kernel panic. (SCR 5541) o The gammaramp(3G) man page now mentions the "4D" implementation of gammaramp. (SCR 6005) o In 3.1C or earlier, the screenmask was incorrectly set, and as a result the top scan line could not be written to. This is fixed in 3.1D. A second related bug was that sbox was not always setting the right pixels in conjunction with the screen mask. This is fixed in 3.2. (SCR 6078) o The gversion man page has been changed to reflect the actual string returned. (SCR 6139) o Concave bowtie polygons now fills correctly on 4D/20. (SCR 6204) o Fudge() now work correctly with keepaspect(). (SCR 6211) o The shaderange equation is now correct in the GT Graphics Library User's Guides (SCR 6223) o The man page for blendfunction() had the source and destination reversed. (SCR 6224) o The Graphics Library Programmer's Guide incorrectly stated that the blending section applied only to GT systems that have alpha planes. Blending does work on GT systems without alpha planes. (SCR 6249) - 13 - o The man page for lRGBrange has been included in the release. (SCR 6304) o Binding a light in multiple windows went into an infinite loop. (SCR 6424) o The 4Sight User's Guide incorrectly stated that ismex() always returns TRUE(1). It returns TRUE only if 4Sight is running, otherwise it returns FALSE(0) (SCR 6430) o The text of the GL Programming Guide was changed to reflect the correct returned value for blkread(3G). (SCR 6432) o Unqdevice did not work correctly. (SCR 6469) o The GT and GTX implementation of the GL routine feedback() would crash the pipe if invoked with a buffer size greater than 32k (shorts). (SCR 6576) o Patches did not work in mmode(MVIEWING) on the GT. All forward difference matrix calculations are no longer done in the graphics hardware. (SCR 6638) The non-GT library did not have rectread and rectwrite enabled. (SCR 6791) o Writemask did not reset properly when switching manually. Writemask was being reset to 4095 instead of 1 when leaving overdraw. (SCR 6792, 6794) o The c3s command didn't work on the GTX due to 3 way transfers from short address boundaries.. (SCR 6819) o The lsetdepth() man page did not reflect the difference between the Personal Iris and the Power Series graphics. (SCR 6842) o Self-intersecting polygon fills did not work correctly. (SCR 6943) o Picking mode now works on the 4D GT. (SCR 6847) o Short integers weren't sign extended on the GTX product line. (SCR 6863) 6.4 Bug_Fixes_to_the_Installation_Tools The manual page has been updated to correctly document that install(1) claims the '-f' option must be used in conjunction with '-s', '-o' or - 14 - o The help file has been updated and now correctly states that spacecheck can be defeated with: set spacechk off (SCR 5849) o The installation tool properly clears empty products out of the installation history. (SCR 5871, 6720) o Non-graphics terminals get a default screen size of 24 lines so the installation screens do not scroll off the screen. (SCR 5895, 6717) o Distcp -n now supports writing tape without the standalone tools. (SCR 5960, 6694) o Installation documentation have been corrected to support loading of the miniroot from tape on non- Personal Iris machines. (SCR 6358) o The installation tools no longer make the assumption that all computers are workstations. Therefore, graphics dependent code is not installed on servers with exception of IP6 based servers. (SCR 6570) o GL development headers are no longer inadvertently being shipped. (SCR 6618) o Uname and versions no longer report the operating system revision name differently. (SCR 6665) o The installation tools no longer incorrectly handle symbolic links set up by the user before installation. (SCR 6666) o distcp now correctly copies distribution data from tape to disk. (SCR 6692) o The installation tools no longer have several screens where text wraps around the end of the line. (SCR 6747) o The installation tools now forcefully rewind the tape any time there is a possibility that the tape has not been rewound. (SCR 6988) o Network installation fails if the remote login account on the remote host sends spurious output to the screen during a login session. The Release Notes document how to test for this condition and work around it if it exists. (SCR 7137) >>>>>>>>>> 3.2 Release notes, Chapter 7 >>>>>>>>>> - 1 - 7. Known_Problems_and_Ways_to_Work_Around_Them This chapter describes known problems and ways to work around them the 4D1-3.2 release. 7.1 IRIX o The Revision 10 firmware in IRIS-4D Series workstation and servers does not display memory size when you power up your system. To see the memory size, enter the following command at the PROM monitor prompt (>>) and type: hinv o The IRIX version of vi was enhanced in this release to allow the user to control the intercharacter timeout. This timeout is the length of time that vi waits after receiving an escape (ESC) for another character comprising an escape sequence. For example, many popular types of terminals use escape sequences consisting of ESC followed by several characters to represent single keypresses of terminal arrow keys. Vi needs to be able to distinguish the typing of the ESC key from an escape sequence generated by pressing an arrow key. This is done by waiting for the number of milliseconds specified by the 'timeout' variable after the ESC arrives. If no other characters arrive before the timeout expires, then the ESC is treated as if just the ESC key was pressed. The default setting of 'timeout' is 200 milliseconds. When vi is used in a network environment or through modems, it may be necessary to increase the timeout value in order for escape sequences to be recognized. The timeout variable can be set from within vi or ex, by issuing a set command. For example: :set timeout=400 sets the intercharacter timeout to 400 milliseconds. The current value of 'timeout' can be displayed by :set timeout or :set all A set command for timeout can also be added of the user's .exrc file. o Systems equipped with the VME-based ISI QIC-02 quarter inch cartridge tape controller ) cannot make multi- volume backup tapes using the tar, bru or cpio commands; use the hinv command to determine which type of tape drive you have on your system. This is due to the inability of the controller to recover data after it has been sent to the tape drive when the data on the tape media spans the physical end-of-tape mark. - 2 - Multi-volume backup will function on all other SGI- supplied quarter inch cartridge drives as well as the VME-based 1/2" tape drives. These include the 60 MB and 150 MB SCSI tape drives. See Appendix A, ``Backing Up and Restoring Your System'' for more information. o On machines configured as servers, during heavy use, the following message might appear on the console: WARNING: mfree map overflow. Lost items at . This indicates a data array in the kernel is too small for the amount of machine usage. The size of this array can be increased by editing the file: /usr/sysgen/master.d/kernel, and increasing the parameter SPTMAP. Increasing this parameter from 50 to 100 should be sufficient. After this modification, it is necessary to reconfigure the kernel, and reboot. /etc/init.d/autoconfig prompts for configuring the new kernel. See lboot(1M) for instructions for reconfiguring the kernel. o On machines configured as servers, which make heavy use of disk storage, it may be possible to increase the performance of the system by increasing the size of the IRIX disk buffer cache. This can be done by editing the file: /usr/sysgen/master.d/kernel, and increasing the parameter NBUF from 100 to 200 (or more). Whether this will yield any performance gain is entirely application-dependent, however, this modification has proven beneficial for applications which generate large amounts disk traffic. After the modification, it is necessary to reconfigure the kernel, and reboot. The simplest way to reconfigure the kernel is to run /etc/init.d/autoconfig. See lboot(1M) for instructions for reconfiguring the kernel. o On machines configured as servers, the maximum number of processes allowed to be in execution may prove to be too small. When the number of active processes is at the maximum, attempts to create new processes (e.g., issuing a command from the shell), will fail. This maximum number of processes is a configurable parameter, given by the NPROC parameter in the file /usr/sysgen/master.d/kernel. As shipped, the NPROC entry is 80 + (MAXUSERS * 16), which yields 96 processes active at any time. Increasing this number to perhaps 300, should remedy the problem of running out of processes. Another way to increase this parameter is to increase the MAXUSERS definition, found in the file /usr/sysgen/system. Note that increasing - 3 - the MAXUSERS definition has effects on sizes of other kernel structures. After the modification is made to the NPROC or MAXUSERS parameters, it is necessary to reconfigure the kernel, and reboot. See lboot(1M) for instructions for reconfiguring the kernel. o If you are using non-standard disk partitions, you will have to create the device special files that reference them, since the device special files corresponding to disk partitions 2, 3, 4, 5, 11, 12, 13, 14, and 15 are no longer created by MAKEDEV. These device special files were the ones in the /dev/dsk and /dev/rdsk directories whose names ended in s2, s3, s4, s5, s11, s12, s13, s14, and s15. For example, /dev/dsk/dks0d2s3, /dev/rdsk/ips1d1s5, and /dev/dsk/xyl0d2s12 used to be created by MAKEDEV, but are no longer. MAKEDEV is a script in the /dev directory that creates all the device special files that are located therein. MAKEDEV was changed in order to save inodes, since these devices were never used in standard configurations. If you need to use them, you must create them manually using mknod. To create the above example devices, you would use mknod as follows: # mknod /dev/dsk/dks0d2s3 b 22 67 # mknod /dev/rdsk/ips1d1s5 c 4 85 # mknod /dev/dsk/xyl0d2s12 b 6 44 Device file names are represented by XXXCdNPP, where XXX refers to disk type (dks is SCSI disks, major number 22; ips is ESDI disks, major number 4; xyl is SMD disks, major number 6), C refers to controller number, N refers to device address (also known as disk number), and PP refers to partition name. For our purposes, the partition number is the partition name without the leading s, i.e. partition name s2 references partition number 2. The minor number can be found using the following equations: For SCSI: (N * 32) + partition number For ESDI and SMD: (C * 64) + (N * 16) + partition number These devices will have to be recreated whenever MAKEDEV is executed. Note that MAKEDEV is always executed when installing IRIX. Refer to mknod(1m), dks(7), ips(7), and xyl(7) for more information. o There is a bug in the bstream(1) buffering filter: if the last input block is less than the current output blocksize, the block is dropped. In other words, any fragment of a block at the end of the input file will not be written to the output. No warning message is generated to indicate that data has been lost and the - 4 - program still exits with normal status in this case. The manual entry says that such trailing partial blocks will be padded with zeros to the size of a complete block and written out, but this is not true of the software shipped in release 3.2. Note that this is not a problem when using bstream(1) to process the output of tar(1) or cpio(1), since these programs never write partial blocks. When the input to bstream(1) is from a program that does not do output blocking, however, data may be silently lost. o The initialization file for pmake(1) contains some invalid entries. To fix them, edit /usr/include/make/system.mk. At the end of the file, the ``.sh.out'' rule needs to remove its target. The entry should read: .sh.out : rm -f $(.TARGET) cp $(.IMPSRC) $(.TARGET); chmod a+x,u+w $(.TARGET) (The first character for the rm and cp lines is a tab.) The rules and command lines for ``.o.a'' and ``.u.b'' should be deleted. 7.2 Program_Development_Tools o The C language expression: x >= y + 1 where x and y are unsigned (y may be an expression) is incorrectly compiled as x > y. The resulting code will work correctly for all values of y except 0xffffffff. Similarly, x < y+1 is transformed to x <= y, which is wrong if y is 0xffffffff. In either case, the way to get around this is to assign y + 1 to a variable and test x against the variable. o When compiling a C program the message ``symbol table full'' might appear. Instructions to increase the size of the table were inadvertently left off of the message. The default table size is 5000 symbols. To increase the symbol table to 12,000 symbols (for example) add the following option to the cc(1) command: -Wf,-XNd12000 o The following routine float f(float x) { return((x > 0.5) ? 1.0 : 0.0); } Returns an incorrect value. The problem is specific to ``float'' arguments and returned values. Nearly any change to the source (such as assigning the result of the query operator to a temporary and returning the temporary) will work around the problem. - 5 - 7.3 Networking o The Visual Administration networking tool currently works properly if you are using the default ifconfig(1M) netmask. (If your network topology uses subnets, the netmask will need to be different.) The network tool does not handle non-default netmasks and will disable the ``nets'' view in the tool. You can access only to the ``hosts'' view. If you want your system to use a netmask other than the default value, you need to take the following steps. 1. Add the following line to the file /etc/config/ifconfig-1.options. If this file does not exist then you need to create it. netmask mask Specify mask as a hex number 0x.. 2. Reboot your system. 3. To confirm the new netmask, type: ifconfig interface_name Replace interface_name with: __________________________________________________________ ec0 4D/20,4D/25 (Personal IRIS & DataStation) et0 4D/1x0, 4D/2x0 (Power Series) enp0 4D/50-80 7.4 Diskless_Personal_IRIS o The 4D/20 and 4D/25 Diskless workstations for a particular class and their server must be in same sub- net. 7.5 HyperNET o Running HyperNET between two workstations on the same adapter used to cause any IRIS-4D to crash while transferring large amounts of data. 7.6 Graphics o The window system now supports the imakebackground() function, but there are some problems with its use: 1. Killing an imakebackground program is supposed to cause the window manager to repaint the currently defined window "root" as set by the "Windows" menu, "Window Style" submenu, and its "More Roots" - 6 - submenu, the default being the familiar sky-blue "Plain Root". The repaint often does not happen, leaving the screen background black. The way to work around this is to select "Redraw All" from the "Windows" menu. (You may have to select "Redraw All" two times). 2. Use of imakebackground programs on 4D50G, 4D60G systems is not recommended because window painting errors can result when the complexity of the window layout results in a clip list that is too large to be supported by the graphics hardware. This problem does not occur on any Personal IRIS, GT, or GTX systems. o If you run any double-buffered RGB mode program (such as Visualizer or QuickModel) at the same time as any double-buffered colorindex mode program (such as the IRIS WorkSpace), the window that doesn't contain the cursor is displayed with incorrect colors. o On GT's, programs that do prefsize, winopen, winconstrains should have a sleep after the winopen to avoid small verticle lines at the bottom of the window. If you see these lines, move the window and they will go way. 7.7 4Sight When 4Sight receives a request from a remote machine to create a NeWS window, it tries to convert the machine's Internet address into a name. 4Sight use the Domain Name Server (named(1M)) or /etc/hosts to do this. (It does not use the Yellow Pages.) If there is a problem doing this conversion, 4Sight might not be able to start up or create windows. The file /usr/etc/resolv.conf specifies the Internet addresses of machines running the name server (see resolver(4) for details). If the file does not exist, the named on the local machine is tried before using the /etc/hosts file. If the resolv.conf file exists but is not setup properly (e.g., it contains addresses of nonexistent machines), 4Sight gives up and prints an error message in /usr/adm/SYSLOG. If all the name servers in resolv.conf become unreachable after 4Sight starts, 4Sight will not be able to create windows. Error messages in /usr/adm/SYSLOG with the format "getsocketpeername: Can't find name for ..." indicate a name service failure. - 7 - The name service failures may be transient; try to create the window again. If it consistently fails, make sure the ethernet cable is still plugged in and the name servers listed in resolv.conf are reachable. Use ping(1M) and nslookup(1M) to check for reachability. If the name server is not used, make sure /etc/hosts has entries for ``localhost'' and all the remote hosts that access your IRIS. For information on setting up named and resolv.conf, see the TCP/IP User's Guide and resolver(4). 7.8 X11_Window_System The performance and functionality of the X11 Window System product on the 4D/[50,60,70,80]G (non GT or GTX) platforms is less than that of the other product lines due to hardware limitations. We suggest upgrading your system to a GT (Graphics Turbo) if you are going to make extensive use of the X11 Window System product. >>>>>>>>>> 3.2 Release notes, Chapter 8 >>>>>>>>>> - 1 - 8. Documentation_Errors_and_Notes This chapter contains errors in the documentation, suggestions for workking around certain problems, and additional notes for this release. Generally, on-line documentation, such as the man pages is more up-to-date than the printed hard copies. This is not true for this document. 8.1 Documentation_Errors 8.1.1 IRIX o Section 3.2, ``Booting the Workstation'' of the IRIS-4D Series Owner's Guide fails to mention fully how to boot an IRIS-4D from a ASCII terminal attached to port 1 (ttyd1). Booting from an ASCII terminal is necessary when you don't have a graphics console or you want to run diagnostics without graphics running on the graphics console. To boot your IRIS-4D from an an ASCII terminal, you must set the PROM Monitor environment variable ``console.'' To set this variable, enter the following command at the PROM Monitor prompt: setenv console d NeWS is not automatically started when you boot from an ASCII terminal. To run NeWS, enter the following command once you have logged on: /etc/gl/restartgl This executes the graphics console daemon, grcond, which starts up the NeWS server. When you boot from an ASCII terminal, the console wsh window doesn't appear on the graphics console screen. This window is synonymous with the PROM Monitor environment variable ``console,'' which is now set to run on the ASCII terminal and not the graphics console. o The hardcopy of the find(1) manual page mentions the -prune option, which is not implemented in software release 4D1-3.2. The online version of the find(1) manual page is correct. See man for information about viewing the online manual pages. 8.1.2 Program_Development_Tools 8.1.2.1 C_Language_Reference_Manual - 2 - 8.1.2.1.1 Chapter_6_-_Declarations The following paragraph updates the description of prototypes in Section 6.4, "Meaning of Declarators." This new description supersedes the paragraph beginning, "A parameter-type-list..." A parameter-type-list declares the types of, and may declare identifiers for, the formal parameters of a function. When a function is invoked for which a function prototype is in scope, each actual parameter is converted to the type of the corresponding formal parameter specified in the function prototype. If the list terminates with an elipsis (...), only the parameters specified in the prototype have their types checked; additional parameters are converted according to the default argument promotions (see Section 5.1). Otherwise, the number of parameters appearing the in parameter list at the point of call must agree in number with those in the function prototype. A prototype must be in scope at both the calling and called sights for the prototype argument promotions to work correctly unless the prototype matches the default argument promotions. A function definition using prototype form is its own prototype. Using old-style function declaration/definitions and prototype declarations/definitions for the same function often yields an erroneous programs. 8.1.2.1.2 Chapter_10_-_Compiler_Control_Lines Section 10.4, ``Conditional Compilation'' incorrectly states that you should use #elif between a #if directive and #else or #endif directives if we have more than 2 conditionals. See cpp(1) for more information. 8.1.2.2 dbx_Reference_Manual There are several features in dbx newer than presented in the reference manual. The man page and help file /usr/lib/dbx.help have been extensively revised to document dbx properly. Both of the on-line documents are more complete than the reference manual. Though there is considerable overlap between the man page and the help file, there is some information in each that is not in the other. 8.1.2.3 Porting_Applications_to_the_IRIS-4D_Family In general, statements in Section 1 and 2 about the GT are also true for the Personal IRIS. See the GL manual pages for up-to-date information. 8.1.2.3.1 Section_2_-_IRIS_3000_to_4D_Conversion_Tutorial Section 6.2, ``Cross-hair Cursors'' states that color 3 is used for the cross-hair cursor. The GT and Personal IRIS use color 1. See mapcolor(3G). - 3 - 8.1.2.4 Porting_FORTRAN_Code_to_IRIS-4D_Workstations 8.1.2.4.1 Chapter_3_-_Code_Compatibility Section 3.3, ``I/O Compatibility'' should mention that the IRIS-4D FORTRAN compiler does not support a BUFFERED specifier to the OPEN statement. Instead, use setbuf() to set a buffer and size. 8.2 Installing_the_Dial_and_Button_Box Some changes have been made that affect the installation of the Dial and Button box. To install the dial and button box an additional change must be made to the line that begins with diald. Step number 3 fails to mention that /dev/console should be changed to /dev/null just as x is changed to 234. Step number 4 should mention when you cycle the power on the Dial and Button box, the LED's indicate the knob numbers and the lights illuminate when you press them. In addition, the box says ``ready'' when you reboot or log in. To restart the dial daemon, log out then log back in. 8.3 TCP/IP_User's_Guide' There are errors in Chapter 5 of the TCP/IP User's Guide Version 2.0, ``BIND Name Server Operations'' is not mentioned in the Guide's errata sheet. Section 5.9, ``Standard Resource Record Format'', describes 2 address classes, IN and ANY. The ANY address class is not supported by BIND version 4.8. The description of the HINFO resource record in Section 5.9 and the HINFO examples in the sample file in Section 5.11.7 mistakenly use the address class ANY; they should use IN instead. 8.4 Graphics_Library_Reference_Manual The newly printed GL Programmer's Guide does not document these GL routines: - 4 - attachcursor blankscreen blanktime blendfunction curson/cursoff deflinestyle defpattern getcpos getgdesc getlsrepeat getlstyle getlwidth getmonitor getothermonitor getpattern getplanes greset gversion linewidth logicop lsrepeat pntsmooth popattributes pushattributes sbox sboxf setlinestyle setmonitor setvideo subpixel videocmd wmpack See the GL manual pages for a description of these routines. 8.5 Graphics_Library_Reference_Manual o zfunction() is implemented on all 4D products. However, the GL reference manual says that it is only on the 4D-GT machines. o The blkqread(3G) man page says that the return value of blkqread is the number of events returned. In fact, it is the number of shorts returned (twice as big as the other number would be). ---------- end of Part 3