{"id":1169,"date":"2020-05-04T21:06:26","date_gmt":"2020-05-05T02:06:26","guid":{"rendered":"https:\/\/paulcarbone.com\/blog\/?p=1169"},"modified":"2023-06-04T10:18:09","modified_gmt":"2023-06-04T15:18:09","slug":"ep-1_programmer","status":"publish","type":"post","link":"https:\/\/paulcarbone.com\/blog\/ep-1_programmer\/","title":{"rendered":"First attempt with the EP-1 programmer"},"content":{"rendered":"<p>Finally got this thing working.<br \/>\nFunny story &#8211; I actually had one of these in storage, but it was cheaper just to buy a new one than to rent a zip-car and make a special trip just for this one piece.\u00a0 So now I have two BP Microsystems EP-1 programmers&#8230;<\/p>\n<p><a href=\"https:\/\/paulcarbone.com\/blog\/wp-content\/uploads\/2020\/05\/Screen-Shot-2020-05-04-at-8.14.58-PM.png\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-1167\" src=\"https:\/\/paulcarbone.com\/blog\/wp-content\/uploads\/2020\/05\/Screen-Shot-2020-05-04-at-8.14.58-PM.png\" alt=\"\" width=\"597\" height=\"597\" srcset=\"https:\/\/paulcarbone.com\/blog\/wp-content\/uploads\/2020\/05\/Screen-Shot-2020-05-04-at-8.14.58-PM.png 597w, https:\/\/paulcarbone.com\/blog\/wp-content\/uploads\/2020\/05\/Screen-Shot-2020-05-04-at-8.14.58-PM-150x150.png 150w, https:\/\/paulcarbone.com\/blog\/wp-content\/uploads\/2020\/05\/Screen-Shot-2020-05-04-at-8.14.58-PM-300x300.png 300w\" sizes=\"(max-width: 597px) 100vw, 597px\" \/><\/a><\/p>\n<p>Here&#8217;s the <a href=\"https:\/\/paulcarbone.com\/blog\/wp-content\/uploads\/2020\/05\/EP1.pdf\">Manual<\/a><br \/>\nUPDATE: Thanks to John Spina on the Vintage Test Equipment group for pointing me to the <a href=\"https:\/\/paulcarbone.com\/blog\/wp-content\/uploads\/2020\/05\/EP1.zip\">original software and firmware updates<\/a>.<\/p>\n<p>UPDATE:\u00a0 Thanks to Rodger Whitaker for pointing out <a href=\"https:\/\/www.batronix.com\/shop\/programmer\/BX32P\/index.html\">this modern USB programmer<\/a> from Batronix that supports older chips. ~200 euro.\u00a0 Not cheap, but not as expensive as I expected.<\/p>\n<p>I was able to use Serial.app in OSX to connect to my old Radio Shack USB-serial adapter, which I couldn&#8217;t get to work on my Win10 box.\u00a0 The programmer doesn&#8217;t need any additional software, it serves up it&#8217;s interface over the serial port.\u00a0 It automatically detects the baud rate, up to 38,400.<br \/>\n<strong>To read a chip:<\/strong><\/p>\n<ol>\n<li>&#8216;C&#8217; brings up a menu to select the chip by make then model<\/li>\n<li>&#8216;PROTO&#8217; lets you select the protocol &#8211; I had success using XMODEM.<\/li>\n<li>&#8216;RH&#8217; reads a hex file &#8211; it will send the file once you initiate an XMODEM receive via the terminal emulator<\/li>\n<\/ol>\n<p><strong>Some other useful commands:<\/strong><\/p>\n<ul>\n<li>STAT &#8211; lists the current baud rate, firmware, selected chip type, and protocol.\u00a0 It also has the phone number for BP Microsystems, which is still in business, and still has the same number (contrats guys!)<\/li>\n<li>LIST &#8211; shows the contents of the chip, with a familiar hex viewer layout<\/li>\n<li>BLANK &#8211; confirms that the ship is blank (all FFs)<\/li>\n<\/ul>\n<p>There are also a number of commands for reading files in different formats (Intel, hex, Motorola, and Tektronix (?)), manually programming segments of a chip<\/p>\n<p><strong><br \/>\n<\/strong><br \/>\n<strong>Programming a chip:<\/strong><br \/>\nThis is where I&#8217;m getting stuck.\u00a0 I&#8217;ve already incorrectly programmed one chip with a single character.\u00a0 I have to find the correct combination of protocol and upload settings.<br \/>\nOK, I&#8217;ve got a bunch of EPROMs I can try programming once before my eraser shows up.<\/p>\n<p>Attempt 1:<br \/>\nSet programmer for XMODEM,<br \/>\nSet transfer for XMODEM, no 1K block size<br \/>\nAppears to work correctly, but then I get the following:<br \/>\nBytes received; 6 hex file errors;<br \/>\n1 bytes programmed correctly, no errors.<br \/>\nOnly the first byte is programmed, and not even the correct one.<\/p>\n<p>Attempt 2:<br \/>\nSame as above, but convert to HEX file first.<br \/>\nAppears to be working correctly, and takes a lot longer.<br \/>\nAppears to work correctly, reports:<br \/>\n00 Bytes received;<br \/>\n2000 bytes programmed correctly; No errors.<br \/>\n2000h = 8kB, so that&#8217;s promising.<\/p>\n<p>I used<a href=\"http:\/\/tomeko.net\/online_tools\/file_to_hex.php?lang=en\"> this site<\/a> to make the bin to hex conversion (would love to find an offline solution) What worked for me was no delimiters, but newlines every 16 bytes.<\/p>\n<p>When we read it back and diff with the original, we get a file that&#8217;s 1kB larger, and seems to have carriage returns (0x0D) every 32 characters.\u00a0 I can&#8217;t tell if this is a readback error, or a programming error.<br \/>\nIt&#8217;s a read-back error.\u00a0 Using &#8216;RB&#8217; gets the file back in straight binary, and comparing it to the original file from the wiki I used to burn it from shows no errors.<br \/>\nSUCCESS!<\/p>\n<p>SO: Even though the programmer can send us back binary files, we have to send it hex files.\u00a0 Lesson learned!<\/p>\n<h1>Supported Chips<\/h1>\n<p>If anyone is interested, here&#8217;s a complete list that the programmer spits out with the &#8216;PARTS&#8217; command:<\/p>\n<p><span style=\"text-decoration: underline;\">AMD<\/span><br \/>\n8753H *1B,C 8751H *1B,C 87C51 *1C Am27128<br \/>\nAm27128A Am2716 Am27256 Am2732<br \/>\nAm2732A Am2732B Am27512 Am2764<br \/>\nAm2764A Am27C128D Am27C128P Am27C256<br \/>\nAm27C512 Am27C64D Am27C64P Am2817A<br \/>\nAm2864A Am2864AE Am2864B Am2864BE<br \/>\nAm28C256 Am9716 Am9761H *1B,C Am9864<\/p>\n<p><span style=\"text-decoration: underline;\">Atmel<\/span><br \/>\nAT27C128 AT27C256 AT27C256R AT27C512<br \/>\nAT27C512R AT27C513 AT27C515 AT27HC256<br \/>\nAT27HC256L AT27HC64 AT27HC641 AT27HC64L<br \/>\nAT28C04 AT28C04E AT28C04F AT28C16<br \/>\nAT28C16E AT28C16F AT28C17 AT28C17E<br \/>\nAT28C17F AT28C256 AT28C256E AT28C256F<br \/>\nAT28C256E AT28C64 AT28C64E AT28C64F<br \/>\nAT28C64X AT28HC16 AT28HC16L AT28HC16L<br \/>\nAT28HC191 AT28HC191L AT28HC256 AT28HC256E<br \/>\nAT28HC256F AT28HC256L AT28HC256LE AT28HC291<br \/>\nAT28HC291L AT28HC64 AT28HC64E AT28HC64L<br \/>\nAT28HC64LE AT28PC64 AT28PC64E<\/p>\n<p><span style=\"text-decoration: underline;\">Bowmar\/White<\/span><br \/>\n8014 8020 8023<\/p>\n<p><span style=\"text-decoration: underline;\">Catalyst<\/span><br \/>\nCAT27128A CAT27256 CAT27512 CAT2764A<br \/>\nCAT27HC256 CAT28C16A CAT28C17A CAT28C256<br \/>\nCAT28C64A CAT28C65A<\/p>\n<p><span style=\"text-decoration: underline;\">Dallas Semiconductor<\/span><br \/>\nDense-Pac<br \/>\nDPV27C256 DPV27C512<\/p>\n<p><span style=\"text-decoration: underline;\">Electronic Arrays<\/span><br \/>\nEA2716<\/p>\n<p><span style=\"text-decoration: underline;\">EXEL<\/span><br \/>\nXLS2804A XLS2816A XLS2817A XLS2864A<br \/>\nXLS2865A XLM46C15 XLM46C16 XLM46P15<br \/>\nXLM46P16 XLS46C15 XLS46C16 XLS46P15<br \/>\nXLS46P16<\/p>\n<p><span style=\"text-decoration: underline;\">Fujitsu<\/span><br \/>\nMBL8742H *1A MBL8749H *1A MBL8749N *1A MBM27128<br \/>\nMBM27128-X MBM2716 MBM2716H MBM27256<br \/>\nMBM27256-W MBM27256-X MBM2732 MBM2732A<br \/>\nMBM2764 MBM27C128 MBM27C128P MBM27C256<br \/>\nMBM27C256A MBM27C256A-W MBM27C256AP MBM27C256H<br \/>\nMBM27C512 MBM27C512P MBM27C64 MBM27C64-W<br \/>\nMBM27C64-X MBM28C64 MBM28C65 MBM83256<br \/>\nMBM83512<\/p>\n<p><span style=\"text-decoration: underline;\">Generic<\/span><br \/>\n27011 (12.5V) 27128 (21V) 27128A (12.5V) 2716 (25V)<br \/>\n27256 (12.5V) 2732 (25V) 2732A (21V) 2732B (12.5V)<br \/>\n27512 (12.5V) 2764 (21V) 2764A (12.5V) 27C128 (21V)<br \/>\n27C16 (25V) 27C256 (12.5V) 27C32 (25V) 27C512 (12.5V)<br \/>\n27C64 (21V)<\/p>\n<p><span style=\"text-decoration: underline;\">General Instrument<\/span><br \/>\n27256 27C128 27C256 27C512<br \/>\n27C513 27C64 27HC64 27HC64L<br \/>\n28C04 28C16 28C17 28C64<br \/>\n28CP256 28CP256A 28CP256B<\/p>\n<p><span style=\"text-decoration: underline;\">Greenwich<\/span><br \/>\nGR27128 GR27256 GR27512 GR27513<br \/>\nGR2764 GR281 GR881 GR3281<\/p>\n<p><span style=\"text-decoration: underline;\">Hitachi<\/span><br \/>\nHN27128A HN27128AG HN27128AP HN27256<br \/>\nHN27256G HN27256P HN27512 HN27512G<br \/>\nHN27512P HN27C256 HN27C256FP HN27C256G<br \/>\nHN27C256HG HN27C64 HN462532 HN462716<br \/>\nHN462732 HN4827128 HN482732A HN482764<br \/>\nHN58064 HN58C65 HN58C66P<\/p>\n<p><span style=\"text-decoration: underline;\">Hyundai<\/span><br \/>\nHY2764 HY27C64<\/p>\n<p><span style=\"text-decoration: underline;\">IDT<\/span><br \/>\nIDT78C16A IDT78C256A IDT78C64A IDT78M64<br \/>\nIDT78M64S<\/p>\n<p><span style=\"text-decoration: underline;\">Intel<\/span><br \/>\n27011 27128 27128A 27128B<br \/>\n2716 27256 2732 2732A<br \/>\n27512 27513 2758 2764<br \/>\n2764A 27C128 27C256 27C512<br \/>\n27C64 2816A 2817A 2864<br \/>\n2864A 68C257 8041A *1A 8042 *1A<br \/>\n8048AH *1A 8049AH *1A 8050AH *1A 8741A *1A<br \/>\n8741AH *1A 8742 *1A 8742AH *1A 8744H *1B,C<br \/>\n8748 *1A 8748H *1A 8749H *1A 8751H *1B,C<br \/>\n8755A *1A 87C256 87C257 87C51 *1C<br \/>\n87C64 P27128A P27128B P27256<br \/>\nP27512 P27513 P2764A P27C128<br \/>\nP27C256 P27C64<\/p>\n<p><span style=\"text-decoration: underline;\">Microchip Technology<\/span><br \/>\n27256 27C128 27C256 27C512<br \/>\n27C513 27C64 27HC256 27HC256L<br \/>\n27HC64 28C04 28C04F 28C16<br \/>\n28C17 28C64 28C64A 28C64AF<br \/>\n28C64AX 28C256 28CP256<\/p>\n<p><span style=\"text-decoration: underline;\">Macronix<\/span><br \/>\nMX27C256 MX27C64<\/p>\n<p><span style=\"text-decoration: underline;\">Mitsubishi<\/span><br \/>\nM5L27128K M5L27128K-I M5L27256K M5L27256K-I<br \/>\nM5L2732 M5L27512K M5L2764K M5M27128P<br \/>\nM5M27256P M5M27512P M5M2764P M5M27C128K<br \/>\nM5M27C256K M5M27C256AK M5M27C256P M5M27C512AK<br \/>\nM5M27C512AP M5M28C64AP M5M28C64P<\/p>\n<p><span style=\"text-decoration: underline;\">Mostek<\/span><br \/>\nET2716 ETC2716 ETC2732 MK2716<br \/>\nMK2764 MK38XXX<\/p>\n<p><span style=\"text-decoration: underline;\">Motorola<\/span><br \/>\nMCM2532 MCM2716 MCM68764 MCM68766<\/p>\n<p><span style=\"text-decoration: underline;\">National<\/span><br \/>\nMM2716 MM2716E MM2758-A MM2758-B<br \/>\nNMC2732 NMC27C128B NMC27C128BQ NMC27C128BN<br \/>\nNMC27C128C NMC27C128CQ NMC27C16 NMC27C16H<br \/>\nNMC27C16HQ NMC27C16Q NMC27C256 NMC27C256Q<br \/>\nNMC27C256B NMC27C256BN NMC27C256BQ NMC27C32<br \/>\nNMC27C32B NMC27C32BQ NMC27C32E NMC27C32EH<br \/>\nNMC27C32H NMC27C512 NMC27C512A NMC27C512AN<br \/>\nNMC27C512AQ NMC27C64 NMC27C64N NMC27C64Q<br \/>\nNMC27C64B NMC27C64BN NMC27C64BQ NMC27CP128<br \/>\nNMC27CP128Q NMC9817 NMC98C64A<\/p>\n<p><span style=\"text-decoration: underline;\">NEC<\/span><br \/>\n8748HD *1A uPD27128 uPD2716 uPD27256<br \/>\nuPD2732 uPD2732A uPD2764 uPD27C256<br \/>\nuPD27C256A uPD27C512 uPD27C64 uPD28C04<br \/>\nuPD28C05 uPD28C64<\/p>\n<p><span style=\"text-decoration: underline;\">OKI<\/span><br \/>\nMSM27128A MSM27128AS MSM27128AZB-RS MSM2716<br \/>\nMSM27256 MSM27256AS MSM27256ZB-RS MSM2732<br \/>\nMSM2732A MSM27512 MSM27512AS MSM27512ZB-RS<br \/>\nMSM2764 MSM2764A MSM2764AS MSM2764AZB-RS<br \/>\nMSM2764RS MSM27C128AS MSM27C64AS MSM2816ARS<\/p>\n<p><span style=\"text-decoration: underline;\">Quick Pulse<\/span><br \/>\n27011 27128A 27256 27512<br \/>\n2764A<\/p>\n<p><span style=\"text-decoration: underline;\">Ricoh<\/span><br \/>\nRD27C256 RD27C64<\/p>\n<p><span style=\"text-decoration: underline;\">Rockwell<\/span><br \/>\nR2764 R2764C R27C64 R2816<br \/>\nR5213 R52B13 R52B33 R87C32<br \/>\nR87C64<\/p>\n<p><span style=\"text-decoration: underline;\">Samsung<\/span><br \/>\nKM2816A KM2816AI KM2817A KM2817AI<br \/>\nKM2864A KM2864AH KM2865A KM2865AH<br \/>\nKM28C64A KM28C65<\/p>\n<p><span style=\"text-decoration: underline;\">Seeq<\/span><br \/>\n27128 27256 2764 27C256<br \/>\n2804A 2816A 2816AH 2817A<br \/>\n2817AH 2864 2864H 28C256<br \/>\n28C64 28C64A 28C65 36C16<br \/>\n36C32 38C16 38C32 5133<br \/>\n5213 52B13 52B13H 52B33<br \/>\n52B33H 5516A 5516AH 5517A<br \/>\n5517AH 55B33 55B33H 82005<br \/>\n82025 86063 E52B33 E52B33H<br \/>\nM52B33 M52B33H<\/p>\n<p><span style=\"text-decoration: underline;\">SGS<\/span><br \/>\nET2716 ETC2716 ETC2732 M27128A<br \/>\nM2716 M2716P M27256 M27C256B<br \/>\nM27C512 M2732A M27512 M2764<br \/>\nM2764A ST27128A ST27256 ST2764A<br \/>\nST27C256 TS27C256 TS27C256P TS27C256Q<br \/>\nTS27C64 TS27C64A TS27C64P TS27C64Q<br \/>\nTS28C16AC TS28C16AP TS28C64C TS28C64P<\/p>\n<p><span style=\"text-decoration: underline;\">SGS\/THOMSON<\/span><br \/>\nET2716 ETC2716 ETC2732 M27128A<br \/>\nM2716 M2716P M27256 M27C256B<br \/>\nM27C512 M2732A M27512 M2764<br \/>\nM2764A ST27128A ST27256 ST2764A<br \/>\nST27C256 TS27C256 TS27C256P TS27C256Q<br \/>\nTS27C64 TS27C64A TS27C64P TS27C64Q<br \/>\nTS28C16AC TS28C16AP TS28C64C TS28C64P<\/p>\n<p><span style=\"text-decoration: underline;\">Signetics<\/span><br \/>\n27C256 27C512 27C64A 87C256<br \/>\n87C64 SC87C51 *1C<\/p>\n<p><span style=\"text-decoration: underline;\">SMOS<\/span><br \/>\nSPM27128 SPM27128C SPM27128H SPM27C256<br \/>\nSPM27C256H SPM27C64 SPM27C64C SPM27C64H<br \/>\nSPM2864 SPM2864C<\/p>\n<p><span style=\"text-decoration: underline;\">Synertek<\/span><br \/>\nSY2716<\/p>\n<p><span style=\"text-decoration: underline;\">Thomson<\/span><br \/>\nET2716 ETC2716 ETC2732 MK2716<br \/>\nMK2764 MK38XXX TS27C17AC TS27C17AP<br \/>\nTS27C256 TS27C256P TS27C256Q TS27C64<br \/>\nTS27C64P TS27C64Q TS28C16AC TS28C16AP<br \/>\nTS28C64C TS28C64P<\/p>\n<p><span style=\"text-decoration: underline;\">TI<\/span><br \/>\nSMJ2516 SMJ2532 SMJ2564 SMJ27C128<br \/>\nSMJ27C512 TMS2516 TMS2532 TMS2564<br \/>\nTMS25L32 TMS27128 TMS2732A TMS2764<br \/>\nTMS27C128 TMS27C256 TMS27C512 TMS27C64<br \/>\nTMS27P32A TMS27P64 TMS27PC128 TMS27PC256<br \/>\nTMS27PC512 TMS27PC64 TMS28C64<\/p>\n<p><span style=\"text-decoration: underline;\">Toshiba<\/span><br \/>\nTC54256AF TC54256AP TC54512AP TC57256<br \/>\nTC57256AD TC57256ADI TC57256D TC57512AD<br \/>\nTC57H256D TMM23128-H,H TMM23128-H,L TMM23128-L,H<br \/>\nTMM23128-L,L TMM2364-H,H TMM2364-H,L TMM2364-L,H<br \/>\nTMM2364-L,L TMM24128AF TMM24128AP TMM24256AF<br \/>\nTMM24256AP TMM24256BF TMM24256BP TMM24512AF<br \/>\nTMM24512AP TMM24512F TMM24512P TMM2464AF<br \/>\nTMM2464AP TMM27128 TMM27128A TMM27128AD<br \/>\nTMM27128ADI TMM27128D TMM27128DI TMM27256<br \/>\nTMM27256A TMM27256AD TMM27256ADI TMM27256BD<br \/>\nTMM27256BDI TMM27256D TMM27256DI TMM2732<br \/>\nTMM27512 TMM27512AD TMM27512ADI TMM27512D<br \/>\nTMM27512DI TMM2764 TMM2764A TMM2764AD<br \/>\nTMM2764ADI TMM2764D TMM2764DI<\/p>\n<p><span style=\"text-decoration: underline;\">VLSI Technology<\/span><br \/>\nVT27C256 VT27C512 VT27C64 VTC27C256<\/p>\n<p><span style=\"text-decoration: underline;\">Waferscale<\/span><br \/>\nWS27C128F WS27C256F WS27C256L WS27C512F<br \/>\nWS27C512L WS57C128F WS57C256F WS57C512F<\/p>\n<p><span style=\"text-decoration: underline;\">White Technology<\/span><br \/>\n8014 8020 8023<\/p>\n<p><span style=\"text-decoration: underline;\">Xicor<\/span><br \/>\nX2804A X2816A X2816AI X2816AM<br \/>\nX2816B X2816H X28256 X2864A<br \/>\nX2864AI X2864AM X2864B X2864H<br \/>\nX28C256 X28C64<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Finally got this thing working. Funny story &#8211; I actually had one of these in storage, but it was cheaper just to buy a new one than to rent a zip-car and make a special trip just for this one &hellip; <a href=\"https:\/\/paulcarbone.com\/blog\/ep-1_programmer\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"table_tags":[],"_links":{"self":[{"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/posts\/1169"}],"collection":[{"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/comments?post=1169"}],"version-history":[{"count":8,"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/posts\/1169\/revisions"}],"predecessor-version":[{"id":1522,"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/posts\/1169\/revisions\/1522"}],"wp:attachment":[{"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/media?parent=1169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/categories?post=1169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/tags?post=1169"},{"taxonomy":"table_tags","embeddable":true,"href":"https:\/\/paulcarbone.com\/blog\/wp-json\/wp\/v2\/table_tags?post=1169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}