Oriculator (WIP)

Comments, problems, suggestions about Oric emulators (Euphoric, Mess, Amoric, etc...) it's the right place to ask. And don't hesitate to give your tips and tricks that help using these emulations in the best possible way on your favorite operating system.
User avatar
Xeron
Emulation expert
Posts: 426
Joined: Sat Mar 07, 2009 5:18 pm
Contact:

Post by Xeron »

Well, i've decided to work on jasmin support, since it shares a lot of code with the microdisc mode.

I've disassembled the jasmin rom, which doesn't do much (just reads sector 1 and jumps to it), but already helped me improve the disk emulation in a couple of places.

The jasmin code in the SVN now works enough for the jasmin rom to successfully execute, but the ftdos disk image doesn't seem to work, so the next step will be to disassemble sector 1 from that disk and figure out where that fails.

Watch this space ;-)
User avatar
Xeron
Emulation expert
Posts: 426
Joined: Sat Mar 07, 2009 5:18 pm
Contact:

Post by Xeron »

Here is a disassembly of the FTDOS bootsector.

Working through this has improved the disk support a lot. The current code in the SVN can now successfully execute through the jasmin rom, and the FTDOS bootsector correctly, although FTDOS itself then fails.

None of the improvements fixed the SEDORIC bug, but i'm finding this process really helpful in finding and fixing problems with my disk emulation in general.
User avatar
ibisum
Wing Commander
Posts: 1643
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Post by ibisum »

I'm watching your changes through the repo, you're powering through a lot of interesting stuff .. will try to understand whats going on with Sedoric.
User avatar
Xeron
Emulation expert
Posts: 426
Joined: Sat Mar 07, 2009 5:18 pm
Contact:

Post by Xeron »

The code in the SVN now boots FTDOS.DSK correctly in Jasmin mode :-)

