home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 1
/
crawlyvol1.bin
/
utility
/
patch
/
sos_206
/
arrowfix.pit
< prev
next >
Wrap
Text File
|
1992-04-09
|
2KB
|
80 lines
#!PATCHIT.PRG
#
# Patches fuer Probleme mit WM_ARROWED-Nachrichten in GEM 3.2
#
# Versionen:
# 1.0 mo 28.02.92 Basisversion (entspricht ARROWFIX v1.1)
#
# Autoren:
# mo (\/) Martin Osieka, Erbacherstr. 2, D-6100 Darmstadt
#
PRINTF( "ARROWFIX v1.1\n")
IF (ARGC() < 2) THEN
ABORT( "Missing TOS filename\n")
ENDIF
IF ((fp = FOPEN( ARGV( 1), "r+b")) == 0) THEN
ABORT( "Can't open '%s'\n", ARGV( 1))
ENDIF
FBASE( fp, $E00000)
# TOS-Image pruefen
tossize = FSIZE( fp)
tosversion = FPEEKW( fp, $E00002)
IF (tosversion == $206) && (tossize == $40000) THEN
accessw = 2
ELIF (tosversion == $306) AND (tossize == $80000) THEN
accessw = 4
ELSE
ABORT( "Illegal TOS fileformat\n")
ENDIF
# GEM-Position bestimmen
gemmagic = FPEEKL( fp, $E00014)
gemtext = FPEEKL( fp, gemmagic + 8)
# GEM Version pruefen
gemversion = FPEEKW( fp, gemtext + $276)
IF (gemversion != $0320) THEN
ABORT( "Illegal TOS version\n")
ENDIF
# a) Ueberlaengenwert auf 0 setzen
FSEEK( fp, gemtext + $1D56, 0)
FPUTW( fp, $317C, $0000, $002C) # MOVE.W #0,$2C(A0)
# b) Warteroutine von ARROW-Repeat aendern
irtime = FPEEKL( fp, gemtext + $CAC6)
emplayall = FPEEKL( fp, gemtext + $271A)
FSEEK( fp, gemtext + $CB6A, 0)
FPUTW( fp, $2C08) # MOVE.L A0,D6
FPUTW( fp, $49F9) # LEA.L irtime,A4
FPUTL( fp, irtime)
FPUTW( fp, $DC94) # ADD.L (A4),D6
FPUTW( fp, $4EB9) # JSR emplayall
FPUTL( fp, emplayall)
FPUTW( fp, $BC94) # CMP.L (A4),D6
FPUTW( fp, $64F6) # BCC.B $F6
FPUTW( fp, $4E75) # RTS
# c) Applikationsstatus anders abfragen
FSEEK( fp, gemtext + $1CF0, 0)
FPUTW( fp, $0828, $0001, $001F) # BTST #1,$1F(A0)
FPUTW( fp, $672E) # BEQ.B $2E
PRINTF( "Calculate CRCs\n")
TOSCRC( fp, accessw)
IF (accessw == 2) THEN
FPUTW( fp, CRC( 0), CRC( 1))
ELSE
FPUTL( fp, CRC( 0), CRC( 1))
ENDIF
IF (FERROR( fp)) THEN
ABORT( "Write error in '%s'\n", ARGV( 1));
ENDIF
FCLOSE( fp)
PRINTF( "OK\n")