Thomas Harte
3947347d88
Introduces active input handling for the AY and uses it in the CPC to give proper, active keyboard input, rather than push-on-select, which was only ever a temporary hack. Also maps a few more keys for the Amstrad.
2017-08-15 22:47:17 -04:00
Thomas Harte
8a37a0ff2e
Merge pull request #197 from TomHarte/MoreFDC
...
Improves the 8272 and the whole disk infrastructure behind it
2017-08-15 22:09:32 -04:00
Thomas Harte
468770b382
Removed debugging nonsense.
2017-08-15 22:06:58 -04:00
Thomas Harte
6cfc3daacb
Introduced a test within the disk controller so as not to request illegal tracks from disks, instead automatically substituting an 'unformatted' track. Which is just empty.
2017-08-15 21:52:12 -04:00
Thomas Harte
aefbafa18d
Centralised the 8272's actions of setting the non-DMA execution flag, picking the drive and head and loading the head for accessing commands, and switched error flag if read ID doesn't find anything.
2017-08-15 21:49:10 -04:00
Thomas Harte
d12c834f9c
Increased amount reported.
2017-08-15 20:35:33 -04:00
Thomas Harte
56de5cb2b3
Removed one further logging event.
2017-08-15 20:18:32 -04:00
Thomas Harte
709257a0c5
Quick fix: also treat reception of sync as a reason not to stop looking for a data address mark.
2017-08-15 20:16:56 -04:00
Thomas Harte
75a9d2bb33
Started withdrawing logging, reduced index hole count back to the correct number and tried to increase read_data
rigour.
2017-08-15 20:12:01 -04:00
Thomas Harte
7b92b235e1
Further upped assert
s, thereby discovering the mistake I'd recently introduced: seeking properly within the event source as per its potential left-clipping, but then not allowing for that in the calculated current time.
2017-08-15 16:25:46 -04:00
Thomas Harte
c196f0018f
Upped the assert quotient.
2017-08-15 16:15:09 -04:00
Thomas Harte
73080d6c36
Added an easy way for disk controllers to clamp termination of written data exactly to the index hole.
...
This commit also temporarily provides a whole load of extra logging and minor logic improvements from the 8272. I'm mid-flow on finding a particularly vicious error in its handling of writing; wait for the pull request. But, at least: now waits for the first part of a post-ID gap before writing data, and attempts partially to handle appearance of the index hole during writing a track. More work to do on that though.
2017-08-15 16:05:10 -04:00
Thomas Harte
9541a2a5f0
Corrections: seek_to
now takes the segment_start_time
into account, correcting a windowing error where segments overlay other segments. Also added some asserts while bug hunting, and corrected the steps taken when inserting a longer-than-a-track segment so that each is correctly windowed.
2017-08-15 15:54:09 -04:00
Thomas Harte
944222eba4
Added: write_id_data_joiner
can now be instructed not to write the first portion of gap. Which makes more sense as an option, to avoiding splicing errors.
2017-08-15 15:29:23 -04:00
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
0972f19fc5
Merge pull request #196 from TomHarte/Minor6845
...
Corrects 8272 multi-sector reads and deleted data reads, and ensures that a zero-height 6845 display shows nothing
2017-08-14 22:31:24 -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
55055c7847
Minor: ensured immediate line comparison works. But I think my problem might be trying to do this as straight line logic?
2017-08-14 19:08:20 -04:00
Thomas Harte
113da93796
Merge pull request #195 from TomHarte/8272Tidying
...
Brings the 1770 into usage of those parts factored out of it for the 8272
2017-08-14 16:34:15 -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
d7bed958b3
Merge pull request #194 from TomHarte/8272Write
...
Introduces initial implementations of the 8272's write data, write deleted data, read track and format track
2017-08-14 14:35:45 -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
334872d374
Clarified, slightly.
2017-08-14 12:47:11 -04:00
Thomas Harte
2e5ad19fe1
Minor tidying.
2017-08-14 12:42:48 -04:00
Thomas Harte
a10389a22c
Factored out the stuff of stuffing the bus.
2017-08-14 12:42:22 -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
0e083e9dc6
Factored composition of a run command out, as I think I need to worry about extensions, and can trim spaces.
2017-08-14 09:48:56 -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
ea64125124
Added an explicit nilling, to help with debugging.
2017-08-13 22:15:25 -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
750f2cb883
Flagged as not read-only, at least for now, to allow 8272 writing tests definitively to function.
2017-08-13 18:54:39 -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
1576b4500b
Added documentation.
2017-08-13 18:27:00 -04:00
Thomas Harte
e1e9a06712
Made an attempt at format a track.
2017-08-13 18:05:19 -04:00
Thomas Harte
6e36f8ffa4
Removed index-hole announcement.
2017-08-13 12:50:24 -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
6d2e969e7d
Merge pull request #193 from TomHarte/8272Style
...
Improves 8272 implementation style
2017-08-12 18:05:27 -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