Программа "OPEN 2"
-------------------------------
(С) Кузьма Феськов,
г. Абакан, 1995.
--------------------------------
Эта программа сделана по ана-
логии с программой "OPEN" (Андрея
Алексеева), опубликованной в
ZX-РЕВЮ-93, N1-2, стр.27, и может
быть объединена с ней при помощи
MERGE.
Все чаще на рынках продаются
дискеты с "экзотическими" загруз-
чиками "boot". Вот и мне попалась
одна из таких дискет. Все было бы
хорошо, если бы однажды этот boot
не дал ошибку: в результате прог-
раммы с диска оказались недоступ-
ными, так как ни один другой boot
кроме "родного" не мог загрузить
эти программы. Дело в том, что в
каталоге диска изменены данные о
начале файла на диске: стартовые
дорожка и сектор (boot их изменя-
ет при загрузке).
Предлагаемая программа поможет
Вам восстановить исходные данные
о начале файлов. Но сработает она
только в том случае, если длина
каждого файла в секторах указана
правильно. После обработки диска
этой программой, Вы сможете заг-
ружать игры другими boot'ами и
копировать их на другой диск.
Ниже приводится листинг прог-
раммы:
2 BORDER 1: PAPER 1: INK 3: C
LEAR 39999
3 RESTORE : FOR a=40000 TO 40
012: READ b: POKE a,b: NEXT a: D
ATA 33,0,171,17,0,0,1,5,9,205,19
,61,201
100 CLS : PRINT #0;"Insert disk
and press any key": PAUSE 0
200 CLS : RANDOMIZE USR 4e4
245 GO SUB 2100
300 PRINT #0;"Owerwrite track <
0> (Y/N) ?": PAUSE 0
310 IF INKEY$="y" OR INKEY$="Y"
THEN POKE 40007,6: RANDOMIZE U
SR 4e4
320 STOP
2100 REM Start Trk & Sec
2110 LET a1=43790: LET a=43776:
LET trk=1: LET sec=0: POKE a1,se
c: POKE (a1+1),trk: LET a1=a1+2
2120 IF PEEK a=0 THEN CLS : RET
URN
2130 LET n$="": FOR a=a TO a+7:
LET n$=n$+CHR$ PEEK a: NEXT a: L
ET t$=CHR$ PEEK a: LET a=a+5: LE
T q=PEEK a: LET a=a+1: LET sec1=
PEEK a: LET a=a+1: LET tr=PEEK a
: LET a=a+1
2140 CLS : PRINT AT 0,0;n$;AT 0,
9;t$;AT 2,0;"Track & Sector from
disk:"
2150 PRINT AT 4,2;tr;TAB 10;sec1
;AT 6,0;"Track & Sector really:"
2160 PRINT AT 8,2;trk;TAB 10;sec
2170 BEEP .1,20: PAUSE 50: FOR f
=1 TO q
2180 LET sec=sec+1
2190 IF sec=16 THEN LET trk=trk
+1: LET sec=0
2200 PRINT AT 8,2;TAB 32;AT 8,2;
trk;TAB 10;sec
2210 NEXT f
2220 LET a1=a1+14: POKE a1,sec
2230 LET a1=a1+1: POKE a1,trk
2240 LET a1=a1+1
2250 GO TO 2120
И еще одно замечание. Часто в
таких "экзотических" загрузчиках
помимо порчи данных о начале фай-
ла заменяют еще тип файла ("В"
или "С" на любой другой символ).
С этим придется бороться вручную,
при помощи программы типа
ДИСК-ДОКТОР. Задача немного упро-
щается тем, что вероятнее всего,
Бейсик-загрузчик стоит первым.
Комментарий ИНФОРКОМА.
Автор назвал эту программу
"OPEN 2" по аналогии с опублико-
ванной в ZX-РЕВЮ-93, N1-2,
стр.27, он предлагает объединить
эти программы при помощи MERGE и
использовать совместно. Но мы бы
не советовали это делать. Указан-
ная программа "OPEN" (Андрея
Алексеева) при расчете истиной
длины файла в секторах за основу
берет как раз разность стартовых
секторов двух соседних файлов, а
именно эта информация искажена
"экзотическим" boot'ом. Так что
при совместной работе этих прог-
рамм неизбежно возникнет ситуа-
ция, когда одни данные "восста-
навливаются" при помощи запорчен-
ных других данных, в результате
чего Вы рискуете навсегда распро-
щаться с испорченным диском.
Восстановление диска после обра-
ботки защищающими программами это
всегда творческая проблема. Поэ-
тому, если Вас постигла такая
неприятность, о которой повеству-
ет Кузьма, то во-первых надо ско-
пировать весь диск каким-либо ко-
пировщиком типа ДИСК В ДИСК, а
затем, уже с копией можно вытво-
рять все что угодно. И первое,
что надо сделать, так это при по-
мощи ДИСК-ДОКТОРА попытаться ра-
зобраться в том, какие конкретно
данные каталога модифицированы, а
какие сохранены без изменения.
Здесь Вам помогут только Ваши
знания и интуиция. И только после
того, как Вы разберетесь, хотя бы
предположительно с этим делом,
надо решить, какую же программу
использовать для попытки восста-
новления (при ошибке мы ничего не
теряем, так как все операции вы-
полняем с копией дискеты).