[TRS-80] Local Call for Death, source Basic altéré
Modérateurs : Papy.G, fneck, Carl
[TRS-80] Local Call for Death, source Basic altéré
Bonjour,
j'ai adapté un jeu Basic, Local Call for Death par R. Lafore, pour TRS-80 Model 1 avec un Basic moderne, mais le code source en Basic du jeu semble corrompu (probablement une histoire de RELOCATABLE Z-80 CODE !)
On peut voir à la fin du listing Basic, qu’après la ligne 4100 (il y a d’ailleurs deux ligne 4100 !?), le code Basic est altéré. Cela ne concerne qu'une infime partie du Code.
Si le jeu est jouable, je n’ai pas pu l'adapter intégralement ; si quelqu’un a une idée ou sait où je peux me renseigner pour recréer un listing Basic complet du jeu.
Merci.
Le listing Basic pour TRS_80 (fichiers : Story pour le Basic et Alpha pour la base de données, elle aussi altérée) :
http://willus.com/trs80/?-a+2+-p+126566+-f+2
http://willus.com/trs80/?-a+6+-p+126565+-f+1
La présentation est la documentation du jeu :
http://www.mocagh.org/loadpage.php?getc ... ve+Fiction
Le DSK du jeu :
http://www.classic-computers.org.nz/sys ... rchive.htm
Et mon adaptation en Basic avec PureBasic :
http://auraes.free.fr/tmp/LCfD.tar.gz
j'ai adapté un jeu Basic, Local Call for Death par R. Lafore, pour TRS-80 Model 1 avec un Basic moderne, mais le code source en Basic du jeu semble corrompu (probablement une histoire de RELOCATABLE Z-80 CODE !)
On peut voir à la fin du listing Basic, qu’après la ligne 4100 (il y a d’ailleurs deux ligne 4100 !?), le code Basic est altéré. Cela ne concerne qu'une infime partie du Code.
Si le jeu est jouable, je n’ai pas pu l'adapter intégralement ; si quelqu’un a une idée ou sait où je peux me renseigner pour recréer un listing Basic complet du jeu.
Merci.
Le listing Basic pour TRS_80 (fichiers : Story pour le Basic et Alpha pour la base de données, elle aussi altérée) :
http://willus.com/trs80/?-a+2+-p+126566+-f+2
http://willus.com/trs80/?-a+6+-p+126565+-f+1
La présentation est la documentation du jeu :
http://www.mocagh.org/loadpage.php?getc ... ve+Fiction
Le DSK du jeu :
http://www.classic-computers.org.nz/sys ... rchive.htm
Et mon adaptation en Basic avec PureBasic :
http://auraes.free.fr/tmp/LCfD.tar.gz
Re: [TRS-80] Local Call for Death, source Basic altéré
bravo pour ce portage Auraes !
Je vais essayer de reprendre ma partie de cette excellente fiction interactive à partir de ton travail, ça sera plus pratique qu'avec l'émulateur TRS-80, mais nul doute que certains ici vont rallumer leur vraie machine pour essayer les disques d'origine
Je vais essayer de reprendre ma partie de cette excellente fiction interactive à partir de ton travail, ça sera plus pratique qu'avec l'émulateur TRS-80, mais nul doute que certains ici vont rallumer leur vraie machine pour essayer les disques d'origine
Re: [TRS-80] Local Call for Death, source Basic altéré
Re...
Valà:
Nota: les erreurs disque ne sont pas corrigées!
Valà:
Nota: les erreurs disque ne sont pas corrigées!
Code : Tout sélectionner
## BASIC TRS80 FILE.
##
## NAME: RESULT(#1)
##
10 CLEAR1000:CLS:DEFINT A-Z
12 OPEN "R",1,"ALPHA":FIELD #1,2ASL0$,251ASI0$,2AS C0$
15 F1=0:F2=0:F3=0
17 FA=0:FB=0:FC=0:FD=0
20 SC=0:SW=0:S2=0:S3=0:S4=0:S5=0:S6=-1:S7=0:
LL=7:HL=1:PT=0:HE=0:
Q1=0:Q2=0:Q3=0:Q4=1
25 DIM U(3):FOR I=0 TO 3:U(I)=0:NEXT I:
C1=0:C2=0
40 CR=1001:GOSUB 1000
50 LINE INPUT"
TYPE ONE: ";H1$
60 IF H1$="MR" H5$="SIR":GOTO 70
62 IF H1$="MRS" H5$="MADAM":GOTO 70
64 IF H1$="MISS" H5$="MISS":GOTO 70
66 GOTO 50
70 LINE INPUT"
NOW PLEASE TYPE YOUR LAST NAME: ";H2$
80 LINE INPUT"
AND YOUR FIRST NAME: ";H3$
90 LINE INPUT"
WHAT TOWN IN AMERICA DO YOU COME FROM? ";H4$
100 CR=1004:GOSUB 1000
110 LINE INPUT D$
120 CR=1017:GOSUB 1000
130 GOSUB 1800:PRINT
140 IF (INSTR(I$," NO ") OR INSTR(I$," JUST ") OR
INSTR(I$," NOT ") OR INSTR(I$,"DON'T") OR
INSTR(I$,"NEVER")) CR=2024 :ELSE CR=1024
150 GOSUB 1000
160 CR=1026:GOSUB 1000
170 GOSUB 1800:PRINT
180 IF (INSTR(I$," NO ") OR INSTR(I$," DON'T ") OR
INSTR(I$," NOT ") OR INSTR(I$,"CAN'T") OR INSTR(I$," HATE") OR
INSTR(I$,"NEVER")) CR=1033 :ELSE CR=2033
190 GOSUB 1000
200 CR=1034:GOSUB 1000
210 GOSUB 1800
220 PRINT:PRINT "LORD COLIN:";I$;"INDEED!"
230 CR=1040:GOSUB 1000
240 GOTO 2000
500 CR=58+1000*RND(8)
510 PRINT "
LORD COLIN: ";:GOSUB 1000:LP=1:RETURN
550 CR=58+1000*RND(8)
560 GOSUB 1000:RETURN
700 GOSUB 550:IF PT>LL RETURN
710 C1=C1+1:IF C1<2 RETURN
720 FOR I=0 TO 3:IF U(I)=2 THEN NEXT I
725 IF I=4 THEN RETURN :ELSE PRINT
730 IF U(I)=0
THEN CR=171+(C2+1)*1000:GOSUB 1000:
CR=173+(I +1)*1000:GOSUB 1000:
U(I)=1:C2=C2+1
:ELSE CR=172+(C2 )*1000:GOSUB 1000:
CR=175+(I +1)*1000:GOSUB 1000:
U(I)=2
740 IF C2=4 THEN C2=0
750 C1=0:RETURN
1000 H=FIX(CR/1000):RN=CR-H*1000:SR=H-FIX(H/10)*10
1010 GET 1,RN:L=CVI(L0$):I$=LEFT$(I0$,L):C=CVI(C0$)
1020 IF SR=1 SP=1:GOTO 1090
1030 DN=1:IP=1
1040 P1=INSTR(IP,I$,"[")
1050 IF P1=0 PRINT "NO RECORD #";CR:RETURN
1060 IP=P1+1:DN=DN+1
1070 IF DN<SR GOTO 1040
1080 SP=P1+1
1090 FL=1: EP=INSTR(SP,I$,"[")
1100 IF EP=0 THEN EP=L+1: FL=0
1110 I$=MID$(I$,SP,EP-SP)
1120 GOSUB 1300
1130 IF (C=0 OR FL=1) RETURN
1140 SR=1:RN=C:GOTO 1010
1300 L=LEN(I$)
1310 P1=INSTR(I$,"@")
1320 P2=INSTR(I$,"#")
1330 IF P1=0 AND P2=0 PRINT I$;:RETURN
1340 IF P1=0 GOTO 1410
1350 IF P2=0 GOTO 1370
1360 IF P2<P1 GOTO 1410
1370 PRINT LEFT$(I$,P1-1)
1380 LINE INPUT"
(PRESS -ENTER- TO CONTINUE)";D$:CLS
1390 I$=RIGHT$(I$,L-P1)
1400 GOTO 1300
1410 PRINT LEFT$(I$,P2-1);
1420 NH$=MID$(I$,P2+1,1)
1430 IF NH$="1" H$=H1$
1440 IF NH$="2" H$=H2$
1450 IF NH$="3" H$=H3$
1460 IF NH$="4" H$=H4$
1470 IF NH$="5" H$=H5$
1480 IF NH$="6" H$=H6$
1490 IF NH$="7" H$=H7$
1500 IF NH$="8" H$=H8$
1510 IF NH$="9" H$=H9$
1520 PRINT H$;:I$=RIGHT$(I$,L-P2-1)
1530 GOTO 1300
1800 PRINT "
";H1$;" ";H2$;:LINE INPUT": ";I$
1810 LI=LEN(I$):N=1: IF LI<2 GOTO 1800
1820 P1=INSTR(N,I$,","):IF P1=0 GOTO 1840
1830 MID$(I$,P1,1)=" ":N=P1:GOTO 1820
1840 II$=RIGHT$(I$,1):P1=INSTR(".?!/",II$)
1850 IF P1<>0 I$=LEFT$(I$,LI-1)
1860 N=1
1870 P1=INSTR(N,I$,"
"): IF P1=0 GOTO 1900
1880 MID$(I$,P1,1)=" ":N=P1:GOTO 1870
1900 FOR K=96 TO 127
1910 IF INSTR(I$,CHR$(K)) PRINT "
*** PLEASE DON'T USE THE SHIFT KEY WITH LETTERS ***":GOTO 1800
:ELSE NEXT K
1940 I$=" "+I$+" ":RETURN
2000 LP=0:GOTO 2020
2010 CR=56+1000*RND(6):
PRINT:IF LP=0 PRINT "
LORD COLIN: ";
2015 GOSUB 1000:PRINT
2020 GOSUB 1800:LP=0
2024 IF INSTR(I$,"FINGERPRINT")
CR=1128:GOSUB 1000:GOTO 2010
2028 IF INSTR(I$,"BLACKWELL")<>0 AND
INSTR(I$,"HANDWRITING")
CR=1095:GOSUB 1000:GOTO 2010
2030 IF INSTR(I$,"WRITING")<>0 AND INSTR(I$,"DIARY")
CR=1131:GOSUB 1000:GOTO 2010
2032 IF ( INSTR(I$,"BLACKWELL") OR INSTR(I$,"BUSINESS") )<>0 AND
( INSTR(I$," CARD ") OR INSTR(I$,"ADDRESS") )
CR=1132:GOSUB 1000:GOTO 2010
2034 IF INSTR(I$,"WRITING")<>0 AND INSTR(I$," NOTE ")
CR=2116:GOSUB 1000:GOTO 2010
2036 IF INSTR(I$,"THUMB")<>0 AND INSTR(I$,"PRINT")
CR=1182:GOSUB 1000:GOTO 2010
2040 IF INSTR(I$," NOTE ")
CR=1059:GOSUB 1000:GOTO 2010
2050 IF INSTR(I$,"PHONE ") CR=1061:GOSUB 1000:GOTO 2010
2055 IF INSTR(I$,"COFFEE")
CR=1108:GOSUB 1000:GOTO 2010
2060 IF INSTR(I$,"WINDOW") CR=1063:GOSUB 1000:GOTO 2010
2065 IF INSTR(I$,"MATERIAL") OR INSTR(I$,"CLOTH ") OR
INSTR(I$,"BROWN") OR INSTR(I$,"FUZZY")
CR=1133:GOSUB 1000:GOTO 2010
2070 IF INSTR(I$,"SUPPER") OR INSTR(I$,"MEAL") OR
INSTR(I$,"TABLE") CR=1072:GOSUB 1000:GOTO 2010
2080 IF INSTR(I$," GUN ") OR INSTR(I$,"REVOLVER") OR
INSTR(I$,"PISTOL") CR=1074:GOSUB 1000:GOTO 2010
2090 IF INSTR(I$," BODY ") OR INSTR(I$,"CORPSE") OR
INSTR(I$," RODNEY ")
FA=1:CR=1075:GOSUB 1000:GOTO 2010
2095 IF INSTR(I$," GAS ")<>0 AND
( INSTR(I$,"STOVE") OR INSTR(I$,"BURNER") )
CR=1082:GOSUB 1000:GOTO 2010
2100 IF INSTR(I$,"STOVE") OR INSTR(I$,"HEATER") OR
INSTR(I$," COAL ") CR=1077:GOSUB 1000:GOTO 2010
2110 IF INSTR(I$,"GARBAGE") OR INSTR(I$,"TRASH")
CR=1079:GOSUB 1000:GOTO 2010
2120 IF INSTR(I$,"WOUND") OR INSTR(I$," HOLE ") OR
INSTR(I$," BLOOD ")
CR=1080:GOSUB 1000:GOTO 2010
2130 IF INSTR(I$," BED ") CR=1081:GOSUB 1000:GOTO 2010
2150 IF INSTR(I$," DOOR ") CR=1083:GOSUB 1000:GOTO 2010
2160 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$,"POCKET") OR INSTR(I$,"WALLET") OR INSTR(I$,"SEARCH")) FB=1:CR=1084:GOSUB 1000:GOTO 2010
2170 IF INSTR(I$,"TICKET")<>0 AND
FA AND FB THEN
FD=1:CR=1086:GOSUB 1000:GOTO 2010
2172 IF INSTR(I$,"TICKET")<>0 AND
FB THEN
CR=2086:GOSUB 1000:GOTO 2010
2174 IF INSTR(I$,"TICKET")
CR=2142:GOSUB 1000:GOTO 2010
2180 IF INSTR(I$," ROOM ") OR INSTR(I$," FLAT ") OR
INSTR(I$," APARTM") OR INSTR(I$," PLACE ") OR
INSTR(I$,"EVERYTHING")
CR=1126:GOSUB 1000:GOTO 2010
2190 IF INSTR(I$," DIARY ")
FC=1: CR=1124:GOSUB 1000:GOTO 2010
2210 IF INSTR(I$,"BLACKWEL")<>0 AND
( INSTR(I$," PANT") OR INSTR(I$,"TROUSER") OR
INSTR(I$," CUFF") )
CR=1129:GOSUB 1000:GOTO 2010
2250 IF INSTR(I$,"CLOSET") OR
INSTR(I$," BEAN") OR INSTR(I$," SUGAR") OR
INSTR(I$,"FLOOR") OR INSTR(I$,"RACING") OR
INSTR(I$," POT ") OR INSTR(I$,"FOOD") OR
INSTR(I$," PAN ") OR INSTR(I$," WALL")
CR=1138:GOSUB 1000:GOTO 2010
2260 IF INSTR(I$,"RODNEY")<>0 AND
( INSTR(I$,"POCKET") OR INSTR(I$,"CLOTH") OR INSTR(I$,"COAT") )
CR=1138:GOSUB 1000:GOTO 2010
2270 IF INSTR(I$,"CARDBOARD") OR INSTR(I$,"CARD BOARD")
CR=1143:GOSUB 1000:GOTO 2010
2280 IF INSTR(I$,"PAPER")
CR=1141:GOSUB 1000:GOTO 2010
2300 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$,"BOOT") OR INSTR(I$,"SHOE") )
CR=2176:GOSUB 1000:GOTO 2010
2310 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$,"THUMB") OR INSTR(I$," HAND") )
CR=1177:GOSUB 1000:GOTO 2010
2320 IF INSTR(I$," CAR ")
CR=2023:GOSUB 1000:GOTO 2010
2330 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$,"COAT") OR INSTR(I$,"JACKET") )
CR=2066:GOSUB 1000:GOTO 2010
2350 IF INSTR(I$," ASHES")
CR=2182:GOSUB 1000:GOTO 2010
2360 IF INSTR(I$,"BLACKWELL")<>0 AND INSTR(I$," CLOTHES")
CR=1185:GOSUB 1000:GOTO 2010
2370 IF INSTR(I$," HINT") OR INSTR(I$," HELP")
CR=1186:GOSUB 1000:GOTO 2010
2470 IF LI>40 THEN
CR=1176:GOSUB 1000:GOTO 2010
2480 IF INSTR(I$," YES ") OR INSTR(I$,"RIGHT") OR
INSTR(I$," SURE") OR INSTR(I$," ABSOLUTE") OR
INSTR(I$," OK ") OR INSTR(I$,"CERTAIN") PRINT "
LORD PETER: WHAT?": GOTO 2020
2490 IF INSTR(I$," NO ") OR INSTR(I$," NOT ") OR
INSTR(I$,"CAN'T") OR INSTR(I$,"DON'T") OR
INSTR(I$,"NOTHING") OR INSTR(I$,"ENOUGH") OR
INSTR(I$,"S ALL ") GOTO 2800
2500 GOSUB 500:GOTO 2010
2800 IF SW=1 GOTO 2900
2810 IF SC<4 SC=SC+1
2820 CR=SC*1000+69
2830 IF LP=0 PRINT "
LORD COLIN: ";
2840 GOSUB 1000:PRINT
2845 GOSUB 1800:LP=0
2850 IF INSTR(I$," YES ") OR INSTR(I$,"I DO ") OR
INSTR(I$,"I AM") OR INSTR(I$,"RIGHT")
CR=SC*1000+70:PRINT "
LORD COLIN: ";:GOSUB 1000:LP=1:GOTO 2010
2860 IF INSTR(I$," NO ") OR INSTR(I$,"NOT") OR
INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR INSTR(I$,"DOUBT")
SW=1: GOTO 2900
2890 GOSUB 500:PRINT:GOTO 2820
2900 LP=0:IF S4=1 GOTO 3200
2910 CR=71+1000*RND(4):IF LP=0 PRINT "
LORD COLIN: "; :ELSE PRINT
2915 GOSUB 1000:
IF F2=0 CR=1117:F2=1:GOSUB 1000 :ELSE PRINT
2920 GOSUB 1800:LP=1:PRINT "
LORD COLIN: ";
2930 IF INSTR(I$,"BLACKWEL") S4=1:GOTO 3200
2940 IF INSTR(I$," YOU ") OR INSTR(I$," COLIN ")
CR=2087:GOSUB 1000:GOTO 2010
2950 IF INSTR(I$,"SOMEONE") OR INSTR(I$,"SOMEBODY") OR
INSTR(I$,"OTHER ") CR=1089:GOSUB 1000:GOTO 2010
2960 IF INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR
INSTR(I$,"HAVEN'T") OR INSTR(I$," NO ") OR
INSTR(I$,"DONT")
CR=1087:GOSUB 1000:GOTO 2010
2970 IF INSTR(I$," MAJOR ") OR INSTR(I$," WORMS")
CR=1092:GOSUB 1000:GOTO 2010
2980 IF INSTR(I$," YES ") PRINT "DON'T KEEP US IN SUSPENSE, THEN. WHO WAS IT?":GOTO 2920
2990 IF INSTR(I$," ME ") OR INSTR(I$," I DID ")
CR=1157:GOSUB 1000:GOTO 2910
3180 S7=S7+1:
IF S7=2 THEN
CR=1184:GOSUB 1000:GOTO 2910
3190 GOSUB 550:GOTO 2910
3200 IF S5=1 GOTO 3410
3210 IF S2=0 THEN S2=1: CR=1088 :ELSE CR=1136
3211 IF LP=0 PRINT "
LORD COLIN: ";:LP=1
3212 GOSUB 1000:PRINT
3214 GOSUB 1800
3216 PRINT "
LORD COLIN: ";: LP=1
3220 IF INSTR(I$,"SOMEBODY") OR INSTR(I$,"SOMEONE") OR
INSTR(I$,"OTHER ") OR INSTR(I$,"FRIEND") OR
INSTR(I$,"ACCOMPLICE") OR INSTR(I$,"CONFEDERATE") OR
INSTR(I$,"KILLER") OR INSTR(I$,"HIRED")
CR=1091:GOSUB 1000:GOTO 3200
3230 IF ( INSTR(I$," KILL") OR INSTR(I$,"MURDER") OR
INSTR(I$," SHOT") ) <>0 AND
( INSTR(I$,"BREAKFAST") OR INSTR(I$,"MORNING") OR
INSTR(I$,"DINNER") OR INSTR(I$,"SUPPER") OR
INSTR(I$,"EVENING") )
S5=1:CR=1090:GOSUB 1000:GOTO 3400
3235 IF ( INSTR(I$," KILL") OR INSTR(I$,"MURDER") OR
INSTR(I$," SHOT") ) <>0 AND
( INSTR(I$," LATER ") OR INSTR(I$," AFTER ") OR
INSTR(I$,"NIGHT") )
S5=1:CR=1090:GOSUB 1000:GOTO 3400
3250 IF INSTR(I$,"BLACKWELL")<>0 AND
( ( INSTR(I$," LEFT ")<>0 AND INSTR(I$,"TABLE") ) OR
( INSTR(I$,"DURING")<>0 AND INSTR(I$,"DINNER") ) )
CR=1057:GOSUB 1000:GOTO 3200
3380 IF INSTR(I$,"DON'T") OR INSTR(I$,"DONT") OR
INSTR(I$,"CAN'T") OR INSTR(I$,"HAVEN'T") OR
INSTR(I$,"CANT") OR INSTR(I$," NO ")
CR=2091:GOSUB 1000:GOTO 2010
3385 IF (F3=1 OR F3>4) THEN F3=F3+1:CR=1156:GOSUB 1000:GOTO 3210
:ELSE F3=F3+1
3390 GOSUB 550:PRINT:GOTO 3210
3400 LP=0:PRINT:GOTO 3440
3410 C1=0:IF PT>LL OR HE>HL GOTO 4000
3415 CR=100+1000*RND(3)
3420 IF LP=0 PRINT "
LORD COLIN: "; :ELSE PRINT
3430 GOSUB 1000:PRINT
3440 GOSUB 1800:PRINT "
LORD COLIN: ";:LP=1
3445 IF ( INSTR(I$,"LET'S") OR INSTR(I$," I ") OR
INSTR(I$," WE ") OR INSTR(I$,"LETS") )<>0 AND
( INSTR(I$,"LOOK AT") OR INSTR(I$,"SEARCH") OR
INSTR(I$,"GO BACK") OR INSTR(I$," SEE ") )
PRINT "ALL RIGHT.":LP=0:GOTO 2028
3450 IF INSTR(I$,"COFFEE")<>0 AND
(INSTR(I$,"FROZEN") OR INSTR(I$," ICE ") OR
INSTR(I$,"FREEZ") OR INSTR(I$,"COLD") OR
INSTR(I$,"WARM") )
PT=PT+3:CR=1093:GOSUB 1000:GOTO 3410
3460 IF ( INSTR(I$,"WOUND") OR INSTR(I$,"RODNEY") OR
INSTR(I$,"HOLE") OR INSTR(I$," HEAD ") )<>0
AND ( INSTR(I$,"BLOOD") OR INSTR(I$,"BLEED") )
PT=PT+2:U(1)=2:CR=1097:GOSUB 1000:GOTO 3410
3465 IF INSTR(I$,"BLOOD")<>0 AND
( INSTR(I$,"DRIP") OR INSTR(I$,"FLOW") OR INSTR(I$,"FRESH") )
PT=PT+2:U(1)=2:CR=1097:GOSUB 1000:GOTO 3410
3470 IF ( INSTR(I$,"FIRE") OR INSTR(I$,"STOVE") OR
INSTR(I$,"HEATER") OR INSTR(I$,"COAL") OR
INSTR(I$,"ASHES") ) <>0 AND
( INSTR(I$,"WET") OR INSTR(I$,"DAMP") OR INSTR(I$,"WATER") )PT=PT+3:U(2)=2:CR=1099:GOSUB 1000:GOTO 3410
3475 IF ( INSTR(I$,"STOVE") OR
INSTR(I$,"FIRE") OR INSTR(I$,"COAL") )<>0 AND
(INSTR(I$,"WARM") OR INSTR(I$," PUT OUT ") OR INSTR(I$,"HOT") )
PT=PT+2:U(2)=2:CR=1099:GOSUB 1000:GOTO 3410
3480 IF ( INSTR(I$,"NOTE") OR INSTR(I$,"PAPER") ) <>0
AND ( INSTR(I$,"BLOOD") OR INSTR(I$,"PRINT") )
PT=PT+3:CR=1096:GOSUB 1000:GOTO 3410
3490 IF ( INSTR(I$,"GARBAGE") OR INSTR(I$,"EATEN") OR
INSTR(I$,"THROW") ) <>0
AND ( INSTR(I$,"BREAKFAST") OR INSTR(I$,"EGGS") OR
INSTR(I$,"SAUSAGE") )
PT=PT+3:U(3)=2:CR=1098:GOSUB 1000:GOTO 3410
3500 IF ( INSTR(I$,"STEP") OR INSTR(I$,"PRINT") ) <>0
AND ( INSTR(I$,"WINDOW") OR INSTR(I$,"SNOW") OR
INSTR(I$,"ESCAPE") OR INSTR(I$,"STREET") )
PT=PT+2:CR=1102:GOSUB 1000:GOTO 3410
3510 IF ( INSTR(I$,"PHONE") OR INSTR(I$,"RECEIVER") )<>0 AND
( INSTR(I$,"HUNG") OR INSTR(I$,"HOOK")
OR INSTR(I$,"RECEIVER") )
PT=PT+3:U(0)=2:CR=1103:GOSUB 1000:GOTO 3410
3520 IF INSTR(I$,"BLACKWELL") <>0 AND
( INSTR(I$,"FINANC") OR INSTR(I$,"TROUBLE") OR
INSTR(I$,"MONEY") OR INSTR(I$,"FIRM") )
PT=PT+2:CR=1105:GOSUB 1000:GOTO 3410
3530 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$,"SURPRISE") OR INSTR(I$,"REACTION") OR
INSTR(I$,"NUMBER") )
PT=PT+2:CR=1106:GOSUB 1000:GOTO 3410
3550 IF INSTR(I$,"TICKET")=0 GOTO 3568
3552 IF FA AND FB AND FD=0 THEN
CR=2181:GOSUB 1000:GOTO 3410
3554 IF FB AND FC THEN
HE=HE+3:CR=1111:GOSUB 1000:GOTO 3410
3556 IF FD THEN
HE=HE+3:CR=1109:GOSUB 1000:GOTO 3410
3558 IF FC THEN
CR=1181:GOSUB 1000:GOTO 3410
3560 IF FB THEN
CR=2180:GOSUB 1000:GOTO 3410
3562 CR=1180:GOSUB 1000:GOTO 3410
3568 D$=""
3570 IF INSTR(I$,"BLACKWELL")<>0
AND INSTR(I$,"NOTE")
HE=HE+3:CR=1112:GOSUB 1000:GOTO 3410
3580 IF INSTR(I$,"RODNEY")<>0 AND INSTR(I$,"COFFEE")<>0
AND ( INSTR(I$,"INSOMNIA") OR INSTR(I$,"SLEEP") OR
INSTR(I$,"WAKE") OR INSTR(I$," BED ") OR
INSTR(I$,"SUPPER") )
PT=PT+2:CR=1113:GOSUB 1000:GOTO 3410
3590 IF ( INSTR(I$," PANT") OR INSTR(I$,"TROUSER") OR
INSTR(I$,"CUFF") )<>0
AND ( INSTR(I$," MATER") OR INSTR(I$,"FUZZY") OR
INSTR(I$,"PIECE") OR INSTR(I$,"BROWN") )
HE=HE+3:CR=1135:GOSUB 1000:GOTO 3410
3600 IF INSTR(I$,"WRIT")<>0
AND INSTR(I$," NOTE")<>0
AND ( INSTR(I$,"DIARY") OR INSTR(I$,"RODNEY") )
PT=PT+2:CR=1134:GOSUB 1000:GOTO 3410
3610 IF INSTR(I$,"WINDOW")<>0
AND ( INSTR(I$,"OPEN") OR INSTR(I$,"CLOSE") OR
INSTR(I$,"LOCK") OR INSTR(I$,"LATCH") )
PT=PT+2:CR=1137:GOSUB 1000:GOTO 3410
3620 IF INSTR(I$,"PAPER") <>0 AND
( INSTR(I$,"TODAY") OR INSTR(I$,"THIS MORN") )
PT=PT+2:CR=1142:GOSUB 1000:GOTO 3410
3630 IF INSTR(I$,"DIARY")<>0 AND INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$," DAYS ") OR INSTR(I$," TIME ") OR INSTR(I$,"YEAR")
OR INSTR(I$," LIE") OR INSTR(I$,"LYING") OR INSTR(I$,"SAID") )
PT=PT+2:CR=1154:GOSUB 1000:GOTO 3410
3640 IF INSTR(I$," DOUCHES") OR INSTR(I$," CONSTAB") OR
INSTR(I$,"CONSTIB")
CR=2062:GOSUB 1000:GOTO 3410
3650 IF INSTR(I$,"COLD")<>0 AND
( INSTR(I$,"ROOM") OR INSTR(I$,"FLAT") )
CR=2023:GOSUB 1000:GOTO 3410
3660 IF INSTR(I$,"BLACKWELL")<>0 AND INSTR(I$,"BLOOD")<>0 AND
( INSTR(I$,"THUMB") OR INSTR(I$,"NAIL") OR INSTR(I$,"HAND") )
CR=1183:GOSUB 1000:GOTO 3410
3670 IF INSTR(I$," HINT") OR INSTR(I$," HELP")
CR=1187:GOSUB 1000:GOTO 3410
3680 IF INSTR(I$,"BLACKWELL")<>0 AND
( INSTR(I$," TIRED") OR INSTR(I$,"HAGGARD") OR
INSTR(I$," FATIG") )
CR=1191:GOSUB 1000:GOTO 3410
3960 IF INSTR(I$," YES ") PRINT "TELL US.": GOTO 3440
3970 IF ( INSTR(I$," HIM ") OR INSTR(I$," HE ") OR
INSTR(I$," HIS ") OR INSTR(I$,"HE'S") )<>0 AND
( INSTR(I$,"BLACKWELL") OR INSTR(I$,"RODNEY") )=0
CR=1115:GOSUB 1000:GOTO 3415
3980 IF ( INSTR(I$,"DON'T") OR INSTR(I$,"DONT") OR
INSTR(I$,"CAN'T") OR INSTR(I$,"HAVEN'T") OR
INSTR(I$," NO ") OR INSTR(I$," NOT ") OR
INSTR(I$," NONE ") OR INSTR(I$,"NOTHING") )<>0 AND
LI<20
GOTO 3994
3985 IF LI<16 THEN CR=1155:GOSUB 1000:GOTO 3410
3990 GOSUB 700:GOTO 3415
3994 IF S6=5 THEN S6=1 :ELSE S6=S6+1
3995
IF S6=0 CR=1101 :ELSE
IF S6=1 CR=1152 :ELSE
IF S6=2 CR=2152 :ELSE
IF S6=3 CR=3152 :ELSE
IF S6=4 CR=1153 :ELSE
IF S6=5 CR=2153
3996 GOSUB 1000:GOTO 2010
4000 IF LP=0 PRINT "
LORD COLIN: "; :ELSE PRINT
4005 LP=1
4010 IF PT<=LL AND HE>HL AND Q1=0
THEN Q1=1:CR=1144:GOSUB 1000:PRINT:GOTO 3440
4020 IF PT<=LL AND HE>HL AND Q1=1
THEN CR=145+1000*RND(2):GOSUB 1000:PRINT:GOTO 3440
4030 IF PT>LL AND HE<=HL AND Q2=0
THEN Q2=1:CR=1146:GOSUB 1000:PRINT:GOTO 3440
4040 IF PT>LL AND HE<=HL AND Q2=1 AND Q4=0
THEN CR=1147+Q3:IF Q3=4 THEN Q3=0 :ELSE Q3=Q3+1:
GOSUB 1000:PRINT:Q4=1:GOTO 2010
4050 IF PT>LL AND HE<=HL AND Q2=1 AND Q4=1
THEN CR=150+1000*RND(5):GOSUB 1000:PRINT:Q4=0:GOTO 3440
4060 IF PT>LL AND HE>HL
THEN CR=1118:GOSUB 1000:PRINT
4100 GOTO 4100
------------------------------------------------------------------------------------------------------
vvv erreur de lecture dans le token n°ligne!
N° de lignes erronés.
------------------------------------------------------------------------------------------------------
8224 INSTR(I$," HE ") OR INSTR(I$,"ON HE'S ")
CR=1115:GOSUB 1000:GOTO 34105CLSLET IF INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR
INSTR(I$,"HAVEN'T") OR INSTR(I$," NI")
R=1101:GOSUB 1000:GOTO 2010
3990 GOSUB 550:GOTO 3410
4000 IF S3=0 S3=1:CR=1116:GOSUB 1000
PRINT 3*PT;:CR=2116:GOSUB 100
:ELSE CR=1095:GOSUB 1000:PRINT 3*PP;:C=2095:GOSUB 1000
4040 GOSUB 1800:LP=0
4050 IF INSTR(I$,"CLOSE") OR INSTR(I$,"DON'T ) OR
INSTR(I$,"CAN'T") OR INSTR(I$,"WON'T") OR
INSTR(I$,"HAVEN'Q") SET INSTR(I$," NO")
GOTO 4090 :ELSE GOTO 3415
4090 PRINT "
LORD PETER: ";:
CR=1118:GOSUB 000:PRINT 3*PT;: CR=2118:GOSUB 1000
4100 GOTO 4100
Re: [TRS-80] Local Call for Death, source Basic altéré
Merci.
Le code Basic je l'avais : http://willus.com/trs80/?-a+2+-p+126566+-f+2
Je l’obtiens aussi à partir du Basic de l'émulateur TRS-80 avec : SAVE "Nom_du_fichier/BAS:1",A et je l'extrais du DSK avec TRSTools : http://www.trs-80emulators.com/trstools/
C'est bien cette partie du code qui pose problème :
Sur le site du source Basic, http://willus.com/trs80/?-a+6+-p+126566+-f+2 : si je choisis l'affichage Hex file, il y a ça à la fin du listing :Tous les jeux de R. Larfore semblent avoir le même problème.
Est-ce que les fichiers extraits de l'original, que j'utilise avec l'émulateur, ont été altérés lors de la copie par une protection, ou bien est-ce que lors de l’exécution, le programme remet tout dans l'ordre ? (La variable Globale S3, n'est utilisée que dans cette partie altérée du code.)
Il faudrait savoir si le jeu sous émulateur avec le DSK est complet ou non.
Pour obtenir les saisies valides, tu regardes les Or et AND des INSTR() dans le source :
BLACKWELL/BUSINESS CARD/ADDRESS
BLACKWELL BLOOD THUMB/NAIL/HAND
Une saisie valide est donc :
BLACKWELL CARD ou BLACKWELL ADDRESS ou BUSINESS CARD ou BUSINESS ADDRESS mais pas BUISNESS ni ADDRESS.
BLACKWELL BLOOD THUMB ou NAIL ou HAND mais pas BLACKWELL BLOOD !
J'ai mis un peu de temps avant de comprendre qu'il fallait saisir 'room' pour ré-afficher le lieu et donc la liste des objets examinables.
Bon, Il faut ABSOLUMENT restaurer l'intégrité de ce source ; mais comment ?
Là, ils doivent savoir, mais mon anglais est bien trop mauvais :
http://www.trs-80.com/wordpress/zaps-pa ... s/#memsize
http://www.classic-computers.org.nz/sys ... rchive.htm
Ou peut-être simplement demander à http://willus.com/, à quoi correspond, sur certains Sources Basic affichés sur son site :
Le code Basic je l'avais : http://willus.com/trs80/?-a+2+-p+126566+-f+2
Je l’obtiens aussi à partir du Basic de l'émulateur TRS-80 avec : SAVE "Nom_du_fichier/BAS:1",A et je l'extrais du DSK avec TRSTools : http://www.trs-80emulators.com/trstools/
C'est bien cette partie du code qui pose problème :
Code : Tout sélectionner
------------------------------------------------------------------------------------------------------
vvv erreur de lecture dans le token n°ligne!
N° de lignes erronés.
------------------------------------------------------------------------------------------------------
8224 INSTR(I$," HE ") OR INSTR(I$,"ON HE'S ")
CR=1115:GOSUB 1000:GOTO 34105CLSLET IF INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR
INSTR(I$,"HAVEN'T") OR INSTR(I$," NI")
R=1101:GOSUB 1000:GOTO 2010
3990 GOSUB 550:GOTO 3410
4000 IF S3=0 S3=1:CR=1116:GOSUB 1000
PRINT 3*PT;:CR=2116:GOSUB 100
:ELSE CR=1095:GOSUB 1000:PRINT 3*PP;:C=2095:GOSUB 1000
4040 GOSUB 1800:LP=0
4050 IF INSTR(I$,"CLOSE") OR INSTR(I$,"DON'T ) OR
INSTR(I$,"CAN'T") OR INSTR(I$,"WON'T") OR
INSTR(I$,"HAVEN'Q") SET INSTR(I$," NO")
GOTO 4090 :ELSE GOTO 3415
4090 PRINT "
LORD PETER: ";:
CR=1118:GOSUB 000:PRINT 3*PT;: CR=2118:GOSUB 1000
4100 GOTO 4100
Code : Tout sélectionner
9001 'RELOCATABLE Z-80 CODE: NH$Õ"3" H$ÕH3$
9002 POKE 16526,0:POKE 16527,256
9003 DEFINT A,I:READAD,AS:FORI=1TOAS:READAV:POKEAD+I-1,AV:NEXTI:RETURN
9004 DATA 0,-65536
Est-ce que les fichiers extraits de l'original, que j'utilise avec l'émulateur, ont été altérés lors de la copie par une protection, ou bien est-ce que lors de l’exécution, le programme remet tout dans l'ordre ? (La variable Globale S3, n'est utilisée que dans cette partie altérée du code.)
Il faudrait savoir si le jeu sous émulateur avec le DSK est complet ou non.
Même avec le source sous les yeux, cela reste difficile : je connais le coupable, mais faut-il encore le prouver !farvardin a écrit :Je vais essayer de reprendre ma partie de cette excellente fiction interactive
Pour obtenir les saisies valides, tu regardes les Or et AND des INSTR() dans le source :
Code : Tout sélectionner
If (INSTR(I$,"BLACKWELL") Or INSTR(I$,"BUSINESS") ) <> 0 And (INSTR(I$," CARD ") Or INSTR(I$,"ADDRESS") )
If INSTR(I$,"BLACKWELL") <> 0 And INSTR(I$,"BLOOD") <> 0 And ( INSTR(I$,"THUMB") Or INSTR(I$,"NAIL") Or INSTR(I$,"HAND") )
BLACKWELL BLOOD THUMB/NAIL/HAND
Une saisie valide est donc :
BLACKWELL CARD ou BLACKWELL ADDRESS ou BUSINESS CARD ou BUSINESS ADDRESS mais pas BUISNESS ni ADDRESS.
BLACKWELL BLOOD THUMB ou NAIL ou HAND mais pas BLACKWELL BLOOD !
J'ai mis un peu de temps avant de comprendre qu'il fallait saisir 'room' pour ré-afficher le lieu et donc la liste des objets examinables.
Bon, Il faut ABSOLUMENT restaurer l'intégrité de ce source ; mais comment ?
Là, ils doivent savoir, mais mon anglais est bien trop mauvais :
http://www.trs-80.com/wordpress/zaps-pa ... s/#memsize
http://www.classic-computers.org.nz/sys ... rchive.htm
Ou peut-être simplement demander à http://willus.com/, à quoi correspond, sur certains Sources Basic affichés sur son site :
Code : Tout sélectionner
9001 'RELOCATABLE Z-80 CODE:
9002 POKE 16526,0:POKE 16527,256
9003 DEFINT A,I:READAD,AS:FORI=1TOAS:READAV:POKEAD+I-1,AV:NEXTI:RETURN
9004 DATA 0,-65536
Re: [TRS-80] Local Call for Death, source Basic altéré
J'ai trouvé le morceau de code est dans dans le fichier "Alpha" !
Le programme basic auto-patch 255 octets contenu dans ce fichier, vers le programme basic...
ficher Alpha:
Code : Tout sélectionner
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
0000BFF0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 ..
0000C000 00 30 30 30 3A 8D 33 34 31 30 01 35 84 8C 0F 8F .000:3410.5„Œ.
0000C010 C5 28 49 24 2C 22 44 4F 4E 27 54 22 29 20 D3 20 Å(I$,"DON'T") Ó
0000C020 C5 28 49 24 2C 22 43 41 4E 27 54 22 29 20 D3 0A Å(I$,"CAN'T") Ó.
0000C030 C5 28 49 24 2C 22 48 41 56 45 4E 27 54 22 29 20 Å(I$,"HAVEN'T")
0000C040 D3 20 C5 28 49 24 2C 22 20 4E 49 22 29 0A 03 52 Ó Å(I$," NI")..R
0000C050 D5 31 31 30 31 3A 91 31 30 30 30 3A 8D 32 30 31 Õ1101:‘1000:201
0000C060 30 00 4F 97 96 0F 91 35 35 30 3A 8D 33 34 31 30 0.O—–.‘550:3410
0000C070 00 B9 97 A0 0F 8F 20 53 33 D5 30 20 53 33 D5 31 .¹— . S3Õ0 S3Õ1
0000C080 3A 43 52 D5 31 31 31 36 3A 91 31 30 30 30 0A 0A :CRÕ1116:‘1000..
0000C090 20 20 20 20 20 20 20 20 20 B2 20 33 CF 50 54 3B ² 3ÏPT;
0000C0A0 3A 43 52 D5 32 31 31 36 3A 91 31 30 10 30 0A 20 :CRÕ2116:‘10.0.
0000C0B0 20 20 20 3A 95 20 20 43 52 D5 31 30 39 35 3A 91 :• CRÕ1095:‘
0000C0C0 31 30 30 30 3A B2 20 33 CF 50 50 3B 3A 43 02 D5 1000:² 3ÏPP;:C.Õ
0000C0D0 32 30 39 35 3A 91 31 30 30 30 00 C8 97 C8 0F 91 2095:‘1000.È—È.‘
0000C0E0 31 38 30 30 3A 4C 50 D5 30 00 4C 98 D2 0F 8F C5 1800:LPÕ0.L˜Ò.Å
0000C0F0 28 49 24 2C 22 43 4C 4F 53 45 22 29 20 D3 20 C5 (I$,"CLOSE") Ó Å
0000C100 28 85 00 41 4C 54 48 4F 55 47 48 20 54 48 45 20 (….ALTHOUGH THE
0000C110 46 4C 41 54 20 49 53 20 44 46 49 4E 49 54 45 4C FLAT IS DFINITEL
0000C120 59 20 4D 45 53 53 59 20 54 48 41 54 20 44 4F 45 Y MESSY THAT DOE
0000C130 53 4E 27 54 20 53 48 4F 57 0A 54 48 45 52 45 20 SN'T SHOW.THERE
0000C140 57 45 52 45 20 53 49 47 4E 53 20 4F 46 20 41 20 WERE SIGNS OF A
Code : Tout sélectionner
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00003090 D5 31 31 31 38 3A 91 31 30 30 30 3A B2 00 84 97 Õ1118:‘1000:².„—
AAAA ----- code ajouté -------AAAAA
000030A0 04 10 8D 34 31 30 30 00 17 98 20 20 20 20 20 20 ..4100..˜
vvvvv vvvvvv
000030B0 20 20 C5 28 49 24 2C 22 20 48 45 20 22 29 20 D3 Å(I$," HE ") Ó
Code : Tout sélectionner
:GOTO 34105CLSLET
IF INSTR(I$,"DON'T") OR INSTR(I$,"CAN'T") OR
INSTR(I$,"HAVEN'T") OR INSTR(I$," NI")
R=1101:GOSUB 1000:GOTO 2010
3990 GOSUB 550:GOTO 3410
3840 IF S3=0 S3=1:CR=1116:GOSUB 1000
PRINT 3*PT;:CR=2116:GOSUB 100
:ELSE CR=1095:GOSUB 1000:PRINT 3*PP;:C=2095:GOSUB 1000
4040 GOSUB 1800:LP=0
4050 IF INSTR(I$,"CLOSE") OR INSTR(CMD INSTR(I$," HE ") OR INSTR(I$,"ON HE'S ")
CR=1115:GOSUB 1000:GOTO 3410
Re: [TRS-80] Local Call for Death, source Basic altéré
Oui, le fichier Alpha est la base de données du texte et elle est divisée en 194 blocs de 256 octets. Le bloc 193 est en effet un bloc de Basic, mais il est aussi altéré !?
Si le fichier est patché, où est donc le bout de code qui le « dépatche » ? Sur le support original !?
Si le fichier est patché, où est donc le bout de code qui le « dépatche » ? Sur le support original !?
Re: [TRS-80] Local Call for Death, source Basic altéré
Salut,
Le problème n'est pas tant le patch au niveau Basic, que la protection physique du jeu.
En effet, la protection limite le nombre de copies à une sauvegarde (de sécurité) du jeu!
regardons le catalogue:
Donc, le jeu a été copié sur lui même... au moins une fois sur le disque original. [fichier STORY]
Le système limite donc la copie du programme basic.
Le disque est donc corrompu au niveau de la lecture des clusters.
Ce qui peut expliquer l'incohérence de l'adressage de la table d'allocation des clusters sur le fichier basic et ascii.
Il serai préférable de prendre une autre image disque non modifiée, afin de récupérer les fichiers intacts.
Le fichier effacé "STORY" est moins grand, et s'arrête en ligne 4100... ce qui veut peut-être dire que l'original a été effacé par le fichier "STORY" réécrit par dessus!
Nous avons aussi un fichier "DOCLIST.BAS" :
Lui aussi effacé, et corrompu.
Le problème n'est pas tant le patch au niveau Basic, que la protection physique du jeu.
En effet, la protection limite le nombre de copies à une sauvegarde (de sécurité) du jeu!
regardons le catalogue:
Code : Tout sélectionner
Offset 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
00044032 5E 00 00 00 00 42 4F 4F 54 20 20 20 20 53 59 53 ^....BOOT SYS
00044048 60 7F 1F B2 05 00 00 00 FF FF FF FF FF FF FF FF `.²....ÿÿÿÿÿÿÿÿ
00044064 10 00 00 00 00 41 4C 50 48 41 20 20 20 20 20 20 .....ALPHA
00044080 96 42 96 42 C2 00 00 3F 10 20 12 05 FF FF FF FF –B–BÂ..?. ..ÿÿÿÿ
00044096 10 00 00 8D 00 53 54 4F 52 59 20 20 20 20 20 20 ....STORY
00044112 96 42 96 42 32 00 15 09 FF FF FF FF FF FF FF FF –B–B2...ÿÿÿÿÿÿÿÿ
00044128 00 00 00 8D 00 53 54 4F 52 59 20 20 20 20 20 20 ....STORY
00044144 96 42 96 42 32 00 16 29 FF FF FF FF FF FF FF FF –B–B2..)ÿÿÿÿÿÿÿÿ
00044160 00 00 00 EB 00 53 54 52 4B 46 52 43 20 43 4D 44 ...ë.STRKFRC CMD
00044176 96 42 96 42 3E 00 1B 2C FF FF FF FF FF FF FF FF –B–B>..,ÿÿÿÿÿÿÿÿ
00044192 00 00 00 BD 00 53 54 41 52 43 52 45 53 43 4D 44 ...½.STARCRESCMD
00044208 96 42 96 42 36 00 22 0A FF FF FF FF FF FF FF FF –B–B6.".ÿÿÿÿÿÿÿÿ
00044224 00 00 00 1E 00 53 54 45 4C 4C 41 20 20 43 4D 44 .....STELLA CMD
00044240 96 42 96 42 37 00 27 2A FF FF FF FF FF FF FF FF –B–B7.'*ÿÿÿÿÿÿÿÿ
00044256 00 00 00 20 00 54 49 4D 45 42 4E 44 31 43 4D 44 ... .TIMEBND1CMD
00044272 96 42 96 42 88 00 2D 1B FF FF FF FF FF FF FF FF –B–Bˆ.-.ÿÿÿÿÿÿÿÿ
00044288 5D 00 00 00 00 44 49 52 20 20 20 20 20 53 59 53 ]....DIR SYS
00044304 A7 1D F9 E5 0A 00 11 01 FF FF FF FF FF FF FF FF §.ùå....ÿÿÿÿÿÿÿÿ
00044320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Code : Tout sélectionner
Offset 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
00101120 41 43 4B 55 50 20 44 49 53 4B 20 54 48 45 4E 20 ACKUP DISK THEN
00101136 54 52 59 20 41 47 41 49 4E 0D 00 4E 4F 20 4D 4F TRY AGAIN..NO MO
00101152 52 45 20 43 4F 50 49 45 53 20 41 4C 4C 4F 57 45 RE COPIES ALLOWE
00101168 44 00 3E 05 32 E4 42 2A E2 42 22 E0 42 CD 63 46 D.>.2äB*âB"àBÍcF
00101184 C2 54 46 2A B2 5E 24 22 E0 42 CD 89 42 C2 54 46 ÂTF*²^$"àB͉BÂTF
00101200 CD Í
Le disque est donc corrompu au niveau de la lecture des clusters.
Ce qui peut expliquer l'incohérence de l'adressage de la table d'allocation des clusters sur le fichier basic et ascii.
Il serai préférable de prendre une autre image disque non modifiée, afin de récupérer les fichiers intacts.
Le fichier effacé "STORY" est moins grand, et s'arrête en ligne 4100... ce qui veut peut-être dire que l'original a été effacé par le fichier "STORY" réécrit par dessus!
Nous avons aussi un fichier "DOCLIST.BAS" :
Code : Tout sélectionner
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
0000B000 00 20 00 00 00 44 4F 43 4C 49 53 54 20 42 41 53 . ...DOCLIST BAS
0000B010 96 42 96 42 11 00 03 03 FF FF FF FF FF FF FF FF –B–B....ÿÿÿÿÿÿÿÿ
Lui aussi effacé, et corrompu.
Re: [TRS-80] Local Call for Death, source Basic altéré
Élémentaire, mon cher Watson ! Et félicitations : l’énigme semble enfin résolue ; ça a vraiment l'air d'être la bonne explication. (Explication, ma fois fort claire : j'ai vraiment l'impression d'avoir tout compris !)
Bon, reste à trouver l'original ; c'est pas gagné !
Merci pour ton aide.
Donc, ce qui voudrait dire, qu'il faudrait retrouver le jeu sur son support original et l'extraire pour en faire une nouvelle image DSK. Les copies que l'on trouve sur Internet semblent toutes identiques et corrompues. J'ai essayé de chercher pour voir si je trouvais une version Atari ou Apple du jeu, ou s'il était éventuellement sur une compilation de jeux Adventure International, mais rien !Xavier a écrit :Il serai préférable de prendre une autre image disque non modifiée, afin de récupérer les fichiers intacts.
Bon, reste à trouver l'original ; c'est pas gagné !
Merci pour ton aide.