None of the fixes required for this had the side effect of fixing the sedoric bug :-(
User avatar
Xeron
Emulation expert
Posts: 426
Joined: Sat Mar 07, 2009 5:18 pm
Contact:

Post by Xeron »

Well, I finally nailed the sedoric bug.

I loaded up Euphoric on my PC and Oriculator on my Amiga, and traced the boot sequence of toxic_slime.dsk side by side, looking for where Oriculator differed to Euphoric. This was an incredibly tedious, painstaking task that took several hours. But I finally found the problem.

It seems I already had the answer right in front of my eyes. Here is a quote from an earlier post in this very thread:
It seems to me that it only works after a reset because before jumping into the sea of BRKs, it sets up the interrupt vector to point to $d0a5. Then, when you reset Oriculator, that vector changes the checksum calculated in step 8 to be non-zero, so on the second time through, steps 11, 12 & 13 are executed, and X contains $3C instead of $04, and a lot more sectors are therefore read from the disk.
... If there is anything at all in overlay RAM, SEDORIC reads $3C sectors instead of $04.

From my painstaking trace work, I found that, at the point where SEDORIC checksums overlay ram, NOTHING AT ALL HAS BEEN WRITTEN TO IT. It is checksumming nothing in particular. Or, worse...

When cold booting, Oriculator sets all ram to zero, but Euphoric fills it with a specific pattern.

This pattern is essentially meaningless garbage that all real orics happen to have when you turn them on (well, actually there are two possible garbage patterns, but they're both garbage). This means that overlay RAM has meaningless garbage in it. SEDORIC checksums meaningless garbage to determine how to boot.

I can now answer my earlier questions:
1. What is *supposed* to be @ $c980 to be checksummed?
Any old crap. Just not all zeros.
2. Why isn't it there?
Because neither microdisc ROM or SEDORIC actually put anything there.
3. Why does anything at all being in overlay RAM make it read $3C sectors instead of $04?
Because SEDORIC is very strange.

So anyway, I've now put the default memory patterns into oriculator, and sedoric now works.
Last edited by Xeron on Wed Jul 19, 2023 9:25 pm, edited 1 time in total.
User avatar
ibisum
Wing Commander
Posts: 1643
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Post by ibisum »

This is great news and it points out another interesting angle of the Oric, and its dependence on Entropy as a functional part of the core system .. ;)

Nice one! Off to svn update ..
User avatar
kamelito
Flying Officer
Posts: 182
Joined: Sun Jan 08, 2006 6:34 pm
Location: Nantes, France

Post by kamelito »

Really weird,

I actually wanted to do the exact same thing you did, comparing Eurphoric and Oriculator (my brain has not yet put in memory the new name).
Thanks for having done it, but it's really bizarre why zero do not work? any idea?

kml
Xeron wrote:Well, I finally nailed the sedoric bug.

I loaded up Euphoric on my PC and Oriculator on my Amiga, and traced the boot sequence of toxic_slime.dsk side by side, looking for where Oriculator differed to Euphoric. This was an incredibly tedious, painstaking task that took several hours. But I finally found the problem.

It seems I already had the answer right in front of my eyes. Here is a quote from an earlier post in this very thread:
It seems to me that it only works after a reset because before jumping into the sea of BRKs, it sets up the interrupt vector to point to $d0a5. Then, when you reset Oriculator, that vector changes the checksum calculated in step 8 to be non-zero, so on the second time through, steps 11, 12 & 13 are executed, and X contains $3C instead of $04, and a lot more sectors are therefore read from the disk.
... If there is anything at all in overlay RAM, SEDORIC reads $3C sectors instead of $04.

From my painstaking trace work, I found that, at the point where SEDORIC checksums overlay ram, NOTHING AT ALL HAS BEEN WRITTEN TO IT. It is checksumming nothing in particular. Or, worse...

When cold booting, Oriculator sets all ram to zero, but Euphoric fills it with a specific pattern.

This pattern is essentially meaningless garbage that all real orics happen to have when you turn them on (well, actually there are two possible garbage patterns, but they're both garbage). This means that overlay RAM has meaningless garbage in it. SEDORIC checksums meaningless garbage to determine how to boot.

I can now answer my earlier questions:
1. What is *supposed* to be @ $c980 to be checksummed?
Any old crap. Just not all zeros.
2. Why isn't it there?
Because neither microdisc ROM or SEDORIC actually put anything there.
3. Why does anything at all being in overlay RAM make it read $3C sectors instead of $04?
Because SEDORIC is retarded.

So anyway, I've now put the default memory patterns into oriculator, and sedoric now works.
/kml
skype pseudo : kamelitoloveless
User avatar
Xeron
Emulation expert
Posts: 426
Joined: Sat Mar 07, 2009 5:18 pm
Contact:

Post by Xeron »

kamelito wrote:but it's really bizarre why zero do not work? any idea?
Yeah, sedoric checksums $c980 to $ffff. If the checksum is zero, it only reads 4 sectors.
User avatar
kamelito
Flying Officer
Posts: 182
Joined: Sun Jan 08, 2006 6:34 pm
Location: Nantes, France

Amiga?

Post by kamelito »

So,

What is you Amiga?
MicroA1/A1, Pegasos, SAM, classic with PPC?
Are you gonna buy an X1000?
kml
/kml
skype pseudo : kamelitoloveless
User avatar
Xeron
Emulation expert
Posts: 426
Joined: Sat Mar 07, 2009 5:18 pm
Contact:

Post by Xeron »

Its an AmigaOne XE-G4 800Mhz. I did have a CSPPC in my A4000, but i sold it (as well as my A4000).

If I had the money, I would love to buy an X1000 ;-)
User avatar
ibisum
Wing Commander
Posts: 1643
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Post by ibisum »

I tested the latest updates and for sure we get a lot further with disks now than we did before, but I haven't been able to load a single DSK file without having the emulator hang shortly thereafter .. not sure if you're aware of it or not, but if there is something I can do to help debug this let me know ..
User avatar
Xeron
Emulation expert
Posts: 426
Joined: Sat Mar 07, 2009 5:18 pm
Contact:

Post by Xeron »

@ibisum

I am aware of it. For some reason, sedoric v3 disks (and some others) leave the VIA interrupt turned off after disk operations when it should be on.

You can get around the hang-up, though:

* Press F2 to go into the debugger
* Type "r vier $40" + enter
* Press F2 to go back to the emulator

Hopefully i'll fix it soon and do a 0.2 release ;-)
User avatar
Symoon
Archivist
Posts: 2301
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Post by Symoon »

Bug (?) report: it seems the "turbo tape" option is not effective when in Oric-1 mode.

Well, nothing too serious ;-)
User avatar
Xeron
Emulation expert
Posts: 426
Joined: Sat Mar 07, 2009 5:18 pm
Contact:

Post by Xeron »

Its not so much a bug, as not implemented. I haven't sat down and worked out the equivalent locations to patch in the ROM for turbo tape in the 1.0 rom.
Brana
Flying Officer
Posts: 169
Joined: Fri Nov 30, 2007 8:30 pm
Contact:

Re: Oriculator (WIP)

Post by Brana »

