'STAR' by Loriciels not working #65

Closed
GoogleCodeExporter opened this Issue Sep 1, 2015 · 6 comments

Comments

Projects
None yet
1 participant
What steps will reproduce the problem?
1. load attached TAP file in either Oric-1 or Atmos mode.
2.
3.

What is the expected output? What do you see instead?
In Oricutron v0.9 you just get a 'Ready' prompt after loading but in Euphoric 
the games automatically starts.

What version of the product are you using? On what operating system?
Oricutron 9.9 on Windows 7 64bit computer

Please provide any additional information below.


Original issue reported on code.google.com by dave3...@googlemail.com on 29 Jun 2012 at 4:46

[deleted comment]
Hmm this one is interesting. Once STAR has loaded, the CPU jumps to RAM 
containing complete nonsense. Lots and lots of BRKs and illegal instructions. 
It executes from $0501 to around $ff4.

Because Euphoric doesn't emulate illegal operations, it just skips 1 byte when 
it reaches them, which means it ends up executing the instruction at address 
$ff4, which is a jump to $6400.

Oricutron, however, executes illegal instructions. Right before the jump to 
$6400 is a bunch of $FF bytes, and $FF is a 3-byte illegal opcode. This means 
that at the end of the $FF byte region, Oricutron ends up at address $ff5 (the 
JMP opcode at $ff4 is interpreted as part of the last $FF instruction @ $ff2). 
This means instead of jumping to $6400, Oricutron executes a BRK followed by an 
RTS and ends up back at the BASIC prompt.

Indeed, if I disable illegal opcode handling in Oricutron, STAR works perfectly.

Now, apparently $FF is a DIFFERENT illegal opcode on 65c02, and may even be 2 
bytes instead of 3. But the Oric usually has a 6502, not 65c02!

What I can't understand is why this works on your real Oric. Does your Oric 
have a 65c02 by any chance?

Original comment by p...@petergordon.org.uk on 17 Aug 2012 at 9:16

Whats interesting is that I just checked on the visual6502 simulation (this is 
an exact simulation of the internals of a 6502), and $FF is definitely a 3 byte 
instruction on real hardware! I have no idea how this can work on real hardware!

Original comment by p...@petergordon.org.uk on 17 Aug 2012 at 9:28

Oh, and the actual behaviour in Oricutron is a double-NOP and an RTS. The JMP 
instruction and the first half of the JMP address are treated as the operand 
for a $FF instruction at $ff3.

Original comment by p...@petergordon.org.uk on 17 Aug 2012 at 9:33

BTW, if you want to play STAR in Oricutron 0.9, once it dumps you back to 
BASIC, type:

CALL #6400

Original comment by p...@petergordon.org.uk on 17 Aug 2012 at 9:36

a bad dump
http://forum.defence-force.org/viewtopic.php?f=22&t=834

Original comment by stefan.h...@gmail.com on 28 Oct 2012 at 9:30

  • Changed state: WontFix
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment