home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
genie-commodore-file-library
/
C128Toolkit
/
FASTHACKEM-NEW
< prev
next >
Wrap
Text File
|
2019-04-13
|
8KB
|
257 lines
╨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