JamesD Posted August 7, 2017 Share Posted August 7, 2017 (edited) 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 August 7, 2017 by JamesD 3 Quote Link to comment Share on other sites More sharing options...
JamesD Posted August 7, 2017 Author Share Posted August 7, 2017 My Blog Quote Link to comment Share on other sites More sharing options...
towmater Posted August 8, 2017 Share Posted August 8, 2017 Do you plan a download release? Quote Link to comment Share on other sites More sharing options...
George Phillips Posted August 8, 2017 Share Posted August 8, 2017 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. Quote Link to comment Share on other sites More sharing options...
JamesD Posted August 8, 2017 Author Share Posted August 8, 2017 Do you plan a download release? The link to the beta is in the blog. Quote Link to comment Share on other sites More sharing options...
towmater Posted August 8, 2017 Share Posted August 8, 2017 The link to the beta is in the blog. And very well hidden, indeed. The game is afoot. Quote Link to comment Share on other sites More sharing options...
JamesD Posted August 8, 2017 Author Share Posted August 8, 2017 It's literally only 5 posts down from the top. 4 when I posted that message. Quote Link to comment Share on other sites More sharing options...
towmater Posted August 9, 2017 Share Posted August 9, 2017 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. Quote Link to comment Share on other sites More sharing options...
JamesD Posted August 9, 2017 Author Share Posted August 9, 2017 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. Quote Link to comment Share on other sites More sharing options...
JamesD Posted August 9, 2017 Author Share Posted August 9, 2017 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. Quote Link to comment Share on other sites More sharing options...
towmater Posted August 9, 2017 Share Posted August 9, 2017 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. Quote Link to comment Share on other sites More sharing options...
carlsson Posted August 9, 2017 Share Posted August 9, 2017 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. Quote Link to comment Share on other sites More sharing options...
JamesD Posted August 9, 2017 Author Share Posted August 9, 2017 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. Quote Link to comment Share on other sites More sharing options...
JamesD Posted August 9, 2017 Author Share Posted August 9, 2017 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. Quote Link to comment Share on other sites More sharing options...
towmater Posted August 9, 2017 Share Posted August 9, 2017 It's an 8316, which I think is 2716 compatible, and oddly much smaller than the 8KB data that the OP created. Quote Link to comment Share on other sites More sharing options...
JamesD Posted August 9, 2017 Author Share Posted August 9, 2017 It's an 8316, which I think is 2716 compatible, and oddly much smaller than the 8KB data that the OP created. I'm squeezing everything into the original 8K space. I made room by making things smaller, not by using a larger ROM. Quote Link to comment Share on other sites More sharing options...
carlsson Posted August 9, 2017 Share Posted August 9, 2017 (edited) 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 August 9, 2017 by carlsson 2 Quote Link to comment Share on other sites More sharing options...
JamesD Posted August 9, 2017 Author Share Posted August 9, 2017 (edited) The MC-10 is a Tardis. 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 August 9, 2017 by JamesD 1 Quote Link to comment Share on other sites More sharing options...
towmater Posted August 10, 2017 Share Posted August 10, 2017 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. Quote Link to comment Share on other sites More sharing options...
Mr SQL Posted August 10, 2017 Share Posted August 10, 2017 Awesome project! Wish I still had my MC-10 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.