Вообще, за счет этой манеры сборки программ из отдельных кусков, итоговый файл - это просто находка для цифрового археолога :)
Например, в "хвостах" модулей можно найти куски кода и даже целые процедуры от более ранних версий игры. Правда состыковать их с текущей версией не получится, поскольку используются другие адреса переменных.
Также тут встречаются отладочные куски кода, никем не вызываемые. Например, если загрузить игрушку и запустить с адреса $1300, то будет нарисовано просто звездное небо. Выход не предусмотрен, цикл вечный. Видимо, авторы так отлаживались.
Посмотрел "матроскопом" ресурсы игры, в надежде, что авторы оставили какие-то картинки, по которым их можно было бы опознать. Но нет. Зато стало видно эволюцию программных решений :)
Например, в начале игры лежит картинка со словом WAY, но шириной 23 байта (смещение 12489 от начала .fil). Видимо, заставка сначала собиралась из отдельных картинок. А потом авторы решили, что проще весь экран сохранить.
По смещению 20460 лежит картинка со словом TIME=. Видимо, в начале авторы хотели выводить надписи картинками. Есть еще прикол с тем, что картинки для цифр 0-9 встречаются два раза. То есть, авторы сначала хотели обойтись картинками, потом добавили цифры, а в конце концов добавили полноценный знакогенератор, в котором есть все символы с ASCII кодами от $20 до $5F.
Ну и еще нашелся кусок кода, возможно подтверждающий мою догадку о том, что управление в игрушке могло быть не с клавиатуры. Есть тут такой неиспользуемый кусок кода:
CODE_5CEE
JSR SUB_5676
LDA #$90
STA DATA_C0D0
CODE_5CF6
LDA KEYBOARD
CMP #$9B
BEQ CODE_5CF6
STA KBDSTROBE
LDA DATA_C0D3
STA DATA_8490
Интересен он тем, что из порта C0D3 читается некое значение и кладется в конец очереди команд ($8490). Клавиатура, как видно, тоже читается, но проверяется только клавиша РЕД. А в начале процедуры есть запись байта $90 в адрес $C0D0.
Что бы это могло значить? Если напрячь фантазию и предположить, что в 5 слоту у нас ячейка последовательного и параллельного интерфейса, а авторы перепутали местами $C0D0 и $C0D3, то тогда получается, что в начале процедуры ВВ55 программируется на ввод из порта A ($90 - это управляющее слово и его логично писать в $C0D3), а затем из порта А ($C0D0) читается команда для управления кораблем.
Короче, к порту A ВВ55 мог быть подключен джойстик. Возможно, через какую-то промежуточную схему, чтобы перекодировать направление в команду (команда, напомню, это цифра 0-3, указывающая направление движения), а может быть, сами команды были несколько другими и никакой схемы было и не нужно.