Jump to content
IGNORED

Expanding maskable interrupts


OLD CS1

Recommended Posts

The talk of TI Ethernet got me thinking tonight about hardware and software design, in particular the use of interrupts.

 

The TMS-9900 supports 15 levels of maskable interrupts. All maskable interrupts on the 99/4 consoles are hardwired to be level 1. Interrupts are enabled and disabled using LIMI 2 and LIMI 0, respectively.

 

How would the system react over-all if we changed the ICx lines to accommodate additional interrupt devices above level 1, leaving level 1 the default for "legacy" interrupts and devices?

 

I would assume, first of all, that since it is apparently ingrained to enable interrupts with LIMI 2, higher levels would frequently be disabled. We could circumvent this with a user interrupt which put in place higher levels by using an unused byte in CPU RAM as a "mirror" of the current user interrupt level. However, as I understand it, the regular system interrupt only happens at the vertical blank which is not frequent enough to catch our new set of interrupts.

 

If I understand correctly, LIMI 2 actually enables interrupt level 2 and below, which includes our legacy level 1, so should we not be able to therefore enable a second level interrupt in hardware?

 

In the case of an Ethernet device and supplemental TCP/IP stack, a dedicated interrupt level would be beneficial to ensure that the CPU does not waste time running through all device interrupts, but would instead dedicate an interrupt "cycle" to the Ethernet device.

 

For that matter, does it really matter? 65xx-based systems only have a single IRQ level, as well, and they work out just fine. I think that a lot of multi-level IRQ capable machines also limit the levels accepted to one or two, anyway, so there might be little to no advantage here.

 

Any thoughts on this? Am I re-hashing something which has already been discussed elsewhere in another time?

Link to comment
Share on other sites

I think most of us messing with hardware have kicked this kind of idea around. Thierry coves interrupt mods (I think) on his site. The main problems is, as soon as you do something that requires a motherboard mod and soldering iron, you eliminate most of the 99/4A user base. At that point you have a custom system with features that are not compatible or available to the majority, and thus you only get the benefit of whatever software you are willing to write yourself. Also, when you are done, you can't share your work.

 

I know Tursi and I have been down the philosophical road of hardware modification, and at what point the machine stops being a 99/4A or anything useful or of interest to anyone else.

 

We all have the 99/4A in common and some sort of nostalgic past with the machine. That's the "force that binds us." Take that away, and you don't have anything. We all know we would love to fix the 16-to-8 bit mux, up the clock speed, increase the RAM, add big mass storage, enable more interrupts, etc., but then what do we have? Not a 99/4A. The 99/8 would have been that (probably), but we lost our leader (TI) and at that point there was no one driving the boat and every 3rd party company did stuff their own incompatible way.

 

Our machine is what it is. IMO our expansion options are fixed to what people can plug in. Even the F18A is probably pushing it for some, but at least the 9918A is in a socket and the F18A will not alter the functionality of the machine. PEB cards and cartridges are good, since we can plug them in. The keyboard mod that Tursi did is also plug-n-play (similar to the F18A), but does not alter the functionality of the machine, but enhances it for those who decided to use it.

 

New hardware is fun, no doubt, but I think we should be producing more and better quality software. We have hardly pushed the machine, and especially the video; the MSX games prove that! That menu system I saw in another thread, the game written in Forth, was awesome and is a very cool example of making better software by adopting an idea from modern OSes.

 

Hardware wise, I think we need a network interface, standard banked RAM (the 32K), and some form of mass storage to make file exchange easy (USB thumb devices for example), and a standard super cart that offers ROM, RAM, GROM, and an easy means to distribute the stuff on the cartridge. After that, hardware is probably going to be more exotic and more rare.

 

Hardware is fun to build and nice to have. But software makes the computer, and so far most of our stuff is less than it could be. TI set a bad ugly "blocky" example, and most software copies that format. We can do much better! Go do a Google image search on MSX 1, and you will see stuff that blows you away.

 

Out game contests are fun, but we also need some larger more useful projects, with maybe a few people working on one thing. I don't know if we have the interest for that though? I'd help on something, but I'm more of an assembly tools or component specialist, so someone else would need to run the project and divvy up the work, i.e. "go write a routine to do xyz", etc.

 

Just my two cents...

Link to comment
Share on other sites

I also would like to see more new software for the TI-99/4A. I also love doing assembly language stuff. The thing is you need some time, for me that's at least 30 minutes before I'm concentrated enough to add some useful code. Most of the stuff I do before is actually damaging my program. Seriously what I'm trying to say is that it's a lot more efficient to code in a high-level language. Myself I just can't dig Forth, I know its a great system and am very interested in seeing what Mark developed, but I guess I'll never be a forth programmer. Extended Basic is also great but just too slow.

My best option is probably the C compiler that is currently in development. That combined with a cartridge with some additional RAM would just be great.

Link to comment
Share on other sites

Seriously what I'm trying to say is that it's a lot more efficient to code in a high-level language. Myself I just can't dig Forth, I know its a great system and am very interested in seeing what Mark developed, but I guess I'll never be a forth programmer.

 

:D That makes me laugh! Why? Because I remember being shown TI Forth in (I think) 1989 at a TI meeting, by Alan Rutherford and the legendary Stephen Shaw. They were trying to get me to "see the light". I thought it was the most ridiculous thing I had *ever* seen on a computer! An absolutely stupid idea! Reverse Polish Notation? What *idiot* thought that would be a good idea? ;)

 

20 years later, I told myself I'd finally sit down and figure out what this "Forth thing is all about...". I was so impressed that I sat down and developed my own Forth system!

Link to comment
Share on other sites

I also would like to see more new software for the TI-99/4A. I also love doing assembly language stuff. The thing is you need some time, for me that's at least 30 minutes before I'm concentrated enough to add some useful code. Most of the stuff I do before is actually damaging my program. Seriously what I'm trying to say is that it's a lot more efficient to code in a high-level language.

 

You're one step ahead of me. I need at least 15 or 20 minutes to get in to the "mind set" of the project before I start doing anything, no matter if it is assembly, XB, HDL, or whatever. It also depends on the size of the project. Large projects force you to keep a lot of details in your head as you work on it. However, that's also why you decide all the details in the planning phase, then break the project up in to manageable chunks, which also allows you to delegate parts to other people.

 

However, I have found that most developers don't do *any* design and don't really break things in to isolated chunks. Sure, there are functions, but those functions usually require knowledge of the whole project. I think that is typical for the "one man show" of software development, and it seriously keeps us (programmers in general) from working together efficiently.

 

A funny exception to this was Owen. ;-) Without knowing it, he managed to modularize his code in such a way that people could help him out, and he could plug-in the modules. Case-in-point is the XB sound player and map scroller I did for him. He specified what he needed, I wrote the subroutine, he plugged it in. I didn't have to wrap my head around the whole game, that is Owen's job. It worked out really well, and we even worked in different languages (I used assembly, Owen is writing in XB.)

 

Doing graphics and sounds are good places to break up tasks too, as those are natural boundaries.

 

Well, this is pretty well off-topic now, but it anyone wants to do a software project of some sort, do some design and start a thread. I'd be interested in providing any assembly language functions or modules.

Link to comment
Share on other sites

 

However, I have found that most developers don't do *any* design and don't really break things in to isolated chunks. Sure, there are functions, but those functions usually require knowledge of the whole project. I think that is typical for the "one man show" of software development, and it seriously keeps us (programmers in general) from working together efficiently.

 

A funny exception to this was Owen. ;-) Without knowing it, he managed to modularize his code in such a way that people could help him out, and he could plug-in the modules. Case-in-point is the XB sound player and map scroller I did for him. He specified what he needed, I wrote the subroutine, he plugged it in. I didn't have to wrap my head around the whole game, that is Owen's job. It worked out really well, and we even worked in different languages (I used assembly, Owen is writing in XB.)

 

Doing graphics and sounds are good places to break up tasks too, as those are natural boundaries.

 

Well, this is pretty well off-topic now, but it anyone wants to do a software project of some sort, do some design and start a thread. I'd be interested in providing any assembly language functions or modules.

 

It sounds like you are itching to code something ;-).

 

I would offer that in the TI world there are probably many apps available to us that are pretty standard in the vintage scene. Just not games unfortunately. Of course what would you expect from a super serious company like TI ;-).

 

Hopefully you could put a team together based on individual talents like graphics, sound, animation, input etc. Getting everyone on board about particulars may be a challenge but I say start a thread and give it a shot.

Link to comment
Share on other sites

It sounds like you are itching to code something ;-).

 

Absolutely. I enjoy coding, but working on code with no goal really takes a lot of the reward out of it. Writing code that is useful and that people are interested in is much more exciting than just poking at the machine. We do a lot of poking here, which is fine, but it would be nice to see, discuss, and work on something more complex and complete.

 

I'll start a thread, we'll see where it goes. :ponder:

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...