Mercurial > hg > Members > kono > nitros9-code
view 3rdparty/utils/winfo/winfo.doc @ 1163:5cbcbfd738ae
Added
author | boisy |
---|---|
date | Thu, 08 May 2003 20:50:59 +0000 |
parents | 00b1c751fad7 |
children |
line wrap: on
line source
WInfo - v2.0 by Alan DeKok Minor modifications to make WInfo use the I$Attach system call to find the device table entry of the window in question. The old WInfo rooted through system memory by hand, and used a FIXED device table size which broke under NitrOS-9 v1.22 This corrected version will work properly under ANY version of OS-9 or NitrOS-9, past, present, or future. NitrOS-9 Level III patches by request of Erik Tromp, thanks! WInfo - v1.0 copyright December,1987 by Ron Lammardo Placed in the Public Domain December,1987 This subroutine may not be sold or used in any commercial package without the permission of the author. WInfo is an OS9 Level II subroutine to return window information on any window in use. Although WInfo is written in ASM, it is set up to be callable from an ASM, Basic09, and (hopefully) C main programs. This subroutine directly accesses system window tables, screen tables, and device memory. As such, if a new level/version of OS9 were to be released, the subroutine module would possibly need to be re-written. However, by putting all the 'cheating' code into this subroutine, any applications program calling it would not need modification or re-assembling. To further ensure upward compatability between editions of WInfo, a sizable amount of space is allocated in the return buffer to allow additional fields to be added without impacting the position of existing fields. WInfo requires two parameters : a string containing the requested device name, and a return buffer (described below) to place the information into. To maintain compatability with basic09, the sizes of these two parameters along with the parameter count (always 2) must be passed if the calling program is ASM. WInfo also requires 512 bytes for its own use...ASM calling programs should allow at least that much buffer space just below the stack address at the time of call. If WInfo encounters a system-type error, it will return with the carry bit set and the b register containing the appropriate error code. If a WInfo error condition is encountered, the first byte of the return buffer (WI$Stat) will contain the error number and the error message will be returned at the end of the buffer (WI$ErMsg). If the length of the buffer passed to WInfo is too small, the error status returned (WI$Stat) will be $FF with no error message, as the error message is normally placed at the end of the return buffer. WInfo also returns its edition # (the byte after the module name) as part of the return packet (WI$Edtn). This edition # can be checked to determine if the correct minimum level of WInfo is being accessed by the main program. For example, if WInfo edition #4 is the first edition to return the # of users accessing a window, the main program could check the edition # to insure it was accessing WInfo edition #4 or higher, as any earlier edition would not return the needed information. Most of the return packet fields are self-explanitory, but a few might need further clarification. WI$BPR - bytes per row. This is the number of bytes making up a line of charactrers, not the number of bytes in 1 dot row. To get the number of bytes per dot row,divide by 8. WI$Lset- Logic set # - see OS9 Level II manual page 3-21 in the winows section. WI$VDG - VDG type screen indicator. The following values are possible: 0 = Non-vdg type screen 1 = VDG text type screen 2 = VDG medium-res (coco2) graphics screen - WI$Sty contains the screen mode in the first 4 bits and the foreground color in the last 4 bits. The modes and colors are fully described in the OS9 Level-II manual pages B-5 & B-6 of the command reference. 3 = VDG hi-res (coco3) graphics screen - WI$Sty contains the screen type as defined in the SS.AScrn Set Status call. This is the only VDG code which will return valid palette information (WI$PRegs). The following fields are never valid for VDG type screens: WI$CBsw - character binary switch bits WI$BDPRN - Border palette register number WI$FGPRN - Foreground palette register number WI$BGPRN - Background palette register number WI$Lset - Logic set number WI$FntGr - Active font group number WI$FntBf - Active font buffer number WI$PstGr - Pattern set group number WI$PstBf - Pattern set buffer number WI$GcrGr - Gfx cursor group number WI$GcrBf - Gfx cursor buffer number WI$DrCrx - Draw cursor x position WI$DrCry - Draw cursor y position ------------------------------------------------------------------------------- This subroutine is available for use by any and all for whatever application. Comments and suggestions for improvements/enhancements are greatly appreciated. However,due to the nature of the subroutine I would appreciate retaining control of any update issuances so that the edition numbers etc. stay controlled. Ron Lammardo 75706,336