That's great Farid!!Thanks for sharing!! Now I have another reason to try to build this burner. Unfortunatelly, I don't think this will compile under Linux... Maybe with some small modifications.

@Krzysiobal:I don't know much about the inner workings of the paralel port, and I really think there are better options around.But it seems very simple and inexpensive to use it.Back in the day there was many stuff that successfully used it.I've even been using an N64's GameShark inside a Win98 virtual machine without issues.Maybe it's because I'm still using a PC wich have an onboard paralel port...By the way, I think the gamecon driver rocks!!

If you have a tight assembly loop, you can probably get a read speed of not more than ≈2MHz? Random projects implementing parallel port logic analyzers show speeds roughly around that.

Remember that you have to configure your parallel port to use its data pins as an input, not an output. How depends on whether the port is running in "Bidirectional", "ECP", or "EPP" mode. Depending on things, you might find it simpler to use the status pins and control pins to accept input from the ROM instead of the data pins, and instead use the data pins to reset and clock the counters.

Well It didn't work! So this is way too tough than it seems at first even for a simple read operation!Here are some notes I found out from googling :

I have to use only EPP mode and not SPP or ECP.

Reg5 of Control pin is used for Enabling Bi-directional mode for D0 ~ D7 [pin2 ~ pin9]. So I have to set it to 1 to enable this feature.

Before you can start any EPP cycles by reading and writing to the EPP Data and Address Ports, the port must be configured correctly. In the idle state, an EPP port should have it's nAddress Strobe, nData Strobe, nWrite and nReset lines inactive, high. Some ports require you to set this up before starting any EPP Cycle. Therefore our first task is to manually initialise these lines using the SPP Registers. Writing XXXX0100 to the control port will do this.

The Status Port has one little modification. Bit 0, which was reserved in the SPP register set, now becomes the EPP Time-out Bit.The EPP Timeout bit we have already discussed. When this bit is set, the EPP port may not function correctly. A common scenario is always reading 0xFF from either the Address or Data Cycles. This bit should be cleared for reliable operation, and constantly checked.

The control signals used to perform the bus cycles are fairly simple. As aexample, consider an address write cycle. To begin an address write cycle, thehost places an 8-bit address on_ADO-AD7 and pulls Write (indicating that thehost is doing a write operation) and AStrb (indicating that the information onADO - AD7 is an address) low. The peripheral device corresponding to theaddress responds by setting Wait high to indicate that it recognizes it's beingaddressed and is ready to receive the address byte. Upon seeing Wait go high,the host de-asserts AStrb. This action signals the peripheral to read and store thebyte on ADO-AD7 to use as the register address for following data cycles. Theperipheral then pulls Walt low to indicate that it's ready for a new bus cycle, andthe host ends the current bus cycle by removing the signals from ADO-AD7 andsetting Write back high.A data read bus cycle proceeds in much the same manner. The Dstrb and Waitlines are the handshake signals that coordinate the data transfer, and the state ofthe Write line determines whether the bus cycle is a read cycle or a write cycle.

Last edited by FARID on Wed Aug 30, 2017 6:29 am, edited 2 times in total.

Are you specifically trying to support programming the 27C801 ? It'd be much easier if you didn't.

Looking for information, I found a example "breakout" schematic that basically shows the EPP as nothing more than two multiplexed 8-bit bidirectional ports via the standard pinout. Think of pin 1=/C0=/Strobe as "Read//Write", and /AddrStrobe and /DataStrobe as inverted forms of NES's +M2.

If you didn't add support for programming/burning. If you only supported reading.

Quote:

How can I invert the signal?

74'04, e.g.

There's a huge variety of parts that can be used as an inverter. 74'00 through 74'07, '10, '12-'14, '18, '22-'30 ... and, yes, the simple single-BJT inverter you made also.

The "trivial breakout" schematic I found was just* 74'00 (generating /RD=NOT(READ//WRITE) and /WAIT=NAND(/DSTROBE,/ASTROBE) )* 74'32 (generating all four possible combined strobes: /WRDATA=OR(/DSTROBE,R/W), /WRADDR=OR(/ASTROBE,R/W), /RDDATA=OR(/DSTROBE,/RD), /RDADDR=OR(/ASTROBE,/RD))* two 74'244s (relaying two external 8-bit buses to the parallel port's D pins on /RDADDR and /RDDATA)* two 74'273s (latching two external 8-bit buses from the parallel port's D pins on /WRADDR and /WRDATA)

Easier to start with a higher voltage power source and use linear regulators to drop it down to the two operational voltages. I know, wall warts are déclassé.

Anyway, both are capable of more current than programming will need, both require the same number of external parts. I'd pick based on price or ease of obtaining.

A little caveat: parallel ports switched to operating at 3.3V about the same time as PCI slots started being used. 27xxx UVEPROM programming appears to use TTL voltages so you're probably safe. Do be careful during the read phase of programming that you don't expose the parallel port to 6.5V. (It won't like that)

So I decided to use MC34063 to boost 5v to 12.75v, because it is inexpensive and small.I checked it's datasheet and in page 13 there is an example circuit for 12v --> 28v but I want 5v --> 12.75v so I have to recalculate the parts value.In page 14 there are some great and awesome formula for calculation the values, but calculation manually is a real pain in the @$$!Fortunately I found this online calculator for MC34063There are four parameters :V_in : 5vV_out : 12.75vI_out : 50mA (according to page 15 of M27C801 datasheet : Ipp)V_ripple : ?f_min : ?

There is a note in MC34063a datasheet page 13 :fmin = Minimum desired output switching frequency at the selected values of V_in and I_out Vripple = Desired peak-to-peak output ripple voltage. The ripple voltage directly affects the line and load regulation and, thus, must be considered. In practice, the actual capacitor value should be larger than the calculated value, to account for the capacitor's equivalent series resistance and board layout.

Who is online

Users browsing this forum: No registered users and 5 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum