acct069@carroll1.cc.edu (Ron Higgins) (01/06/90)
There is a bug in GBBS Pro 1.3j that screws up the date. Instead of reading 01/01/90 it read 01/01/8: You can fix this by installing ACOS 2.0 (free for registered owners by calling the L&L support BBS and d/ling it), or by installing the following patch. One note, the patch causes a problem with when$ in ACOS and will display 12/31/9/ instead of 12/31/89 This is evident when the BBS is displaying a users last date on, etc.... It will fix itself when a user logs off for the first time in 1990. Acos Date Fix: By Mach Three/Kenrick Mock The Sound Barrier BBS: 916-758-9540 - 9600, 60 Megs 12/14/89 I don't know if there is a date fix out there already, but I was taking a study break from finals (UC Davis CS - Lisp is evil!) and just whipped this up. If a fix already exists, then ignore this message. Anyway, most of you are probably aware that when Jan 1, 1990 rolls around, ACOS will print out the date "01/01/8:" due to the insertion of hard-coded dates in ACOS. I guess Greg never thought that Acos would last past the 80's. To fix this is pretty simple. Get out block warden and follow your ACOS.OBJ file. Next, search for $18 69 30 8D. It should be found on relative block 28. The exact offset will be different for different versions of ACOS. Change the 30 to a 26 and write the block back to disk. Next, search for $2F 32 30 2F 38. It should also be found on relative block 28. The exact offset will be different for different versions of ACOS. Change the 38 to 39 and write the block back to disk. This patch will work until the first day of 1996. At that time, ACOS will mess up yet again. However, I do not foresee anyone running an ACOS based BBS in the year 1996 so I seriously doubt this will be a problem. (I guess it made it this far - you never know?! In any case, another fix will be easy) - - - What is going on for those who care: ACOS calls the standard prodos-8 MLI interface with the date parameter. The date is returned, and loaded into the accumulator and the X register. The year (0-99) is stored in the high 7 bits of A. ACOS basically does something like this to it: STA $00 ... LSR $00 ; Shift to the right so the year is accessible as a normal # ... AND #$0F ; Chop off the left half of the year! (tens digit of year) CLC ; Prepare for add ADC #$30 ; Add #$30 to get the ASCII number 0 - 9 (ones digit of year) STA ONES ; Store it someplace ... RTS TENS:38 ; 38 in ASCII is "8". Hard codes the tens digit of year ONES:xx ; the one's digit of the year is stored here If anyone wants to check out the date routine, it starts at $3ECA (at least on my version of ACOS; might be different on others, but will probably be nearby). It's not a real exciting routine anyway, but whatever... Mach Three/Ken [Warning: Installing this patch should be done on a backup of your ACOS.OBJ file. I take no responsibility for any damage or support of the above patch. I'm only posting this so that people can see it.]