396
|
1 WInfo - v2.0 by Alan DeKok
|
|
2 Minor modifications to make WInfo use the I$Attach system call
|
|
3 to find the device table entry of the window in question.
|
|
4 The old WInfo rooted through system memory by hand, and used
|
|
5 a FIXED device table size which broke under NitrOS-9 v1.22
|
|
6
|
|
7 This corrected version will work properly under ANY version
|
|
8 of OS-9 or NitrOS-9, past, present, or future.
|
|
9
|
|
10 NitrOS-9 Level III patches by request of Erik Tromp, thanks!
|
|
11
|
|
12 WInfo - v1.0 copyright December,1987 by Ron Lammardo
|
|
13 Placed in the Public Domain December,1987
|
|
14 This subroutine may not be sold or used in any commercial package
|
|
15 without the permission of the author.
|
|
16
|
|
17 WInfo is an OS9 Level II subroutine to return window information on any
|
|
18 window in use. Although WInfo is written in ASM, it is set up to be callable
|
|
19 from an ASM, Basic09, and (hopefully) C main programs. This subroutine directly
|
|
20 accesses system window tables, screen tables, and device memory. As such, if a
|
|
21 new level/version of OS9 were to be released, the subroutine module would
|
|
22 possibly need to be re-written. However, by putting all the 'cheating' code
|
|
23 into this subroutine, any applications program calling it would not need
|
|
24 modification or re-assembling. To further ensure upward compatability between
|
|
25 editions of WInfo, a sizable amount of space is allocated in the return buffer
|
|
26 to allow additional fields to be added without impacting the position of
|
|
27 existing fields.
|
|
28
|
|
29 WInfo requires two parameters : a string containing the requested device
|
|
30 name, and a return buffer (described below) to place the information into. To
|
|
31 maintain compatability with basic09, the sizes of these two parameters along
|
|
32 with the parameter count (always 2) must be passed if the calling program is
|
|
33 ASM. WInfo also requires 512 bytes for its own use...ASM calling programs
|
|
34 should allow at least that much buffer space just below the stack address at
|
|
35 the time of call.
|
|
36
|
|
37 If WInfo encounters a system-type error, it will return with the carry bit
|
|
38 set and the b register containing the appropriate error code. If a WInfo error
|
|
39 condition is encountered, the first byte of the return buffer (WI$Stat) will
|
|
40 contain the error number and the error message will be returned at the end of
|
|
41 the buffer (WI$ErMsg). If the length of the buffer passed to WInfo is too
|
|
42 small, the error status returned (WI$Stat) will be $FF with no error message,
|
|
43 as the error message is normally placed at the end of the return buffer.
|
|
44
|
|
45 WInfo also returns its edition # (the byte after the module name) as part of
|
|
46 the return packet (WI$Edtn). This edition # can be checked to determine if the
|
|
47 correct minimum level of WInfo is being accessed by the main program. For
|
|
48 example, if WInfo edition #4 is the first edition to return the # of users
|
|
49 accessing a window, the main program could check the edition # to insure it
|
|
50 was accessing WInfo edition #4 or higher, as any earlier edition would not
|
|
51 return the needed information.
|
|
52
|
|
53 Most of the return packet fields are self-explanitory, but a few might need
|
|
54 further clarification.
|
|
55
|
|
56 WI$BPR - bytes per row. This is the number of bytes making up a line of
|
|
57 charactrers, not the number of bytes in 1 dot row. To get the number
|
|
58 of bytes per dot row,divide by 8.
|
|
59
|
|
60 WI$Lset- Logic set # - see OS9 Level II manual page 3-21 in the winows section.
|
|
61
|
|
62 WI$VDG - VDG type screen indicator. The following values are possible:
|
|
63 0 = Non-vdg type screen
|
|
64 1 = VDG text type screen
|
|
65 2 = VDG medium-res (coco2) graphics screen - WI$Sty contains the screen
|
|
66 mode in the first 4 bits and the foreground color in the last 4 bits.
|
|
67 The modes and colors are fully described in the OS9 Level-II manual
|
|
68 pages B-5 & B-6 of the command reference.
|
|
69 3 = VDG hi-res (coco3) graphics screen - WI$Sty contains the screen type as
|
|
70 defined in the SS.AScrn Set Status call. This is the only VDG code
|
|
71 which will return valid palette information (WI$PRegs).
|
|
72
|
|
73 The following fields are never valid for VDG type screens:
|
|
74
|
|
75 WI$CBsw - character binary switch bits
|
|
76 WI$BDPRN - Border palette register number
|
|
77 WI$FGPRN - Foreground palette register number
|
|
78 WI$BGPRN - Background palette register number
|
|
79 WI$Lset - Logic set number
|
|
80 WI$FntGr - Active font group number
|
|
81 WI$FntBf - Active font buffer number
|
|
82 WI$PstGr - Pattern set group number
|
|
83 WI$PstBf - Pattern set buffer number
|
|
84 WI$GcrGr - Gfx cursor group number
|
|
85 WI$GcrBf - Gfx cursor buffer number
|
|
86 WI$DrCrx - Draw cursor x position
|
|
87 WI$DrCry - Draw cursor y position
|
|
88
|
|
89
|
|
90 -------------------------------------------------------------------------------
|
|
91
|
|
92 This subroutine is available for use by any and all for whatever application.
|
|
93 Comments and suggestions for improvements/enhancements are greatly appreciated.
|
|
94 However,due to the nature of the subroutine I would appreciate retaining
|
|
95 control of any update issuances so that the edition numbers etc. stay
|
|
96 controlled.
|
|
97
|
|
98 Ron Lammardo
|
|
99 75706,336
|
|
100
|
|
101
|