| |
6R6
Registered: Feb 2002 Posts: 245 |
Drive Code C128D N0SD0S Scanner bug.
Recently Nostalgia released Legacy of the Ancients.
Legacy of the Ancients +8DIR
The program used to scan the IFFL file refuse to
work on a C128D. I got this error report from someone
in USA, so I did a test on my own C128D.
What happens is:
Installer searches for the iffl file,
then it locates track+sector of the iffl file.
At this point this text is displayed on screen.
N0SD0S V1.2
SCANNING
73, CBM DOS V3.0 1571,00,00
Then scanner get installed in the 1571 drive. Scanner now
searches the IFFL file and you can hear the drive is working
as it makes a click for each track it moves to.
But then at the end of scanning everything freezes,
drive is spinning forever and the led is on.
I tried the same game disk on my c64+1541 and it
works fine. I tried not messing with the $1c07 timer.
I tried with and without fastload cartridge on my c128D.
But I get the same bug each time. Some have said i Have a bad VIC chip, but the VSP scroller in the n0s intro works fine for me.
I am not sure if its the C128D or the disk drive that is causing the problem. I wonder if anyone of you can help
me by verifying if it works or not on these setups:
1) C128D.
2) C128D but run the game from a external 1541(II) drive.
3) C128 + 1571
4) C128 + 1541(II)
5) C64 + 1571
Please post your report here.
Also, if you have any other suggestions to what
the problem might be please post here.
Thanks!
|
|
... 21 posts hidden. Click here to view all posts.... |
| |
Krill
Registered: Apr 2002 Posts: 2980 |
Yes, C128D is a pain in the ass. I fixed and re-fixed my loader several times for it. |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
krill, your earlier versions all worked fine on my 128dcr. |
| |
Mace
Registered: May 2002 Posts: 1799 |
Quote:@Mace:
Can you test LOTA with a normal C128 + various drives as device #9 and see if it hangs ?
Okidoki, will do so tonight. |
| |
Trurl
Registered: Mar 2002 Posts: 61 |
I dug out my flat C128 and tested LOTA with 1541-II. It worked as drive #8 but as #9, #10 and #11 it got to the EOA screen and jammed there.
EDIT: I just tested it with my breadbox+1541-II and it jams just the same as #9.
|
| |
6R6
Registered: Feb 2002 Posts: 245 |
Hello again.
I have dug my nose into this, and done some checking on the N0sD0s 1.2 bug where we have a 1541-II/1571 drive as device #9 on the serial bus.
The first bug that happens is that the installer
stops at the n0sd0s splash screen where "scanning" is displayed.
This has been partially solved.
The second bug that happens is more interesting:
To explain the bug I have done 5 tests to show
what happens. As for equipment setup I
use a C64 with RR + RRnet, a 1541 as device #8 and
a 1541-II as device #9. (Daisy chain connection)
Test 1: C64 - 1541 (#8) - 1541-II (#9)
--------------------------------------
If I run a N0sd0s game from #9 I only get crap data when loading, sometimes i get bytes that are correct. (Mostly $aa,$a0,$a3.)
Test 2: C64 - 1541 (turned off) - 1541-II (#9)
----------------------------------------------
If I run N0sd0s game from #9 I only get crap data when loading, sometimes i get bytes that are correct. (Mostly $aa,$a0,$a3.)
Test 3: C64 - 1541 (turned off) - 1541-II (#8)
----------------------------------------------
If I run a N0sd0s game from the 1541-II drive, with dip switches set to device #8, it works fine.
Test 4: C64 - 1541-II (#9)
---------------------------
In this test i removed the 1541 drive, and connected the
C64 directly to the 1541-II as device #9.
And it doesnt work, i get a lot of crap data.
But if I turn the dip switches to device #8 it works fine
again.
Test 5: C64 - 1541 (#8) - 1581 (#9) - CMD FD 4000 (#10)
-------------------------------------------------------
In this test I have all devices turned on.
The game works fine from any of the devices.
I don't understand why this happens.
What happens in the 1541-II drive when I flip the dip switches to device position #9 ?
(I also tried setting the 1541-II to #10 and #11 and it gave the same error.)
Does the dip switching corrupt the $1800 registers when I use $dd02.
Because I am using $dd02 in the code.
The C64 side of the handshake uses $dd02 to toggle the bits in $dd00 when sending
bytes to the disk drive. The get byte routine doesnt use $dd02 registers.
I'm suspecting it has to do with $dd02.
Our old n0sd0s 1.0 works fine:
Conan +3D
Check that game from any device number.
C64 code here only uses $dd00.
Maybe Doc Bacardi, Ninja, Krill, Graham, Lasse, HCL, or some other skilled
drive coder can give me a explanation for this behaviour ?
Thanks :)
|
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
Device number setting changes bits 5 & 6 at $1800. If the loader assumes they are both zero (as thay are with device #8) then it will fail with other device numbers. |
| |
6R6
Registered: Feb 2002 Posts: 245 |
Oh shit! I have forgotten to check that.
|
| |
6R6
Registered: Feb 2002 Posts: 245 |
Ah, excellent. Now it works from device #9 again.
Thanks TNT! :)
I didnt think about the device number was hard wired to the $1800 register. |
| |
TNT Account closed
Registered: Oct 2004 Posts: 189 |
An additional note: if you need to do some runtime modifications to the drive transfer code depending on device number, it's better to do it in drive using the value from $1800 instead of drive number. That way the loader will work even if drive number was changed with "m-w". |
| |
6R6
Registered: Feb 2002 Posts: 245 |
All bugs found and fixed. Thanks to all for help. :)
|
Previous - 1 | 2 | 3 | 4 - Next |