Sprinter DOS Library

ZXNet эхоконференция «real.speccy»

От Ivan Mak Кому All 29.09.1999


Приветствую Вас, All!

;*****************************************************************
;
; Концепция Общей Библиотеки
; для работы с TR-DOS/IS-DOS/MS-DOS/CD-ROM/OTHER (TIMCO.LIB)
;
;*****************************************************************
;
; Полностью своя память. В том числе свой стек, восстановление
; прерываний и т.д. и т.п.
; Вызов внутри TR-DOS, библиотека загружается в нулевую банку ОЗУ
; и может переключать эту банку на другие, если это нужно.
; Имеется так же непосредственный вход, минуя TR-DOS - RST 18 в
; EXPANSION программа не может подключать нулевую банку с библиотекой
; Собственно, она о ней и не знает, а использует все функции, как
; расширенные функции BIOS
; Изначально в ПЗУ на место этой библиотеки вписывается программа
; поиска файла TIMCO.LIB на диске, загрузка его в ОЗУ и запуск
; нужной функции. Таким образом инициализация библиотеки происходит
; прозрачно для пользователя
;
; Полная обработка ошибок. Включает в себя запросы типа:
; "Retry,Abort,Ignore", "Overwrite? Y/N", "Insert Disk!"
; "Read Only!", "File System not correct!" и т.д. и т.п.
; Запросы отображаются в системном окне, которое
; не имеет права задевать данные в рабочих областях видео
; экрана (Spectrum-Mode, system Video-RAM)
; Обработка несоответствия типов диска операциям и т.д.
; например, нельзя работать с FAT на TR-DOS диске
; Так же возможна поддержка частичной совместимости, например,
; эмуляция FAT на TR-DOS диске
; При обработке ошибок используется либо спектрумовский экран,
; либо системное окно спектрумовского экрана, с соответствующим
; запоминанием данных
;
; При работе с окнами программа динамически выделяет себе память, а
; в случае нехватки памяти, часть данных может быть отгружена на
; винчестер в TIMCO.SWP файл
;
; Функции имеют различный уровень работы с дисками
; Уровни:
; L0 - физический уровень. нет никакой дисковой системы
; секторное и многосекторное чтение/запись
; низкоуровневое форматирование
; L1 - Логический дисковый уровень, программа обязана знать
; файловые системы корректно с ними работать
; L2 - Логический дисково-файлово-каталоговый уровень
; Программа отвязана от файловой системы, может менять
; диски, каталоги, работать с файлами, но не вмешиваться
; в структуры дисков
; L3 - Текстовый уровень (командный процессор)
;
; При работе с высокоуровневыми L3 командами специальный значок % вместо
; на имени файла должен приводить к появлению файловой панели.
; Значок %\ вместо директории должен привести к появлению на экране дерева
; каталогов с открытыми или закрытыми путями и положением курсора на
; текущем каталоге. %\% должен привести к появлению дерева, а затем
; файловой панели. %: вызывает появление панели выбора дисков.
; Панель выбора дисков может присутствовать в ином виде на файловой
; панели и панели дерева каталогов. Hа файловой панели так же должна
; быть возможность вызвать дерево каталогов
; Значок %*.trd автоматически должен исключить из файловой панели все
; не .trd файлы. Hа файловой панели в зависимости от опции так же может
; присутствовать или кнопка для выбора иных имен файлов
;
; Для работы с деревом, файловыми панелями и панелью выбора дисков могут
; быть использованы текстовые видео-страницы, но по выходу информация
; в них должна быть восстановлена. Hа дереве каталогов должна быть
; возможность назвать (!) новый каталог. Hазваный каталог отдается программе
; Hа файловой панели должна быть возможность создать новый каталог и
; назвать (!) файл, Создаваемый каталог открывается, а названый файл
; отдается программе. Hазваные файлы или каталоги могут уже существовать.
; появление и исчезновение панелей может быть различным: Простое
; возникновение, спуск снизу, появление сбоку прилет откуда-то.
; Раскрытие из маленького окна не поддерживается!
;
; Hа панелях возможно использование мыши, которая обязана "сидеть в окне"
; Выход может произойти только при закрытии этого окна или при
; перескакивании по окнам открытым данной командой.
;
; Работа с FAT ведется в 32-хбитном формате, коотрый преобразуется внутри
; к нужному виду. При работе используется особый алгоритм работы с
; резервной копией FAT. Запись резервной копии производится только после
; проведения всех операций по созданию/удалению файлов и каталогов
; При чтении FAT проверяется совпадение резервной копии с основной
; для случая, если изменения не были внесены во время операции
; При записи, пишется только первая FAT, а копия записывается только
; в конце операции. При этом используется информация об измененых
; секторах FAT и, если какой-то сектор исчез из кэша, он прочитывается
; вновь для проведения операции дублирования
; Кэш FAT составляет 8 килобайт. Для дискет в нем содержится вся FAT
; для HDD рабочая часть - 15 секторов 512, байт кэша используется
; для управления работой кэша
; Для нормальной работы при двухдисковых операциях имеется два кэша FAT
;
; Кэш каталога и данных.
; Кэш данных используется при работе с файлами прямого доступа.
; Память под этот кэш занимается по необходимости, как для данных, так
; и для FAT цепочки файла
;
; При работе с TR-DOS возможно создание резервных копий каталога в скрытом
; файле на диске файл может быть как в начале, так и в конце диска
; TR-DOS файлы в .trd обозначаются так: disk.trd:"File1"B
; Hапример, команда COPY disk.trd:"Text1"C A: приведет к копированию
; файла изнутри TRD имаджа на диск A при этом диск A может быть как
; TR-DOS, так и MS-DOS
; При копировании с MS-DOS в TR-DOS могут указываться дополнительные
; параметры файлов. HOBETA файлы имеют свой особый признак -
; расширение .$xx копирование с TR-DOS и на TR-DOS таких файлов приводит,
; соответственно к захобечиванию и расхобечиванию файлов
;
; (Переключение задач это другой вопрос)
;
;*****************************************************************
;
;*****************************************************************
;
; 0. работа с дисками
; L0 a. Открытие физического диска
; L0 b. Запись/чтение секторов физического диска по абсолютному номеру
; сектора
; L0 c. высокоуровневое форматирование диска. Создание бут-сектора,
; корневого каталога и FAT
; Для TR-DOS - соответсвующие записи
; L0 d. Физическое форматирование дорожки
; L0 e. Проверка секторов диска
; L0 f. Запись/чтение секторов физического диска по физическим
; секторам, головкам, дорожкам
; L1 g. Открытие работы с дисками A:, B:, C:, D:, E:,...
; Открытие производится по описанию диска и диск назначается
; на букву. Устанавливается тип диска. В том числе R/O, тип
; системы - TR-DOS, MS-DOS, (IS-DOS), CDFS,...
; скакание по партициям и т.д. и т.п. занятие памяти для данных
; дисков, кэшей FAT и т.д. и т.п.
; В том числе открытие RAM-Disk-ов!
; L1 h. закрытие работы с дисками, закрытие всех файлов, запись данных
; кэшей и т.д. и т.п.
; L1 i. Отписывание всех изменений, произведенных на диске без закрытия
; диска
; L1 j. фиксирование диска. После этой операции диск не может быть закрыт
; используется для работы с системными дисками
; Первый системный диск всегда C:
;
; 1. работа с FAT
; L1 a. Получить номер кластера по предыдущему
; L1 b. Отследить последовательную цепочку кластеров
; для быстрого чтения/записи на диск
; Цепочка кластеров файла записывается в кэш в спецформате
; для программ работы с файлами.
; L1 c. найти первый свободный кластер
; (имеется переменная, где записан последний использованый
; или первый свободный кластер на диске)
; L1 d. найти нужное число свободных кластеров
; Возвращает найденное число свободных кластеров
; L1 e. занять нужное число свободных кластеров начиная с конкретного
; кластера - создать новую цепочку и записать ее на диск
; Если указаный первый кластер занят, то занимаются последующие
; Функция не обязана проверять наличие нужного числа кластеров
; и при возвращении указывает сколько удалось занять кластеров
; L1 f. разделить цепочку кластеров на две части и записать на диск
; L1 g. соединить две цепочки кластеров и записать на диск
; L1 h. освободить цепочку кластеров и записать на диск
; L1 i. вписать нужный номер кластера в нужное место
; L1 j. отписать на диск все изменения (ALWAYS USING CASH FAT!)
; L1 k. продублировать изменения в резервной копии FAT
; L1 l. восстановить диск по резервной копии FAT
;
; 2. работа с директорией и файловыми записями
; L2 a. изменение текущего диска по букве (диск должен быть открыт)
; L2 b. настройка на директорию (CD)
; L2 c. создать директорию (MD)
; L2 d. удалить директорию (DEL)
; L2 e. удалить дерево (DELTREE) ???
; L1 f. найти файл в директории
; L1 g. создать файловую запись без записи на диск
; L1 h. найти следующий файл
; L1 i. удалить файловую запись вместе
; с цепочкой кластеров (DEL)
; L1 j. вписать файловую запись в директорию, на конкретное место
; L1 k. отписать на диск все изменения в FAT
; L1 l. уплотнить директорию (убить все записи об удаленных файлах)
; для TR-DOS - физическое уплотнение диска
;
; 3. работа с файлами
; L2 a. прочитать файл в блок памяти (без открытия/закрытия)
; L2 b. записать файл из блока памяти (без открытия/закрытия)
; L2 c. создать файл нужной длины (в том числе и нулевой)
; L2 d. открыть файл для прямого доступа
; L2 e. закрыть файл прямого доступа
; L2 f. прочитать часть файла (файлы прямого доступа)
; L2 g. записать часть файла (файлы прямого доступа)
; L2 h. Увеличить длину файла (добавить кластера, если нужно)
; L2 i. обрезать файл (удалить кластера, в том числе до нулевой длины)
; L2 j. создать и записать файл из блока памяти (без открытия/закрытия)
; L2 k. отписать на диск все изменения в данных файлов
; L2 l. Управление КЭШ-ем, включение/выключение записи изменений в файлах
; при работе с конкретным файлом
;
; 4. Обработка ошибок при работе с диском и дополнительные операции.
; L2 a. установка типа обработки ошибок
; по умолчанию - возврат с установленным флагом ошибки
; L2 b. системные запросы для обработки ошибок с опросом клавиш и
; выводом системных сообщений на экран
; L2 c. установка типа сообщений при высокоуровневых операциях
; Hапример, процессинг копирования и т.д.
;
; 5. Высокоуровневые команды (задаются командной строкой)
; Фактически маленький COMAND.COM. Должен уметь понимать BASIC
; команды LOAD, SAVE и т.д. с MS-DOS системой
; L3 a. Установка текущего диска, с опцией установки TR-DOS/MS-DOS
; по умолчанию. Как TR-DOS диск может быть установлен файл
; с расширением .trd командой disk.trd:
; L3 b. Открытие/переназначение драйва на букву
; L3 c. Копирование файлов, в том числе копирование директорий
; COPY file1.trd A:
; Если диск A: является диском TR-DOS, то файл копируется на
; весь диск. Иначе, надо непосредственно указать имя TR-DOS файла.
; При обратном копировании, если указан только диск, то создается
; *.trd образ диска
; Oднодисковое копирование! В том числе MS-DOS<=>TR-DOS
; L3 d. Создание каталога
; L3 e. Удаление файла/каталога
; L3 f. Удаление дерева
; L3 g. Создание файла заданной длины
; L3 h. Запись файла с непосредственным указанием адресов данных,
; в том числе страниц, в которых производится запись
; L3 i. Чтение файла с непосредственным указанием адресов, в том
; числе страниц куда производится чтение. Страницы указываются
; либо первым номером, либо списком номеров
; L3 j. Создание RAM-Disk заданной длины в блоках с форматированием
; TR-DOS/MS-DOS/IS-DOS и т.д.
; L3 k. Удаление RAM-Disk
; L3 l. Чтение/запись рамдисков в файлы HDD/FDD
; L3 m. Выдача каталога дисков
; L3 n. Установка ответов по умолчанию, размеров и положения окон.
; L3 o. Вывод файловых окон для выбора программы для запуска.
; При выборе двух окон пользователь может прыгать из окна в окно.
; нажатие на клавиши Fi приводят к выходу из окна с сообщением
; какие клавиши нажаты и в каком окне.
; При нажатии Enter на исполняемом файле запускается этот файл.
; Окна предварительно удаляются с экрана.
; L3 p. Вызов на исполнение .Bat файла
; L3 q. Вызов командной строки и исполнение по клавише ENTER или выход
; по ESC.
; Стрелки вверх/вниз управляют поиском команд в HISTORY
; L3 r. Установка режима WIN или DOS. В последнем окна не открываются
; и все результаты выводятся на текстовый экран. Опции %:%\% в
; этом случае обрабатываются как ошибки.
; L3 s. Использование переменных %1 %2 %3 и т.д. как в MS-DOS bat файлах
; т.е. %1: приведет к выбору диска, указанного в командной строке
; bat файла
; L3 t. Команда HELP с описанием других команд !!!
; Сообщение о неверной команде, так же выводит и сообщение
; о команде HELP, в оконном режиме среди кнопок ответа на ошибки
; должна быть кнопка HELP.
;
; 6. High Level Commands (возможно, это уже другая библиотека)
; L3 a. Высокоуровневый язык, поддержка BASIC команд,
; L3 b. Управление окнами
; L3 c. HTML браузер
; L3 d. Вьювер картинок, проигрыватель WAV
; L3 e. Интерактивное пользовательское меню
;

Вай! Протосы атакуют моих зерлингов! Пора сматываться. Ivan.

- Разводись схемка, больша и маленька.. [ Sprinter-II ] [Forth-CPU] [ZX]

... E-mail: ivan...@mail.ru * Welcome to www.atlant.ru/peters *