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 <No Date> 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.  