Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

'STAR' by Loriciels not working #65

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

Comments

@GoogleCodeExporter
Copy link

commented Sep 1, 2015

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

@GoogleCodeExporter

This comment has been minimized.

Copy link
Author

commented Sep 1, 2015

[deleted comment]
@GoogleCodeExporter

This comment has been minimized.

Copy link
Author

commented Sep 1, 2015

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

@GoogleCodeExporter

This comment has been minimized.

Copy link
Author

commented Sep 1, 2015

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

@GoogleCodeExporter

This comment has been minimized.

Copy link
Author

commented Sep 1, 2015

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

@GoogleCodeExporter

This comment has been minimized.

Copy link
Author

commented Sep 1, 2015

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

@GoogleCodeExporter

This comment has been minimized.

Copy link
Author

commented Sep 1, 2015

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
Projects
None yet
1 participant
You can’t perform that action at this time.