Announcement

Collapse

Forum Rules and Etiquette

Our mission ...

This forum is part of our mission to promote the preservation of vintage computers through education and outreach. (In real life we also run events and have a museum.) We encourage you to join us, participate, share your knowledge, and enjoy.

This forum has been around in this format for over 15 years. These rules and guidelines help us maintain a healthy and active community, and we moderate the forum to keep things on track. Please familiarize yourself with these rules and guidelines.


Rule 1: Remain civil and respectful

There are several hundred people who actively participate here. People come from all different backgrounds and will have different ways of seeing things. You will not agree with everything you read here. Back-and-forth discussions are fine but do not cross the line into rude or disrespectful behavior.

Conduct yourself as you would at any other place where people come together in person to discuss their hobby. If you wouldn't say something to somebody in person, then you probably should not be writing it here.

This should be obvious but, just in case: profanity, threats, slurs against any group (sexual, racial, gender, etc.) will not be tolerated.


Rule 2: Stay close to the original topic being discussed
  • If you are starting a new thread choose a reasonable sub-forum to start your thread. (If you choose incorrectly don't worry, we can fix that.)
  • If you are responding to a thread, stay on topic - the original poster was trying to achieve something. You can always start a new thread instead of potentially "hijacking" an existing thread.



Rule 3: Contribute something meaningful

To put things in engineering terms, we value a high signal to noise ratio. Coming here should not be a waste of time.
  • This is not a chat room. If you are taking less than 30 seconds to make a post then you are probably doing something wrong. A post should be on topic, clear, and contribute something meaningful to the discussion. If people read your posts and feel that their time as been wasted, they will stop reading your posts. Worse yet, they will stop visiting and we'll lose their experience and contributions.
  • Do not bump threads.
  • Do not "necro-post" unless you are following up to a specific person on a specific thread. And even then, that person may have moved on. Just start a new thread for your related topic.
  • Use the Private Message system for posts that are targeted at a specific person.


Rule 4: "PM Sent!" messages (or, how to use the Private Message system)

This forum has a private message feature that we want people to use for messages that are not of general interest to other members.

In short, if you are going to reply to a thread and that reply is targeted to a specific individual and not of interest to anybody else (either now or in the future) then send a private message instead.

Here are some obvious examples of when you should not reply to a thread and use the PM system instead:
  • "PM Sent!": Do not tell the rest of us that you sent a PM ... the forum software will tell the other person that they have a PM waiting.
  • "How much is shipping to ....": This is a very specific and directed question that is not of interest to anybody else.


Why do we have this policy? Sending a "PM Sent!" type message basically wastes everybody else's time by making them having to scroll past a post in a thread that looks to be updated, when the update is not meaningful. And the person you are sending the PM to will be notified by the forum software that they have a message waiting for them. Look up at the top near the right edge where it says 'Notifications' ... if you have a PM waiting, it will tell you there.

Rule 5: Copyright and other legal issues

We are here to discuss vintage computing, so discussing software, books, and other intellectual property that is on-topic is fine. We don't want people using these forums to discuss or enable copyright violations or other things that are against the law; whether you agree with the law or not is irrelevant. Do not use our resources for something that is legally or morally questionable.

Our discussions here generally fall under "fair use." Telling people how to pirate a software title is an example of something that is not allowable here.


Reporting problematic posts

If you see spam, a wildly off-topic post, or something abusive or illegal please report the thread by clicking on the "Report Post" icon. (It looks like an exclamation point in a triangle and it is available under every post.) This send a notification to all of the moderators, so somebody will see it and deal with it.

If you are unsure you may consider sending a private message to a moderator instead.


New user moderation

New users are directly moderated so that we can weed spammers out early. This means that for your first 10 posts you will have some delay before they are seen. We understand this can be disruptive to the flow of conversation and we try to keep up with our new user moderation duties to avoid undue inconvenience. Please do not make duplicate posts, extra posts to bump your post count, or ask the moderators to expedite this process; 10 moderated posts will go by quickly.

New users also have a smaller personal message inbox limit and are rate limited when sending PMs to other users.


Other suggestions
  • Use Google, books, or other definitive sources. There is a lot of information out there.
  • Don't make people guess at what you are trying to say; we are not mind readers. Be clear and concise.
  • Spelling and grammar are not rated, but they do make a post easier to read.
See more
See less

Powertran Cortex

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by pnr View Post
    Good progress over the last few days:

    [4] I've done some work with the C99 compiler on WHTech (ftp://whtech.com/programming/c99/). I've taken the DOS/Unix port (in directory "cross assembler" -- misnomer that) and compiled C99; it works out of the box. The output is almost asm990 compatible, a tiny patch was enough to make it work. However, there was no runtime support file with the DOS/Unix port. I've taken CSUP from the TI99/4A version (REL4) and disassembled it. With some minor tweaking it is good to go for the breadboard and the EVMBUG environment.

    [5] The assembler output can be linked with lnk990 (first link csup, then the compiler output) to generate a combined object file. This file has LF line endings, whereas EVMBUG expects CR line endings. A small program, "flip", makes this change and it is ready for downloading.

    The code generated by C99 is far from efficient, but it is a nice way to bootstrap into better tools. Probably similar workflows to the above could work with the Cortex built-in monitor program, and certainly with MDEX.

    Let me know if I need to post the C99 patch, the runtime support routine and the source to "flip".

    Paul
    Hi Paul,

    I would very much like to take you up on your offer of anything you can contribute regarding the C99 compiler. I guess the version I have is probably the same as yours from whtech. A couple of questions:

    1) What did you use to compile it to run on a PC? I have Visual Studio 2010 and Embarcadero C++ Builder XE2. I also have various Linux options.

    2) The asm990 and lnk990 you refer to, are they the ones I created for use with the Cortex ROM?

    3) Could I please have the CSUP source you got by disassembling the one from the TI99/4A?

    I'd like to create versions for the PC, Cortex BASIC/CDOS and MDEX and this would really give me a boost towards this goal. If I get it all going, perhaps I could come up with some sort of optimiser somewhere down the line...

    Thanks,

    Dave.

    Comment


      Originally posted by tms9995 View Post
      1) What did you use to compile it to run on a PC? I have Visual Studio 2010 and Embarcadero C++ Builder XE2. I also have various Linux options.
      I used gcc on OSX. I'm sure it will work okay on Linux too. Have not tried mingw (gcc on Windows), but should be okay. It looks like straight up and down C, so it should compile using your tools just fine. See the UNIX-Opts.txt and DOS-Opts.txt files for details on which files and defines to include in the build.

      Originally posted by tms9995 View Post
      2) The asm990 and lnk990 you refer to, are they the ones I created for use with the Cortex ROM?
      Yes, they are. Thanks for a great peace of work!

      Originally posted by tms9995 View Post
      3) Could I please have the CSUP source you got by disassembling the one from the TI99/4A?
      Attached, along with the 'flip' program and the modified C99 sources. Note the former may require modification on DOS/Windows, as I suspect the lnk990 tool will generate files with cr/lf line endings on that OS. If you need help porting 'csup.asm' to CDOS and/or MDEX, just let me know.

      Paul
      Attached Files

      Comment


        Cheapish TMS9995 cpu's on Ebay (UK)

        http://rover.ebay.com/rover/0/e11021...xe=exe,ext=ext

        Jim

        Comment


          Originally posted by pnr View Post
          For disk I'm thinking about a microcontroller hooked up to an SD memory card, but that is for another day. Also for another day is building the 99105/99110 project.

          Questions:
          - the only 99xxx I can find is a 50 euro part sold by 'timeline' on eBay, a UK source. Is that a known good source? Are there better alternatives?
          Paul, if you're after a 99105, you might be interested in eBay item 261371904446. Might be enough other useful chips on the board to make it a good deal. It says the main chips are socketed.

          Stuart.

          Comment


            He also has the 99105 chips separately http://www.ebay.co.uk/itm/TEXAS-INST...item3cdafbe8b2

            What's the difference between the 99105 and the 99110 ?

            [10 mins later]
            To answer my own question.

            The TMS99105 is almost identical to TMS99110 16-bit processor, except that the TMS99110 has 1 KB on-chip Macrostore memory with pre-programmed Floating Point instructions.
            Jim
            Last edited by Jim Hearne; January 10, 2014, 06:51 AM.

            Comment


              TMS99105 on it's way

              I presume that with a suitable interface board I should be able to make a "overdrive" processor for the Cortex ?
              Not looked at the 99105 closely yet, just bought one.

              Jim

              Comment


                Will be a bit tricky to use a 99xxx with the Cortex as a 99xxx has a full width 16-bit data bus. So you'd need some sort of data bus multiplexer to convert between 8 and 16 bit. Which should introduce some interesting timing issues because on the 99xxx the data bus is also multiplexed with the address bus ...

                Comment


                  And I've bought the other 99105 chip from this seller. Not sure I will have the time to build the "99110" breadboard within the 2 week return period, but it seems a reasonably safe bet. Everybody thanks for the heads-up.

                  A 99105 breakout board for the Cortex does not immediately make sense. From Stuart's measurements, a 99xxx is about 15% faster than a 9995, when both are running without wait states on a 16 bit bus and at 3 MHz (i.e. 9995 code and workspace on the internal RAM). When code and and workspace are in main RAM the difference goes up to about 60% faster. Putting the 99xxx on 6 MHz makes it 1.6 x 2 = ~3 times faster.

                  But that all assumes zero-wait state memory. The memory circuit on a Cortex can only deliver one byte every 650ns or so. A 6 MHz 99xxx would need about 7 wait states for two bytes to be delivered from RAM. Taking that into account, the breakout board is more likely to be back in the 15% performance difference area. You could of course integrate fast RAM onto the board and use it as a kind of co-processor, perhaps hooked up to the E-Bus.

                  However, I think you might have a F18A installed, I believe. That FGPA was mentioned a few days ago in this thread contains a 9900 co-processor that is at least 10 times faster than your current CPU.

                  Paul

                  Comment


                    Have not heard from Alan Beard, either I located the wrong person or he's not interested to respond. It would seem that the TI-C compiler is out as an option.

                    In better news, I have made some progress on porting the Ritchie C compiler to the 99xx and it looks quite promising. With only a hour here or there to work on that, it will be a little while before I have something.

                    Comment


                      Originally posted by pnr View Post
                      A 99105 breakout board for the Cortex does not immediately make sense. From Stuart's measurements, a 99xxx is about 15% faster than a 9995, when both are running without wait states on a 16 bit bus and at 3 MHz (i.e. 9995 code and workspace on the internal RAM). When code and and workspace are in main RAM the difference goes up to about 60% faster. Putting the 99xxx on 6 MHz makes it 1.6 x 2 = ~3 times faster.

                      But that all assumes zero-wait state memory. The memory circuit on a Cortex can only deliver one byte every 650ns or so. A 6 MHz 99xxx would need about 7 wait states for two bytes to be delivered from RAM. Taking that into account, the breakout board is more likely to be back in the 15% performance difference area. You could of course integrate fast RAM onto the board and use it as a kind of co-processor, perhaps hooked up to the E-Bus.
                      Paul
                      Yes, you are quite correct, it doesn't really make sense, i didn't by the TMS99105 for that purpose, i just fancied making a SBC with it like Stuart has (except on Vero or maybe a PCB).
                      I'd not even read that datasheet when i bought it.
                      Any thoughts on how to run it a full speed but still having I/O
                      I know the TMS9901 and 9902 only run at a max of 4Mhz clock but the TMS99105 Clkout will be 6Mhz.
                      I can't seem to find any Texas I/O chips for the TMS99xxx series cpus, did they do any ?
                      Failing that i assume that dividing the TMS99105 Clkout by 2 to give 3 mhz and then adding some wait states to the CRU accesses for those devices should work ?
                      If i do a PCB it would be nice to make it plug into the E-Bus and then it could maybe act as a co processor to the Cortex.

                      Jim

                      Comment


                        Originally posted by Jim Hearne View Post
                        Any thoughts on how to run it a full speed but still having I/O
                        I know the TMS9901 and 9902 only run at a max of 4Mhz clock but the TMS99105 Clkout will be 6Mhz.
                        I can't seem to find any Texas I/O chips for the TMS99xxx series cpus, did they do any ?
                        Failing that i assume that dividing the TMS99105 Clkout by 2 to give 3 mhz and then adding some wait states to the CRU accesses for those devices should work ?
                        Don't think TI did any I/O chips to work at that speed, and I don't think you can use wait states with CRU accesses - /READY seems to be only sampled for memory accesses. But can easily add single bit and parallel I/O with a couple of memory mapped TTL chips, and interface a faster non-TI UART like the 16550?

                        Stuart.

                        Comment


                          You could use a microcontroller to provide all the I/O capability of your board or if you want more ports than an MCU can provide, you could use a 9900/9995 to handle I/O and have it connected to the 99105 with ~2k shared memory.

                          Comment


                            Originally posted by Stuart View Post
                            ... I don't think you can use wait states with CRU accesses - /READY seems to be only sampled for memory accesses. ...
                            I think you can. See figure 23-25 in the prelim data manual, including footnotes. Also, figure 16 suggests that the 99xxx has automatic wait state insertion ("WAITGEN"), but I could not find how to activate it. Perhaps the same as for the 9995.

                            Paul

                            Comment


                              Originally posted by Jim Hearne View Post
                              If i do a PCB it would be nice to make it plug into the E-Bus and then it could maybe act as a co processor to the Cortex.
                              I'd love to do a single eurocard version of a 9995 based system and a 99105 system on two piggybacked eurocards. However, my Eagle skills are next to non-existent. Other than the E-bus interface, most of the routing could be the same. I'm too busy now, but in a few months time I'd be interested in working on PCB's for this, as a novice assistant.

                              Paul

                              Comment


                                Originally posted by Stuart View Post
                                Don't think TI did any I/O chips to work at that speed, and I don't think you can use wait states with CRU accesses - /READY seems to be only sampled for memory accesses. But can easily add single bit and parallel I/O with a couple of memory mapped TTL chips, and interface a faster non-TI UART like the 16550?

                                Stuart.
                                Page 34 of your 99xxx databook says /READY is sampled on I/O operations and can be used to extend them.
                                Seems strange TI bought out the 3rd gen cpu but no I/O devices that would work with it at full speed.

                                I have plenty of 68xx and 65xx series I/O chips but you usually end up adding a load more interface logic when converting between manufactures.

                                Jim

                                Comment

                                Working...
                                X