Jump to content
IGNORED

New MC-10 ROM...


JamesD

Recommended Posts

For this year's retro challenge I built a new version of the MC-10 ROM that had some speed optimizations and I added the ELSE command.
Part way through the contest I had other things to occupy my time and let's just say I had to deliver a lot less than I had planned.
I discuss this in my blog if you care for more details.

Since that time I've continued to squeeze optimizations into the ROM that were actually written during the contest but I didn't get to debug them in time.
Now I have some key optimizations I had planned and instead of barely being able to notice, the difference is now obvious..
A key optimization was using the hardware multiply instruction in the floating point multiply.
Now Ahl's Benchmark finishes in about 67 seconds. 52 seconds faster than the original ROM and well ahead of 6502 versions of Microsoft BASIC.
Not everything gets that kind of speed boost, but it's at least double the speed increase of what I released for the contest, and if I had more ROM space, I have several things left that I could speed up.
It's not blindingly fast by any means, but I think people will appreciate the difference.

As of today, this is how the old and new ROM compare on a BASIC program drawing circles.
This does use the multiply so it's speed boost is a bit higher than most things, but everything does look faster.


Edited by JamesD
  • Like 3
Link to comment
Share on other sites

Interesting stuff. I've been noodling along similar lines with the TRS-80 Model III BASIC ROM. Only there I've been trying to reduce the size of it just to see if it is possible and partly to get a feeling for how well it was adapted from the original 8080 to the Z-80.

 

So if you're looking to save space in the ROM I may have some ideas that will apply to MC-10 BASIC. One particularly fruitful area was in reducing the overhead of error handling. In the Z-80 version it had many places where it would do things like "LD E,#30; JP C,ERROR". I was able to reduce those down to simple "CALL C,ERROR30" for only 3 bytes overhead per error rather than 5.

Link to comment
Share on other sites

Ahh, now I see it. The post title was a "bit" overlook-able, my apologies. I'd like to try this, would a 27c64 just pop in or do I need to desolder the existing rom and place a socket inside? I guess I could just open the mc-10 and look, but you've already seen how lazy I appear.

Link to comment
Share on other sites

Ahh, now I see it. The post title was a "bit" overlook-able, my apologies. I'd like to try this, would a 27c64 just pop in or do I need to desolder the existing rom and place a socket inside? I guess I could just open the mc-10 and look, but you've already seen how lazy I appear.

