Передовица » Software » Меню и МикроДос » Быстропускалка

Быстропускалка

Скачать архив с дисками.

Автор: Раводин Владимир Олегович. Томск 2015 год.

Идея такой программы пришла при наполнении раздела "игротека" образами дисков. Располагается в первых дорожках диска 840Кб. Предназначена для быстрого старта на любом исполнении ПЭВМ Агат и загрузки файлов типа В. Кроме того, имеет просмотрщик файлов типа Т (комментарии, инструкции к играм).

Как это работает
1) Сразу после чтения секторов 0/3 определяет конфигурацию и делает инициализацию памяти. При этом выводятся циферки - это эмпирика определения архитектуры. Считает контрольные суммы пзу. Если совпадений мало с какой либо архитектурой - скажет что архитектура не опознана.

2) Считывает остальную свою часть наверх в ПЗУ. Память для программ доступна от $400 до $BFFF.

3) Ищет в каталоге все защищенные В и Т файлы, со снятой звездочкой не показывает. Если файл на диске только один - сразу переходит к его запуску.

4) Выводит сверху имя тома текущего диска и далее список файлов (максимально 29).

Текстовый просмотрщик.
Понимает любые Т-файлы размером до 30Кб - максимальный объём и число экранов (листаемых) - 128.

Что сделано для убыстрения
Скроллинг меню не предусмотрен - только то, что влезает на экран. Сделать скроллинг - это заметно усложнит код (надо будет имена файлов где-то в памяти хранить отдельно, сейчас они сразу с диска следуют на экран и никуда больше). Т.е. она при чтении каталога уже запоминает служебку и запускает файл не по имени, а прямо по координатам первого Т/С-списка. Это значит что если после чтения каталога поменять диск, нужно для перечтения нажать "РЕД". Если просто сменить диск, а потом нажать ввод, то получится чушь какая нибудь, даже если на другом диске есть файл с таким же именем.

Расставлены сектора каталога с зазорами, чтобы быстрее читался 17/3 17/6 17/9........ Чтобы после чтения одного сектора каталога, программа успевала его разобрать, и когда запросит следующий чтобы головка как раз к нему уже приближалась.

Шаблон диска так настроен, чтобы новые файлы раскладывались от каталога (указатель на выделение секторов стоит на 17) - это чтоб головой не дрыгал сильно при чтении (после чтения быстропускалки головка на 17 треке).

Рекомендации по подготовке дисков на базе быстропускалки (для максимальной скорости чтения)
Пустой шаблон template.DSK заполнять без промежуточных удалений, чтобы не допускать на диске неиспользуемых участков. Записывать не более 35 файлов, чтобы не расширять каталог. Пока отлаживается сборник - можно действовать как угодно. Ну а уже в финале просто переписать всё на чистую копию в соответствии с Рекомендацией.

Дополнительные возможности
Если первым файлом записать дамп памяти в формате Т32 под именем logo - это будет фоном меню. Размер окна для списка имён файлов настраивается в самом начале сектора 0/4. С какой строки выводить каталог и сколько строк выводить*2. Для примера смотрите диск example.DSK, значения 07 26.

Можно подготавливать картинки, в формате видеопамяти, для быстрого просмотра программой. Просто вписать в начало файла включение соответствующего режима, ожидание нажатия любой клавиши и команду RTS. RTS предусмотрено как вариант возврата (т.е. быстропускалка не будет перечитываться тогда, а только каталог заново перечитает,на случай если диск меняли). Такой способ немного "мусорит" в левой верхней части изображения, но файл останется в формате привычном для большинства редакторов.

STA $XXXX -- включение соответствующего режима.
LDA $C000 -- чтение порта клавиатуры
BPL $-5   -- возврат к предыдущей команде, если старший бит = 0
BIT $C010 -- очистка регистра клавиатуры (чтобы следующий запрос не прочитал уже обработанную кнопку)
RTS       -- выход

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *