[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Apple II Csa2 FAQs: Input Devices, Part 15/25 (2/2)



[continued from previous message]

     My experience is that this is more simple than it looks. You have 
one
stuck key. It is stuck down. Have you opened the machine and moved the
keyboard? If so you may have replaced it wrong, it is rubbing on one of 
the
edges. The key that is stuck is 
next to the edge.

     If this does not apply to you, often pressing all of the keys 
until it
stops (because by pressing on the right key, it comes unstuck) will 
work.

----------------------------


From: Dave Althoff

     My first suspicion is a stuck key, and if this is a beige ][e, the 
first
place I'd look is the [`/~] key, adjacent to the power light.

----------------------------

From: Owen Aaland

     The escape is a likely key for this as it is located where it can 
easily
contact the case but does not exhibit any problems until another key is 
pressed
and then that key will repeat.

----------------------------

 From: Rubywand

     If the KB Encoder IC or the IOU IC is loose or has pins making 
poor
contact, you could get the symptoms described.

     Open the case and locate the KB Encoder (a big, 40-pin IC on the 
right
side of the motherboard just to the right of three ROMs). Use a small,
thin-blade screwdriver to scootch up the IC. (You want to get some 
lifting for
all pins, even if you end up 
just removing the IC.) Press the IC back into the socket.

     Do the same with the IOU (a big, 40-pin IC just to the left of the 
three
ROMs).

     The idea of lifting up and re-socketing each IC is to let the 
socket
contacts scrape a fresh connection with each pin on the IC.

____________________________



From: tgeer@pro-gumbo.cts.com (System Administrator)

017- A while ago someone posted about how to read the joystick on
     a GS in native mode. They said that it was possible to read
     both paddles at once and therefore get much more accurate
     readings?

Only the high bit of these locations is valid.  When the high bit of 
either
location becomes 0 then the corresponding analog input has timed out.

You will actually get more accurate results by reading them one after 
the other
with the accumulator set to 8 bits wide and the index registers used to 
hold
the counts (16 bits wide).  This allows for a much faster loop, giving 
better
resolution.  
Assuming that this routine is called from full native mode, the 
following code
will do the trick:


strobe   equ   $C070       ; analog input timing reset
pdl0     equ   $C064       ; analog input 0
pdl1     equ   $C065       ; analog input 1

start    php               ; save processor status register
         phb               ; and data bank register
         sep   #%100000    ; make accumulator 8 bits wide
         lda   #0          ; make data bank = 0
         pha
         plb
         ldx   #0          ; initialize the counters
         txy
         lda   strobe      ; strobe the timing reset
loop1    inx               ; increment pdl0 count
         lda   pdl0        ; is high bit = 0?
         bmi   loop1       ; no, keep checking
         lda   strobe      ; yes, strobe the timing reset again
loop2    iny               ; increment pdl1 counter
         lda   pdl1        ; is high bit = 0?
         bmi   loop2       ; no, keep checking
         plb               ; yes, restore data bank
         plp               ; and processor status register
         rts               ; return to caller (could be RTL)


Notice that the actual counting loops are only 9 cycles long.  This 
gives the
best possible resolution.  You will need your counters to be 16 bits 
wide as
the results will easily overflow the capacity of an 8 bit counter.

Using memory locations as counters will only serve to slow the counting 
loop
down. If X and Y contain valid data before entry, you will need to save 
them
off to the stack and pull them back in after interpreting the joystick 
results.
I have used this 
exact method to read the analog inputs on my Science Toolkit box which 
connects
to the joystick port.

The results have been extremely accurate (much more than would be 
needed for a
game which reads the joystick).


____________________________



From: Dan DeMaggio

018- Is a Y-adapter available for my GS keyboard?

     Yes. Redmond Cable has an ADB Y-connector cable for separating 
your mouse
from the side of your keyboard.

____________________________



From: Mark Wade

019- How do you use the Kensington TurboMouse with a IIgs?

The Version 3.0 Kensington TurboMouse ADB works fine on a later model 
IIgs
(such as a mid-late 1987 true ROM-01 IIgs).  It will not work correctly 
on a
ROM-00 IIgs even after the standard ROM upgrade to ROM-01. The Version 
4.x TM
will not work on any 
IIgs.

Dip switches:

Right handed use: (L but click, R but click lock) SW1 Up
Left handed use:  (R but click, L but click lock) SW1 Down

The other switches are for what they call "chording" and are listed as:


            SW2  SW3  SW6
Command N   Dn   Dn   Up
Command O   Dn   Up   Dn
Command W   Dn   Up   Up
Command S   Up   Dn   Dn
Command P   Up   Dn   Up
Command Q   Up   Up   Dn
Command Z   Up   Up   Up

____________________________



From: Rubywand

020- My mouse feels very bumpy. Everyone says it needs cleaning but
     when I look inside there is just a little dust and the rubber
     treads on the rollers look okay. So, how am I supposed to get
     my mouse any cleaner?

     It does sound like you have a gunked-up mouse. Rollers are whitish
plastic, black plastic, or metal-- they do not have treads. The "tread" 
is
gunk.

     It is best to clean a mouse with the computer OFF. The main reason 
is
that, otherwise, it's hard to avoid unintended clicking on stuff that 
could
cause problems. There is no need to disconnect the mouse unless you 
want to
move to a better work area 
for the cleaning.


     First, get together a few supplies and tools:

A wooden desoldering stylus or flat-tipped plastic TV technician's tool 
is
handy for dislodging gunk. (Probably, a small jeweler's screwdriver is 
okay.
However, you do not want to scratch a roller.)

Small skinny long-nosed pliers are good for picking out globs of gunk 
and dust.

Windex or some relatively safe spray cleaner.

Paper towels and a cotton swab.


     To open the mouse use fingernails to rotate the panel insert 
around the
ball opening on the bottom. The panel and ball should come out. Spritz 
the ball
and panel with cleaner (or put them in a glass with soap and water). 
Wipe dry.

     Dampen a paper towel with cleaner and wipe the outside case. With 
a
cleaner-dampened paper towel, clean the cord for at least a foot or so 
near the
mouse.

     Look inside the mouse. You may see globs of dust and gunk. Remove 
these--
pick them out-- as best you can.

     Inside, there should be 3-4 rollers. If it's been a month or more 
since
the last cleaning each will probably look like it has a dark gray 
rubber tread.
Use the desoldering stylus, etc. or a fingernail to dislodge gunk on 
each
roller.

The best way to dislodge gunk is to push the 'tread' sidewise (kind of 
like
removing a tire) as you work your way around the roller. Use the skinny
long-nosed pliers to pick out strips of the 'tread' as it unpeels.

     Use a cleaner-dampened swab to finish cleaning each roller.

     Use the swap to wipe around and pick out any remaining dust or 
gunk,
replace the mouse ball, and rotate the plastic panel into place.

     One way to simplify mouse cleaning is regular timely use of an 
Ergotron
"Mouse Cleaner 360" or similar kit. The Ergotron kit includes a couple 
velcro
balls, cleaner, wipe cloth or shammy, and a mouse cleaner track pad. 
You squirt
cleaner on the 
proper size ball, stick it in your mouse, run it around in a circular 
motion on
the track pad, and finish up with a wipe using the cloth or shammy.

     Such kits do not seem to be much help in removing established gunk
'treads'. (Actually, the Ergotron might get the job done; but, it would 
take a
_lot_ of revolutions. It is easier to dislodge 'treads' by hand and use 
the
Ergotron to get rid of 
residue.)  Cleaning kits can avoid tread build-up if used every week or 
so.

----------------------------


021- What is the best kind of mouse pad?

     The best mouse pads are cloth-covered 1/8" - 1/4" rubber foam. The 
cloth
should have a slightly prickly feel when brushed by your finger tips. 
Such pads
offer some resistance to mouse movement. This makes positioning easier 
and
helps reduce fatigue.

     The worst mouse pads are plastic or plastic coated. These usually 
offer
little resistance to movement and transfer hand oils, dust, and other 
gunk into
the mouse so rapidly that cleaning becomes a nearly daily chore.

     Cloth-covered pads do get dirty. It's a good idea to wash your 
mouse pad
every couple of months. (Use warm soapy water, rinse, blot with towel, 
and let
dry.)

-----------------------------


022- Does anyone know what is the best way to clean a keyboard
     after several months of using it without affecting the
     imprinted letters or numbers on the keys?

     First, if you do not have a picture of the keyboard, it's a good 
idea to
make a diagram of key locations.

     If the keyboard is a separate unit, remove the keyboard cover-- 
i.e. the
'shell' that surrounds the keys. Spritz it with a cleaner (like Windex,
Fantastik, etc.), wipe, and let soak in warm soapy water.

     What you need to do next is pull the key tops. A puller tool which 
lets
you get around and under a key on two sides is very helpful; or, you 
can use
fingers and a small screwdriver or leter opener to pop off the key 
tops. For
SPACE and other large 
keys, take care to unhook stabilizer bars and pay attention to how the 
bar for
each is connected.

     Spritz each key top with Windex, Fantastik, etc., wipe, and let 
soak in
warm soapy water. The letters, numbers, etc. on key tops are, usually, 
solid
plastic and should not be in any danger of getting wiped off. For sure, 
you
would not want to use 
any petroleum distillate or other solvent which attacks plastic for 
cleaning.

     Everything is rinsed, blotted with paper towels, and allowed a 
couple
hours to dry.

     Once the KB interior is de-dusted you can blot away remaining 
moisture
from key tops, etc. and put everything together. Install the large key 
tops
with stabilizer bars first, then press on the others. If the keyboard 
is a
separate unit, wipe/clean 
the cable.

-----------------------------


023- Is there a fix for a bad trigger on a CH Products Flight Stick?

     If the trigger on your "Flight Stick" doesn't always fire when 
squeezed,
the problem is likely to be too much space between the trigger and the 
PB0
microswitch. A simple fix is to apply two or three layers of self-stick 
label
bits to the back of the 
trigger piece (easily accessed once the handle is opened). To check 
your work,
use an ohmmeter connected across the button output or plug in the stick 
and RUN
a two-liner to display PB0 status:

     10 IF PEEK(49249)>127 THEN PRINT "X";
     20 GOTO 10

     Pressing the trigger should spit out X's. Once you know your stick 
is
fixed, just slap it together and you've got the hair-trigger 
snap-action
response "Flight Stick" is supposed to deliver.

____________________________



From: Mitchell Spector

024- How can I improve the feel of my original (beige-key) IIc 
keyboard?

     You can improve the feel by removing the black rubber mat. This is 
a
spill-guard; but, people complained it hindered their typing so it was 
removed
in next generation IIc's. You can safely remove yours by just lifting 
it up;
it's attached by a few 
drops of glue.

     Some people claim typing is even further improved if you remove 
the small
metal clips in between each key stem (these produce a click sound when 
you
type). You can reverse all this if you do it carefully, I did myself.

____________________________



From: Supertimer

025- Can I replace my broken GS mouse with one from a Mac?

     Yes, if it is a Macintosh ADB mouse. The "teardrop" ADB Mouse II 
that
comes on newer Macs works great on the IIGS and can be found for a few 
bucks in
Mac for-sale groups. Third party ADB mice should work too.

Note: Mice for Mac Plus and before are not ADB so won't work. Mice for 
the new
iMac won't work because they are for the USB interface.

____________________________



From: David Empson and David Wilson

026- What is the pinout for the IIe, //c, Laser and similar 9-pin 
mouses?

The IIe/IIc/Mac Plus mouses can plug into the //c or IIc+ Game/Mouse 
Port or,
on a IIe, into the 9-pin socket of a Mouse Card. When plugged into the 
//c or
IIc+, several Game Port pins are redefined for use with a mouse.



 Dsub-9 Female Socket on Computer    Dsub-9 Male Plug on Mouse
     ,---------------------.          ,---------------------.
     \  5   4   3   2   1  /          \  1   2   3   4   5  /
      \   9   8   7   6   /            \   6   7   8   9   /
       `-----------------'              `-----------------'

   Mouse         Usual //c, IIc+ Game Port Function

1  MOUSE ID      Pushbutton 1
2  +5V           +5V
3  GND           GND
4  XDIR          no Game Port function on //c, IIc+;
                 this TTL-compatible input can be read at $C066
5  XMOVE         Game Control 0 or PDL0 (Joystick X-axis)
6  n.c.          (no Game Port function on //c, IIc+)
7  MOUSE BUTTON  Pushbutton 0
8  YDIR          Game Control 1 or PDL1 (Joystick Y-axis)
9  YMOVE         no Game Port function on //c, IIc+;
                 this TTL-compatible input can be read at $C067

____________________________



From: David Empson

027- How do I write programs which use the mouse?

The assembly language interface to the mouse firmware is documented in 
three
places:

- the reference material that was supplied with the AppleMouse card for 
the
IIe.

- the IIc Technical Reference Manual.

- the IIgs Firmware Reference Manual.

Interfacing to the mouse is somewhat complicated, especially if you 
want to
implement some kind of mouse cursor (usually requires writing an 
interrupt
handler).

The first problem is locating the mouse firmware.  It could be in any 
slot for
a IIe or IIgs, or either of two slots for the IIc.  The safest method 
is just
to do a slot search, looking for the mouse ID bytes:

$Cn05 = $38
$Cn07 = $18
$Cn0B = $01
$Cn0C = $20
$CnFB = $D6

On a ROM 3 IIgs, it is possible that the mouse firmware will not be 
available,
because this doesn't prevent the use of the mouse from GS/OS (the 
Miscellaneous
Toolset or Event Manager can still be used). An AppleMouse card, if 
installed,
is not used by 
the toolbox.

On a ROM 1 IIgs, the slot mouse firmware is used by the toolbox, so 
slot 4 must
be set to "Mouse Port", or an AppleMouse card may be installed in any 
slot.


Using the mouse firmware consists of calling the various parameters 
provided by
the firmware.  An entry point table is provided in the mouse slot.  The
routines common to all implementations are:

$Cn12    SETMOUSE      Sets mouse mode
$Cn13    SERVEMOUSE    Services mouse interrupt
$Cn14    READMOUSE     Reads mouse position
$Cn15    CLEARMOUSE    Clears mouse position to 0 (for delta mode)
$Cn16    POSMOUSE      Sets mouse position to a user-defined pos
$Cn17    CLAMPMOUSE    Sets mouse bounds in a window
$Cn18    HOMEMOUSE     Sets mouse to upper-left corner of clamp win
$Cn19    INITMOUSE     Resets mouse clamps to default values;
                       sets mouse position to 0,0

Each of the above locations contains the low byte of the entry point 
for the
routine.  The high byte is $Cn.  The usual method for calling these 
routines is
to set up a single subroutine which is patched with the location of the
appropriate routine as 
required.  You could also set up a series of subroutines for calling 
each
routine.

The general logic would be as follows:

Locate the mouse slot by searching for the ID bytes described earlier. 
Patch
the slot into the following routine:

TOMOUSE  LDX #$C1   ; Patch operand byte with slot in $Cn form
         LDY #$10   ; Patch operand byte with slot in $n0 form
         JMP $C100  ; Patch high byte of operand with slot in
                    ; $Cn form.  Low byte of operand must be--- Fruity 
Dog 6.2