From: Glen Bredon To: ALL Dated: 12/31/99 Y2K fixes for ProDOS, GSOS and Basic.System: These are real Y2K bugs of the "2 digit variety". These files were made in the 1990's so even as late as that programmers were inducing Y2K bugs of this type. These bugs account for some reported bugs in ProSel which were not, in fact, bugs. These fixes will take care of them (but of course there are a lot of other programs out there and it may affect some in undesirable ways). All these bugs essentially converted 20xx dates to 19xx dates. File P8 in the System directory or ProDOS on 8 bit systems: Find $c9 64 90 04 Change the $90 to $80 (in version 2.0.3 it is at relative byte $FB3) --------- File Pro.FST in the System/FSTS directory: Find $c9 64 00 90 03 Change the $90 to $80 (in my version it is at relative byte $B41) ---------- File Basic.System wherever it may be hiding: Find $c9 64 90 12 Change the $90 to $80 (in version 1.5 it is at relative byte $FAF) Here is a fuller explanation of the three ProDOS/GS.OS Y2K bugs I supplied a fixer for: All three bugs are code of the type (in english): Compare to number 100 if larger then subtract 100 and loop back if less go on (i.e., convert all years to the 0-99 range). The one in Basic.System just says to display when over 100. The patches just ignore this code entirely. Well, the basic design of ProDOS gives room for years of 7 bits (a range of 0-127) and there is no getting around that. The question is, was it meant to hold only data from 0 to 99? The old ProDOS documentation is unclear on that. However tests years ago showed that ProDOS would indeed insert dates over 99 in the catalog and they worked. The same is true of early GS/OS. For that reason all my software assumes use of the range 0-127 meaning that dates are fine up to 2027. Basic System did not seem to agree with that, but the patch, which just removes the compare to 100 code, works fine for all dates from 1900 to 2027. The real problem occurred in the 1990's when the code for ProDOS and for GS/OS was modified to insert the mentioned comparison. What this did was to CREATE a Y2K bug that did not exist before. The patches just circumvent this. Of course, this makes the dates go bad in 2028, but I'll probably be dead then anyway and if there are still working Apple ][s then, that will be amazing. (In any case, you could always just reverse the patches at that point.) The alternative (not patching) just means, as all classic Y2K bugs, that all dates fall in the range 1900-1999. There are some effects of this. For example my 8 bit software that displays the day of the week (not provided by P8) does so by computation using the year, month and day of month. A year of 0 (always meaning 1900) will, of course, compute to the day of the week in the year 1900 and not 2000. This led some people to think there was an error in my code - rather it was an incorrect date produced by ProDOS itself - the patch fixes that. Of course, it would have been better if Apple had provided more than 7 bits for the year (or had used a later base date), but that is the way it is and is what we have to live with. It could very well be that some programs will have problems with the patches - so whether to do them is up to the individual. Be advised that a lot of my stuff will not work correctly in this millennium without these patches. (And concerning my own programs, you should not use 3rd party patches; better, get the current versions off Bernie ][ the Rescue or get me to upload them, which I will be glad to do provided a Stuffit archive upload is acceptable.) The only Y2K bugs I know about in my programs are in Info.Desk (cosmetic) and in the set date function of Cat.Doctor/Utilities, and the corrected versions are available. Mr.Fixit/Volume.Repair does not have a Y2K bug: it does kill all dates prior to about 1976 (since no Apple existed before then and so those dates are assumed false - and there were plenty of them). True, without the patches Mr.Fixit will zero dates prior to '76 (meaning also 2076 since there is no way to distinguish) but with the patches Mr.Fixit works just fine as it is.