I have downloaded Oriculator from http://www.petergordon.org.uk/oricutron ... 32_v12.zip
Then I copied all my Iskra's TAP files from Iskra's folder to Oricutron\Tapes folder.
Then I tyed Cload"run.tap" (Enter)
I was so exited..
And.. oh... no...!
I have to re-write my own loader...
It does not detect Euphoric and refuses to load! :(
(Image enclosed!)

(Btw - I never, ever believed that will ever, ever come the day that Iskra will execute THAT piece of her code on her loading routine?!?)

By the way..
Can Oriculator work on Android device now...?
Please...?
Tell mee.. it is supported...? <3 <3 <3
Or.. Not..?


P.S..
This is my Euphoric's INI file:
How.. can I make the same.. on Oriculator...?

Code: Select all

;; Euphoric.ini : this file sets Euphoric's configuration
;;
;; Comment-lines start with character ';' 
;; (don't worry if you see two ';' characters, it is just in case you remove one :-)
;; Settings are in the form Keyword=value, without any space.
;; Be aware that keywords (and values) are case-sensitive !!
;; Options that expect a Yes/No value are checked against the first letter only,
;; and only 'n' and 'N' are checked, so you can write the value in a few languages:
;; (No, no, non, nein... Yes, si, oui, ja... will give the intended action)

;; It is highly recommended to set the following 3 options to the paths of your roms, tapes and disks :
;; Euphoric won't start if it doesn't find the roms !

RomPath=.
TapePath=.
DiskPath=.

;; this option selects the type of Oric to run
;; Oric1,Atmos,Telestrat (and even Stratos for UK fans)
;; You don't need to change it because it is overriden by command line options -1 or -t
;; and the provided Windows shortcuts use the right command line options

Computer=Atmos

;; this option selects the type of cpu (6502 or 65C02).
;; Genuine Orics have an old 6502 (NMos). Modern 65C02 (CMos) have an extended instruction set.

Cpu=6502

;; this option selects the frequency of the cpu, leave it to 1.0 MHz unless you know.

Clock=30.0 MHz

;; The following option selects the type of floppy disc controller,
;; it applies to Oric1 & Atmos only.
;; Acceptable values: None,Microdisc,Jasmin,Apple
;; (Apple means the Apple interface as found on Pravetz clones)
;; You usually don't need to change this option because it is overriden by command line options -d and -j,
;; or when you double click on a disk image, or when you use the Windows shortcuts.

DiskController=Jasmin

;; Select which floppy drives you want to have

DriveA=Yes
DriveB=Yes
DriveC=No
DriveD=No

;; Uncomment to emulate an IDE interface and specify a hard disk image file.
;; This is a preliminary support of the much expected Oric IDE interface:
;; if works in virtual life but the real implementation still has electrical problems.
;; Only one DOS supports it for now: have a look to RanDOS 2002.

;IDEDisk=\docume~1\fabrice\mesdoc~1\Micro\Oric\Euphoric\disks\hd

;; The following option sets the name of the rom that will be loaded when you start an Oric-1

Oric1Rom=Basic10.rom

;; The followinf option sets the name of the rom that will be loaded when you start an Atmos
;; Genuine Orics have a US keyboard, with few discrepancies.
;; Localized roms are available if you don't want to get a US keyboard.
;; Use Bas11_de.rom for a Deutsch keyboard
;;     Bas11_fr.rom for a French keyboard
;;     Bas11_uk.rom for a British keyboard
;;     Bas11_es.rom for a Spanish keyboard
;;     Bas11_se.rom for a Swedish keyboard...
;; or any rom you like (e.g pravetzd.rom)

AtmosRom=Basic11b.rom

;; the rom in the line below will be used inside the Microdisc controller
;; Use Cumana.rom for a Cumana 1 system

MicrodiscEprom=Microdis.rom

;; the rom in the line below will be used inside the Jasmin controller

JasminEprom=Jasmin.rom

;; the rom in the line below will be used inside the Apple interface

AppleInterfaceEprom=eprom8d.rom

;; The following roms set the contents of telestrat banks 1 to 7.
;; A localized Tmon24fr.rom is available for French keyboards
;; Unused banks are available as ram instead.

Bank7=Telmon24.rom
Bank6=HyperBas.rom
Bank5=TeleAss.rom
Bank3=Telmatic.rom

;; This option affects the contents of ram at startup, 
;; Try 1 or 2 to get the initial screen you are used to.

RamPattern=1

;; This option allows to emulate a printer on the Oric centronics port
;; (don't forget to switch the virtual printer ON in the environment screen
;; before printing (or using F3), since it is off when starting the emulator)

Printer=Yes

;; Here you tell in which file goes the printer output
;; Use PrinterOutput=lpt1: for direct printing

PrinterOutput=lpt1

;; Yes to add a serial extension to the Oric1/Atmos (Telestrat always has it)

AsynchronousController=No

;; Specify the real serial port to use
;; None,com1,com2

SerialPort=None

;; Use this option in some cases, e.g when connecting a Minitel

CarrierAlwaysDetected=Yes

;; Yes to add a Real Time Clock extension

RealTimeClock=Yes

;; Yes to emulate a joystick on Telestrat joystick port

JoystickPort=No

;; Yes to emulate a telestrat mouse in a joystick port

Mouse=No

;; This option specifies the type of joystick interface on an Oric1 or Atmos
;; None, PASE, IJK

Joystick=None

;; Yes to add a light pen extension

LightPen=No

;; Yes to wire pin PB5 of the VIA to A14 on a 32KB rom

SelectRomWithPB5=No

;; selects the name of the dump file (snapshot of the oric state)
;; generated when pressing F9

DumpFile=Dump

;; Yes if you want a Log file (log.txt)
;; useful if you have problems starting Euphoric

Log=Yes

;; Yes to dump the PSG registers at every VIA's timer1 interrupt
;; (there are players that can play this dump file)

DumpSound=Yes

;; Here you tell where goes the previous sound dump

SoundFile=dump.psg

;; Yes if you have a monochrome VGA monitor

MonochromeVGA=No

;; This option allows you to select a mode (Q) with a pixel aspect that is closer to the real thing
;; (Oric pixels are a bit flat). This is only true if you have a CRT monitor: AFAIK, LCD pixels are always square.
;; X is a default mode (320x240 unchained VGA mode) that should always work
;; Try VGAMode=Q (256x256 chained VGA mode) with next option ScanLines=Yes, and see if it works on your monitor.

VGAMode=X

;; If Mode Q works on your monitor, you might wish to get an even better screen aspect, with less 'boxy' pixels.
;; VGA monitors use an horizontal frequency that is about two times the one used on Oric monitors, and thus vertical
;; resolution is doubled. With the default value of this option (ScanLines=Yes), each line is displayed twice.
;; If you select ScanLines=No, each line will be displayed only once and there will be a small gap between the lines.
;; As a result, you will get pixels that have a more natural shape, but beware that this is not accepted by all monitors.

ScanLines=Yes

;; This option allows to tweak the VGA frequencies in Mode Q
;; Try 0,1,2 or 3 if you have display problems, 0 is the normal value.
;; I'm not sure it has a drastic effect, though...

VgaFrequency=0

;; you may redefine keyboard translation here
;; provide all 8 PC keys (PC scancode values in decimal) for an Oric Matrix Row
;; use negative numbers for extended PC scancodes (i.e prefixed by 0xE0)
;; and an illegal value for no scancode (eg. 128 or 999).
;; Don't use these options to get a WYTIWYG (What You Type Is What You Get) behavior
;; with your keyboard : if you don't have a US keyboard, use a nationalized rom as
;; explained in the AtmosRom option.
;; Advanced users can use these options to get the Ctrl key in place of the CAPS one,
;; like on the real Oric keyboards.
;; Don't change these options if you don't know how...

KbdMatrixRow0=  8, 36, 50, 37, 57, 22, 21,  9   ; 
KbdMatrixRow1= 49, 20,  7, 10, 51, 23, 35, 38   ; 
KbdMatrixRow2=  6, 19, 48, 39, 52, 24, 34, 11   ;
KbdMatrixRow3= 47, 33,  5, 12,-72, 25, 18, 53   ;
KbdMatrixRow4=-29,999, 29,999, 42, 56,-56, 54   ;
KbdMatrixRow5=  2,  1, 44, 86,-75, 14, 30, 28   ;
KbdMatrixRow6= 45, 16,  3, 43,-80, 27, 31, 58   ;
KbdMatrixRow7=  4, 32, 46, 40,-77, 26, 17, 13   ;
And.. This is the BAT file that I use to launch Euphoric emulator..

Code: Select all

eupholcd.exe -d oricdos.dsk
Can.. it be.. realized on Oriculator.. something similar...?


And.. If I may..
Last question :)
What does this mean?
It pop ups.. when ever Iskra loads any tap file...

Oricutron request:
This tape image seems invalid (header indicates lenght larger than than tape image)


(Image 2 enclosed)
Attachments
tapeimage.jpg
wrong.jpg
Post Reply