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

Hyper-DOS crawls along at a snails pace #202

Open
tomcw opened this issue Jun 19, 2014 · 4 comments
Open

Hyper-DOS crawls along at a snails pace #202

tomcw opened this issue Jun 19, 2014 · 4 comments
Labels

Comments

@tomcw
Copy link
Contributor

tomcw commented Jun 19, 2014

(Spun off from #201)
...an older fast-dos called Hyper-Dos does something similar on real Apple hardware. It not only displays the track/sector info, but it is a very fast dos. However in Applewin, this dos crawls along at a snails pace, perhaps slower than standard dos on a real Apple. Seems to take several seconds to read a single sector which can translate into a 4 minute load time for something that would take 5 or 10 seconds at longest on real hardware.

@tomcw
Copy link
Contributor Author

tomcw commented Jun 20, 2014

(Comment from Keatah in #201:)

Tom, you may find this dos on several single-file game disks from asimov such as:
ftp://ftp.apple.asimov.com/pub/apple_II/images/games/file_based/alienmunchie
s_eliminator_jupiterexpress_shootingalien.dsk

Or try this disk. It boots Hyper-DOS by default and has some sort of Super Master Create which allows you to make other master disks with other various fast DOSes.
ftp://ftp.apple.asimov.com/pub/apple_II/images/masters/3rd_party_dos/various%203rd%20party%20dos%27s.zip

Like other fast DOS'es of the day, it won't format a full blank disk. When typing INIT HELLO, it transfers itself to the new disk (previously formatted) by writing tracks 0,1, and 2. Reading is supposed to be fast.
IIRC writing has always been slow on real hardware, about the same speed as standard DOS 3.3.

I liked using this on my Sider HDD and RamDisks. The TS indicator just blasted by at lightspeed!

@tomcw tomcw closed this as completed Jun 20, 2014
@tomcw tomcw reopened this Jun 20, 2014
@Keatah
Copy link

Keatah commented Jun 20, 2014

I conducted more controlled and quantifiable tests. I made an tiny Applesoft program that simply BLOADs a 66-sector file 8 times for a total of 528 sectors transferred. I ran the tests with both standard DOS 3.3 and Hyper-DOS. All times reported in seconds. The test file was located on the same tracks and sectors for both test disks.

Perhaps the issue is more about Authentic vs. Enhanced speeds.

Official Apple DOS 3.3
Real hardware standard //e Platinum with Disk II drive - 132

Authentic Disk Speed + Emulation Control Speed [0.5] - 368
Enhanced Disk Speed + Emulation Control Speed [0.5] - 109

Authentic Disk Speed + Emulation Control Speed [1.0] - 310
Enhanced Disk Speed + Emulation Control Speed [1.0] - 59

Authentic Disk Speed + Emulation Control Speed [2.0] - 93
Enhanced Disk Speed + Emulation Control Speed [2.0] - 33

Authentic Disk Speed + Emulation Control Speed [Fastest] - 2.6
Enhanced Disk Speed + Emulation Control Speed [Fastest] - 12.3

Hyper-DOS
Real hardware standard //e Platinum with Disk II drive - 38

Authentic Disk Speed + Emulation Control Speed [0.5] - 139
Enhanced Disk Speed + Emulation Control Speed [0.5] - 21

Authentic Disk Speed + Emulation Control Speed [1.0] - 64
Enhanced Disk Speed + Emulation Control Speed [1.0] - 15

Authentic Disk Speed + Emulation Control Speed [2.0] - 31
Enhanced Disk Speed + Emulation Control Speed [2.0] - 12.5

Authentic Disk Speed + Emulation Control Speed [Fastest] - 1.2
Enhanced Disk Speed + Emulation Control Speed [Fastest] - 11.2

---END---

@tomcw
Copy link
Contributor Author

tomcw commented Jun 21, 2014

Thanks. That's a really thorough set of data.

I quickly checked the AppleWin code, and the differences between authentic & enhanced disk modes are:

  1. When "enhanced" is enabled and drive motor is on, then run unthrottled (ie. Emulation Control Speed = Fastest).
  2. When "enhanced" is disabled and disk type is DOS order or ProDOS order, then a SkewTrack() function is called, which shuffles the nibblized track bytes around.

I don't know why (2) isn't applied in enhanced mode too, since from your figures it clearly would give a benefit (eg. comparing Authentic vs Enhanced when Emu Control Speed = fastest).

One thing to note (and perhaps this is the reason why "Authentic" mode isn't truly authentic) is that the disk has no simulated rotation with time. The only thing that causes the disk to rotate is reading from the disk interface's data latch register. I suspect Hyper-DOS is tuned to account for the disk rotation with time.

@tomcw tomcw added the 1.24.0 label Jul 6, 2014
@tomcw
Copy link
Contributor Author

tomcw commented Jul 11, 2014

One thing to note (and perhaps this is the reason why "Authentic" mode isn't truly authentic) is that the disk has no simulated rotation with time.

Actually I'm wrong: in the main emulation loop, DiskUpdatePosition(DWORD cycles) is called.

When "enhanced" is disabled (&& there's been no disk access && disk is spinning) then the track offset advances by number of cycles / 32.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants