Comments (3)
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.
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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bobbin.