POWER SHELL for ZX-Spectrum
POWER SHELL
V1.0
--------------------------------
(c) POWER Systems, 1998
- Работает на 48к Spectrum !?
- Шрифт 4x8;
- Две файловые панели, и командная (протокол);
- Имя диска до 11-и символов;
- Тип файла до 3-х символов;
- Устанавливаемый драйвер памяти;
- Возможность установки шрифта;
- Встроенный турбо-драйвер дисковода (для TR-DOS 5.03 и выше);
- Возможность выбора на каждый номер дисковода драйвера: встроенный, стандартный
(#3D13);
- Работа с оверлеями;
- (Умный) режим авто сохранения каталога;
- При записи каталога проверяется диск;
- Всегда отображается информация,
О диске: Diskname, All files/Del, Free, Mark files/sect.
О файле: filename, ext, addr, lenght, size, first trk/sec;
- Оставляет в расширенной странице памяти резидент, для последующей быстрой
загрузки;
- При запуске инициализирует ячейки переменных TR-DOS для всех дисководов Type,
Speed (при смене дисковода нет ерзанья по диску).
Клавиши:
----------------------------------------------------------------
UP,DOWN - перемещение по файлам
LEFT,RIGHT - ... по страницам
TR/INV VIDEO - в начало/конец каталога
GRAPH/SPACE - пометить файл (нельзя пометить стертый файл
или файл с нулевой длинной в секторах)
EXT.MODE - сменить панель
DELETE - сменить дисковод A/B, C/D
EDIT - выбор дисковода
BREAK - командное меню
ENTER - запуск BASIC файла
М. - смена маски BAS/ALL
P. - отображение стертых файлов ON/OFF
I. - если есть помеченные файлы то маркировка
сбрасывается, если нет то маркируются все.
BREAK/EDIT - отмена команды
Команды:
----------------------------------------------------------------
R. Read dir
-----------
Чтение каталога. Проверяет каталог и системный сектор,
и если найдены ошибки выводит в командную панель
соответствующие сообщения:
ERROR: File table! - дырки или накладка файлов
ERROR: System sector! - параметры не совпадают с реальными
Если в файловых панелях совпадают номера дисководов, то панель
дублируется.
N. Rename
---------
Переименование файлов (и типа). Клавишами верх, вниз можно
перемещаться по каталогу.
D. Delete
---------
Удаление файлов. Если не помечено не одного файла то удаляются
стертые в конце каталога, если они есть.
T. Title
--------
Переименование диска (до 11 символов).
C. Copy to
----------
Копирование файлов. Если не помечено не одного файла то копи-
руется только файл под курсором если он не стертый и не с ну-
левой длинной. При копировании на одном дисководе не надо при
первом проходе вставлять диск приемник.
Если файл существует то будет выдано сообщение:
Skip,Double,Owervrite - S. не копировать файл, D. дублировать,
О. перезаписать.
O. Optimize
-----------
Уплотнить диск. Если таблица файлов разрушена после последнего
стертого файла то команда прервется. Если же все норально то
вы увидите помеченные файлы и количество уплотняемых файлов и
секторов, нажмите ENTER для выполнения команды.
S. Screen
---------
Посмотреть картинку.
Клавиши: S. следующий файл, B. сменить цвет бордюра,
A. сбросить/восстановить атрибуты.
F. Font
-------
Посмотреть шрифт. (до 256-и символов по 8 байт)
Клавиша F. следующий файл.
H.Help
------
...
K. Disk info
------------
Окно с информацией о диске.
All files
Del files
Free
First track
First sect.
Format sect.
Disk type
TR-DOS label
Make new disk
- создать чистый диск,
все параметры восстанавливаются,
Free берется из Format sect.,
Если Format sect. = 0 то Free = 2544,
имя диска берется из (см. FDD Format).
Ok. - запись каталога
Выбор пункта
клавишами UP/DOWN, ENTER - ввод нового значения,
BREAK/EDIT - отмена команды.
L. File info
------------
Окно с информацией о файле.
Addres
Lenght
Size
Track
Sector
Ok.
Q. Restore
dir
--------------
Восстановить каталог.
Если копия каталога не найдена то напечатается: LABEL not found!
На запрос Continue? нажмите 'Y' если вы хотите восстановить ката-
лог или любую другую для отказа.
W. Extra save
dir
-----------------
Сохранить каталог в конце диска на 159 дорожке (сектор 7).
Каталог будет сохранен если на диске свободно 9 секторов (вернее
если свободная область не перекрывает вышеуказанные параметры).
X. HEX dump
(SS/X - нулевая дорожка)
-----------
Дамп файла.
В окне отображается один сектор.
Внизу окна: Trk, Sec, File (к которому пренадлежит сектор),
смещение, или System track! (если это нулевая дорожка и на ней
нет файлов), Not used! (если сектор не используется).
Клавиши: UP/DOWM - перемещение по секторам, LEFT/RIGHT - по до-
рожкам, T. чтение новой дорожки, M. при отображении символов
сбрасывать 7-й бит ON/OFF.
ENTER/BREAK/EDIT - отмена.
Z. TR-DOS
---------
Выход в TR-DOS.
U. User menu
------------
Стартовое меню. (см.ниже)
Выдаст: LABEL not found! если меню не создавалось.
SS/U. User
menu editor
----------------------
Редактировать стартовое меню.
Можно поместить до 18 BASIC файлов в стартовое меню, и при
Вызове U. User menu выбирать файлы для запуска в удобной
последовательности.
Клавиши: UP/DOWN
выбор одного из 18 пунктов, BREAK/EDIT - выход
из редактора.
ENTER - ввод
названия программы (до 24-х символов),
F. Set file - ввод имени файла (UP/DOWN - выбор файлов из ката-
лога),
C. Clear line - очистить текущую строку,
X. Clear all - очистить все строки,
B. Set all BAS - установить все BASIC файлы,
S. Save changes - записать изменения.
Информация хранится на нулевой дорожке в секторах 9,10,11.
SS/F. FDD Format
----------------
Форматировать диск.
Drive - дисковод
Diskname - имя диска
From track - первая дорожка
to track - последняя дорожка
Automove - потрековое смещение секторов
Interlive - интерлив ON/OFF
Check - проверка ON/OFF
Start - начать форматирование
- если форматируется
только нулевая дорожка то вы сами выбираете количество свободных секторов,
- если нулевая дорожка не попадает под форматирование то каталог не создается,
- если при форматировании (с проверкой!) обнаружены сбойные сектора то программа
сама определяет наибольшую область без сбойных секторов, если нужно вы можете
изменить выданные параметры
Встроенный
в оболочку драйвер дисковода читает в турбо режиме,
если диск отформатирован без интерлива и со смещением секторов.
Смещение для дисководов:
Teac 5.25"
- все дисководы быстро читают без смещения;
Mitsumi 3.5" - 2
Y. Setup .OVR
-------------
Настройка программы.
MEM-Driver
...
--------------
DRV name - имя драйвера
All pages - всего страниц по 16к
Resident at - в какой странице резидент, 0/OFF
Load DRV - загрузка драйвера с диска
TR-DOS ...
----------
A: - драйвер дисковода Turbo_DRV, #3D13
B: - ...
C: - ...
D: - ...
Retry - попытки чтения/записи при ошибках
Right panel - дисковод правой панели A..D, SAME:
BLK on page - блоков (256 байт) в странице 64/63 специально
для глючных версий ПЗУ Scorpion'а (SMUC-HDD)
Colors_1 ...
Colors_2 ...
------------
Список настраиваемых цветов
UP/DOWN - выбор цвета,
P. Paper - смена цвета фона,
I. Ink - ... тона,
B. Bright - ... яркости.
Keyboard ...
------------
Pip - звук (для BASIC редактора),
Repdel - задержка перед автоповтором,
Repper - задержка между автоповтором.
Misc ...
--------
Extra save LEFT - при загрузке сохранить каталог для
левой панели ON/OFF
Extra save RIGHT - ... правой (каталог сохраняется только
если он был изменен, программа следит за параметрами системного сектора и за
контрольной суммой, контрольная метка находится в системном секторе со сме щением
+#C0 (7 байт)
User menu - выводить стартовое меню при загрузке
Load font - вставить шрифт 4x8, формат шрифта: 96
символов / 2 разных символа на 8 байт
Save setup
- записать настройки, setup записывается в тело программы (имя файла любое),
при запуске запоминается стартовый сектор, дорожка и номер дисковода, если была
смена диска то будет выдано соответствующее сообщение.
Тоже касается и файла ps_ext.OVR: при загрузке команды Setup.
Командное меню (клавиша BREAK):
----------------------------------------------------------------
Можно выбрать все команды из списка, или пункт ps_ext .OVR -
Если на текущей панели есть такой файл то будет выдан список
имеющихся в нем оверлеев, и вы можете выбрать нужный для запуска
Ошибки:
----------------------------------------------------------------
No disk! - нет диска
Retry,Abort? - повторить, прервать
Break pressed!
- нажата BREAK
Retry,Abort? - повторить, прервать
Data error!
- ошибка чтения/записи
Retry,Abort,Ignore? - повторить, прервать, игнорировать
Write protect!
- защита записи
Retry,Abort? - повторить, прервать
Wrong disk!
- не тот диск (при записи каталога или
при копировании на одном дисководе)
Retry,Abort? - повторить, прервать
Not TR-DOS
disk! - не TR-DOS диск
Retry,Abort,Ignore? - повторить, прервать, игнорировать
File exist!
- файл существует
Skip,Double,Owervrite? - пропустить, дублировать, перезаписать
Dir full!
- переполнение каталога (128 файлов)
Disk full! - нахватает места на диске (Free)
Предупреждения (без ожидания ответа):
----------------------------------------------------------------
Disk type
not 80/DS! - тип диска (при чтении каталога)
ERROR: File table! - таблица файлов разрушена
ERROR: System sector! - неверные параметры системного сектора
ERROR: MEM-DRIVER! - драйверу памяти доступны не все страницы (установлен неверный
драйвер, или при запуске был установлен режим 48к)
Оверлеи:
----------------------------------------------------------------
Формат файла: ps_exe.OVR
+0 DEFB "OVRps1" - метка
+6 DEFB "ovr_name"
- имя оверлея
+14 DEFB X - смещение в секторах (для первого = 1,
для второго [+14] + [+15] ...)
+15 DEFB X - длинна в секторах
+16 DEFB "ovr_name" - ... и так описатели 25-и файлов
+XX DEFB 0,"vr_name" - конец списка
Вы можете
написать программу в кодах, откомпилировав под адрес #DB08, и использовать совместно
с оболочкой.
(правда для первой версии это бессмысленно, нельзя пользоваться
уже готовыми процедурами. В ближайшей версии это будет сделано (теперь
уже нет), и опубликован керналь, адреса переменных, описание процедур.)
Условия работы
оверлея:
При запуске оверлея установлено: IM 1, DI, IY=#3C3A, HL'=#2758
- Можно использовать
память #C000...#DAFF = 6912 байт, если используется экран то его можно сохранить
в этой области.
- Также свободна вся память #DB08...#FFFF исключая область занятую самим оверлеем.
- Если вы не хотите чтобы оверлей повторно запускался без загрузки с диска сделайте
LD (#DB00),0.
- Стек можно использовать до 30-и слов, если же вам нужно больше то создайте
свой (потом не забудьте восстановить старый).
- Параметры при запуске оверлея (указанные выше), должны быть восстановлены.
Драйвер памяти:
----------------------------------------------------------------
Формат:
+0 JR start - JR N обязательно
+2 DEFB X - сколько страниц может использовать оболочка
+3 DEFB " mem_drv_name " - имя драйвер 14 символов
+17 DEFB 0 - 0 обязательно
+18 DEFB X - страница резидента (0/резидент не устанавливается
Оболочка передает в регистре Akk (0..255) логический номер страницы, драйвер должен включить реальную физическую страницу, ROM Basic 48, Screen 0. Должен проверить может ли он включить эту страницу.
Пример:
ORG 23877
mem_drv
JR start
DEFB 6
DEFB "Spectrum 128k "
DEFB 0
DEFB 5 ;в #17 странице резидент
start
CP 6 ;in:
0..5
RET NC
PUSH BC
PUSH HL
LD HL,tabl
LD C,A
LD B,0
ADD HL,BC
LD A,(HL)
LD BC,#7FFD
OUT (C),A
POP HL
POP BC
RET
tabl
DEFB #10
DEFB #11
DEFB #13
DEFB #14
DEFB #16
DEFB #17
;edn_drv
Драйвер должен
быть откомпилирован под адрес 23877
Длина до 256 байт
Может использовать стек до 30-и слов
Не должен портить никаких регистров кроме AF
Недостатки:
----------------------------------------------------------------
FDD Format - работает только с TR-DOS версии 5.03 и выше.
Эта версия не может форматировать диски на 3.5 дюймовых дисководах, чтобы они
читались в турбо режиме.
Нет перехвата
ошибок (Disk error, Read only) для #3D13.
Работа только с двухсторонними/80-ти дрожечными дисководами.
Примечание:
----------------------------------------------------------------
Не используйте Owervrite при копировании на один и тот же диск!
Может случится так что файлы наложатся друг на друга если помечено секторов
больше чем может скопироваться за 1 раз!
================================================
30.Apr.1998 ===
Исходников не надо? - zxpws@narod.ru