Jump to content
IGNORED

TI Mini Expansion System


Artoj

Recommended Posts

Hi All,

I had some time working on the only working TI99 I have, I put my 32K single slot board together. At first it didn't seem to work, after a careful digital probing, I found that the EN# pin on the 74LS245 was not even connected, one wire later, success!! I checked my unpopulated FORTI card just to make sure the fit was good, also my original hand wound FORTI board, it looks like all is good. I will redesign the single slot board and add a few extras on the same slim board, I will use the MPEB as the footprint for the length, this gives me room for another useful addition. Regards Arto.

  

P1000950SMALL.JPG

P1000952SMALL.JPG

P1000954SMALL.JPG

P1000956SMALL.JPG

P1000957SMALL.JPG

  • Like 9
Link to comment
Share on other sites

Hi All,

After the success of the slimline card, I added a 16 bit i/o to the new version, I left it fairly generic, it will give you 16 CRU bit control at R12=>0400, 16 OUT at CRU bit 0 to 15 and 16 IN at CRU bits 32 to 47. I have added the circuitry but if you just want the 32K memory you will only need to add those components. I made it so I can add a jumper wire to control and monitor bits on other plugin cards. A handy card  for the experimenter. Regards Arto.   

TI9932K16IO-V1pic1A.png

Edited by Artoj
  • Like 6
Link to comment
Share on other sites

Hi All,

 

For expansion beyond what I have on the slimline card, here is your MAP:

 

R12 = >0400

 

These are on the board

CRU  0   1   2   3   4   5   6   7        Output

PIN  J5  J6  J7  J8  J9  J10 J11 J12

 

CRU  8   9   10  11  12  13  14  15       Output 

PIN  J13 J14 J15 J16 J17 J18 J19 J20

 

These 8 can be added by using J1 to enable a 74LS259 on Pin 14

CRU  16  17  18  19  20  21  22  23       Output

PIN

 

These 8 can be added by using J2 to enable a 74LS259 on Pin 14

CRU  24  25  26  27  28  29  30  31       Output

PIN

 

These are on the board

CRU  32  33  34  35  36  37  38  39       Input

PIN  21  22  23  24  25  26  27  28

 

CRU  40  41  42  43  44  45  46  47       Input

PIN  29  30  31  32  33  34  35  36

 

These 8 can be added by using J3 to enable a 74LS251 on Pin 7

CRU  48  49  50  51  52  53  54  55       Input

PIN

 

These 8 can be added by using J4 to enable a 74LS251 on Pin 7

CRU  56  57  58  59  60  61  62  63       Input

PIN    

 

If you want each Pin to be an IO type then you can connect the Output to the Input Pins:

J5         -> J21

SBO/SBZ 0  -> TB 0

J6         -> J22

SBO/SBZ 1  -> TB 1

J7         -> J23

SBO/SBZ 3  -> TB 2

J8         -> J24

SBO/SBZ 4  -> TB 3

J9         -> J25

SBO/SBZ 5  -> TB 4

J10        -> J26

SBO/SBZ 6  -> TB 5

J11        -> J27

SBO/SBZ 7  -> TB 6

J12        -> J28

SBO/SBZ 1  -> TB 7

This also applies to the other 8 Outputs and 8 Inputs

If you connect all 16 pins together you will have 16 GPIO ports that can be changed with just one LDCR or STCR assembly statement. This also applies to the other 4 ports you can create, giving you another 16 GPIO ports, a total of 32 GPIO ports, not bad for a 40 year old Computer, Regards Arto.  

 

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

Hi All,

I have been carefully going over the many boards I have been working on so far, a lot that are not TI related as well, I found the APR33A3 sound recorder chip only available in India, so I looked a little further to find a recording module that looks so much better. The DFR0745. it has 16 meg  of storage, which equates to 40 minutes at 48kbs. It has a RS232 interface and a Analog U-Disk interface. Lots of interesting interface options, I made a preliminary design to see if it is feasible. This would be the most simplest method for cassette only systems, I tied the play and record functions to the cassette port motor control CRU, so it should look like a tape recorder to the user. I still have to refine all the logic, so I added a lot spare chips(4066) and pins for external control as well, this should work well with the 32k/CRU slimline card. Regards Arto.

