Experimental support for Oric in exomizer

Questions, bug reports, features requests, ... about the Oric Software Development Kit. Please indicate clearly in the title the related element (OSDK for generic questions, PictConv, FilePack, XA, Euphoric, etc...) to make it easy to locate messages.

zagon
1st Star Corporal
Posts: 12
Joined: Wed Jan 31, 2007 7:46 pm

Post by zagon »

- Your program is also compatible with the Oric Atmos or Telestrat, so there is not reason to only talk about "Oric 1" in the documentation.
Ok, I'll change it to Oric 8-bit computer family (or something like that).
- It would be nice to get the start adress automaticaly extracted from the tape header if the source file is a .TAP
Its already implemented. The start address is extracted if the tap is autostarting and "sys" is given as the sfx argument:
exomizer sfx sys -t1 <autostartin.tap> -o <autostartout.tap>

I would like to be able to crunch and autostart basic programs as well.
Is it possible to start a basic program by a small machine language stub that calls into the basic rom? Is there some disassemby of the BASIC ROM or tape loading routines available to study?

Its ok to include the program in the OSDK. However, If only parts of the exomizer distribution is included please make this clear to the OSDK users and also please mention that whe whole distribution is available at the homepage.
zagon
1st Star Corporal
Posts: 12
Joined: Wed Jan 31, 2007 7:46 pm

Post by zagon »

So I suppose it could be possible to load part of a program, decrunch it in overlay ram, switch to rom and load the rest in normal memory and then switch back to ram to run everything together?


The assembler source code of the decruncher is included in the distribution. It is possible to use it for decrunching from memory buffers or streaming from disk files.

However, the Oric target of the sfx decruncher can decrunch $0500-$ffff if a microdisc controller is attached so there is no reason to complicate things if the whole decrunched program fits into RAM + overlay ram.
zagon
1st Star Corporal
Posts: 12
Joined: Wed Jan 31, 2007 7:46 pm

Post by zagon »

Hello again,

I have updated the test version, dos and win32 versions this time too. No source code. If you need it to compile for some other target please notify me and I'll clean them up.

Its the same URL as before, so please make sure that the zip-archive has files timestamped today:

http://hem.bredband.net/magli143/exo/exooric.zip

This time it also supports start of crunched basic programs. It handles being loaded both from tap and disc by sedoric for both the Oric 1 and Atmos.

Like for the other targets you'll have to specify that it is a basic program like this:

$ exomizer sfx basic -t1 <infile> -o <outfile>

It is also possible to run basic programs from non standard locations etc, see the exo20info.txt for details.

Getting the basic start to work from disc was a bit troublesome. From tape the decruncher are called from a CLOAD statement where the basic environment already is set up properly. However, when loaded from sedoric, machine code programs are started from a completely different context with the BASIC ROM flipped out.

The solution was to prepend the decruncher with a minimal single CALL basic program in order to make it a basic program. This way the decruncher is started from an already initialized basic environment regardless if it was loaded from tape or disc.

Again, have fun.
User avatar
Dbug
Site Admin
Posts: 4444
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Post by Dbug »

I was not here this entire week end, just reading the messages now, I'm quite impressed by the work you made !
Do you have average packing ratios for the BASIC programs ?

I'm wondering if it would be possible to pack these commercial programs that generaly are made of more than one file on the same tape, with a BASIC loader that loads the remaining stuff ?
zagon
1st Star Corporal
Posts: 12
Joined: Wed Jan 31, 2007 7:46 pm

Post by zagon »

DBug wrote:Do you have average packing ratios for the BASIC programs ?
I haven't been able to find that many basic programs for the Oric so no, I haven't.

However, there are tricks to make basic programs compress more.
This is a bit off topic but ...
For instance, on the c64, you can:
  • renumber all lines that aren't referenced from other lines to 0
  • destroy the line links with byte values that compresses better. Just call the recalculate line links routine in ROM before starting.
  • remove rem statements and remove whitespace between statements
The oric basic seems very similar in how the lines are stored in memory so these things probably works for Oric basic programs too.

In the exomizer distribution there's a utility included, exobasic' that can do this for c64 basic files. This won't work for the Oric since the basic token codes differ but the general idea is the same.
DBug wrote:I'm wondering if it would be possible to pack these commercial programs that generaly are made of more than one file on the same tape, with a BASIC loader that loads the remaining stuff ?
I don't know, my access to Oric programs are limited to what I have found by googling on the web. But if I may guess, yes probably, if the programs don't do any funny stuff copy protection wise.

(By the way, exomizer can only read the first program in a multi-program tap file)
Post Reply