Thomas Harte
|
e384c50580
|
Switches FileHolder to have a usage much closer to FILE *.
Thereby opens a route for file format implementations such as that appearing for CPC DSK that create an in-memory copy and perform a full rewrite.
|
2017-11-02 22:32:00 -04:00 |
|
Thomas Harte
|
ad9df4bb90
|
Commutes uint8_t * , uint16_t * , uint32_t * , size_t , off_t and long to functional-style casts.
|
2017-10-21 22:30:15 -04:00 |
|
Thomas Harte
|
e983854e71
|
Converts all uint8_t and uint16_t casts to the functional style.
|
2017-10-21 21:50:53 -04:00 |
|
Thomas Harte
|
5e3e91373a
|
Switches all unsigned int and double casts to functional style.
|
2017-10-21 19:49:04 -04:00 |
|
Thomas Harte
|
edb9fd301c
|
Begins this project's conversion to functional-style casts.
|
2017-10-03 22:04:15 -04:00 |
|
Thomas Harte
|
a3e2d142e3
|
Extends UEF support to include chunk 0005, the target platform description, which is exposed via TargetPlatform::TypeDistinguisher .
|
2017-08-27 15:43:09 -04:00 |
|
Thomas Harte
|
56dd677e9c
|
Creates a virtual interface that can be adopted by classes that are able to provide some insight as to target machine.
|
2017-08-27 15:19:03 -04:00 |
|
Thomas Harte
|
a3b16b6dfa
|
Further beefs up the list of chunks that this TZX parser can either comprehend or skip.
|
2017-08-03 12:13:41 -04:00 |
|
Thomas Harte
|
2d2cefb0b0
|
Adjusted factoring to introduce support for block 10.
|
2017-08-02 14:36:47 -04:00 |
|
Thomas Harte
|
2fd071e45d
|
Made an honest attempt at outputting turbo speed data block data. The CPC now at least starts to load.
|
2017-08-02 14:24:34 -04:00 |
|
Thomas Harte
|
d7a5c3f49a
|
Added support for the ID 20 block and fixed a minor error in my skip-the-contents version of block 11: length is three bytes long, not two. This gives me enough structure properly to get to the end of my current test CDT, albeit without making any of the noises.
|
2017-08-02 14:12:34 -04:00 |
|
Thomas Harte
|
6633537fb8
|
Discovering that there is such a thing as P81 — a ZX81 file without the name omitted — added support for it. Extended FileHolder while I was here to retain the file name and be able to supply its extension, as my quick-fix test-the-last-character approach to o/p/80/81 discrimination stops working with p81 thrown into the mix and this feels like the correct factoring.
|
2017-07-22 16:02:25 -04:00 |
|
Thomas Harte
|
64865b3f41
|
Signedness fixes.
|
2017-07-21 21:23:34 -04:00 |
|
Thomas Harte
|
2d8e7e9f8b
|
Removed reference to a parameter long-since dead.
|
2017-07-21 20:46:25 -04:00 |
|
Thomas Harte
|
d9a2c32aca
|
Made an attempt to obey the proper TZX rules on gaps, and to hit the common-clock-rate Time optimisation.
|
2017-07-21 18:21:12 -04:00 |
|
Thomas Harte
|
70af075012
|
Determined what appears to be an appropriate workaround for the ZX81 TZX that I've managed to obtain.
|
2017-07-19 21:28:33 -04:00 |
|
Thomas Harte
|
35296017b5
|
Clarified meaning of is_high_ flag and ensured it is honoured properly.
|
2017-07-17 21:36:05 -04:00 |
|
Thomas Harte
|
0350925c1e
|
Started sketching out greater support. Mostly TODOs right now, but pulse sequence and pure tone are implemented. I probably also need at least the CSW block to hit everything you might see in a ZX80 or ZX81 tape. Then I can worry about the rest when I have a way to test them.
|
2017-07-17 19:38:15 -04:00 |
|
Thomas Harte
|
94e3dd0d4f
|
Merge branch 'master' into TZX
|
2017-07-17 19:07:05 -04:00 |
|
Thomas Harte
|
eafdd7dbd7
|
Corrected decompressed size expectations: it may be up to five times the size of the number of waves, as waves are up to five bytes in length.
|
2017-07-17 19:04:25 -04:00 |
|
Thomas Harte
|
127b584e79
|
Ensured that resetting a TZX resets the is-at-end flag.
|
2017-07-17 07:52:28 -04:00 |
|
Thomas Harte
|
9108495586
|
Added a safety seek.
|
2017-07-17 07:35:53 -04:00 |
|
Thomas Harte
|
fa617eac6b
|
Spotted that pilot and data segments have different encodings — of course! — and attempted to adapt.
|
2017-07-17 07:34:10 -04:00 |
|
Thomas Harte
|
b63971caf7
|
Took a first, incorrect, shot at TZX chunk 0x19, the generalised data block.
|
2017-07-16 22:40:38 -04:00 |
|
Thomas Harte
|
7327da6350
|
Switched the nascent TZX to use the new PulseQueuedTape .
|
2017-07-16 22:06:56 -04:00 |
|
Thomas Harte
|
8f72fc4a44
|
Factored out from the UEF implementation the concept of being a tape that has a queue of pending pulses and manages that queue.
|
2017-07-16 22:04:40 -04:00 |
|
Thomas Harte
|
238348c885
|
Performed the initial wiring to announce that this application supports TZX files and to route them to the ZX80/81 static analyser. The TZX class itself does not yet do much beyond basic validation. I think it'll be easiest if it follows in UEF's footsteps in queuing up pulses ahead of time, so some factoring out is now required.
|
2017-07-16 21:33:11 -04:00 |
|
Thomas Harte
|
b743566339
|
Corrected under-request of data: was erroneously supplying the size of input as the expected size of output.
|
2017-07-15 15:19:03 -04:00 |
|
Thomas Harte
|
ae1a130843
|
Fixed: length of 0 is a special case.
|
2017-07-13 20:57:27 -04:00 |
|
Thomas Harte
|
f09fe30af5
|
Attempted a full implementation of CSW. All in memory for now.
|
2017-07-12 21:23:59 -04:00 |
|
Thomas Harte
|
33eadb5549
|
Started taking further steps towards CSW support; reading the ZLib documentation is next.
|
2017-07-11 22:41:10 -04:00 |
|
Thomas Harte
|
368bff1a82
|
Added a shell class that will one day be able to parse CSW files, plus the logic and metadata to instantiate it when a CSW presents itself.
|
2017-07-10 21:43:58 -04:00 |
|
Thomas Harte
|
bcb7c27cc4
|
Given that I'm not racing this any more, turned the intended 1 second back into 1 second.
|
2017-07-08 19:21:33 -04:00 |
|
Thomas Harte
|
a53011f778
|
Extended intro and outro length because right now I'm racing this myself. Can return to normal once tape motor control is implemented.
|
2017-07-06 22:31:12 -04:00 |
|
Thomas Harte
|
22de481557
|
Made an attempt to get .p/.80 checked and as far as the emulated machine.
|
2017-06-12 19:41:59 -04:00 |
|
Thomas Harte
|
77aa3c187e
|
Rebranded ZX80O as ZX80O81P, with an eye to making it accept ZX81 .p files. Adjusted the initial selection part of the static analyser appropriately.
|
2017-06-11 21:38:32 -04:00 |
|
Thomas Harte
|
ee0283c985
|
Modified to use an in-memory buffer for file contents.
|
2017-06-11 21:35:09 -04:00 |
|
Thomas Harte
|
256ba4028b
|
Rejigged to eliminate semi-duplication of the is-a-file test.
|
2017-06-08 21:52:13 -04:00 |
|
Thomas Harte
|
c6e48dfd56
|
Given that a final gap is semantically part of describing tape contents, ensured one formally appears before declaring that the tape has ended.
|
2017-06-08 21:31:54 -04:00 |
|
Thomas Harte
|
ee4c8b5ad2
|
Ensured final byte plays out.
|
2017-06-08 19:51:49 -04:00 |
|
Thomas Harte
|
8aab9acc10
|
Eliminated use of the zero level; now definitively returns a low/high input.
|
2017-06-07 17:39:29 -04:00 |
|
Thomas Harte
|
cb534d8b85
|
Corrected comment.
|
2017-06-07 10:05:16 -04:00 |
|
Thomas Harte
|
4677cebf40
|
Rejigged to correct: spaces go after bits, not after bytes.
|
2017-06-06 18:29:15 -04:00 |
|
Thomas Harte
|
7399f3d798
|
Caveman debugging in place, it looks like this file is returning nonsense.
|
2017-06-06 18:18:55 -04:00 |
|
Thomas Harte
|
faeecf7665
|
Made sure that there's nothing but silence at the end of the tape, even if the .O file is too long.
|
2017-06-06 18:16:47 -04:00 |
|
Thomas Harte
|
8c1769f157
|
Made a quick attempt at serialising from ZX80 .O to waves.
|
2017-06-04 16:59:26 -04:00 |
|
Thomas Harte
|
655809517c
|
Ensured that there is a subclass of file that is entrusted to load .O/.80 files, and that the code routes such files to it, noting that it should consider whether a ZX80 is required.
|
2017-06-04 16:37:03 -04:00 |
|
Thomas Harte
|
8499783b14
|
Dragged multibyte primitives and signature checks up to the base class. Implemented support for Oric MFM-style .DSK, at the file format level.
|
2016-11-21 20:47:16 +08:00 |
|
Thomas Harte
|
31c2548804
|
Created a base class for the boilerplate fopen stuff, switched as many classes as possible to its use, switched to postfix underscores and non-camelCase names.
|
2016-11-21 20:14:09 +08:00 |
|
Thomas Harte
|
97811fe590
|
Made minor fix to ensure that a header that appears to extend beyond the end of an Oric .TAP doesn't create an ostensibly endless tape.
|
2016-11-15 12:02:03 +08:00 |
|
Thomas Harte
|
c257e7f58d
|
Implemented better sync-to-zero and discovered a header counting bug plus, probably, a misleading representation of gaps in the Oric TAP decoder.
|
2016-11-07 20:17:06 -05:00 |
|
Thomas Harte
|
d3634488e6
|
Made an attempt better to deal with multiple-file TAPs; also started using a zero level for the header/data gap.
|
2016-10-24 21:59:06 -04:00 |
|
Thomas Harte
|
cc0b70828b
|
Removed attempt at multiple-file logic, at least for the time being. Starting to wonder whether I actually need anything beyond a literal streaming of bytes?
|
2016-10-16 22:15:24 -04:00 |
|
Thomas Harte
|
fae1bb0db9
|
First successful game loaded! It turns out exactly one '$' is correct. Probably.
|
2016-10-15 21:49:41 -04:00 |
|
Thomas Harte
|
952a24f769
|
A quick hard-wiring of the OricTAP code to get the first file in a .tap correct, damn the rest, and I'm getting some on-screen feedback. Hooray!
|
2016-10-15 21:39:53 -04:00 |
|
Thomas Harte
|
4f78d693e9
|
Reintroduced gap as a string of 1s, made an attempt to look up bit ordering. Still unclear on high/low versus low/high.
|
2016-10-11 08:07:51 -04:00 |
|
Thomas Harte
|
70f004efbb
|
This may be feeding bits in the wrong direction or calculting the wrong parity or doing something else amiss but should now be correct as to bytes.
|
2016-10-11 07:57:10 -04:00 |
|
Thomas Harte
|
df01c78039
|
It's a bit of a mess but this is probably close to appropriate for Oric TAP files.
|
2016-10-11 07:39:48 -04:00 |
|
Thomas Harte
|
4010f36238
|
Ensured tape-formatted PRGs reach a conclusion.
|
2016-09-29 19:12:26 -04:00 |
|
Thomas Harte
|
dbb758aaf1
|
Workaround for a weird bug that suddenly appears to manifest: gzgetc is returning the file name, not bytes from the file. Seems to be related to improper initialisation of the next field within the gzFile header. I can't immediately see where ZLib intends to do that so it's a bit mysterious. But the larger-than-8 readers could probably save time by reading in blocks anyway.
|
2016-09-17 22:01:25 -04:00 |
|
Thomas Harte
|
eeec516fa6
|
Implemented seeking on tapes, mucked about a bit more with the Commodore analyser, at least temporarily removed cropping from the Vic emulator.
|
2016-09-11 17:09:00 -04:00 |
|
Thomas Harte
|
1de6097f06
|
Shuffled C stuff out on top.
|
2016-09-08 21:08:03 -04:00 |
|
Thomas Harte
|
24251a2768
|
Negligible indentation fix.
|
2016-09-08 07:49:43 -04:00 |
|
Thomas Harte
|
01e5dae512
|
Threw in 300-baud support. Why not?
|
2016-09-08 07:48:20 -04:00 |
|
Thomas Harte
|
1e7b5330f5
|
More or less rewrote, to use a filled-per-chunk buffer of upcoming pulses rather than working them out as requests come. Which is more straightforward — all the code for a particular chunk goes in exactly one place — and much easier to extend. So threw in a provisional 0104 implementation.
|
2016-09-08 07:41:26 -04:00 |
|
Thomas Harte
|
d7d5f24aab
|
Attempted, at least, to insert a dummy byte as per the specification.
|
2016-09-06 21:51:04 -04:00 |
|
Thomas Harte
|
11850b872d
|
Sought to emulate 0111 as a longer 0110 to test a particular HQ UEF. Some progress. Not great.
|
2016-09-05 18:28:43 -04:00 |
|
Thomas Harte
|
21e5f407d8
|
I need to get a bit more definitive on naming but this gets all the way to setting a configuration upon an Electron.
|
2016-08-31 22:03:42 -04:00 |
|
Thomas Harte
|
963a479908
|
Made a quick first attempt at getting a file name from Acorn tape, failing terribly but at least formalising tapes being able to signal their end.
|
2016-08-29 21:53:06 -04:00 |
|
Thomas Harte
|
82c8459055
|
Minor tidying of namespace usage declarations.
|
2016-08-27 17:18:12 -04:00 |
|
Thomas Harte
|
c0402d0c2b
|
Gave tapes their own namespace.
|
2016-08-27 17:09:45 -04:00 |
|
Thomas Harte
|
8c333059a8
|
Turning this into a slog: gave UEF a more appropriate name, got as far as now having to decide what to do about ROMs as to structure. I guess they're machine specific, so specific classes?
|
2016-08-27 16:40:21 -04:00 |
|
Thomas Harte
|
73ce67bee8
|
Added some documentation of the intention here.
|
2016-08-19 11:04:59 -04:00 |
|
Thomas Harte
|
4edd1214f1
|
This has now successfully loaded its first PRG-as-a-tape.
|
2016-08-19 10:58:42 -04:00 |
|
Thomas Harte
|
2935848f35
|
Adopted header/header/data/data pattern. But still not complete joy.
|
2016-08-17 08:03:34 -04:00 |
|
Thomas Harte
|
e5523dbbed
|
This gets through loading the first(/only?) copy. I tried repeating it with a bit-flipped header, now I'm trying repeating the header with a different file type. More documentation searching to do, I guess.
|
2016-08-16 22:17:08 -04:00 |
|
Thomas Harte
|
1bca9aa2bb
|
Fixed parity: now calculated from the actual byte and works the other way around. The Vic now believes it is loading the actual program. So I guess bytes, headers and the lead-in is working.
|
2016-08-16 21:41:09 -04:00 |
|
Thomas Harte
|
dfe9fb83ef
|
This proves that bytes are being deposited properly. For the first 36 anyway, and with no announcement.
|
2016-08-16 21:09:50 -04:00 |
|
Thomas Harte
|
12f8aff65b
|
Lengths I'd taken seem to have been for dipoles, not single poles. So I just doubled the clock rate. Also I was producing each dipole as high then low, when they should probably be low then high. The Vic now at least recognises that something is happening on the tape.
|
2016-08-16 19:46:53 -04:00 |
|
Thomas Harte
|
3a23d5d8cf
|
Adjusted the check digit.
|
2016-08-15 22:44:36 -04:00 |
|
Thomas Harte
|
dbe47f3f45
|
I've obviously misunderstood something as, as far as I'm concerned, this should at least get me a 'LOADING'.
|
2016-08-15 22:40:05 -04:00 |
|
Thomas Harte
|
7994148f55
|
I'm starting to make a little headway, I think: this performs lead-ins and countdowns, though with no actual data or anything as helpful as that.
|
2016-08-15 22:10:53 -04:00 |
|
Thomas Harte
|
7e2b4554ea
|
This likely forms the Commodore dipoles correctly. It just stays stuck in leader tone forever is all.
|
2016-08-15 20:08:50 -04:00 |
|
Thomas Harte
|
38aec44d85
|
Made sufficient changes for the Vic itself to believe it can recast a PRG as a tape and insert it that way. So now the ball is in the court of: how the heck are Commodore tapes encoded?
|
2016-08-15 19:44:41 -04:00 |
|
Thomas Harte
|
3aa40212f3
|
Fixed minor documentation error; admitted that this class didn't invent the idea of a pulse.
|
2016-08-15 19:37:21 -04:00 |
|
Thomas Harte
|
ee2a7c9415
|
Added slightly to exposition, to match other formats.
|
2016-08-01 06:54:57 -04:00 |
|
Thomas Harte
|
2799a87218
|
Reduced possibility of overflow on LCM, improved commenting widely, removed one stale piece of G64 bootstrapping caveman stuff.
|
2016-08-01 06:04:55 -04:00 |
|
Thomas Harte
|
ee19417ded
|
Made an attempt quickly to implement parsing of the Commodore .TAP file format.
|
2016-06-25 16:09:32 -04:00 |
|
Thomas Harte
|
21ca1ef86b
|
Started attempting to clarify instance variable usage.
|
2016-03-12 23:19:10 -05:00 |
|
Thomas Harte
|
2b8fb5b615
|
Made an attempt to fix my 0114 implementation.
|
2016-02-20 23:13:58 -05:00 |
|
Thomas Harte
|
f7fc7cb932
|
Implemented some portion of 0114; ensured I'm safely skipping chunks in all cases.
|
2016-02-20 22:18:00 -05:00 |
|
Thomas Harte
|
ec3cccbb0d
|
Working towards HQ UEF support: fixed bug whereby writing to tape output would reset input pulse stepper; added support for chunk 0116 and approximate support for 0113.
|
2016-02-20 22:03:14 -05:00 |
|
Thomas Harte
|
2e3ba6bbb2
|
Removed some logging.
|
2016-02-07 14:42:40 -05:00 |
|
Thomas Harte
|
adc6838ba0
|
Continued slow migration of shader ownership to CRT. Attempted to start debugging the tape interface.
|
2016-01-27 21:35:57 -05:00 |
|
Thomas Harte
|
e65cd4cf06
|
Some data is marginally reaching the CPU from the tape.
|
2016-01-19 22:05:34 -05:00 |
|
Thomas Harte
|
832797182f
|
Update TapeUEF.cpp
Corrected chunk for which _tone_length is used, definition of a carrier tone chunk.
|
2016-01-19 18:59:10 -05:00 |
|
Thomas Harte
|
127684c590
|
With silence and high tone implemented, this may well hit a large proportion of existing files.
|
2016-01-18 19:45:14 -06:00 |
|
Thomas Harte
|
7d6214e078
|
This likely gets chunks 0100 and 0102 correct.
|
2016-01-18 19:37:36 -06:00 |
|
Thomas Harte
|
5a39e42413
|
Wired up enough such that some basic attempt at parsing a UEF occurs.`
|
2016-01-18 17:06:09 -06:00 |
|
Thomas Harte
|
2779f0e569
|
Statred working on support for at least the most fundamental file format.
|
2016-01-18 15:46:41 -06:00 |
|