Jump to content

Stuart

Members
  • Content Count

    1,019
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Stuart


  1. 36 minutes ago, Pitou said:

    Hello,

     

    I did a lot of tests and it works 100% when using cartridge games (or Flashrom99 using rom file requiring 32k).

     

    However with BASIC it's very unstable

     

    I'm gonna build the buffered version based on this http://www.nouspikel.com/ti99/titechpages.htm

    as mentioned in Matt's first post and try again.

     

    I'm open to all suggestions and/or tests if someone has any.

     

    Thank you.

     

    Pitou!

    Try a couple of different RAM chips. Two that I find work OK are an Hitachi HM62256BLP-7 and a Cypress CY62256LL-70PXC. Have seen problems with Alliance RAM, which is what I think you're using.


  2. 31 minutes ago, GDMike said:

    Sorry I just saw this..my code is just a simple,

    Clr r1

    Movb R1,@>837C

    Blwp @gpllnk 

    Data >0034

    But whatever I do with gpllnk my computer crashes.. but all other utils work.

    This code works in my regular program not in the cart though so I thought maybe it's because I'm copying the utils..

    Subprogram >0034 plays the accept tone sound? I have a pencilled note in my E/A manual that interrupts need to be enabled for the sound list to be processed. If interrupts are not enabled, not sure if the routine hangs (like you're finding) or you just don't hear the sound.

     

    GPLLNK also won't work with a program that autoruns after loading with the E/A module option 3. I know you're not doing this, but there was some investigation into this in a thread some time ago and a solution found. If you're able to find that thread, it may help in determining what GPLLNK needs in addition to the info that Lee and others have provided above.

     

    If all else, fails, I use the code below in one of my programs to play the bad response tone. If you change the frequency in the first line to that of the accept tone, it gets round your problem (assuming you don't need GPLLNK for anything else).

    *       Play middle "A" note on generator 1.          
                                                          
            LI R0,>8E0F       Frequency on generator 1.   
            MOVB R0,@>8400    Sound port address.         
            SWPB R0                                       
            MOVB R0,@>8400                                
            LI R0,>9000       Volume: maximum.            
            MOVB R0,@>8400                                
                                                          
    *       Delay for approx. 1/2 second.                 
                                                          
            LI R0,>4000                                   
    BDR1    DEC R0                                        
            JNE BDR1                                      
                                                          
    *       Turn sound off.                               
                                                          
            LI R0,>9F00                                   
            MOVB R0,@>8400                                
    

     

    • Thanks 1

  3. 9 hours ago, InsaneMultitasker said:

    I disassembled Telco and took a stab at nanopeb compatibility.  I overwrote some of the spooler code (useless with nanopeb) with modified RS232 routines that enable/disable the RS232 card during serial port setup and character transmission.  Unfortunately, Telco freezes on startup in the below 'transmit character' section of code.  If I eliminate the "JNE EO" Telco starts and it is usable in terminal mode however, sending multiple characters in rapid succession (i.e., file transfers or conference mode) results in dropped transmission/buffer overrun.   I tried testing bit 16 to mirror Mass Transfer without success.  Feels like I'm missing something simple but I can't put my finger on it.

     

    ; Transmit character

           MOV  @CX,R12                     >C320,>D1C6        '. ..'         AA00  (base + port, i.e. >1340)
    EO     TB   >17    xmit?                     >1F17              '..'           AA04
           JNE  EO                          >16FE              '..'           AA06
           SBO  >10                         >1D10              '..'           AA08
           LDCR @>0002(R13),8               >322D,>0002        '2-..'         AA0A
           SBZ  >10                         >1E10              '..'           AA0E

           RT

     

    ;--------------------------------

    ; set RS232 parameters

    CP     MOV  *R10,R12                    >C31A              '..'           A856
           LIMI >0000                       >0300,>0000        '....'         A858
           SBO  >1F                         >1D1F              '..'           A85C
           LDCR R8,8                        >3208              '2.'           A85E

           SBZ  >0D                         >1E0D              '..'           A860
           LDCR R9,12                       >3309              '3.'           A862
           SBO  >12          18               >1D12              '..'           A864
           SBZ  >15          21               >1E15              '..'           A866
           SBZ  >14          20               >1E14              '..'           A868
           SBZ  >13          19               >1E13              '..'           A86A
           LIMI >0001                       >0300,>0001        '....'         A86C
           RTWP                             >0380              '..'           A870

     

    (While digging around the code I looked at updating Telco to use the F18A 80 column mode. Unfortunately, Telco seems to use VRAM beyond the standard 16K addressable by the 9918/F18a.  Modifying a complex, modular program like Telco without source code is nigh impossible.    )

     

    With your transmit routine, the code in TI docs usually has things in a slightly different order and tests a different bit. See if the following is any better; it tests for character transmission complete while the transmitter is enabled.

     

        MOV  @CX,R12
        SBO  16         (>10) Bit 16 - turn on transmitter
    EO  TB   22         (>16) Bit 22 - test transmit buffer register empty *** Testing different bit to your code ***
        JNE  EO         Loop until it is
        LDCR @>0002(R13),8
        SBZ  16         (>10) Bit 16 - turn off transmitter
        RT

     

    • Like 1

  4. 2 hours ago, TMA-1 said:

    Stuart you're a genius!  What a great Christmas Day present.  Shorting the RTS and CTS pins worked on my NanoPeb with the customized version of MT74!

     

    We're just on our way out the door to family, so I haven't had a proper look at much yet, but I am getting traffic to and from the modem now.  Thank-you.

     

    I guess this begs the question, "Why does InsaneMultitasker have a different result?"  Perhaps the design of the 9902 NanoPEB changed at some point, or perhaps that's the job of 1 of the 2 jumpers that I see on the device but have never known what they control.  Likely the latter.  Either way, thanks to you both I'm a happy camper.

     

    I'll test at an appropriate baud rate and with several of my software packages at the first opportunity.  Looking forward to visiting Heatwave BBS on the real deal.

     

    In Insane's post #6 he said he was using a standard modem cable, where the NanoPEB CTS and RTS would be connected through to the relevant pins on the modem. So CTS on the NanoPEB wouldn't be left disconnected like with your Tx/Rx/Gnd-only cable.

     

    • Like 1

  5. If you've got only transmit, receive and ground connected to the modem, have you got pins 7 (RTS) and 8 (CTS) connected together in the connector at the NanoPEB end? I believe the 9902 waits until CTS is active when transmitting, so any software that loops until the character is transmitted will appear to hang unless CTS is connected. (The NanoPEB is different to the TI Serial PEB card in that CTS is brought straight out to the serial connector rather than being connected to DSR(?) on the card.)

     

    NanoPEB                 Lantronix
    9-way D-type Male       25-way D-type Female
    Pin                              Pin
     2 (RX)  ------<<------ (RX out)  3
     3 (TX)  ------>>------ (TX in)   2
     5 (GND) -------------- (GND)     7
     7 (RTS) -->>--+
     8 (CTS) --<<--+ (pins 7 and 8 connected together)

     

    • Like 5
    • Thanks 1

  6. 15 hours ago, TheBF said:

    By the way it is still used :)

     

    The Fedex guys carry a device that is controlled by Forth. (After two sets of C programmers messed up) :) 

    The Galileo space probe was programmed in Forth and a number of NASA experiments are code in Forth. (or were?)  

    There is a bomb defuser written in Forth and a million line application that is used by the construction industry to do estimation on large projects.

    And some of my code is still being used to count live baby chickens at the rate of 90,000 per hour in the USA, Canada and the Netherlands.

    That's a lot of McNuggets!

    It is still great for writing hardware control programs which is what it was invented for.  

     

    Adding:

    https://www.mpeforth.com/wp/wp-content/uploads/2015/12/MPE_PR_From_Telescope_to_Comet_2014_11_13.pdf

    • Like 3

  7. Actually, looking at the SuperCart construction notes, there's already a resistor between pins 27 and 28. If you've built the SuperCart using a TI game cartridge as per http://www.mainbyte.com/ti99/supercart/supercart_4bank.html, then you should be able to write protect the RAM simply by inserting a switch in the wire between the 3rd edge connector pin and pin 27 of the RAM. 


  8. 3 hours ago, GDMike said:

    Can you shoot me a schematic..can I do this with the chip socketed, or do I need to pull 27 out of socket? 

    I pulled pin 27 out of socket put a wire to a switch from it, then the other wire from the switch I ran a 1k res to pin 28..it wrote data regardless.hmmm

    Maybe I need a dpdt?

    You'll either need to bend pin 27 so it doesn't go into the socket, or cut the trace to the IC pin 27 on the PCB. Bending the pin out of the socket might be easier then it leaves your PCB pristine.  ;-) You might find it best to only change the switch with the console powered off, then you don't get a problem with the RAM possibly being corrupted when the switch output is connected to neither input for a couple of milliseconds as the switch changes position.

     

    Should be a simple schematic attached.

    SuperCart.gif


  9. 1 hour ago, GDMike said:

    I'm experimenting with the 32k ver of supercart. I wanted to Know if there's a way of write protecting the 43256 chip..

    I noticed that the assy language program of creating the header was later destroyed after a couple of reboots but the data further into the memory areas, like around >7000 area were still intact all the way down to >7FFF. I tried a physical switch at pin 27 and did not get results I hoped for, write disabled..as I believe that pin is also needed to do a read in conjunction with oe.

    Pin 27 is /WE. So have a switch in-line with the connection to that pin, plus a ~1K resistor connected between that pin and pin 28 (+5V) to ensure that /WE is pulled high when the switch is in the 'off' position.

    • Like 1

  10. 7 hours ago, Asmusr said:

    It doesn't look like Cortex BASIC has the ability to draw text at any point in bitmap mode (256x192), so drawing labels on the tick marks is not something I will attempt to do.

     

    Note that TI BASIC, XB, RXB, etc. don't support bitmap mode out-of-the-box. Bitmap mode is using 12K of the 16K video memory, leaving almost no space for program data (the disk DSR also uses some). Tursi showed how you can draw a limited bitmap-like image by redefining character patterns, but this technique is limited by the complexity of the image. The Missing Link (TML) is an assembly extension to XB that provides bitmap mode, but using that means you have less space for your program data, and the overall space ends up being closer to that of Cortex BASIC. 

    In bitmap mode you can display text on a 32 character by 24 row grid - so easy to add labels if the tick marks happen to align with the character grid (or possibly tweak your axis scales so that they do align). If they don't align, then you could define the label text character bitmaps as stationary sprites which can be positioned with pixel accuracy.

    • Thanks 1

  11. 2 hours ago, RXB said:

    LOL if you have a Cortex base of like 20 people and no programs for it....what advantage is there at all to using it?

    Yea it is faster but if no one is using it what is the freaking point?

    Besides not being remotely backwards compatible and restricted to very very small programs why us it? (Bragging Rights?)

    I wouldn't say that 14K of RAM free for program and variables restricts it to "very very small programs"!

    • Like 1

  12. 54 minutes ago, Sid1968 said:

    Yes thank you i found it for Cortex Basic. Why is there no decription for "plot" in the manual???

    BTW... are you the developer of Cortex Basic V1.7?

     

    Iam sure that Rich can help us with RXB. 2 pm in Germany and 6 am in Vancouver.... Rich are you there? ;-)

    It's in the manual - section 4.2.12.4. (Appendix A of the manual contains an alphabetical list of BASIC keywords which is handy for finding where things are described.)

     

    Yes, I ported Cortex BASIC over from the original Cortex version.

     

     

    • Thanks 1

  13. 4 hours ago, Asmusr said:

    Is there any documentation for programming the sid card?

    In addition to Tursi's reply above, take a look at https://archive.org/details/COMPUTES_Beginners_Guide_to_C64_Sound_1984_COMPUTE_Publications_a. All the addresses and program listings are for the C64 so you'll have to convert them to TI-99 addresses, but it contains valuable info about how the SID chip works.

     

    Here's the SID chip playing on my TM990 system:

     

    • Like 4
    • Haha 1

  14. 6 hours ago, GDMike said:

    I tried a SB R1,R4 prior because I'm pretty sure if I do a SB R4,R1 that my results should go to MSB of R1? Or I thought so..but swapping that around didn't help me..

    If SB uses the MSB of both R1 and R4, your LI R4,>30 needs to be LI R4,>3000 to put the >30 into the MSB?

    • Like 1

  15. Get yourself a copy of the TI-99 circuit diagram if you haven't already (Google will find it for you). Find the TMS9901 on the circuit diagram and look at the inputs from the keyboard - pins P5 and /INT3 - /INT10. With the keyboard disconnected, check that each of these is being pulled to +5V. There's a pull-up resistor and a capacitor on each line that might be causing the problem.

     

    The TIM9904 clock chip has no bearing on the keyboard problem.

    • Like 1

  16. Pretty much all the 9901 pins are already used, but it's fairly easy to add a second 9901 to the console by piggybacking it on the existing one and mapping it to unused CRU address (>0400 or >0800?). If you've got a RAMDisk in your system and have the source code for the DSR, then it is fairly easy to add a new device entry (so you don't need to mess around with the hardware to support a separate DSR just for the clock), and then add the software to support opening and reading/writing to the clock. That's how I added support for a parallel keyboard interface many many years ago.

    • Thanks 1

  17. 6 minutes ago, HOME AUTOMATION said:

    It's cute how they used different numbering.

     

    I keep wondering if c606, r606 figure into this ...probably not

     

    I don't see where c506, r514 go. I imagine they go to the cartridge port.

    c506, r514 - the circuit diagram is a bad copy - they connect to the line to the left, that goes up towards the top of the page.

     

×
×
  • Create New...