Comments (6)
To finish this off, I looked at a few professionally produced disks which I have imaged, including Ultima V and Chessmaster 2000, as well as personal disks that I'm pretty sure I formatted myself. All of the disks had the full DE AA EB
epilog for both the address and data fields everywhere I looked. I did not do an exhaustive survey, but I tried to look at multiple sectors on several tracks for each disk.
Personally, I'm surprised that they all had the complete, intact epilog. But I guess that's good. :-)
from apple2js.
This is very interesting. I feel like this may have come up when @iflan was writing tests for the various nibble routines. I will have to dig in some more.
from apple2js.
Don't know how I missed this thread. :-)
@Bischoff, I do remember reading that passage in chapter 3 of Beneath Apple DOS:
Lastly follows the epilogue, which contains the three bytes
$DE
,$AA
, and$EB
. Oddly, the$EB
is always written during initialization but is never verified when an Address Field is read.
And I just checked Beneath Apple ProDOS, chapter 3, which says:
Lastly follows the epilogue, which contains the three bytes
$DE
,$AA
, and$EB
. The$EB
is only partly written during initialization, and is therefore never verified when an Address Field is read.
In Understanding the Apple IIe, on p. 9-27, Slater writes:
An interesting point about DOS formats is the
DE AA EB
series that follows every address field and data field. Apple has always had trouble writing theEB
. In RWTS 3.2, they cut off the EB at the end of the data field by neglecting to wait 32 cycles before switchingREAD/WRITE
toREAD
after storingEB
in the data register. They changed that in RWTS 3.3, so the EB is actually written at the end of the data field. However, RWTS 3.3 and theFILER
formatting routine both cut off theEB
at the end of the address field. Those cut-offEB
s are not really written, and no attempt to verify their presence is made in RWTS or DIIDD processing.
I think this explains what's on blank.nib
. Essentially, it's a blank, formatted disk that was written by RWTS 3.3. Any partial write of a byte would be discarded, leaving the five $FF
s.
I'd very much like to see what happens with real floppies using both DOS 3.3 and ProDOS as well as factory-formatted floppies. I recently received an AppleSauce controller, so I should be able to see exactly what's happening. (This is going to take a few weeks, though, because I need to find a Mac to use the software.)
My proposal is this: If factory-formatted floppies contain the DE AA EB
epilog for the address field, then I think it's reasonable to emit those bytes after the address field for .dsk
files. Otherwise, we should do as @Bischoff says and omit the EB
for the address field. If, eventually, we always use WOZ as the internal format, we can even emulate whatever portion of the EB
actually makes it to the disk before it gets cut off.
from apple2js.
Thanks guys for diving into this.
@iflan's proposal at emission time makes sense to me.
But I would also recomment to make the EB
optional at reading time. If I am not wrong in interpreting the source code, it is currently expected when reading the disk.
from apple2js.
@Bischoff, two of the three places that you identified above are only for "exploding" a .dsk
sector into the .nib
format that's used internally. The readSector
method (disk2.ts, line 389) completely ignores the entire epilog for the address fieldโit doesn't even check the DE AA
bytes. And, in any case, readSector
is only used for exporting the disk state (DiskII.getBinary
(used in the save dialog) and DiskII.rwts
(unused)).
Therefore, I think that the emulator will be have correctly. If you think that's wrong, please let me know.
from apple2js.
Therefore, I think that the emulator will behave correctly. If you think that's wrong, please let me know.
You probably know the source code better than I do. If it does not impact reading, then fine ๐ธ , let's concentrate on the writing part.
from apple2js.
Related Issues (20)
- CATALOG Bug on Floppy Disk HOT 5
- Apple II DeskTop's triggering DHR Mono mode fails HOT 2
- State saving and recovery is not good when using a smart drive HOT 4
- Mocking board emulation
- ThunderClock is not interrupting. HOT 2
- Option to slow acceleration during audio playback HOT 3
- Loading a disk into Drive 2 reloads the disk from Drive 1 HOT 1
- how to exit fullscreen HOT 10
- Saving self-written program to file/localStorage? HOT 3
- Disabling Mouse Joystick HOT 1
- Better Rendering HOT 2
- Virtual keyboard issue on Android hosted Chrome
- Issue in bank 1 writing HOT 3
- Merlin need Apple 2c or 2e-128 HOT 1
- Is there documentation, or a changelog, besides the commit comments?
- a bit more explanation on creating a static distribution HOT 1
- Save state, load no more? HOT 1
- README says sit instead of git HOT 1
- Memory size? HOT 3
- Apple IIgs support? HOT 2
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 apple2js.