Thomas Harte
|
9d77f33611
|
Dealt with another source of repeating magic constants: the command numbers.
|
2017-08-15 11:06:10 -04:00 |
|
Thomas Harte
|
7d132f81f7
|
Increased logging by quite a distance and made an attempt once again to allow the processor some time to supply the first byte when writing before declaring overrun.
|
2017-08-15 10:50:28 -04:00 |
|
Thomas Harte
|
6553bf05b4
|
Corrected multi-sector reads: ensured the incremented sector number isn't replaced by the original, and that the controller returns to scanning mode.
|
2017-08-14 22:27:31 -04:00 |
|
Thomas Harte
|
0816d3f5a9
|
Corrected 'read deleted data' command. It's 0xc , not 0xb .
|
2017-08-14 21:41:20 -04:00 |
|
Thomas Harte
|
cddcd0fb79
|
Put my money where my mouth is and switched the superclass of WD1770 to MFMController , eliminating duplicated (/factored out) code.
|
2017-08-14 16:32:53 -04:00 |
|
Thomas Harte
|
a366298022
|
Factored out the standard [M]FM gap and mark groups, to increase 8272 readability and because it's pretty-much certain I'll need them again if ever I try to tackle e.g. the 8271.
|
2017-08-14 16:03:35 -04:00 |
|
Thomas Harte
|
4df9307d25
|
Factored out the dull and repetitious stuff of writing n bytes of the same value.
|
2017-08-14 15:50:36 -04:00 |
|
Thomas Harte
|
9038ba622e
|
Added a quick version of read track.
|
2017-08-14 14:34:56 -04:00 |
|
Thomas Harte
|
7b8bb0297a
|
Implemented single density version of format track.
|
2017-08-14 13:03:17 -04:00 |
|
Thomas Harte
|
0da02d3902
|
Added read/write escape clauses if faced with a read-only disk.
|
2017-08-14 12:53:18 -04:00 |
|
Thomas Harte
|
2e5ad19fe1
|
Minor tidying.
|
2017-08-14 12:42:48 -04:00 |
|
Thomas Harte
|
cefec7a19f
|
Sought more robustly (i.e. less repetitively) to handle dispatch, including cancelling seeks where appropriate.
|
2017-08-14 10:37:39 -04:00 |
|
Thomas Harte
|
7264fbb3d2
|
read_id now clears status. I probably need to find a way to generalise this.
|
2017-08-14 09:58:55 -04:00 |
|
Thomas Harte
|
8a7b23dc9e
|
Ensured data-accessing commands cancel seeks on their drives. Also introduced a count of drives currently seeking in order to make for a slightly better broad-phase test in run_for.
|
2017-08-14 09:45:39 -04:00 |
|
Thomas Harte
|
b7065575f3
|
Added (empty) call-ins for DMA usage; switched to having the 'is seeking' bit in the status register stay high until sense interrupt status, but now it goes high even for seeks that don't actually go anywhere, and corrected interpretation of the specify command, with a positive result: the received step rate time, now that it's being interpreted correctly, is much shorter.
|
2017-08-14 09:04:22 -04:00 |
|
Thomas Harte
|
7ea703f150
|
Started making provisions for a DMA-compatible implementation. Re: the CPC, it sounds like DMA acknowledge might be permanently wired, causing DMA mode seemingly to work from the 8272's point of view.
|
2017-08-14 08:38:00 -04:00 |
|
Thomas Harte
|
1011143dbe
|
Sought to correct my interpretation of 'gap 3'.
|
2017-08-13 21:52:48 -04:00 |
|
Thomas Harte
|
9ace6e1f71
|
Applied minimum constraints for specified parameters.
|
2017-08-13 19:25:57 -04:00 |
|
Thomas Harte
|
5221837be8
|
Fixed Non-DMA flag for the format track execution phase. The emulated machine now provides sector details.
|
2017-08-13 18:51:06 -04:00 |
|
Thomas Harte
|
e1e9a06712
|
Made an attempt at format a track.
|
2017-08-13 18:05:19 -04:00 |
|
Thomas Harte
|
b0a7208cc7
|
Strung together a very basic version of 8272 write [/deleted] data. Lots of cases as-yet unhandled.
|
2017-08-13 12:50:07 -04:00 |
|
Thomas Harte
|
eec42aa7ae
|
Entrusted further status to drives; also adjusted them to report read only if diskless, which I now believe to be correct.
|
2017-08-13 11:50:49 -04:00 |
|
Thomas Harte
|
5f42022c1d
|
Added a tester for the control mark.
|
2017-08-12 17:35:14 -04:00 |
|
Thomas Harte
|
11d0c37506
|
Attempted to find a more expressive way for maintaining state — macros for all conditions, to bind both values and destinations.
|
2017-08-12 17:33:52 -04:00 |
|
Thomas Harte
|
27d1dc5c37
|
Removed some old printf s.
|
2017-08-12 16:49:20 -04:00 |
|
Thomas Harte
|
7135259cc1
|
Sought to flesh out error conditions.
|
2017-08-12 16:36:37 -04:00 |
|
Thomas Harte
|
4909325e79
|
Implemented read deleted data.
|
2017-08-12 13:01:17 -04:00 |
|
Thomas Harte
|
a4ee697ed1
|
Quickie: head unload is scheduled only if the head is presently loaded.
|
2017-08-12 12:53:45 -04:00 |
|
Thomas Harte
|
0f15a2f97f
|
Relented: it actually looks like status bytes aren't per-drive. But each drive may fail at seeking individually. So that piece of state accumulates at the 8272 drive.
|
2017-08-12 12:52:36 -04:00 |
|
Thomas Harte
|
89ace671a4
|
Corrected unload time. Was 8000 times too short.
|
2017-08-12 09:44:01 -04:00 |
|
Thomas Harte
|
e7db2a2f6d
|
Sought to introduce head loading and unloading delays.
|
2017-08-12 09:36:21 -04:00 |
|
Thomas Harte
|
ffb1a14ace
|
Minor: clear status registers before a read data.
|
2017-08-11 18:56:33 -04:00 |
|
Thomas Harte
|
2eed24e859
|
Made an initial attempt at [a subset of] multi-sector reads.
|
2017-08-10 11:11:26 -04:00 |
|
Thomas Harte
|
b11d142cff
|
Switched to descriptive names.
|
2017-08-08 20:35:41 -04:00 |
|
Thomas Harte
|
021ff8674e
|
Added something for sense drive status.
|
2017-08-08 20:30:54 -04:00 |
|
Thomas Harte
|
47732ffb98
|
Prevented the 8272 from overreading ID fields (and, by doing so, overrunning its internal buffer). Exposed the MFMController's CRC generator for inspection.
|
2017-08-07 12:37:22 -04:00 |
|
Thomas Harte
|
d07f3216ab
|
Added a broad phase on whether seeking is ongoing.
|
2017-08-07 12:12:59 -04:00 |
|
Thomas Harte
|
68c73184b1
|
Had failed to spot that by taking control of stepping at this level, the appropriate invalidate_tracks were not being sent.
|
2017-08-07 10:36:53 -04:00 |
|
Thomas Harte
|
7f824d6494
|
Ensured seeks and recalibrates end immediately if no seeking is required.
|
2017-08-07 10:31:32 -04:00 |
|
Thomas Harte
|
3219212f03
|
A closer inspection of the data sheet seems to suggest that invalid command sequences will post ST0.
|
2017-08-07 07:35:41 -04:00 |
|
Thomas Harte
|
d90e35e5bd
|
Added a bunch of comments, and ensured that the data request bit remains set for the entire period that command bytes are accepted.
|
2017-08-07 07:27:00 -04:00 |
|
Thomas Harte
|
73f8488150
|
Reaching the end of the usable part of my day, decided to tidy up a little before bed with indentation that reflects a distinction between top-level entry points and mere loops.
|
2017-08-06 22:14:18 -04:00 |
|
Thomas Harte
|
3853966a1e
|
Removed formal storage of ST3, as it just seems to be composed live. This may turn out also to be the best way to deal with ST0–2, time will tell. Also took a stab at the error in responding properly to the ROM's intended use of seek might be accepting new commands as replacements for old ones rather than rejecting them. That didn't seem to do the trick.
|
2017-08-06 22:10:12 -04:00 |
|
Thomas Harte
|
d63893a437
|
Collapsed implementations of recalibrate and seek, and decided to intend to go for an upward count on steps taken rather than a downward one. But seek continues presently to fail.
|
2017-08-06 21:52:52 -04:00 |
|
Thomas Harte
|
90c74043f5
|
Remembered to toggle off RQM between bytes. CAT now works.
|
2017-08-06 21:21:59 -04:00 |
|
Thomas Harte
|
600445d90a
|
Made a first attempt to return sector contents.
|
2017-08-06 20:40:29 -04:00 |
|
Thomas Harte
|
e4b405fd3d
|
With the ROM now using a read ID to set its expectations, implemented that and fixed FIND/READ_HEADER macros for multiple use. Execution now reaches the unimplemented section of read data.
|
2017-08-06 20:32:46 -04:00 |
|
Thomas Harte
|
3b7ecbdf0d
|
Renamed result_ to result_stack_ to emphasis the fact that it goes backwards. Switched meaning of CB so that it is set for the entire command, execution and result phases.
|
2017-08-06 20:17:12 -04:00 |
|
Thomas Harte
|
01efb645cb
|
Took a reasonable gamble that the CHRN reported is from internal registers, not from the last-found header.
|
2017-08-06 19:57:34 -04:00 |
|
Thomas Harte
|
b5ec1f42d5
|
Started resetting 'busy' when entering the result phase. AMSDOS now complains of a missing disk after failing to find sector 01. My belief is that it should end up asking for C1. So this is not even getting through a failure to find a sector correctly yet.
|
2017-08-06 19:48:17 -04:00 |
|