tag:blogger.com,1999:blog-68905937385265207722024-02-21T02:25:34.316-08:00Damn TechnologyMusings on hardware, software and technologyAnonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.comBlogger37125tag:blogger.com,1999:blog-6890593738526520772.post-37487889636040969882017-09-28T22:37:00.000-07:002017-10-21T13:23:08.833-07:00Replacing the Top Button on a Kraft KC3 Joystick with a B3F-5000 Omron Push ButtonThis describes how to fix a Kraft KC3 Joystick that has a broken top button switch.<br />
<br />
Parts you will need:<br />
<br />
<ul>
<li>B3F-5000<br /><a href="http://www.mouser.com/ProductDetail/Omron-Electronics/B3F-5000">http://www.mouser.com/ProductDetail/Omron-Electronics/B3F-5000</a></li>
<li>Some solder</li>
<li>3D printed replacement bracket:<br /><a href="https://www.shapeways.com/product/6ZDYSMJWW/kraft-kc3-bf3-top-button-refurb">https://www.shapeways.com/product/6ZDYSMJWW/kraft-kc3-bf3-top-button-refurb</a></li>
</ul>
<br />
Remove the two screws at the bottom of the joystick to remove the lower and upper outer casing. Make sure the wires are still OK by checking the continuity on both red wires leading to the top button.<br />
<br />
Remove the two screws holding the top button down at the top of the stick. Pull the switch assembly out carefully - make sure there is enough free / untangled red wire to feed from the bottom of the stick.<br />
<br />
The bottom part of the switch is clipped to the top part. Unclip the two and separate. Be careful not to lose the spring inside. The gold leaf contact is usually what has broken and has caused the switch to fail - as was the case here.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifwK9uyHG2J448Mb4uMUbsG-yFSzA-ljixm93KPZI_Br7mm2auOn97VrgUXWxSPi46wH6_PZwmLZ0Q9JEFReqW80N6Nsrl7mHRav5Oa6kIj39w1nUYLnnbIddM1YnnWRx0uKZhIcH00M8n/s1600/IMG_5056+%2528Edited%2529.JPG" imageanchor="1"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifwK9uyHG2J448Mb4uMUbsG-yFSzA-ljixm93KPZI_Br7mm2auOn97VrgUXWxSPi46wH6_PZwmLZ0Q9JEFReqW80N6Nsrl7mHRav5Oa6kIj39w1nUYLnnbIddM1YnnWRx0uKZhIcH00M8n/s320/IMG_5056+%2528Edited%2529.JPG" width="320" /></a><br />
<br />
3D print the replacement bracket. Some light filing may be necessary to smoothen out the part.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfseqoA3rouQLVwyrs4iDNfdRxc0P0PSG2wGukW1nFn5_jqh01hmpFFMrJSmGaCkQ97uTsWJ1rCCDi96OBW3jLP5-tcxxdGnWTzyEJaNuetzd5MeuJsq1xQLZcn9ieiotAHpsQd7QJnFRP/s1600/IMG_5059.JPG" imageanchor="1"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfseqoA3rouQLVwyrs4iDNfdRxc0P0PSG2wGukW1nFn5_jqh01hmpFFMrJSmGaCkQ97uTsWJ1rCCDi96OBW3jLP5-tcxxdGnWTzyEJaNuetzd5MeuJsq1xQLZcn9ieiotAHpsQd7QJnFRP/s320/IMG_5059.JPG" width="320" /></a><br />
<br />
Desolder the two red wires from the bottom part of the switch.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6KredbPPgb2FOXxyHVXn3Qyiw0ZILEyU6iKNmSPLVJCSgRLq4_yYnt7ZGQmYLmePIj354Cd5Tgg3WYbuzkR12I55FATq73R41jb1z8JxD0HMcdYxxO2mfeqdcexi8SovRMEugtLhrtRuP/s1600/IMG_5058.JPG" imageanchor="1"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6KredbPPgb2FOXxyHVXn3Qyiw0ZILEyU6iKNmSPLVJCSgRLq4_yYnt7ZGQmYLmePIj354Cd5Tgg3WYbuzkR12I55FATq73R41jb1z8JxD0HMcdYxxO2mfeqdcexi8SovRMEugtLhrtRuP/s320/IMG_5058.JPG" width="320" /></a><br />
<br />
Solder on the new B3F switch.<br />
<br />
Clip the bottom part of the new B3F switch to the top part of the original switch. Take care to sandwich the spring between the top part's white plastic shroud, and the bottom part's B3F button surface.<br />
<br />
Top part:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuW-aZKlOKwDmZqDv5S7ZHR20G0L3e0JDgz2dgZtFbOtbOXFTsLHtnjlEvGpSPxpbYDdKr_PWkN62KPvcDBoNSjdgYL2ItRS_hB9LMV6bc2N96OHymOYGwcz5rYoF0I9d9v3mkPUNwPQrL/s1600/IMG_5057.JPG" imageanchor="1"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuW-aZKlOKwDmZqDv5S7ZHR20G0L3e0JDgz2dgZtFbOtbOXFTsLHtnjlEvGpSPxpbYDdKr_PWkN62KPvcDBoNSjdgYL2ItRS_hB9LMV6bc2N96OHymOYGwcz5rYoF0I9d9v3mkPUNwPQrL/s320/IMG_5057.JPG" width="320" /></a><br />
<br />
Bottom part:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBktVUwzx1lolpb_VKq4_H0ALDys3XQwHe334rE36LPKPrMPbSHYC31oO6B_lBomNCdSwiA5l-cCisADxWXxfFfYpkDTAsTgxjJq7kFAd6jg4-z9OuoTabfwLEMb9FmNF4JPZZ4gq0E9Mp/s1600/KC3-B3F.JPG" imageanchor="1"><img border="0" height="267" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBktVUwzx1lolpb_VKq4_H0ALDys3XQwHe334rE36LPKPrMPbSHYC31oO6B_lBomNCdSwiA5l-cCisADxWXxfFfYpkDTAsTgxjJq7kFAd6jg4-z9OuoTabfwLEMb9FmNF4JPZZ4gq0E9Mp/s320/KC3-B3F.JPG" width="320" /></a><br />
<br />
This hopefully gives a close approximation to the springy feel of the original switch.<br />
<br />
Reinsert the button assembly into the stick, reinstall the top cover, and reassemble the outer enclosure.<br />
<br />
Done!<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHbTTI4MXDWKexZcDQTll3yDqw6b1qtZA_c22O1QDZpjYdVGNdFk5qWcyv3PgE0xc3PsobLVsZlFhVzW4ZtsfYF4dpC2BCYG69fOpGUiiJaKLL-SSwOgTCiD5RFlp-O5Tx_Vwi0qUHv59K/s1600/IMG_5060.JPG" imageanchor="1"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHbTTI4MXDWKexZcDQTll3yDqw6b1qtZA_c22O1QDZpjYdVGNdFk5qWcyv3PgE0xc3PsobLVsZlFhVzW4ZtsfYF4dpC2BCYG69fOpGUiiJaKLL-SSwOgTCiD5RFlp-O5Tx_Vwi0qUHv59K/s320/IMG_5060.JPG" width="320" /></a><br />
<br />
A keyswitch might be a more straightforward replacement for this; will try it someday.<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-58089004108993496462017-06-27T01:56:00.000-07:002017-06-27T01:56:21.149-07:00Replacing Line Filter Capacitors on an Apple IIGS or an Apple //e Power SupplyWe need a few parts for this repair.<br />
<br />
The general consensus is to replace the original paper dielectric capacitors with the more modern polypropylene type. I went with polypropylene, but I've included both types in the parts listing in case you want to go with paper.<br />
<b><br /></b>
Note: If you are going to have the power supply open anyway, and you have an ESR meter handy, it is also recommended to check the ESR on all the capacitors.<br />
<b><br /></b>
<b>Apple IIGS</b><br />
<br />
Original:<br />
250 VAC 0.01 uF PME 271 Y<br />
17.9 mm x 10.46 mm x 5.06 mm, lead spacing: 15 mm<br />
<br />
Replacement:<br />
<div>
PME271Y510MR30 - <a href="http://www.mouser.com/ProductDetail/KEMET/PME271Y510MR30/?qs=sGAEpiMZZMv1cc3ydrPrF85GIl804cbNOajMa%2faWPPk%3d">Kemet Safety Film Capacitor - Paper - 0.01 uF - 250 VAC - Class Y2</a></div>
F17103101000 - <a href="http://www.mouser.com/Search/ProductDetail.aspx?R=F17103101000virtualkey61310000virtualkey75-F17103101000">Vishay Safety Film Capacitor - Polypropylene - 0.01 uF - 250 VAC - Class Y2</a><br />
<br />
<b>Apple //e</b><br />
<br />
Original:<br />
250 VAC 0.1 uF PME 271 M 610<br />
<div>
24 mm x 13.8 mm x 7.2 mm, lead spacing: 20 mm</div>
<div>
<br /></div>
Replacement:<br />
PME271M610MR30 - <a href="http://www.mouser.com/ProductDetail/KEMET/PME271M610MR30/?qs=sGAEpiMZZMv1cc3ydrPrF85GIl804cbNskcnsFzCwE0%3d">Kemet Safety Film Capacitor - Paper - 0.1 uF - 250VAC - Class X2</a><br />
ECQ-U2A104KL - <a href="http://www.mouser.com/Search/ProductDetail.aspx?R=ECQ-U2A104KLvirtualkey66720000virtualkey667-ECQ-U2A104KL">Panasonic Safety Film Capacitor - Polyester - 0.1 uF - 250VAC - Class X2</a><br />
<br />
Fuse:<br />
3SB 1-R - <a href="http://www.http//www.mouser.com/Search/ProductDetail.aspx?R=3SB_1-Rvirtualkey59810000virtualkey530-3SB1-Rmouser.com/Search/ProductDetail.aspx?R=3AG_2.5-Rvirtualkey59810000virtualkey530-3AG2.5-R">Time Delay / Slow Blow 1A Glass Fuse</a><br />
3516P - <a href="http://www.mouser.com/Search/ProductDetail.aspx?R=3516Pvirtualkey53400000virtualkey534-3516P">Fuse Clips</a><br />
<br />
<b><span style="background-color: yellow; color: red;">Safety warning and disclaimer!!!</span></b> Disconnect the power supply from the mains and leave it alone for 30 minutes before doing any work. Regardless, proceed at your own risk!<br />
<br />
Disconnect the power cable from the motherboard by squeezing the left and right sides of the power plug to release. Remove the 4 screws securing the power supply, from the bottom of the Apple //e case.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK1VbAGISYYIaYroNp5Ber6pomSQGA08rCWQiHtx0i8Qav_A8yki1mJ33i7ew7ZhJHtmELA2gvEydb5Hfw96pCQ1M3prfS_KQ8WveAEi3xoVups3OmYsA5v8G1Oclj_taR7MG1-cs_YDkT/s1600/IMG_4428.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK1VbAGISYYIaYroNp5Ber6pomSQGA08rCWQiHtx0i8Qav_A8yki1mJ33i7ew7ZhJHtmELA2gvEydb5Hfw96pCQ1M3prfS_KQ8WveAEi3xoVups3OmYsA5v8G1Oclj_taR7MG1-cs_YDkT/s320/IMG_4428.JPG" width="320" /></a></div>
<br />
<br />
Remove the 8 screws on the sides of the power supply (4 on each side) securing the bottom cover to the power supply.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoZ-gxBkbkl-BaT8roow9XdDw29uGshENmiE_dWs3KeZzc_hm4eHyeSvcxLhoh_6M47AI1zh5bb7jVrUxboRc75YPak2Ly_c6mj1S3zmYseOy9DfuGmYAWbJCd4tlAu5utn8sEBXFhUMUi/s1600/IMG_4429.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoZ-gxBkbkl-BaT8roow9XdDw29uGshENmiE_dWs3KeZzc_hm4eHyeSvcxLhoh_6M47AI1zh5bb7jVrUxboRc75YPak2Ly_c6mj1S3zmYseOy9DfuGmYAWbJCd4tlAu5utn8sEBXFhUMUi/s320/IMG_4429.JPG" width="320" /></a></div>
<br />
<br />
From the top view the capacitors look good. No bulging. No tell-tale signs of rupture or leakage. We need to take the PCB out of the enclosure for a closer look.<br />
<br />
A quick test with the multimeter indicates that the fuse is blown. That should be easy enough to replace.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbBopzx0lhMcuL0etvx8Z4sjysCb58iGLTJUVhd4GHt-hm3EMNNbjlYQ5tEBMofiDETao7ohyY0WuBq-XheRgm47WzIS_U3CbADNAyw-bLkN7CLUTq5F7PsbkCMQfGX5WPLksAzt6E7IlH/s1600/IMG_4430.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbBopzx0lhMcuL0etvx8Z4sjysCb58iGLTJUVhd4GHt-hm3EMNNbjlYQ5tEBMofiDETao7ohyY0WuBq-XheRgm47WzIS_U3CbADNAyw-bLkN7CLUTq5F7PsbkCMQfGX5WPLksAzt6E7IlH/s320/IMG_4430.JPG" width="320" /></a></div>
<br />
<br />
Remove the 4 screws holding the power supply board to the power supply enclosure, one screw holding the ground wire to the chassis, and the two screws securing the power plug housing.<br />
<br />
With the power switch still attached to the enclosure, gently slide out the PCB and lift it up and out of the enclosure. You should now be able to have a good look at the filter capacitors. These are not in great shape. One is slightly bulging already.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqY73c8Zekz9ldheqKDNhQG11QNKJM8w8l5O5lc2FvuRjk4YzqUGO3NOAj3zXA0eBfAiSEoZSZIHecDIWh6NQYviOYBArA9QcNab0aqKaQI0tYbv-AaWVFV1f6KQoqqMSi60_2jpnW3S5_/s1600/IMG_4452.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqY73c8Zekz9ldheqKDNhQG11QNKJM8w8l5O5lc2FvuRjk4YzqUGO3NOAj3zXA0eBfAiSEoZSZIHecDIWh6NQYviOYBArA9QcNab0aqKaQI0tYbv-AaWVFV1f6KQoqqMSi60_2jpnW3S5_/s320/IMG_4452.JPG" width="320" /></a></div>
<br />
<br />
Use your trusty desoldering tool to remove the filter caps and the fuse.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3zeMt-L-aSnsS7mUqJAq0uWNVX_mepQJ2TRcU8vGJoIbt6k4E7_tdP6aA01THJ2hvXoWTltJcHQxs1wnRi_3P8Fa7NUPgMNOHEmYplsLDTYoCmlqNerIgruJlhEMoPfe1kyy06q8BkXXY/s1600/IMG_4454.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3zeMt-L-aSnsS7mUqJAq0uWNVX_mepQJ2TRcU8vGJoIbt6k4E7_tdP6aA01THJ2hvXoWTltJcHQxs1wnRi_3P8Fa7NUPgMNOHEmYplsLDTYoCmlqNerIgruJlhEMoPfe1kyy06q8BkXXY/s320/IMG_4454.JPG" width="320" /></a></div>
<br />
<br />
Install the replacement parts.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheUY_ftsQyBxKBgz-OQJ6pab55bFqp1NCSy7s7m4nR2jqKLAjc_oAdkF30-Uh71vgAMMFCr4Ju4VrIiuCD7US0u2jHChYBvulSVrIZVTWZFTRUcEJ28V01BjBU9tjOGRdga0YvDl3ZTB4T/s1600/IMG_4523.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheUY_ftsQyBxKBgz-OQJ6pab55bFqp1NCSy7s7m4nR2jqKLAjc_oAdkF30-Uh71vgAMMFCr4Ju4VrIiuCD7US0u2jHChYBvulSVrIZVTWZFTRUcEJ28V01BjBU9tjOGRdga0YvDl3ZTB4T/s320/IMG_4523.JPG" width="320" /></a></div>
<br />
<br />
I took the opportunity to install fuse clips. This fuse clip has two tabs. The outer tabs line up with the existing holes on the PCB; however they are larger than the existing holes (1.5 mm). I had to drill bigger holes (3 mm). I did not drill holes for the inner tabs - one of the tabs would need a hole that cuts one of the traces, and the other tab comes close to nicking another trace. Instead I just bent them flat and glued them on to the PCB with epoxy.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNu5zKHMZr_-lMC5XUpSLwGG0vaU5wkNld6SDiRTgYjIB51kyZK0Vuz9Qx12qPoGbJO19iYeaQdhy2Osc9dJKaeEAbWQ3TG9Wg1zHFKVZrfG7cL6T2IZAuJr8HTxcVsebABnChxhf7LFdg/s1600/IMG_4515.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNu5zKHMZr_-lMC5XUpSLwGG0vaU5wkNld6SDiRTgYjIB51kyZK0Vuz9Qx12qPoGbJO19iYeaQdhy2Osc9dJKaeEAbWQ3TG9Wg1zHFKVZrfG7cL6T2IZAuJr8HTxcVsebABnChxhf7LFdg/s320/IMG_4515.JPG" width="320" /></a></div>
<br />
Keep the power supply disconnected from the motherboard and power up. A tick-tick-tick sound indicates a no-load state and is a promising indication of a working power supply.<br />
<br />
Switch the power off, connect the power supply to the Apple //e motherboard, and power up again. You should be good to go.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXz79OoZBLI-EUCoff3RH86mfr3msRzVxrpn8AUTaJTqGKhb-WMTZW8xfSZNN7hB3HAu_n4neloZ0Yjkzg5__sDPUUQPpRGpYfKAx3Xf3LPf9fK6t2G0EthvVs7fJjxLodxgOHmpao1R2b/s1600/IMG_4517.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXz79OoZBLI-EUCoff3RH86mfr3msRzVxrpn8AUTaJTqGKhb-WMTZW8xfSZNN7hB3HAu_n4neloZ0Yjkzg5__sDPUUQPpRGpYfKAx3Xf3LPf9fK6t2G0EthvVs7fJjxLodxgOHmpao1R2b/s320/IMG_4517.JPG" width="320" /></a></div>
<br />
<b>References</b><br />
https://apple2.europlus.zone/wp-content/uploads/2017/04/Astec-AA11040C-Electrolytic-Capacitors-170429.pdf<br />
<br />
tl;dr With a few cents and a little care, you can have your power supply up and running again!<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-33454735164274524772017-02-20T18:49:00.001-08:002017-02-21T01:30:28.282-08:00Playing Ultima V with Passport MIDI Music on a Real MT-32I've been playing Ultima V in DOSBox for a while now and am almost through with the game. Just a few days ago, a friend told me that Brendan Robert's Java Apple Computer Emulator (JACE) now has support for configurable MIDI OUT. This means the Passport MIDI support already built into JACE can be redirected to whichever MIDI player you have. I've been using the Roland MT-32 on most of the games I play with DOSBox, but never with Ultima V.<br />
<br />
This assumes you already have a working Windows setup for playing MIDI music on your MT-32. In addition having Munt would be good for testing and troubleshooting.<br />
<br />
Most of the same steps will apply on a real Apple II if you have the real Passport MIDI card, or a2heaven's modern version of it.<br />
<br />
Steps:<br />
<br />
1. Install JACE<br />
<br />
You can get the JAR file from <a href="https://sites.google.com/site/brendanrobert/projects/jace">https://sites.google.com/site/brendanrobert/projects/jace</a>. Follow the install instructions, including Java JRE installation if you don't have it yet. Double click the JAR file and it should run up to the following screen:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLM5nQTKo-RkkgZIOVXsx8clKmVwTlAPRLSy6AA71fyvJfT8jx8khx3dPHvleV1Jwi4wWxU9xLneQYfpraf7zqyB9-wox8n_qF72GomVYzuyO-HieVsHjjl1onqTMtN1TuRO3WAcM1OQ5x/s1600/Capture.JPG" imageanchor="1" style="display: inline !important; margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLM5nQTKo-RkkgZIOVXsx8clKmVwTlAPRLSy6AA71fyvJfT8jx8khx3dPHvleV1Jwi4wWxU9xLneQYfpraf7zqyB9-wox8n_qF72GomVYzuyO-HieVsHjjl1onqTMtN1TuRO3WAcM1OQ5x/s320/Capture.JPG" width="320" /></a></div>
<br />
<br />
2. Add Passport Midi Interface to an empty slot in the computer<br />
<br />
Hit F4, go to Computer | Slot 4 | and select Passport Midi Interface. Click Apply.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM3AXoCNDeomVK7KFyz3vw9YiejffP1ARchY-Q38eTzepYTaCCX2atwjN5UCisctiv0X5P33KLtef0CmkUJb5Pen_DilyYy_dvv1sZwhWj9k4bgRk5oVo3h3_H7vZUVBmaXTq_BWQltQXS/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgM3AXoCNDeomVK7KFyz3vw9YiejffP1ARchY-Q38eTzepYTaCCX2atwjN5UCisctiv0X5P33KLtef0CmkUJb5Pen_DilyYy_dvv1sZwhWj9k4bgRk5oVo3h3_H7vZUVBmaXTq_BWQltQXS/s320/Capture.JPG" width="320" /></a></div>
<br />
<br />
3. Select CoolSoft MIDIMapper as your Midi Output Device<br />
<br />
Go to Computer | Extended 80-col card | Passport MIDI Controller | and select CoolSoft MIDIMapper. Click Apply. Click Save.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj1qdX4FPx0Lhfxda50qXmSJlgoyvymNWRPVWJGkdyW0oKJbXPgWegmTii5db52v7o1r6jt65EHdB1af3IFo3-GnN-PVR_vvaGB_jPoDadAkabNhUAJ5RYpB5DvRsGvWhRcJLMLoKWT7te/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj1qdX4FPx0Lhfxda50qXmSJlgoyvymNWRPVWJGkdyW0oKJbXPgWegmTii5db52v7o1r6jt65EHdB1af3IFo3-GnN-PVR_vvaGB_jPoDadAkabNhUAJ5RYpB5DvRsGvWhRcJLMLoKWT7te/s320/Capture.JPG" width="320" /></a></div>
<br />
It's this setting where you should also see your USB Midi Cable or MT-32 Synth Emulator (if you have Munt installed) listed as options. You can try these settings out first instead of CoolSoft MIDIMapper and skip ahead to Step 5.<br />
<br />
I tried using the USB Midi Cable setting first, but JACE and Ultima V didn't work using that setting. I kept getting the "UNABLE TO START MUSIC" error message:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGF3w7BsGPdmWTqwicAHwL8H849UuSgwUVf3W_ajgedSA4QyrhH42ZQVJe6nUvVZt9y2K9BQYVvPK2sNzL4d3Oq4HhFVEEdDtQ3KUyIAWcD77a6mgwi79MSWUd4VRvVN8XzvBiVXbUblB8/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGF3w7BsGPdmWTqwicAHwL8H849UuSgwUVf3W_ajgedSA4QyrhH42ZQVJe6nUvVZt9y2K9BQYVvPK2sNzL4d3Oq4HhFVEEdDtQ3KUyIAWcD77a6mgwi79MSWUd4VRvVN8XzvBiVXbUblB8/s320/Capture.JPG" width="320" /></a></div>
<br />
My best guess is that the driver for the USB Midi Cable I have is old.<br />
<br />
The workaround I found is to install CoolSoft MIDIMapper to act as a "wrapper" for my driver. The assumption is that CoolSoft is a properly certified / newer driver, and so is recognized and works well with JACE and Java.<br />
<br />
You can get CoolSoft MIDIMapper here:<br />
<a href="http://coolsoft.altervista.org/en/forum/thread/427">http://coolsoft.altervista.org/en/forum/thread/427</a><br />
<br />
4. Select USB Midi Cable as your output device on CoolSoft MIDIMapper<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrwrSMNse0eBHwyacYb3lzbaHb1bD_d1i0ZfimZMwIhaXqnWQ2V3jn3Gpj6PGBvkJs9UojbuCCF0wv7rhIAT8iTPg6VXh9M_piu0YNR6EOAq-cc5dprzNMos3Nu8GT0057WlCEFzqObHpC/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="128" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrwrSMNse0eBHwyacYb3lzbaHb1bD_d1i0ZfimZMwIhaXqnWQ2V3jn3Gpj6PGBvkJs9UojbuCCF0wv7rhIAT8iTPg6VXh9M_piu0YNR6EOAq-cc5dprzNMos3Nu8GT0057WlCEFzqObHpC/s320/Capture.JPG" width="320" /></a></div>
<br />
<br />
5. Run Ultima V<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqHuV2b1KUO3JhslXzlrfSjiMzvXCHw6j3eB3MBFKBfPYpyKjYjTL8SUZxaDq_KqaVqp9EIMuEv7bGkexcCzyXg2Vl7F5qM1NCOf-Q_jcpHlZe8rnzmqS0xqEPP-UNk66bVSzctUefx2u4/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqHuV2b1KUO3JhslXzlrfSjiMzvXCHw6j3eB3MBFKBfPYpyKjYjTL8SUZxaDq_KqaVqp9EIMuEv7bGkexcCzyXg2Vl7F5qM1NCOf-Q_jcpHlZe8rnzmqS0xqEPP-UNk66bVSzctUefx2u4/s320/Capture.JPG" width="320" /></a></div>
<br />
6. Configure voices<br />
<br />
Go to Activate Music | Music Configuration | Change Music Configuration | Slot 4 | and press G to add Passport MIDI.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZGIcrSsisuVNJT0fVhy_fMwweN-xCi31ReHvxvPAuiVMDCI_1qwhZ_qoPJXL8e72EVvuHwMzl-ScpGibP6zk4Ubx8K-hx7mfizWVrn5cSV_WYzKVo6A_h3A1zTGIhJHJqsTXB-7STQKac/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZGIcrSsisuVNJT0fVhy_fMwweN-xCi31ReHvxvPAuiVMDCI_1qwhZ_qoPJXL8e72EVvuHwMzl-ScpGibP6zk4Ubx8K-hx7mfizWVrn5cSV_WYzKVo6A_h3A1zTGIhJHJqsTXB-7STQKac/s320/Capture.JPG" width="320" /></a></div>
<br />
Press enter to configure voices. You move the cursor to the field you want to change and just type in the number then Enter. You should change MIDI Channel to 2, and Number of Voices to 32.<br />
<br />
The MT-32 by default does not listen on Channel 1.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_HeWZiY114pEUoyUs1wl7yp4QJ9k89EoiGwdv3p-5u7LSlfoDSH4BDCzuAVqgpRjWLpit-HzMkq2KsDbPS1yavJYnnRxcdTEs9jcecyDgk7z4gtK26kBsA29_8yNLsWWmFSYzWVITnAs4/s1600/Capture.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_HeWZiY114pEUoyUs1wl7yp4QJ9k89EoiGwdv3p-5u7LSlfoDSH4BDCzuAVqgpRjWLpit-HzMkq2KsDbPS1yavJYnnRxcdTEs9jcecyDgk7z4gtK26kBsA29_8yNLsWWmFSYzWVITnAs4/s320/Capture.JPG" width="320" /></a></div>
<br />
I used the MT-32 instrument list provided in the link below to find the right MIDI number:<br />
<a href="http://www.voidaudio.net/mtinstrument.html">http://www.voidaudio.net/mtinstrument.html</a><br />
<br />
Note that the list starts at '1' while Ultima V starts with '0' so you'll have to subtract 1 from the number you get on the list when you enter it into Ultima V.<br />
<br />
You can hit Enter on an instrument line to hear a preview of the instrument you selected. You should also see the instrument you chose on the LED display on the MT-32.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUgj16dSpg6kVAQSKs-8KzfRUeBgJMtIBfjOZEgz6fz5y7Yk2-Sw68E6isCsq5aOngj8TQY8ehfTNiQgMqglfm-TaWp6SBPjIFW7hCfokumNJ_an522E2WrXIWhHgyGQPYx0nnRH8waYRr/s1600/IMG_3914.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUgj16dSpg6kVAQSKs-8KzfRUeBgJMtIBfjOZEgz6fz5y7Yk2-Sw68E6isCsq5aOngj8TQY8ehfTNiQgMqglfm-TaWp6SBPjIFW7hCfokumNJ_an522E2WrXIWhHgyGQPYx0nnRH8waYRr/s320/IMG_3914.JPG" width="320" /></a></div>
<br />
Most of the voices have a direct match, except maybe for the Lute - which I set to play a Harp (57), and Full Orchestra - which I still don't know what the best setting is for. Right now it's set to Orchestral Hit (122) which doesn't sound quite right, so I might just switch this to Brass Section (95 or 96).<br />
<br />
Technically, you can also send new instrument patches for Lute and Full Orchestra using sysex messages.<br />
<br />
Once you're happy with your instrument choices, hit ESC, select Save Music Configuration, then select Return to the Game.<br />
<br />
That's it! Now go get the bell book and candle. Oh wait we've done that already...<br />
<br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: "Times New Roman"; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: normal; letter-spacing: normal; margin: 0px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
tl;dr Nothing beats real steel.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-57871996791436048452017-01-25T13:00:00.000-08:002017-01-25T14:03:46.004-08:00Replacing SIMM Sockets On An 8MB MDIdeas OctoRam Card<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: left;">
Some time ago, a friend gave me this 8MB RAM card for the Apple IIGS. There was nothing wrong with it, except that three to four of the little plastic clips that hold down the SIMMs to the sockets were broken. This rendered the card unusable.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
In order to fix the sockets properly, you are going to need a few things:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ol>
<li>A good desoldering tool. I highly recommend the Hakko FR300.<br /><a href="http://amzn.to/2jnOcsj">http://amzn.to/2jnOcsj</a></li>
<li>Replacement 2x30 SIMM sockets. I ordered four from here:<br /><a href="https://www.king-cart.com/cgi-bin/cart.cgi?store=phoenixent&product_name=HWS9229">https://www.king-cart.com/cgi-bin/cart.cgi?store=phoenixent&product_name=HWS9229</a></li>
</ol>
<div>
It may also help to have some solder paste, and keep your soldering gun and solder handy.</div>
<div>
<br /></div>
<div>
Before we begin, take out all the SIMMs:</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7-EL__8Qz9dowiaIBbfjA6OqoiAJQCDJwrjZ81ExM6eR_UMsumVydDDHhZpY9H-sFL6qFArhZuxdDxMEznwFMHth_OJht8W6_zji3StqVublMdl_6R7nAYfFRxFmKB-ToD5cJ0NlCpCFJ/s1600/IMG_3726.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7-EL__8Qz9dowiaIBbfjA6OqoiAJQCDJwrjZ81ExM6eR_UMsumVydDDHhZpY9H-sFL6qFArhZuxdDxMEznwFMHth_OJht8W6_zji3StqVublMdl_6R7nAYfFRxFmKB-ToD5cJ0NlCpCFJ/s320/IMG_3726.JPG" width="320" /></a></div>
<br />
You can see that two of the plastic clips are broken (see lower left of picture):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl2KBN2xHv7B4kW1Si2VHpE70Y5duMeJC-GLOxT8OahiXewvx8zrICTp0TJY0YGHDDZNuiPC2OXuTtpBRSXuRE0cEK1cwdnt6BqCuu__G44g9sqp_tLANYdwLW9PbgD6q9geNfzhBWDKdS/s1600/IMG_3727.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl2KBN2xHv7B4kW1Si2VHpE70Y5duMeJC-GLOxT8OahiXewvx8zrICTp0TJY0YGHDDZNuiPC2OXuTtpBRSXuRE0cEK1cwdnt6BqCuu__G44g9sqp_tLANYdwLW9PbgD6q9geNfzhBWDKdS/s320/IMG_3727.JPG" width="320" /></a></div>
<br />
Here's a closer view:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD6zfm3nEjHSipW3AiIUzeRKTOym6YpSLt6acZHNNMvXcbe6Y25YaNSknp__so02rDwGXUshgLPx9lJHkbtfhvgX5DzfZqHdOFKxaH3HfHR1ZLDP0fH450ma3KJN4Sl-NruHIkSbsrxpPL/s1600/IMG_3728.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD6zfm3nEjHSipW3AiIUzeRKTOym6YpSLt6acZHNNMvXcbe6Y25YaNSknp__so02rDwGXUshgLPx9lJHkbtfhvgX5DzfZqHdOFKxaH3HfHR1ZLDP0fH450ma3KJN4Sl-NruHIkSbsrxpPL/s320/IMG_3728.JPG" width="320" /></a></div>
<br />
This shows the broken clip on the top slot, and the almost broken-off clip on the bottom slot.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq7eG2jucajaDb272_Mk7ZDk-f9nQY4Ox2RjRmkN5o29DcR5dBCFO2_AZ26gbGNHJoXpYIeCrcWoH8kHXlph8cKqxH8c7GGi6N4HmcKtTZaiQGAB4y_puL14IYbwN_wmYT3YiC4J4W6VKD/s1600/IMG_3729.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgq7eG2jucajaDb272_Mk7ZDk-f9nQY4Ox2RjRmkN5o29DcR5dBCFO2_AZ26gbGNHJoXpYIeCrcWoH8kHXlph8cKqxH8c7GGi6N4HmcKtTZaiQGAB4y_puL14IYbwN_wmYT3YiC4J4W6VKD/s320/IMG_3729.JPG" width="320" /></a></div>
<br />
The replacements! These ones come with a metal clip, so they should last a bit longer than the original ones. I think they are the same SIMM sockets used on the Briel Computers RAM card.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj16TpstptDqoeHmoI4CVnzIcB6CPDaHl8cQuNoa41NYWeJWTTAsEuJ0UnDwcY8EwkvPH-G-IWGxrSPDlMcdWihJh1Cyw9VaCp09AqS3v4PV0d0xAAPOAAIwK8BfdxhLrF0iwFcr-SkAbA0/s1600/IMG_3730.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj16TpstptDqoeHmoI4CVnzIcB6CPDaHl8cQuNoa41NYWeJWTTAsEuJ0UnDwcY8EwkvPH-G-IWGxrSPDlMcdWihJh1Cyw9VaCp09AqS3v4PV0d0xAAPOAAIwK8BfdxhLrF0iwFcr-SkAbA0/s320/IMG_3730.JPG" width="320" /></a></div>
<br />
And so we begin. I put some solder paste on the 60 pins on the first socket to help with the flow, and did a first pass with my brand new desoldering tool. I used a 650oF setting. Not bad, but not completely clean:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4zmHGzKl5vnzUsd-MCuYVwUuOCKgHZsUu2e3mVFf2P-_RjNqpkM0AVdSXfTA_LQeZKzSpU8JM91DSWR5RHvsh_P-GKwyWeukqRtAgnGvBNInlN5kV4LabKIcIbZoPJkNOTt5-GDxg5KWX/s1600/IMG_3731.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4zmHGzKl5vnzUsd-MCuYVwUuOCKgHZsUu2e3mVFf2P-_RjNqpkM0AVdSXfTA_LQeZKzSpU8JM91DSWR5RHvsh_P-GKwyWeukqRtAgnGvBNInlN5kV4LabKIcIbZoPJkNOTt5-GDxg5KWX/s320/IMG_3731.JPG" width="320" /></a></div>
<br />
I did a second pass with the desoldering tool, and tried to pop the socket out with a small screwdriver. The socket came out with a little pop... probably not a good sign!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFD8fsDx2G4b-d-AJIbY3bsAVwMoBJhh93hyphenhyphenHBPmdqNOnUkh4c4sqo3FWRNBa2YEVrRrIbymgCPOpUt-CRKKYkW16Iw4d2-SWn1x9uMJuESK6Z505mlyDfLHYQwZCWaupEOoTYzvDPUIw8/s1600/IMG_3732+%2528Edited%2529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFD8fsDx2G4b-d-AJIbY3bsAVwMoBJhh93hyphenhyphenHBPmdqNOnUkh4c4sqo3FWRNBa2YEVrRrIbymgCPOpUt-CRKKYkW16Iw4d2-SWn1x9uMJuESK6Z505mlyDfLHYQwZCWaupEOoTYzvDPUIw8/s320/IMG_3732+%2528Edited%2529.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
You might notice from the photo that the solder holes on the first socket are not completely clear of solder. More on this later...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMcU4PPROQshNm9pm9calBXOqZnIF6CRcxu8Wbj0_WA1tIuuODMHAaMlfrWaKQB-E8eWjjTfKSyQbj2-d2LaahumxbtGg6SntX7gGbQ5k2-8abev0ogbvxkjDt1ModDs7EsiJ-VKFkuoSs/s1600/IMG_3733.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMcU4PPROQshNm9pm9calBXOqZnIF6CRcxu8Wbj0_WA1tIuuODMHAaMlfrWaKQB-E8eWjjTfKSyQbj2-d2LaahumxbtGg6SntX7gGbQ5k2-8abev0ogbvxkjDt1ModDs7EsiJ-VKFkuoSs/s320/IMG_3733.JPG" width="320" /></a></div>
<br />
Test fit to make sure the replacement SIMM socket is a match. All the 60 metal pins align, and the two plastic nubs at the bottom align with the holes on the card as well.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Z7AH5hha-NLF2A7kwa0qh-ZJDK0dwp8knqtCw4DIhuBjecOgSmA3xRbB6p8dW6G1E9kLMT9KlCejSCdfCzc4oNL2GjmG5Ra8EDwdsNfjhxx0webQTrhuje6SV_9qtP2M6T43o8yiCk1p/s1600/IMG_3734+%2528Edited%2529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Z7AH5hha-NLF2A7kwa0qh-ZJDK0dwp8knqtCw4DIhuBjecOgSmA3xRbB6p8dW6G1E9kLMT9KlCejSCdfCzc4oNL2GjmG5Ra8EDwdsNfjhxx0webQTrhuje6SV_9qtP2M6T43o8yiCk1p/s320/IMG_3734+%2528Edited%2529.JPG" width="320" /></a></div>
<br />
The second socket went a little easier as I was getting the hang of using the tool.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTMq3K5tHpJBo8Bognr7zJKAxebV8y9PaHYE8C_8J1oon8ITpbUNh3rX0dG46Gm-BfFS7uPl6Rw_T7trgw-ccR19jcHxWzigu317bCA94Nos2d1wjxEHH9rwfrpUa294ZG99Y_mPa1W8z5/s1600/IMG_3735.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTMq3K5tHpJBo8Bognr7zJKAxebV8y9PaHYE8C_8J1oon8ITpbUNh3rX0dG46Gm-BfFS7uPl6Rw_T7trgw-ccR19jcHxWzigu317bCA94Nos2d1wjxEHH9rwfrpUa294ZG99Y_mPa1W8z5/s320/IMG_3735.JPG" width="320" /></a></div>
<br />
And within a few minutes, I was able to remove the third socket.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0iJyRPhI3rZLyXVH1XTdYoiHFZJe9KcAzzmU9igYJWxO_6GL62MjxDhmsl0Y0-5ML5AV-ahyphenhyphene9K_tkSGSEX4tCa8BK1Zq7X-c2xXHhOqlFfxyQa2zPJhQelB-kTE73O5iOUNrDpbCUAPl/s1600/IMG_3736.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0iJyRPhI3rZLyXVH1XTdYoiHFZJe9KcAzzmU9igYJWxO_6GL62MjxDhmsl0Y0-5ML5AV-ahyphenhyphene9K_tkSGSEX4tCa8BK1Zq7X-c2xXHhOqlFfxyQa2zPJhQelB-kTE73O5iOUNrDpbCUAPl/s320/IMG_3736.JPG" width="320" /></a></div>
<br />
The fourth one took a while, because the desoldering tool lost its vacuum power. I thought at first that I just needed to replace the filter, but it turns out that the nozzle got jammed.<br />
<br />
You can tell that the nozzle is jammed if you can't insert the cleaning pin all the way through the nozzle (and up to the solder receiving chamber). I had to break out my drill and a 0.7 mm drill bit, and simultaneously heat the nozzle, activate the vacuum, and drill the hole through the nozzle to clear the jam. And with my fourth hand...<br />
<br />
Subsequently I was able to remove the fourth socket.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieNvP5ZJd7rA0oGclOf6j2vUwjNlAflzklNIoMhldvenW_LR2WOK8goL-KYRUbSFpYDlUoKn6ayEYOuL5ingOQ-mgMbe2Wd8uKesLAwy4aykv7E6qTolZu0YfdDL52kSI1p-TT6ke2TtW9/s1600/IMG_3738.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieNvP5ZJd7rA0oGclOf6j2vUwjNlAflzklNIoMhldvenW_LR2WOK8goL-KYRUbSFpYDlUoKn6ayEYOuL5ingOQ-mgMbe2Wd8uKesLAwy4aykv7E6qTolZu0YfdDL52kSI1p-TT6ke2TtW9/s320/IMG_3738.JPG" width="320" /></a></div>
<br />
I almost got it out perfect, but not quite. It turns out one of the pins had not been totally desoldered, so when I popped the socket off... one of the vias popped off too, carrying a fair bit of the trace with it. It comes as no surprise that this pin / trace was one of the ground pins. I carefully pushed it back into the hole and I flattened the trace as much as I could, and tested continuity between the top and bottom of the board.<br />
<br />
You can see evidence of this at the top left row:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdR1SpTVt_wSvNlE36-1hLQkWvQIejIuGERRGZoKYelkEYHuBqe0wyfJytlH3ntaboauLqe9chvcT3dSNrTsxfXnBVZbT4jO9VEGxAw7Q_CLVrO6HYoQYslK4Sn7Kuaq3f-8FR8R_saub-/s1600/IMG_3740+%2528Edited%2529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdR1SpTVt_wSvNlE36-1hLQkWvQIejIuGERRGZoKYelkEYHuBqe0wyfJytlH3ntaboauLqe9chvcT3dSNrTsxfXnBVZbT4jO9VEGxAw7Q_CLVrO6HYoQYslK4Sn7Kuaq3f-8FR8R_saub-/s320/IMG_3740+%2528Edited%2529.JPG" width="320" /></a></div>
<br />
Some minor scratches on the bottom. A careful continuity test on the traces involved showed that all connections were still good.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzMVtQU8YZGv-BSR7Wyjb_T0_5NFOmO6tro2hSdOplRmEgnHtONvqiI050Y3cE8TyeGw2v86O58thxCImzHhqLs4INOYHasHbgcmWnhaVs6TgyFIMkYjxrl1av0BEYMjuY3WeFfTzIIb2d/s1600/IMG_3741.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzMVtQU8YZGv-BSR7Wyjb_T0_5NFOmO6tro2hSdOplRmEgnHtONvqiI050Y3cE8TyeGw2v86O58thxCImzHhqLs4INOYHasHbgcmWnhaVs6TgyFIMkYjxrl1av0BEYMjuY3WeFfTzIIb2d/s320/IMG_3741.JPG" width="320" /></a></div>
<br />
The easy part was slotting in the replacement SIMM sockets, and soldering them in place:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXDHk7Hj0sR4I0X7OJY-Ic9d7-g1FX59CmCx3l0gMtpkCwlfbDnZGkznhOhVphd28gSCexOef5x8WOuv_bBsEdk6GU0AzMJpfE-eyJ-jtY34-GXfLWYW_u6WrbLbVPpy2LFx7aryyYGfsN/s1600/IMG_3742.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXDHk7Hj0sR4I0X7OJY-Ic9d7-g1FX59CmCx3l0gMtpkCwlfbDnZGkznhOhVphd28gSCexOef5x8WOuv_bBsEdk6GU0AzMJpfE-eyJ-jtY34-GXfLWYW_u6WrbLbVPpy2LFx7aryyYGfsN/s320/IMG_3742.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuDcnFENPzO8OLmdjXozHHA-r2JELQwIty61WR3LtOpHfE5TNYZpCOaud-uUjO4_sb0osXnKtSwU42BHux7GONyVKaP0LCJWZ2C8gj4ebqF2RPfuZUx3_QaKHWAWdLyU8K586ZpMDX3XRT/s1600/IMG_3743.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuDcnFENPzO8OLmdjXozHHA-r2JELQwIty61WR3LtOpHfE5TNYZpCOaud-uUjO4_sb0osXnKtSwU42BHux7GONyVKaP0LCJWZ2C8gj4ebqF2RPfuZUx3_QaKHWAWdLyU8K586ZpMDX3XRT/s320/IMG_3743.JPG" width="320" /></a></div>
<br />
After seating the SIMMs in, a quick boot confirms the RAM is found:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6yry07EwfacIDi_A2GVTSw77qE0QgotiKuP31k-Cc-V5Xe_cGk0eyD8aSlFVPEX-BWB3D5amp1yt6s8mN-wPjgN1Lm9vsrxbOBsIb276Crww_ARpD5ABQrTo8zkmUrqIGhBJn6qYv6UYG/s1600/IMG_3744.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6yry07EwfacIDi_A2GVTSw77qE0QgotiKuP31k-Cc-V5Xe_cGk0eyD8aSlFVPEX-BWB3D5amp1yt6s8mN-wPjgN1Lm9vsrxbOBsIb276Crww_ARpD5ABQrTo8zkmUrqIGhBJn6qYv6UYG/s320/IMG_3744.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij4kPQMzFwTtaAluO4tWy_gV4rChyphenhyphen4qsVAw8NqWSMDgrw_mpr8RbS0aBUOn7V-f3huad32tte-b6HDTrDeuFkSe1cTaDt3P5Wf91gkOCUUFrHfGJHI5mAPMDcLz-Tt_4di2EYwBq6meI3Q/s1600/IMG_3752.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij4kPQMzFwTtaAluO4tWy_gV4rChyphenhyphen4qsVAw8NqWSMDgrw_mpr8RbS0aBUOn7V-f3huad32tte-b6HDTrDeuFkSe1cTaDt3P5Wf91gkOCUUFrHfGJHI5mAPMDcLz-Tt_4di2EYwBq6meI3Q/s320/IMG_3752.JPG" width="320" /></a></div>
<br />
And the ultimate test is to run some memory tests overnight.<br />
<br />
Success!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijlIe7RVIWtncY8q8jooB9zmQ5r4xY1Y2poJ23FbqnKVmV2LSPcqBNnpQ6zBvEqhok2rdO1y7EQBGSOcUYi1hU1gV0L-vdg2dG1JwxBvrDKZDPyIejBApSI3-fXtSrKfMl_Nb1gMgtQVOD/s1600/IMG_3754+%2528Edited%2529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijlIe7RVIWtncY8q8jooB9zmQ5r4xY1Y2poJ23FbqnKVmV2LSPcqBNnpQ6zBvEqhok2rdO1y7EQBGSOcUYi1hU1gV0L-vdg2dG1JwxBvrDKZDPyIejBApSI3-fXtSrKfMl_Nb1gMgtQVOD/s320/IMG_3754+%2528Edited%2529.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
A few lessons learned:<br />
<br />
<ul>
<li>Be patient with the desoldering process. Do not pry the sockets off!</li>
<li>Make sure to have a strong vacuum going on your desoldering tool. Stop work if necessary to replace the filters and clear any jams to ensure that you have a 100% working tool.</li>
<li>As described in the user's manual, heat only the pin, not the base of the connections. Once the solder melts (easy to see as the solder paste will melt too)... quickly push the nozzle down over the hole to create a stronger vacuum for the tool and activate the tool vacuum. You know you have done this right, when the hole is left completely clean of solder.</li>
<li>If not all the solder is cleared / hole is not yet 100% clean, resolder the hole with some new solder, and try to desolder again.</li>
<li>When done properly, there is no need to pop the sockets out. They fall out on their own.</li>
</ul>
<div>
<br />
Lastly, don't assume that, just because the SIMMs came with the card, that all the SIMMs are 1MB. :) It turns out I had received a mixed bag of SIMMs containing both 1MB and 256kB SIMMs. This is a version of what you'll get when you try to boot with mixed memory:</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIA3HP0jaqtAUj44U57u0SVzVtMF186O67FuLKzb0uz7euvAB5whpzpI6MKdcQvYSBJHKGXoJSGhLRl9zEp1Uu-dIsj-NbELghUeCCSF9tmj94tPPSzMWPfpG_x9F_Maosaw5Q9YmI4R8k/s1600/IMG_3745.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIA3HP0jaqtAUj44U57u0SVzVtMF186O67FuLKzb0uz7euvAB5whpzpI6MKdcQvYSBJHKGXoJSGhLRl9zEp1Uu-dIsj-NbELghUeCCSF9tmj94tPPSzMWPfpG_x9F_Maosaw5Q9YmI4R8k/s320/IMG_3745.JPG" width="320" /></a></div>
</div>
<div>
<br /></div>
<div>
tl;dr The Hakko FR300 is an essential tool for any rework.</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-6388949623798563662017-01-11T18:29:00.000-08:002017-01-11T22:11:26.689-08:00How to fix an Apple 3.5" drive that won't ejectI got two of these Apple 3.5" drives from eBay. One of them worked perfectly. The other one was able to read and write to the disk, but the eject button did not work (either manually, or from the desktop), and the disk activity light did not go on. I was able to eject disks using a small hex tool I inserted in the manual eject hole on the front of the drive. I did this for a while but decided it was time to try and get it fixed.<br />
<br />
First things first. Open the drive and get to the related parts. One of the more common failures with the eject mechanism is the gear failing. You can order a 3D printed gear from Shapeways, so if it's the gear that's the problem this would be an easy and cheap fix.<br />
<br />
https://www.shapeways.com/product/M84R343FR/gears-for-macintosh-512k-vintage-floppy-drive-ejec?optionId=42282434<br />
<br />
Here is the drive after the bottom four screws and the single screw holding the back cover plate are removed:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyzwMfL13JWs7e-K7D3aAIV7sb-Lej20_CDUw1CcEakWac4fgdlgMvr2febzrkXzF0zpCMUbHAZgorOslRHEjmBiLZHg87wmCzxWZD1Sdp7I8INO6tSj_TE2qjC9wbN9vXp2BQUK0FOVKW/s1600/IMG_3631.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyzwMfL13JWs7e-K7D3aAIV7sb-Lej20_CDUw1CcEakWac4fgdlgMvr2febzrkXzF0zpCMUbHAZgorOslRHEjmBiLZHg87wmCzxWZD1Sdp7I8INO6tSj_TE2qjC9wbN9vXp2BQUK0FOVKW/s320/IMG_3631.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;"><br /></span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: left;">Disconnect the ribbon cable holding the back cover plate and interface cable. Long nose pliers and a good grip on the edge of the connectors should do it.</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="text-align: left;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVoiaqp5vtbVcianJnvdVfILzGre2Rde5AmNWvwEzQqw1Y90Czn9wDqfJ5JNbTr4ppT0jvJ5o_leNB_5g8JPSnos9q6WxH3veUx4BV8ytWfN4uHyA6kcK_qZaTrobjZq5yeYSlFGsRLA5l/s1600/IMG_3638.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVoiaqp5vtbVcianJnvdVfILzGre2Rde5AmNWvwEzQqw1Y90Czn9wDqfJ5JNbTr4ppT0jvJ5o_leNB_5g8JPSnos9q6WxH3veUx4BV8ytWfN4uHyA6kcK_qZaTrobjZq5yeYSlFGsRLA5l/s320/IMG_3638.JPG" width="320" /></a></div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
You can disconnect the other ribbon cable going to the drive assembly using the same technique. Once the cables are disconnected, you can push the entire drive assembly out through the front of the metallic casing.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAOSpBvUgdZ7ezAzqtTjn9a7y3qhS2ibSwX7Lw91_FWXUw_YGgpazscH5p7Sh5w1LftAlBLNTcmPeXjck1xEBEPrTf-Y8E1Jowu6AnrWW6sMEQgC4yU-_eq81eA6TNgiHpu30ZL23sOtaL/s1600/IMG_3632.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAOSpBvUgdZ7ezAzqtTjn9a7y3qhS2ibSwX7Lw91_FWXUw_YGgpazscH5p7Sh5w1LftAlBLNTcmPeXjck1xEBEPrTf-Y8E1Jowu6AnrWW6sMEQgC4yU-_eq81eA6TNgiHpu30ZL23sOtaL/s320/IMG_3632.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtmFQNx4StP2UZadbdeOkUbKu2k6Srat4f5d-MPQG0r7OlPSL5pXVtPKNFNPjdXNOl5kwMxFLrCxGWX7eb95Hqf4eLJlfLZHUSaoWMCtcP8ECmi2NFIwUzk8SFGMAwC84_NeQtOKC7_8j8/s1600/IMG_3633.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtmFQNx4StP2UZadbdeOkUbKu2k6Srat4f5d-MPQG0r7OlPSL5pXVtPKNFNPjdXNOl5kwMxFLrCxGWX7eb95Hqf4eLJlfLZHUSaoWMCtcP8ECmi2NFIwUzk8SFGMAwC84_NeQtOKC7_8j8/s320/IMG_3633.JPG" width="320" /></a></div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
To see the gears, you will have to remove the disk eject motor assembly. It's located on the lower right next to the tracking motor. It consists of the motor and a little PCB with a frame holding the gears. It's held in place by two black screws.</div>
<div class="" style="clear: both; text-align: left;">
<br />
<b><span style="color: red;">Warning</span></b>: Make sure you do not touch or bump either the drive heads or the tracking motor!</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
Here is the eject motor assembly after removing the two screws. Hmm the gears look fine!</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi_zMJNfCGRt2xYgoBw-rc52_LSran7-yXm3Nld_ogs68qy0G5eNWxb93b8epFg6y7WPEqCvpx6Ogd_TTS3I73B9zYA-yRgBA4FDepvxneJ4IQJm7Za3KqyFLF1uI_HeFAFDM7r5X9nqz7/s1600/IMG_3634.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhi_zMJNfCGRt2xYgoBw-rc52_LSran7-yXm3Nld_ogs68qy0G5eNWxb93b8epFg6y7WPEqCvpx6Ogd_TTS3I73B9zYA-yRgBA4FDepvxneJ4IQJm7Za3KqyFLF1uI_HeFAFDM7r5X9nqz7/s320/IMG_3634.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggFluIGdxst1vEOmKHWfx7htuasC6eQhtJ6NTkuJk2T2tGCpXizTVRq28KqQSJBsXN0420zUp_H3wwitfZeX713cKyKKi72CVEKgc4c5bldNtd2wK48fZW-7-FtPn_GoQDQX6v3m1quosX/s1600/IMG_3636.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggFluIGdxst1vEOmKHWfx7htuasC6eQhtJ6NTkuJk2T2tGCpXizTVRq28KqQSJBsXN0420zUp_H3wwitfZeX713cKyKKi72CVEKgc4c5bldNtd2wK48fZW-7-FtPn_GoQDQX6v3m1quosX/s320/IMG_3636.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Since the gears are fine, the next step is to check if the motor is okay. You can free the motor by releasing the three plastic retainer clips at the top. Start with the clip closest to the connector... the motor should tilt up a bit as shown in the photo below:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsJ1_XrlJ9oIidzQmyOmGLIQz-iD8ldRDDbcj-xhoGwGoim7g0ULWIQdJYG327C4wqgyhOVrGUYFAkQ4_AsucTpSePdlpt5A_935qxv55ZP_3MFUJjGitpgbpYKLIZCraax6W9hHmy9GdI/s1600/IMG_3640.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsJ1_XrlJ9oIidzQmyOmGLIQz-iD8ldRDDbcj-xhoGwGoim7g0ULWIQdJYG327C4wqgyhOVrGUYFAkQ4_AsucTpSePdlpt5A_935qxv55ZP_3MFUJjGitpgbpYKLIZCraax6W9hHmy9GdI/s320/IMG_3640.JPG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46wUGM7lmvdiVkIQe98HPSXZghC3aE8iW_2gzcAi_i9ea28XQY3PpeDSabAsmQX77Xni-AEcHrSbRQCpsnKz8wiil46Uqt3lCKmDkbv0bKA_HdgvCZylcPK16_nEnnwGHDg4CxswRranp/s1600/IMG_3637.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi46wUGM7lmvdiVkIQe98HPSXZghC3aE8iW_2gzcAi_i9ea28XQY3PpeDSabAsmQX77Xni-AEcHrSbRQCpsnKz8wiil46Uqt3lCKmDkbv0bKA_HdgvCZylcPK16_nEnnwGHDg4CxswRranp/s320/IMG_3637.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
You will also need to carefully pry off the little PCB... it's held down by two retainer clips similar to the ones holding down the motor. Here is the motor and PCB after it's freed from the clips.</div>
<div class="" style="clear: both; text-align: left;">
</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUoWkmGIwXFcr5-Bbf0m2lRbck5c4MBC36aQtHpZrTrssGCUml7qy6suIXlOaUV6YjgUYe90E7ypfRqjdLdnDnKxKnb79sK02i5c-Tf09H2YOU8StFMgUOknhz8HjAfj1qWcvFSqt8-1Vo/s1600/IMG_3642.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUoWkmGIwXFcr5-Bbf0m2lRbck5c4MBC36aQtHpZrTrssGCUml7qy6suIXlOaUV6YjgUYe90E7ypfRqjdLdnDnKxKnb79sK02i5c-Tf09H2YOU8StFMgUOknhz8HjAfj1qWcvFSqt8-1Vo/s320/IMG_3642.JPG" width="320" /></a></div>
<br />
Once you have access to the motor, see if you can turn the motor's axle with the little gear. In this case it was sort of stuck. I couldn't easily move it by hand so I had to apply a little bit of pressure first using a pair of long nose pliers. Once I got it going, I could turn it by hand but it felt like it was going against some really heavy grease...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidd51dAVqLqD5vFpUjXykxZNK2Xu-XdowILJBxmzhXe3xRrep4fTps57n-zw-NB82MlkCUzT-9GmUQv1GrzhLBNkIit-RxEiD4ZJmHEwZotWo9bL34T-TdHbBjMyd8leyzSPEyGA8UxFPZ/s1600/IMG_3641.JPG" imageanchor="1" style="display: inline !important; margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidd51dAVqLqD5vFpUjXykxZNK2Xu-XdowILJBxmzhXe3xRrep4fTps57n-zw-NB82MlkCUzT-9GmUQv1GrzhLBNkIit-RxEiD4ZJmHEwZotWo9bL34T-TdHbBjMyd8leyzSPEyGA8UxFPZ/s320/IMG_3641.JPG" width="320" /></a></div>
<br />
Solution? Break out your WD-40. Be careful not to get any of it on the plastic parts / wire. A short squirt into the two holes below should be sufficient. Give it a few minutes then give it a few turns again using just your hand. It should now move fairly easily with just the usual resistance from a DC magnet.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYA0C2PHwm0dviQrKvPMFgPqfp26rTD7eIWYJAOZYqezPSXknuhywnsHIs1qAO5w7RSa_Zj55cqrZFcgos4-lP4NOoEjLLyTW3R9LFEDKIZfadlOcpN_dGtRkws1I1bAdtyOBp99OHmIGw/s1600/IMG_3643.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYA0C2PHwm0dviQrKvPMFgPqfp26rTD7eIWYJAOZYqezPSXknuhywnsHIs1qAO5w7RSa_Zj55cqrZFcgos4-lP4NOoEjLLyTW3R9LFEDKIZfadlOcpN_dGtRkws1I1bAdtyOBp99OHmIGw/s320/IMG_3643.JPG" width="320" /></a></div>
<br />
Once it's moving smoothly, leave the motor overnight upended on a piece of paper towel to make sure any excess WD-40 drips out and onto the paper towel, and not onto your gears and drive interior and desk later on. :)<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjX64zxgCKtSCGGE6wwXHj52ZVFzqf2uY5bb_QMW8yCAqSe5hGgUSQF-XXkLxwpJjiRm2GMyen1bmJFQrWr1DzI5Lj42VojedWuqdiF4CB6zmfZu3_pGiSOsQl8wu47FjH3QBaoSBkXU8B/s1600/IMG_3645.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjX64zxgCKtSCGGE6wwXHj52ZVFzqf2uY5bb_QMW8yCAqSe5hGgUSQF-XXkLxwpJjiRm2GMyen1bmJFQrWr1DzI5Lj42VojedWuqdiF4CB6zmfZu3_pGiSOsQl8wu47FjH3QBaoSBkXU8B/s320/IMG_3645.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
If you were like me and got too excited and plugged it in right away to test it, no worries. Just disassemble it again and wash just the plastic frame and gears (shown below) in dishwasher liquid. Pat down as dry as you can and also leave to dry overnight.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcY6PEjTZGPdy1gJII2I-UGfSwjAEqFfCH71FdNiijrnNMtBBSn6BcKt7f-sQrEeo2frfK9wAPany0uJkipZQflQ1jHhLWtR-QzqNSisby_ph2B0TOVFhp_uxDzZavcGxSgpu5jbeGyImm/s1600/IMG_3646.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcY6PEjTZGPdy1gJII2I-UGfSwjAEqFfCH71FdNiijrnNMtBBSn6BcKt7f-sQrEeo2frfK9wAPany0uJkipZQflQ1jHhLWtR-QzqNSisby_ph2B0TOVFhp_uxDzZavcGxSgpu5jbeGyImm/s320/IMG_3646.JPG" width="320" /></a></div>
<br />
Once everything is nice and clean and dry, reverse the steps to reassemble the drive.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr3te8_jxhizIVAbSzWfwPSlxcelFD5vetx_fZWFj5CZmPZUUkC8Gw_v2U5BsG17wUWOEBY-lx_sc_1vz3qlm8pZj95CLVso8EVboG6soLbY9KPTzoVKCtPihwPfu5lAzLAIAYCAnZda2Y/s1600/IMG_3644+%2528Edited%2529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr3te8_jxhizIVAbSzWfwPSlxcelFD5vetx_fZWFj5CZmPZUUkC8Gw_v2U5BsG17wUWOEBY-lx_sc_1vz3qlm8pZj95CLVso8EVboG6soLbY9KPTzoVKCtPihwPfu5lAzLAIAYCAnZda2Y/s320/IMG_3644+%2528Edited%2529.JPG" width="320" /></a></div>
<br />
It works!<br />
<br />
Except the eject button on the front of the drive still doesn't work, and the disk activity light is still not lighting up.<br />
<br />
We've fixed the eject motor, but still need to figure out why the eject button and LED don't work. This could either be (a) bad connector, (b) bad wires, (c) bad switch / LED, or (d) bad drive electronics.<br />
<br />
A simple continuity test ruled out (b) and (c). From my initial testing as well, it didn't seem to be a bad connector. More on this in a minute.<br />
<br />
To test the drive electronics, you can reassemble the drive, hook it up with the back exposed, and short the two pins on the black plug below to see if it initiates an eject sequence. In my case it did. Eject drive electronics check!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWG04myCDP3aXzMpwohs55VacGfldp86LC9sJdZxqtECYjI1PzQNojAEeikfZEBNCZK-c-_FrXa5ye1IxECEQODJUO3WrVOUle399TXE_-1STYYXLmakuWFISgusnHHR5yJgMZXS45jyU0/s1600/IMG_3639.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWG04myCDP3aXzMpwohs55VacGfldp86LC9sJdZxqtECYjI1PzQNojAEeikfZEBNCZK-c-_FrXa5ye1IxECEQODJUO3WrVOUle399TXE_-1STYYXLmakuWFISgusnHHR5yJgMZXS45jyU0/s320/IMG_3639.JPG" width="320" /></a></div>
<br />
To test the LED, you will have to hook up the pins on the red plug above to a known working LED. It gets tricky since the plug is really small, so I had to make a custom plug to get two leads in there. If you are up for it the other way is to solder two wires to the underside of the board where the solder points are - just remember Pin 1 = red.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-pWm7TeInMdI/WHaanxIULEI/AAAAAAAAF64/yh7Lg7eNJhA0wbfu3LpH0fzRVaiKtEb3QCPcB/s1600/2017-01-11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://3.bp.blogspot.com/-pWm7TeInMdI/WHaanxIULEI/AAAAAAAAF64/yh7Lg7eNJhA0wbfu3LpH0fzRVaiKtEb3QCPcB/s320/2017-01-11.jpg" width="320" /></a></div>
<br />
Guess what, mine worked too. LED electronics check!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dzpMLzeqLQgQ1i3GniTt1yklglXrK4GEhu5Kcg8fGwU4vEJC-2kxp6o1YZBgVHKuDNLZRpVFbbpVunmrrO3Aw' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div>
<br />
We know the switch and LED are okay, and the circuits controlling it are okay, and the wire connecting both are okay... so what's going on!<br />
<br />
I popped open the eject and LED connectors to get a better look at what is happening. For some reason, the plugs were not making contact with the pins!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-0O1BQmUdukc/WHasHC1bZeI/AAAAAAAAF84/mqnsyu88Evowy9q134q5Xt3AdGWAfiAJQCPcB/s1600/2017-01-11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://4.bp.blogspot.com/-0O1BQmUdukc/WHasHC1bZeI/AAAAAAAAF84/mqnsyu88Evowy9q134q5Xt3AdGWAfiAJQCPcB/s320/2017-01-11.jpg" width="320" /></a></div>
<br />
I even tried to use Deoxit on both the connector leads and the receiving / male pins on the board... maybe the contacts were just oxidized?<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJU9X0PXbK3ihRhOC2SI2wGXYV0eZTKSHfCQPH_bcJnMBgFEPBgGuqHznYxRsjOGlCUPodIqXCl51-iG4xaXTBbLIF57jP8R4PlYXh98ZgHu5me98Zzb-zUSNIZ5Vnej7hy_8rsNrVoSMr/s1600/IMG_3648.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJU9X0PXbK3ihRhOC2SI2wGXYV0eZTKSHfCQPH_bcJnMBgFEPBgGuqHznYxRsjOGlCUPodIqXCl51-iG4xaXTBbLIF57jP8R4PlYXh98ZgHu5me98Zzb-zUSNIZ5Vnej7hy_8rsNrVoSMr/s320/IMG_3648.JPG" width="320" /></a></div>
<br />
Same result.<br />
<br />
So we were stumped... until Jon noticed the black and red plugs were pulled out from the pins! They were pulled out when I was unplugging the connectors.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTsxlW8AhIps-3YOiad-xKRhnT6w-Sq9cniS6vrigxKgtPcMNXudnE6kh9NaStTDFGI2RASHw7npm3b2niZUjBXEUDWckrZnUIVdxPJZMdJqeOJ_4qDSQEg81XWjTCMzLg_Eaf1QUC024r/s1600/IMG_3639.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTsxlW8AhIps-3YOiad-xKRhnT6w-Sq9cniS6vrigxKgtPcMNXudnE6kh9NaStTDFGI2RASHw7npm3b2niZUjBXEUDWckrZnUIVdxPJZMdJqeOJ_4qDSQEg81XWjTCMzLg_Eaf1QUC024r/s320/IMG_3639.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
It was just a simple matter of pushing the plastic connector housings in until the edges were almost flush with the board. Plugging in the connectors now had a satisfying "snap" as the electrical crimps slid into the receiving pins.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-u5skeNJhE60/WHat91IpIqI/AAAAAAAAF9I/L5y74dvcqgYAjHOkvOMQAYQg0HGQi7vawCPcB/s1600/2017-01-11.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://1.bp.blogspot.com/-u5skeNJhE60/WHat91IpIqI/AAAAAAAAF9I/L5y74dvcqgYAjHOkvOMQAYQg0HGQi7vawCPcB/s320/2017-01-11.jpg" width="320" /></a></div>
<br />
Done!<br />
<br />
It took a bit more time than I expected, but I'm really happy I now have a perfectly working Apple 3.5" Drive.<br />
<br />
tl;dr WD-40 rocks!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-66675943458173505302017-01-10T18:08:00.000-08:002017-06-01T15:27:47.623-07:00How to fix an Apple joystick when the buttons stop workingIf you find the joystick buttons on your Apple joystick aren't working consistently anymore, then it might be time to replace the switches.<br />
<br />
The part you will want to get is the Omron B3F-4000, which is good for another 3,000,000 button presses.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://media.digikey.com/photos/Omron%20Elect%20Photos/B3F-4000.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://media.digikey.com/photos/Omron%20Elect%20Photos/B3F-4000.jpg" width="200" /></a></div>
<br />
You can also choose to get the long service life version, the Omron B3F-5000, which is good for another 10,000,000 operations. :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://media.digikey.com/photos/Omron%20Elect%20Photos/B3F-5000.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://media.digikey.com/photos/Omron%20Elect%20Photos/B3F-5000.jpg" width="200" /></a></div>
<br />
You will also need a long enough phillips-head screwdriver, and your trusty soldering iron and some solder.<br />
<br />
Next step, opening up the joystick. The screws are hidden behind the rubber foot pads on the bottom of the joystick. You can pry the feet off gently and they should have enough adhesive to put back on again. Note that only two of them need removing (upper left and lower right as shown in the picture below).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfgO_ZhgzQLsZepUhVrSA7UkTutzpVwEokpVIMfSMur95z6fbwhVmLSpprAkjtDShdpyKTtD3wAN32g0MLhFW39STq1Wpb8kkRimAim9ix5aeK4lc4E5Gk4E-m9ReiQAtvU_1m_iUQP5QA/s1600/IMG_3625.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfgO_ZhgzQLsZepUhVrSA7UkTutzpVwEokpVIMfSMur95z6fbwhVmLSpprAkjtDShdpyKTtD3wAN32g0MLhFW39STq1Wpb8kkRimAim9ix5aeK4lc4E5Gk4E-m9ReiQAtvU_1m_iUQP5QA/s320/IMG_3625.JPG" width="320" /></a></div>
<br />
You will see that the switches (grey color) have components soldered directly to them.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuyoZUHkg7Sbovw1AvWXtriP2SnbOwnZZlmmkI9o23Uz07PQq5W3li2U9u0k8Wrx-9tp_ybVGd0rGK-VbboUu72iiQ5nXHTkCaajBsK22cXfKyHW79Nb-dfDMR2xDi6I1dGOUEVM97SFxL/s1600/IMG_3626.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuyoZUHkg7Sbovw1AvWXtriP2SnbOwnZZlmmkI9o23Uz07PQq5W3li2U9u0k8Wrx-9tp_ybVGd0rGK-VbboUu72iiQ5nXHTkCaajBsK22cXfKyHW79Nb-dfDMR2xDi6I1dGOUEVM97SFxL/s320/IMG_3626.JPG" width="320" /></a></div>
<br />
So with your soldering iron, carefully detach each wire and resistor connected to the switches. Remember where everything is supposed to go! I just take photos so I can refer back to them when it's time for reassembly.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrw_SAahDBFcUo8mNseAo7g9kqYUnic4qTZIezrJPIGYc_BTXWE2aBlO7UPpEWY2VYsWwHvhpUsKqdATKC7bXN0L8hwFOksuDt56HDDZCyJsRw64KTOoBfh6-Xj5oqjanoUdMt1ZZYfzZf/s1600/IMG_3628.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrw_SAahDBFcUo8mNseAo7g9kqYUnic4qTZIezrJPIGYc_BTXWE2aBlO7UPpEWY2VYsWwHvhpUsKqdATKC7bXN0L8hwFOksuDt56HDDZCyJsRw64KTOoBfh6-Xj5oqjanoUdMt1ZZYfzZf/s320/IMG_3628.JPG" width="320" /></a></div>
<br />
You will also note that each switch is held on to the (top) case by four clips. I found it a lot easier to do the desoldering while the switches were still attached to the clips. After finishing your desoldering work, you will have to remove them from the clips.<br />
<br />
<span style="color: red;">Warning</span>: Be careful not to lose the spring that is in between the (orange) button cap and the switch! It helps to have the joystick facing down as you remove the old switches from the clips so gravity can assist in keeping the springs in place. Finding a proper replacement spring is hard - you can probably find a compression spring on ebay and bundle up three to make it strong enough like the original, but even then it will feel different.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDJoiETM3DF7iiJaJDl5KqyAHcb3xkH5MNSiPqAp5nkokaqS93c5VEcXCGwU4_tybGbcbWTzRiR_bw6uHjUDkQVdJDh8_depxS34MtE9fbUAYVQdpXCkwFvXo5e588hzdwYu2hrg8rWJXY/s1600/s-l500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="500" data-original-width="500" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDJoiETM3DF7iiJaJDl5KqyAHcb3xkH5MNSiPqAp5nkokaqS93c5VEcXCGwU4_tybGbcbWTzRiR_bw6uHjUDkQVdJDh8_depxS34MtE9fbUAYVQdpXCkwFvXo5e588hzdwYu2hrg8rWJXY/s320/s-l500.jpg" width="320" /></a></div>
<br />
Here are the old switches after removal:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXpr2MbiLogvUoqOpKI643FJ_y6JMe0dKn_rrlEBDPxMgBTmV8FdJDZcZASYBggmcEF8fVIs35uyE4daEK1Ub5ZWNXrxCR5jPANpGErhnyU6W504qi_WyMM6eN7QKlGZnsNXusKZhzTpp1/s1600/IMG_3630.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXpr2MbiLogvUoqOpKI643FJ_y6JMe0dKn_rrlEBDPxMgBTmV8FdJDZcZASYBggmcEF8fVIs35uyE4daEK1Ub5ZWNXrxCR5jPANpGErhnyU6W504qi_WyMM6eN7QKlGZnsNXusKZhzTpp1/s320/IMG_3630.JPG" width="320" /></a></div>
<br />
Finally, resolder the connections on to the new switches.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAicYTx820PbRq1YMSrIu9LTBk7oLgAauvCjg4Dsngazt9IuRNsje2UB-_FgNdHpfh2S66PauOZfjgVVO9qCoY1pPgCgHzaqINTLxe8Y0ZNwSEkc4NPFkm0rU4Im0SkcBoX264YEiSfGfh/s1600/IMG_3629.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1600" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAicYTx820PbRq1YMSrIu9LTBk7oLgAauvCjg4Dsngazt9IuRNsje2UB-_FgNdHpfh2S66PauOZfjgVVO9qCoY1pPgCgHzaqINTLxe8Y0ZNwSEkc4NPFkm0rU4Im0SkcBoX264YEiSfGfh/s320/IMG_3629.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Done! Now get back to playing Alien Downpour...<br />
<br />
tl;dr Give your Apple joystick buttons new life by installing Omron B3F-5000 switches.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-25851217475474291152016-02-29T01:58:00.000-08:002017-08-24T02:23:46.241-07:00Replacing the battery on an Apple IIGSWhich battery should you get for the Apple IIGS?<br />
<br />
The real time clock chip takes 5V, so you can use either of the following replacement batteries:<br />
<br />
<a href="https://media.digikey.com/pdf/Data%20Sheets/TADIRAN%20PDFs/TL-5101.pdf">https://media.digikey.com/pdf/Data%20Sheets/TADIRAN%20PDFs/TL-5101.pdf</a><br />
<a href="https://media.digikey.com/pdf/Data%20Sheets/TADIRAN%20PDFs/TL-5902.pdf">https://media.digikey.com/pdf/Data%20Sheets/TADIRAN%20PDFs/TL-5902.pdf</a><br />
<br />
The TL-5902 has more capacity, and has a lower discharge rate.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2tE9CvnWWcUCnL7PCi8p27rMSpJlrvtxYjVJNU3f8AZwVBMrBq1whfUn5S9HcMssPuNSQYzE41M_-pPDFcgS95-Gaa6uaLHZiRyR4Lo_a2JEy4Ec0PtNB6VZ6XKXMgsYIFPMfPGFS7b3g/s1600/12764662_10153399082125869_7711108567358194368_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2tE9CvnWWcUCnL7PCi8p27rMSpJlrvtxYjVJNU3f8AZwVBMrBq1whfUn5S9HcMssPuNSQYzE41M_-pPDFcgS95-Gaa6uaLHZiRyR4Lo_a2JEy4Ec0PtNB6VZ6XKXMgsYIFPMfPGFS7b3g/s320/12764662_10153399082125869_7711108567358194368_o.jpg" width="240" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXeUKO-r7D5d5OqBgBS19UYNYPWQJwEuZmUaVheDoWzMS0X1d8X2J6pzWxYQI1F4VZbdHdACiJ1PX9iDREuwuXp9MowGe69rxjAXoFFDZxaIqloNzdYZF-HwgcWn9fDgZpk9YXFWsYqiFm/s1600/12792092_10153399082130869_9100957893639442030_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1200" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXeUKO-r7D5d5OqBgBS19UYNYPWQJwEuZmUaVheDoWzMS0X1d8X2J6pzWxYQI1F4VZbdHdACiJ1PX9iDREuwuXp9MowGe69rxjAXoFFDZxaIqloNzdYZF-HwgcWn9fDgZpk9YXFWsYqiFm/s320/12792092_10153399082130869_9100957893639442030_o.jpg" width="240" /></a></div>
<br />
If you have a ROM 01 motherboard, you'll want to get the TL-5902/T which has solder tabs already attached.<br />
<br />
If you have a ROM 3 motherboard, you'll wan tto get the TL-5902/S which is the normal button top.<br />
<br />
Remember to check back in another twenty years!<br />
<br />
tl;dr get the TL-5902Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-91570203371222526032014-10-11T08:32:00.003-07:002014-10-11T08:32:56.360-07:00Including the "dbg" application in your erlang release.<div dir="ltr" style="text-align: left;" trbidi="on">
Want to include the "dbg" application to allow for tracing in your release that is generated by relx ?<br />
<br />
Include the runtime tools application in the relx.config file:<br />
<blockquote class="tr_bq">
<blockquote class="tr_bq">
{release,{adjutant_core,"0.0.3"},</blockquote>
<blockquote class="tr_bq">
[</blockquote>
<blockquote class="tr_bq">
<b> runtime_tools, </b></blockquote>
</blockquote>
<blockquote class="tr_bq">
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>adjutant_web,</blockquote>
<blockquote class="tr_bq">
] </blockquote>
</blockquote>
<br />
Just thought I'd document this in case it catches anyone else up.<br />
<br /></div>
Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-91232468249232982242012-01-18T21:11:00.000-08:002012-01-18T03:11:15.463-08:00How to disassemble and clean Game & Watch multiscreenI've gotten a few Game & Watch games off Ebay. Like most retro gear, they are usually sold "as is". These arrive in different conditions. If you're lucky, they come pretty clean. More often than not, though they arrive with different "marks" and dirt all over them.<br /><div><br /></div><div>There could be drinks accidentally spilled on the unit, even if wiped clean the liquid may have been inside the unit. Often, there are years worth of dirt stuck around the control buttons. These can manifest in several ways: Button could be sluggish to return after being pressed, Button may need to be pressed hard to activate. There could also be obvious things like droplets and things behind the screen. Possibly stuff on the screen surface itself. There are also some owners who write their names or signature somewhere on the game itself. And the worst one, someone engraves their name on the plastic with a soldering iron (no, we can't clean these ones up, sorry).<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGsuKetLJ6RIJVB3DT9KziGSK1k3BM8lhtqFE4_-q2OHMYWcqliHIsTlTeUB7aAfUK9hTT4k1P1UETpvx_S2BG070LVQVgAB8CMtYGgs7InYZR7dAYQ1Gzd0iXV9QFrBD3VLSGYuOwPtw/s1600/IMG_7494_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGsuKetLJ6RIJVB3DT9KziGSK1k3BM8lhtqFE4_-q2OHMYWcqliHIsTlTeUB7aAfUK9hTT4k1P1UETpvx_S2BG070LVQVgAB8CMtYGgs7InYZR7dAYQ1Gzd0iXV9QFrBD3VLSGYuOwPtw/s320/IMG_7494_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577160578067106" border="0" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigkkYIYDsQfJJLBcRyLGFt60zerRp564gVwmZB4x_DN4qgWHtUBo0tLeitEOczqKKIvQcYubQzvYXkvLtf7_JGLN4jr0s5zA9l8bMk3JT32IBHyJQGjtk6pTc2alQqb2iAfIwAMnSC9T4/s1600/IMG_7495_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigkkYIYDsQfJJLBcRyLGFt60zerRp564gVwmZB4x_DN4qgWHtUBo0tLeitEOczqKKIvQcYubQzvYXkvLtf7_JGLN4jr0s5zA9l8bMk3JT32IBHyJQGjtk6pTc2alQqb2iAfIwAMnSC9T4/s320/IMG_7495_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579055183505282" border="0" /></a></div><div><br /></div><div>What we have here is your typical Donkey Kong multi screen (DK-52).<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOY3gx6h31OF6taDKq3rr9hmnMHVkGNJkjhLAChkdk9yncSqXV8rakQ49rMi_5v-Rw1rNFNVUy8u7xtmqY1ydf6VxzkWYeOkN2ZqeulnMPPzavpRLXsf4-qP2tIXyUeV5sxI7VrZEfirk/s1600/IMG_7491_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOY3gx6h31OF6taDKq3rr9hmnMHVkGNJkjhLAChkdk9yncSqXV8rakQ49rMi_5v-Rw1rNFNVUy8u7xtmqY1ydf6VxzkWYeOkN2ZqeulnMPPzavpRLXsf4-qP2tIXyUeV5sxI7VrZEfirk/s320/IMG_7491_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577147320302642" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilAPOeZUifT1cVL0qgBihG336waSgZeCvDNETFzNtmj_qi3N25lxfaOrxJWhnRNBw1NENMplv5CDdsU9dYhXzYAUZj5D2kDi0KzmiY4RFbUoq1nYkl1FS_tZj41ie7OYRYsmv1HN5aHpg/s1600/IMG_7492_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilAPOeZUifT1cVL0qgBihG336waSgZeCvDNETFzNtmj_qi3N25lxfaOrxJWhnRNBw1NENMplv5CDdsU9dYhXzYAUZj5D2kDi0KzmiY4RFbUoq1nYkl1FS_tZj41ie7OYRYsmv1HN5aHpg/s320/IMG_7492_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577146977473618" border="0" /></a><br />Its previous owner had taken the liberty to write his funny looking signature on the front plate:<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaWGg1cKxeo77ucrzSkp0Y8Xu8pXAxbfJuWCASZpmPSDim7_gIA7tl6xq0uypWzUFfw9iL8si4T0ihaZH1sj3GLrgE9eocXOZ9Co_sHb9DLV3b5GQSKJi3_lJd3ekVI90DqJJA9hDZwKQ/s1600/IMG_7490_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaWGg1cKxeo77ucrzSkp0Y8Xu8pXAxbfJuWCASZpmPSDim7_gIA7tl6xq0uypWzUFfw9iL8si4T0ihaZH1sj3GLrgE9eocXOZ9Co_sHb9DLV3b5GQSKJi3_lJd3ekVI90DqJJA9hDZwKQ/s320/IMG_7490_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698576672705142290" border="0" /></a><br /></div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNmDWuzF9zgXDEO7z519G0HXiA2OClUU3Eabl8jZadDLNb900Cs3KRl94SWZGagOg68tlsO327gUFiXDAY-3apXmTmmLDdoNO63m6my-du1TUT6_EQfidYNOlvFR8J07TVS8ludCOfyI4/s1600/DSC00283.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNmDWuzF9zgXDEO7z519G0HXiA2OClUU3Eabl8jZadDLNb900Cs3KRl94SWZGagOg68tlsO327gUFiXDAY-3apXmTmmLDdoNO63m6my-du1TUT6_EQfidYNOlvFR8J07TVS8ludCOfyI4/s320/DSC00283.JPG" alt="" id="BLOGGER_PHOTO_ID_5513277516480975186" style="cursor: pointer; width: 320px; height: 180px; " border="0" /></a><div>The serial number is missing and there's lots of gunk on the battery compartment:<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmw0ckYufDlCYiNwjTMD8YnD4-fKZ2PCutlUDsmO3lUsFjx4oHmLWIzueI4CxYLce6d-4ptP0xoTdiGfDov5KM0pwDIp636aSIevoHmb52pz3FWR8yHe3_ZuwbAUYlKy1iuCgFhQ7o-e0/s1600/IMG_7487_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmw0ckYufDlCYiNwjTMD8YnD4-fKZ2PCutlUDsmO3lUsFjx4oHmLWIzueI4CxYLce6d-4ptP0xoTdiGfDov5KM0pwDIp636aSIevoHmb52pz3FWR8yHe3_ZuwbAUYlKy1iuCgFhQ7o-e0/s320/IMG_7487_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698576659455790706" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-6zy0pSP9tIRLijgAT1dk79Gyt2gna6gRMBuHGG_hqSzA5wR6QEJhC1iOWC91Lb1ZIXYHCr3qJmh4O_Y7rgfnXXIqHXtaPqsyikZpaLBqPs-yhfgIHQsb4M4bfxBLJsUczoENSFzFhpI/s1600/DSC00284.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-6zy0pSP9tIRLijgAT1dk79Gyt2gna6gRMBuHGG_hqSzA5wR6QEJhC1iOWC91Lb1ZIXYHCr3qJmh4O_Y7rgfnXXIqHXtaPqsyikZpaLBqPs-yhfgIHQsb4M4bfxBLJsUczoENSFzFhpI/s320/DSC00284.JPG" alt="" id="BLOGGER_PHOTO_ID_5513277506494966018" style="cursor: pointer; width: 320px; height: 240px; " border="0" /></a><br />The inside is pretty clean looking. It must have been stored with the lid closed. Although the directional pad needs a bit of hard pressing in order to get to certain directions (right and up).<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpi6scWJ8P-gsCO8Y6PtO78pYc_x9mWVcSIGybtaq3QjD3zVZUtNvovI8FM7v_rqgXYLmFFRHKxpfbkXNASJch4KOMPZc3D-Zdg1z4LS6bb96rzc_obgMcW0W5o2nXHtn9xF-h0MNg2wc/s1600/DSC00286.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpi6scWJ8P-gsCO8Y6PtO78pYc_x9mWVcSIGybtaq3QjD3zVZUtNvovI8FM7v_rqgXYLmFFRHKxpfbkXNASJch4KOMPZc3D-Zdg1z4LS6bb96rzc_obgMcW0W5o2nXHtn9xF-h0MNg2wc/s320/DSC00286.JPG" alt="" id="BLOGGER_PHOTO_ID_5513277495707027138" style="cursor: pointer; width: 320px; height: 240px; " border="0" /></a><br /><br /></div><div>On to disassembly.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNidOtuVSsHtO-1ITLh6_oBfpQRRvz_2CH9DzKtkVO4eUmAkVnS2owiwREM9vvIIxIQoRrDTaW-Q2xyy9qW9LeP5PGHy2uoH64p0JvoK8VwKXng_o63Av9Qyc-52yWelKvbX2qX5iKksI/s1600/IMG_7496_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNidOtuVSsHtO-1ITLh6_oBfpQRRvz_2CH9DzKtkVO4eUmAkVnS2owiwREM9vvIIxIQoRrDTaW-Q2xyy9qW9LeP5PGHy2uoH64p0JvoK8VwKXng_o63Av9Qyc-52yWelKvbX2qX5iKksI/s320/IMG_7496_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577627526904642" border="0" /></a><br />First remove the 5 screws at the bottom:<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYKjsZ2sZJZFI0CHi7UZrnJvXAsLSCwIntE_KxwBVH0ThgIIfSxfq2qMjF4DpcFns_9kE2ACSDynv9XxqCnhLKaqiyibyU3IslwQ5_SA1_VeNbb_o5Gu7bC35adZYP8eXH4F3XSmo0TmY/s1600/IMG_7501_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYKjsZ2sZJZFI0CHi7UZrnJvXAsLSCwIntE_KxwBVH0ThgIIfSxfq2qMjF4DpcFns_9kE2ACSDynv9XxqCnhLKaqiyibyU3IslwQ5_SA1_VeNbb_o5Gu7bC35adZYP8eXH4F3XSmo0TmY/s320/IMG_7501_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579070123208370" border="0" /></a><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil1-k73-joPOWXTfLLbxL1aeKjI_JH3-fnLdtXccoAlGWn9vX0Dou2qybC0XXWtr7pLGC0ThzDctBIFY5OZBy422YOG8ZN8py_n24SVOYx8UHL_OdgiPBg4kQu-y7F2qn9OkG3ZLURtLQ/s1600/IMG_7499_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil1-k73-joPOWXTfLLbxL1aeKjI_JH3-fnLdtXccoAlGWn9vX0Dou2qybC0XXWtr7pLGC0ThzDctBIFY5OZBy422YOG8ZN8py_n24SVOYx8UHL_OdgiPBg4kQu-y7F2qn9OkG3ZLURtLQ/s320/IMG_7499_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577637937373234" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCijFT-pLE2lEfXFSs3O-tdmeKJ4LiTqd0zBJRFq3k3_Igj_Ycuh_s_IAt12VnoRjvwCZ-hbqaml8QWpcR4UotOUsXuXh5MUUnudtMcgWmNFUFlkC97R3AolLlFfNco2WhekgFE2ObH6I/s1600/IMG_7498_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCijFT-pLE2lEfXFSs3O-tdmeKJ4LiTqd0zBJRFq3k3_Igj_Ycuh_s_IAt12VnoRjvwCZ-hbqaml8QWpcR4UotOUsXuXh5MUUnudtMcgWmNFUFlkC97R3AolLlFfNco2WhekgFE2ObH6I/s320/IMG_7498_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577634065391442" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH3H78QDIjYtVHgCVBXqgsGPqZCeRsb5Vmb416h6HZqs9JUC3NAT5lMVUy-B_r5TyLDjpSidwlvd6ZOUEj8ncZvDNHUfCj8-Kj_rAXjMAB5sxbq4T1tcP-kM21PzX9aVr4nXTIi_4h_iM/s1600/IMG_7500_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiH3H78QDIjYtVHgCVBXqgsGPqZCeRsb5Vmb416h6HZqs9JUC3NAT5lMVUy-B_r5TyLDjpSidwlvd6ZOUEj8ncZvDNHUfCj8-Kj_rAXjMAB5sxbq4T1tcP-kM21PzX9aVr4nXTIi_4h_iM/s320/IMG_7500_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579054102596658" border="0" /></a><br />Then lift the back panel up halfway and remove the 5 screws on the bottom pcb.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4DOLng6wTyy-cZza7mzXfSyWQt9_i1ifeAd4LjLRXE2jNil4MaFmf7F8hk0z_zKwnTQeXM7wVXty__BPTz4Z02PMMcp8bol4IWwim_ZlUTraYU9esoIQweOiHSBJfwrGuEA9K-SGmXK0/s1600/IMG_7503_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4DOLng6wTyy-cZza7mzXfSyWQt9_i1ifeAd4LjLRXE2jNil4MaFmf7F8hk0z_zKwnTQeXM7wVXty__BPTz4Z02PMMcp8bol4IWwim_ZlUTraYU9esoIQweOiHSBJfwrGuEA9K-SGmXK0/s320/IMG_7503_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579066933967298" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3gcZWnZFbL8cp-Ky7wwFUoM4orBx6f6lc_F0ehwVXgeXf7gl40H4hX7qgqZXpxW0mUSfOrj047Ep77giki-cd6WdTIpp_YsJSAR37ynMFr1VXIMXymNDirAlVxwfVJrZ99d_LB797DO0/s1600/IMG_7505_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3gcZWnZFbL8cp-Ky7wwFUoM4orBx6f6lc_F0ehwVXgeXf7gl40H4hX7qgqZXpxW0mUSfOrj047Ep77giki-cd6WdTIpp_YsJSAR37ynMFr1VXIMXymNDirAlVxwfVJrZ99d_LB797DO0/s320/IMG_7505_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579384310000450" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiboneWwWPU5HPkET7Lsg5xYGUfKw29btCskVPQ8BfsV1X3DkAUytzqVDOQSjuAsTySF_ZrhF39aMsn8RNoIicYO5VPAtEcbgI0q6hrxr8HemtJfwcuoDEkSeM4o4CcAafn3f_kdujdMwc/s1600/IMG_7504_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiboneWwWPU5HPkET7Lsg5xYGUfKw29btCskVPQ8BfsV1X3DkAUytzqVDOQSjuAsTySF_ZrhF39aMsn8RNoIicYO5VPAtEcbgI0q6hrxr8HemtJfwcuoDEkSeM4o4CcAafn3f_kdujdMwc/s320/IMG_7504_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579071767351522" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfla-MX_FcgnLwHL49WMDYgTfaPprYzMd_9c8bA2iNFMTT8XF4giFtdrYHff9mm-t146oM3qg8OKHVZjn7sPindLIEtyVt1jCpm7ytyDWRQ3fmB4Dtra9sISf_7gfgHYmJCiuJTWzOzgs/s1600/IMG_7506_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfla-MX_FcgnLwHL49WMDYgTfaPprYzMd_9c8bA2iNFMTT8XF4giFtdrYHff9mm-t146oM3qg8OKHVZjn7sPindLIEtyVt1jCpm7ytyDWRQ3fmB4Dtra9sISf_7gfgHYmJCiuJTWzOzgs/s320/IMG_7506_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579382922646658" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4ruBlmRTmtLXyUPfLYbrlUlivUdLSNTGwi-PN5ZEW3Pg5qJDD2_JAN279lGi2wtiG2ldztzzlip95ide6exClUni0uW8y2Q5YxYQjgte60iNJ4M81J0Wl94BBrwx5ZNVbWIpjErnT9WI/s1600/IMG_7508_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4ruBlmRTmtLXyUPfLYbrlUlivUdLSNTGwi-PN5ZEW3Pg5qJDD2_JAN279lGi2wtiG2ldztzzlip95ide6exClUni0uW8y2Q5YxYQjgte60iNJ4M81J0Wl94BBrwx5ZNVbWIpjErnT9WI/s320/IMG_7508_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579394657892322" border="0" /></a><br />Lift up the bottom pcb over the upper screen. It is very likely the flexible pcb (white plastic with black lines on it) and/or LCD will still be attached to the board. Take care while handling this as it can tear easily.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2IuZ1j4McOr3rfw6m7P75j4PpBx1cDAa9RkKp7L9w-0G92EtWsYlUa1LxLz15zXSxZFIItid1xWV_yJP7lkoGzYqF6OJkK-FOPQw0LJUdn6EufZH-_sKhcR45IwxJ6XylJblHMcvpJqE/s1600/IMG_7509_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2IuZ1j4McOr3rfw6m7P75j4PpBx1cDAa9RkKp7L9w-0G92EtWsYlUa1LxLz15zXSxZFIItid1xWV_yJP7lkoGzYqF6OJkK-FOPQw0LJUdn6EufZH-_sKhcR45IwxJ6XylJblHMcvpJqE/s320/IMG_7509_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579400480858274" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWV3JQuSH2Go9i_4c1BlD4ejvMAX3Jrcyf9S7ZRlFr39bsxxWX-74YJ88GFnsFGArGOfLj0PmNRhR_LXYAEzCr1z6U8mSfosH30ru99iRYjKHze4y03-XFAiARXqopelh0iT2sloVQ2II/s1600/IMG_7512_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWV3JQuSH2Go9i_4c1BlD4ejvMAX3Jrcyf9S7ZRlFr39bsxxWX-74YJ88GFnsFGArGOfLj0PmNRhR_LXYAEzCr1z6U8mSfosH30ru99iRYjKHze4y03-XFAiARXqopelh0iT2sloVQ2II/s320/IMG_7512_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579814639890002" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKvfuVOx2LkcIWD0lfKdAKiC7Nr46FfjGzmLZdu1F3iGyQb1kpxcjAOk-LxtsHC8fQVrT7IweV-c0RJaLIZRoxxNRjY9RBCH5DKBHlwm-S6AGkhyQbg8EHG2x4zLVXwPvEkqX2bvQcC78/s1600/IMG_7509_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKvfuVOx2LkcIWD0lfKdAKiC7Nr46FfjGzmLZdu1F3iGyQb1kpxcjAOk-LxtsHC8fQVrT7IweV-c0RJaLIZRoxxNRjY9RBCH5DKBHlwm-S6AGkhyQbg8EHG2x4zLVXwPvEkqX2bvQcC78/s320/IMG_7509_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579803624543730" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuVbxzEAh5fO1wOmXvqhb5UN7ZrLvY8KAIwqaoAfy4_RnVoqodJjKxWhEa1KJ6K45XGACkreDi70jpAgEFwkqnL-s8VE_8MbPy1s8v-rLPGw3TP38AmgqcMWC5BgtAotC1Fao9Qw7Kwuo/s1600/IMG_7513_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuVbxzEAh5fO1wOmXvqhb5UN7ZrLvY8KAIwqaoAfy4_RnVoqodJjKxWhEa1KJ6K45XGACkreDi70jpAgEFwkqnL-s8VE_8MbPy1s8v-rLPGw3TP38AmgqcMWC5BgtAotC1Fao9Qw7Kwuo/s320/IMG_7513_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698579822431598002" border="0" /></a><br />Then remove the 4 screws on the top screen</div><div><br /></div><div>One thing to remember about the screws. The 9 longer screws go to where they are externally accessible. All the "internal" screws are the shorter one<br /></div><div><br /></div><div>Then carefully lift up the PCB and set aside the buttons and other things that fall out.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR-fBoePXDjXVKC-5PSm6aoDcO6n3BY5nLoL1CVLx4-mUti_v7RV9mwX-4brFamOqsA6JzgklUkHfA1OFB0ueWgamudIzPArERZhEmsR3_gfovSB0VSGSrmWtpqF7hRbhbTZ8ptGE0pvE/s1600/IMG_7514_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR-fBoePXDjXVKC-5PSm6aoDcO6n3BY5nLoL1CVLx4-mUti_v7RV9mwX-4brFamOqsA6JzgklUkHfA1OFB0ueWgamudIzPArERZhEmsR3_gfovSB0VSGSrmWtpqF7hRbhbTZ8ptGE0pvE/s320/IMG_7514_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580249299174450" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnsbfuh5jwwGkBPJ-OAG-KFYjvBRfXMVjWzYNYKETFdmpPwoEy774AyccuLlDyDCqwxst1WFiltUwr-Ses3CFlN4vpPFzIBsXH_yGygDPip-kp4fDqcS-Rld2Ap-0vp0dJUNY8cIj4SXM/s1600/IMG_7515_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnsbfuh5jwwGkBPJ-OAG-KFYjvBRfXMVjWzYNYKETFdmpPwoEy774AyccuLlDyDCqwxst1WFiltUwr-Ses3CFlN4vpPFzIBsXH_yGygDPip-kp4fDqcS-Rld2Ap-0vp0dJUNY8cIj4SXM/s320/IMG_7515_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580256166183346" border="0" /></a><br />You should have:</div><div>D pad<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR0-oo4YUBegvc2pp0KUdQrLk79RYXVyXhesAK0uYSEdR6uMljFvjpTMGa8FrQ6eOEuMEAgZqbWfzNNnOgnvt9Nb0yg44fqQvUci7I163oCh_zb6Umdz_wxSPTLuNdpcHmMiJX2gx5e8o/s1600/IMG_7574_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR0-oo4YUBegvc2pp0KUdQrLk79RYXVyXhesAK0uYSEdR6uMljFvjpTMGa8FrQ6eOEuMEAgZqbWfzNNnOgnvt9Nb0yg44fqQvUci7I163oCh_zb6Umdz_wxSPTLuNdpcHmMiJX2gx5e8o/s320/IMG_7574_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698713992076216690" border="0" /></a><br /></div><div>D pad's rubber</div><div>jump button</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEituEf_WAgsA85Do0M3kZGo5Vkb7XhERHNTPIPuCe_dOx2FVylzBevj5EgKi3dx6iX8pbYUNVuF96f9Zaf7vn8D-CQOGtA-uU_0D7H9S3mNOAcpx-hty7noOl1qzQjJ8B0IFLuvRFHSeT4/s1600/IMG_7570_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEituEf_WAgsA85Do0M3kZGo5Vkb7XhERHNTPIPuCe_dOx2FVylzBevj5EgKi3dx6iX8pbYUNVuF96f9Zaf7vn8D-CQOGtA-uU_0D7H9S3mNOAcpx-hty7noOl1qzQjJ8B0IFLuvRFHSeT4/s320/IMG_7570_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698713974471682258" border="0" /></a><br />Game A/B/TIME rubber</div><div>2 small circular metal discs for Alarm and ACL</div><div><br /></div><div>If the unit has not been previously disassembled, the lower display would most likely be still stuck to the PCB. Carefully bend up the LCD until it is separated.</div><div><br /></div><div>The screen will be composed of the following (in order from top to bottom):</div><div>front polarizer</div><div>front graphic</div><div>the LCD glass part</div><div>back graphic</div><div>back reflector<br /><br /></div><div>Besides those you may find a small rubber "ring" and 2 rectangular transparent "things"</div><div>These are for holding the LCD steady. If you lose or do not find these, it is okay, Some unit have these, some don't. They would work fine without them.<br /><br /></div><div>The PCB is still connected to the back case by 2 wires for the "speaker". Use a soldering iron and carefully desolder these 2 wires.</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZkLupkvOyrt-5l0uwevwA5V0_TZUbB4mUB-G4d-lZbC2oDCIZ48cxfyMSBR4TCnwGfbxMY7gvSDtdfs0oNeugG6v_L8YfFKZ6qMMNtam0d6KDTDntrHz7ULBI3iER3ZCGIQRCwlTcFeI/s1600/IMG_7536_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZkLupkvOyrt-5l0uwevwA5V0_TZUbB4mUB-G4d-lZbC2oDCIZ48cxfyMSBR4TCnwGfbxMY7gvSDtdfs0oNeugG6v_L8YfFKZ6qMMNtam0d6KDTDntrHz7ULBI3iER3ZCGIQRCwlTcFeI/s320/IMG_7536_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698581905553503810" border="0" /></a><br />Take off the 4 (long) screws holding the upper screen in place.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglnuKJXmlrS6kH04uFLH7kXKRTKi8-Sua0v3D2nlgYWUFU8tmaaUM1A_7d0Zf5E4XF7mbkF_JuKQoTC7t0YWBms66HIYmp00yKW1OeEERAgkvKMgWYHVV6tz3I_h3Wbhpb8swt3aGiABg/s1600/IMG_7516_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglnuKJXmlrS6kH04uFLH7kXKRTKi8-Sua0v3D2nlgYWUFU8tmaaUM1A_7d0Zf5E4XF7mbkF_JuKQoTC7t0YWBms66HIYmp00yKW1OeEERAgkvKMgWYHVV6tz3I_h3Wbhpb8swt3aGiABg/s320/IMG_7516_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580262673834210" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4eGrBLlrIwq9wSzYOi_T7xbb1mOoqK5N8PDWNiK5sCZjuLwY6q0nhsX0RLQXj1mR1zNYt7inDq9YIXc1lN3btfH9HsuQ4Fs_TsiNuhEqSS9d_gSVz-sGdqP5SM_Q9gBiis6rDova3aMs/s1600/IMG_7518_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4eGrBLlrIwq9wSzYOi_T7xbb1mOoqK5N8PDWNiK5sCZjuLwY6q0nhsX0RLQXj1mR1zNYt7inDq9YIXc1lN3btfH9HsuQ4Fs_TsiNuhEqSS9d_gSVz-sGdqP5SM_Q9gBiis6rDova3aMs/s320/IMG_7518_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580268339856562" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwJQlTDqUHgwQufrvktrSYA0aTWM4hkt-xn7tQksLqJi4JxbHtBFHkBw70hJrWmVPldS9kvuQ2KnbYSjYhm_c63QrbcdTWGW_NNbsUGkFq2YcUXHaX7A4CoDhk9O6VRgDsTGw4zyN0m5E/s1600/IMG_7519_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwJQlTDqUHgwQufrvktrSYA0aTWM4hkt-xn7tQksLqJi4JxbHtBFHkBw70hJrWmVPldS9kvuQ2KnbYSjYhm_c63QrbcdTWGW_NNbsUGkFq2YcUXHaX7A4CoDhk9O6VRgDsTGw4zyN0m5E/s320/IMG_7519_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580573406577346" border="0" /></a><br /></div><div>Now, carefully pry up the upper screen (near the locking clasp). This will reveal 5 more "short" screws:<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtr-GkgC4pKtnrZU-HSWc_IGfBHnt5snIOI7EOnVHgySAGiwXcPNnigNdyN7PhxvkcA8GteV-J2gX8W-6joURPAbinY5oXC1lwWcqCykPlZq7uSGlkKitXL6WGRUy1v-7QJv6upt9_-QI/s1600/IMG_7520_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtr-GkgC4pKtnrZU-HSWc_IGfBHnt5snIOI7EOnVHgySAGiwXcPNnigNdyN7PhxvkcA8GteV-J2gX8W-6joURPAbinY5oXC1lwWcqCykPlZq7uSGlkKitXL6WGRUy1v-7QJv6upt9_-QI/s320/IMG_7520_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580571914223506" border="0" /></a><br /></div><div>Remove the 5 screws.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEo3HPl1MQED_-P0VkV5C7iSPoO7DavPnEoaq2ILQyACS9LKbiYZSQbW03glJhIKu0E5T0Sf8sFd9AnOBPzmMksdHpHcrgBpU9lwpOWmlBgw2ofoKXufKNhxAZKYmC1Bns5UbF2tyUDWI/s1600/IMG_7523_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEo3HPl1MQED_-P0VkV5C7iSPoO7DavPnEoaq2ILQyACS9LKbiYZSQbW03glJhIKu0E5T0Sf8sFd9AnOBPzmMksdHpHcrgBpU9lwpOWmlBgw2ofoKXufKNhxAZKYmC1Bns5UbF2tyUDWI/s320/IMG_7523_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580969063714946" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvewuCwfExHZW1Sz7mJ34ZAV_a0fayIqqDY4gbr2hgK40UM31UUdgNbQCMVikKzbmIuHZ5jIWq9g7lcSD1rEnTasT00oS-4Kx34ruQcEMHWWuDoeNL9zeWEwPfFSZxYJyNV0VV6bRZRr8/s1600/IMG_7522_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvewuCwfExHZW1Sz7mJ34ZAV_a0fayIqqDY4gbr2hgK40UM31UUdgNbQCMVikKzbmIuHZ5jIWq9g7lcSD1rEnTasT00oS-4Kx34ruQcEMHWWuDoeNL9zeWEwPfFSZxYJyNV0VV6bRZRr8/s320/IMG_7522_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580584535847506" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLwMg7gUKAjk-V80seBu12M4nyy2JTPTyrz_VX9yFDcQw7bgBiJbNZ48Qj52u3jIgCUlgP-TgqsA3lsWKvtB59skYSMV98rX9rOqtfsvq6AIk9QQ52PXB7IoSJj68sbiD1WU5BrWrw3XY/s1600/IMG_7524_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLwMg7gUKAjk-V80seBu12M4nyy2JTPTyrz_VX9yFDcQw7bgBiJbNZ48Qj52u3jIgCUlgP-TgqsA3lsWKvtB59skYSMV98rX9rOqtfsvq6AIk9QQ52PXB7IoSJj68sbiD1WU5BrWrw3XY/s320/IMG_7524_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580970834145570" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgherYUFovFztiCa58evu0jWIFvTmrpR1TK-tPM2ZfWgEFcp_jeqrFgMmI-MfYBa-uNB7MZGuv4XHbjR1QwQDlWH5GtOUusBogQlfhCsCwUF3UJjJDkyn1Sy9AvZVAb5nb3ZuAso_yhnzM/s1600/IMG_7521_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgherYUFovFztiCa58evu0jWIFvTmrpR1TK-tPM2ZfWgEFcp_jeqrFgMmI-MfYBa-uNB7MZGuv4XHbjR1QwQDlWH5GtOUusBogQlfhCsCwUF3UJjJDkyn1Sy9AvZVAb5nb3ZuAso_yhnzM/s320/IMG_7521_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580575957135586" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMCmXEEU-CczpuwPbZQSNzqbYGKY1DcYMyh3Pcy2FgnEpftN5QAAe-AgDXV17PGO_rOatV_brAcoYVWspEB983nqVAAWnCTAOWow7WRiIorhidONh9I_xC0_ro4LyEjJHaOSVvhb1c2tg/s1600/IMG_7549_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMCmXEEU-CczpuwPbZQSNzqbYGKY1DcYMyh3Pcy2FgnEpftN5QAAe-AgDXV17PGO_rOatV_brAcoYVWspEB983nqVAAWnCTAOWow7WRiIorhidONh9I_xC0_ro4LyEjJHaOSVvhb1c2tg/s320/IMG_7549_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698710837252119682" border="0" /></a><br />There will be a similar set of accessories on the upper LCD. Instead of a PCB, you will find an aluminum plate. And unlike the lower screen, the flexible wire should come right off.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO5o7eP1nTdYu7WNu22YG2DjO6kvyF0EbYSaOA2qDDzuCrL5eiw8d0RAYItGiYxGpejkLpR60wGKADmPSSf6iohBOAC21jvdkmweEs5MdR9w79kDshQht1leElH6ZDuqQW-CayVUzvZGg/s1600/IMG_7529_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgO5o7eP1nTdYu7WNu22YG2DjO6kvyF0EbYSaOA2qDDzuCrL5eiw8d0RAYItGiYxGpejkLpR60wGKADmPSSf6iohBOAC21jvdkmweEs5MdR9w79kDshQht1leElH6ZDuqQW-CayVUzvZGg/s320/IMG_7529_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698581411657691570" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUJpvrPUJBGBMhgODhDWxcH8DJz7J4uPLxe8nrlwHMUYSu2N1lD2K7t6DLtUe2cn-DWrnYngkJuaoVK4UJtBVcmB8hW-GvJ76nfALXoYPkrtRsVkRooG6qtBn1tlvmVW21tOrJFyK1JNA/s1600/IMG_7531_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUJpvrPUJBGBMhgODhDWxcH8DJz7J4uPLxe8nrlwHMUYSu2N1lD2K7t6DLtUe2cn-DWrnYngkJuaoVK4UJtBVcmB8hW-GvJ76nfALXoYPkrtRsVkRooG6qtBn1tlvmVW21tOrJFyK1JNA/s320/IMG_7531_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698581423029923554" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_EO50qQTDDAmnk9Poq57s17kjfM0qJ16nniUMiTUHaCVnjxND4tJNi_icXtNBgJjGU-nCbZCu046mYmkwAmTsLdQIFQP76N9SIza40oPiR5fUCW99XW2WvSFohN_FS3HPBRWYMLglUag/s1600/IMG_7526_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_EO50qQTDDAmnk9Poq57s17kjfM0qJ16nniUMiTUHaCVnjxND4tJNi_icXtNBgJjGU-nCbZCu046mYmkwAmTsLdQIFQP76N9SIza40oPiR5fUCW99XW2WvSFohN_FS3HPBRWYMLglUag/s320/IMG_7526_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580977242077810" border="0" /></a><br /></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhciFVpa09uk0BnBlXVgr61wHMLBimreeu9xkypNAdB9Y8UpkxOkFpvauAFai7Tqi0RvsKkbDZy7UOoPirRpUTHQ3xZ0Hx_MnWg5IkQduER5dVQBqBEc_FnaLrizL2Q2ET2aOWX0mKzwHQ/s1600/IMG_7527_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhciFVpa09uk0BnBlXVgr61wHMLBimreeu9xkypNAdB9Y8UpkxOkFpvauAFai7Tqi0RvsKkbDZy7UOoPirRpUTHQ3xZ0Hx_MnWg5IkQduER5dVQBqBEc_FnaLrizL2Q2ET2aOWX0mKzwHQ/s320/IMG_7527_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698580985088555522" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1MSHpgqSGhuSJRQeMiwKImD0JcBKsI-_xx0DF0bTz33rA7-iWzwSFcaQJwBlmsP-jXzDBOU2TRDwzHVYbnSP1_uc84IgnXsd_EutfB30xXB9uO0S9uzjSJJ9EgfSM-0mx3pN2pIixUM8/s1600/IMG_7542_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1MSHpgqSGhuSJRQeMiwKImD0JcBKsI-_xx0DF0bTz33rA7-iWzwSFcaQJwBlmsP-jXzDBOU2TRDwzHVYbnSP1_uc84IgnXsd_EutfB30xXB9uO0S9uzjSJJ9EgfSM-0mx3pN2pIixUM8/s320/IMG_7542_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698582312279291090" border="0" /></a></div><div>Fill up the sink with warm soapy water (use dishwashing liquid). On everything except the PCB, LCD and accesories, use a toothbrush to brush off dirt and rinse. Set aside on a towel to dry. Do not lose any of the small parts.</div><div><br /></div><div>If your unit had something written on the top plate with a permanent marker you can try some rubbing alcohol on it:<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_G6-IjMDwjJUHHKDybWB6F_b2YToReVza7HeRECqGOnNukoMKS8n6CBIfEywxPSTQub85egW7gNGjTObIfaHX4Cp9BSS1cnQR2BFfWSFwW83JGB4s0st4jtM0KZgEgsmRndYs5hakJx0/s1600/IMG_7593_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_G6-IjMDwjJUHHKDybWB6F_b2YToReVza7HeRECqGOnNukoMKS8n6CBIfEywxPSTQub85egW7gNGjTObIfaHX4Cp9BSS1cnQR2BFfWSFwW83JGB4s0st4jtM0KZgEgsmRndYs5hakJx0/s320/IMG_7593_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715470753410866" border="0" /></a></div><div>If that does not work, you can use some nail polish remover. If you go this way, be extra careful not to get the nail polish remover in contact with any plastic parts as this can melt plastic. Nail polish remover would erase something written with a marker, but leave the original printed markings intact.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD1gyEiyQuCimnEyUZvsEZwWQkGMvJlMDblIVI-oZrQEmGPY5Xx9oTGX5oEBIEv8Ur5mxYez0bG3Dxvdy8_UvPo0six-xxghASFtCXsS0BuTuaog_N_Y_dJPwozNDRbnJvDaVwXFyknho/s1600/IMG_7591_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD1gyEiyQuCimnEyUZvsEZwWQkGMvJlMDblIVI-oZrQEmGPY5Xx9oTGX5oEBIEv8Ur5mxYez0bG3Dxvdy8_UvPo0six-xxghASFtCXsS0BuTuaog_N_Y_dJPwozNDRbnJvDaVwXFyknho/s320/IMG_7591_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715465677529762" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjUjgpUmtcH-cx9sWc-RhPx3DIknCIyfcQesybYHd8Cs56XcZXhkVLf8xGOmg-dSorhUhJX8Uc_a8kXbSlaA-kJOe92RWto9u_h_wsfD3KNCNHXgoIPULj7xMUhvri64ubl-k4mPWXDIQ/s1600/IMG_7594_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjUjgpUmtcH-cx9sWc-RhPx3DIknCIyfcQesybYHd8Cs56XcZXhkVLf8xGOmg-dSorhUhJX8Uc_a8kXbSlaA-kJOe92RWto9u_h_wsfD3KNCNHXgoIPULj7xMUhvri64ubl-k4mPWXDIQ/s320/IMG_7594_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715477318337218" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitkhHVaRxcaNyMTlLxzpKK2FUcQXQDkvIlNPVuMQh4dFULtLThToSH3i7p-fYrzEhBM01qy1JFh8R1rakXqvN0j-u_4hX_ntCsyBShu0vSdLtrcDwt_I22X4aPRp6h2FbjZIjlaui2qnk/s1600/IMG_7595_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitkhHVaRxcaNyMTlLxzpKK2FUcQXQDkvIlNPVuMQh4dFULtLThToSH3i7p-fYrzEhBM01qy1JFh8R1rakXqvN0j-u_4hX_ntCsyBShu0vSdLtrcDwt_I22X4aPRp6h2FbjZIjlaui2qnk/s320/IMG_7595_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715483828845314" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_rC5HxjShURTIf_-7Mvqc8ofOWWmQktgJBNI780SHl8f5BHzk8RxOwQXH7t1Zpe1a4TC-pmwuQEtnZ63Zpma8oNRFnHPRIyJKrSvxV0dSO1jm5I8itVFSG9LwIVuDEq4XDgMWDoSMGVA/s1600/IMG_7596_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_rC5HxjShURTIf_-7Mvqc8ofOWWmQktgJBNI780SHl8f5BHzk8RxOwQXH7t1Zpe1a4TC-pmwuQEtnZ63Zpma8oNRFnHPRIyJKrSvxV0dSO1jm5I8itVFSG9LwIVuDEq4XDgMWDoSMGVA/s320/IMG_7596_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715804806342546" border="0" /></a><br /></div><div><br /></div><div>For permanent marker writings on plastic parts, never use nail polish remover on them. You can try some toothpaste and brush.</div><div>Toothpaste is a bit abrasive so be careful when doing this as it may cause the brushed area to be shinier than the rest.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwIPMVUEbV-s0Ogx4ky2RTC-ILJj-g6zQWrWqMdIBm0W6mP1gik_ErHsTEioa2amKNntwYA82U3chyMzHkSUszkvQd636RIFYNOZbUKIujWUS0UkPNteHcnC_G01BqdgZCwHZVpnUe5Ew/s1600/IMG_7558_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwIPMVUEbV-s0Ogx4ky2RTC-ILJj-g6zQWrWqMdIBm0W6mP1gik_ErHsTEioa2amKNntwYA82U3chyMzHkSUszkvQd636RIFYNOZbUKIujWUS0UkPNteHcnC_G01BqdgZCwHZVpnUe5Ew/s320/IMG_7558_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698712180962357602" border="0" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkkOQ5SLRVlXFvmwAPxsaJQusTtIeQNJFK7TWkU9Kf_zmTJ-CRNRKSSZtYs2jL_pwLIHuD4do0Ye3XwigX2g-PWXxKmO3TEieObvlvi7U3bx8A0hBJ2iVpa2t-8KzGve7b-MYDri19EI8/s1600/IMG_7572_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkkOQ5SLRVlXFvmwAPxsaJQusTtIeQNJFK7TWkU9Kf_zmTJ-CRNRKSSZtYs2jL_pwLIHuD4do0Ye3XwigX2g-PWXxKmO3TEieObvlvi7U3bx8A0hBJ2iVpa2t-8KzGve7b-MYDri19EI8/s320/IMG_7572_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698713982819690114" border="0" /></a><br /></div><div><br /></div><div>For the LCD and accessories you would need to carefully wash it by hand. It would be handy to blow out water with a lens blower so that it does not leave water marks on the surface. Do not forget which way the parts go. The front polarizer in particular will only go properly one way. If you have it the wrong way, all the white will turn black, and vice versa. The graphic transparencies should be a little more obvious how they go.</div><div><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1LZSOhKo3zvDjgLGogPh6ZHcywlloMDWLtvXDsPG-8w0YYFzqEwodgI71WAa2_qbZWFfH6GuZ7Ve62MLxG-MxOA9RzlXPbyfbinBIOnR2tyjgkzeuugoeWhxVxa_en9JdyzLqhzXTWzU/s1600/IMG_7548_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1LZSOhKo3zvDjgLGogPh6ZHcywlloMDWLtvXDsPG-8w0YYFzqEwodgI71WAa2_qbZWFfH6GuZ7Ve62MLxG-MxOA9RzlXPbyfbinBIOnR2tyjgkzeuugoeWhxVxa_en9JdyzLqhzXTWzU/s320/IMG_7548_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698710829103381106" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVIczVwCfaHsw73qxFZBrLVn6SPL8fMf1_MnzpsFsHaMlmwl5c5gnYU6q5bsbwHmIkaT0SmDX8HzvFrIsUbN2hBTcuoUtWqFjg4caZy5ZGdYVH2cBV8vN8IkhDMMLZ6IVp7U7BsYJVZMU/s1600/IMG_7547_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVIczVwCfaHsw73qxFZBrLVn6SPL8fMf1_MnzpsFsHaMlmwl5c5gnYU6q5bsbwHmIkaT0SmDX8HzvFrIsUbN2hBTcuoUtWqFjg4caZy5ZGdYVH2cBV8vN8IkhDMMLZ6IVp7U7BsYJVZMU/s320/IMG_7547_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698710823117291250" border="0" /></a></div><div>After everything is dried, assemble the LCD first on the plastic tray that it goes to. This is where the black "ring" and 2 rectangular "things" go:</div><div><br /></div><div>Put all the buttons back in their respective places,<br /></div><div><br /></div><div>Do the same for the upper screen</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz11HZALqitsai17ZLzvDtDvnkyObnDyOYj-RoCnJg9HDNhfyRZS61i9wUJa5b3uoLtJXc7_9CnKSiTaFdMrrMCa0u5tmhWdt_MkPbmOX-MNzOoAIUiMDHoGhRQerk8wxXDhJH-qHuL6I/s1600/IMG_7568_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz11HZALqitsai17ZLzvDtDvnkyObnDyOYj-RoCnJg9HDNhfyRZS61i9wUJa5b3uoLtJXc7_9CnKSiTaFdMrrMCa0u5tmhWdt_MkPbmOX-MNzOoAIUiMDHoGhRQerk8wxXDhJH-qHuL6I/s320/IMG_7568_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698713553765999314" border="0" /></a></div><div>Put the screws back on the upper screen. Now here's a secret when returning screws. Before you screw them in, turn the screw counter-clockwise until it "clicks", then screw it in. This makes sure the screw goes back into the thread it came from.</div><div><br /></div><div>Put the PCB back over the lower screen and the screws. Before you proceed, go put in some batteries and make sure everything is back.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir9KaYvSmaRzBZb2caGBOsBqF1DS08FQ0uTyfLG8qAdp63rclg6ePWUSucjWzGFqHmxNlMEZXJXv55NRKOcrCqcZkB_1z_7nlh02h6ehsVlUmQOMHdEdy4zRIApmZdbwoB8eMha08-Eig/s1600/IMG_7493_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir9KaYvSmaRzBZb2caGBOsBqF1DS08FQ0uTyfLG8qAdp63rclg6ePWUSucjWzGFqHmxNlMEZXJXv55NRKOcrCqcZkB_1z_7nlh02h6ehsVlUmQOMHdEdy4zRIApmZdbwoB8eMha08-Eig/s320/IMG_7493_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698577152935913522" border="0" /></a><br />Also press the buttons and make sure they are now responsive.</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghdUwx4vcNp9pVPah0rY7qewBzthJQ4ehOeNr2CCulI1dqeatUCzId7jpHwTBf6xpdILW_fgPw8OJdApqG7tB5-ft0mOSp2zCsI__27wSIsCm3q82TOZScv-muABc6ldFZx9GhrLCicrI/s1600/IMG_7602_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghdUwx4vcNp9pVPah0rY7qewBzthJQ4ehOeNr2CCulI1dqeatUCzId7jpHwTBf6xpdILW_fgPw8OJdApqG7tB5-ft0mOSp2zCsI__27wSIsCm3q82TOZScv-muABc6ldFZx9GhrLCicrI/s320/IMG_7602_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698716156457078802" border="0" /></a></div><div>If all is well, go and re solder the speaker back on.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic4bK2EKlQ9a1qQAu9wJ8uA8GtDfpQ5E119ZF3Shb62w2PGix38aryP3FF2DO_gECwnPLh2ACVpSpCgNrjNXs9lQGwKbWr8ywYf3L2zfUA-iJFpNCuwoqadF79q-MWzWYI_AmdcDc1spk/s1600/IMG_7601_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic4bK2EKlQ9a1qQAu9wJ8uA8GtDfpQ5E119ZF3Shb62w2PGix38aryP3FF2DO_gECwnPLh2ACVpSpCgNrjNXs9lQGwKbWr8ywYf3L2zfUA-iJFpNCuwoqadF79q-MWzWYI_AmdcDc1spk/s320/IMG_7601_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698715826745534914" border="0" /></a><br /></div><div> </div><div><br />Put all the long screws on the top screen back on, and at the back of the unit.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIjH2SA9T-JmX1APb6ziLjTnyvagDZ7cQnO5nEWG2cwvvJjgi0tHtSuI4xK1aQLzzFpywXFprUXIbHPDHIhhmIaNnJYceDgwbKDInCZ6iOhwGZ4XwPnwurvx0xLPF1WU2DohyDUh-5JxY/s1600/IMG_7607_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIjH2SA9T-JmX1APb6ziLjTnyvagDZ7cQnO5nEWG2cwvvJjgi0tHtSuI4xK1aQLzzFpywXFprUXIbHPDHIhhmIaNnJYceDgwbKDInCZ6iOhwGZ4XwPnwurvx0xLPF1WU2DohyDUh-5JxY/s320/IMG_7607_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698716269737205106" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgemRlA79lni-a5h8T7ZnPZD1AbKrkuiKHgteP8F9A1wQsB8d5bfLGZe0441SMLtUdp671pbrEJIU8xx8SyUwzWoWVu-gL5kONdj_DRko_sxKG3MJBjrDK4w0KcCJdhlANOdAXycvSOe0A/s1600/IMG_7605_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgemRlA79lni-a5h8T7ZnPZD1AbKrkuiKHgteP8F9A1wQsB8d5bfLGZe0441SMLtUdp671pbrEJIU8xx8SyUwzWoWVu-gL5kONdj_DRko_sxKG3MJBjrDK4w0KcCJdhlANOdAXycvSOe0A/s320/IMG_7605_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698716172206593458" border="0" /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeCRRZABvaZLTDRvGP3A8CBQ8c9pFVA-fcx05k0lEgF7sKJHF1qyvhdGIRZAkmq7VqmwhgQuiUHurA06yJ_0g0-0Oh0TZoOVm_IZvVPBHp29aRFUcAFkC3OObsNHBR2Bycm85xI5ur6e4/s1600/IMG_7604_phatch.jpg"><img style="cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeCRRZABvaZLTDRvGP3A8CBQ8c9pFVA-fcx05k0lEgF7sKJHF1qyvhdGIRZAkmq7VqmwhgQuiUHurA06yJ_0g0-0Oh0TZoOVm_IZvVPBHp29aRFUcAFkC3OObsNHBR2Bycm85xI5ur6e4/s320/IMG_7604_phatch.jpg" alt="" id="BLOGGER_PHOTO_ID_5698716163603215234" border="0" /></a><br /><br /></div>Jonnyboyhttp://www.blogger.com/profile/17452611876879851494noreply@blogger.com6tag:blogger.com,1999:blog-6890593738526520772.post-18092243331422441352011-10-10T09:03:00.000-07:002011-11-23T07:04:49.778-08:00Erlang: Supervising two processes from a single supervisor<div dir="ltr" style="text-align: left;" trbidi="on">
Only because this ate over an <b>hour</b> of my day today.<br />
<br />
Below is a shell example of a supervisor that starts two child processes which are also supervisors.<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">-module(arti_sup).</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">-behaviour(supervisor).</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">%% API</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">-export([start_link/0]).</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">%% Supervisor callbacks</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">-export([init/1]).</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">%% Helper macro for declaring children of supervisor</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">-define(CHILD(I, Type), {I, {I, start_link, []}, permanent, 5000, Type, [I]}).</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">%% ===================================================================</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">%% API functions</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">%% ===================================================================</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">start_link() -></span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> supervisor:start_link({local, ?MODULE}, ?MODULE, []).</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">%% ===================================================================</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">%% Supervisor callbacks</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">%% ===================================================================</span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">init([]) -></span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Hip_Sup = ?CHILD(parser_sup , supervisor),</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> ServiceSup = ?CHILD(service_sup , supervisor), </span><br style="font-family: "Courier New",Courier,monospace;" /><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Children = [ Hip_Sup, ServiceSup ], </span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> RestartStrategy = { one_for_one , 4, 9600},</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> {ok, { RestartStrategy, Children } }. </span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"> </span></span><br />
I have to other supervisors parser_sup and and service_sup.<br />
<br />
If you find that no matter what you change in this file doesn't seem to make a difference to which supervisor is being called, check that this supervisor itself is being started from the application filename_app.erl ,<br />
<br />
If all goes well, you can use the sasl application to check the supervisor / launch information.<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">1> application:start(sasl).<br />ok<br /><br />=PROGRESS REPORT==== 11-Oct-2011::01:59:07 ===<br /> supervisor: {local,sasl_safe_sup}<br /> started: [{pid,<0.41.0>},<br /> {name,alarm_handler},<br /> {mfargs,{alarm_handler,start_link,[]}},<br /> {restart_type,permanent},<br /> {shutdown,2000},<br /> {child_type,worker}]<br /> </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<br /></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><b><removed for brevity...></b></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /><br />2> application:start(myapplication).<br />INIT parser supervisor<br />INIT service supervisor</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br />=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===<br /> supervisor: {local,human_input_parser_sup}<br /> started: [{pid,<0.51.0>},<br /> {name,human_input_parser_srv},<br /> {mfargs,{human_input_parser_srv,start_link,[]}},<br /> {restart_type,permanent},<br /> {shutdown,5000},<br /> {child_type,worker}]<br /><br />=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===<br /> supervisor: {local,arti_sup}<br /> started: [{pid,<0.50.0>},<br /> {name,human_input_parser_sup},<br /> {mfargs,{human_input_parser_sup,start_link,[]}},<br /> {restart_type,permanent},<br /> {shutdown,5000},<br /> {child_type,supervisor}]<br /><br />=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===<br /> supervisor: {local,service_sup}<br /> started: [{pid,<0.53.0>},<br /> {name,service_srv},<br /> {mfargs,{service_srv,start_link,[]}},<br /> {restart_type,permanent},<br /> {shutdown,5000},<br /> {child_type,worker}]<br /><br />=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===<br /> supervisor: {local,arti_sup}<br /> started: [{pid,<0.52.0>},<br /> {name,service_sup},<br /> {mfargs,{service_sup,start_link,[]}},<br /> {restart_type,permanent},<br /> {shutdown,5000},<br /> {child_type,supervisor}]<br /><br />=PROGRESS REPORT==== 11-Oct-2011::01:59:14 ===<br /> application: arti<br /> started_at: nonode@nohost<br />ok</span></div>
<br />
You can also use appmon to get a visualization of the supervisor tree with the command<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">3> appmon:start().</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">{ok,<0.55.0>}</span></span><br />
<br />
This should present a graphical application which shows the supervisor/process trees currently running and is updated in real time.</div>Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com0Brisbane QLD, Australia-27.453911 153.026505-28.355746500000002 151.76307749999998 -26.5520755 154.2899325tag:blogger.com,1999:blog-6890593738526520772.post-48800529548576523232011-10-01T08:54:00.000-07:002011-10-01T09:00:29.688-07:00Rust basics: Numbers<div dir="ltr" style="text-align: left;" trbidi="on">
Rust is a systems level language, it is my understanding that it provides the basic "types" of numbers that most system languages do.<br />
<br />
There are two types of numbers that can be used by rust:<br />
<br />
<blockquote>
Integer literals, floating point literals.</blockquote>
<br />
<br />
<span style="font-size: large;">Integer Literals</span><br />
<br />
I figured that quoting from the authoritative spec means I can't be too wrong, it says:<br />
<i><br /></i><br />
<i>An integer literal has one of three forms:</i><br />
<ol style="text-align: left;">
<li><i>A decimal literal starts with a decimal digit and continues with any mixture of decimal digits and underscores.</i></li>
<li><i>A hex literal starts with the character sequence U+0030 U+0078 ("0x") and continues as any mixture hex digits and underscores.</i></li>
<li><i>A binary literal starts with the character sequence U+0030 U+0062 ("0b") and continues as any mixture binary digits and underscores.</i></li>
</ol>
<div style="text-align: left;">
I don't understand the interest of allowing underscores, I guess this means programmers can make values like 0xDEAD_BEEF_BABE or 0b_1111_0000 more readable.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Ah, but you can also specify the container (bitsize) size of the object by appending an integer suffix. </div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<br /></div>
<ul style="text-align: left;">
<li>The u suffix gives the literal type uint.<br />The g suffix gives the literal type big.</li>
<li>"Signed" types i8, i16, i32 and i64</li>
<li>"unsigned" types u8, u16, u32, u64.</li>
</ul>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
An example would be 0xDEAD_u32 or 18_i64 . If you believe it the underscores can be placed anywhere that the programmer likes to make the values more readable.</div>
<br />
<br />
<span style="font-size: large;">Floating Point Literals</span><br />
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
</div>
And again from the spec:<br />
<br />
<i> A floating-point literal has one of two forms:</i><br />
<ol style="text-align: left;">
<li><i>Two decimal literals separated by a period character U+002E (’.’), with an optional<br />exponent trailing after the second decimal literal.</i></li>
<li><i>A single decimal literal followed by an exponent.</i></li>
</ol>
<br />
Nothing too exciting here, things like 0.01 and 99.999999 and 0.99. You can also add two optional floating suffix values for your enjoyment.<br />
<br />
<ul style="text-align: left;">
<li>The f32 suffix</li>
<li>The f64 suffix</li>
</ul>
<br />
<br />
These are unsurprisingly specify the size of the container storing your value.<br />
<br />
<br />
<br />
<span style="font-size: large;">Example time !</span><br />
<br />
So for a basic example:<br />
<div style="font-family: "Courier New",Courier,monospace;">
<br /></div>
<div style="font-family: "Courier New",Courier,monospace;">
use std;<br />
import std::io;<br />
<br />
fn main() {<br />
<br />
let stdout = io::stdout();<br />
<br />
let x = 127u;<br />
<br />
stdout.write_line(#fmt["X = %u", x]);<br />
}</div>
<br />
This as you'd expect outputs the number "127". Nothing too complex. We can see that the type of "x" is inferred as an unsigned integer.<br />
<br />
So, lets do the usual thing and test assignment of a different type, does in infer correctly ?<br />
<div style="font-family: "Courier New",Courier,monospace;">
<br /></div>
<div style="font-family: "Courier New",Courier,monospace;">
$ rustc assignment.rs -o assignment<br />
assignment.rs:10:6: 10:7 error: mismatched types: expected uint but found int (types differ)<br />
assignment.rs:10 x = 5;</div>
<br />
Rust fails the compile, and graciously gives you the opportunity to fix this bug. The quick and dirty solution is to change the assignment value to 5u, but if this value was created by another function you'd have to do what other languages consider casting, using the as keyword.<br />
<br />
So you'd do it like this:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">
use std;<br />
import std::io;<br />
<br />
fn main() {<br />
<br />
let stdout = io::stdout();<br />
<br />
let x = 127u8;<br />
<br />
x = (x + 128u8 ) as u8;<br />
<br />
stdout.write_line(#fmt["X = %u", x as uint]);<br />
} </div>
<br />
The reason why the equation 127 + 128 was chosen is because 255 is the largest value that can be stored in a 8 bit unsigned value. <br />
<br />
The first "as" in the above example is superfluous, but it remains as an example of how you can cast/convert a value that may be converted or passed by another function or module that you didn't write.<br />
<br />
Note that in the above example no data was lost. However if the final value of x is over 255, in the assignment line ( x = (x + 128u8 ) as u8 ) this is where the x value will be 'overflowed' not in the final stdout.write_line() function.<br />
<br />
Much like C, Fortran, Algol or any other language when you use specific types you must be careful about overflowing the maximum. I was reading the source code and came across the auto-expanding "big" type, but I'll explore that for another day. <br />
<br />
I guess that is as good of a start as any. I probably should put something about "using crates" but I don't know enough about them to be useful yet.<br />
<br />
<br /></div>
Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-39244442705968198342011-09-28T00:50:00.000-07:002011-09-28T01:48:04.686-07:00Famicom Final Fantasy II Japanese to English Conversion<div>I have always been a big fan of native hardware. Sure, emulators to a certain extent would give you a "taste" of what the device can do. But as they say, nothing beats the real thing. It could be the grinding sound a floppy disk drive makes as the head tries to seek past track 0, or little things such as millisecond delay of a game controller compared to native hardware. </div><div><br /></div><div>I have played a few of the Final Fantasy games. One day I decided I'd play through all of the games in the main series. Not on an emulator though. On the real thing.</div><div><br /></div><div>For some reason some of the games in the series were only released in Japan. Since my grasp of the language is quite limited, I thought I would look for a fan translated version of the game.</div><div><br /></div><div>In order to begin I set up my Family Computer (Japanese version of the NES). Found a copy of Final Fantasy II. First thing to do of course, was to make sure this cart is still working (it was). And after confirming that, it's time to take apart the cart. Famicom carts are held together by 4 plastic tabs, and it is very difficult to open up a cart and keep them intact. Super glue can restore broken off tabs.</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-4aQ1vvd2QyoAw5aUZWcpDz3Mo4BM2VIxqRzx6Sk7fhZpCkRRdSq6SfOXFdxLCX8RHGrmJzy71r7jxsX-yncLrvHRqZn-srA7LhzlTImcavc_G-fksa4JHvYWzphoz0lKShkD1b3GJmY/s1600/Screen+shot+2011-09-28+at+5.53.43+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-4aQ1vvd2QyoAw5aUZWcpDz3Mo4BM2VIxqRzx6Sk7fhZpCkRRdSq6SfOXFdxLCX8RHGrmJzy71r7jxsX-yncLrvHRqZn-srA7LhzlTImcavc_G-fksa4JHvYWzphoz0lKShkD1b3GJmY/s320/Screen+shot+2011-09-28+at+5.53.43+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317138470295234" style="cursor: pointer; width: 256px; height: 320px; " /></a></div><div>Next we need to desolder the ROM chip(s). Final Fantasy II only uses 1 ROM chip. I carefully desoldered every pin and got the chip out. Next is to find some pinouts of the mask ROM, and how different it is from the EPROM I was planning to use (AM27C20). I found them here:</div><div><br /></div><div>http://www.raphnet.net/electronique/nes_cart/nes_cart_en.php</div><div>http://nesdev.parodius.com/NES%20ROM%20Pinouts.txt</div><div>http://nintendoallstars.w.interia.pl/romlab/nesmod.htm</div><div><br /></div><div>After modifying the board, this is how it looks:</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrGct5hQAUyBedRjy1pnK1fqtjUqI7mvkOZOLNl7c8dOWWqYPNIyJluO_4vuHaPQfGv8aBNopDaHhIx9t-FTZnpO92788QOSoDyivwXDedo_1tUkEOsP4z3qf2NoFGUrxMCwLqENC0WVE/s1600/Screen+shot+2011-09-28+at+5.53.05+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjrGct5hQAUyBedRjy1pnK1fqtjUqI7mvkOZOLNl7c8dOWWqYPNIyJluO_4vuHaPQfGv8aBNopDaHhIx9t-FTZnpO92788QOSoDyivwXDedo_1tUkEOsP4z3qf2NoFGUrxMCwLqENC0WVE/s320/Screen+shot+2011-09-28+at+5.53.05+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317081654897202" style="cursor: pointer; width: 320px; height: 202px; " /></a><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_lNP-EgpLKR7ZjHDekafypHMZIpQgsF0ZvwwswBtfaIyDf3SMBs6nycdUNPzKjWr61LwtkOCQP7ykbRzSmGpDJarT7TMTt7xNpOBJOYJVgggz1EwPFlbiNGRqpCFU3kqxjarSbuTQ1SM/s1600/Screen+shot+2011-09-28+at+5.52.36+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_lNP-EgpLKR7ZjHDekafypHMZIpQgsF0ZvwwswBtfaIyDf3SMBs6nycdUNPzKjWr61LwtkOCQP7ykbRzSmGpDJarT7TMTt7xNpOBJOYJVgggz1EwPFlbiNGRqpCFU3kqxjarSbuTQ1SM/s320/Screen+shot+2011-09-28+at+5.52.36+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317073581126322" style="cursor: pointer; width: 225px; height: 320px; " /></a></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsuUROcPYCxNE5BjQ0esgx9aATUarBvuL95ja8NSgi80nIl1y-Wc3wYK6eE_awtpzdyNxswCkrc9-bDZSAB-Bio5kG6i4v_-XK9CQ1WYliDcNr3oT2Dk0Yj3ODp2Lu1RuWi5J9y3rvayM/s1600/Screen+shot+2011-09-28+at+5.53.22+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsuUROcPYCxNE5BjQ0esgx9aATUarBvuL95ja8NSgi80nIl1y-Wc3wYK6eE_awtpzdyNxswCkrc9-bDZSAB-Bio5kG6i4v_-XK9CQ1WYliDcNr3oT2Dk0Yj3ODp2Lu1RuWi5J9y3rvayM/s320/Screen+shot+2011-09-28+at+5.53.22+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317123163476818" style="cursor: pointer; width: 320px; height: 216px; " /></a></div><div><br /></div><div>And after burning the eprom and soldering it on:</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUVGc5-CHA_7UUdZt6CxcUFG8ONzFlAFcxU5NMBbQ-y2UjCB436CGBzuTpsLT4WUkSF6jNG0Q3ZYD4pL1Jj8LgKkgK54aLUrWfjiFBvlZEIaD8erK_RZAm2AKUF9SX8oLXeLoihfmPsqM/s1600/Screen+shot+2011-09-28+at+5.56.08+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUVGc5-CHA_7UUdZt6CxcUFG8ONzFlAFcxU5NMBbQ-y2UjCB436CGBzuTpsLT4WUkSF6jNG0Q3ZYD4pL1Jj8LgKkgK54aLUrWfjiFBvlZEIaD8erK_RZAm2AKUF9SX8oLXeLoihfmPsqM/s320/Screen+shot+2011-09-28+at+5.56.08+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318543457414786" style="cursor: pointer; width: 320px; height: 208px; " /></a></div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMhsGOk1qH8ciMbrKtwnryPcmpsRaUTCYBNHskEN34sqJKakQvEq1EmCtzzz_2TugIANRiSOUrALQSfEfv9plurgCmzD9D7CkP7F3qYs0EWNPnq33m9LmeJp8EDB2XXXmeSNtw7xxn5G8/s1600/Screen+shot+2011-09-28+at+5.56.50+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="cursor:pointer; cursor:hand;width: 250px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMhsGOk1qH8ciMbrKtwnryPcmpsRaUTCYBNHskEN34sqJKakQvEq1EmCtzzz_2TugIANRiSOUrALQSfEfv9plurgCmzD9D7CkP7F3qYs0EWNPnq33m9LmeJp8EDB2XXXmeSNtw7xxn5G8/s320/Screen+shot+2011-09-28+at+5.56.50+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318559710718946" /></a></div><div><br /></div><div>Of course, I have to test it first before closing the case:</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9LoFhCyXhiL4ExVGg4Mldee_EqEKY_vqfnU_hb46quA2L6kjtfQMpTGwV9VGbK1wKx7xTuzxN7JkctIiO-K96Kwv8A7rJvocxAAozKoTxjzlWZ8YZ7f9L5SB7ABKpJxJOvhoHf0tzwLw/s1600/Screen+shot+2011-09-28+at+5.54.46+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9LoFhCyXhiL4ExVGg4Mldee_EqEKY_vqfnU_hb46quA2L6kjtfQMpTGwV9VGbK1wKx7xTuzxN7JkctIiO-K96Kwv8A7rJvocxAAozKoTxjzlWZ8YZ7f9L5SB7ABKpJxJOvhoHf0tzwLw/s320/Screen+shot+2011-09-28+at+5.54.46+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318492447125730" style="cursor: pointer; width: 320px; height: 209px; " /></a></div><div><br /></div><div>Moment of truth: (it works!)</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCQM5XWV45IeWNtZ9GgN-304AH09cpOjomLCvyxPGsC69Q8EsMXP2fziizVwXCagZVuOjfv4fl6yJIgXiJEjyqQVVcasB-ZxhsbvI8BfdWWdO5hKtd55vCVzn8JBKtW4K1_BCpmGMQgiY/s1600/Screen+shot+2011-09-28+at+5.54.26+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCQM5XWV45IeWNtZ9GgN-304AH09cpOjomLCvyxPGsC69Q8EsMXP2fziizVwXCagZVuOjfv4fl6yJIgXiJEjyqQVVcasB-ZxhsbvI8BfdWWdO5hKtd55vCVzn8JBKtW4K1_BCpmGMQgiY/s320/Screen+shot+2011-09-28+at+5.54.26+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657317145554718594" style="cursor: pointer; width: 320px; height: 219px; " /></a></div><div>The save files are still there too, and the names are now garbled:</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-K-rrUAH3n-hkKFNHp-7G4GSlZal4tweSx-mTUVyx5qaNWtwVDpu94jrss9laTkRfN5obTWeWJmlQCyy4lmf0yf1XlzIl18N_B22rVZ5J3Wb7OsrxefdD1Nz7PhTkMwEtcWfRp8wfTiI/s1600/Screen+shot+2011-09-28+at+5.55.17+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img style="cursor:pointer; cursor:hand;width: 320px; height: 239px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-K-rrUAH3n-hkKFNHp-7G4GSlZal4tweSx-mTUVyx5qaNWtwVDpu94jrss9laTkRfN5obTWeWJmlQCyy4lmf0yf1XlzIl18N_B22rVZ5J3Wb7OsrxefdD1Nz7PhTkMwEtcWfRp8wfTiI/s320/Screen+shot+2011-09-28+at+5.55.17+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318507181167090" /></a><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGKNI57Xnr0XBOvn-LbZLFHQpRjgMBwYNAj_oghhefds06rd49plCbZHGBX1BGifLNQw4Qk-90zMfG-ozr7goqTPADABMDwCISAhMhC_q5EAPdTBPzs-iq7ZQ5wu3Z0-PAC7VF7Dog3qw/s1600/Screen+shot+2011-09-28+at+5.55.42+PM.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGKNI57Xnr0XBOvn-LbZLFHQpRjgMBwYNAj_oghhefds06rd49plCbZHGBX1BGifLNQw4Qk-90zMfG-ozr7goqTPADABMDwCISAhMhC_q5EAPdTBPzs-iq7ZQ5wu3Z0-PAC7VF7Dog3qw/s320/Screen+shot+2011-09-28+at+5.55.42+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5657318524973464434" style="cursor: pointer; width: 320px; height: 254px; " /></a></div></div>Jonnyboyhttp://www.blogger.com/profile/17452611876879851494noreply@blogger.com1tag:blogger.com,1999:blog-6890593738526520772.post-91687001053608155142011-09-27T22:17:00.000-07:002011-09-27T22:18:00.897-07:00Rust vim syntax and indent files.<div dir="ltr" style="text-align: left;" trbidi="on">
I'm a bit of a vim junkie, and if you're like me, you'll almost definitely want to have your vim configured for the correct rust syntax. Not just for the pretty colors but to let you know <a href="https://github.com/graydon/rust/pull/987#issuecomment-2215956">when you're missing a quote</a>. <br />
<br />
<a href="http://twitter.com/#%21/pcwalton">Patrick Walton</a> must be a vim user as he seems to have written the vim syntax file for rust, You can pull it from the rust source code or from the<a href="https://github.com/graydon/rust/tree/master/src/etc/vim"> git repository</a>, and put it in the relevant vim settings folder (.vim on unix) <br />
<br />
<br />
After copying the files to this folder, add the following line to your vimrc:<br />
<br />
<blockquote>
<span style="font-family: "Courier New",Courier,monospace;">au BufRead,BufNewFile *.rs setfiletype rust</span></blockquote>
<br />
(usually $HOME/.vimrc or $HOME/.gvimrc ). Reload your vim settings or restart vim and open a rust source code file.<br />
<br />
You should see your rust files in all their syntactic highlighted glory.</div>
Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-1023874145168611632011-09-25T20:01:00.000-07:002011-09-25T21:07:12.601-07:00Hello World in Rust<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="https://github.com/graydon/rust">Rust</a> is a low level systems language developed by Mozilla for future embedding into their browser and other tools. I was first made aware of it a year ago on the <a href="http://programming.reddit.com/">programming subreddit</a>, but it looked a little too abstract to be useful.<br />
<br />
I stumbled across it again yesterday and decided to compile the language tool chain and give it another go.<br />
<br />
The language seems to have some very nice functionality, a cross between erlang and C, which may suit my fancy.<br />
<br />
The toolchain was a bit annoying to set up, and I might go harrass the <a href="irc://irc.mozilla.org/%23Rust">#Rust irc channel</a> to see if there is a simpler way to get started.<br />
<br />
In the mean time, here is hello world.<br />
<div style="font-family: "Courier New",Courier,monospace;">
<br /></div>
<div style="font-family: "Courier New",Courier,monospace;">
-- hello-world.rs -- </div>
<div style="font-family: "Courier New",Courier,monospace;">
<br /></div>
<div style="font-family: "Courier New",Courier,monospace;">
use std;<br />
import std::io;<br />
<br />
fn main(argv: [str]) {<br />
<br />
let out = io::stdout();<br />
<br />
out.write_line("Hello world"); <br />
<br />
}</div>
<br />
I compiled it with the command:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">
$ rustc hello-world.rs -o hello-world -L /usr/local/lib/rust/</div>
<br />
<div style="font-family: "Courier New",Courier,monospace;">
$ ./hello-world</div>
Hello world<br />
<br />
Fin.</div>
Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com2tag:blogger.com,1999:blog-6890593738526520772.post-64628761845083229552011-08-25T08:52:00.000-07:002011-08-25T08:52:24.031-07:00Converting to and from hex in Erlang.<div dir="ltr" style="text-align: left;" trbidi="on">
$ erl<br />Erlang R14B03 (erts-5.8.4) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]<br />
Eshell V5.8.4 (abort with ^G)<br /><br />
<br />
<br />
%% The base (16) followed by the hex value (0F), number is returned as a decimal.<br />
<br />
1> <a href="http://www.erlang.org/doc/reference_manual/data_types.html">16#0F.</a><br />15<br />
<br />
<br />
%% lets convert our value back, <br />
<br />
2> <a href="http://www.erlang.org/doc/man/erlang.html#integer_to_list-2">integer_to_list</a>(15, 16).<br />"0F"<br />
<br />
<br />
This is of course covered in the erlang manuals, but Its nice to have it in one place.<br />
<br />
I regularly work in <a href="http://people.redhat.com/anderson/crash_whitepaper/">crash</a> so, I need to do basic math in hex, which I usually do something like this<br />
<br />
3> integer_to_list(16#0F + 16#FF, 16).<br />"10E"<br /></div>
Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com0Brisbane QLD, Australia-27.4709331 153.0235024-28.3726091 151.7600749 -26.5692571 154.28692990000002tag:blogger.com,1999:blog-6890593738526520772.post-74721209473501387782011-08-04T09:37:00.000-07:002011-11-23T15:35:51.017-08:00Starting with rebar, live upgrades and packaging erlang code RPM<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="font-family: inherit;">
Rebar is something that I wish I was taught when I first started using erlang, it will help new programmers get started with erlang without having to do the boring "book-keeping" behind the setup/compile/test/release system. It really is a good way to get started.</div>
<div style="font-family: inherit;">
<br /></div>
<div style="font-family: inherit;">
Some readers may note that there are many rebar tutorials out on the net, however nothing for Red Hat style Linux, and many of them more complicated than they need be.</div>
<br />
<span style="font-family: Arial,Helvetica,sans-serif; font-size: large;">Installing Rebar</span><br />
<br />
I'm lazy and always use a relatively modern Linux distribution. If you're using Fedora 15/16 or Red Hat Enterprise Linux 5 or 6 (with EPEL) you can install rebar with the command<br />
<br />
<pre style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"><code class="bash"><span class="nv">$ sudo yum install erlang-rebar</span></code></span></pre>
<br />
This will also install the necessary erlang runtime/vm and other related tools, correct for whatever architecture your system is running.<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif; font-size: large;">Creating your first erlang project</span><br />
<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">[wmealing@mutalisk wmealing]</span><span style="font-size: x-small;"> mkdir myfirstapp </span><span style="font-size: x-small;"> </span><br />
<span style="font-size: x-small;">[wmealing@mutalisk wmealing] cd myfirstapp </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">[wmealing@mutalisk myfirstapp] rebar create-app appid=something<br />==>; myfirstapp (create-app)<br />Writing src/something.app.src<br />Writing src/something_app.erl</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">Writing src/something_sup.erl</span></div>
<blockquote class="tr_bq">
<br />
If you get the error "ERROR: Template simpleapp not found." when attempting to try the above commands, copy the templates into the user-specific template directory.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">[wmealing@mutalisk myfirstapp] mkdir -p $HOME/.rebar/templates/</span></div>
<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">[wmealing@mutalisk myfirstapp] cp /usr/lib*/erlang/lib/rebar-2/priv/templates/* </span><span style="font-size: x-small;">$HOME/.rebar/templates/</span><span style="font-size: x-small;"> </span></div>
</blockquote>
<br />
Backup cowboy, what just happened ? Rebar created an app based on the templates that are included. These templates are located in the /usr/lib64/erlang/lib/rebar-2/priv/templates/ directory if you're on 64 bit or if you're still using 32 bit erlang, /usr/lib/erlang/lib/rebar-2/priv/templates/ directory. So it creates from the "simpleapp*" named files substituting whatever you supplied for the appid where it is mentioned in the templates.<br />
<br />
Unsurprisingly this created the src directory and a simple "application" with the appid provided on the command line. Can I suggest you be a little bit more creative than my example.<br />
<br />
Even though you have not written any code yet, run compile and test that the skeleton that you have created compiles.<br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif; font-size: large;">Compiling</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp] rebar compile<br />==> myfirstapp (compile)<br />Compiled src/something_app.erl<br />Compiled src/something_sup.erl</span><br />
<br />
And yeah! your first template-style erlang app compiled, and the "beam" code is in the ebin directory. See the project layout so far in the example below.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">[wmealing@mutalisk workspace] tree myfirstapp<br />myfirstapp<br />|-- ebin<br />| |-- something.app<br />| |-- something_app.beam<br />| `-- something_sup.beam<br />`-- src<br /> |-- something_app.erl<br /> |-- something.app.src<br /> `-- something_sup.erl<br /><br />2 directories, 6 files</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
The project so far is pretty much a basic supervisor for your application, this by itself isn't quite enough to be useful. Usually you'd want your application to do something useful. This typically involves creating a "server" of some kind. The most common is the gen_server.<br />
<br />
Many of the other rebar tutorials seem to either enjoy making additional complex files however modern releases of rebar already include templates for a basic server.<br />
<br />
<br />
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: large;">Creating a server </span></div>
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">[wmealing@mutalisk myfirstapp]$ rebar create template=simplesrv srvid=mine_srv</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">==> myfirstapp (create)</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">Writing src/mine_srv.erl</span></span><br />
<br />
This creates a gen_server style server in the <b>src/mine_srv.erl</b> file that you can modify to how you see fit.<br />
<br />
Lets make it greet the user in a stereotypical Australian greeting, for use later when we show hot-code-upgrading in the section "Running the code".<br />
<br />
So, modify <b>src/mine_srv.erl </b>and its existing handle_cast function to print the Aussie greeting to the stdout in the gen_server cast.<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">-export([greet/0]).</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br />greet() -><br /> gen_server:cast(?MODULE, {matchallthethings}).<br /><br />handle_cast(_Msg, State) -><br /> io:format("Gday Mate, how are ya ?~n"), </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"> {noreply, State}.</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<br /></div>
We added the exported "greet" call so we can abstract away the implementation from the caller. We wont test it now, but we'll test it later.<br />
<br />
To have mine_srv be supervised/started by the application, the something_sup (supervisor) will need to be instructed to start mine_srv as a worker.<br />
<br />
In <b>src/something_sup.erl</b> lets change the init function to start the mine_srv worker.<br />
<span style="font-size: x-small;"><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">init([]) -></span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> MineSrvWorker = ?CHILD(mine_srv , worker), </span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> Children = [ MineSrvWorker ], </span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> RestartStrategy = { one_for_one , 4, 9600},</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> {ok, { RestartStrategy, Children } }. </span></span><br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: large;">Cleaning up (make clean) </span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
</div>
Just so we can test how it works, issue the command rebar clean and rebar compile to compile the supervisor and your new gen_server server. Just as you can compile with erlang, you can also use rebar to "make clean" and recompile as you would when any project is changed.<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp]$ rebar clean<br />==> myfirstapp (clean)<br />[wmealing@mutalisk myfirstapp]$ rebar compile<br />==> myfirstapp (compile)<br />Compiled src/something_app.erl<br />Compiled src/mine_srv.erl<br />Compiled src/something_sup.erl</span><br />
<br />
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: large;">Running tests </span></div>
<br />
You may or of running unit tests or integration tests, rebar supports a few kind of tests, but i'll kick it off with eunit to get things started.<br />
<br />
Rebar looks at eunits configuration options through a file named rebar.config file. The erlang-rebar package puts one in /usr/share/doc/erlang-rebar-2/rebar.config.sample by default, but you should be able to make an empty one with just the following lines in it.<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp]$ cat rebar.config</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;"> </span><br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">%% Erlang compiler options</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">{erl_opts, [{i, "test"}, {src_dirs, ["src"]},</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"> {platform_define,</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"> "(linux|solaris|freebsd|darwin)", 'HAVE_SENDFILE'},</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"> {platform_define, "(linux|freebsd)", 'BACKLOG', 128}]}.</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">{eunit_opts, [verbose, {report, {eunit_surefire, [{dir, "."}]}}]}.</span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">{cover_enabled, true}.</span></div>
<br />
This line ensures that eunit will include the test directory in its locations to search for "included" files.<br />
<br />
Create a test directory<br />
<br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp]$ mkdir test</span><br />
<br />
For each of the parts of your project you wish to test, add something similar to this at the end. For my example I append the below to mine_srv.erl.<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">-ifdef(TEST).<br />-include("something_tests.hrl").<br />-endif.</span></div>
<br />
The HRL file extention is uncommon and is intended to show that the contents of the file should be included in another erl file.<br />
<br />
Next create the test/something_tests.hrl file. This should contain standard <a href="http://www.erlang.org/doc/man/eunit.html">eunit tests</a>. The name something_tests.hrl should accurately reflect what the "something" is that you are testing. It is a good practice to name it something related to the module or server and type of testing you are doing. Here is a quick example of a very simple test in the the test/something_tests.hrl file.<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;">-include_lib("eunit/include/eunit.hrl").<br /><br />my_test() -><br /> ?assert(0 + 0 =:= 0).<br /><br />my_second_test() -><br /> ?assert(0 + 1 =:= 1 ).<br /><br />simple_test() -><br /> ?assert(1 + 2 =:= 3).</span></div>
<br />
To run these tests run the command:<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp]$ rebar eunit<br />==> myfirstapp (eunit)<br />======================== EUnit ========================<br />module 'something_sup'<br />module 'mine_srv'<br /> mine_srv: my_test...ok<br /> mine_srv: my_second_test...ok<br /> mine_srv: simple_test...ok<br /> [done in 0.008 s]<br />module 'something_app'<br />=======================================================<br /> All 3 tests passed.</span><span style="font-family: inherit; font-size: x-small;"><br /></span></div>
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">Cover analysis: /home/wmealing/Documents/workspace/myfirstapp/.eunit/index.html</span><span style="font-family: "Courier New",Courier,monospace; font-size: x-small;"><br /></span><br />
<br />
A source code coverage analysis can be found in the the url above.<br />
I'll leave it as an exercise to the reader to figure out what it shows when tests go wrong.<br />
<br />
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: large;">Creating Documentation </span></div>
<br />
Rebar can build documentation on your API, or whatever additional information you wish to provide assuming you make it happen in the<a href="http://www.erlang.org/documentation/doc-5.4.2.1/lib/edoc-0.1/doc/html/index.html"> edoc format</a>.<br />
<br />
Edoc requires writing documentation in code. It uses the @something style tagging and immediately documents the function right below it. For example:<br />
<br />
<pre><code> %% @doc Greets the user on the standard output, returns nothing</code></pre>
<pre><code> greet() -></code></pre>
<pre><code> gen_server:cast(?MODULE, {matchallthethings}). </code></pre>
<pre><code> </code></pre>
<pre style="font-family: inherit;"><span style="font-size: small;">The tags must follow a comment (%%) followed by a space starting on the first character of the line.</span></pre>
<pre><code> </code></pre>
<br />
There are a bunch of supported tags, the <a href="http://www.erlang.org/doc/apps/edoc/chapter.html">edoc welcome page</a> has a bunch more on the topic. Rebar makes it easy to generate html documentation from your code by running the command<br />
<div style="font-family: "Courier New",Courier,monospace;">
<span style="font-size: x-small;"><br /></span></div>
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp]$ rebar doc<br />==> myfirstapp (doc)</span><span style="font-size: x-small;"><br /></span><br />
<br />
Stylized html format pages will appear in the docs subdirectory, you can regenerate them at any time, but this will destroy any changes made to the files in the doc directory.<br />
<br />
<br />
<div style="font-family: Arial,Helvetica,sans-serif;">
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: large;">Running your code.</span></div>
</div>
<br />
One thing that rebar does not do, is run your application for you. You will need to run it yourself. Fortunately its actually pretty easy.<br />
<br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp]$ erl -pa ebin/<br />Erlang R14B03 (erts-5.8.4) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:false]</span><br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">1> application:start(something).<br />ok</span><br />
<br />
Now to test the greet function we wrote earlier:<br />
<br />
2> mine_srv:greet().<br />
Gday Mate, how are ya ?<br />
ok<br />
<br />
<br />
<span style="font-size: large;">Building the first release</span><br />
<br />
It is rarely the case that the software will only run on the system that it is developed for. The smart cookies at Ericsson and rebar know this and have a release mechanism that can be used to deploy the "whole stack" as a release. This includes all the files, applications and libraries that would be used to run the application.<br />
<br />
Rebar simplifies the release requirements, but its still a little involved to "get right". Lets walk through using the existing sample to build a first release to deploy on a system.<br />
<br />
<div class="highlight">
<pre><span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp]$</span><span style="font-family: "Courier New",Courier,monospace; font-size: x-small;"><code></code></span><code class="console"> mkdir rel
</code><span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp]$</span><span style="font-family: "Courier New",Courier,monospace; font-size: x-small;"><code></code></span><code class="console"> <span class="nb">cd </span>rel/<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">
</span></code></pre>
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">[wmealing@mutalisk myfirstapp]$</span><span style="font-family: "Courier New",Courier,monospace; font-size: x-small;"><code> </code>rebar create-node nodeid=something_node</span><pre><code class="console"><span class="gp"><span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">==> myfirstapp (create-node)
Writing reltool.config
Writing files/erl
Writing files/nodetool
Writing files/something_node
Writing files/app.config
Writing files/vm.args</span></span></code></pre>
<pre><code class="console"><span class="gp">
</span></code></pre>
</div>
The name here shouldn't be labelled after a release codename or version but the "service" or daemon name that you'd like to start the script with.<br />
<br />
<br />
<span style="font-size: large;">Hot upgrades</span><br />
<br />
@fixme This is something I also plan to cover another day.<br />
<br />
<br />
<span style="font-size: large;">Wrapping it up.</span><br />
<br />
So rebar is a very useful tool to add to your arsenal, and if it is used for all your projects it will make a good head start on creating standardized, simple maintainable code that other (seasoned) erlang programmers should be familiar with.<br />
<br />
<br />
<span style="font-size: large;">Footnotes</span><br />
<br />
I know there could be a better project layout for this, but with the mindset of keeping it simple, I've negated mentioning multiple applications and some of the finer points of migrating state in the gen_server between updates, this should be considered when you update your erlang application. <br />
<br />
<br />
</div>Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-2486726877159807952010-09-26T01:42:00.000-07:002010-09-26T02:28:11.490-07:00Apple IIgs 1mb memory expansion to 4mb conversionIn the past a post to comp.sys.apple2 referred to this site: http://www.apple2gs.republika.pl/ which documents how someone converted a common 1mb apple memory expansion card to 4mb using 30 pin simms. Recently, I also found another guy who did the same thing but not using 8/9 chip simms http://www.apple2pl.us/ .<div><br /></div><div>Since I do not have any 30 pin simms lying around I did not undertake this conversion. Recently I found some simms on ebay for under $10. I decided that maybe it's time to try this out.</div><div><br /></div><div>This is how a card would look before the conversion:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9Li1yiBLkPuL-FagQqUf3CmN2JxqKIlr7TVqyAPyH4l75WLJT4yotMs_DvywIh132dASt2rImQhLye-cq6X9es7TZbUJXk8jFodeQ0BC5HehHyr2TEv7XhzMOSAbKU1iwxgap8gWVrMk/s1600/apple1mb.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9Li1yiBLkPuL-FagQqUf3CmN2JxqKIlr7TVqyAPyH4l75WLJT4yotMs_DvywIh132dASt2rImQhLye-cq6X9es7TZbUJXk8jFodeQ0BC5HehHyr2TEv7XhzMOSAbKU1iwxgap8gWVrMk/s320/apple1mb.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5521144306720925522" style="cursor: pointer; width: 320px; height: 124px; " /></a></div><div><br /></div><div>The directions said to remove all the dram chips, sockets and capcacitors:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHOmUZzubyIxDHUv42bOeTjmfQaZRakerE45A6RefNQy_4OEwFIIuCXPUV6ap4mnQ5SA_4PuwZ9kVJnGf6RD-wzASsLbwZGfTpSkb3B1PwfWJzUH5VjeFUwxJS-v2b9UsFyjqsrQIx8k0/s1600/IMG_4729.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHOmUZzubyIxDHUv42bOeTjmfQaZRakerE45A6RefNQy_4OEwFIIuCXPUV6ap4mnQ5SA_4PuwZ9kVJnGf6RD-wzASsLbwZGfTpSkb3B1PwfWJzUH5VjeFUwxJS-v2b9UsFyjqsrQIx8k0/s320/IMG_4729.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521147908779845202" style="cursor: pointer; width: 320px; height: 214px; " /></a></div><div>Here are the simms we're going to use:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpM_58uWtkIYNukMpIiF4LRglTos08QbqgZDS6utUcILeKK_zpNdEkfKLrroa9tUxXih5cnsupVP_QfLYl7Vf53WsKLGrNuJPrL8JujwiFitnhipLZNYrKGgciQnhT46G1XAwVqYmguE/s1600/IMG_4732.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnpM_58uWtkIYNukMpIiF4LRglTos08QbqgZDS6utUcILeKK_zpNdEkfKLrroa9tUxXih5cnsupVP_QfLYl7Vf53WsKLGrNuJPrL8JujwiFitnhipLZNYrKGgciQnhT46G1XAwVqYmguE/s320/IMG_4732.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521147917056222450" style="cursor: pointer; width: 320px; height: 214px; " /></a></div><div>We use double sided tape to attach the simms:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9WP-vuXlpvHkhSKgNNxGGABZZR7Lx7s9-mWy5qkgBbrw7AwmHu_HcIAtBAOuC4VxvT_ws7Ielvw0xBiq9YIRgc1I0qenURsysrLsvQzuHWCP6C6QemE1ljyoh7ulapQg7wa1B19DjvPk/s1600/IMG_4733.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9WP-vuXlpvHkhSKgNNxGGABZZR7Lx7s9-mWy5qkgBbrw7AwmHu_HcIAtBAOuC4VxvT_ws7Ielvw0xBiq9YIRgc1I0qenURsysrLsvQzuHWCP6C6QemE1ljyoh7ulapQg7wa1B19DjvPk/s320/IMG_4733.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521149120766235954" style="cursor: pointer; width: 320px; height: 214px; " /></a></div><div>Then follow the schematic diagram. This is how it looks after the address lines are hooked up:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCcrFhEPhcmiLZcU6Ms3IOXylxnUaw3wJTiDTNeS7JeP1l_5ohFFOgyxoDfq7Panl6SHNh9f1j76BpsZkI5d6AHyp8AOYtPgb_hI5OCa-h_-jUTgHyPZ_EY7nZPj8uZ0JRxgbjoNAHatE/s1600/IMG_4735.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCcrFhEPhcmiLZcU6Ms3IOXylxnUaw3wJTiDTNeS7JeP1l_5ohFFOgyxoDfq7Panl6SHNh9f1j76BpsZkI5d6AHyp8AOYtPgb_hI5OCa-h_-jUTgHyPZ_EY7nZPj8uZ0JRxgbjoNAHatE/s320/IMG_4735.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521149127244595442" style="cursor: pointer; width: 320px; height: 214px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4D7iGDL_qDX2kx1z1gSNlGokKD6lfhUyJx0GYlb2JvCcwA6PHqLojg6wZtFCJeUpUkvR9O870geqLXYvfwXm7QkvoBEzQgYBzOkpqkNPdu-oKl2N16EW2X-QXedKR0n1c1X7TwqM9oes/s1600/IMG_4736.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4D7iGDL_qDX2kx1z1gSNlGokKD6lfhUyJx0GYlb2JvCcwA6PHqLojg6wZtFCJeUpUkvR9O870geqLXYvfwXm7QkvoBEzQgYBzOkpqkNPdu-oKl2N16EW2X-QXedKR0n1c1X7TwqM9oes/s320/IMG_4736.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521149132552836018" style="cursor: pointer; width: 320px; height: 214px; " /></a></div><div>After several hours it's finally finished:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4F53vQ4YI2_tjxzUiiEtSz1E-XECJ2wSAk2KsdfNCYQbKOyFHzWruzRY6pq-Bt5K8uIBGAZsNjwGluC1nY9uEHOSXGtNBnQs-DLnBO_xbrrjPhvFZRtsX-l2SsXrAobNHKBluh_VcpVg/s1600/DSC00295.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4F53vQ4YI2_tjxzUiiEtSz1E-XECJ2wSAk2KsdfNCYQbKOyFHzWruzRY6pq-Bt5K8uIBGAZsNjwGluC1nY9uEHOSXGtNBnQs-DLnBO_xbrrjPhvFZRtsX-l2SsXrAobNHKBluh_VcpVg/s320/DSC00295.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150600489640722" style="cursor: pointer; width: 320px; height: 240px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipE0lcCt5H8r3LM7Y77RMe2usJSnorKdPIWVjzRxIsdbPVBg8D-mClD_MUqsTBBG8PGgJezoHHfQ7tTD8ybvs5Wc9U7i_hJbMgFjlad59KDHcZ9cpaVUAAZfL2ueCi8a2llrdxkexKecQ/s1600/DSC00294.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipE0lcCt5H8r3LM7Y77RMe2usJSnorKdPIWVjzRxIsdbPVBg8D-mClD_MUqsTBBG8PGgJezoHHfQ7tTD8ybvs5Wc9U7i_hJbMgFjlad59KDHcZ9cpaVUAAZfL2ueCi8a2llrdxkexKecQ/s320/DSC00294.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150351384358978" style="cursor: pointer; width: 320px; height: 240px; " /></a></div><div><br /></div><div>Lets plug it in:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjfOK3Hk9OMLS2HkAv-_FEOFkGNQzcKpIqDILuTLifz0UY3QCWXd3mpD7SZmdZiUaoAT843djbMh5sWVeIA4qPZf8AYcy0IR75xDAdEwOTPcxVfd5U4_Ms4p8Eq7GpHs1mSeh32kMfDgM/s1600/DSC00291.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjfOK3Hk9OMLS2HkAv-_FEOFkGNQzcKpIqDILuTLifz0UY3QCWXd3mpD7SZmdZiUaoAT843djbMh5sWVeIA4qPZf8AYcy0IR75xDAdEwOTPcxVfd5U4_Ms4p8Eq7GpHs1mSeh32kMfDgM/s320/DSC00291.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150348481647266" style="cursor: pointer; width: 320px; height: 240px; " /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4tZIkWO4QKPURtJJAqbyz63_x_6mmCCeaNkqZWgJoKa2jLMCi5zaXA1ek6SPUFt0Mh7qZXPGqiSbd0hgJu0gMGRFSOvjkLYtbBpSfWu6XmvzHuvNmUXVuO1sRbNDU7EuRa11DZZDW7JQ/s1600/DSC00290.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4tZIkWO4QKPURtJJAqbyz63_x_6mmCCeaNkqZWgJoKa2jLMCi5zaXA1ek6SPUFt0Mh7qZXPGqiSbd0hgJu0gMGRFSOvjkLYtbBpSfWu6XmvzHuvNmUXVuO1sRbNDU7EuRa11DZZDW7JQ/s320/DSC00290.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150342310782610" style="cursor: pointer; width: 320px; height: 240px; " /></a></div><div>Running the memory testing program from: http://apple2.info/downloads?dl_cat=6</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinw9r6_h6oYqHgq4_O30Qp2uaNL6htSMC6hh2HJ49a8wqvD4XxNhZo6dQPJ7EwH_oS-dW9oep6pmBkT96NPPvJUUnFAUFkSJX7oCL66xLyLoMf30PXb4eDfIDOc_e8nEWgkVHSbYwera0/s1600/DSC00289.JPG"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinw9r6_h6oYqHgq4_O30Qp2uaNL6htSMC6hh2HJ49a8wqvD4XxNhZo6dQPJ7EwH_oS-dW9oep6pmBkT96NPPvJUUnFAUFkSJX7oCL66xLyLoMf30PXb4eDfIDOc_e8nEWgkVHSbYwera0/s320/DSC00289.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5521150338394458114" style="cursor: pointer; width: 320px; height: 240px; " /></a></div><div><br /></div><div>I'm leaving this running overnight to see if it produces any errors.</div>Jonnyboyhttp://www.blogger.com/profile/17452611876879851494noreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-69841441076515325452010-07-02T21:43:00.000-07:002010-07-02T22:43:33.059-07:00Apple IIc plus 240V modification revisitedIn the previous modification I essentially followed Jorge's mod:<div>http://homepage.mac.com/jorgechamorro/a2things/a2c+Web/index.html</div><div>and adapted it with locally available parts.</div><div><br /></div><div>This has one big drawback. It generates a lot of heat. It is also very inefficient. The voltage is dropped down by letting it go as heat. With the case closed, it may (I did not want to try) be possible to reach a temperature that can warp, deform, or quickly yellow the area of the case near the power supply.</div><div><br /></div><div>I thought about modifying the switching power supply the "proper" way, but without knowing the actual design of the original supply, plus my limited knowledge of switching power supplies, I thought this may not be the way for me to go.</div><div><br /></div><div>James Littlejohn have made a lot of adaptors for ATX power supplies for use with Apple II's. One of the items he has is the LittlePower IIc+. This handy device, plus a small enough ATX supply should be enough to run the IIc+ with no problems.</div><div><br /></div><div>After waiting a few weeks for the USPS to deliver my mail, I finally got all the parts I need. Earlier today, I opened up the IIc+ to to a quick test:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiyIpOwOFZPqpjMrpk8WHqaeMFy-3ZkMo7fxRjbMldmBIi8uMeVAJpSJ6EH2ElA24rtA0_l5yTPVWV9WdxBoEdh7GE3SnR-H32C4YPBRE2W3ZmSiSN45pKCnUCfp-r4yZT4XqJXhXvbj0/s1600/Picture+97.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiyIpOwOFZPqpjMrpk8WHqaeMFy-3ZkMo7fxRjbMldmBIi8uMeVAJpSJ6EH2ElA24rtA0_l5yTPVWV9WdxBoEdh7GE3SnR-H32C4YPBRE2W3ZmSiSN45pKCnUCfp-r4yZT4XqJXhXvbj0/s320/Picture+97.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489539784616249650" style="cursor: pointer; width: 320px; height: 290px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLU8ybkZhnwrFVXpBcKXzty1wJiVL1v1drPVst2v5h1LxcayQe4xy9TJy3t7DkmS8NBuCp-lXVdTwVEb8JOZPKVCQH202e9J8gBIlCfODiiTP7uEEu0HlXPKwAWOVDWa1GKqzW7ttHh50/s1600/Picture+98.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLU8ybkZhnwrFVXpBcKXzty1wJiVL1v1drPVst2v5h1LxcayQe4xy9TJy3t7DkmS8NBuCp-lXVdTwVEb8JOZPKVCQH202e9J8gBIlCfODiiTP7uEEu0HlXPKwAWOVDWa1GKqzW7ttHh50/s320/Picture+98.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489540319550146018" style="cursor: pointer; width: 304px; height: 320px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3qlb7DtsabbxK1YVnRxF1g8duxQvaUs3ExMZJHQezBVRf9Fcb9LlGq0BRgmLYpvBIWjMh0AOfxUALKKE5JqS4TKKZ_jiPJqpL0d8LID4nDXSrMwL_Atib3pO-sIgnIbAqeFiCEmwpa6A/s1600/Picture+96.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3qlb7DtsabbxK1YVnRxF1g8duxQvaUs3ExMZJHQezBVRf9Fcb9LlGq0BRgmLYpvBIWjMh0AOfxUALKKE5JqS4TKKZ_jiPJqpL0d8LID4nDXSrMwL_Atib3pO-sIgnIbAqeFiCEmwpa6A/s320/Picture+96.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489539341691484530" style="cursor: pointer; width: 320px; height: 214px; " /></a></div><div>After getting it to work, I proceeded to taking the power supply and the power brick apart:</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9Nnlz9ZU4y1L7nPBTjKwzP52vyPSix4aQ5aiN6WgxDtZusru_h-VZQ2caJ7KUugNAXJHm5d1LcPnK58a99YAFTqgHLEOCQd6eSS7EtvN_PaiB_CpwUqMJgX5l2_8ye5QjrqDX55IsTHs/s1600/Picture+99.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9Nnlz9ZU4y1L7nPBTjKwzP52vyPSix4aQ5aiN6WgxDtZusru_h-VZQ2caJ7KUugNAXJHm5d1LcPnK58a99YAFTqgHLEOCQd6eSS7EtvN_PaiB_CpwUqMJgX5l2_8ye5QjrqDX55IsTHs/s320/Picture+99.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489542497375557954" style="cursor: pointer; width: 253px; height: 320px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE_UnEutJAoRKpKG1n1RhwheD1e09nCg3hQjTWYjpIl9XOqXOeoOO7mCGL9pfMLzhudzcLwY4SClQDMVAA_jQN1BRldYcfOZWeLmHHmTDlE1YKQv2o2lpl6voJ5hMlcwp_r4GW9x4xs_U/s1600/Picture+100.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgE_UnEutJAoRKpKG1n1RhwheD1e09nCg3hQjTWYjpIl9XOqXOeoOO7mCGL9pfMLzhudzcLwY4SClQDMVAA_jQN1BRldYcfOZWeLmHHmTDlE1YKQv2o2lpl6voJ5hMlcwp_r4GW9x4xs_U/s320/Picture+100.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489542514302484354" style="cursor: pointer; width: 320px; height: 262px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisTA6Hs1H7l16ZSjjnqyRYGX3wfjXK_rs382hXu2sw2yh2qb-IV2_W7whHu6sECuWx9SwltxEpOeZuPeA6Elq4ZMmeTNkatOWwlrqE9nP6IkBmoSCphn2FyOt4DNBIQmbFJe1n8saFJIc/s1600/Picture+101.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisTA6Hs1H7l16ZSjjnqyRYGX3wfjXK_rs382hXu2sw2yh2qb-IV2_W7whHu6sECuWx9SwltxEpOeZuPeA6Elq4ZMmeTNkatOWwlrqE9nP6IkBmoSCphn2FyOt4DNBIQmbFJe1n8saFJIc/s320/Picture+101.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489542527041966450" style="cursor: pointer; width: 320px; height: 178px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX5MxY_x5Lb_4gjpHmcy_oaINj3wbDDR3VLi5zz2brRqHdNGnwcPAna_LPO3Wh5xlR3g77P3jBIRIV6eRTRGWeOZBSh5zyoUiWJtrLMMGnkC-YkS6FVEZIwIv4g3y-gRRNbYwax3p3X8E/s1600/Picture+102.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX5MxY_x5Lb_4gjpHmcy_oaINj3wbDDR3VLi5zz2brRqHdNGnwcPAna_LPO3Wh5xlR3g77P3jBIRIV6eRTRGWeOZBSh5zyoUiWJtrLMMGnkC-YkS6FVEZIwIv4g3y-gRRNbYwax3p3X8E/s320/Picture+102.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489542533651670450" style="cursor: pointer; width: 216px; height: 320px; " /></a></div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX5MxY_x5Lb_4gjpHmcy_oaINj3wbDDR3VLi5zz2brRqHdNGnwcPAna_LPO3Wh5xlR3g77P3jBIRIV6eRTRGWeOZBSh5zyoUiWJtrLMMGnkC-YkS6FVEZIwIv4g3y-gRRNbYwax3p3X8E/s1600/Picture+102.png"></a>As you can see the power brick is way smaller than the original power supply. This will fit nicely into the original metal shell, and still have room for the LittlePower IIc+ and the picopsu.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinM9Of7llQtjkhT467BxWbnqHpVFCqAFS6kwq0WMUhzTxaW1k2O3qQpE_e6QVmNZP9g4fwjWUt-OgtV_QBoeibS1Xwn9BbyhezAuaUNGNtV8uOYAXBkVk1HWo5NzdxeG9OjvQM1DrtB8I/s1600/Picture+103.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinM9Of7llQtjkhT467BxWbnqHpVFCqAFS6kwq0WMUhzTxaW1k2O3qQpE_e6QVmNZP9g4fwjWUt-OgtV_QBoeibS1Xwn9BbyhezAuaUNGNtV8uOYAXBkVk1HWo5NzdxeG9OjvQM1DrtB8I/s320/Picture+103.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489544325911612434" style="cursor: pointer; width: 320px; height: 220px; " /></a></div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinM9Of7llQtjkhT467BxWbnqHpVFCqAFS6kwq0WMUhzTxaW1k2O3qQpE_e6QVmNZP9g4fwjWUt-OgtV_QBoeibS1Xwn9BbyhezAuaUNGNtV8uOYAXBkVk1HWo5NzdxeG9OjvQM1DrtB8I/s1600/Picture+103.png"></a>Now it's time to wire the picopsu directly to the power brick. Note that I have kept the shell and all the parts in case I want to put it back together. Or in case I decide I want to turn the IIc+ into a portable device with battery, etc built in. There is a grounding board at the bottom of the unit, it wasn't too hard to desolder this:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB0cYU1PtQCS0__iLIlJFhira-m73LNsMrmbLNf1H-G-J6krhX8zehU6GlIK76rmeMwiMapyGQDuP-6I4SgF65v0wZJNzbYuOtWlt8U0mB22Hb2Im05G38SvCDtZl5BsfPCx-sP6mM0IU/s1600/Picture+104.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB0cYU1PtQCS0__iLIlJFhira-m73LNsMrmbLNf1H-G-J6krhX8zehU6GlIK76rmeMwiMapyGQDuP-6I4SgF65v0wZJNzbYuOtWlt8U0mB22Hb2Im05G38SvCDtZl5BsfPCx-sP6mM0IU/s320/Picture+104.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489544346234773986" style="cursor: pointer; width: 320px; height: 205px; " /></a></div><div>This is the actual board of the power brick. The AC goes into the 3 big pads near the right side:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1oOGM_r_MLiwRS_sT8Cg3lk5-BWHsfo1b80cmNPqzLXeo9BEgRo3CDmI85ohM9vrepHe_0GykY8B0O0mS97cAhKX__Mo2kA5Tc5WWY0b5I1jnh4L7UsXKsPfg2tursIzWAMF-DiApW68/s1600/Picture+106.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1oOGM_r_MLiwRS_sT8Cg3lk5-BWHsfo1b80cmNPqzLXeo9BEgRo3CDmI85ohM9vrepHe_0GykY8B0O0mS97cAhKX__Mo2kA5Tc5WWY0b5I1jnh4L7UsXKsPfg2tursIzWAMF-DiApW68/s320/Picture+106.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489544378930518162" style="cursor: pointer; width: 320px; height: 250px; " /></a></div><div>Unfortunately for me, the LittlePower IIc+ doesn't fit into the metal shell in its intended location over the hole. It must have been expected that you will be removing the internal power supply to use this device. If I remove the power supply, there will be nothing to hold the switch and the IEC connector at the back. I thought that maybe I could extend the connector with some wires:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5ueMW5DHgu6Yp9418K6n01aQH3YboR1123KBQa9aFjr92QNL37VaRSiXMSgrxQtPyFNP3nWo-Fws4cO8sO70pV3PTO4cCfNHldO5HDzT8xQFJfH6sN1j4uTnSi3YiqhB5nnpdk4m86Gs/s1600/Picture+107.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5ueMW5DHgu6Yp9418K6n01aQH3YboR1123KBQa9aFjr92QNL37VaRSiXMSgrxQtPyFNP3nWo-Fws4cO8sO70pV3PTO4cCfNHldO5HDzT8xQFJfH6sN1j4uTnSi3YiqhB5nnpdk4m86Gs/s320/Picture+107.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489544398555916002" style="cursor: pointer; width: 320px; height: 226px; " /></a></div><div>Ok looking good.</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWEBe1hP61K2LaA6u1WznyISW_MdbUzHG2M-G2M2M2cQeWs-wCcmOTYthNNNhSKb1o-cslR8axcEtUC-oSdL4zsX0jLnzypD73gbWVLIsU_8rCQ3X4-fF1MtKpKZQzkwBRsQa8eQYit0A/s1600/Picture+108.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWEBe1hP61K2LaA6u1WznyISW_MdbUzHG2M-G2M2M2cQeWs-wCcmOTYthNNNhSKb1o-cslR8axcEtUC-oSdL4zsX0jLnzypD73gbWVLIsU_8rCQ3X4-fF1MtKpKZQzkwBRsQa8eQYit0A/s320/Picture+108.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548582178557154" style="cursor: pointer; width: 320px; height: 180px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjablXUOSDDr51DmFIORwSwB4lVtWA8u9kulugy5R3ZjiWotQJzcNTRBGAsOkufSxXb3OUdqtQBsNh6qulEdpVnt_JDc9RBmCwDWpqfLP7SoB1tFwxaTNVXc7bS1Jq73VyHGh91Au-ukOk/s1600/Picture+109.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjablXUOSDDr51DmFIORwSwB4lVtWA8u9kulugy5R3ZjiWotQJzcNTRBGAsOkufSxXb3OUdqtQBsNh6qulEdpVnt_JDc9RBmCwDWpqfLP7SoB1tFwxaTNVXc7bS1Jq73VyHGh91Au-ukOk/s320/Picture+109.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548606355633410" style="cursor: pointer; width: 320px; height: 190px; " /></a></div><div>After putting electrical tape on the parts that can potentially touch the case, including the ATX pins, I am now able to close the case: (if you look carefully you can actually see the green LED of the power brick when the unit is on)</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4FXWKpkeE1oJrX89aSGhoPCtxPrfBH4HakMvasWasZt3hYTEKNPx-VsQxBtWH_g9eU25mavC9cz7wfZCCl-j_2DlcJ-dE413eGrZdaFLV3DTmD-VZYBw5SPvtDMo4xWg_47Qp5TbR7OU/s1600/Picture+110.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4FXWKpkeE1oJrX89aSGhoPCtxPrfBH4HakMvasWasZt3hYTEKNPx-VsQxBtWH_g9eU25mavC9cz7wfZCCl-j_2DlcJ-dE413eGrZdaFLV3DTmD-VZYBw5SPvtDMo4xWg_47Qp5TbR7OU/s320/Picture+110.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548629801888690" style="cursor: pointer; width: 219px; height: 320px; " /></a></div><div><br /></div><div>Finally I can close the whole case:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUNr-hS-lN70dMP4rYT4FFTAG4Wq41KH-0X9U3JHS0KHCUQ5ze9orHrhf-QWHvpgZFaTQgEcQhzDM10-9sfiHz_rCZf1mBep5aNPxIrE3IGA2BCuUpvEvZqmcbOl1iOZCYYzSTu6pmres/s1600/Picture+111.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUNr-hS-lN70dMP4rYT4FFTAG4Wq41KH-0X9U3JHS0KHCUQ5ze9orHrhf-QWHvpgZFaTQgEcQhzDM10-9sfiHz_rCZf1mBep5aNPxIrE3IGA2BCuUpvEvZqmcbOl1iOZCYYzSTu6pmres/s320/Picture+111.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548645458142258" style="cursor: pointer; width: 320px; height: 273px; " /></a></div><div><br /></div><div>Run a short Applesoft program:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqddv5NHcDMMFUV5tdd3S_9p4v7D7Xs7VHNpevTYCD5yvcnGTt1NxKmm8Y9cEdw2I15ws3RkSVbnj7OTwVhLmcKua01vaupsCf_MMlvbMgVVnNyoeUY9zdmK2Lyir5mwxkPpo53qOEIbg/s1600/Picture+112.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqddv5NHcDMMFUV5tdd3S_9p4v7D7Xs7VHNpevTYCD5yvcnGTt1NxKmm8Y9cEdw2I15ws3RkSVbnj7OTwVhLmcKua01vaupsCf_MMlvbMgVVnNyoeUY9zdmK2Lyir5mwxkPpo53qOEIbg/s320/Picture+112.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5489548660115824306" style="cursor: pointer; width: 320px; height: 250px; " /></a></div><div><br /></div><div>I have left both apple keys held down to run a continous self test. So far it's been 3 hours and I don't feel too much heat (next to none) out of the power supply. I may or may not revisit this yet again. I might decide to power the unit with batteries. There is still room on both sides of the 3.5" floppy drive for other things so maybe I may be able to leave the brick internal.</div>Jonnyboyhttp://www.blogger.com/profile/17452611876879851494noreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-180729803658430672010-06-04T04:26:00.000-07:002010-06-12T05:31:50.148-07:00iPod touch repairI recently came into possession of 2 ipod touch units. One is a 32Gb 2nd gen, the other an 8Gb 3rd gen (which is essentially same as the 2nd gen).<div><br /></div><div>The first unit had a snapped ribbon cable. The previous owner attempted to replace the touch screen and ended up breaking the cable. To make things worse, the screen looks like it is "white on black". The midframe (plastic stuff) was also missing a big chunk of.</div><div><br /></div><div>Off to ebay to get:</div><div>2nd gen touch screen</div><div>mid frame</div><div>2nd gen LCD</div><div><br /></div><div>In the meantime I had a look at the 8Gb 3rd gen unit. Looks like this unit has never been opened, and the only thing really wrong with it is the bent pins in the dock connector. While I waited for the parts to arrive, I thought I'd just take the parts from this unit and get the 32Gb working. I transferred the LCD first, then the touch screen + midframe. After using a lens blower to blow away all the dust and brushing a bit with a lens brush, I closed up the unit. This unit is working very well, but it has a very short battery life. I just then added a battery to the list of parts. I didn't get a chance to take pictures of this unit, but since I moved all the broken parts to the other unit, I will take pictures when I do that.</div><div><br /></div><div>The 2nd unit is a 8Gb 3rd gen unit (actually a 2nd gen unit).</div><div>After removing the LCD, this is what's inside</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoQu9CzJxh87Ekct9SVcNCZFL8RM1FcOTB6URWB99TjRPfqFDOayVW7YBmGIt84JMwFCFzDeCsiywJqSdmo0X2DBC_VRM3YtCvB571vqcCpfeVnmr8NtzxNM2xNFIQsXVMpGhm6QcQJ4w/s1600/Picture+76.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoQu9CzJxh87Ekct9SVcNCZFL8RM1FcOTB6URWB99TjRPfqFDOayVW7YBmGIt84JMwFCFzDeCsiywJqSdmo0X2DBC_VRM3YtCvB571vqcCpfeVnmr8NtzxNM2xNFIQsXVMpGhm6QcQJ4w/s320/Picture+76.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480333188591815778" style="cursor: pointer; width: 316px; height: 320px; " /></a></div><div><br /></div><div>And after removing the metal shield (desoldered the 2 blobs on both sides and pried up the metal clips) we see the dock connector's completely bent pins</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi97lFfYFINk2DqhLLaXp17-raTkKr-XfpSXfaJ0-LNUJzfqUDxdQM7iWPix6xFRd81fbZH4RhtgIDwuFSs8Iyuu5zCQDID_-KfuKWCGhqphYbOdtST8ITfnLSKOizzsjGSKZJ_MbV1w1E/s1600/Picture+77.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi97lFfYFINk2DqhLLaXp17-raTkKr-XfpSXfaJ0-LNUJzfqUDxdQM7iWPix6xFRd81fbZH4RhtgIDwuFSs8Iyuu5zCQDID_-KfuKWCGhqphYbOdtST8ITfnLSKOizzsjGSKZJ_MbV1w1E/s320/Picture+77.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480333207317422498" style="cursor: pointer; width: 320px; height: 281px; " /></a></div><div>At this point, I was thinking of what to do with it. I could desolder the whole connector and replace it with one from one of my old broken ipod minis. But this means using a SMD rework station to heat the whole area potentially blowing off some of the nearby (tiny) components. I first checked if it was possible to straighten the pins. Using a small screwdriver I carefully "combed" the pins. This is the result:</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNToiMGScu4Wz77sPW4IZgciDRhVjKNNwzaIem-uEQi1A9DfQchUOM5h-iR89QoanVBE0JpLhsCXKi6D1jnszVL3Gq2hJJ_j847x9eCcJOSZDPhb_bxlmX0pZVL7eWdyXvD97uVQSRRGE/s1600/Picture+78.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNToiMGScu4Wz77sPW4IZgciDRhVjKNNwzaIem-uEQi1A9DfQchUOM5h-iR89QoanVBE0JpLhsCXKi6D1jnszVL3Gq2hJJ_j847x9eCcJOSZDPhb_bxlmX0pZVL7eWdyXvD97uVQSRRGE/s320/Picture+78.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480343371445653842" style="cursor: pointer; width: 320px; height: 126px; " /></a></div><div><br /></div><div>Using an external USB power supply I plugged it in. No smoke. Seems to be a good sign. I went ahead and hooked up the LCD from the other unit:</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-RajovNq1QVC40hn2Dlc1S3vkEdcQRjiQG3y5UWd0b8J7WIHAyVvVWhFhfeGLYMzMg4tr90bcj7w4aa_ecDZeJo8apM4P1XASsf6Be9jE9sCpy72W5aLFj5fl27w490Zi8y1oWeaJqzs/s1600/Picture+79.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-RajovNq1QVC40hn2Dlc1S3vkEdcQRjiQG3y5UWd0b8J7WIHAyVvVWhFhfeGLYMzMg4tr90bcj7w4aa_ecDZeJo8apM4P1XASsf6Be9jE9sCpy72W5aLFj5fl27w490Zi8y1oWeaJqzs/s320/Picture+79.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480344687707444514" style="cursor: pointer; width: 214px; height: 320px; " /></a></div><div><br /></div><div>That is what I meant when I said the colours were reversed. Everything looked like that, including the apple logo on boot up.</div><div><br /></div><div>Well, having seen that the board is still working and that the dock connector is somewhat usable, I went ahead and tested it on my computer. It was detected by itunes and wanted to erase the contents. That's a good sign, it means that the USB pins also work. After "combing" the pins some more to get it as straight as I could, I soldered the shield back in place.</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_6u3o_4Wrk7Z0MWr1OPHp5fm2NiBmz8GGDo4tCtfELM1kXENWjfLEy8TsG9C9Nc3ZXJyIG57BPx0AcZaIGQDHxsHHMCzckAOb1JQaqiZ-tD-Hbho9oTneTf9t5Pbbna7m6JScbEToRr0/s1600/Picture+80.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_6u3o_4Wrk7Z0MWr1OPHp5fm2NiBmz8GGDo4tCtfELM1kXENWjfLEy8TsG9C9Nc3ZXJyIG57BPx0AcZaIGQDHxsHHMCzckAOb1JQaqiZ-tD-Hbho9oTneTf9t5Pbbna7m6JScbEToRr0/s320/Picture+80.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480345829674698466" style="cursor: pointer; width: 320px; height: 206px; " /></a></div><div><br /></div><div>Then it's time to unpack the new LCD screen:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjplbeP08Ur0mCzUHkylXtutO14NYP1QdFTX4865kqJ6rxD4K3dWRCT06AkOFdbHTDJWt6bXby61A_nx3Bubni_SpCnvf4HCz3Ca3tzFK5yD9yFtURQBbeQq_3BsOvTZgUJR5niE0o4qvc/s1600/Picture+81.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjplbeP08Ur0mCzUHkylXtutO14NYP1QdFTX4865kqJ6rxD4K3dWRCT06AkOFdbHTDJWt6bXby61A_nx3Bubni_SpCnvf4HCz3Ca3tzFK5yD9yFtURQBbeQq_3BsOvTZgUJR5niE0o4qvc/s320/Picture+81.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480347181472648562" style="cursor: pointer; width: 320px; height: 206px; " /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIwop5pwBkKPCjFXzp-xjPjP0zpy2wECBJXp6yQjT_oCnhsM31EWhuArZeLGHE3FQ2Pv98KZwi4_f8Qdf1yXbY8P0yWSYxxp8tMKmfyMD4b3misE7mGmAYMWKqQ0P0dQbMqIPyX_-HAfE/s1600/Picture+82.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIwop5pwBkKPCjFXzp-xjPjP0zpy2wECBJXp6yQjT_oCnhsM31EWhuArZeLGHE3FQ2Pv98KZwi4_f8Qdf1yXbY8P0yWSYxxp8tMKmfyMD4b3misE7mGmAYMWKqQ0P0dQbMqIPyX_-HAfE/s320/Picture+82.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480347212537653410" style="cursor: pointer; width: 320px; height: 198px; " /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglO81z2HbTU0uCX-hDZNkfLiC6IUysFDec83ltp40qkY-a9y8nZjcq1BzgkE2Va9OhTrwnXuJEtqvZZrnpBM2TOcmKve7yQiSytvg30ZnVtY1-aNpTEO6GUZHfLSkcwAsEZC4dXU7a9_Q/s1600/Picture+83.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglO81z2HbTU0uCX-hDZNkfLiC6IUysFDec83ltp40qkY-a9y8nZjcq1BzgkE2Va9OhTrwnXuJEtqvZZrnpBM2TOcmKve7yQiSytvg30ZnVtY1-aNpTEO6GUZHfLSkcwAsEZC4dXU7a9_Q/s320/Picture+83.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480347238155699266" style="cursor: pointer; width: 320px; height: 202px; " /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWunmYiP2LT4w7rqgI0Cl4JvAwGlob0Q0mtIVQVErLadtFoxYUYHfXXJ6k6MOCLpX2ASfjvJbT5kCv5oqEL41-g5HROiDZzyVCknFvQzzqpgit2F9zuhRIqPb0o9mkZ9MRffoNwPHBEyo/s1600/Picture+84.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWunmYiP2LT4w7rqgI0Cl4JvAwGlob0Q0mtIVQVErLadtFoxYUYHfXXJ6k6MOCLpX2ASfjvJbT5kCv5oqEL41-g5HROiDZzyVCknFvQzzqpgit2F9zuhRIqPb0o9mkZ9MRffoNwPHBEyo/s320/Picture+84.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480347250832414082" style="cursor: pointer; width: 320px; height: 214px; " /></a><br /><br />After installing the new screen:</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXbxlnR81M2iJDR_SXxIRKOk_3ofuTbkKETTXIPirWx3I_v2QAaAYcy_L8PuUIRsxqqtLO1WCatZvbWfnQr5A5eFce2LyepopVrDFdbD3TVQHocv3tJbGzRemn_m7gKD9LHOfhnXjoDc/s1600/Picture+86.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzXbxlnR81M2iJDR_SXxIRKOk_3ofuTbkKETTXIPirWx3I_v2QAaAYcy_L8PuUIRsxqqtLO1WCatZvbWfnQr5A5eFce2LyepopVrDFdbD3TVQHocv3tJbGzRemn_m7gKD9LHOfhnXjoDc/s320/Picture+86.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480354836317125234" style="cursor: pointer; width: 215px; height: 320px; " /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmX6fFeiCFTrzaLTM__wP4jefkD91MIB17Th405xHIqaqSLr9EQXNOzs85lYZGB6WCvFHabk5VUyHlaXsjaqqcsGldNxOwzsNwtZkhCQeyPcZhNMGu6ddlj2Q2vpJuKlBUbeH3-Zlq5ig/s1600/Picture+85.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmX6fFeiCFTrzaLTM__wP4jefkD91MIB17Th405xHIqaqSLr9EQXNOzs85lYZGB6WCvFHabk5VUyHlaXsjaqqcsGldNxOwzsNwtZkhCQeyPcZhNMGu6ddlj2Q2vpJuKlBUbeH3-Zlq5ig/s320/Picture+85.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480354821387962226" style="cursor: pointer; width: 206px; height: 320px; " /></a></div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmX6fFeiCFTrzaLTM__wP4jefkD91MIB17Th405xHIqaqSLr9EQXNOzs85lYZGB6WCvFHabk5VUyHlaXsjaqqcsGldNxOwzsNwtZkhCQeyPcZhNMGu6ddlj2Q2vpJuKlBUbeH3-Zlq5ig/s1600/Picture+85.png"></a>After that I had to double sided tape the new frame (which arrived in 3 pieces) to the new touch screen and lock it on.<br /><br /></div><div><br /></div><div>12-06-10 Update: My batteries for the first unit just arrived (in antistatic bag):</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzTBhr8T16EBQZpx7je874rmdDBqxTfFgNkvIe5Wj82zHniPDKgmj-tlOMJSQ590FKehAQ3kr-eRlf0UF26PbO2vQGak4sw8HrcNMXAdjKJ5EQcNiEvrZIKB56Nq-zUqsOxe0O0E1ZsKw/s1600/Picture+87.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzTBhr8T16EBQZpx7je874rmdDBqxTfFgNkvIe5Wj82zHniPDKgmj-tlOMJSQ590FKehAQ3kr-eRlf0UF26PbO2vQGak4sw8HrcNMXAdjKJ5EQcNiEvrZIKB56Nq-zUqsOxe0O0E1ZsKw/s320/Picture+87.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859539740386114" style="cursor: pointer; width: 320px; height: 211px; " /></a></div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzTBhr8T16EBQZpx7je874rmdDBqxTfFgNkvIe5Wj82zHniPDKgmj-tlOMJSQ590FKehAQ3kr-eRlf0UF26PbO2vQGak4sw8HrcNMXAdjKJ5EQcNiEvrZIKB56Nq-zUqsOxe0O0E1ZsKw/s1600/Picture+87.png"></a>Here it is taken out:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG6rctPCQa2n9N1bi7kcH0hAVcdqyZ3iR373r5MRWaa1Mp9mpvKWsSEriD82Pyqukyt57lrZZccFSACW2c2xLcR6VOCg0lduZoz7Q2uSajFAmoePWxdu50t9XD4oiH4a7y0j0l-iL6RFw/s1600/Picture+88.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG6rctPCQa2n9N1bi7kcH0hAVcdqyZ3iR373r5MRWaa1Mp9mpvKWsSEriD82Pyqukyt57lrZZccFSACW2c2xLcR6VOCg0lduZoz7Q2uSajFAmoePWxdu50t9XD4oiH4a7y0j0l-iL6RFw/s320/Picture+88.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859570292434226" style="cursor: pointer; width: 320px; height: 210px; " /></a></div><div>After taking out the old battery:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG6rctPCQa2n9N1bi7kcH0hAVcdqyZ3iR373r5MRWaa1Mp9mpvKWsSEriD82Pyqukyt57lrZZccFSACW2c2xLcR6VOCg0lduZoz7Q2uSajFAmoePWxdu50t9XD4oiH4a7y0j0l-iL6RFw/s1600/Picture+88.png"></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpqHPnj-E1Ng5XyAqaWFM6WpFNGzXtJUgqzZnLMQIwHY6UB0aZ9VhQ_JeVjb_t1LqH5nbGQZKwDC63M2rFzRX0Y-_WDVaSB7qT-iJKHz9UmkR3MyudoIdaVa6_z9YWaxwEWs79oGtsH5w/s1600/Picture+89.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpqHPnj-E1Ng5XyAqaWFM6WpFNGzXtJUgqzZnLMQIwHY6UB0aZ9VhQ_JeVjb_t1LqH5nbGQZKwDC63M2rFzRX0Y-_WDVaSB7qT-iJKHz9UmkR3MyudoIdaVa6_z9YWaxwEWs79oGtsH5w/s320/Picture+89.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859592371226146" style="cursor: pointer; width: 320px; height: 222px; " /></a></div><div>A test fit:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpqHPnj-E1Ng5XyAqaWFM6WpFNGzXtJUgqzZnLMQIwHY6UB0aZ9VhQ_JeVjb_t1LqH5nbGQZKwDC63M2rFzRX0Y-_WDVaSB7qT-iJKHz9UmkR3MyudoIdaVa6_z9YWaxwEWs79oGtsH5w/s1600/Picture+89.png"></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ikgTrdP-Wku-AzdV7qOtg_4AneNZ5gjZxw7MJn3F9pU1GGdk50S_IwADmToXJKVvGxBs1aixq9MezaXhGBBuzEq7EvhIlfr0KO7iq3F88mrKuM952BJt5bZUWqTxikV4A7vVyjWMs-8/s1600/Picture+90.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ikgTrdP-Wku-AzdV7qOtg_4AneNZ5gjZxw7MJn3F9pU1GGdk50S_IwADmToXJKVvGxBs1aixq9MezaXhGBBuzEq7EvhIlfr0KO7iq3F88mrKuM952BJt5bZUWqTxikV4A7vVyjWMs-8/s320/Picture+90.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859617236728002" style="cursor: pointer; width: 320px; height: 213px; " /></a></div><div>Applied the solder:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhANU9HfgFe_cOcArw93zT8zgvLNHhYW0ZxBb4v7Za4zfrYYdYUGpjUR6wW106zT3gB-ClQ1L53BA2kAgXfK2VhqudbzHoAf5ld5z5xHfq_-2W2Ql8-IbIkGLYYlIE-4_R14dkm9pbjsRM/s1600/Picture+93.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhANU9HfgFe_cOcArw93zT8zgvLNHhYW0ZxBb4v7Za4zfrYYdYUGpjUR6wW106zT3gB-ClQ1L53BA2kAgXfK2VhqudbzHoAf5ld5z5xHfq_-2W2Ql8-IbIkGLYYlIE-4_R14dkm9pbjsRM/s320/Picture+93.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481861857768445234" style="cursor: pointer; width: 320px; height: 214px; " /></a></div><div>Test with "bad" LCD. I have been using the "reversed colour" LCD to test. I try to keep the working LCD in a dust free environment.</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcebASuzUtG2gb2P5bPRGltTNVzwAjbXIEOX4Ji7eH4qF2w0lZNI7Frw_lrvNcOhN7Zw-grWH8zqPCybnCBHh6vxhgCVc71TaU6SorI1qtnbOlaBUbI0Rimd4JGYS74DOS5ZxE_jZY2X8/s1600/Picture+91.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcebASuzUtG2gb2P5bPRGltTNVzwAjbXIEOX4Ji7eH4qF2w0lZNI7Frw_lrvNcOhN7Zw-grWH8zqPCybnCBHh6vxhgCVc71TaU6SorI1qtnbOlaBUbI0Rimd4JGYS74DOS5ZxE_jZY2X8/s320/Picture+91.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481859634531442594" style="cursor: pointer; width: 198px; height: 320px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcebASuzUtG2gb2P5bPRGltTNVzwAjbXIEOX4Ji7eH4qF2w0lZNI7Frw_lrvNcOhN7Zw-grWH8zqPCybnCBHh6vxhgCVc71TaU6SorI1qtnbOlaBUbI0Rimd4JGYS74DOS5ZxE_jZY2X8/s1600/Picture+91.png"></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXiOtBWDpuSV-pHVltr9BCUhDF7YMoQ_D9TXXMmH_qcg2v3Z8h2erVUO11d17WPw5BskELKfjOx7Gu79qCJu_XDFzjG6C80cciyiWOcPG12A6S0-nxBgGsOuMRocJ7s7d1ox9lnJ9_CTM/s1600/Picture+92.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXiOtBWDpuSV-pHVltr9BCUhDF7YMoQ_D9TXXMmH_qcg2v3Z8h2erVUO11d17WPw5BskELKfjOx7Gu79qCJu_XDFzjG6C80cciyiWOcPG12A6S0-nxBgGsOuMRocJ7s7d1ox9lnJ9_CTM/s320/Picture+92.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481861826355349282" style="cursor: pointer; width: 320px; height: 191px; " /></a><br />After installing the original LCD and touch screen:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUzOi7TLrr1i3XtZtEeHxP5HEryecU2dxKFzu3FglaT6dvUobc66XfHf9HlAvu-s1eJAJlsyUoSvmRacUQC5cYP33JeUGHS8USa2vCpOLcY9KAfyiIGGYKUHtdDOiyE1jJmwSCITLXwlI/s1600/Picture+94.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUzOi7TLrr1i3XtZtEeHxP5HEryecU2dxKFzu3FglaT6dvUobc66XfHf9HlAvu-s1eJAJlsyUoSvmRacUQC5cYP33JeUGHS8USa2vCpOLcY9KAfyiIGGYKUHtdDOiyE1jJmwSCITLXwlI/s320/Picture+94.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481861878509245058" style="cursor: pointer; width: 320px; height: 217px; " /></a><br /><br /><br /></div>Jonnyboyhttp://www.blogger.com/profile/17452611876879851494noreply@blogger.com4tag:blogger.com,1999:blog-6890593738526520772.post-53259079621248830702010-05-22T19:59:00.000-07:002010-05-24T02:10:08.286-07:00Apple IIe TTL RGB to Commodore 1084s monitor<div>I have finally finished constructing my cable. Parts have just been sitting there waiting to be put together for a long time but I was too lazy to put them together.<div><br /></div><div>So here is both sides of the cable:<br /><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihQnzjYZeEhsVIKSEai3bQ2Wijhh00VfS1r9y-JGSF12uWkojnVV4rInQhao4FmjTK4z5OtdOyHzd4QzkkIqJAY6qLMzAR4N5RGUfJG5WeqfBCRnc02z0z3JCv_sbnTdEEhjIyyxjYw_Y/s1600/Picture+28.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihQnzjYZeEhsVIKSEai3bQ2Wijhh00VfS1r9y-JGSF12uWkojnVV4rInQhao4FmjTK4z5OtdOyHzd4QzkkIqJAY6qLMzAR4N5RGUfJG5WeqfBCRnc02z0z3JCv_sbnTdEEhjIyyxjYw_Y/s320/Picture+28.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297264274027058" style="cursor: pointer; width: 320px; height: 292px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihQnzjYZeEhsVIKSEai3bQ2Wijhh00VfS1r9y-JGSF12uWkojnVV4rInQhao4FmjTK4z5OtdOyHzd4QzkkIqJAY6qLMzAR4N5RGUfJG5WeqfBCRnc02z0z3JCv_sbnTdEEhjIyyxjYw_Y/s1600/Picture+28.png"></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUhQFJomNC3KyJW5DmR011a8hER5UxetFSG4KYSs0KgA4d5dghs-TEgA-Z9qQ1pT_J9Yt6wGRTzO0wVu5lcBCSTXfMoEIGrMtHvrt0AiO3Sjvud_7pK2MX5bed-qtthKMBSjI8FM0pBcM/s1600/Picture+29.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUhQFJomNC3KyJW5DmR011a8hER5UxetFSG4KYSs0KgA4d5dghs-TEgA-Z9qQ1pT_J9Yt6wGRTzO0wVu5lcBCSTXfMoEIGrMtHvrt0AiO3Sjvud_7pK2MX5bed-qtthKMBSjI8FM0pBcM/s320/Picture+29.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297279279461986" style="cursor: pointer; width: 214px; height: 320px; " /></a></div><div><br /></div><div>This is how the whole setup looks like (Still no disk drives for now)</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3OD1meONlZ-54gCnvn-LHvSg5bVr-NMtX0g9c960EKG_IVPTaeF-_TO3A0cv6hS3-Chi9KCfREWMg_D2w6OuK4LwLBucmpUb76Oqh7gs28RhuhchOvvyBrPP94WC36UlHiDkK3DU9xXg/s1600/Picture+30.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3OD1meONlZ-54gCnvn-LHvSg5bVr-NMtX0g9c960EKG_IVPTaeF-_TO3A0cv6hS3-Chi9KCfREWMg_D2w6OuK4LwLBucmpUb76Oqh7gs28RhuhchOvvyBrPP94WC36UlHiDkK3DU9xXg/s320/Picture+30.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297295779889250" style="cursor: pointer; width: 215px; height: 320px; " /></a></div><div><br /></div><div>When I got this IIe, the Delete key was missing, So I looked for a temporary key to put in its place:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFP19hT0fZQ-J3AUX3Sa47TVZFawR5vIfRn_vLAVAHRG38BcOAXb7d9oUrYt9ROyty-QY-KQ_2skD8dZ3qh4LdEErW2_QYp6ccfiRFgEIkHehRFvBYPns26ZMZYbXxCm9VElTxjmJHsfA/s1600/Picture+31.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFP19hT0fZQ-J3AUX3Sa47TVZFawR5vIfRn_vLAVAHRG38BcOAXb7d9oUrYt9ROyty-QY-KQ_2skD8dZ3qh4LdEErW2_QYp6ccfiRFgEIkHehRFvBYPns26ZMZYbXxCm9VElTxjmJHsfA/s320/Picture+31.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297311281107282" style="cursor: pointer; width: 320px; height: 214px; " /></a></div><div><br /></div><div>Here's the Startup screen:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsCP7J0tJLXyK6sXeZ_89_X3XDbG3GNsyKD0omVEQ_qdsvWzU6SdizQa4OtelWgnFSNeOFCTP3BOsFgdlDYiE0vLlGHV8YjytJFdhjfe9_C9HM-vEEHzu3skqV3gEdzeb9DOmk_PdBq4I/s1600/Picture+32.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsCP7J0tJLXyK6sXeZ_89_X3XDbG3GNsyKD0omVEQ_qdsvWzU6SdizQa4OtelWgnFSNeOFCTP3BOsFgdlDYiE0vLlGHV8YjytJFdhjfe9_C9HM-vEEHzu3skqV3gEdzeb9DOmk_PdBq4I/s320/Picture+32.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474297322386344802" style="cursor: pointer; width: 320px; height: 216px; " /></a></div><div><br /></div><div>Here's some 80 column text</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYFkXZL-E70pDKmAOx4E9Raj4khG-MCZbxzFSahsYyiL2rbwzm1IlKbkxrpJLEj7P9VyyMpPdt5wafcpClXhCH7zmLdV_reo6k1606Tdy4ihUd8LOXDZ2PReX8zTGdcmaNZuP1fC753nw/s1600/Picture+34.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYFkXZL-E70pDKmAOx4E9Raj4khG-MCZbxzFSahsYyiL2rbwzm1IlKbkxrpJLEj7P9VyyMpPdt5wafcpClXhCH7zmLdV_reo6k1606Tdy4ihUd8LOXDZ2PReX8zTGdcmaNZuP1fC753nw/s320/Picture+34.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474298919106539538" style="cursor: pointer; width: 320px; height: 210px; " /></a></div><div><br /></div><div>And finally some low res graphics:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEZbH6I8BGVk2oVA1C03IpcOW9NqZZGYHohPUfLAPHlsxc5jWK9LRGCzaDIErpm-Vy1p_n7zEEiTKP-Aq8dl6I0UYpImG05Dtf8kLxJwcVVsLo7bLqh4PjUzRRhEwXzG3Lbgx3hr4fhPA/s1600/Picture+47.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEZbH6I8BGVk2oVA1C03IpcOW9NqZZGYHohPUfLAPHlsxc5jWK9LRGCzaDIErpm-Vy1p_n7zEEiTKP-Aq8dl6I0UYpImG05Dtf8kLxJwcVVsLo7bLqh4PjUzRRhEwXzG3Lbgx3hr4fhPA/s320/Picture+47.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474298941455148066" style="cursor: pointer; width: 320px; height: 210px; " /></a></div><div><br /></div><div>Update. After I tried to run some game, I realized that some of the colours look "not-quite-right". Output of the same program on Sweet 16 shows this:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1FTqUm4KE4dISJ6mdXVzHrfR2qVQsbn6SWsSyhc3_O8kwnehyyO1C6tlgFUzUAhVk6lY_RmGBow9LtF9J3Ma2WTc42ltsdRqBUgAoTIth9bTsbuHZaIcToX2lSc4RSRa5aujl0EGShLU/s1600/Picture+75.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1FTqUm4KE4dISJ6mdXVzHrfR2qVQsbn6SWsSyhc3_O8kwnehyyO1C6tlgFUzUAhVk6lY_RmGBow9LtF9J3Ma2WTc42ltsdRqBUgAoTIth9bTsbuHZaIcToX2lSc4RSRa5aujl0EGShLU/s320/Picture+75.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5474760198428523698" style="cursor: pointer; width: 320px; height: 249px; " /></a></div><div>I found from <a href="http://groups.google.com/group/comp.sys.apple2/browse_thread/thread/d489f658967d53a3?pli=1">this</a> post that the card actually outputs xrgb. I would have to think of how to resolve this issue... more updates later.</div></div></div>Jonnyboyhttp://www.blogger.com/profile/17452611876879851494noreply@blogger.com2tag:blogger.com,1999:blog-6890593738526520772.post-32665563136335491342010-04-06T21:35:00.000-07:002010-04-06T22:00:19.838-07:00Linux Crash debug tips - I have a soft lockup, what is causing it ?A soft lockup is the symptom of a task or kernel thread using and not releasing a CPU for a period of time (the softlockup_thresh setting ). User space processes should not be able to soft lockup a CPU.<br />
<br />
<b><span style="font-size: small;">How is a soft lockup detected ?</span></b><br />
<blockquote><br />
The Linux kernel creates a watchdog process for each CPU in the system. This should be visible using in the standard "ps" command, this is shown as [watchdog/N], where N is the number of the logical CPU.<br />
<br />
This watchdog process/thread wakes up once a second, gets the current time stamp for the CPU it is running on and saves it into a per-CPU structure. <br />
<br />
The softlockup_tick() function that gets called from the timer interrupt(). This function gets the current time stamp for the specified CPU and compares it to the saved one in the per-CPU structure.<br />
<br />
If the current time stamp is more than softlockup_thresh seconds later than the saved time stamp then it's because the watchdog thread has not been run recently and a soft lockup message is generated on the console. As the timer counter on each CPU can be slightly slow or fast the counter is compared to the previous tick.</blockquote><br />
<b>Why was the process/task allowed to hog the CPU ?</b><br />
<br />
<blockquote>Not all code that runs on the CPU is considered to be a process. Tasklets / Interrupt handlers and blah are kernel functions that do not show up in the standard process listing (with the ps command). </blockquote><blockquote>The kernel still allocates them CPU time, but trusts them to relinquish control of the CPU. </blockquote><br />
<b>Common causes of not relinquishing control.</b><br />
<blockquote>Software bugs can cause the process/code to not relinquish the control of the CPU. The code could be waiting on a lock, or may be running code which continues in an infinite loop. </blockquote><blockquote>The other problem may be that the scheduler has ignored the process and the process has not been removed from the CPU for some timeframe. There are a number of kernel options that can isolate a cpu and run a single process on it. As the process "hogs" the CPU it may be seen as causing a soft lockup.</blockquote><br />
<br />
<span style="font-size: small;"><b>Example of a user space "soft lockup" </b></span><br />
<blockquote style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;"> Pid: 2642, comm: pausetest Not tainted 2.6.18-164.el5 #1</span><br />
<span style="font-size: small;"> RIP: 0033:[<00000000004005c2>] [<00000000004005c2>]</span><br />
<span style="font-size: small;"> RSP: 002b:00007fff8a5d7028 EFLAGS: 00000246</span><br />
<span style="font-size: small;"> RAX: 0000000093338370 RBX: 0000000000000028 RCX: 0000000093338340</span><br />
<span style="font-size: small;"> RDX: 0000000000000140 RSI: 00002b56f6317000 RDI: 0000000000000001</span><br />
<span style="font-size: small;"> RBP: 00002b56f6317000 R08: 00000000ffffffff R09: 000000302f919840</span><br />
<span style="font-size: small;"> R10: 0000000000000000 R11: 0000000000000246 R12: 000000302fb51780</span><br />
<span style="font-size: small;"> R13: 0000000000000034 R14: 00000000004007da R15: 0000000000000001</span><br />
<span style="font-size: small;"> FS: 00002b56f6329210(0000) GS:ffff81001fc147c0(0000) knlGS:0000000000000000</span><br />
<span style="font-size: small;"> CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b</span><br />
<span style="font-size: small;"> CR2: 000000302f8c5f70 CR3: 000000000db79000 CR4: 00000000000006e0</span><br />
<span style="font-size: small;"><br />
</span><br />
<span style="font-size: small;"> Call Trace:</span></blockquote><br />
Note the lack of values beneath "Call Trace:" above. If a userspace process is the process that has not been scheduled/removed from the cpu no backtrace will be shown, only the registers and the process name.<br />
<br />
<br />
<b><span style="font-size: small;">Example of a kernel space "lockup".</span></b><br />
<blockquote style="font-family: "Courier New",Courier,monospace;"><span style="font-size: small;">BUG: soft lockup detected on CPU#0!<br />
<br />
Call Trace:<br />
[<ffffffff802691b5>] show_trace+0x34/0x47<br />
[<ffffffff802691da>] dump_stack+0x12/0x17<br />
[<ffffffff802b4711>] softlockup_tick+0xdb/0xf6<br />
[<ffffffff80293695>] update_process_times+0x42/0x68<br />
[<ffffffff80273d62>] smp_local_timer_interrupt+0x23/0x47<br />
[<ffffffff8027441e>] smp_apic_timer_interrupt+0x41/0x47<br />
[<ffffffff8025cb82>] apic_timer_interrupt+0x66/0x6c<br />
DWARF2 unwinder stuck at apic_timer_interrupt+0x66/0x6c<br />
Leftover inexact backtrace:<br />
<irq> <eoi> <b>[<ffffffff88056573>] :ext3:htree_dirblock_to_tree+0xa8/0xc9<br />
[<ffffffff8805653d>] :ext3:htree_dirblock_to_tree+0x72/0xc9<br />
[<ffffffff88056610>] :ext3:ext3_htree_fill_tree+0x7c/0x1cb<br />
[<ffffffff8804ee97>] :ext3:ext3_readdir+0x1a9/0x4da<br />
[<ffffffff802257f2>] filldir+0x0/0xb7<br />
[<ffffffff80318dd6>] file_has_perm+0x94/0xa3<br />
[<ffffffff802257f2>] filldir+0x0/0xb7<br />
[<ffffffff802350a7>] vfs_readdir+0x77/0xa9<br />
[<ffffffff80238841>] sys_getdents+0x75/0xbd<br />
[<ffffffff8025c121>] tracesys+0x71/0xdc<br />
[<ffffffff8025c181>] tracesys+0xd1/0xdc</ffffffff8025c181></ffffffff8025c121></ffffffff80238841></ffffffff802350a7></ffffffff802257f2></ffffffff80318dd6></ffffffff802257f2></ffffffff8804ee97></ffffffff88056610></ffffffff8805653d></ffffffff88056573></b></eoi></irq></ffffffff8025cb82></ffffffff8027441e></ffffffff80273d62></ffffffff80293695></ffffffff802b4711></ffffffff802691da></ffffffff802691b5></span></blockquote><show example="" here=""> </show><br />
<br />
If a kernel thread is responsible the backtrace for the kernel thread will be shown in the soft lockup message, however the backtrace includes code that shows the stack message. The DWARF2 undwinder attempts to show the actual stack trace. (shown above in bold).<br />
<br />
Sometimes the call trace may only show the symptom of the soft lockup, and other kernel tasks will need to be investigated to show the cause.Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com4tag:blogger.com,1999:blog-6890593738526520772.post-27577485462948951602010-04-01T02:46:00.000-07:002010-04-01T02:47:16.685-07:00Linux Crash debug tips - I have a partial or "incomplete" vmcore, what can I find out ?In some circumstances when attempting to debug a vmcore from Linux, you may have only been able to get part of the vmcore, either due a technical issue or the machine being forcebly rebooted before completion.<br />
<br />
When loading the vmcore in crash you may find something similar to the message below:<br />
<br />
<br />
<blockquote>WARNING: yourvmcorefilename: may be truncated or incomplete<br />
PT_LOAD p_offset: 3358304032<br />
p_filesz: 13690204160<br />
bytes required: 17048508192<br />
dumpfile size: 5412478976<br />
<br />
<br />
crash: read error: kernel virtual address: ffff81042ff0eac0 type: "cpu_pda entry"<br />
crash: read error: kernel virtual address: ffff810230005458 type: "pglist node_id"</blockquote><br />
<br />
A workaround to get some data in this case is to use a recent crash and use the --minimal parameter.<br />
<blockquote><br />
<span class="it_title3">crash --minimal vmcorefilehere vmlinux</span><br />
<br />
<span class="it_title3"> --snip --</span><br />
<span class="it_title3"> </span><br />
<span class="it_title3">NOTE: minimal mode commands: log, dis, rd, sym, eval and exit<br />
</span><span class="it_title3"> </span></blockquote><br />
<span class="it_title3">This will present you with a limited set of commands that you can use that will allow you to get basic data from the vmcore.</span><br />
<span class="it_title3"><br />
</span><br />
<span class="it_title3">It is important to note that backtraces are not entirely accurate and that when you inspect memory it may not be available. Crash usually throws an error when this is the case.</span><br />
<br />
<span class="it_title3">This is not an april fools joke. </span><br />
<span class="it_title3"><br />
</span><br />
<span class="it_title3"> </span><br />
<span class="it_title3"> </span>Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-79656847311696615682010-03-16T02:43:00.000-07:002010-03-16T02:59:05.303-07:00Linux Crash debug tips - Which process is on which CPU ?I'm going to start miniblogging (which is larger than twitters microblogging) but not quite enough to be a blog. For tips that I learn using the<a href="http://people.redhat.com/anderson/crash_whitepaper/"> crash program.</a><br />
<br />
Say you've had a soft lockup, the kernel has paniced either by your setting or a forced coredump, how can you tell which process is on which CPU.<br />
<div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><br />
</span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"># crash ./vmcore</span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">>ps </span></div><div style="font-family: "Courier New",Courier,monospace;"></div><div style="font-family: "Courier New",Courier,monospace;"></div><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"> PID PPID CPU TASK ST %MEM VSZ RSS COMM</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 0 0 ffffffff802e5ae0 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 1 ffff81083006e100 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 2 ffff81010eb26080 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 3 ffff81083e11a080 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 0 1 4 ffff8104300787a0 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 5 ffff810c3e1d87e0 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 6 ffff81043e15a820 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 7 ffff810c3e200860 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 8 ffff81043e209860 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 9 ffff810c3e2727e0 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 10 ffff81043e21c7e0 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 11 ffff810c3e275860 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 12 ffff81043e2a8820 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 13 ffff810c3e2e87e0 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 14 ffff81043e2b17a0 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> > 0 1 15 ffff810c3e2eb860 RU 0.0 0 0 [swapper]</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 1 0 11 ffff81083006b040 UN 0.0 10344 684 init</span></span><br />
The tasks that have a > to the left are the processes that are in the RUN state (that means on the CPU right now).<br />
<br />
The CPU column aligned to the task is the surprisingly the CPU that the process was on (or was last on). Too easy.Anonymouzhttp://www.blogger.com/profile/16018870296209441900noreply@blogger.com0tag:blogger.com,1999:blog-6890593738526520772.post-7173144657608338042010-02-12T15:07:00.000-08:002010-02-13T03:58:33.974-08:00Replacing a Powermac G4 (Mirror Drive Doors) Power Supply with ATX partsThis is essentially the same thing <a href="http://damntechnology.blogspot.com/2009/02/rebuilding-powermac-g5-power-supply.html">I previously did with a Powermac G5</a>. A friend of mine acquired a non working Powermac G4 (Mirror Drive Doors) with dual 1.25GHz CPUs. When the power button is pressed, it lights up for a few seconds and goes out. When he saw my post regarding replacing the Powermac G5 power supply, he asked if the same could be done to this unit. The service center was asking for a huge sum to get the power supply replaced and the former owner did not think it was worth it to still get it fixed.<div><br /></div><div>The difference between this and the G5's is that the Power supply case is much smaller. But otherwise could still hold an ATX power supply's innards.</div><div><br /></div><div>Because my friend has waited over a year for me to arrive (from overseas), we decided to use a good quality name-brand power supply that is rated more than the original. We settled with a Thermaltake Litepower 600w ATX power supply.</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh5NMzTGkCNkabsu2VP6_8cfLe2sUkKF4ZBRcsgOBqZ9EhoZa4ZGdrZplR_haPI8KGFx9eQLYO238lJh-DvDKqdGHf6QYE8Or7wOO-wggnnB3LfZ0UgG6ftbGsdnJizMVy3grtCQ0mupM/s1600-h/Screen+shot+2010-02-13+at+12.26.30+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh5NMzTGkCNkabsu2VP6_8cfLe2sUkKF4ZBRcsgOBqZ9EhoZa4ZGdrZplR_haPI8KGFx9eQLYO238lJh-DvDKqdGHf6QYE8Or7wOO-wggnnB3LfZ0UgG6ftbGsdnJizMVy3grtCQ0mupM/s320/Screen+shot+2010-02-13+at+12.26.30+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437533573655439458" style="cursor: pointer; width: 320px; height: 234px; " /></a></div><div><br /></div><div>After opening up the power supply. I realized that the board is not going to fit easily without any mods, because the heatsinks are made taller than the Apple power supply case. Most probably this is done for better airflow. So in the meantime I proceeded to take the Power Supply apart and desoldered all the wires from the original power supply.</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1oOswTnW_KQO7LKnJGDwroe6E96lKRV-shsaSH16hRzrsb23pi18-9f-y7erZz7V4b7BSxcOUvS4x-x-k2WlwVtjscSMSnfHgrmrXJOMHp5E9zVPu-NE4-ZtOGeZozAgZzhTyj_t9FpQ/s1600-h/Screen+shot+2010-02-13+at+12.30.53+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1oOswTnW_KQO7LKnJGDwroe6E96lKRV-shsaSH16hRzrsb23pi18-9f-y7erZz7V4b7BSxcOUvS4x-x-k2WlwVtjscSMSnfHgrmrXJOMHp5E9zVPu-NE4-ZtOGeZozAgZzhTyj_t9FpQ/s320/Screen+shot+2010-02-13+at+12.30.53+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437534796441308258" style="cursor: pointer; width: 206px; height: 320px; " /></a></div><div><br /></div><div>After that, I found a pinout on <a href="http://www.xlr8yourmac.com/tips/MDD_ps_mods/MDD_PS_Mods.html">this site</a> that showed exactly what I needed. I cut the wires on the Thermaltake and soldered the original wires to the remaining wire. This allowed some room to move the wires around so that the original wires can exit through the original hole.</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKv-GPl-sRN6nH9mo1ll1vy5M8_9VXBCsVfLA3QvT9nNdumFoZtzrLAZpvIDtJ9jChxO1WaijI51dob93sfKnJ5sJ52UsaPzxbAx7717GoDC-QUnRwjvkYZFm5IX8nA8Gg4G3LeOaC8zI/s1600-h/Screen+shot+2010-02-13+at+12.35.17+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKv-GPl-sRN6nH9mo1ll1vy5M8_9VXBCsVfLA3QvT9nNdumFoZtzrLAZpvIDtJ9jChxO1WaijI51dob93sfKnJ5sJ52UsaPzxbAx7717GoDC-QUnRwjvkYZFm5IX8nA8Gg4G3LeOaC8zI/s320/Screen+shot+2010-02-13+at+12.35.17+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537279058798226" style="cursor: pointer; width: 320px; height: 316px; " /></a></div><div>At this point we wanted to test the Mac just to be sure it is still working and that all this trouble isn't for naught.</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKv-GPl-sRN6nH9mo1ll1vy5M8_9VXBCsVfLA3QvT9nNdumFoZtzrLAZpvIDtJ9jChxO1WaijI51dob93sfKnJ5sJ52UsaPzxbAx7717GoDC-QUnRwjvkYZFm5IX8nA8Gg4G3LeOaC8zI/s1600-h/Screen+shot+2010-02-13+at+12.35.17+PM.png"></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqECLN1RMzdLVESDEuL8mhN68Bu3dQzLkC1bDu_8FaZ6jCs_6WaAk_YOmtEWO-w8JWqu8yPZIGk0M7XHyVpiT-Wqiu5OEl9z0mVJHxzRt7WNNZxI6Ac62QHEvXYMi_fDAwQrkj2Hnf7NQ/s1600-h/Screen+shot+2010-02-13+at+12.37.11+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqECLN1RMzdLVESDEuL8mhN68Bu3dQzLkC1bDu_8FaZ6jCs_6WaAk_YOmtEWO-w8JWqu8yPZIGk0M7XHyVpiT-Wqiu5OEl9z0mVJHxzRt7WNNZxI6Ac62QHEvXYMi_fDAwQrkj2Hnf7NQ/s320/Screen+shot+2010-02-13+at+12.37.11+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537403520580914" style="cursor: pointer; width: 320px; height: 274px; " /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigHfrbfYFDEPpnI5k77UoI4AWCQoVESYXjpACxeVbbxOGhe0mxM2bp1ZnCsQF9Ww0hO3zb5hzt2xbKp9d-zspRIxX1wpL3FmdJefGsnZn17kv2VLphND2ocFFov7DU4q9q7yuTTO9eA8s/s1600-h/Screen+shot+2010-02-13+at+12.36.10+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigHfrbfYFDEPpnI5k77UoI4AWCQoVESYXjpACxeVbbxOGhe0mxM2bp1ZnCsQF9Ww0hO3zb5hzt2xbKp9d-zspRIxX1wpL3FmdJefGsnZn17kv2VLphND2ocFFov7DU4q9q7yuTTO9eA8s/s320/Screen+shot+2010-02-13+at+12.36.10+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537365863463794" style="cursor: pointer; width: 320px; height: 182px; " /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjirEXpcBCyxSVQs_rY-oRwW63uYIfmVZ0JmeE8A4w86DomKwidvSEwzysb00nXOjNqKMqHwhOJu5tU0ZI61r-vObLABQlhTZrGLy72kVCkA_19GoZdxY_2utCBz98uNq-6xRNdb6ySPmo/s1600-h/Screen+shot+2010-02-13+at+12.35.42+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjirEXpcBCyxSVQs_rY-oRwW63uYIfmVZ0JmeE8A4w86DomKwidvSEwzysb00nXOjNqKMqHwhOJu5tU0ZI61r-vObLABQlhTZrGLy72kVCkA_19GoZdxY_2utCBz98uNq-6xRNdb6ySPmo/s320/Screen+shot+2010-02-13+at+12.35.42+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537309231073122" style="cursor: pointer; width: 320px; height: 210px; " /></a></div><div>After plugging it in and using my ADC to DVI cable, we were greeted by the startup "jeng" sound and this appeared on the attached monitor:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFpcR0je4wMKwSzdqqV_cBouPf7Smy1lweuUo69rYWBOeqUrXpFNVq8eBJaLki0DlXMYlG1rKsUD0Ti5uGGi2cLNgNLdfPjV8iqiNovNarZS7YQJLKC6ek8GLekSMnM9kZWhuab_HXGIc/s1600-h/Screen+shot+2010-02-13+at+12.37.50+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFpcR0je4wMKwSzdqqV_cBouPf7Smy1lweuUo69rYWBOeqUrXpFNVq8eBJaLki0DlXMYlG1rKsUD0Ti5uGGi2cLNgNLdfPjV8iqiNovNarZS7YQJLKC6ek8GLekSMnM9kZWhuab_HXGIc/s320/Screen+shot+2010-02-13+at+12.37.50+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437537423654570882" style="cursor: pointer; width: 320px; height: 202px; " /></a></div><div>Well, we had no hard disks but this is much farther than it ever got on the old power supply. The next step is to mod the heatsinks so that it will all fit into the original enclosure. After that we tie the cables neatly into bundles with zip tie and put it back into the original case. We cut some loose cintra boards and used double sided tape to attach them under the board to protect it from shorts.</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn9HqVXZ9thmQAMjJAIoxs49WcsBefrNeByeOS-jdN5ukDQZzKrMGvSxBEjW9GKeO-hQt-HhBqZGFITrfl8Polui6-0pDSUGUL9z64VhwF6GeCnf5ZvxJSUDlz6pUDxYOSHaNk_F_ycZQ/s1600-h/Screen+shot+2010-02-13+at+1.03.55+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhn9HqVXZ9thmQAMjJAIoxs49WcsBefrNeByeOS-jdN5ukDQZzKrMGvSxBEjW9GKeO-hQt-HhBqZGFITrfl8Polui6-0pDSUGUL9z64VhwF6GeCnf5ZvxJSUDlz6pUDxYOSHaNk_F_ycZQ/s320/Screen+shot+2010-02-13+at+1.03.55+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437545990837905794" style="cursor: pointer; width: 284px; height: 320px; " /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSA7K71knOwCjEDEz7GIjC3jgmXJ3UTN4B9jCgfw3tlP2hjUku_k3WAzuOJ88S0w4Es3dMvPmpTWcHrObxtI0VqRqy_iJ1PCVmmhOOgsyyhkuCMPHtvTB7GaUdbXzE_JBx_Ztd3au5dec/s1600-h/Screen+shot+2010-02-13+at+1.03.12+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSA7K71knOwCjEDEz7GIjC3jgmXJ3UTN4B9jCgfw3tlP2hjUku_k3WAzuOJ88S0w4Es3dMvPmpTWcHrObxtI0VqRqy_iJ1PCVmmhOOgsyyhkuCMPHtvTB7GaUdbXzE_JBx_Ztd3au5dec/s320/Screen+shot+2010-02-13+at+1.03.12+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437545953171800530" style="cursor: pointer; width: 320px; height: 250px; " /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjowDuZrCq5sIiyl3342OpZ75uTYzXURoTmv448IZi2TOrKL-O3SmHpt9EHGd3TCpMCawRms4m5T2cWm1ptAnRPgze6Xk1lsUM3VaMbYZMvyrTy6kXWXudZCgLnXgLi_gweLL0HCv_IYQ0/s1600-h/Screen+shot+2010-02-13+at+1.02.45+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjowDuZrCq5sIiyl3342OpZ75uTYzXURoTmv448IZi2TOrKL-O3SmHpt9EHGd3TCpMCawRms4m5T2cWm1ptAnRPgze6Xk1lsUM3VaMbYZMvyrTy6kXWXudZCgLnXgLi_gweLL0HCv_IYQ0/s320/Screen+shot+2010-02-13+at+1.02.45+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437545925075185170" style="cursor: pointer; width: 191px; height: 320px; " /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq7cUTJLj_HK8GUgLoBOtr3cOf0Yyqc1Sz6Wm37aQnV80RcjMnJjh3CkxFYHGGxgZPqVSObtrVDtNI-EdM2z83poH4w3CLusBBJynHNTH0444NMqnbQmvfmBEypsGnxIZUOJIMM5JQ5b8/s1600-h/Screen+shot+2010-02-13+at+1.02.18+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq7cUTJLj_HK8GUgLoBOtr3cOf0Yyqc1Sz6Wm37aQnV80RcjMnJjh3CkxFYHGGxgZPqVSObtrVDtNI-EdM2z83poH4w3CLusBBJynHNTH0444NMqnbQmvfmBEypsGnxIZUOJIMM5JQ5b8/s320/Screen+shot+2010-02-13+at+1.02.18+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437545904280854738" style="cursor: pointer; width: 224px; height: 320px; " /></a></div><div>Then finally mount it into the tower case.</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyenowxoeiAgq-5dRzzW3y-PTV-nSLUIXR50r2XGouPMSV52Al4b_yU1NMisGux93_BA5B5IZC8B2SmXv5_vIkmp1Ref8hE07R5yru11lf-GA4EAgcJRyXX_CUMCVtT1bHHF9pyQ3y2RQ/s1600-h/Screen+shot+2010-02-13+at+1.19.46+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyenowxoeiAgq-5dRzzW3y-PTV-nSLUIXR50r2XGouPMSV52Al4b_yU1NMisGux93_BA5B5IZC8B2SmXv5_vIkmp1Ref8hE07R5yru11lf-GA4EAgcJRyXX_CUMCVtT1bHHF9pyQ3y2RQ/s320/Screen+shot+2010-02-13+at+1.19.46+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437549030857244178" style="cursor: pointer; width: 211px; height: 320px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge4n9t3nzjOAWB1AlZ6rVaWdB3ysu-77YZcRMMPOrjCnqu-hO6B6BNSq_keFrfiDhsJJcortNLqhSAzD55yYhkdw0BZ33FdK8ptP4cOYxnPl4f3rlcnS1KYyEcf94sNFvyLPuLMfLp_tE/s1600-h/Screen+shot+2010-02-13+at+1.19.18+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge4n9t3nzjOAWB1AlZ6rVaWdB3ysu-77YZcRMMPOrjCnqu-hO6B6BNSq_keFrfiDhsJJcortNLqhSAzD55yYhkdw0BZ33FdK8ptP4cOYxnPl4f3rlcnS1KYyEcf94sNFvyLPuLMfLp_tE/s320/Screen+shot+2010-02-13+at+1.19.18+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437548983412930850" style="cursor: pointer; width: 320px; height: 211px; " /></a></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxuSE57DJxEfFviuFJJ4mOGiIcBx4USZI2iCfV9Ook55fWjkphjYCp1ngncDTiKWumPT0Vv74bkvVNB3wRpQm295J6O3hNyC2wJ0zsmYVDTeaVaKbVgNktOjO7AcdNpoE0IilXY0LA03o/s1600-h/Screen+shot+2010-02-13+at+1.21.54+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxuSE57DJxEfFviuFJJ4mOGiIcBx4USZI2iCfV9Ook55fWjkphjYCp1ngncDTiKWumPT0Vv74bkvVNB3wRpQm295J6O3hNyC2wJ0zsmYVDTeaVaKbVgNktOjO7AcdNpoE0IilXY0LA03o/s320/Screen+shot+2010-02-13+at+1.21.54+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437549096535252370" style="cursor: pointer; width: 320px; height: 210px; " /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2uR-3kpJbQFuHGk_I8NI8l6eZInc7Q82T5bcDYuDvo90IpPgGwy46ti8TED-g-G7KDbsarBA3ApPHQAkoO17vIHp_04y3n1GftnDGtzCK50XLovaEN3JbgTADPWymInSF5fD4uhmYLxI/s1600-h/Screen+shot+2010-02-13+at+1.21.42+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2uR-3kpJbQFuHGk_I8NI8l6eZInc7Q82T5bcDYuDvo90IpPgGwy46ti8TED-g-G7KDbsarBA3ApPHQAkoO17vIHp_04y3n1GftnDGtzCK50XLovaEN3JbgTADPWymInSF5fD4uhmYLxI/s320/Screen+shot+2010-02-13+at+1.21.42+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437549069569663074" style="cursor: pointer; width: 320px; height: 209px; " /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjur2lH_m97aZTs22wREp6CvJXbhT0ErKAUJr07PSgZuFFB2Co0LhDNJzIsksT80YKKuTwkdQ0jZpC3TVPXnacPmeFCNuQVS2PQQpT6jK3vKwqkRNSVhw5uBjeFdwmIb2wM8rZ7qPPzaVQ/s1600-h/Screen+shot+2010-02-13+at+1.21.20+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjur2lH_m97aZTs22wREp6CvJXbhT0ErKAUJr07PSgZuFFB2Co0LhDNJzIsksT80YKKuTwkdQ0jZpC3TVPXnacPmeFCNuQVS2PQQpT6jK3vKwqkRNSVhw5uBjeFdwmIb2wM8rZ7qPPzaVQ/s320/Screen+shot+2010-02-13+at+1.21.20+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437549052016425458" style="cursor: pointer; width: 248px; height: 320px; " /></a><br />Plugging in the hard disk from an old B&W G3 finally boots up</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhriOcztNl7SPohmexay1oj00EmQU-PMPzD4DGebaVHSA_Hb6ExNXrYfUOHByntQsCWEMD_E_6PtuHhDPlcePx5OzkoCDoZkH0DMVEwJD9Dhqy_wYo6vogwLCkHNs7QOPXIox8BdaDwiVA/s1600-h/Screen+shot+2010-02-13+at+1.22.52+PM.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhriOcztNl7SPohmexay1oj00EmQU-PMPzD4DGebaVHSA_Hb6ExNXrYfUOHByntQsCWEMD_E_6PtuHhDPlcePx5OzkoCDoZkH0DMVEwJD9Dhqy_wYo6vogwLCkHNs7QOPXIox8BdaDwiVA/s320/Screen+shot+2010-02-13+at+1.22.52+PM.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5437550692894677762" style="cursor: pointer; width: 234px; height: 320px; " /></a></div><div>Most of the stuff works. The 2 things that doesn't are: The ADC port cannot power an external ADC display anymore. The Firewire ports don't have power (Not sure if a self-powered firewire device would work). This is because ATX does not have the 25v needed for those 2 to function. If we add a 25v power supply (into the empty space in the power supply) we should be able to get these working again.</div>Jonnyboyhttp://www.blogger.com/profile/17452611876879851494noreply@blogger.com1tag:blogger.com,1999:blog-6890593738526520772.post-24637036491208161802010-01-04T03:10:00.000-08:002010-01-04T04:43:51.116-08:00Repairing a membrane type apple keyboardThey don't make keyboards anymore like they used to. In the past each key of a keyboard had a keyswitch under it. Every keyboard Apple made from the original Apple ][ ... up to the ADB Extended Keyboard II were made in this manner. (there may be others, but I have not come across them).<div><br /></div><div>The first Apple USB keyboard I have is the one that came bundled with the imac G3. It was bondi blue, had a USB hub with 2 ports on both sides of the keyboard. It also (like the ADB keyboards that came before it) had a power button. I don't quite remember how this keyboard came into my possession, but when I tried to use it, some buttons wouldn't work. Particularly, the ESC key and probably the first few function keys next to it.</div><div><br /></div><div>Getting this unit open wasn't too hard: just have some patience and remove 50 something phillips head screws. What got my attention was that there are no longer keyswitches under each key. (not in the sense as in my description above anyway). It has been replaced with 3 sheets of what looks like "acetate transparency sheets" we used to use to project presentations. the top and bottom sheets had some circuitry on it, very similar to a flexible PCB. The middle sheet had holes punched on it. By now you'd have figured out the rest. The user would "press" a key and those keys would line up where the holes are. Top sheet contacts with bottom sheet and voila the key is "pressed"</div><div><br /></div><div>Unlike PCBs, the "circuitry" on the top and bottom sheets seem very fragile. The former owner may have spilled some cola into it (or maybe just water). Parts of this "circuitry" is now a different colour from the rest. Poking my ohmmeter between 2 points that's supposed to conduct shows no connection.</div><div><br /></div><div>My original solution to this was to take some aluminum foil. carefully cut it to the right size, and then along with some cardboard, get some nearby screws to "press down" on this. This solution did work.... for a while... eventually the cardboard would flatten out and what was a tight fit is now loose... sometimes the keys wouldn't connect anymore. I have opened this unit up again to replace the cardboard.</div><div><br /></div><div>Now... many months after that, a good friend of mine acquired a powermac G5 and suspected that the power supply may not be good. While working on this unit, he let me use a white Apple USB keyboard (not the aluminum ones)... I was trying to get front row to appear by pressing the keyboard shortcut command-ESC. This did not work. After some more testing, I worked out that the ESC key, along with F1 - F6 are not working. I was ready to try my aluminum foil solution again. Unfortunately for me, the connection was broken over a wide area .. almost 2 inches wide. I could not get the foil and cardboard to be pressed down enough to make a lasting connection. Then I remembered:</div><div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbCB5VsudcxtYMEcM1QGmDKRogOpmyd0sUJDt6p5P1LfG66WO0UHjNSEIbGP4jF9URNsw7SHRInTIr_6h0l9MlvrSIY7uQNOjxjJy_f9Y-tj7v9oEiShzzEU3oDucgbq-bfWwmdcSp2JQ/s1600-h/Picture+73.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbCB5VsudcxtYMEcM1QGmDKRogOpmyd0sUJDt6p5P1LfG66WO0UHjNSEIbGP4jF9URNsw7SHRInTIr_6h0l9MlvrSIY7uQNOjxjJy_f9Y-tj7v9oEiShzzEU3oDucgbq-bfWwmdcSp2JQ/s320/Picture+73.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5422852841703488098" style="cursor: pointer; width: 191px; height: 320px; " /></a></div><div>Surely I can use this to repair the dissolved circuitry. A trip to the local electronics store snagged me the last unit in stock.</div><div><br /></div><div>I had another identical keyboard at home waiting to be fixed. This is how the membranes looked like after opening. Note that the fluid has seeped up deep into the keyboard due to capillary action:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtiuiyDegxCk4hBiGCpSHRpuVJzJ5s-1Whh2Dqbc0FEtIUatkjva2s0sasBegDaQCiU9vOUSQRAimdhq3K45rUMU0UXX3-Sukvtkdw6L4eZ1JIVugYeJS6D2EXOeXexnI68yNohqp5UFc/s1600-h/Picture+71.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtiuiyDegxCk4hBiGCpSHRpuVJzJ5s-1Whh2Dqbc0FEtIUatkjva2s0sasBegDaQCiU9vOUSQRAimdhq3K45rUMU0UXX3-Sukvtkdw6L4eZ1JIVugYeJS6D2EXOeXexnI68yNohqp5UFc/s320/Picture+71.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5422852815404380930" style="cursor: pointer; width: 320px; height: 243px; " /></a></div><div>After using some baby wipes to clean out the fluid, you can see the damage that was done:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkT41CvukPQfr6uJwp8rVIrTfzeoUReWimF1EtSopD4RHvbgdSn2ez68kHHR5vcxgbcaiGj03f-xeGaJBJZrIB3ajmAo-XIjf3hnXQ0G1XZPsG2uC6eSq6u0XBrQ24c_-8S49_E9ammOA/s1600-h/Picture+72.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkT41CvukPQfr6uJwp8rVIrTfzeoUReWimF1EtSopD4RHvbgdSn2ez68kHHR5vcxgbcaiGj03f-xeGaJBJZrIB3ajmAo-XIjf3hnXQ0G1XZPsG2uC6eSq6u0XBrQ24c_-8S49_E9ammOA/s320/Picture+72.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5422852829385948898" style="cursor: pointer; width: 320px; height: 146px; " /></a></div><div>In the above picture, some of the lines are darker. Testing these with my ohmmeter reveal that they no longer conduct. After using the conductive pen on it and being careful not to bridge connections that aren't supposed to be:</div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRoA_B4oA33e131HW0woXcDtoJSPWfjyKLzBeJQPxJgY0kD7AOWAW9BxQUE0rbC2v6GO5TeqXsoNAt4ULQzZ1SZ9Rbg7NNp41Y9yHBZio5a_-nNENySyDAeDHk2aP9y_1BzFOz2d_vZ2U/s1600-h/Picture+74.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRoA_B4oA33e131HW0woXcDtoJSPWfjyKLzBeJQPxJgY0kD7AOWAW9BxQUE0rbC2v6GO5TeqXsoNAt4ULQzZ1SZ9Rbg7NNp41Y9yHBZio5a_-nNENySyDAeDHk2aP9y_1BzFOz2d_vZ2U/s320/Picture+74.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5422852856894677682" style="cursor: pointer; width: 320px; height: 154px; " /></a></div><div>An xacto knife can be handy in scraping off accidentally bridged connections. After letting the ink dry (did not take more than 5 minutes), I tested the unit before putting all the screws back. I also took the opportunity to clean the insides of some nasty looking stuff (mostly crumbs and spilled drinks). Keyboard is all working again.</div>Jonnyboyhttp://www.blogger.com/profile/17452611876879851494noreply@blogger.com1