Thanks Brian, I ordered both boards from oshpark and will build them soon. I appreciate the response and your work on the adapters.
On Thu, Nov 16, 2023 at 01:15:17AM -0500, Brian K. White wrote: > On 11/15/23 16:29, runrin wrote: > > Thanks for the info Brian, I really appreciate it. > > > > My plan is just to pop the ROM out when I need to reprogram it. I'm > > actually more comfortable unscrewing the back from the system than > > popping out the option ROM cover anyway, since the brass inserts are > > probably more robust that the tight plastic snap on the back panel. It > > freaks me out every time I pop that thing open :P > > > > A few Qs: > > > > 1. It seems like pin 27 (/CS) on the system ROM is normally pulled low by a > > CPU read. /CS on the EEPROM should be fine if I just jumper /CS_IC to > > /CS_BUS and skip the R2 pullup, right? > > R2 disables the chip when REX is connected. > > With a jumper installed, the bus overrides R2 and the chip works like a > normal rom. > > With the REX wires installed, and the two wires connected to each other in > the option rom compartment, that's just another form of jumper. The bus > overrides R2 and the chip works like a normal rom. > > With the REX wires installed, and /CS_BUS wire connected to REX TP1 and > /CS_IC wire unconnected, R2 keeps the flexrom chip always disabled so as to > never conflict with the REX. When the bus tries to enable the main rom, the > REX responds instead. > > If you want to hard-code everything and save a few cents, you can omit R2 > and solder bridge /CS_BUS to /CS_IC, and the result is like an ordinary rom. > > R1 still allows you to write to the chip by being a pullup instead of a hard > trace. If you build the board normally with the /CS pins and R2 populated, > you have to install a jumper on those pins for programming anyway, so a > solder blob is the same. It just means you can't use the REX software main > rom feature. > > To program, if you have a SOIC test clip, then you can just use that and JP2 > doesn't matter. If you don't have a SOIC test clip, then build the matching > programming adapter and install a jumper onto JP2. Remove the jumper when > not programming. > > The ALE pin is just a pin in this case. It's not really ALE, just a pin that > the programming adapter uses to route pin 27 from the programmer ultimately > back to pin 27 on the eeprom, but using pin 23 along the way because of > having to work around the non-standard main rom pinout. > > The wikipedia page for the 8085 has a reasonable high level explanation: > "The 8085 is supplied in a 40-pin DIP package. To maximise the functions on > the available pins, the 8085 uses a multiplexed address/data (AD0-AD7) bus. > However, an 8085 circuit requires an 8-bit address latch, so Intel > manufactured several support chips with an address latch built in. These > include the 8755, with an address latch, 2 KB of EPROM and 16 I/O pins, and > the 8155 with 256 bytes of RAM, 22 I/O pins and a 14-bit programmable > timer/counter. The multiplexed address/data bus reduced the number of PCB > tracks between the 8085 and such memory and I/O chips." > > Basically A0-A7 and D0-D7 both use the same 8 physical pins, at different > times. When ALE is high, those pins are address, when ALE is low, those pins > are data. > > Basically the low 8 bits of the bus to be used for both address and data at > different times. When ALE is high, AD0-AD7 are A0-A7. When ALE is low, > AD0-AD7 are D0-D7. > > Why they bothered to route that line to the main rom and to the optrom > sockets when those sockets have full normal separate non-conflicting address > and data pins I don't know. You can use a bog standard 27C256 in both places > (with the pinout rearranged) and totally ignore the ALE pin. Other logic > supplies the correct /CE /OE signals at least for those sockets. > > -- > bkw > > > > > > > I'll obviously still use the R1 pullup for /WE on the EEPROM. I was > > considering using a DIP switch as a jumper for /WE to ALE instead of a > > jumper if it fits in the case. That way I don't have to dig around for a > > jumper every time I want to program the EEPROM. > > > > 2. More of a technical question about the m100 architecture: > > > > I'm curious if you know how ALE is normally being used by the CPU/system > > ROM? It looks like it's being used by M1 and M25 as well. I haven't > > encountered an address latch before, coming from mostly 6502 and Z80, > > and I'm interested to understand its purpose. > > > > Thanks again! > > > > On Sun, Nov 12, 2023 at 10:05:44PM -0500, Brian K. White wrote: > > > REX# does not provide any software main rom feature, only REX Classic > > > does. > > > > > > You can use a FlexROM as just an ordinary re-writable rom to replace the > > > stock one, but you would need to open up the machine to re-write the > > > eeprom > > > (or flash, there is also a flash version). You just install a jumper on > > > the > > > /CS pins which has the effect of just connecting the /cs pin from the bus > > > directly to the /cs pin on the eeprom like normal. > > > > > > To get a software main rom, you need a REX Classic. > > > > > > You write a normal main rom to the chip and install it like normal, but > > > you > > > connect two wires to the /CS pins instead of a jumper. Run the two wires > > > out > > > to the option rom compartment, just fish them both through one of the > > > little > > > holes where the compartment door tabs go. Keep track of which wire is the > > > /CS_OUT one. Label it REX TP1 on the end in the compartment. That is the > > > one > > > that connects to the bus, and that is the one that needs to be connected > > > to > > > the TP1 pin on the REX, but don't connect it initially. Leave the other > > > wire > > > disconnected. Don't put it on the TP2 pin. > > > > > > Close up the machine. You don't need to go inside again. > > > > > > Initially, connect the two wires to each other in the option rom > > > compartment. IE with a short male-male dupont wire, or just any plain > > > solid > > > wire that has a thick enough guage to stick in the female dupont wire > > > ends. > > > This causes the machine to boot from the main rom on the flexrom inside > > > the > > > machine. > > > > > > Boot the machine and activate the REX by the usual CALL 63012 > > > > > > Find the y2k T102 main rom image from the flexrom wiki page, and like > > > described there, make 2 copies of the Y2K fixed T102 main rom image, and > > > hex > > > edit them to change the text displayed in the copyright banner in BASIC, > > > just so that later you have a way to see which rom you are actually > > > running. > > > > > > In REXMGR, hit tab until you get to the SYS screen, and load the priimary > > > and secondary main rom images via TPDD the same as loading option rom > > > images > > > or ram backup images. > > > > > > Now shut the machine off and connect the /CS_OUT wire to the REX TP1. > > > Leave the other wire disconnected. Don't put it on the TP2 pin. > > > > > > Now boot the machine and go into BASIC and see the altered banner. > > > > > > Going forward, you can keep reloading hacked versions of main rom images > > > into either the primary or secondary slots, or both, since the flexrom > > > wire > > > ends up acting as a 3rd ultimate fallback so you can always boot even if > > > you > > > totally screw up both primary and secondary slots. You Can't break the > > > internal main rom no matter what you do with the rex. The only way to edit > > > the internal main rom is to open the machine back up and connect it to a > > > programmer. > > > > > > It's actually super convenient once it's set up. REX makes it a breeze to > > > load the images, and having 2 slots means you can keep one slot sacrosanct > > > and only hack on the other slot, so you can recover from borked hacks > > > without even having to open the option rom compartment and switch the > > > wires. > > > > > > Without a REX Classic, you can still re-write the rom, but only by > > > connecting it to a programmer, so it needs the machine to be opened up. > > > > > > The pics show using a SOIC test clip, but there is also a programming > > > adapter pcb you can make instead. > > > https://github.com/bkw777/aDIPters#flexrom_100 > > > https://github.com/bkw777/aDIPters#flexrom_100-programming-adapter > > > > > > Or for the flash version, because the 28C256 eeprom is getting ridiculous > > > expensive these days.: > > > https://github.com/bkw777/aDIPters#flashrom_100 > > > https://github.com/bkw777/aDIPters#flashrom_100-programming-adapter > > > > > > > > > -- > > > bkw > > > > > > On 11/12/23 17:07, runrin wrote: > > > > Hi all, > > > > > > > > I've got a REX# in my m100 and was wondering if it was compatible with > > > > the FlexROM, which I see uses some jumper cables to interface with the > > > > original REX. The REX# doesn't seem to have the pins to connect those > > > > jumpers. > > > > > > > > My priority is changing the keymap for the m100 since I don't use > > > > QWERTY, but being able to hack the ROM right from the machine with the > > > > REX seems like a nice feature. I will likely order a FlexROM board > > > > anyway, since it seems like the best option to swap my LH535618 system > > > > rom. > > > > > > > > Has anyone had any success getting the FlexROM working with the REX#? > > > > Any tips would be appreciated. I don't mind hacking the REX# with bodge > > > > wires if that's what I have to do. > > > > > > > > If anyone has other suggestions for the best way to swap the rom, it's > > > > unlikely I will be doing it regularly once I have my keymap working the > > > > way I want, so I'd be open for suggestions there too. > > > > > > > > Thanks! > > > > > > -- > > > bkw > > > > > -- > bkw >