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