TI99-DIGICASSV1PIC1A.png

TI99-DIGICASSV1PIC2A.png

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Hi All,

I do like Kicad and find it has some nice Schematic tools, I have a long way to master it idiosyncrasies. Here is my TI99 RS232/MIDI Jumper card, first attempt at using bus connections, not the easiest, I would rather do each line at a time, I guess each to their own. It is not quite finished yet, I am doing a few more cards with Kicad, so I can get used to it. Regards Arto.

 

    

MPEB-JUMPER-MIDI-RS232-V1-3Kicad.PNG

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

Hi All,

I am completing a few boards for testing when the next batch get ordered. I have two PIO boards, one is CRU only (no DSR) and the other is Memory Mapped (no DSR), I am preparing to complete a sequence of hardware tests, so I can complete the MPEB IBM port board and test the IBM Port with a IBM PIO card. I have already designed a Parallel Port tester previously that will be used on this project. Regards Arto. 

 

   

TI99 Parallel Port MM V3.1
--------------------------

Memory mapped Parallel Port (NO DSR).

 HEX	DECIMAL		PORT
------------------------
>5000	20480		PIO OUT

>5002	20482		PIO IN

>5004	20484		CONTROL OUT

					BIT NUMBER	VALUE	FUNCTION		
					BIT 0		1 		STROBE OUT			
					BIT 1		2		USER 1 OUT
					BIT 2		4		USER 2 OUT
					BIT 3		8		USER 3 OUT
					BIT 4		16		USER 4 OUT
					BIT 5		32		AUTO LINE OUT
					BIT 6		64		USER 5 OUT
					BIT 7		128		INITILIZE OUT

>5006	20486		CONTROL IN

					BIT NUMBER	VALUE	FUNCTION		
					BIT 0		1 		STROBE IN			
					BIT 1		2		BUSY IN
					BIT 2		4		ACKNOWLEDGE IN
					BIT 3		8		PAPER IN
					BIT 4		16		SELECT IN
					BIT 5		32		AUTO LINE IN
					BIT 6		64		ERROR IN 
					BIT 7		128		INITILIZE IN					

*****************************************
PRINT A VALUE TO PRINTER

10 INPUT V
20 CALL PEEK(20486,VN):: ! CHECK IF BUSY 
30 IF VN=1 THEN GOTO 20
40 CALL LOAD(20480,V)::  ! SEND DATA OUT 
50 CALL LOAD(20484,1)::  ! STROBE = 1
60 CALL LOAD(20484,0)::  ! STROBE = 0

****************************************
READ A VALUE FROM DATA PORT

10 V=0
20 CALL PEEK(20486,VN):: ! CHECK IF BUSY 
30 IF VN=1 THEN GOTO 20
40 CALL PEEK(20482,V)::  ! READ DATA IN 
50 CALL LOAD(20484,1)::  ! STROBE = 1
60 CALL LOAD(20484,0)::  ! STROBE = 0

***************************************
TEST ALL PORTS FOR INPUTS
(USE PARALLEL PORT TESTER)

10 V1=0 :: V2=0
20 CALL PEEK(20482,V1)
30 CALL PEEK(20486,V2)
40 PRINT V1,V2

***************************************
SEND VALUES TO ALL PORTS IN SEQUENCE
(USE PARALLEL PORT TESTER)

10 FOR V3=0 TO 7
20 V4=2^V3 :: V5 = 128-V4
30 CALL LOAD(20480,V4)
40 CALL LOAD(20484,V5)
50 NEXT V3

 

TI99-PARALLELLPORT-V3-1Pic1A.png

  • Like 2
Link to comment
Share on other sites

Hi All,

