ÐATH: DRUHI!DRUTX!IHNP4!HOMXB!MTUXO!MTUNE!RUTGERS!DAEMON ÆROM: PRINDLE@ÎÁÄÃ.ÁÒÐÁ ÎEWSGROUPS: COMP.SYS.CBM ÓUBJECT: ÃORRECTION TO ÆAST ÈACK'EM PATCH ÍESSAGE-ÉÄ: <4940@RUTGERS.RUTGERS.EDU> ÄATE: 3 ÏCT 87 02:57:53 ÇÍÔ ÓENDER: DAEMON@RUTGERS.RUTGERS.EDU ÌINES: 246 ÆROM: PRINDLE@NADC.ARPA (ÆRANK ÐRINDLE) ×ELCOME TO THE "ÃÁÐÕÔÅ!" DEPARTMENT! ÍANY THANKS TO ÆRED ÂOWEN OF ÃOMMODORE WHO SPOTTED A TYPO IN THE PATCHES TO ÆAST ÈACK'EM "Ó ÎÉÂ" MODULE (TO MAKE IT WORK WITH THE NEW -05 ÒÏÍ FOR THE 1571): ÉNCORRECT PATCH: 1499: $ÁÁ ÃORRECT PATCH: 1494: $ÁÁ ÆRED VERIFIED ALL THE OTHER PATCHES FOR THIS MODULE AND THE OTHERS WERE CORRECT AS POSTED. ÉN ANY CASE, JUST TO PREVENT ANY POSSIBILITY OF CONFUSION, HERE IS A RE-POST OF THE COMPLETE SET OF PATCHES WITH THE CORRECTION NOTED WITH AN ASTERISK(*) IN COLUMN 1. ÈOPE NOBODY PATCHED HIS/HER ORIGINAL DISK! ----------------------------ÃORRECTED 2 ÏCT 1987-------------------------------- ÐATCHES TO "ÆÁÓÔ ÈÁÃË'ÅÍ" TO WORK WITH 1571 ÒÏÍ UPGRADE -05 ÔHE FOLLOWING FILES FROM VERSIONS 3.0Á THROUGH 4.1 NEED TO BE PATCHED: "64" "ÆÁÓÔÂÏÏÔ Ö2" "ÓÉÎÇÌÅ" "Ö2 ÎÉÂ" (3.0Á ONLY) "Ó ÎÉÂ" "128 ÓÉÎÇÌÅ" ÔHE PATCHES ARE NECESSITATED BY THREE CHANGES IN THE 1571 ÒÏÍ: 1. ÒÏÍ LOCATION $C000 CONTAINS A NEW VALUE. ÔHE 'FASTBOOT' PROCESSING CHECKS THIS VALUE TO DETERMINE IF IT IS APPROPRIATE TO INSTALL AND UTILIZE THE FAST BOOTING CODE. ÆINDING THE NEW VALUE THERE, WHICH DOES NOT MATCH ANY KNOWN DRIVE TYPE, IT BYPASSES THE FAST BOOTING CAPABILITY. ÔHIS MAY BE RESTORED BY MAKING THE PROCESSING CHECK DEFAULT TO 1541/1571 MODE IF $C000 IS UNKNOWN. 2. ÒÁÍ LOCATION $01B4 IS NOW USED BY THE ÄÏÓ AS A FLAG. ×HEN CODE IS UPLOADED FROM THE Ã64 INTO DRIVE ÒÁÍ $0174-$01B9, THE LAST ONE OR TWO INSTRUCTIONS IS OVERWRITTEN BY THE ÄÏÓ IN THIS LOCATION (A $01 IS OVERWRITTEN); THUS THE UPLOADED PROGRAM EXECUTES INCORRECTLY. ÔHIS MAY BE CORRECTED BY INSTALLING A HARMLESS INSTRUCTION WITH IT'S OPERAND AT THIS ADDRESS: ÏÒÁ ($00,Ø). ÔHE REMAINING CODE IS MOVED DOWN OR PRIOR CODE IS MOVED UP, AS NECESSARY TO FIT UNDER $01BA. 3. ÔHE -05 ÒÏÍ CLEARS BIT 1 ($02) OF THE DISK CONTROLLER'S ÐERIPHERAL ÃONTROL ÒEGISTER (ÐÃÒ) AT $1Ã0Ã IN THE DRIVE WHENEVER IT IS NOT READING OR WRITING THE DISK. ÁPPARENTLY, THIS BIT, WHEN CLEARED, DISABLES THE GENERATION OF "BYTE READY" SIGNAL (AS BYTES ARE READ AND ASSEMBLED BY THE DISK CONTROLLER) WHICH APPEARS AS BIT 7 OF PORT $180Æ. ÔHIS ONLY SEEMS TO OCCUR WHEN THE DRIVE IS IN "FAST-SERIAL" (I.E. 128) MODE. ÔHE "128 SINGLE" MODULE ASSUMED THAT THIS BIT WOULD BE SET AND DID NOT SET IT. ÁDDITIONAL CODE MUST BE ADDED TO ENSURE THAT THIS BIT OF THE ÐÃÒ IS SET DURING BOTH READ AND WRITE PORTIONS OF THE COPY OPERATION. (ÎOTE: NOTICE THAT THE "2-ÄRIVE" MODULES ARE NOT AFFLICTED BY THESE PROBLEMS, AND DO NOT REQUIRE MODIFICATION). -------------------------------------------------------------------------------- ÓÐÅÃÉÆÉÃÓ -------------------------------------------------------------------------------- ÍODULE: "64": ÓYMPTOM: ÍAIN MENU BOOTS UP SLOWLY ON A Ã64. ÃAUSE: ÓIGNATURE CHANGE IN ÒÏÍ CAUSES DRIVE NOT TO BE RECOGNIZED AS A 1541 OR A 1571. ÄEFAULTS TO NO FAST BOOT. ÆIX: ÁLTER CODE SO THAT UNRECOGNIZED SIGNATURE DEFAULTS TO 1571. ÍODULE ÌOADS ÁT: $102 TO ? (I.E. IN THE STACK) ÐATCH: 0135: ÂÎÅ +9 ;ÄEFAULT UNKNOWN $C000 TO 1541/1571 ;I.E. THE SECOND BYTE OF THE ÂÎÅ INSTRUCTION IS 9 ÈINT: ÕSE "ÄÉÓË ÄÏÃÔÏÒ" OR ANY OTHER SECTOR EDITOR TO CHANGE FIRST SECTOR OF FILE, POSITION 55=208, POSITION 56=9 (THESE NUMBERS ARE DECIMAL). ÍODULE: "ÆÁÓÔÂÏÏÔ Ö2" ÓYMPTOM: ÅVEN WHEN ÆÁÓÔÂÏÏÔ IS ENABLED, MODULES DON'T LOAD FAST ÃAUSE: ÓIGNATURE CHANGE IN ÒÏÍ CAUSES DRIVE NOT TO BE RECOGNIZED AS A 1541 OR A 1571. ÄEFAULTS TO NO FAST LOAD. ÆIX: ÁLTER CODE SO THAT UNRECOGNIZED SIGNATURE DEFAULTS TO 1571. ÍODULE ÌOADS ÁT: $Ã800 TO $ÃÆÁ6-1 ÐATCH: Ã878: ÎÏÐ ;ÄEFAULT UNKNOWN $C000 TO 1541/1571 Ã879: ÎÏÐ Ã87Á: ÎÏÐ Ã87Â: ÎÏÐ Ã87Ã: ÎÏÐ ÈINT: ÍUST USE "ÄÉÓË ÄÏÃÔÏÒ" OR OTHER SECTOR EDITOR TO CHANGE FIRST SECTOR OF FILE, POSITIONS 124 THRU 128 TO 234; ÔHIS FILE IS NOT LOADED BY NAME, BUT BY POSITION ON DISK, SO IT MUST BE MODIFIED IN PLACE! ÉF YOU MOVE IT, IT WON'T BE FOUND. ÍODULE: "ÓÉÎÇÌÅ" ÓYMPTOM: 1541 ÓINGLE ÄRIVE ÆAST ÃOPY HANGS UP ÃAUSE: ÆAST UPLOADER CODE UPLOADED TO $1B4 IN THE DRIVE IS OVERWRITTEN BY THE NEW ÄÏÓ, WHICH HAS ALLOCATED $1B4 FOR IT'S OWN USE. ÆIX: ÁLTER UPLOADED CODE SO THAT IT DOESN'T MATTER WHAT IS IN $1B4. ÍODULE ÌOADS ÁT: $07Æ8 TO $13Æ0-1 ÐATCH: 13ÅÄ: ÏÒÁ ($00,Ø) ;SKIP OVER DRIVE $1B4 13ÅÆ: ÎÏÐ 13Æ0: ÊÍÐ ($01Á9) 0ÆÁÄ: $Â6 ;CHANGE REFS TO $1B3 -> $1B6 1008: $Â6 106Ã: $Â6 10Á9: $Â6 10ÅÂ: $Â6 10ÆÅ: $Â6 ÈINT: ÆILE MUST BE LOADED, ALTERED, AND RE-SAVED WITH A ÍÌ MONITOR. ×HEN RE-SAVING FILE, SAVE $07Æ8-$13Æ3 (I.E. 3 MORE BYTES THAN LOADED, TO COMPENSATE FOR ADDED CODE). ÍODULE: "Ö2 ÎÉÂ" (ÖERSION 3.0Á ONLY) ÓYMPTOM: 1541 ÓINGLE ÄRIVE ÁUTO ÎIBBLER HANGS UP. ÃAUSE: ÓAME AS FOR "ÓÉÎÇÌÅ" ÆIX: ÓAME AS FOR "ÓÉÎÇÌÅ" ÍODULE ÌOADS ÁT: $07Æ8 TO $17Á9-1 ÐATCH: ÆIRST, TRANSFER $15Á2-$15Ä3 TO $15Á0 (I.E. MOVE THAT BLOCK OF CODE BACKWARD TWO BYTES). ÔHEN: 159Â: ÌÄÁ #$04 ;CORRECT FOR MOVE-BACK 15Ã8: ÂÎÅ $159Â ;CORRECT FOR MOVE-BACK 15ÃÆ: ÏÒÁ ($00,Ø) ;SKIP OVER DRIVE $1B4 15Ä1: ÊÍÐ ($01Á9) 119Ä: $ÁÁ ;CHANGE REFS TO $1AC -> $1AA 1266: $ÁÁ 12Â7: $ÁÁ 12Ã2: $ÁÁ 12ÃÁ: $ÁÁ 131Á: $ÁÁ 131Å: $ÁÁ ÈINT: ÅASIEST TO DO THIS WITH A ÍÌ MONITOR; ÂECAUSE CODE IS MOVED BACK INSTEAD OF AHEAD, JUST SAVE SAME AREA AS LOADED: $07Æ8-$17Á9. ÍODULE "Ó ÎÉÂ": ÓYMPTOM: 1541 ÓINGLE ÄRIVE ÎIBBLER HANGS UP. ÃAUSE: ÓAME AS FOR "ÓÉÎÇÌÅ" ÆIX: ÓAME AS FOR "ÓÉÎÇÌÅ" ÍODULE ÌOADS ÁT: $07Æ8 TO $179Â-1 ÐATCH: ÆIRST, TRANSFER $1769-$179Á TO $1767 (I.E. MOVE THAT BLOCK OF CODE BACKWARD 2 BYTES). ÔHEN: 1762: ÌÄÁ #$04 ;CORRECT FOR MOVE-BACK 178Æ: ÂÎÅ $1762 ;CORRECT FOR MOVE-BACK 1796: ÏÒÁ ($00,Ø) ;SKIP OVER DRIVE $1B4 1798: ÊÍÐ ($01Á9) 136Æ: $ÁÁ ;CHANGE REFS TO $1AC -> $1AA 1438: $ÁÁ 1489: $ÁÁ *(CORRECTED 2 ÏCT 87) 1494: $ÁÁ 149Ã: $ÁÁ 14ÅÃ: $ÁÁ 14Æ0: $ÁÁ ÈINT: ÅASIEST TO DO THIS WITH A ÍÌ MONITOR; ÂECAUSE CODE IS MOVED BACK INSTEAD OF AHEAD, JUST SAVE SAME SAME AREA AS LOADED: $07Æ8-$179Â. ÍODULE: "128 ÓÉÎÇÌÅ" ÓYMPTOM: 1571 (128 MODE) ÓINGLE ÄRIVE ÆAST ÃOPY HANGS UP. ÃAUSE: ÎEW ÒÏÍ -05 CLEARS BIT 1 OF ÐÃÒ WHEN NOT READING FROM DISK. ÔHIS INHIBITS ABILITY TO DETECT "BYTE READY" BY TESTING THE SIGN BIT OF $180Æ. 128 ÓÉÎÇÌÅ ASSUMES THAT THIS BIT IS SET WHEN IT GETS CONTROL FROM THE ÄÏÓ AND HANGS FOREVER WAITING FOR "BYTE READY". ÆIX: ÍODIFY THE CURRENT SUBROUTINE WHICH DELAYS WHILE WAITING FOR DRIVE MOTOR TO COME UP TO SPEED SO THAT IT ACHIEVES A SIMILAR DELAY, BUT ALSO ENSURES THAT BIT 1 OF THE ÐÃÒ ($1Ã0Ã) IS SET. ÔHIS MAY SEEM LIKE A SILLY PLACE FOR A PATCH, BUT THERE IS NO OTHER AVAILABLE PATCH AREA. ÍODULE ÌOADS ÁT: $1Ã00 TO $2Å24-1 (IN 128 MODE) ÐATCH: 2Ä0Â: ÌÄÁ #$00 ; MODIFIED DRIVE MOTOR DELAY 2Ä0Ä: ÔÁØ 2Ä0Å: ÔÁÙ 2Ä0Æ: ÌÄÁ $1Ã0Ã ; LOOP BEGINS 2Ä12: ÏÒÁ #$02 ; SET BIT 1 OF ÐÃÒ 2Ä14: ÓÔÁ $1Ã0Ã ; INSIDE LOOP FOR MORE DELAY 2Ä17: ÎÏÐ ; STILL MORE DELAY 2Ä18: ÄÅØ 2Ä19: ÂÎÅ $2Ä0Æ ; END OF INNER LOOP 2Ä1Â: ÄÅÙ 2Ä1Ã: ÂÎÅ $2Ä0Æ ; END OF OUTER LOOP 2Ä1Å: ÒÔÓ ÈINT: ÅASIEST TO DO THIS WITH A ÍÌ MONITOR; ÂECAUSE CODE IS NOT MOVED AND NO NEW CODE IS ADDED, SAVE SAME AREA AS LOADED: $1Ã00-$2Å24. ÍY EXPERIENCE IS THAT THE ÓÉÎÇÌÅ 1541 ÆÉÌÅ ÃÏÐÉÅÒ AND ALL OF THE ÄÕÁÌ 1541 AND ÄÕÁÌ 1571 MODULES STILL WORK (UNMODIFIED) WITH THE -05 ÒÏÍ UPGRADE, THOUGH É SUSPECT THIS IS PURELY COINCIDENTAL. ÉF ANYONE HAS INFORMATION TO THE CONTRARY, PLEASE LET ME KNOW. ÓINCERELY, ÆRANK ÐRINDLE ÐRINDLE@ÎÁÄÃ.ARPA