363 lines
18 KiB
Plaintext
363 lines
18 KiB
Plaintext
All right. I've noticed a number of people asking about putting
|
|
an external keyboard on their 1200's. Unfortunately, the only replies
|
|
they got said it couldn't be done, or that it would be very difficult. Neither
|
|
of these is true. Electronically, the keyboard interface is pretty much the
|
|
same as it always has been. The only real obstacles are physical; Thus I
|
|
decided to make an attempt, and recently managed to pull it off. What follows
|
|
is an account of what I did along with a few suggestions. Be sure to read it
|
|
through all the way before breaking out the tools...
|
|
|
|
It's been working well so far (I'm typing this on my good old A1000
|
|
keyboard hooked up to my 1200 right now.) The result is that I can have
|
|
both an internal and external keyboard hooked up simultaneously without
|
|
interference. In fact, they complement one another. You can actually press
|
|
shift on one keyboard and 's' on the other and get a capital 'S'! Those old
|
|
6570 keyboard controllers are quite robust, seemingly in contrast to the on
|
|
board one in the 1200.
|
|
|
|
Needless to say, doing this modification required some very delicate
|
|
work. The internal keyboard micro has to be physically taken off-line
|
|
in order to connect an external keyboard or keyboards. This isn't like the
|
|
500 where all you had to do to hook up an external was to patch into
|
|
the KCLK and KDAT lines, tap +5 and Ground from somewhere and you
|
|
were done. The 6570's took care of all the handshaking automatically.
|
|
Unfortunately, the 1200's keyboard micro doesn't work that way. Hooking
|
|
up another keyboard in parallel with it's clock + data lines just hangs both
|
|
of them. (My guess is that the output isn't open-collector like it
|
|
is on the externals, (there's no reason for it to be) so when you have
|
|
an external hooked up, the internal can't drive its 0's low enough.)
|
|
Anyway, I just decided to do away with the internal controller altogether.
|
|
|
|
Um...let me just say this... I'm not really writing this post in the
|
|
form of a full blown hardware hack. This is more of a "Here's what I did.
|
|
If you'd like to give it a shot, here's what you need to know." sort
|
|
of thing. I'm not going to go into disassembly instructions or anything
|
|
like that. I will make the standard disclaimer, though: If you try this and
|
|
you blow up your machine, don't come crying to me. There are some quite
|
|
tiny spots that have to be soldered and/or desoldered, so patience, a
|
|
steady hand, and a reasonably sharp soldering iron are a definite
|
|
necessity. If there's enough support for turning this into a full article
|
|
I'll throw something together. (My brother suggested submitting it to
|
|
AC, but it may be a bit hardcore for them. Schematically, it's quite
|
|
simple, but the tiny joints do make it a little more difficult. Maybe
|
|
Aminet...
|
|
|
|
Okay, with that out of the way here are the gooey details. The two
|
|
chips we'll be dealing with are U13 (The keyboard micro) and U7 (The
|
|
keyboard/parallel 8520). Try to keep your soldering iron and any other
|
|
potentially destructive tools away from the other chips. ;^) The KBClk and
|
|
KBDat pins on the keyboard micro need to be heated and bent up away
|
|
from the motherboard. I touched the top of the pin with the iron, let it heat
|
|
for a second and then, with a razor-knife wedged behind the pin, twisted,
|
|
lifting the pin away from the board. There's not much solder holding these
|
|
down, so it shouldn't take too much force. Once the pin was free, I straight
|
|
ened it up with a pair of needle-nose pliers and went on to the next one.
|
|
Fortunately, both pins are right next to each other and the keyboard micro
|
|
(and the 8520) are surface-mounted PLCC's and not true SMD's. These
|
|
are the only two pins that need to be desoldered. The rest of this hack just
|
|
involves soldering wires in.
|
|
***NOTE: I've heard from at least two people that their internal micros did not
|
|
need to be taken offline for the external to work. All I know is that on mine
|
|
it had to be disconnected. Your Mileage May Vary, however, so you may
|
|
want to try skipping this step, do the rest, and see if it works.***
|
|
|
|
Get your hands on the smallest insulated wire you can find (>24 awg),
|
|
and solder wires to the KBClk, KBDat and _KBReset lines as shown in the diagram
|
|
below. The number of pins on the chips should be accurate. they are 44 pin
|
|
PLCC's, with 11 pins on each side. The ^ denotes the pin 1 dot on the chips.
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
|||||||||||
|
|
-+-----------+-
|
|
-| |-
|
|
-| |-
|
|
-| 8520PL |-
|
|
-| |-
|
|
-| U7 |-
|
|
-| |-
|
|
-| |-
|
|
-| |-
|
|
-| ^ |-
|
|
-+-----------+-
|
|
|||||||||||
|
|
||
|
|
| \KBDat (Solder wire here)
|
|
||||||||||| |
|
|
-+-----------+- \KBClk (Solder wire here)
|
|
-| |-
|
|
-| |-
|
|
-| Keyboard |---KBClk (Desolder + bend up) Floppy
|
|
-| Micro. |---KBDat (Desolder + bend up) Power
|
|
-| |-
|
|
-| U13 |- ....
|
|
-| |- To ||
|
|
-| |- Front ||
|
|
/---| ^ |- of +5v/|
|
|
| -+-----------+- Machine / |
|
|
| ||||||||||| || (Tap +5 and Gnd. from |
|
|
| || these wires.)-------Gnd /
|
|
\_KBReset (Solder wire here) ||
|
|
||
|
|
\/
|
|
|
|
----------------------------------------------------------------------------
|
|
|
|
As you can see, power is easily tapped from the floppy cable. You
|
|
should use somewhat larger wires for this. Thus, when you're done you
|
|
should have five wires coming out of your machine: KBClk, KBDat,
|
|
_KBReset, +5, and Gnd. You will also have a non-functional internal key
|
|
board. If you want, however, you can take these wires (except _KBReset)
|
|
and hook them up to a 5 pin DIN and attach a 2000/3000 keyboard, or a
|
|
phone plug and connect a 1000 keyboard. There is a catch, however. You
|
|
will not be able to reset from the external keyboard. 1000s, 2000s, 3000s,
|
|
and 4000s have internal circuitry which interprets 500 milliseconds of
|
|
KBClk low as a "reset" pulse, and pulls the _KBReset line internally (This is
|
|
according to the Hardware Manual). So unless you fabricate a circuit that
|
|
does this (see below), you'll need to reset from the native keyboard. (This
|
|
function should still work. Actually, If you're going to do it this way,
|
|
there's no need to solder the extra wire for _KBReset.)
|
|
|
|
Now, the A500 keyboard is slightly different. It has no case but it
|
|
will generate a _KBReset signal. Remember how I said you could have two
|
|
kbd's simultaneously? Well, all you have to do is hook up your external as
|
|
described above, and string your wires along (Including _KBReset) to the
|
|
500 keyboard. What's more, the 500 keyboard is a near-exact fit replace
|
|
ment for the 1200 one (and with full sized Left-Shift and Return keys!). In
|
|
order to do this I had to desolder the LEDs on the 500 kbd altogether and
|
|
then remove the ones from the 1200's "LED board", hot glue them individually
|
|
to their positions, bend the leads down flat, and wire them up again. Also,
|
|
the support on the top part of the wedge-shaped floppy bracket has to be sawed
|
|
off to make room for the encoder board. It works, though, and theoretically I
|
|
should even be able to fit the RF shield back on.
|
|
|
|
Okay, so you may not like the beige-colored keys of the 500 keyboard
|
|
sticking out of your shiny white 1200 case. The simple solution is to swap
|
|
the 500 keyboard's beige keycaps for your defunct 1200 keyboard's white ones.
|
|
They should be the same in every respect except color. There is, however,
|
|
another alternative. Your original 1200 keyboard may be compatible with the 500
|
|
keyboard's encoder board. Encoder boards that are compatible have a
|
|
slot for one large ribbon cable to fit in. Incompatible encoder boards have
|
|
slots for two small ribbon cables. If compatible, all you have to do is unplug
|
|
the ribbon from the 500 keyboard itself, unscrew the little circuit board in
|
|
the upper-right corner (the encoder board) and remove it along with its
|
|
plastic bottom-shield. You can then plug the ribbon from your 1200 kbd into
|
|
the socket, and wire the encoder board up as you would with the
|
|
true 500 keyboard. This is the setup I had originally. Now, since the ribbon
|
|
comes out of the middle-back of the 1200 keyboard, you have to put the
|
|
controller board in that same vicinity. It's up to you how to mount it, but
|
|
what I did was to first off trash the RF shield. (REAL hackers don' need no
|
|
steenkin' RF shield 8^) ) Then I hot-glued the plastic shield to the bottom of
|
|
the encoder board, and hot-glued this by the lower left corner to the top of
|
|
the hard drive. The other end rests on the floppy cable, and tension from
|
|
the keyboard ribbon folded under the keyboard keeps the whole thing
|
|
steady.
|
|
|
|
Here's a quick recap:
|
|
|
|
-Desolder the clock and data pins coming from the onboard A1200
|
|
keyboard microcontroller. (This is probably the hardest part of this
|
|
whole thing.)
|
|
|
|
-Solder the KBClk, KBDat, _KBReset, +5, and Gnd. lines to the
|
|
locations described in the diagram. (A magnifier lamp is useful for
|
|
this.)
|
|
|
|
-Hook the KBDat, KBClk, +5, and Gnd. lines up to some sort of
|
|
external keyboard connector, and use the dead internal to reset, OR
|
|
|
|
Hook the KBDat, KBClk, +5, and Gnd. lines up to some sort of
|
|
external keyboard connector and run the wires along to their
|
|
corresponding locations on a 500 keyboard INCLUDING _KBReset, OR
|
|
|
|
Hook the KBDat, KBClk, +5, and Gnd. lines up to some sort of
|
|
external keyboard connector and run the wires along to their
|
|
corresponding locations on a 500 keyboard's encoder board INCLUDING
|
|
_KBReset and then plug your 1200 keyboard's ribbon cable into the
|
|
encoder board.
|
|
|
|
-Seal up, fasten down, make sure there are no solder bridges, shorts,
|
|
etc.
|
|
|
|
-Power up and enjoy!
|
|
|
|
---------------------------------------------------------------------------
|
|
Below are the pinouts for various types of Amiga keyboards.
|
|
|
|
A500: Ribbon out (usually rainbow)
|
|
Black=1...Purple=8
|
|
||||||||
|
|
+---------------------------------------+
|
|
| Pin 1->........<-Pin 8 |
|
|
| |||| | XX<--Shield Gnd.
|
|
| A500 |||| \Gnd |
|
|
| Keyboard |||\+5v [===]<--Power LED
|
|
| Encoder ||\_KBReset |
|
|
| |\KBClk [===]<--Drive LED
|
|
| +-----------+ \KBDat |
|
|
Ribbon Socket---->|...........| |
|
|
+---------------------------------------+
|
|
|||||||||||
|
|
||||||||||| <---To A500 or A1200 Keyboard.
|
|
|
|
A1000: (Connector on back of keyboard itself)
|
|
|
|
(Female) +------+
|
|
| |||| | 1=Gnd
|
|
| 1234 | 2=KBClk
|
|
| | 3=KBDat
|
|
+-+ +-+ 4=+5v
|
|
+ +
|
|
++
|
|
|
|
A2000/3000: (This is from the Hardware book. Not firsthand information.)
|
|
|
|
(Female) -v-
|
|
/ \
|
|
|3 1| 1=KBClk
|
|
| 5 4 | 2=KBDat
|
|
| 2 | 3=NC
|
|
\___/ 4=Gnd.
|
|
5=+5v
|
|
---------------------------------------------------------------------------
|
|
|
|
That's pretty much it. As I said, this isn't a full tutorial, so I'm
|
|
leaving the mechanical considerations up to the reader.
|
|
If you have any other suggestions for improvement let me know, or feel
|
|
free to add them in yourself. Start a credits list if you so desire.
|
|
|
|
Some final thoughts:
|
|
|
|
-I wouldn't worry too much about power supply overloading. I've
|
|
got 2 floppys, 2 keyboards, a hard drive, a DataFlyer SCSI+
|
|
SCSI controller, and a MicroBotics 50Mhz 1230XA with '881 and 8
|
|
megs and my stock supply hasn't complained yet.
|
|
|
|
-You could also use a DPDT switch to switch between internal and
|
|
external keyboards. One side goes to KBClk and KBDat on the internal
|
|
micro, the other side goes to the same lines from the external, and
|
|
the middle goes to the pins on the 8520. The keyboards should be
|
|
able to deal with being switched in or out in midstream.
|
|
(I have not actually tried this one, but don't see why it wouldn't
|
|
work, as it's effectively the same thing as unplugging one keyboard
|
|
and plugging in another one.) The Hardware Manual says the keyboards
|
|
were designed to handle hot connects/disconnects.
|
|
|
|
-No, IBM keyboards are electrically totally different. You would
|
|
need a microprocessor driven interface to make the translation.
|
|
There is a (fairly involved) hack on Aminet in /hard/hack to do this.
|
|
|
|
-If you hook everything up and get a pulsing stream of '''s, you've
|
|
got the clock and data lines backwards. Switch them around.
|
|
|
|
-If you're installing your 1200 in a tower and your tower has a
|
|
Reset button on it, you can hook the _KBReset line and Ground up
|
|
to the button and reset that way.
|
|
|
|
-As a couple people have asked, I don't have A1200 schematics. The
|
|
data herein is the result of some poking around with a logic probe,
|
|
a little deductive reasoning, some extrapolation from the A500
|
|
schematics, and a lot of trial and error. However, if someone out
|
|
there HAS A1200 schematics, I'll gladly reimburse you for your time
|
|
at a photocopier! 8^)
|
|
|
|
Enjoy...
|
|
...Sean Curtin. (smc8516@ultb.isc.rit.edu)
|
|
^^New address!
|
|
|
|
The following is an optional modification to the above hack which allows
|
|
the ability to reset the computer from the external keyboard, posted by
|
|
Dana Peters. It looks good, although as of this time I have not yet tried
|
|
it myself.
|
|
|
|
----------------------------------------------------------------------------
|
|
16152.3.26294.1 A1200 external keyboard reset hack
|
|
7/5/94 06:16 89/4737 ai745@FreeNet.Carleton.CA (Dana Peters)
|
|
Lines 1 to 89 of 89 (100%)
|
|
-----
|
|
|
|
Got an A1200? What do you think of the keyboard? If you're a touch
|
|
typist you probably figured out pretty fast that the A1200 keyboard
|
|
has a problem with rollover. Try rolling over between two keys on the
|
|
same row, and you're just as likely to get them in the reverse order
|
|
as the forward order. Commodore botched this one, IMHO.
|
|
|
|
Anyway, I decided to try to "fix" my machine, and found two different
|
|
hacks to put another model Amiga keyboard on the A1200; one by Hans
|
|
Luijten (j.a.w.m.luijten@kub.nl) and another by Sean Curtin
|
|
(squirrel@cup.portal.com). Using the info from these plans I decided
|
|
to add a connector to my A1200 for an A2000/3000 keyboard. Although
|
|
the plans called for two pins to be cut or desoldered to disable the
|
|
internal keyboard, on my machine I tried leaving the connections
|
|
intact, and found that both the internal and external keyboards were
|
|
able to co-exist without problems. Your mileage may vary, however.
|
|
|
|
The other change I made to the plans was to create a circuit to allow
|
|
the external keyboard to reset the A1200 the way god intended... with
|
|
the three finger salute. This avoids having to use the internal
|
|
keyboard to reset or having to wire up a separate button to perform
|
|
reset. What follows is a uuencoded .lha file containing an IFF
|
|
picture of the external keyboard reset circuit and some additional
|
|
notes.
|
|
|
|
begin 644 kbreset.lha
|
|
M(4(M;&@U+=P$ !Z&0 U07C' "VMB<F5S970N:69F.OL#B&N;U;;7^<60
|
|
M7DO"<(EDITB$<(M1;+-:E0@2*L(XSA-LMD(X=+@X"7**UU+(6W":<AP&!\@D
|
|
M)"0E@TV4#/9 LT)%TX#@RRQH[2 3@"V2:&K;S;]_[WO-OTECDDL=LMME-B/=
|
|
MF^ &X#X&G.?"$^'-[#M:9(YV]+@^OCH(>7[OJ>KBX^+C^GC(((>5&\Q#YA^Z
|
|
M$8GHAQN,3G]''X'K#Y/)'^@ 8O!QO8&KO@P>4]P7_Q>HA:\P[8JUNB:6X+7%
|
|
M<M=+4%9@Z2]T6FA?\C6Z+<-19ZU4)TK-EW# VQ0SK JT(M+F1"]O^Q7/"+G_
|
|
M>_TVM#6%IY?[O].AFWJ+$<5KY[PL^@<7CWKQYY\N6O(O"UO->WM<7/B%U,+Z
|
|
MMH5QP&;(LZT+_&4&D84P]08J=H7X/C 1A998@9 Q: "@%T/U!QVBTB<Y!6]]
|
|
MB6160:LBAUY]D5M)>N+[A!=_:%#G<BS1; M_!'O[X4%+(M$4^"4-P&LR/ *F
|
|
MW[>18F/C!54---RG[+T+,Q[3@?@D[.^7W2)@2C!,>,5$W!6%'E$2\=4*";PK
|
|
M9/;,)7A14$!JID%8^)AI9X6J;.$]%@ DBUC-7E/BSC"KUA631[Y,F5V7A43"
|
|
MTJPK116VIC78=%;"\+*F-3G[QZPKDV9*>HL-<7M3)7:[XK'W9.=N^^+7F..*
|
|
MK$+-*+PXA9%T4>DP*N+E71?I2!LPJ^P+W4P[QA:6P+FT0TC"K;-%LA32K67E
|
|
M71?J$D[;WE; N:'.RR:3;T+\(K@YCR=1K9RA8C#F/=ET=CW00W5O3E+,?MT6
|
|
M!ICUM./?4%1\$'(&F/>%2UA:IQ6\:\+..**E>%1P"UYC]BBZT>Y!<FZ+7C1(
|
|
M+))DA=_H7,*TD+@I!D/2&/"\DFH#21 2ZQA0W<>T*W[P J'-6!A6.06B7'OB
|
|
M6:+'"OO T5@_9^BSRTG%R@;7(+\FT+*"J046686;"+)"<05EVWJKNO>\*;$E
|
|
MOSE45PY>)1%]N':A? ^PKT2=M>.*Y%6!]F'>@/APDA7(]ZU%](M%HZM%O;,/
|
|
M627Y(,3A7(]R7CHNC)_R/'^J*Y'N,6IO.J;GHKCQ_;U16I.B;G9'6(]Z6$7O
|
|
M4]&@KS<,>H+)'18=>$5E?B=N;))S_".RX=R$5A?C]57")S_IZ!H^H;+R%FDD
|
|
M@=_MG%7U5^&<69('6,F"-$T0IXJZG,ZW%5ERX!>Q +#([X19D,>['" )8,CT
|
|
MY$R"EP:)(8043XK2I+\:0[/Y!!=T\*.#N/B'%[)1>>Z*; GV2]H4\]8ST@C@
|
|
MQ];M8T'[+C%/6(<),=TA*(FHL^/< M$HLZX+6K%9E5,*BE66.L<YZ/>.7MXB
|
|
M3]%K"WI,*VY-C.TEXSX7TXX=&,'41#D86I FZ*/^EL=%K*"DAM"MJD%9EWQ2
|
|
M:]:RE$+XLXHJ>V*37K6Z:-\7\BX'=+Z+XOXE%^7H7Q2[02R?3=%?T>+.%Y;>
|
|
M_8,4WQ"ST*6F*;*8""Z<;]T6;XQ5/\%\%XU'<+_&+.P"U9F 707P"TJ40JT5
|
|
M8J16]Y?^XJ^(5R(5F(7^OAS[&^[M>6OB9X10B%;]J,_R5+PK7/D/<?Y^;@%7
|
|
MD:XO=B%\\G;+>E?*![2UM"] XLK;%$44N_&*[@3Q> ]VNY(O"N^Y*F8+\9@Y
|
|
MMBF\V18)--47,L05>+.W<%_X4"%0+6QH-2WS P 8 @ *4+XQP MK8G)E
|
|
M<V5T+G1X=%S[ ZQKFM8XVJ'C3?@#[#A5>C.Z! 2J0E(=2*\I:J*PJJ,3>;\^
|
|
M[9->Z[N[L=:5^-__M;=I@4H@2,85SC$,,S@.UC:3+]_WC_#Z?O&KY]CWE]/W
|
|
MO_KL?E[I'!RVEV'CO>N%A>HXG(K7P+JV<^O7_?8_V8__<?XXEY5N67YF*[C_
|
|
MEQE3G59<[I[7VRP7 ZO0R1MJV^GT?]52O8N#F.X>0MQ2@P["EQ9$GN*[',0E
|
|
MNL)DBP?#O.RH6 >+W)QURU%N5?!_@RPR<\N$UP@MTC.(X^XEUUG?)/3 XWO=
|
|
M%F]C16\:% MV)6+N7P.*ER$\WSDD_?E07%=??J+B_ _ X%6N<:3W=:6+Y\O@
|
|
M)AEZ!%I0G6.TI95LA7-*L9+B6[;$MYB5'JRB5R\11DAY*4 (/4I7Z:2PDX)B
|
|
MOB7$EE&=][3N,?<4D8B EK[2E@/KHG?OS3NJD %=QUR$UQ+S+=$O/-G=(W%
|
|
M]7=4NK"JZIN7@Z>^>^IS?$5 &?2-;\5=HGI;9PDP=*/MFR$#;TUSOJO?"2VU
|
|
M5ON\0 /]7SI9>"\J<X!>0Z4GSKXJI?0B-Q,H%16/I>BVP-=F(NH!V/?$RO:*
|
|
MD$/H 6@=+LLBH>\ET*S%)!"C54\F2$IQ",J?=SX7 !]LH-YNJYG!?-Y3:%5(
|
|
M#*A5V]CER8$G6P?=3H_,.]0KN,A3:"[ TO9(ZMRA13$[@YF5 A$,GN!:>FBG
|
|
M[EU\6.,)IL@QK0CQ81@W(W4E?05X!?J%9:_K^P?SXE>$;.!5#CBFTY4&<.,B
|
|
MBBR>Z<:80L$PH(>(]UK7WWXU *C@?*$4!*H"4%>;GSX<2@\6^GL^$\SD0-H)
|
|
M/P-K<TK@+VA4$#P@N]66+;0M,[GS(NBG?EXPJ((40^Y5@Q*=3LW[6]Y-0"J-
|
|
M8)K\"C)8(;#BP(3O&#ID99-W2NBI76S7KNR/\_Y"0KYM;')G21Q21:D@@^8P
|
|
M _<G>$A"X$;D%&11%@E@XEPH:E<"/^Q.%2#,BJP(=1UNK()-$ZQB<):6=EG%
|
|
M^-H"?O1"7[7<JGM@=RPCU+P$G[67!V6I$3$=MHDS/ \Q$TE"8+Z 5H;#VCN(
|
|
MG"]8H#R*5Z]G)T='04F :5>OGY/O^WS]NOH!M^X*H&'*F;:A8/O-W-6(!FDF
|
|
M<KYRBKU;.39V)?@D[X*V[-6WGY-=6PI]8QCWKK8GF5M%$S;DU89*7W7C(BE$
|
|
M;NOK"MZY3AH9\0=5P:/65C%\(+NSKU03 <8KACHFT,MB+Q\PIJT%[CH.PQG6
|
|
MVLK8F,YF>3%'+ KUH %,%(^GPRG*'@%I8._AV'R5)IF3RPLIG5]LSC2B5/3-
|
|
?!<F42(T5\H7QO3#L:XY9Z1A_P.F8F!(934[<,:E )F3
|
|
|
|
end
|
|
--
|
|
Dana Peters
|
|
Dana.Peters@Software.Mitel.COM
|
|
ai745@Freenet.Carleton.CA
|
|
--
|