H      This file explains how to use the SAOimage communictions interface N software on an OpenVMS machine.  The enhanced version of SAOimage (v. 1.07E2) M allows loading multiple independent images, cursor and vector drawing, cursor F readback, and lookup table control from a user program.  Slow video isI also possible.  The OpenVMS version of the software has been tested on a   VAXstation.   @ 1.  A new version of SAOimage is required.  You can simply copy ? SAOIMAGE.EXE via ftp from vms.ucc.okstate.edu in the directory  K DUA4:[MIIPS.X_WINDOWS.SAOIMAGE] in binary mode.  If you wish to recompile,  F you will have to obtain copies of all the files in that directory and F its subdirectories, and retain the directory structure.  To make this I easier, a "tar" file has been created.  This was then compressed with the D COMPRESS utility reducing the size to only 1510 blocks.  Its name isG SAOIMAGE.TAR_Z.  This file does not contain LIBSAO.OLB and SAOIMAGE.EXE F since the tar file was created on a UNIX machine.  The compression wasI done on an OpenVMS machine since the UNIX COMPRESS utility creates files  F which can't be read on an OpenVMS machine.  Since the OpenVMS COMPRESSI utility creates files which can be read on either machine, SAOIMAGE.TAR_Z 6 can be used by both systems.  All files were compiled D under VAX C and may not necessarily compile under other compilers.  < Therefore you may need to define CC as CC/VAXC if another C K compiler is installed on your system.  To recompile a single module, enter  M @MAKE module_name and the module will be recompiled with the proper switches  L and placed in the library.  To simply relink, enter @MAKE LINK.  To rebuild D everything, enter @MAKE.  Again, it is simpler to copy SAOIMAGE.EXE., Installation under UNIX is more complicated.  F 2.  A new version of IMTOOLRC. is required.  Copy this from the above C directory and put it in the same directory as SAOIMAGE.EXE on your  H machine.  Note that the first 13 configurations in IMTOOLRC are assumed  by the demo programs.   9 3.  To run the demonstration programs, copy SAODEMO.EXE,  F SAODEMO2.EXE, SAODEMO3.EXE, SAODEMO4.EXE, SAODEMO5,EXE, SAODEMO6.EXE, P SAODEMO7.EXE, SAODEMO8.EXE, and SAOSAMPLE.EXE from DUA4:[MIIPS.DISPLAY] to your H private directory.  SAODEMO8 uses the MIIPS plot package and is included/ as an example of graphics plotting on SAOimage.    4.  Define the foreign commands 7 $ SAOIMAGE :== $your_disk:[your_directory]SAOIMAGE.EXE  .     -g 886x886-2+134 -q -one +coord +magnifier' $ SAO:==SPAWN/NOWAIT/INPUT=NL: SAOIMAGE E Upper or lower case may be used.  The geometry should be adjusted if  G the display area on your monitor is not big enough.  The above command  C assume a 19-inch monitor with 100 dots/inch, giving a 1240 by 1024  A available pixel area.  With a 75 dots/inch display a geometry of  G 600x775-2+84 may give better results. The effect of the -one switch is  K different than in previous versions of SAOimage.  The switches zero, half,  I and one, assign the starting pixel corner to (0.0, 0.0), (0.5, 0.5), and  H (1.0, 1.0), respectively.  The effect of the former "one" switch is now E accomplished by use of the "half" switch.  This relationship is more  H intuitive.  Also, +magnifier now enables the magnifier window.  Finally  simply enter   $ SAO   D and SAOimage will come up.  Then try running the demos from the same: window that you entered the SAO command from and have fun.  K 5.  If you want to create a new demo or display custom images on SAOimage,  L you'll have to copy several files to your account and compile and link them.	 They are:   $      Name                   LocationD IMTOOLCHECKSUM.FOR	DUA4:[MIIPS.DISPLAY]	Required lower level routine> SAOCAPTION.FOR		DUA4:[MIIPS.DISPLAY]	User routine to display a 						message on SAOimage.  It" 						also reinitializes the world$ 						coordinate system in SAOimage.? SAOCONVLT.FOR		DUA4:[MIIPS.DISPLAY]	User routine to control the  						lookup table: SAODOT.FOR		DUA4:[MIIPS.DISPLAY]	User routine to display a 						single dot; SAOERAS.FOR		DUA4:[MIIPS.DISPLAY]	User routine to erase the  						image buffer4 SAOFACTS.FOR		DUA4:[MIIPS.DISPLAY]	User include file= SAOFIRST.FOR		DUA4:[MIIPS.DISPLAY]	User routine to set up the ! 						coordinate system and erase  						the screen of all items.9 SAOLOAD.FOR		DUA4:[MIIPS.DISPLAY]	User routine to load an  						image or images = SAOSTART.FOR		DUA4:[MIIPS.DISPLAY]	User routine to prompt the  						user for the frame buffer " 						size if not already selected< SAO_CURN.FOR		DUA4:[MIIPS.DISPLAY]	User routine to read back  						cursor positions (desktop, 						frame, and file)C SAO_DISPLAY_VECT.FOR	DUA4:[MIIPS.DISPLAY]	User routine to display a $ 						set of vectors already written 						into frameB SAO_DRAW.FOR		DUA4:[MIIPS.DISPLAY]	User routine to display cursorsG SAO_ERASE_CURSOR.FOR	DUA4:[MIIPS.DISPLAY]	User routine to erase cursors @ SAO_LOAD_VLT.FOR	DUA4:[MIIPS.DISPLAY]	User routine to download a  						custom video look-up table? SAO_VECT.FOR		DUA4:[MIIPS.DISPLAY]	User routine to draw vectors  						(2 modes) - ZFIOVI.C		DUA4:[MIIPS.X_WINDOWS.SAOIMAGE.VMS] " 						Required lower level routine  H The demonstration programs make use of the USRINP subroutine and dynamic% memory.  To use these, you will need:       Name             Location9 DCD.FOR 	DUA4:[MIIPS.FOR]    Required lower level routine < DELAY.FOR	DUA4:[MIIPS.FOR]    User routine to delay exection4 DO		DUA4:[MIIPS.FOR]    Required lower level routineE DYNAMIC.FOR	DUA4:[MIIPS.FOR]    User routine to obtain dynamic memory : ERROR.FOR	DUA4:[MIIPS.FOR]    Required lower level routine; MESSAGE		DUA4:[MIIPS.FOR]    User routine to print messages # 				    on terminal and in log file 9 NEL.FOR		DUA4:[MIIPS.FOR]    Required lower level routine 9 NELD.FOR	DUA4:[MIIPS.FOR]    Required lower level routine = MAPSCRAT.FOR	DUA4:[MIIPS.FOR]    Required lower level routine ; PRTMSG.FOR	DUA4:[MIIPS.FOR]    Required lower level routine 9 SAVE.FOR	DUA4:[MIIPS.FOR]    Required lower level routine ; STRKEY.FOR	DUA4:[MIIPS.FOR]    Required lower level routine ; USRINP.FOR	DUA4:[MIIPS.FOR]    User routine for generalized % 				    character and numerical input   G Put the object files in a library, and then link.  This is conveniently M done if you create a linking command file.  If the file is called P1LINK.COM,  then it should contain:  $ SET VERIFY
 $ LINK 'P1',- 1 'P2' your_disk:[your_directory]your_library/LIB,-  SYS$INPUT/OPTIONS   SYS$SYSDISK:[SYSLIB]LBRSHR/SHARE $ SET NOVERIFY  
 Next enter $ @P1LINK.COM your_demo.obj ' and your execute image will be created.   6 Any questions should be directed to Donald Gudehus at  U6233AA:vms.ucc.okstate.edu E It is possible to build a UNIX version of SAOimage from the same code I in DUA4:[MIIPS.X_WINDOWS.SAOIMAGE].  UNIX versions of the communications  F interface routines and demos can be found in DUA4:[MIIPS.UNIX.DISPLAY]? and DUA4:[MIIPS.UNIX.GENERAL].  One should first read the file  ; SAO_INSTRUCTIONS.TXT in the [MIIPS.UNIX.DISPLAY] directory. 