South of France Meeting in Vieumikro (4 and 5 of October)

In this forum you can write about anything that does not fit in other forums.
This includes generic Oric talkings and things that are totaly unrelated but want to share with people here :)
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Chema »

Godzil wrote: I seriously doubt that the Cumulus in the current form is able to do this.
What may be done is to "convert" a tap to bootable dsk (not necessarily using a real DOS, we just need to load the TAP content into memory, but it will not be easy for nor "one file" TAP..
One thing that could be worth trying is having a bootable disk with a snapshot of the game (taken from an emulator, for instance, just after it has loaded). A small program would load all the data into the Oric's memory, update registers and jump to the location stored in the snapshot.

The small loader could be stored in page 2 or in overlay ram, so it does not upset the game itself (too much).

Does that make sense?
User avatar
Hialmar
Flight Lieutenant
Posts: 349
Joined: Tue Mar 04, 2014 11:25 am
Location: Toulouse, France
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Hialmar »

I think that Kenneth does something like this for Osmosa cartridges.

Oh and for multiple part tapes, you can just store several images of the RAM on the drive and load them sequentially each time the program does a CLOAD.
Hialmar
CEO and Silicium member.
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Godzil »

Hialmar wrote:I think that Kenneth does something like this for Osmosa cartridges.

Oh and for multiple part tapes, you can just store several images of the RAM on the drive and load them sequentially each time the program does a CLOAD.
So you will need to modify the data in the tap file, and it can't be done automatically (as there is no way to redirect a CLOAD call apart from using a non standard ROM)
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Chema »

Or loading a modified rom from a file in disk into overlay ram and keep it active... For a cassette game it shouldn't create problems...
User avatar
Hialmar
Flight Lieutenant
Posts: 349
Joined: Tue Mar 04, 2014 11:25 am
Location: Toulouse, France
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Hialmar »

Yes we need a slightly modified ROM and to read the memory data with an emulator as proposed by Chema.

JOTD, Fabrice and Kenneth discussed the last part at VM.
Once the program is in memory you need to find out the start address but this is stored somewhere (can't remember the exact address they talked about) so that's not a problem.
Hialmar
CEO and Silicium member.
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Godzil »

If I had time I would try to do this, it's not that much complex in fact, but free time is not my friend currently..
User avatar
kenneth
Squad Leader
Posts: 515
Joined: Fri Nov 26, 2010 9:11 pm
Location: France PdD
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by kenneth »

I thought about a shorter memory chip than Osmosa but rewritable (a 8Kb EEPROM like 28c64) toggled as the same place as the ORIC ROM when the " ! " routine is invoked. The contain of this memory will analyse the following characters typed in the buffer editor:
for ex
!LOAD !SAVE !CATALOG etc
the return or the internal ROM is done by writing in a page3 I/O address.
The same I/O adress is used to communicate with the SD CARD with a CMOS gate
A simple CLOAD"" with a TAP file from the PC computer will update the contains of the EEPROM with a security mechanical switch to avoid the unvoluntary overwriting of the "SD DOS" inside the EEPROM. Each programmer can create as he wants the way to use this "empty shell" to save DISK image, TAP routine or others
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Chema »

Which would be cool, but needs additional hardware. Something based on loading data from a disk could be used inmediately by anyone owning cumulus or a real disk unit.

It shouldn't be difficult to have a small loader program with a menu to select a game, then load it from a file using the same principles. Or am I wrong?
User avatar
tingo
Pilot Officer
Posts: 68
Joined: Sat Jul 11, 2009 11:30 am
Location: Oslo, Norway

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by tingo »

Oh, those Sharp x68k's are nice, but hard to get (and expensive).
Nice pictures, nice writeup and report - thanks for sharing.
Torfinn
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Godzil »

Ok ok, I will take a look at this.

I think the best way is to have no tool and make the cumulus do the "convertion" on the fly
User avatar
Hialmar
Flight Lieutenant
Posts: 349
Joined: Tue Mar 04, 2014 11:25 am
Location: Toulouse, France
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Hialmar »

I think a tool like tap2dsk that would transform memory dumps from Oricutron into Sedoric executable files would be the best.

This way anyone could do the conversions.

1- Fire up Oricutron ;
2- Load a tap game ;
3- Dump the memory once it's loaded ;
4- Use a tool like tap2dsk to create the Sedoric disk image ;
5- Put the disk image on your SD Card or write it to a real disk and voilà !

PS: If the multipart tape actually contains an intro, we could generate a small menu to fire up the different parts (that would be saved as several memory dumps). Now again doing a DIR and launching the programs manually isn't that complex...
Hialmar
CEO and Silicium member.
Godzil
Squad Leader
Posts: 774
Joined: Sat May 21, 2011 7:21 pm
Location: Between UK and France
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Godzil »

I don't think this is a practical solution. The best would be to be completely transparent. i.e. no modification to be done on the TAP file, and the TAP file content.

A tap2dsk will need to do modification to the application to change the cload and other basic call (or ROM call for an ASM application) used to load things from the tape.

I have in mind something that could be a farily simple solution. it just need to be implemented, and will only need some slight changes in the Cumulus firmware, nothing more
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Chema »

I am not sure what you have in mind Godzil, but sounds interesting.

However loading dumps is another possibility, which seems doable. It is not a matter of tweaking the tap file at all. The idea would be based on creating a dump when the game has already been loaded into an emulator. For instance Euphoric dumps (which seem easier to deal with) contains the contents of the Oric's memory, the registers, flags and probably timers.

It should be possible to simply store those dumps in the disk and use a program to load them into the Oric's memory. However that means creating a program, probably in overlay ram, which loads the dump in parts:
- First load up to page 3 or 4 somewhere in overlay for later use (depending on how the load routines are implemented and if they use page 4 at all or not)
- Second load from $400 or $500 to $bfff into the Oric's ram
- Load the last part of the dump into overlay, where the registers, timers and flags are stored.
- Disable interrupts (?)Then copy pages 1 and 2 (and 4 if needed) to correct locations. Then copy page 0 too.
- Then set up the timers with the values previously read. The program may have setup them somehow. We need to add the cycles we are going to use in the next steps.
- Prepare a small routine in lower memory (page 2, for instance) which would do the rest of the job and jump to it.
- Disable overlay ram, get the values of the PC and Status and pull them onto the stack and load the values of registers S,X,Y and A, then the P register and jump to the program.

Seems quite a lot of work, and probably I am missing something (even something that could simplify the process), but at least sounds doable. I wonder how Kenneth did this in his project.... any help here?

This could result in a tool which could load any game (as a dump) from those stored in the disk, which would be cool.

Another option, I think, would be patching the CLOAD and CSAVE commands in a v1.1 rom so they work with the disc and load this modified rom in overlay ram. Then load the tap game stored in disk. Problem with this is the usual CLOAD¨¨¨statements, which would need to load the "next" fragment, but in the disk there is no "next" fragment: we need a name.

Take this just as initial thoughts, maybe completely wrong :)
User avatar
kenneth
Squad Leader
Posts: 515
Joined: Fri Nov 26, 2010 9:11 pm
Location: France PdD
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by kenneth »

Chema wrote:I wonder how Kenneth did this in his project.... any help here?
I wrote in red color the changes of the content of the last 16k bank of the external EPROM (basic)

Image
Image


"transfer" routine is copied in zero page area (adr $35) by "copier" routine and executed instead of printing the "ready" message.

Image
User avatar
Chema
Game master
Posts: 3014
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: South of France Meeting in Vieumikro (4 and 5 of October

Post by Chema »

Thanks Kenneth. I understand, then, that you are not using memory dumps, but the actual data as it is in memory inmediately after load? How do you get that in games that load in several different blocks?
Post Reply