Jump to content
IGNORED

TM 990/100MA single board computer


Recommended Posts

@smp Your understanding is correct.  
 

Restating what you already said:


TIBUG is in left/right halves size 1K.  Each half fills 000-03FF. Assembler output for address 0080 is found halfway into the separate file. 

 

TI 990 docs tend to count words, but it's clear about it. 


I do this for my own project: use "dd" to split the  assembler/linker output into left and right halves. 

 

Link to comment
Share on other sites

The 9900 has 16 address lines to address 64K bytes.  Each instruction takes an even byte and an odd byte to make up the entire 16 bit instruction, one byte from each of the EPROMs.

 

I am thinking that means $80 bytes into memory is only $40 bytes into each of the EPROMS.

 

I *think* that sounds the same as what you said above @FarmerPotato.

 

Having worked extensively with 8 bit machines, this is making my head hurt!  But it seems to make sense, at least.  WHEW!

 

smp

  • Like 1
Link to comment
Share on other sites

4 hours ago, smp said:

This is my first time with a 16 bit machine that has its program stored in two parallel EPROMs.  Am I confusing myself here?  I am about to get two 2716 EPROMs with the TIBUG data burned in at $0000-$03FF in each of them, and another two 2716 EPROMs with the LBLA data burned in at $0000-$03FF in each of them.  Will I be OK?  Will these EPROMs work in either of my SBCs (both of them are jumpered to accept 2716s)?

This is exactly how it is done in the TI-99/4A: We have two 4K EPROMs, one for the even addresses, one for the odd addresses. One EPROM is connected with D0-D7, the other with D8-D15.

  • Like 2
Link to comment
Share on other sites

 

17 hours ago, mizapf said:

This is exactly how it is done in the TI-99/4A:

 

I understand this.

 

Frankly, I am continually getting confused about where things are in memory for the 9900, as most all of my experience is with 8 bit micros.  I keep getting confused because even though the 9900 is a 16 bit machine, it has 16 address lines, and everything takes twice the amount of memory locations as I am used to.  My only other 16 bit experience is with the LSI-11 but it has a much larger address space, so one memory location is the entire instruction or chunk of data, not two memory locations like the 9900.

 

Oh, well, I’ll eventually get used to it.  I remain excited to finally get doing something with my boards, rather than simply scouring the documents.

 

smp

Edited by smp
added more...
  • Like 1
Link to comment
Share on other sites

[Just seen the earlier replies so just restating what has already been said] The processor is (largely) word-orientated not byte-orientated, so memory locations in the listing go up in steps of two bytes: >0080, >0082, >0084 etc. For each word of memory, one EPROM holds the upper (even) byte of data (the byte at >0080), and the other holds the lower (odd) byte of data (the byte at >0081). So to find a particular byte of data in an EPROM, take the address in the listing (e.g. >0080) and divide by two (so >0040). So what you have found is correct.

 

As discussed offline, TIBUG in a pair of 2716 EPROMs at addresses >0000 - >03FF in each of them (so the two EPROMs occupy addresses >0000 - >07FF in the processor memory map) will be fine. But the LBLA needs to be located at >0800 - >0FFF in the memory map, so either needs to be programmed in the upper half of the same 2716 EPROMs as TIBUG, or you need to use 2708 EPROMs for it all.

Edited by Stuart
  • Like 4
Link to comment
Share on other sites

On 2/17/2023 at 11:41 AM, smp said:

@FarmerPotato
 

In the end, I may end up with two working SBCs, but it will be a while before I will be able to know.  
Hopefully, at least one of the SBCs will come to life without too many problems!

Hey, if  you get both working, on the S-100 backplane, they can be used simultaneously. The PROM tells which addresses are off-board. I'm not familiar with the bus arbitration yet. (There's HOLD/HOLDA for DMA..)  

 