As I am anticipating the arrival of the TI99/22 boards, I have started on the first phase of expansion, I have designed a plug-in for the 74LS138 (U505) which will give me a narrower memory map targets, rather than >8400 to >87FF for the TMS9919 sound chip, it will be >8400 to >84FF for the on board TMS9919, allowing you to add 3 more sound chips. A total of 4 sound chips will now be asses-able, >8400, >8500, >8600 and >8700, you can now have a version of the Forti Music system on the Motherboard. This also includes the expansion of the VDP, Speech and Grom, imagine running 4 VDPs. This is the first version so I anticipate a few more iterations, it could even be made in SMD so it fits neatly on the board. 

 

I started this in view of creating a replacement for the TMS9919 chip, I have gone a fair way down this road and it is looking promising, I think now a complete expansion of the sound chip is some where on the horizon. Running 4 VDP chips is an interesting option, so much to contemplate on this idea. Regards Arto.   

TI99-EXPANDED-DECODE-V1-PIC1A.png

Edited by Artoj
  • Like 3
  • Thanks 1
Link to comment
Share on other sites

8 hours ago, Artoj said:

rather than >8400 to >87FF for the TMS9919 sound chip, it will be >8400 to >84FF for the on board TMS9919, allowing you to add 3 more sound chips. A total of 4 sound chips will now be asses-able, >8400, >8500, >8600 and >8700, you can now have a version of the Forti Music system

That's not how FORTI defined the addresses. It addresses the chips in groups, potentially* avoiding excess wait states when the same voice is on left/right channels. Or when silencing all channels. 
 

the base of 8400 addresses all 4 chips. 
8402 masks out the first chip

8404 

8408

8410


The console chip was addressed always. 

 

 

Given card enable = 84xx and A15==0

 

Then the chip enables are that and  A14,13,12,11. (Active low.)  Can be done with 4 OR gates (LS32) or a quad 2:1 multiplexer (LS157) where CARDSEL switches between four output bits or four 1s. (Whichever chip makes ordering easier!)

 


*potentially: the FORTi software doesn't have a word to do that, but it's obvious how to.
 

Each voice called in the interrupt routine is a workspace, and  has a register with its  sound chip address.  The Bach Fugue in G minor is using this. 
 

Worst case timing is I guess ~50 microseconds/voice/tick, eating 3 ms per voice. Assuming 1 byte per tick. I didn't count all the instructions. 

  • Like 2
Link to comment
Share on other sites

10 hours ago, Artoj said:

you can now have a version of the Forti Music system on the Motherboard.

Thanks for your reply, this is why I said Version, you would need to address the chips differently. I have built 3 Forti cards, one which I hand wired, and they are basically software addressable (no DSR) just as you described, he worked around the limitations and designed a functional system. Thanks to the creative use of BLWP you can have 16 voices. I have just received the TI99/22 board only minutes ago, I will now be doing another version of the expanded Decode, regards Arto. 

 

Here is a section of your excellent breakdown of the software:

 

