Jump to content
IGNORED

MAME and TIPI integration


aftyde

Recommended Posts

Hey Team,

 

So, got the TIPI going - and TI-BASE seems to like it! (meaning all RW operations work, no corruptions; did not expect that) - so, mounted an encrypted USB disk on the TIPI and put my data on that.  Works like a champ.  TI-99 PEB with world class encryption - good stuff.  I also have MAME running on my laptops - I'd really like my files on MAME to be on a network share such that the TI99 and the MAME emulated machines can see DSK4. as the same thing.  That would allow for the laptops to access the data over OpenVPN - thus eliminating the amount of data I carry with (which usually changes, and then I get to sort that all out manually).

 

However, it looks like MAME has no option for file systems - just disk images.  I've tried Classic99 FIAD and always up with corrupted database index files after running TI-BASE.  So, no Bueno!

 

Wonder if I'm missing something obvious - perhaps another approach I could take with MESS - features, or configuration options I don't know about.  Would value your thoughts!

 

Thank you, Arthur...

Link to comment
Share on other sites

Sorry, MAME can only handle disk images. This is a topic we discussed several times over the years, and there is currently no way with reasonable effort to change this.

 

Moreover, I keep noticing some requests to allow for a live interchange of files with MAME. If you know a bit more of the details of the MAME emulation, you will probably understand that this is one of the things that will likely never be possible, regardless of efforts. MAME does not process the bytes inside the DSK image; it translates them to a FM/MFM magnetic cell sequence. This sequence is read and modified by the emulated WD17xx or HDC9234 disk controller, and on exiting MAME, is written back as a DSK. Similar things happen with the hard disk image, although not so deeply in the physical aspect.

 

I do understand that such a file interchange is desirable in some situations, but I also have to concede that this is just not a feasible way to work with MAME. If this had to be changed, it would require extreme restructurings, basically writing a new emulator.

  • Like 1
Link to comment
Share on other sites

 

@mizapf

Maybe a virtual "Lotharek" device for Mame that can do that,

or just using the existing controllers mechanisms,

plus running a small additional, resident program/tool on Windows beside, to sit "between" Mame and the .DSK-file,

that delivers the from this "virtual" .DSK-file on-the-fly-or-not extracted Tifiles to the Mame´s controller, or so ?

Something like this RX/TX java thing (cannot remember the name/function, was something with RS232)

 

Nobody from Mame-team could recognize this :grin:

 

PS: Or a new, emulated TI-FDD-Controller (that does not exist in iron),

that accesses a directory (FIAD) and not a file ?

 

 

 

Link to comment
Share on other sites

2 hours ago, arcadeshopper said:

And this would all be solved if there was tipi emulation.. you could even do it with the web hook just like JS99er

Sent from my Pixel 6 Pro using Tapatalk
 

That's an interesting approach - I did try Classic99.  I might give it another whirl...

  • Like 1
Link to comment
Share on other sites

@aftyde, using the TIPI as a network drive for classic99 will have classic99 using it's FIAD system on those files. If classic99 is actually the cause of corruption, this will be bad.

 

If it is, maybe it has to do with unsupported operations in classic99 FIAD mode, like file deletion... Just conjecture... 

Link to comment
Share on other sites

8 hours ago, aftyde said:

I've tried Classic99 FIAD and always up with corrupted database index files after running TI-BASE.  So, no Bueno!

This is likely caused by a bad understanding of order of operations. It's very important to understand that Classic99 only touches the disk file once at OPEN, and once at CLOSE (if it needs to be flushed). Even if the TI side leaves the file open, the file on the PC disk system is /closed/ and untouched. This means that there is no locking and simultaneous access from multiple sources, especially if the file is kept open on the TI side, could cause strange issues like lost data or inconsistent data.

 

You should be able to tell by looking at the debug log and determining if the TI holds the file open and accesses the data live - for a database I'd expect it does. However, in that case, Classic99 sucks the file into RAM, organizes it by records, and does all the operations on the RAM copy, not the PC file copy.

 

Disk images, using the Classic99 file system, work in a similar manner, except that direct sector access is live to the PC file system. This could in theory have issues if a piece of software interleaved normal file operations with direct disk access, but that would be dumb. ;)

 

Disk images using the TI controller emulation operate at a sector level at all times, and so are always live to the PC file system.

 

The only file operation Classic99 doesn't support that real controllers support is delete - this is because Classic99 has vast freedom on the PC file system. It'd be odd if a missing delete caused a file to become /corrupt/, but it'd also be very easy to tell in the debug log. I'd also expect TI BASE to be checking disk error codes, and DELETE does not fail silently (it tells the TI it failed).

 