The  floppy controller is a whole SBC too, with another 9900. It can DMA (access) to/from other memories on the bus.  (Unless I'm mistaken)

  • Like 4
Link to comment
Share on other sites

6 hours ago, Stuart said:

[Just seen the earlier replies so just restating what has already been said] The processor is (largely) word-orientated not byte-orientated, so memory locations in the listing go up in steps of two bytes: >0080, >0082, >0084 etc. For each word of memory, one EPROM holds the upper (even) byte of data (the byte at >0080), and the other holds the lower (odd) byte of data (the byte at >0081). So to find a particular byte of data in an EPROM, take the address in the listing (e.g. >0080) and divide by two (so >0040). So what you have found is correct.

 

As discussed offline, TIBUG in a pair of 2716 EPROMs at addresses >0000 - >03FF in each of them (so the two EPROMs occupy addresses >0000 - >07FF in the processor memory map) will be fine. But the LBLA needs to be located at >0800 - >0FFF in the memory map, so either needs to be programmed in the upper half of the same 2716 EPROMs as TIBUG, or you need to use 2708 EPROMs for it all.

Stuart, have you dealt with non-TI 2716s?  I just read how TI had a different pinout, because 2716 required -12 and -5 supplies. 

If a different brand is used, at least A10 is on the wrong pin.   My USB Pocket Programmer explains why it doesn't support TMS2716s

 

My 990/101MA has four TI TMS2716-45. 

 

  • Like 3
Link to comment
Share on other sites

12 hours ago, FarmerPotato said:

Stuart, have you dealt with non-TI 2716s?  I just read how TI had a different pinout, because 2716 required -12 and -5 supplies. 

If a different brand is used, at least A10 is on the wrong pin.   My USB Pocket Programmer explains why it doesn't support TMS2716s

 

My 990/101MA has four TI TMS2716-45. 

 

I've only used the TI TMS2716 but that is a very good point and something that @smp needs to be aware of if he is getting some 2716s programmed - the board needs the TMS2716 with the three supplies.

  • Like 3
Link to comment
Share on other sites

On 2/19/2023 at 4:59 PM, FarmerPotato said:

Stuart, have you dealt with non-TI 2716s?  I just read how TI had a different pinout, because 2716 required -12 and -5 supplies. 

If a different brand is used, at least A10 is on the wrong pin.   My USB Pocket Programmer explains why it doesn't support TMS2716s

 

My 990/101MA has four TI TMS2716-45. 

 

 

On 2/20/2023 at 5:58 AM, Stuart said:

I've only used the TI TMS2716 but that is a very good point and something that @smp needs to be aware of if he is getting some 2716s programmed - the board needs the TMS2716 with the three supplies.

 

Thanks *very* much, folks!  I had not thought about that at all.

 

I have informed Stephan, and he responded that he will use TMS 2716s.  Hopefully everything will be good!

 

smp

  • Like 3
Link to comment
Share on other sites

6 hours ago, FarmerPotato said:

I learned out about the difficulty of programming 2716s by checking if my old PP3 could do it. Nope. 

 

This article was fascinating:


USB Pocket Programmer 3 FAQ: How EPROMs work

 

I'm going to have to make an adapter. 
 

Yeah, only two of my programmers will do the TMS2708/2716s.  My Advin UP84 will do them both, as will my BK Precision 844USB, but the 844USB requires an adapter to swap some pins around. I probably need to build one of the adapters, just in case I ever need it in a hurry. . .

 

Unfortunately, both of these programmers are out of production.

  • Like 1
Link to comment
Share on other sites

A device that's sure to program TMS2716s is the TM990/302 software development board. I have not seen one for sale. 
 

I forget whether the TI-99/4A P-box card eprom programmer card did 2716. Probably not,  I think it did only  other single-voltage chips like the 2516, 2532. (Nick Hulbert added an adapter for 2764.) 

 

I see a lot of folks replacing non-TI 2716s with the  28C16 EEPROMs. Those  would require a simple pin-socket adapter, and you could program them on a cheap TL866II or XGPro in a flash. 

  • Like 1
Link to comment
Share on other sites

On 2/24/2023 at 5:20 PM, FarmerPotato said:

A device that's sure to program TMS2716s is the TM990/302 software development board. I have not seen one for sale. 
 

I forget whether the TI-99/4A P-box card eprom programmer card did 2716. Probably not,  I think it did only  other single-voltage chips like the 2516, 2532. (Nick Hulbert added an adapter for 2764.) 

 

I see a lot of folks replacing non-TI 2716s with the  28C16 EEPROMs. Those  would require a simple pin-socket adapter, and you could program them on a cheap TL866II or XGPro in a flash. 

Yep, the TM990/302 does do the TMS2716s and 2708s. There's a little EPROM-specific adaptor board that fits on the card edge. You could of course also program then using your own TI-99.

  • Like 1
Link to comment
Share on other sites

Hey, I just scanned my copy of the TM990/101MA revision H, Mar 1981.

 

@Stuart's page has a scan of Rev D, Mar 1980, and part of May 1980.

 

Posting mine here in this thread where it can be useful. 

 

Also, I made a new scan of the TM990/510/520/530 card cage and backplane manual.  One of them is in color.   I just like the yellowed paper background on my screen.  I send the raw scans to Al at Bitsavers where he will use his process on them.  

 

MP341_TM990_510_520_530_Color_May80.pdfMP341_TM990_510_520_530_B_May80.pdfMP337_TM990_101MA_Mar81.pdf

 

 

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

My 2708 EPROMs with TIBUG and LBLA arrived today from Canada!

 

I first installed them into my TM990/101MA and set the jumpers appropriately for 2708s.  TIBUG seemed to be working, the M and R commands worked, but when I put the tiny checkout program into memory, when I hit E, all I got was a return to TIBUG, but no HI & BELL output.

 

I then installed my spare 9900 chip and 9901 chip into my original TM990/100MA, set the jumpers for 2708s and moved the EPROMs over to it.  Again TIBUG seemed to be working, and when I put the tiny test program into memory, this time I got the proper HI & BELL output!  YAY!

 

So, on the surface, it appears that I have a working TM990/100 and a "mostly" working TM990/101.  It's been a long wait, but finally I'm making some progress.

 

I am still waiting for the Motherboard and 64K RAM board to arrive from Stuart.  By the tracking he provided, the package arrived in Jamaica, NY after US Customs, but I've seen no movement from there for the last week.  Hopefully, the package will arrive here sometime soon.

 

I'll keep you all posted on my progress.

 

Thanks for listening!

 

smp

  • Like 2
Link to comment
Share on other sites

I guess it's shame on me - I tried my TM990/101MA SBC again, and this time all seems to be well.  

I must have done something wrong the first time I tried to enter the tiny checkout program.  Too much excitement...  :lol:

 

I was concerned about things seeming to be mostly working and wondered how that might be.  Well, I believe that I have both boards working with TIBUG now.

 

Sorry for the false alarm!

 

smp

  • Like 4
Link to comment
Share on other sites

Good morning, folks!

 

I am very happy to report that I've received my TM990 Backplane and 64K RAM board (without the ICs) from Stuart in the UK.

Thanks a million for these excellent products, Stuart!

 

I have my TM990/101MA board plugged into the Backplane, and all up and running.  The ICs for the 64K RAM board are on order and are expected to arrive next Wednesday.  I'll keep you all posted on how it goes getting that board populated and installed.

 

In the meantime, I've been experimenting with how I might be able to get programs loaded into my system, once I have a full load of memory.  Looking at the commands available in TIBUG in the TM990/101 User's Guide, I spotted these:

 

DUMP MEMORY TO CASSETTE OR PAPER TAPE (D)

Syntax:    D <Start Address> {,} <End Address> {,} <Entry Address> {,} IDT= <Name> <space>  [the IDT= prompt comes from TIBUG]

 

LOAD MEMORY FROM CASSETTE OR PAPER TAPE (L)

Syntax:    L< bias><(CR)>

 

Bingo!  I figured this would be the way to go.  I used the D command to dump out the short test program that prints "Congratulations. Your program works!" from the User's Guide and I copied the output from my terminal into a text file.  I then tried the L command, sending the text file in via my terminal.  BAH! I got some sort of error.

 

I saw that Stuart has a utility program available on his web site for sending object files into the system.  I downloaded it and gave it a try, but had some problems.  I contacted him and he assisted me with an updated version for me to use.  YAY!  I now have a way to get object files into my system.  Thanks a million, Stuart!

 

Now, I am looking for a cross assembler to assemble things like the fig-FORTH source file.  I see in posts that WinAsm99 has been used by some, but I am not finding where to download it.  Can anyone help me out here?  I am a Macintosh person, but I use a couple of PC laptops running Windows XP as terminals to my vintage systems.  So, I need something that will run on the 32 bit Windows XP, please.

 

Thanks again for listening, and thanks in advance for any advice you may have!

 

smp

 

Edited by smp
typos...
  • Like 2
Link to comment
Share on other sites

Exciting progress!

 

Some choices for assemblers:

 

(I'm a Macos guy too.)

 

Xas99 in XDT99.  Suite of command line tools, requires only Python. I install Cygwin in Windows, choose the Python and Gmake packages. Assembler  Xas99  gives you object code. 
 

asm990. Part of Dave Pitts' sim990 package. (Cozx.com or Bitsavers). Written in C, platform independent. Can build on Mac or Cygwin. Doesn't  have a Windows binary but should be no problem. 
 

With either of these, I use a Makefile to automate them. 
 

 

Classic99 ;Windows). but then you're learning a half dozen 99/4A dev tools as well. The most fun 99/4A emulator. 

I go back and forth Windows/MacOS/Linux constantly. Xas99 is terrific for that. 

Link to comment
Share on other sites

Thanks very much, FP!

 

I suppose that I could always get the Editor/Assembler cartridge for my TI-99/4A, or look into using the assembler that come in the FBForth cartridge, too.

I don't know that I will be doing a lot of work in assembly, but when there's a source file that needs to be assembled, I need to have a good tool to do it.

 

smp

Link to comment
Share on other sites

On 3/18/2023 at 10:35 AM, smp said:

 

 

DUMP MEMORY TO CASSETTE OR PAPER TAPE (D)

Syntax:    D <Start Address> {,} <End Address> {,} <Entry Address> {,} IDT= <Name> <space>  [the IDT= prompt comes from TIBUG]

 

LOAD MEMORY FROM CASSETTE OR PAPER TAPE (L)

Syntax:    L< bias><(CR>

 

smp

 


If the D command writes to your terminal, I think it's trying to control a cassette built-in to a TI terminal. Instead of  an internal cassette jack  like in the 990/189.
 

Do you detect any control characters around the output? Maybe maybe some 80-9F chars?

I don't know exactly how it signals to the cassette.
 

If I'm onto something,  I  guess the L command would require some back-and-forth signaling too, not just a stream of text.
 


 

 

  • Like 1
Link to comment
Share on other sites

I get what you’re saying FP.


Yes the D command writes to the terminal, but I saw no “crazy” characters that I would think are control characters.  In the manual, they say that you could use the D command to output to the paper tape on a teletype terminal and then use the L command to read the file back in.  That’s why I thought I might be able to copy the output text and send it back in.  The manual says they send a bunch of runout characters at the end.  They showed up as spaces on my screen.  I figured that not seeing a leader full of runouts might have been the problem, and I didn’t take any time to form a more correct file for input.


My one attempt didn’t work and I haven’t gone back to it since I have Stuart’s utility program working.

 

smp

Edited by smp
  • Like 2
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...