FORTI WS usage. WS is a register workspace

 ------------------------
 R0 voice or cascade addr. List of byte pairs (note#,dur)
 R1 pitch-table: e.g. PT0 or PT1
 R2 envelope. e.g. PLUCK3 or ORGAN2
 R3 index into envelope
 R4 countdown timer to next note. init to 0 to begin.
 R5 const pitch cmd byte
 R6 const attn  cmd byte (for a noise, pitch is tone#3 and attn is tone#4/noise)
 R7 pitch cmd word for current note or 0 for rest
 R8 temp. compute vdp address (for sprite) or envelope address
 R9 vdp addr of sppat#
 R10 copy of SGCA, sound card address (copied from SGCA at each ISR entry, sic)
 R11 not used
 R12 temp. compute vdp data byte (for sprite)
 R13 ... R15 after blwp, not used

Forti1986pica1a.JPG

  • Like 4
Link to comment
Share on other sites

19 hours ago, Artoj said:

Running 4 VDP chips is an interesting option, so much to contemplate on this idea.

Reuters News TV bulletin board 1978 part 2

In case you're wondering why those stupid looking arrows are pointing downward from the top...

 

This is(was) Manhattan Cable TV's, INTERNATIONAL NEWS CHANNEL. It used to say so at the top. Later, they changed it to a Larger font, that read: REUTERS NEWS. Then, one day, soon after, something went wrong, and garbage, including flashing @ signs, appeared at the top. There was another channel that had only SPORTS news. Information from the two channels, became interspersed, and misaligned, along with some occasional garbage characters. Switching back and forth, quickly, between the two channels... I noticed that as soon as one channel's printing reached the bottom of the page, the other channel's printing started at the top. This was when I put it together that both channels were being generated by a single system. Wow! I thought this was so exciting.:-o

 

   P.S. You can bet, that no one else cared, or even believed me, ha.:dunce:

:lol:

 

   P.P.S. "All the news just repeats itself... Like some forgotten dream, that we've both seen..."

               -John Prine(Hello in there):waving:

Edited by HOME AUTOMATION
.
  • Like 1
  • Confused 1
Link to comment
Share on other sites

 

11 hours ago, HOME AUTOMATION said:

This was when I put it together that both channels were being generated by a single system.

   So another possible idea is to use those extra addresses as different peripherals, memory, SD card or even a separate CPU/GPU, so many more options available without the burden of a huge card hanging off the side/back and the complexity of generating a new address, CRU control or attaching another 32bit micro-controller to handle the task. Running 4 VDP's might bog down the TMS9900, but if you use the extra 3 addresses to run a TMS32xxx  chip for some fancy hardware graphics, then the burden is off loaded. The computer will still run the same even if the plugin card is attached, but now you will have 24 extra places to have some digital freedom with, this old CPU can now stretch it's legs and blow off a lot of steam, it is all up the imagination of the hacker. Regards Arto. 

  • Like 3
Link to comment
Share on other sites

The Forti card will still function fine with this Expander, added that you can Memory Map the Sid Blaster, AY-3-8xxx and have a Midi Port as well. This will bring the Music programmer to another level of Choice and versatility. The lack of supply of TMS9919 type chips had prompted me down this road awhile ago, so i even though of interfacing an old SoundBlaster IBM card (or new clone) with the prototype ISA port I have made.

 

So I decided I might build a basic sound card from scratch(10 years ago) , using the TMS9919 as the Template for in/out/control etc. and by adding the extra ports will allow a very powerful Music Synthesizer with 16 channels and access to Analog Sound tables and more. This is still an idea, I have a few more unfinished projects to complete before I attempt to climb that mountain.

 

The Ternary Project will have capability of Sound control but not in the same way as Binary, as the basic form has already 3 components, making sound waves will be much easier, with faster algorithms. These last few years have been such a fun journey of learning, building, discovery and creativity. Thanks for all your support, regards Arto.     

  • Like 6
Link to comment
Share on other sites

Hi All,

Thanks to Dan for suggesting I look for Geoff Trotts Console Tester, well I found the circuit diagram, alas I have no software. I wonder does anyone have the Eprom/Software? I could try to workout his implementation and try and write my own, I have tried to contact him, still no luck at present, Regards Arto.

ConsoletesterV1pic1a.png

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

8 minutes ago, Artoj said:

Hi All,

Thanks to Dan for suggesting I look for Geoff Trotts Console Tester, well I found the circuit diagram, alas I have no software. I wonder does anyone have the Eprom/Software? I could try to workout his implementation and try and write my own, I have tried to contact him, still no luck at present, Regards Arto.

ConsoletesterV1pic1a.png

Only person that might have dumped the eprom would had been @Ksarul as this was ti99 ramtrap device and I think he has one of the originals.

 

If we do get the dump. I would love to build one myself and look at improving the testing/diagnostic software which makes use of the load interrupt feature.

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

Hi All,

Here is a unfinished sample of the V9919 Sound Unit, which is the TMS9919 chip made from IC's and such, it is only a work in progress at this moment. When I have decided to complete this work, I will make small improvements that will still fit into the same footprint as the original and programming will be the same. I was recently inspired by Glen a fellow Australian with his version for the TRS80. wow to think this guy is another local, he short cut many of the ideas I had for it's implementation, thanks Glen. Regards Arto.    

 

V9919-v1-0pic1a.png

Edited by Artoj
  • Like 4
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...