There's not going to be /any/ safe way to simultaneously share such a file. But one at a time it should work. If Classic99 all on its own is causing file corruption, that I'd be willing to look into... but you'll have to give me a step by step way to reproduce it.

 

  • Like 2
Link to comment
Share on other sites

11 hours ago, arcadeshopper said:

And this would all be solved if there was tipi emulation.. you could even do it with the web hook just like JS99er

The TIPI emulation could indeed be a way to go, but as always, don't expect things to work here as they do elsewhere. All of our emulators have their specific concepts and behaviors, we can't just have the best parts of all joined together. This is the normal way of things in computer technology. You always have a trade off between some features and others.

 

If I had to write a TIPI emulation, I'd need the following:

 

- the DSR: This must be available separately. MAME cannot (and will not) be distributed with ROMs; you always have to download your ROMs from own devices or freely available from some server. This is a core policy. (Mind that you even need a ROM dump for a keyboard controller like in XT/AT keyboards.)

- the port and memory mapping between the TMS9900 and the TIPI side

 

There is no general problem with high-level emulations; the SCSI controller itself offers a high-level interface, i.e. you tell it to get a sector, and it will do the rest. Likewise, the TI DSR may request high-level things from the TIPI.

 

On the media side, one could provide it with a path which contains the TIFILES files. Even when you need a file, not a directory, I could imagine to hand over some declarative file which e.g. contains path names. Those would then have to be platform-conformant, i.e. for Unix or for Windows system.

 

Eventually, an emulation of the TIPI must somewhat look like the emulation of an ordinary peripheral card.

  • Like 1
Link to comment
Share on other sites

The TIPI emulation could indeed be a way to go, but as always, don't expect things to work here as they do elsewhere. All of our emulators have their specific concepts and behaviors, we can't just have the best parts of all joined together. This is the normal way of things in computer technology. You always have a trade off between some features and others.
 
If I had to write a TIPI emulation, I'd need the following:
 
- the DSR: This must be available separately. MAME cannot (and will not) be distributed with ROMs; you always have to download your ROMs from own devices or freely available from some server. This is a core policy. (Mind that you even need a ROM dump for a keyboard controller like in XT/AT keyboards.)
- the port and memory mapping between the TMS9900 and the TIPI side
 
There is no general problem with high-level emulations; the SCSI controller itself offers a high-level interface, i.e. you tell it to get a sector, and it will do the rest. Likewise, the TI DSR may request high-level things from the TIPI.
 
On the media side, one could provide it with a path which contains the TIFILES files. Even when you need a file, not a directory, I could imagine to hand over some declarative file which e.g. contains path names. Those would then have to be platform-conformant, i.e. for Unix or for Windows system.
 
Eventually, an emulation of the TIPI must somewhat look like the emulation of an ordinary peripheral card.
Dsr and all that stuff is in the GitHub open source
https://github.com/jedimatt42/tipi/wiki

The TIPI board is pretty simple except for the cpld there's not much else but the DSR ROM, buffers and caps and it's all open source the pi portion can be done with qemu or a real pi (though the real pi has issues right now we are working on)

Greg

Sent from my Pixel 6 Pro using Tapatalk

Link to comment
Share on other sites

OK, using websockets this could be doable, I'd only have to emulate the adapter card. I'd have to pass the URL to the websocket as a command line option. The mouse support is something that happens on the PI/QEMU side, and is passed towards the TI (inside MAME), right?

 

Will have a closer look in the next weeks.

 

I'm not so familiar with websocket communication; any details on the protocol?

Link to comment
Share on other sites

OK, using websockets this could be doable, I'd only have to emulate the adapter card. I'd have to pass the URL to the websocket as a command line option. The mouse support is something that happens on the PI/QEMU side, and is passed towards the TI (inside MAME), right?
 
Will have a closer look in the next weeks.
 
I'm not so familiar with websocket communication; any details on the protocol?
@PeteE worked on it for JS99er will see if he shares

Sent from my Pixel 6 Pro using Tapatalk

Link to comment
Share on other sites

18 minutes ago, OLD CS1 said:

So I understand: if you are running a TIPI on a network, it can be used from a PC-based emulator (notably, JS99er?)

Yes and no.  yes it's supposed to work that way, no its currently got a bug and we are working it out.. see the tipi support forum for that detail, for now it requires QEMU emulating the pi on the PC it's running on. 

The PI can't be used for both a TI via gpio AND webhook, its one or the other.. 

  • Thanks 1
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...