summaryrefslogtreecommitdiff
path: root/ChangeLog.TXT
blob: 3bcc30a457046d726a43bec5bfe5dd9a26698986 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
2026-06-12:
I made minor changes to some of the code files (and corrected a typo in this
changelog). I also added comments to the start of all the patch files (as well
as some of the main code files) providing installation instructions. These do
not replace the installer script, which (once retooled) will set all needed
files in place and give more condensed patching instructions. At some point I
should try and implement a stream editor to help ease the pain of manually
doing all the #includes.

Mount2VarsFDC was split into two files, so that the two declarations can be more
easily replaced.

2026-06-10:
FDCWriteBlks was patched to check the write-protect flag before attempting to
perform a write operation. If set, the function throws an exception. I then
discovered a error in my bit test where I used a hex bit mask instead of a bit
position (which is what BT uses).

BlkDevInit was patched (BlkDevInitFDC.HC) to add support for the floppy devices,
as was Let2BlkDevType, which reassigned letters W-Z for floppy drives instead of
optical (Let2BlkDevTypeFDC.HC).

Mount2 was patched (Mount2LtrsFDC.HC) to reflect the above change to the drive
letters. The patch file was initially erroneously named Mount2Ltrs.HC.

2026-06-08:
In Mount2CaseBFDC.HC, default parameters were added for convenience. From
testing with the legacy driver, these worked well on my 3.5-inch high-density
drive. The manual configuration instructions were also re-worded.

2026-06-07:
DskFDC.HC received a change to its sector size logic so that it works properly
with the largest-size sectors (16 KiB), albeit of limited benefit.

Three new files, Mount2{Vars,CaseA,CaseB}FDC.HC, were added to patch the Adam mount
code to add floppy support. As the names of these files imply, they patch the
Mount2 function (in ::/Adam/BlkDev/Mount.HC).

2026-06-06:
The block device type list in KernelA.HH was brought out to its own header file
(KernelAFDC.HH) for ease of modification. The list of strings for the block
device types was also brought out in a similar manner (KDefineBDTs.HC).

BlkDevAdd has been patched to handle the new floppy block device; like the
above patches, this one is also in a separate file (BlkDevAddFDC.HC). This
file was later patched again to remove a forced assignment to 0 of the drive
offset (as BlkDevAdd will set it to 0), and once more to add RedSea boot sector
detection.

Instructions on implementing these and any future patch files are currently
only present in the Git log; proper instructions will be written later.

In DskFDC.HC, a new function was added to test for the presence of a disk by
checking for valid sector data. This avoids emulator-specific issues with the
Disk Change flag.

2026-06-04:
The controller version check is now only done on the first drive when it is
initialized.

The data rate values accepted by the controller are now in KFloppyA.HH, as a
courtesy to programmers. A new header file, KFloppyB2.HH, has been created to
temporarily hold the headers for the new driver functions.

The size of the DMA buffer has been reduced by half (to 9216 bytes), as part of
a transition to single-track, single-head reads and writes.

2026-06-01:
I have removed the DMA flag from the CBlkDev patch as I have decided to only
support DMA at this time.

I have also decided to do atomic reads and writes to the disk, instead of
whole-track operations. I also added a 0.5-second timeout on the motor command
when powering it on (I chose 0.5 to accomodate 5ΒΌ" floppy drives).

I then updated FDCInit to set the highest block number and act like the
existing ATA init code, where it returns TRUE if initialization was sucessful.

2026-05-31:
I have branched the driver code so as to not pollute the existing codebase with
the new BlkDev code. I also began work on the device functions, and a patch
file to add needed parameters to the CBlkDev class.

2026-05-29:
I modified the "read data" and "send command" functions to properly check the
MSR for the correct values before doing I/O operations. I also removed an
unnecessary seek from the disk dumper test program.

The Installer had a
missing semicolon at the CopyTree call, so I added one.

This will (hopefully) be the final edit to the original driver codebase. Thus,
it will be tagged and a ZIP file made available in the Downloads section of my
website.

2026-05-27 (#2):
I have restructured the source tree in preparation for future work:

* The kernel code (KFloppy*) has been moved into /Kernel.
* The disk dumper example has been moved into /Examples.

I have also written an installer script that will get all of the files in
place. It also has instructions on what #includes need to be added.

2026-05-27:
I, Harley Travis, as the copyright holder of all current source code written
as part of this TempleOS floppy disk controller project, have made the
decision to re-license all of my code under the BSD Zero Clause License in
place of the original Do What The Fuck You Want To Public License.

To be clear: THIS IS NOT BECAUSE OF THE VULGARITY OF THE ORIGINAL LICENSE! I
actually really enjoy the WTFPL! But I decided that it is a bit too informal
for my taste, and so, based on a review of the existing
public-domain-equivalent licenses, I have chosen 0BSD going forward.

I have noticed that some other TempleOS-related projects have used the
Unlicense, but the Open Source Initiative has noted that it is not very
well-written, hence why I am not using it for my project.

0BSD, like the WTFPL, is a public-domain-equivalent license, perfect for a
TempleOS-related project (as it maintains Terry A. Davis' vision of TempleOS
being public-domain, though that claim would likely be legally unsound).

2026-05-26:
I found a copy-paste error while testing my driver code on my main TOS machine
(a Dell OptiPlex 755 Mini Tower). "2025 Me" seemingly forgot to change the DMA
setup function in the multi-track write code. As a result, the DMA controller
was being set up for reading instead of writing, causing the FDC to time out.

I have also done some more line-breaking. Now, as far as I can tell, nearly
every line of code has been broken down to 80 characters or less, save for a
few long function calls. I have also done the same for ReadMe.TXT (I also did
some rewording and correction while I was at it).

2026-05-24:
I updated the copyright statements to match those on the WTFPL FAQ, completed
the flags for the ST2 and ST3 in KFloppyA.HH, updating the copyright notice
accordingly, and adjusted it (and this changelog) to fit in 80 columns.

2026-05-23:
I placed the driver into version control on a Git server I set up.

2025-04-18:
I had a brain fart and forgot to revert the hard-coded DMA buffer address, as
pointed out by TheTinkerer on the TOS Discord. I went ahead and uncommented the
stuff for splitting up the address, and fixed the base address I/O writes. If
you have installed the driver, just replace NewFloppy.HC and recompile the
kernel; you should be good after that.

Whoops!

2025-04-20 (hah! weed.):
Moved some stuff out of the system files to make things a bit less of a mess.
Also I added a copyright notice to the readme (you can still do what the fuck
you want to; see Copying.TXT).