POWER SHELL for ZX-Spectrum

Download pws.zip (15 Kb)


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