Re: [M100] FlexROM with REX#

2023-11-16 Thread runrin
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 

Re: [M100] FlexROM with REX#

2023-11-15 Thread Brian K. White

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 

Re: [M100] FlexROM with REX#

2023-11-15 Thread runrin
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?

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 

Re: [M100] FlexROM with REX#

2023-11-12 Thread Brian K. White

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



Re: [M100] FlexROM with REX#

2023-11-12 Thread runrin
FlexROM is just an adapter. It has two headers that you can connect to
jumper wires and route them to the option rom compartment. To write a
new rom to the system, you don't have to open the whole system, you just
pop open the option rom compartment, hook the jumpers to the REX and
then somehow write to the system rom. It's pretty confusing, but seems
like a neat feature.

There's more info here: http://tandy.wiki/FlexROM_100

Like you suggested, I'll probably just use that board as an adapter and
test the rom in Virtual T.

On Sun, Nov 12, 2023 at 06:16:02PM -0500, Stephen Adolph wrote:
>Sorry, no REX# does not include the function to replace the main ROM.
>How I would tackle a custom ROM in the M100
>* develop in inside Virtual T
>* get a socket adapter PCB for a 27C256 EPROM, or better still use an
>EEPROM
>* once you have a prototype in VT, burn it and install in the M100
> 
>Maybe FlexROM helps? is it a better way to get the ROM swapped?  I
>don't know much about it.
>...Steve
> 
>On Sun, Nov 12, 2023 at 5:10 PM 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!


Re: [M100] FlexROM with REX#

2023-11-12 Thread Stephen Adolph
Sorry, no REX# does not include the function to replace the main ROM.
How I would tackle a custom ROM in the M100
* develop in inside Virtual T
* get a socket adapter PCB for a 27C256 EPROM, or better still use an EEPROM
* once you have a prototype in VT, burn it and install in the M100

Maybe FlexROM helps? is it a better way to get the ROM swapped?  I don't
know much about it.
...Steve

On Sun, Nov 12, 2023 at 5:10 PM 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!
>


[M100] FlexROM with REX#

2023-11-12 Thread runrin
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!