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' "VMB7[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_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!QVBTBN+[A!=_:%#G18F/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!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.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/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 MC.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__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>"\J0Z4GSKXJI?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$A"X$;D%&11%@E@XEPH:E<"/^Q.%2#,BJP(=1UNK()-$ZQB<):6=EG% M^-H"?O1"7[73%'+ KUH %,%(^GPRG*'@%I8._AV'R5)IF3RPLIG5]LSC2B5/3- ?!