Code Monkey home page Code Monkey logo

Comments (3)

micahcowan avatar micahcowan commented on July 21, 2024

Disk operations happening as fast as possible, is in fact already the default. Actually, if you've been using the --simple interface (since you mentioned difficulties using the tty interface), the default is to run as fast as possible, all the time (in tty mode, it only runs "as fast as possible" while the drive is "spinning").

In my experience, most disks boot much faster than on a real Apple, though the DOS 3.3 Master disk (included in the sources) does take a bit longer than I'd like (still much faster than a real Apple, though).

It may be the case that some operations take much longer in Cygwin than they would on a "real" POSIX OS. Certainly, operations like fork() are widely known to be quite slow on Windows (due to lack of native support for an equivalent operation on Windows). It wouldn't surprise me to learn that mmap() is another operation that might not play nicely on Cygwin—I use mmap() almost everywhere for file I/O in bobbin. I feel like a sane implementation would slurp in these (small) files' contents entirely into a memory buffer; it's entirely conceivable that Cygwin is translating memory reads into "spin the file back up again and read some stuff", in which case I should probably consider just doing the buffer-slurp explicitly, myself.

I'll have to take some time to try things out on Cygwin (I primarily use WSL 2 on Windows, myself), and see what I can find out.

from bobbin.

micahcowan avatar micahcowan commented on July 21, 2024

So I know what I should be testing for, could you please specify what disk image you are experiencing this issue on, and how long it is taking for you? If you are timing it up to the point where it prompts the user for a keypress, you may find it helpful to use the Unix time command, together with bobbin's --trap-success FD1B option, to automatically exit bobbin when a keypress is being prompted.

For example, I get this on my MacBook Pro, running Mac OS Ventura:

$ time ./bobbin --simple -m plus --disk ../disk/dos33master.nib --trap-success FD1B
<snipped bobbin output>
real    0m12.026s
user    0m11.916s
sys     0m0.097s
$ 

from bobbin.

micahcowan avatar micahcowan commented on July 21, 2024

I haven't gotten around to seeing if cygwin is slowing disk processing significantly, but I'd like to point out that you could significantly speed up the process by saving a snapshot of memory once, after the DOS has booted, and restoring it when you load bobbin, so that bobbin starts up with the DOS already loaded in memory.

You could set a breakpoint on the monitor's line-input routine, which won't be entered until the disk is done loading, and has run the HELLO program:

$ ./bobbin -m plus --simple --disk1 dos33.dsk --bp INPUT

Then, when the debugger has triggered, you can type save-ram dos.ram to save the current memory to a file, and then type the q to quit bobbin.

Finally, use the following line to start up with DOS already loaded:

$ ./bobbin -m plus --simple --disk1 dos33.dsk --load dos.ram --start-at 3D0

This technique will also work for ProDOS.

Example:

mcowan$ ./bobbin -m plus --simple --disk1 dos33.dsk --bp INPUT
Breakpoint set for $FD1B.

[Bobbin "simple" interactive mode.
 Ctrl-D at input to exit.
 Ctrl-C *TWICE* to enter debugger.]


]
APPLE II
DOS VERSION 3.3  SYSTEM MASTER
JANUARY 1, 1983
       LOADING INTEGER BASIC

             INTO MEMORY.


COPYRIGHT APPLE COMPUTER,INC. 1980,1982


]Breakpoint 1 at $FD1B.


*** Welcome to Bobbin Debugger ***
  SPC = next intr, c = leave debugger (continue execution), m = Apple II monitor
  q = quit bobbin, r or w = warm reset, rr = cold reset
-----
ACC: A0  X: 00  Y: 01  SP: EE           N    V   [U]   B    D    I   [Z]  [C]
STK: $1EB:  96  00  1F  (9E)  B0  9E  37  FD  77  FD  32  D5  43
FD1B:   E6 4E       INC $4E          004E:  00 00 00 C0 55
>save-ram dos.ram
Success: saved RAM to file "dos.ram".
Breakpoint 1 at $FD1B.
ACC: A0  X: 00  Y: 01  SP: EE           N    V   [U]   B    D    I   [Z]  [C]
STK: $1EB:  96  00  1F  (9E)  B0  9E  37  FD  77  FD  32  D5  43
FD1B:   E6 4E       INC $4E          004E:  01 00 00 C0 55
>q
Exiting.
mcowan$ ./bobbin -m plus --simple --disk1 dos33.dsk --load dos.ram --start-at 3D0

[Bobbin "simple" interactive mode.
 Ctrl-D at input to exit.
 Ctrl-C *TWICE* to enter debugger.]

]CATALOG

DISK VOLUME 254

*A 003 HELLO
*I 003 APPLESOFT
[...]

]

from bobbin.

Related Issues (4)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.