vinxru wrote:Игра запускалась сразу сама. Я ничего не писал.
Действительно - запуск файлов автоматический после удачной загрузки...
Файлы в списке выше - "настоящие", то есть, судя по их звучанию, сформированы,
видимо, записью через звуковую карту.
Уровень сигнала - средненький слышны шумы и призвуки...
Но файлы действительно загружаются, хотя и через раз.
Видимо, удачно и точно сэмулированы все проблемы ввода с кассетного магнитофона.
Сигнал, сформированный утилитой
Sav2Wav.exe от этих файлов разительно отличается!
Он чистый, без шумов и призвуков, амплитуда большая, и загружаемый файл не запускается.
На слух заметна небольшая разница в частотах. Сигнал из-под утилиты чуть выше по частоте.
vinxru wrote:Дисковый Бейсик (UKNC_DBAS.wav) не запускался.
Наверное, он попал у тебя в неудачную фазу...
После
UKNC_VERT.wav, который короткий и загрузился без проблем, я сразу попробовал
UKNC_DBAS.wav
Он вполне нормально стартанул. А вот пара следующих файлов не стартанули, хотя и короткие...
Я немного поинтересовался, что это за файлы
*.SAV, которые мы грузим, в понятии
RT-11.
Грубо говоря - это просто состояние памяти, сохраненное на диск опцией
SAVE с указанными адресами.
Но информация о их запуске немного противоречива:
В RT-11 ... обычные программы имеют расширение .sav, представляют собой абсолютные загружаемые модули и грузятся всегда с адреса 01000. Ниже этого магического адреса находятся вектора прерываний и стек программы. Сама операционная система вместе с драйверами размещается в верхних адресах памяти. Естественно, вы не можете загрузить одновременно два .sav-файла.
Если говорить о программах из RT-11 формата .SAV, то она загружается с начала памяти. В RT-11 файлы делятся по блокам размером 512 байт, блоки нумеруются с нуля. При этом программу можно разделить на две части: нулевой блок (первые 512 байт или 256 слов) и остальная часть. В нулевом блоке в частности находятся такие переменные, как стартовый адрес программы (смещение 000040), начальное положение указателя стека (000042), конечный адрес памяти, занимаемый программой (000050). В диапазоне 000500-000777 может находиться и исполняемый код. Начиная с первого блока располагается собственно программа.
Таким образом структура загрузчика должна быть такой:
Code: Select all
000000 000240 NOP
000002 000440 BR 000104
......
000040 ****** стартовый адрес
000042 ****** адрес начала стека
......
000050 ****** конечный адрес программы
......
000100 000102 .WORD 102
000102 000002 RTI
000104 собственно отсюда располагается загрузчик, загружающий остальную часть программы, и запускающий ее
......
000500 здесь располагается информация с нулевого блока
Вот это более на правду похоже - я смотрел память после неудачных загрузок - действительно,
грузится с
000500.