{"id":85,"date":"2020-03-07T16:44:05","date_gmt":"2020-03-07T16:44:05","guid":{"rendered":"https:\/\/www.z88dx.com\/?page_id=85"},"modified":"2020-03-07T16:46:28","modified_gmt":"2020-03-07T16:46:28","slug":"eprom-emulator","status":"publish","type":"page","link":"https:\/\/www.z88dx.com\/index.php\/hardware\/eprom-emulator\/","title":{"rendered":"EPROM Emulator"},"content":{"rendered":"\n<div class=\"wp-block-file\"><a href=\"https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/ee2.zip\">Construction of the Emulator<\/a><a href=\"https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/ee2.zip\" class=\"wp-block-file__button\" download>Download<\/a><\/div>\n\n\n\n<p>The EPROM Emulator, presented here by Keith Rickard, can be used with the Z88 to make developing ROM-based applications easier.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"637\" height=\"369\" src=\"https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/pic1.jpg\" alt=\"\" class=\"wp-image-86\" srcset=\"https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/pic1.jpg 637w, https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/pic1-300x174.jpg 300w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><\/figure><\/div>\n\n\n\n<p>The Eprom emulator is a device which is connected to the parallel port of your PC (or Amiga) and allows you to send a Z88 Eprom image from a file to the emulator, using the DOS command:&nbsp;<em>COPY filename LPT1:\/B<\/em><\/p>\n\n\n\n<p>The other end of the emulator is connected to a special card which is plugged into a slot in the Z88. The upshot is that the Z88 thinks it has a bona fide Eprom card in its slot and reacts to the image in the normal way. It could be an application or simply a file Eprom.<\/p>\n\n\n\n<p>It can emulate 8K (not that useful!), 16K, 32K and 64K Eprom cards. It takes about 5 seconds for the image to be download from the PC. Obvious uses for this device (as deployed by myself) are improved ease for developing Z88 applications, downloading files to the Z88 and looking at other peoples application ROM images (have had Manic Miner and Camelot working through it!).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Building the EPROM emulator<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted\"> From pages 14 to 20 of the ELEKTOR ELECTORNICS SEPTEMBER 1992 magazine. \n EPROM EMULATOR II\n This is a revamped version of an EPROM emulator we published about three years\n ago.  This time we propose to build the circuit with standard size components\n rather than SMA (surface mount assembly) components, which some of you have\n found difficult to obtain as well as handle.  The present version of the\n emulator has a RAM of 64 KByte, and is capable of emulating 2764s up to and\n including 27512s.  Also, by parallel connection of Centronics cables,\n extensions to bus widths of 16 bits or 32 bits are easier than before.\n MAIN SPECIFICATIONS\n \ufffd    Emulates EPROMs 2764 through 27512\n \ufffd    Connected to Centronics port\n \ufffd    Auto reset function\n \ufffd    8-, 16- or 32-bit configuration\n \ufffd    No driver software required; use is made of existing system\n     utilities (MS-DOS, Windows, ST and Amiga)\n Design by B.C. Zschocke and N. Breidohr\n AN EPROM emulator replaces the EPROM in a computer system (to which a program\n is to be developed) by RAM that behaves like an EPROM.  The advantages are\n well-known: the contents of the RAM can be overwritten as many times as you\n like, and the data transfer from the PC (running an assembler) to the target\n system is much faster.  Errors in the object program are thus easily and\n quickly corrected, because it is no longer necessary to remove the EPROM,\n erase it, and reprogram it.\n The data transfer from the PC to the emulator described here does not require\n special file formats like Intel-Hex, Tektronics or Motorola.  Instead,\n standard system utilities can be used to output the previously prepared binary\n file via the Centronics port.\n Application range\n The present emulator replaces the byte-organized EPROMs with a capacity of\n 8 KBytes (2764) to 64 KBytes (27512).  The now obsolete 2-KByte and 4-KByte\n EPROMs Types 2716 and 2732 may also be emulated with the aid of a specially\n prepared adaptor board. Up to four emulators may be connected in parallel\n to 'attack' systems with a bus width of 32 bits.  The EPROM data may be\n furnished by any computer system with a Centronics port.  The STROBE pulses\n supplied by the computer have four functions. \n (1) they indicate that the data is stable and valid; \n (2) they enable the emulator;\n (3) they clock three-state counters IC7, IC8 and 1C9; and \n (4) they select a particular emulator in 16-bit or 32-bit systems.\n The counter outputs address two RAM ICs with a capacity of 32 Kbyte each. The\n data applied to the input of the emulator is 'acknowledged', and copied\n directly into the RAM.  The selection of the RAMs is accomplished via A15 of\n counter IC9, and one half of IC12.  After the last byte has been stored in\n the RAM, the counter is switched to high-impedance output mode\n ('three-state'). The individual RAM addresses are then available for selection\n through the address buffer, and can be read via the data output buffer.  The\n addressing of the RAM at this stage is accomplished by the host system, i.e.,\n the computer system or (more generally) application circuit whose EPROM is\n emulated.\n Circuit description\n Essentially, the circuit consists of three blocks:\n (1) A control section around IC10 and IC11, which serves to ensure the \n proper bus timing on the Centronics interface, and generate a number of\n internal signals.  This section also supplies the RESET signal for the\n application circuit (Auto-RESET).  All signals are taken to the 'outside\n world' via open-collector buffers\/drivers contained in IC13.  One driver\n serves to generate the strobe signal.\n (2) A byte selection circuit (IC7 and one half of IC12), which arranges the\n distribution of the received 8-bit data between parallel emulators in 16-bit\n and 32-bit applications.  This circuit is required only if a 16-bit or 32-bit\n extension is envisaged.\n (3) A RAM address and load address generator consisting of a counter (IC8 and\n IC9) that supplies the RAM addresses during loading, a latch (IC6) for\n intermediate storage of Centronics databytes, and drivers (IC3, IC4 and IC5)\n that interface to the EPROM socket in the application circuit. Depending on\n the mode of operation of the circuit (loading or emulating), either the \n counter\/latch combination or the EPROM socket interface are in control of the\n EPROM addresses and data.\n Since 64-Kx8-bit RAMs are not easily obtained at reasonable prices, the\n present emulator is based on two 32-Kx8-bit RAMS.  These offer a total storage\n capacity of 64 KByte, and allow the emulator to mimic EPROMs up to and\n including the 27512. When smaller EPROMs are used, address lines A15\n (27256), A15\/A14 (27128) or A15\/A14\/A13 (2764) must be tied to ground via\n the appropriate jumpers (see Table 1).\n Operation in detail\n The Centronics standard stipulates that data must be stable for a certain\n time before and after the STROBE pulse.  This ensures freedom of using either\n the leading or the trailing edge of the strobe signal to capture data from\n the printer's Centronics input.  In the emulator, both edges are used.\n At power-up, R7 and C7 provide a defined state. Bistables IC11a and IC11b\n are set, while bistables IC10a and IC10b are reset. IC1lb clears all\n counters, and switches the circuit to the emulate mode. With reference to\n the timing diagram of the 8-bit version (Fig. 2), the negative edge of the\n STROBE signal triggers IC10b, and resets IC1la and IC11b. Next, IC11b\n switches the circuit to load mode, and actuates the RESET line. IC11a\n actuates the Centronics BUSY line, and the positive edge at its output causes \n the counter state to be transferred to the counter register, and the\n Centronics databyte to be transferred to the latch.  Data and address are\n allowed to stabilize at the respective RAM inputs while the STROBE pulse\n lasts.  The positive edge of the STROBE pulse triggers IC10a, and actuates\n the RAM WRITE signal and the Centronics ACKNLG (acknowledge) signal during\n the monotime of IC10a.  The signal edge that marks the monotime sets IC11a,\n and so clears the BUSY signal. At the same time, the counter is advanced one\n state. The first byte has been stored in RAM, and the circuit is ready to\n receive the next byte. A byte received within the monotime of IC10b causes\n this monostable to be triggered again. Otherwise, the above cycle starts\n again on detection of the negative edge of the STROBE pulse.  If no databyte\n is received during the monotime of 1C10b, the circuit switches to emulate\n mode, clears the RESET signal, switches the counters to three-state, and\n resets them. At this point, the RAM addressing is taken over by the\n application circuit.\n To prepare the circuit for use in 16-bit or 32-bit applications, 1C7 and one\n half of IC12 divide the internal RAM WRITE and counter output signals.\n Depending on the jumper setting, either the each first, second, third or\n fourth byte is copied into the latch, while the counters receive an\n appropriately reduced number of clock pulses.  The RAMs are switched via\n their CS (chip select) lines, with the aid of address line A15 and the other\n half of IC12.\n At first glance, the outputs Of IC10b and IC11b behave identically.  Why,\n then, are both used?  The timing diagram shows an unexpected, rather\n unwelcome, quirk of the monostable, IC10b.  At the (relatively long)\n monotime, the time between the triggering instant and the output actuation\n instant is not short enough.  This caused problems in a number of prototypes.\n The trigger signal supplied by IC10b actuates IC11b instantly, while IC11b\n is de-actuated again by the negative edge Of IC10b. Capacitor C6 may also\n cause trouble if it cannot be discharged quickly enough by IC10.  Increasing\n its value must, therefore, be done with care.\n LED D1 lights when the computer feeds data into the emulator.  The \n (active low) RESET signal is taken to the application circuit via connector\n K2.  On completion of the load activity, the emulator releases the RESET line,\n and so re-starts the application circuit, which subsequently runs its new\n software contained in the emulator RAM.\n The emulator is powered either by the application circuit (via Sl-10), or by\n the onboard stabilizer (via S1-9), whose input is connected to a small mains\n adaptor with d.c. output.  Whether or not an external power supply is\n required is, of course, dependent on the capacity of the target system's \n power supply. A power supply conflict may arise when the emulator is powered\n by the application circuit, and this is switched off, or powered down during\n reset, while the 'other side' of the emulator is connected to the PC (which\n is still on) via a Centronics cable. If this happens, the emulator is powered\n via the protection diodes in the Centronics interface of the PC. This results\n in a supply voltage of about 3V, which is sufficient for the RAMs to retain\n their data, but not for the TTL circuits to operate properly. If, in this\n condition, the application circuit is switched on, the emulator may go into\n an undefined state, which may be ended by pressing a button connected between\n point 'S' and ground.  A better solution, however, is to power the emulator\n from an external source via IC14. The previously described power supply\n conflict may also damage the emulator, because the current sent into the\n application circuit via the EPROM socket may become so high that the driver\n Ics are destroyed.\n Practical hardware\n The printed circuit board designed for the EPROM emulator is a high-density\n double-sided, through-plated type, which is best purchased ready-made through\n our Readers' Services.  Space is pretty tight on the board, so keep an eye on\n the pitch of the capacitors.  Capacitor C11 is fitted at the solder side of\n the board, underneath IC1.\n Pin header K1 is suitable for two types of connection: its pinning is\n compatible with a 25-way sub-D connector (allowing ready use of IDC-style\n connectors), as well as with a 36-way Centronics socket.  When the latter\n is used, make sure to remove pins 4 and 6, or cut the relevant tracks.\n When a 25-way sub-D connector is used, it is, unfortunately, not possible to\n create a 'loop-through' connection for the supply voltage.  To reduce cost,\n a 40-way IDC socket was used on the prototype - a 26-way type (for connection\n to sub-D plug) is, of course, also possible.\n The 16-bit and 32-bit versions of the EPROM emulator require two or four\n col plete circuits, respectively, which are driven by a common line, for\n instance, via four IDC-style Centronics plugs. The jumper settings on each\n board may be found in Table I The emulators are mutually synchronized via the\n ACK line on the Centronics interface The BUSY line may be connected on one\n board only (S1-12).  In case the emulators are to be powered by a single,\n external, supply this is connected to one board only, from where the supply\n voltage is distributed via pin S1-11 on each board. On the board from which\n the supply voltage is distributed, S19 must be closed. On all other boards,\n Sl-9 is open. Sl-10 must be closed on all boards.\n Software\n As already mentioned, special software is not strictly required.  The emulator\n RAM can be loaded with the aid of any system capable of outputting binary\n files in form, via the Centronics port. This that the EPROM emulator can be\n used with any computer sporting a Centronics-com ipatible printer port.\n Users of MS-DOS PCs may want to obtain version 2.0 of EPROMSIM, a program\n which is available on disk through our Readers Services as item ESS129.\n EPROMSIM supports EPROMs up to 64 KByte, and is capa ble of handling the\n following 'intelligent file formats:\n \ufffd Intel Intellec-8;\n \ufffd Tektronix hexadecimal;\n \ufffd Motorola.\n Construction\n When building the circuit, remember to remove pins 4 and 6 of the Centronics\n socket if used.  To ensure ready access, the DIP switch array is best mounted\n on IC sockets.  Alternatively, you may want to fit the switches at the solder\n side of the board, and cut a clearance in the back panel of the enclosure.\n The LED wires may be extended to enable the LED to be fitted in a hole in the\n cover panel.  Further constructional points that deserve your attention are\n the mounting of the Centronics input socket, and the strain relief on the\n flatcable to the EPROM adaptor.\n The EPROM adaptor is home-made. As shown in Fig. 5, it consists of a piece\n of strip board, two lengths of IC pin strip, a box header and two 28-way\n IC sockets. The flatcable from the EPROM emulator is fitted with a 28-way\n IDC socket. You may want to make one adaptor for each EPROM type, and wire\n jumpers A13, A14 and A15 appropriately, direct on the socket.  Wires 29 to\n 34 of the flatcable are connected to the RESET generator on the emulator\n board, and may also be taken to the adaptor socket to create a RESET\n connection for the application circuit.\n DOWNLOADING TO THE EPROM EMULATOR\n PC\/MS-DOS    COPY  LPT1:\/B (\/B for binary output)\n Amiga    COPY  PAR: (PAR:, not PRT:)\n TOS    On the ST it is sufficient to double-click on the filename shown on\n     the desktop, and then output to 'printer'.  It should be noted,\n     however, that the TOS appends a CR\/LF sequence to each file.\n     This means that the last two bytes of a 32-Kbyte file can not be\n     used.  However a simple printer manager that does not output the\n     CR\/LF sequence should not be too difficult to write in Pascal, C\n     or BASIC.\n COMPONENTS LIST\n Resistors:\n 6    10k Ohm             R1;R2;R4;R5;R8;R12\n 1    470 Ohm             R3\n 1    1M Ohm              R6\n 4    100k Ohm            R7;R9;R10;R11\n 2    7-way 10k Ohm SIL       R13;R14\n Capacitors:\n Pitch 0.2 inch (5mm)\n 1    470uF 16V radial        C1\n 2    330nF               C2;C7\n 11    100nF               C3;C8-C18\n 1    1nF             C5\n Pitch 0.1 inch (2.5)\n 1    100uF 16V radial        C4\n 1    2uF2 16V radial         C6\n Semiconductors:\n 1    LED, green, 3mm         D1\n 2    62256 (&lt;100ns)          IC1;IC2\n 3    74HCT541            IC3;IC4;IC5\n 1    74HCT574            IC6\n 3    74HC590             IC7;IU8;IC9\n 1    74HCT123            IC10\n 1    74HCT74             IC11\n 1    74HCT139            IC12\n 1    7407 (or 74LS07)        IC13\n 1    7805                IC14\n Miscellaneous:\n 1 12-DIP switch block, or 24-way pin header block with jumpers\n                     S1\n 1    40-way box header       K1\n 1    34-way box header       K2\n 1 40-way IDC socket\n 1 34-way IDC socket\n 1 IDC Centronics socket\n 1 TO-220 style heatsink\n 1    Printed circuit board       910082\n 1 ABS enclosure; approx. size 160x80x32mm\n IC sockets\n 28-way DIL adaptor (see Fig.5)\n Approx 50cm 36-way flatcable\n Per the September 1992 magazine, the circuit board 910082 can be purchased\n for \ufffd8.50 + VAT (\ufffd9.99) from:\n ELEKTOR ELECTRONICS (PUBLISHING)\n P.O. BOX 1414\n Dorchester\n DT2 8YH\n England\n Method of payments available:\n \ufffd Bank draft\n \ufffd Cheque (made payable to Elektor Electronics)\n \ufffd Giro transfer (account no. 34 152 3801)\n \ufffd Postal order\n \ufffd Visa, Acces, Mastercard, Eurocard.<\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"374\" height=\"451\" src=\"https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/front.jpg\" alt=\"\" class=\"wp-image-87\" srcset=\"https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/front.jpg 374w, https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/front-249x300.jpg 249w\" sizes=\"auto, (max-width: 374px) 100vw, 374px\" \/><figcaption> Front cover colour picture of the EE2 <\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"683\" height=\"557\" src=\"https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/fig1.jpg\" alt=\"\" class=\"wp-image-88\" srcset=\"https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/fig1.jpg 683w, https:\/\/www.z88dx.com\/wp-content\/uploads\/2020\/03\/fig1-300x245.jpg 300w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><figcaption> Block diagram <\/figcaption><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The EPROM Emulator, presented here by Keith Rickard, can be used with the Z88 to make developing ROM-based applications easier. The Eprom emulator is a [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":33,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-85","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.z88dx.com\/index.php\/wp-json\/wp\/v2\/pages\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.z88dx.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.z88dx.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.z88dx.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.z88dx.com\/index.php\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":0,"href":"https:\/\/www.z88dx.com\/index.php\/wp-json\/wp\/v2\/pages\/85\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.z88dx.com\/index.php\/wp-json\/wp\/v2\/pages\/33"}],"wp:attachment":[{"href":"https:\/\/www.z88dx.com\/index.php\/wp-json\/wp\/v2\/media?parent=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}