Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Posts posted by Gazoo

  1. Getting a bunch (5 at least) of people buying carts that need 32k that just have a console.. Wish I had a stack of sidecar 32k's to sell them :)




    Marc Hull does a damn fine job of installing a 32k chip in a console. He was offering that service a few months back and I took advantage of it.

    Works great for the 2meg and 1 meg game carts.


    Why don't the 2 of you join forces?



    • Like 2


    I know that keyboard usage on MAME/MESS may be somewhat unintuitive at first sight, but there is some reason behind the things you observed. It is, however, not so easy to find a "compromise" due to the emulation concept of MAME/MESS.


    By "Function keys" I suppose you refer to the F-keys on the PC keyboard.


    Emulated keyboard


    The emulated keyboard is a set of digital switches which report 0 or 1, according to being released or pressed. In MESS, they are queried just as realized in the real machine, which means as a matrix of switches, arranged in lines and columns. The column is selected by the emulated 9901, and the respective switch status is then sampled on the input line of the emulated 9901.


    On the TI console, we have key combinations like FCTN-S or CTRL-W. The actual detection of this combination is done by the key scanning routine inside the console, which is also used in MESS unchanged. So you get two presses, one for the FCTN key, and one for S. This is known as arrow left, but MESS has no idea of that, as this is not its business.


    So we need a PC key that maps to the FCTN key (and a PC key that maps to the CTRL key, respectively) so that you get your two-key combination again.


    The bad thing about that is that the PC keyboard layout (in particular, localized keyboards) do not match the TI layout. Suppose I want to type an open parenthesis "(". The key scan routine in the TI console expects two keys to be pressed, namely "Shift" and "9". Unfortunately, on my QWERTZ keyboard, this would be the closing parenthesis. On the other hand, everything is good when I want to type "!" as Shift-1 because there is a match. Essentially, when I use my QWERTZ keyboard and I want to type CALL SAY("#NICE TRY"), I actually have to type


    (and you don't hear me complaining? ;) No, I well understand that this is not really desirable)


    We could try some workarounds for this situation in order to still keep the idea of a matrix arrangement of switches without this effect, but not on a multi-system emulator like MAME/MESS which must fit thousands of other systems. The keyboard routine is deep inside the core of MAME.


    Natural keyboard


    Since there obviously were some people that could not get used to the emulated keyboards, the "natural mode" was conceived. The idea here is what may have come in mind when reading the above explanation.


    Instead of turning the keyboard into a set of switches, we take the keycode from the keyboard driver and simulate a set of switches that has been pressed. For example, when Shift-a is pressed, the keycode is 0x41, and the natural mode maps this to "Shift" (as the value comes from the interval of shifted keys) and "a", which means that obviously two switches are actuated.


    Let's have a short look at the keyboard definition in the ti99_4x.c driver. I can explain it better with some code:

    PORT_START("COL2")  // col 2

    This is the group of keys activated when COL2 is selected, which means column 2 in the keyboard matrix. The PORT_BIT describes the bit (line) that is set when the key is pressed. Also, we have negative logic.


    The first line says that when the scancode for "c" is received (in emulated mode), this bit is set (to 0, negative logic).


    The next parameters are used for the natural mode.


    PORT_CHAR('c'): When a "c" is received from the keyboard driver, we activate this line, but no modifier key

    PORT_CHAR('C'): When a "C" is received from the keyboard driver, we activate this line, and also the Shift key.

    PORT_CHAR('`'): When the backtick is received from the keyboard driver, we activate this line, and also the FCTN line.


    For "Cursor left" we can query for UCHAR_MAMEKEY(LEFT).

    PORT_START("COL1")  // col 1

    Hence, this bit is set to 0, when "s" comes from the keyboard driver (no shift), "S" (with Shift), and Cursor Left (with FCTN).


    Still with me?


    Some observations:

    • As we take the key code from the keyboard driver, the driver has a chance to deliver the key according to the locale. No need to type CALL KEZ anymore, because when I type Y, I can be sure that the proper lines are activated.
    • Since we interact with the keyboard driver and have to iterate through all key definitions each time, the natural keyboard feels sluggish. The emulated keyboard is much more responsive. For that reason I accomodated myself to the emulated mode and feel much happier. :)
    • The natural keyboard mode can only work when the keyboard driver recognizes the keystroke. This entails delivering some keycode (probably from the unicode character set) that corresponds to the key combination.


    The last point is a big problem that you already found. We have some key combinations in TI programs like CTRL-W. However, when you press those keys on the PC keyboard, they do not map to a single keycode that can be delivered by the keyboard driver, but only to raw separated scancodes from the keyboard. In other words, we cannot find a suitable PORT_CHAR to be added to the line. Without a recognized keycode, we cannot specify which lines to activate.




    MAME/MESS delivers two keyboard modes which have their pros and cons. Your desire to have a simple access to the "natural" keys (like F1 or Cursor left) and the TI-specific keys like CTRL-W at the same time sounds reasonable, but I don't see how this could be solved inside MAME/MESS without a thorough redesign of the whole core keyboard routine, with the additional constraint that it must be useful for the thousand other drivers.


    @schmitzi: I know that you like to argue from the view of the "common customer" who does not care about my technical problems and probably long stopped following my explanations ... but at that point I feel like only being able to shrug and say, love it or leave it. :)


    Well, that's a very nice explanation, Michael. But it applies to the emulation of the TI994/A. The keyboard behavior I'm looking for is in the SGCPU emulation, which I use almost exclusively. As you probably know, the real SGCPU keyboard behaves as I described - the function keys work as well as the control key combinations. But under MESS emulation, it doesn't behave that way. So the question is, can MESS be fixed to properly emulate the SGCPU keyboard?



  3. Ever since I got my HSGPL card, I've wanted to load Parsec on it. But I couldn't, because it's hard coded to run from the first Grom page, and I need XB to be there.


    I assume nobody's ever figured out how to change the hard coding to another page, because I've never seen anything mentioned about it.


    Well, after studying the source code, I finally figured it out. There are 20 values in the ROM file that need to be changed. The original values will be one of 3 hex words >9800, >9802, or 9C02. To change the Grom page that Parsec will run from, these values must be increased by 4 for each successive page that Parsec is modified to run from. So to run Parsec from page 2, one would change the values to >9804, >9806, and >9C06. To run it from page 16, as I do, the values would need to be changed to >983C, >983E, and >9C3E.


    The following is the list of ROM memory addresses that need to be changed. I list them that way because there are different formats that the file can be in: no header, 4 byte header, and 6 byte header. The addresses listed are those that the computer responds to, not the absolute addresses of the ROM file. No change needs to be made to any of the Grom files, only the ROM file.


    Here's the addresses:























    If you don't find >9800, >9802, or >9C02 at all of these addresses, you're not looking in the right place or you've got the wrong file. Don't alter anything unless you've got the correct data to begin with.


    Have fun with Parsec!





    • Like 5

  4. I would like to see some sort of compromise to get the keyboard working correctly.


    If I use the 'natural' keyboard, the function keys work correctly, but the control key doesn't work. I often do a ctrl-w to write a sector with Disk Utilities and have to switch keyboard type just to do this particular job.


    If I use the 'emulated' keyboard, the control key works, but the function keys don't. I have to press 'alt' and the corresponding number for the function key I want.


    There should be a keyboard setting in MESS in which both the function and control keys work at the same time.



    • Like 3

  5. If you don't want to go through all the nonsense and hassle of putting a header in every ROM bank use an ubergrom cart. Burn a 1284P chip for the Grom side using the files in this message. The little bit of GPL code will autostart, set the first ROM bank, and reset to the title screen - you won't even notice that it happened. Your ROM chip now only needs to have a header in the first bank to work, the way things should be. :)




    Set ROM bank 1 - 128k Flash.bin

    Set ROM bank 1 - EEprom.bin



    • Like 5

  6. Hello Michael.


    I've changed one of the ROMs in the TI MESS emulation (the EVPC ROM) to suit my liking.

    Obviously I now get an error message upon startup to move the joystick right and left.

    Is there a way to suppress this warning in the Windows batch file that I use to start MESS?






    Never mind, I figured it out for myself.


    You can do it by editing the executable file, in my case 'messui.exe'.

    Make a note of the CRC-32 and SHA1 values of the original ROM file.

    Make the changes you want to the ROM file.

    Compute the CRC-32 and SHA1 values for the new file. I used HEX WORKSHOP for this.

    Do a text search of the executable file for the original CRC-32 and SHA1 strings.

    Replace those strings with the new ones, and save the executable file.

    No more warning message.



  7. I've been considering getting a Lotharek drive to play with, even though I don't really need one.


    The website says that the device supports up to 255 tracks. It seems that the current TI FDC eprom could easily be altered to support 89 tracks, that would give a maximum of 1602 sectors. As the bitmap only supports 1600 sectors, the last 2 sectors could simply be ignored.


    Not having the device, this raises several questions.


    How does one 'format' a floppy image for the device? A special formatting tool would seem to be required to correctly lay out sector 0 for the maximum of 1600 sectors.


    Can someone post a blank formatted 80 track, double sided, single density image for me to inspect?


    Is the extra 160 sectors per 'disk' worth the effort?




    • Like 2

  8. Thanks, I have used the cartridge trick a number of times, but I never get around to set it up until I have run the project in E/A a few hundred times. :) And it doesn't solve the issue of loading into all lower RAM, so for Jet Set Willy I used my own object loader to generate an E/A#5 file in every test cycle. I realize the linking would be difficult, but for what it's worth I never use REFs or relative origins or even multiple object files, and I always use auto-start. But I do understand if you don't want a loader in Classic99 to have those restrictions.


    Why not just use RAG Linker? It only takes a few seconds.

    I have it as a menu item in Funnelweb, so if I use the Funnelweb Editor and Assembler, I can quickly load RAG Linker for generating the image file. Easy Peasy. :)



    • Like 3

  9. What are you going to put in a larger cart? In the 2 meg cart we've got 8 pages of menus. It gets extremely complex to program such a device at that point and it certainly won't get any easier to do a larger cart. Seems to me like 2 meg is plenty, there's only 1 .bin file so far to fill the cart we have now, and I don't see any more being created by anyone yet.


    Maybe if some other individuals stepped up and created some more large images for the 2 meg cart it would make sense to make a larger one, but it looks as if making a larger capacity cart would be putting the cart before the horse. :-D



  10. I was having some problems with a Myarc FDC, and one of my options was to try and repair an HFDC to use in it's place.

    After replacing the voltage regulators and the two 74LS245's, the HFDC came back to life. I then installed the hard drive bypass jumper and decided to remove the hard drive routines from the eprom so as to simplify things. After doing all those things, the card works amazingly well. I may not put the Myarc FDC back in that system. :)


    Anyway, here's a dump of the Eprom, in case anyone else decides to follow a similar path. We may be able to repurpose HFDC cards that aren't being used because of the increasing unavailability of MFM hard drives.






    • Like 4


    Tursi put the TI editor and assembler into a cartridge a few years back - instant loading times. I think the main reason it hasn't got that much traction is because actual development on real-iron is the exception, rather than the norm these days. I haven't powered up my 4A or my SGCPU system in about 4 years!


    Putting the editor and assembler into cartridge form for instant loading has certainly been around for more than a few years. I did it 23 years ago. :)



  12. Hmm Boot incorrectly starts XB and you can test this to see I am right about the Random number generator and pointers not being set at all or incorrectly.


    I have had many arguments on this one but it still is true that Boot and FW both use a really random GROM address to start execution at.


    These loaders did not use the Miller Graphics recommended way to start a XB program just to save a few bytes, thus compromised the accuracy on purpose.


    You keep harping on this point, Rich. Unfortunately, everyone's experience is that BOOT works fine on loading XB programs. The only problem I've ever encountered was when I was trying earlier versions of RXB with BOOT. BOOT would just refuse to load ANY XB program when RXB was the active version of XB. Fortunately, you've recently fixed the bug in RXB that was causing this and it works correctly now. Thanks for that!


    The so called 'problem' you describe has never manifested itself other than the example I've provided above. I've been using BOOT for about 25 years and have never encountered the problem you describe. I'll let you know if I ever find an XB program that doesn't correctly load through BOOT with XB versions other than RXB, but it hasn't happened yet. :)



  13. Hello Michael.


    I've changed one of the ROMs in the TI MESS emulation (the EVPC ROM) to suit my liking.

    Obviously I now get an error message upon startup to move the joystick right and left.

    Is there a way to suppress this warning in the Windows batch file that I use to start MESS?





  14. Well, it looks like the MiniPro just may be the ticket. It has good reviews from the 'Heavy Hitter's' like Lee & Gazoo, the price seems reasonable and I've heard nothing negative against it.


    What's the next step? A thread or blog focusing on the topic as well as finding someplace to stick



    For starters's I'd love to see a step-by-step walk-thru of burning a specific single image into a cart.

    Later there could be tutorials on how to make cartridges with multiple images and including menu's.


    So what UNIVERSAL CARTRIDGE do you burning guru's recommend as the best all-around cartridge to cover 'most applications'?


    There is no Universal Cartridge, It all depends on what you create to put in the cartridge you want.Sometimes you only need Ram, Sometimes you need Grom/Gram,

    your programming skills determine the cartridge you require. So far there's no cartridge available that I can't fill with shit. Fetz keeps trying, but I keep filling 'em up. ;)



    • Like 3

  15. just a guess, I thought this bare WD1001-Adapter comes between the WDS/100 in the PEB (via the free Connector J5)


    and a (here not given) Winchster-MFM-harddisk (with 2 of the 3 the shown cables, 1 small seems to be too much here in the pic) ?







    Yes, the cable connects to the 2 connectors indicated.


    To the potential buyer: WARNING! Make sure you observe correct polarity when connecting the cable from the Personality card to the WDS100 card! Connecting the cable improperly will cause damage to one or both of the cards. I remember seeing several repaired cards that this happened to.



    • Like 3

  16. There is a Myarc Personality card (extremely rare) on ebay




    I had one of these back in the 80's that I picked up some how. But if I remember right mine was only a 5 or 10mb model. If I recall the WDSXX signified the size of disk to be used (5 or 10mb). Been so long I'm not 100% positive on that. If that is true this one says WDS100 so does that mean a 100mb MFM ?


    The maximum size that the controller card can access is 15mb. You can connect a larger drive, but it will only format to 15mb maximum.

    I had one of these for a while, and I updated the disk manager for it. It is not a standard hard drive device for the TI, and is problematic.

    I don't recommend bidding on it unless you are interested in it purely for historical sake. I noticed the WDS100 board is bare, the original

    had a unique case that held the board, drive, and power supply.


    I believe Arcadeshopper may be the last individual using one of these beasts.



    • Like 2
  • Create New...