Commit Graph

  • 7680cbf9c3 Testing this Markdown implementation for image sizing support. Thomas Harte 2017-01-23 20:26:57 -05:00
  • 4920fe6701 Added a grab of the Repton title screen. Thomas Harte 2017-01-23 20:23:49 -05:00
  • 55fe0176bd Added a space. Probably need to hold for a better example though. Thomas Harte 2017-01-12 22:12:37 -05:00
  • 99fcbb55d1 Attempted to improve layout. Thomas Harte 2017-01-12 22:11:25 -05:00
  • 6f78ecd12b Added a small pictorial example. Hardly the best, but a step in the right direction. Thomas Harte 2017-01-12 22:06:45 -05:00
  • ced644b103 It seems likely that an AY divides its clock by 8, not 16. I had conflated wave frequency and counter clock. Thomas Harte 2017-01-11 22:03:01 -05:00
  • be1cb2a551 Fixed NTSC phase. Thomas Harte 2017-01-11 21:31:24 -05:00
  • b4159295f6 Switched to using quads for intermediate draws. The specific concern is the flexibility offered in the GL spec as to line drawing algorithms. And even if a driver implements exactly to spec then it should omit the final pixel. Thomas Harte 2017-01-11 21:18:41 -05:00
  • d0a93409e6 Made an attempt to simplify in-shader phase calculation, now that output position is a direct multiple of phase. Thomas Harte 2017-01-11 08:18:00 -05:00
  • 4c3669f210 Reduced precision of input phase, but I'm not necessarily persuaded by it as a move. However it's clear that something is off in that whole area. But if phase is locked by output position, do I need to retain this level of complexity? Also ensured that intermediate buffers prior to the final are sampled using the nearest sampling mode, also to reduce precision errors. Thomas Harte 2017-01-10 22:08:07 -05:00
  • eeb646868b Switched off filtering, at least temporarily, to try to ensure that sampling is all where it should be. Thomas Harte 2017-01-08 19:53:08 -05:00
  • 3d789732a2 Switched back to full buffer clearing. Until I can figure out the source of noise. Thomas Harte 2017-01-08 19:50:31 -05:00
  • d2a7d39749 Ensured the output lock isn't held while talking to the delegate. Thomas Harte 2017-01-08 19:49:21 -05:00
  • 9521718120 Colour phase is multiplied by 255, not 256. Thomas Harte 2017-01-08 17:21:26 -05:00
  • 28909e33ca Eliminated phaseCyclesPerTick as implied. Thomas Harte 2017-01-08 16:48:02 -05:00
  • 79632b1d34 Instituted de-escalating phase-related extensions, definitively to kill rounding error edges. Thomas Harte 2017-01-08 16:24:22 -05:00
  • cf6d03e35c Merge branch 'master' into PhaseAlignedSampling Thomas Harte 2017-01-08 14:49:40 -05:00
  • 4a4b31a15c Merge pull request #94 from TomHarte/ElectronDisks Thomas Harte 2017-01-08 14:48:58 -05:00
  • f3d9aec8fc Fixed Electron's support for automatically booting floppy disks. Thomas Harte 2017-01-08 14:46:19 -05:00
  • 7ad64ff16b Made further efforts to support throughput via memory barrier. Thomas Harte 2017-01-08 14:47:16 -05:00
  • 6153ada33b Fixed Electron's support for automatically booting floppy disks. Thomas Harte 2017-01-08 14:46:19 -05:00
  • be48c950b4 Started taking steps towards using a texture barrier where possible to reduce all of my framebuffer binds. Some output appears, but it's not correct. Thomas Harte 2017-01-08 11:13:20 -05:00
  • 0487b8c178 Definitively eliminated the additional y filtering step; if I'm going to work to ensure always four samples per colour cycle, I can put the channel separation coefficients directly into their shaders, cutting down on samples. Thomas Harte 2017-01-07 16:02:33 -05:00
  • 5740015f56 Temporarily disabled composite processing to show the pure stream. Fixed both automatic calculations of phase — per line and, at input, per pixel. Thomas Harte 2017-01-07 12:38:00 -05:00
  • c84004bfa3 Fixed: colour_cycle_numerator_ doesn't need to be multiplied by the time multiplier because it'll get that for free from the calculation of next_run_length. Thomas Harte 2017-01-06 21:36:19 -05:00
  • c746a3711f Temporarily disabled my attempt to be clever with bilinear filtering when applying a lowpass filter. Will need to investigate. Thomas Harte 2017-01-04 08:06:18 -05:00
  • aa7774a9a6 Experimental: up the chroma accuracy, just let the luma go straight through. Subject to figuring out how I'm still losing so much precision. Thomas Harte 2017-01-03 22:41:34 -05:00
  • a836120945 Restored proper colour separation, but somewhere a massive hit in horizontal resolution is happening — much greater than one would expect from the sample size picked. So investigation to come. Thomas Harte 2017-01-03 22:32:07 -05:00
  • 7d60df9075 Added the option for both intermediate and output shaders to use only a portion of the input/output texture; made an attempt to pick an appropriate proportion in order to align signal sampling with the colour subcarrier. Thomas Harte 2017-01-03 22:16:52 -05:00
  • f2b8b26bc4 Started throwing some comments into my shaders. Thomas Harte 2017-01-03 21:16:38 -05:00
  • 9d60172571 Merge pull request #93 from TomHarte/ReadWriteTrack 2017-01-01 Thomas Harte 2017-01-01 21:01:56 -05:00
  • eca3995481 Added a CRC check for read address, ensured CRC, lost data and record not found are initially reset. Thomas Harte 2017-01-01 21:00:25 -05:00
  • 044c920a5b Made it more explicit that there are no unhandled cases. Thomas Harte 2017-01-01 20:56:52 -05:00
  • 0df9ce5a76 Made an attempt at read address. So superficially that leaves only the force interrupts. Thomas Harte 2017-01-01 20:55:09 -05:00
  • f94f34f053 Made an attempt at read track. Which means process_input_bit can't just swallow syncs any more; it now reports them as tokens of type ::Sync. Thomas Harte 2017-01-01 20:39:19 -05:00
  • 4ad2d2bedd Merge branch 'master' into ReadWriteTrack Thomas Harte 2017-01-01 20:04:22 -05:00
  • e28f72d919 Merge pull request #90 from TomHarte/TravisCI Thomas Harte 2017-01-01 20:03:26 -05:00
  • c994fa39f6 Ensured spin-up doesn't occur if there's no motor line. Thomas Harte 2016-12-31 16:18:30 -05:00
  • 1ea4f0d79d Made an attempt to implement 'write track' and ensure that 'write sector' can't end without announcing that it has ended writing. Thomas Harte 2016-12-31 16:01:44 -05:00
  • 0689df1349 Merge pull request #92 from TomHarte/MFMCleanup 2016-12-31 Thomas Harte 2016-12-31 15:32:11 -05:00
  • b3c33d993a Made an attempt to explain the requirements placed upon Disk subclasses that wish to support writing. Thomas Harte 2016-12-31 15:30:48 -05:00
  • 8eb21c6702 The "MFM...Byte"s aren't MFM-specific, they're relevant to both FM and MFM encoding. So renamed them. Also slimmed syntax within MFM.cpp mostly where emigration from the Acorn disk analyser had left a residue of lengthy namespace specification. Thomas Harte 2016-12-31 15:25:11 -05:00
  • 4c62487e6e Merge pull request #91 from TomHarte/TableCRC Thomas Harte 2016-12-31 14:16:17 -05:00
  • a147d56ce6 Switched to a table-based implementation of CRC generation, adding construction cost to cheapen running cost. Thomas Harte 2016-12-31 14:15:20 -05:00
  • 7b696b0962 Switched scheme to shared. Thomas Harte 2016-12-31 13:11:07 -05:00
  • 57bb771fb7 It looks like spaces are automatically escaped (?) Thomas Harte 2016-12-31 13:05:55 -05:00
  • 5201a59c44 Attempted to introduce Travis CI. Thomas Harte 2016-12-31 13:03:32 -05:00
  • df6e98fa52 Merge pull request #89 from TomHarte/OricDiskWrites Thomas Harte 2016-12-31 12:53:43 -05:00
  • 52b850a3f5 Quick extra: make sure parsed tracks don't overflow the 6400 byte space available in an MFM disk. Which might be better expressed as 6250? Thomas Harte 2016-12-31 12:51:52 -05:00
  • cfbab1448c Switched to a track parsing that disallows synchronisation values within sector contents. Thomas Harte 2016-12-31 12:23:08 -05:00
  • 12549ff412 Might as well get the file offset before entering the critical section; also moved the lock guard down more explicitly to group with the second set of actions. Thomas Harte 2016-12-31 11:48:46 -05:00
  • 6f0b5427e4 Made an attempt to avoid repetition of sync bytes. Thomas Harte 2016-12-31 00:20:00 -05:00
  • 0123b37213 Made an attempt to include sync values in the stream and properly to align. Thomas Harte 2016-12-31 00:11:31 -05:00
  • ea4d85e1cd The virtual disk constructed is the same across all tracks. So why not just request zero? Thomas Harte 2016-12-31 00:10:35 -05:00
  • f217d508b8 Completed first attempt at write support for Oric disk images. Thomas Harte 2016-12-30 23:12:46 -05:00
  • 1f625fad66 Decided that if this is an [M]FM parsing function then it should be something more intelligent than a mere PLL record. Which I guess conveniently implies Oric DSK-esque behaviour. But properly defined, rather than very vaguely. Thomas Harte 2016-12-30 23:10:52 -05:00
  • 632b3c63b1 Added the infrastructure necessary for Oric disks to appear writeable to the machine and to receive changed tracks. Thomas Harte 2016-12-30 22:51:48 -05:00
  • d581294479 Added get_track to get the PLL output for a complete track. Thomas Harte 2016-12-30 19:59:23 -05:00
  • 0f399b0a0c Made type conversion explicit. Thomas Harte 2016-12-30 19:59:01 -05:00
  • c6fcc40ac5 Merge pull request #88 from TomHarte/WDWrites Thomas Harte 2016-12-30 18:11:00 -05:00
  • 3b29e6a473 Ensured SSD and ADFs are grown if required. Thomas Harte 2016-12-30 18:08:12 -05:00
  • 07dacff42d Added writing for Acorn ADF disks, plus appropriate TODOs in both similar bits of boilerplate. Thomas Harte 2016-12-30 18:03:30 -05:00
  • c85450648f Fix: make sure copies have proper event lengths. Also made it much clearer what's going on with the initial copy to the heap. Thomas Harte 2016-12-30 17:55:46 -05:00
  • c740d9655a Fixed: index_count_ may have been left high by a previous call; reset it just in case. Thomas Harte 2016-12-30 17:55:06 -05:00
  • d09e7ac1e8 Made an attempt at reacting appropriately if the very first thing that looks like a sector doesn't pan out. Thomas Harte 2016-12-30 17:44:35 -05:00
  • 5d63556870 Periods need a custom copy constructor too, if they're going to avoid sharing an event_source. Thomas Harte 2016-12-30 17:39:52 -05:00
  • e5cc77f22d Added an extra sanity check. Thomas Harte 2016-12-30 17:29:51 -05:00
  • 81a3cbac45 Ensured a copy is passed for writing back rather than the original. Thomas Harte 2016-12-30 17:26:44 -05:00
  • 63ff5165a4 After a quick bit of reading, discovered the virtual copy constructor pattern really is only a convention in C++, and conformed to it. Which hopefully gives copyable tracks. Thomas Harte 2016-12-30 17:25:39 -05:00
  • 71dbd78cf2 If asynchronous background processing is to occur on tracks then, given that they inherently have state, they'll need to be copyable, and ideally 'cheaply' (though it's not too great a priority). So started implementing appropriate copy constructors. Also introduced an extra level of indirection to PCMSegmentEventSource so that it can copy itself without copying the underlying PCMSegment, which is 95% of the heft of a track in all currently-implemented cases. Thomas Harte 2016-12-30 14:23:26 -05:00
  • f88f3c65e9 Removed duplicated newline. Thomas Harte 2016-12-30 14:21:36 -05:00
  • 82bb78fb2d Ensured that get_sector copes even if any invalid sectors are encountered. Thomas Harte 2016-12-30 14:21:14 -05:00
  • 6fc692cd34 Attempted to switch to an asynchronous means for continuous file updates. Testing with SSD, as usual. Thomas Harte 2016-12-29 22:15:58 -05:00
  • bbd94749f4 ... and I guess an instant maximal simplification is also easy if length ends up being 0 Thomas Harte 2016-12-29 11:02:21 -05:00
  • 54900ca3fb Addition and subtraction can end immediately without performing any extra work if the operand is 0 Thomas Harte 2016-12-29 11:00:47 -05:00
  • a8bc9d830e Removed leftover very temporary debugging aid. Thomas Harte 2016-12-28 23:03:05 -05:00
  • b9fad184d7 Added just enough for a complete manual test of writing to a .ADF with the 1770 then getting the correct result parsing it back on the host side in order potentially to update a file. Thomas Harte 2016-12-28 23:00:47 -05:00
  • af1b396c9e Found an ugly issue with Storage::Time as implemented (i) to be unsigned; and (ii) automatically to simplify. Will need to fix. Here's a quick workaround for this one segment of code. Thomas Harte 2016-12-28 22:57:11 -05:00
  • 9cb902cc4f Experimentally marked ADF as writable too, immediately discovering a mistake in the analysing MFM decoder. Thomas Harte 2016-12-28 22:34:22 -05:00
  • e4000bd060 Added some even more verbose logging; slightly simplified write loop logic, and decided it's definitely write_byte that's responsible for CRC generator feeding. Thomas Harte 2016-12-28 21:24:19 -05:00
  • ce814c9e99 These can be const. Thomas Harte 2016-12-28 21:23:22 -05:00
  • bfe6c0a0c1 Ensured that FileHolder gets a writeable file reference if one is possible, and records whether the file in hand is read-only. So now the SSD class can answer honestly. Thomas Harte 2016-12-28 20:09:14 -05:00
  • 4adcb46665 Fixed FM-mode CRC generation. Thomas Harte 2016-12-28 19:51:27 -05:00
  • 46a93d2e12 Fixed errors to ensure that FM disks, at least, follow the same CRC generation rules when being built from sectors and when being parsed. Thomas Harte 2016-12-28 19:48:46 -05:00
  • 1277a67f9a Introduced data_mode_ to replace is_reading_data_, representing that there are now three possible modes. When writing, any input from the read head won't affect the CRC generator. Thomas Harte 2016-12-28 19:26:21 -05:00
  • 720b1e5802 Attempted to ensure proper CRC generation for FM-format input. Thomas Harte 2016-12-28 18:56:53 -05:00
  • 8cd1575891 Similar fix to that over in Oric land: ensure a known, effective initial value for the Plus 3's control register. Thomas Harte 2016-12-28 18:52:36 -05:00
  • 3a9ad3fb08 Fixed Oric .DSK handling, per my latest understanding. Which creates a desire to write shorts directly to the disk surface, so exposed that in the encoder. Thomas Harte 2016-12-28 18:50:28 -05:00
  • 90151e2094 Fixed to ensure a known initial control register value, which has taken effect. Thomas Harte 2016-12-28 18:49:32 -05:00
  • 7a627b782d Reintroduced writing of MFM sync marks when writing a sector. Thomas Harte 2016-12-28 18:48:50 -05:00
  • a568172758 Made steps towards proper CRC generation. Am currently comparing against Oric disk images, as — amongst other things — they include precomputed CRCs. Thomas Harte 2016-12-28 18:29:37 -05:00
  • 99993a1b24 Since it's about to become important that objective results match, added a couple of objective-result tests for the CRC generator. Thomas Harte 2016-12-27 19:03:46 -05:00
  • 9c0f622a2e Started working CRC checking into the 1770. Discovered immediately that my generated CRC does not match that built into the Oric disk images. So mine is pretty-much certainly wrong. An opportunity for learning! Thomas Harte 2016-12-26 16:46:26 -05:00
  • 0490a47058 Worked on the all-around framework for decoding sectors back from tracks when closing down a file. Hit the wall that the parser is more observant of CRCs than the WD. No, really. So I guess I have to stop avoiding that whole issue. Thomas Harte 2016-12-26 14:24:33 -05:00
  • 83c433c142 Deviated from the data sheet, which seems likely to be correct. Hence removed a whole load of the temporary logging. Thomas Harte 2016-12-26 12:48:49 -05:00
  • 742c5df367 With lots of logging arising temporarily, fixed bug whereby conversion to a patched track would lead to holding a track with a distinct measure of time, leading to improperly-placed patches. Thomas Harte 2016-12-25 22:00:39 -05:00
  • b538ee5bd8 Fixed discovery of correct active period and setting of track time, when seeking. Thomas Harte 2016-12-25 21:32:50 -05:00
  • a6d038cad9 Eliminated special case that doesn't seek properly and isn't needed. Added TODO. Thomas Harte 2016-12-25 21:32:14 -05:00
  • 4fca30b81f Made the Plus 3 less chatty, documented invalidate_track. Thomas Harte 2016-12-25 21:06:58 -05:00
  • 26710c988d Modified SSD to ensure a fully-formatted surface is represented even if no track data is in the source file. This corrects the controller's sense of write success. Thomas Harte 2016-12-25 20:40:06 -05:00