home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
MM1
/
DRIVERS
/
windio54.lzh
/
windio54.notes
< prev
Wrap
Text File
|
1995-01-31
|
11KB
|
301 lines
Part 1 -- WINDIO #54 GENERAL INFORMATION
History
Since the Atlanta CoCoFest in October 1994, windio has been undergoing
some changes. This edition #54 release is a culmination of three months
of work.
This release of K-Windows gives the developer and user some features
which were in demand, but lacking for quite a while. While windio is
still not bug-free, it has most definitely improved in certain areas.
Most notably, the keyboard driver underwent a major overhaul. Besides
this, several bugs were nixed, and general speed improvements were
introduced throughout the code.
Now that windio #54 is released, the responsibilities for maintaining
the MM/1 version are going back to its original author, Kevin Darling. As
I understand, Kevin's work on porting K-Windows to other systems will be
folded in with the MM/1 version. This is certainly good news for all of us.
No one knows source code better than the person who wrote it.
Kudos
A number of people were responsible for the release of this version
of K-Windows and it's only fair to recognize them. While this is by no
means a complete list, I do wish to recognize the efforts of as many
individuals as I can recall:
o Foremost, Kevin Darling, for giving his permission to let me
take a crack at the windio source code. (Thanks Kev :)
o David Graham for talking Kevin into doing this :-)
o Eddie Kuns for his immense help and contributions to the
new implementation of the keyboard driver as well as his
ideas on other facets of K-Windows.
o Colin McKay, Joel Hegberg, Ken Scales for their bug reports,
ideas and overall participation in the development process.
o Scott Griepentrog for allowing us to use his resources for
the MM/1 developer's forum.
o Mike Haaland for his ideas and suggestions, as well as his
work on updating cgfx in conjunction with this release.
(sorry about the CTRL-ALT-DEL thingie :-)
o James Jones for his help with windio questions.
If there are some I've missed, I certainly apologize. This was
indeed a team effort, and every bit of participation helped.
Part 2 -- WINDIO #54 RELEASE NOTES
This is not intended to be official documentation for K-Windows.
David Graham is currently working on updating the docs, but was not
able to have them finished by the release. Therefore, the following
information was assembled to provide you with an understanding of the
changes that went into windio #54.
Ident output of the modules included are provided below:
Windio #54 for the 68070 MM/1:
Header for: windio
Module size: $8258 #33368
Owner: 0.0
Module CRC: $593A56 Good CRC
Header parity: $1E74 Good parity
Edition: $36 #54
Ty/La At/Rev $E01 $A000
Permission: $555 -----e-r-e-r-e-r
Dev Drv, 68000 obj, Sharable, System State Process
Windio #54 for the 68340 MM/1a:
Header for: windio
Module size: $8260 #33376
Owner: 0.0
Module CRC: $FFD932 Good CRC
Header parity: $1E54 Good parity
Edition: $36 #54
Ty/La At/Rev $E01 $A000
Permission: $555 -----e-r-e-r-e-r
Dev Drv, 68000 obj, Sharable, System State Process
Keydrv #48 for either CPU:
Header for: keydrv
Module size: $828 #2088
Owner: 0.0
Module CRC: $A8EA84 Good CRC
Header parity: $1C52 Good parity
Edition: $30 #48
Ty/La At/Rev $C01 $A000
Permission: $555 -----e-r-e-r-e-r
System Mod, 68000 obj, Sharable, System State Process
The mouse and sound drivers were not changed; hence they are
not included in this archive.
68K Assembly Tweaks
Some speed improvements were made by tweaking 68k assembly branch
instructions to use shorter displacement values (bra.b vs. bra.w).
In fact, this speed gain was noticeable enough that we had to actually
INCREASE the delay loop in the palette switching code; otherwise,
"sparklies" would appear along the bottom edge of the window.
Concurrent Flood Fills
In windio #52, concurrent flood fills going on in different windows
tended have interesting effects on the screen. The problem was due to
the flood fill algorithm using a global stack. This bug has been fixed by
having windio allocate memory from the system when doing a flood fill.
You may notice a 15K or so reduction in your memory pool for each flood
fill you invoke. This memory, of course, is returned to the free memory
pool after the flood fill has completed.
Hot Spots
Hot spots were disabled in windio #52. I later learned that this
was intentional. However, several developers were adamant about having
this feature reinstated, and so it was. Hot spots are now usable under
windio #54 (though I take no responsibility for their success or
failure :-).
Addition of Two New GetStt calls
In conjunction with the new keydrv module, two new GetStt calls
were added to windio (see below).
Keyboard Driver
A considerable amount of effort was put into revamping the keyboard
driver for the MM/1. With the help of Eddie Kuns, we were able to put
together what I believe is a very slick method of interpreting and
handling XT scan codes. It certainly positions the keyboard driver
for additional features down the road (downloadable keymaps).
A distinction is made between the keypad and the alternate keypad.
The keypad is the set of hybrid numeric/arrow keys and encompasses the
ENTER, +, -, *, / keys. The alternate keypad is defined to be the
set of isolated arrows (in diamond formation) as well as the six
isolated PgUp, PgDn, Ins, Del, Home, End keys. The alternate keypad
may or may not be part of your keyboard. The numeric keypad should
definitely be.
We added legal key sense functions through the use of two new
GetStt calls: SS_KySns ($AD) and SS_KyImg ($AE). They are
documented below. (NOTE: C language bindings are included in
the two example source files which use these calls, testkysns.c and
testkyimg.c. These bindings should be available in the next release
of the cgfx.l library.)
---------------------------- SETSTAT CALLS --------------------------
SS_KySns ($AD)
Entry Points:
d0.w = path
d1.w = $AD
Exit Points:
d0.l = a 32-bit value whose bits are defined below
bit set if TRUE:
00000000000000X Shift (Right or Left)
0000000000000X0 CTRL
000000000000X00 ALT
00000000000X000 Up Arrow
0000000000X0000 Down Arrow
000000000X00000 Left Arrow
00000000X000000 Right Arrow
0000000X0000000 Space
000000X00000000 Left Shift
00000X000000000 Right Shift
0000X0000000000 Caps Lock
000X00000000000 Scroll Lock
00X000000000000 NUM Lock
0X0000000000000 Keypad Key
X00000000000000 Alternate Keypad Key
special bits
bit 31: 0 = not valid for this window, 1 = valid for this window
See the example program testkysns.c for implementation.
SS_KyImg ($AE)
Entry Points:
d0.w = path
d1.w = $AE
Exit Points:
a0.l = the address of the 16 byte keyboard image
NOTES:
Keydrv uses a 16 byte keyboard image to keep track of which keys are
up and which are down at a given time. Each bit in the 16 byte buffer
is an offset based on a "key code" which is common across different
types of keyboards (refer to the file 'keyboard_abstract' for a
listing of key codes).
This call should be used only if information for a particular cannot
be gleaned from the SS_KySns call. Also, the call may be changed in
the future, depending on changes made to the keydrv module.
See the example program testkyimg.c for implementation.
---------------------------------------------------------------------
SysReq
In an attempt to free up keystrokes on the keyboard, an agreement
was made to use the SysReq key as the lead-in key for all window and
system oriented keystrokes. Accessing the SysReq key can be different,
depending on which brand of keyboard you have. Usually, it is invoked
by holding down the ALT key, pressing the key with the SysReq label on
it, then release both keys. On other keyboards (like mine), SysReq is
a key unto itself, and it is only necessary to press that key to invoke
a system request function.
After pressing the SysReq key (either by ALT-SysReq or some other
similar keystroke), the following keys cause corresponding actions to
be taken:
R = Resize the window
M = Move the window
B = Throw the window to the back of the window stack
D = Debugger/Reset. If you have ROMBug or some other ROM-based
debugger installed, it will be invoked; otherwise, this
will reset your machine.
UP = Turn on keyboard mouse (NOTE: This is the up arrow on the
numeric keypad, NOT the up arrow on the alternate keypad)
DN = Turn off the keyboard mouse (NOTE: This is the down arrow on
the numeric keypad, NOT the down arrow on the alternate keypad)
Any other key is ignored. Note that the CTRL/ALT/A, CTRL/ALT/B,
and CTRL/ALT/SPACE keystrokes still resize, back, and move the window,
but hopefully they will be phased out in favor of the newer SysReq
method.
Keyboard Mouse
The keyboard mouse now fully supports all three mouse buttons on
the keyboard. Once the keyboard mouse is activated (using SysRq-Up),
the key are used to control the mouse cursor:
UP Arrow on the Numeric Keypad 8 pixels up
DOWN Arrow on the Numeric Keypad 8 pixels down
LEFT Arrow on the Numeric Keypad 8 pixels left
RIGHT Arrow on the Numeric Keypad 8 pixels right
SHIFT + Any arrow above 1 pixel increments
ALT + Any arrow above extreme side of screen
0/INS on the Numeric Keypad mouse button 1
./DEL on the Numeric Keypad mouse button 2
ENTER on the Numeric Keypad mouse button 3
Note that the keyboard mouse does NOT work with the alternate
keypad arrows (these are usually found on the newer 101-key keyboards).
The reason for this that the user does not have to lose the functionality
of having arrow keys just because the keyboard mouse is on. The downside
is that part of the numeric keypad has to be sacrificed as a result when
the keyboard mouse is in use.
Another neat bonus: holding down two adjacent arrow keys allows the
mouse cursor to move diagonally.
Part 3 -- WINDIO #54 BUG LIST
As stated earlier, there are still bugs which were not fixed in
this version of windio. Below is a list of the known ones:
1. There is a problem where PUTting will throw extra garbage onto the
screen. The following display code grabs the first character on the
second line of the screen, and attempts to put it it on the 80th
column. Notice the junk that is spilled on the left side of the first
line when the second display code is evoked.
display 1b2c dc05 0000 0008 0008 0008
display 1b2d dc05 0278 0008
2. The following command will crash your system:
display 1b21>/w
3. The OPutBlk (offset put block) function does not work on type
3, 4, 5, 8 or 9 screens (40 columns)