Most MC-10s have the ROM soldered in. :(

If you are one of the lucky few like me, I have a socketed ROM. I'd need to look at the pinout on the schematic to see what EPROMs will work.

The one in it is 8K, The board isn't wired to take a 16K ROM either.

 

It seems to me, my machine's serial # is 200096 or something like that. I think they started numbering at 200000, so if you have a low serial # you probably have a socketed board.

 

Link to comment
Share on other sites

I wouldn't be in a hurry to burn a new ROM just yet. I'd like to see people abuse it in an emulator for a while before we can be sure it doesn't have any new bugs.
I even swapped ROM files after posting that anyway.

I'm working on an optimization for the divide, SQR, and ^ (power) functions.
All of those are pretty slow. Since divide is used by several other functions, it would speed up a lot of things.
How I'll get them to fit I don't know.

Link to comment
Share on other sites

It seems to me, my machine's serial # is 200096 or something like that. I think they started numbering at 200000, so if you have a low serial # you probably have a socketed board.

 

 

535724, although I do have a spare in the garage that I'll have to dig up and check. In the mean time, I've opened her up, removed the shielding, and confirmed that it is indeed soldered.

 

I'm surprised to see, at more than 1/4 million units into the run, that U12 is a stack of two 74 ic's with bodge-wires running all over.

I may as well put in a composite mod now that it's open.

Link to comment
Share on other sites

If the original ROM is a 2364, you either need a Motorola 68764/68766 EPROM (very scarce and few programmers support it) or an adapter consisting of two sockets and some wires to plug in a 2764. The adapter is rather common and you can find both instructions online and ready-made boards that reroute the signals.

 

http://vic-20.de/x1541/hardware/2364.html

http://blog.worldofjani.com/?p=757

etc

 

Jim Brain who sometimes is on this forum, has a few items that may be useful:

 

http://store.go4retro.com/2364-adapter/

http://store.go4retro.com/rom-el-2364-flash-rom-replacement/

 

While there is a such chip as 2564 (also uncommon), it doesn't seem to be pin compatible with the 2364 in the same way a 2532 is pin compatible with a 2332.

Link to comment
Share on other sites

 

535724, although I do have a spare in the garage that I'll have to dig up and check. In the mean time, I've opened her up, removed the shielding, and confirmed that it is indeed soldered.

 

I'm surprised to see, at more than 1/4 million units into the run, that U12 is a stack of two 74 ic's with bodge-wires running all over.

I may as well put in a composite mod now that it's open.

Perform the RAM upgrade that gives you 256x192 graphics while you are at it.

It's 2 SRAMs, I think 2 74LS chips, and some wiring.

A single SRAM would actually be enough.

 

At what point is it okay for me to move the interrupt vectors out of video RAM? That would only take a couple minutes.

 

Link to comment
Share on other sites

If the original ROM is a 2364, you either need a Motorola 68764/68766 EPROM (very scarce and few programmers support it) or an adapter consisting of two sockets and some wires to plug in a 2764. The adapter is rather common and you can find both instructions online and ready-made boards that reroute the signals.

 

http://vic-20.de/x1541/hardware/2364.html

http://blog.worldofjani.com/?p=757

etc

 

Jim Brain who sometimes is on this forum, has a few items that may be useful:

 

http://store.go4retro.com/2364-adapter/

http://store.go4retro.com/rom-el-2364-flash-rom-replacement/

 

While there is a such chip as 2564 (also uncommon), it doesn't seem to be pin compatible with the 2364 in the same way a 2532 is pin compatible with a 2332.

We should make an adapter that accepts a 16K EPROM for future expansion.

Link to comment
Share on other sites

8316 is a 2048 x 8-bit ROM = 2 kilobyte that is equivalent to 2316, 4316 and thus EPROMs like 2716 and TMS2516.

 

In order to fit 8 kilobyte of ROM into a 2 kilobyte chip, Tandy gotta have used some kind of magic unless we're looking at the wrong chip on the MC-10.

 

I don't know if this schematic is correct (and hosted on a site for which Chrome warns me about hacker attacks, so be beware!) but I see two 4016 SRAM and one MB8364 (TMS2564JL) which is a 8 kilobyte ROM in a DIP-28 capsule if my Google-fu is working. Thus the existing solutions to replace a 2364 chip may not be relevant.

 

http://www.alice-dsl.net/d.j.peters/mc-10/circuit.png

Edited by carlsson
  • Like 2
Link to comment
Share on other sites

The MC-10 is a Tardis. :D

I seem to remember Tandy using TI parts for the ROM and RAM, so that sounds about right.
And I believe you are correct in that it has a different pinout and current solutions won't work.

Edited by JamesD
  • Like 1
Link to comment
Share on other sites

Confusing, but I still have the spare MC-10 to dig out. The current ROM is a Fairchild SIMB8364M, no TI anywhere in there.

 

I'd love to know what the stacked 74LS32 story is, it looks as though a lot of labor must have went into installing a quarter million of them with multiple bodge wires by hand. The schematic shows it as a bonus U20 (no U20's on the silkscreen) and seems to emanate from the an CPU A12 line compared with !Aenable on U4, then feeds !Benable pin on U4. So that I think means that writing above 8KB is affecting this gate, which coincides with the end of the 8K ram on the main board. A14 and 15 on the CPU also feed the U4 demultiplexer, though not A13. I got lost from there, but it appears one function might be to entirely disable the video IC.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...