15. ОПТИМИЗИРУЮЩИЙ КОМПИЛЯТОР ЯЗЫКА БЕЙСИК - Blast
Фирма - разработчик - OXFORD COMPUTER SOFTWARE
Год выпуска: 1985
Внимание:
Группа PENCRAFT поставляет незащищенную цветовым паролем (см. раздел 2) версию
компилятора, поэтому на запросы можно отвечать нажатием клавиши [Enterj. S
1. Введение
БПАСТ • это первый полностью совместимый оптимизирующий компилятор Бейсика для
Синклер - компьютера. Его основная цель - обеспечение максимально возможной скорости
вычислений без подсчета до 40 раз. С компилятором чрезвычайно легко работать, он имеет
лишь несколько новых команд. Уровень совместимости с интерпретатором Бейсика
настолько высок, что даже Бейсик - программы, имеющие вставки в машинных кодах,
компилируются успешно.
Пользователи, пишущие программы специально под BLAST, могут воспользоваться
дополнительными расширяющими возможностями, встроенными в "БПАСТ", в том числе
довольно мощным инструментарием "TOOLKIT", прилагаемым к "БПАСТУ".
"БПАСТ" был разработан той же компанией, которая выпускала Бейсик - компилятор
"PETSPEED" для "КОММОДОРА - 64" и ряд других компиляторов. В доплнение к "БПАСТУ"
фирма также выпускает "OXFORD PASCAL", к микро - ЭВМ, в том числе и к "Спектруму".
"БПАСТ" будет полезен всем, у кого есть программы, для которых требуется повысить
скорость их исполнения. Использование "БЛАСТА" не требует никаких знаний Бейсика, но
большинство пользователей уже знают Бейсик и, в основном, для них преднахначено это
руководство.
1.1 Что такое компилятор?
Программа на Бейсике - просто текст, в котором мы задаем компьютеру те действия,
которые он выполнит по команде RUN.
Процессор "Спектрума" понимает только язык, называемый машинным кодом. Для того,
чтобы запустить программу на Бейсике, нам надо иметь программу, которая поймет Бейсик,
и переведет его в форму, понятную процессору. Эта программа называется транслятор.
Существует два вида трансляторов: Бейсик - интерпретатор и Бейсик - компилятор.
1.2 Интерпретаторы
Бейсик - интерпретатор, например, такой, как в компьютере SPEKTRUMZX читает каждую
строку программы и, по мере прочтения, выполняет ее. Интерпретаторы очень полезны при
разработке программ. Можно легко редактировать программу, затем запускать и снова
редактировать, внося изменения. Недостатком интерпретаторов является то, что вычисления
при работе программы происходят очень медленно. Это связано с тем, что основное время
интерпретатор тратит на то,чтобы понять смысл бейсиковой строки, а не на выполнение
вычислений.
1.3 Компиляторы
В отличие от интерпретатора компилятор сначала переводит программу. Эта операция
называется компиляцией. После ее окончания мы имеем блок бейсик - текста в машинных
кодах. Компиляторы не столь удобны при разработке программ, поскольку даже незначитель-
ные изменения Ьейсике вызывают необходимость полной повторной компиляции, но
после того, как программа откомпилирована, она выполняется во много раз быстрее.
1.4 Терминология
Время компиляции • время, в течении которого "БЛАСТ" компилирует программу.
Рабочее время • время, в течение которого выполняются вычисления в
откомпилированнойпрограмме.
Исходный файл • файл, который подлежит вводу в компилятор. В нашем случае это текст
на Бейсике.
Объектный файл • результат компиляции. В нашем случае это аналог бейсикового текста,
записанный в машинных кодах. Часто называется объектным кодом.
Машинный код • внутренний язык машины, который понятен лишь процессору z-80.
Пи • код • промежуточное представление программы. Находится где-то между Бейсиком
и машинным кодом. В отличие от машинного кода занимает много меньше места. Но он
требует наличия мини-интерпретатора, поэтому работает медленнее, чем машинный код,
хотя и много быстрее, чем им интерпретируемыи Бейсик. "БЛАСТ" может компилировать
программу в машинный код, пи-код или в их комбинацию.
Директива компилятора-сообщение компилятору, которое добавляется к тексту исходной
программы и влияет на работу компилятора.
"БЛАСТ" имеет ряд полезных директив компилятора, которые вставляются в форме
специальных инструкций REM.
2. Начало работы.
Рассмотрим простейший режим работы "БЛАСТ А". Бейсик-программа в компьютер уже
загружена и мы компилируем ее в память без использования магнитофона или микродрайва.
Этот режим называется компиляцией RAM-RAM. В этом случае могут быть откомпилированы
программы неограниченной длины, ибо и компилятор и исходная программа, и объектный
код - все должны находиться в памяти в одно и то же время.
"БЛАСТ" загружается командой:
LOAD "BLAST" [Enter] "БЛАСТ" самостартует и на экране появляется выражение:
BLAST OCSS 1985 XXXXXBYTES FREE (здесь ХХХХХ - объем свободной памяти).
Далее "БЛАСТ" делает проверку, имеете ли вы право пользоваться программой:
ENTER THE COLOR IN SQUARE буква-число (w,v,g,r)? (введите цвет квадрата с
координатами буква-число).
В приложении имеется таблица, на которой расписаны цвета контрольных квадратов: W-
белый, Y-желтый .G-зеленый .R-красный Введите соответствующую букву и нажмите
[Enter].
Чтобы выполнить проверку, необходимо четыре раза подряд правильно ответить на этот
запрос. С этого момента "БЛАСТ" готов к работе и до тех пор, пока вы не выключите питание
или не нажмете команду "NEW", он сможет выполнять команду дополнительного набора.
Чтобы отличить команды "БЛАСТА" от команд Бейсика они начинаются со звездочки (•).
Теперь загрузите бейсик-программу не превышающую ЗК и наберите С, чтобы ее
откомпилировать. При компиляции компьютер может использовать экранную область
памяти в качестве дополнительного рабочего пространства. В этом случае на экране могут
появляться любые символы и сообщения на которые не следует обращать внимания.
Если компиляция пройдет нормально, то через одну-две минуты управление компью-
тером будет восстановлено и на экране появится сообщение:
(0) WARNINGS (0) ERRORS
Чтобы запустить откомпилированную версию программы, наберите:
•R
Если во время компиляции " БПАСТУ" не хватает памяти, он запросит разрешения убрать
из памяти исходный файл. Если вы этого не хотите, просто нажмите "N" и возвращайтесь
к интерпретатору. Иначе нажмите "Y" и компиляция будет продолжена. "БПАСТ" никогда не
сотрет программу без разрешения.
Когда "БПАСТ" находится в памяти, можно редактировать исходный модуль, запускать
его под управлением интерпретатора или компилировать и запускать в откомпилированном
виде столько раз, сколько хотите. При работе с "БЛАСТОМ" иногда возникает небходимость
стереть исходный и объектный файлы, не трогая "БПАСТ". Чтобы это сделать, вместо NEW
(она сотрет все вместе с "БЛАСТОМ") следует дать комаду * R.
Примечание: хотя "БПАСТ" и может справиться с написанными Вами блоками в машинных
кодах, которые вызываются из главной бейсиц-программы, он не может этого сделать в
режиме компилирования RAM-RAM.
3. Запись откомпилированных программ
Для записи объектного кода наберите *S
"БПАСТ* запросит, записывать на ленту или микродрайв, а затем запросит имя, под
которым должна быть выгруженаоткомпилированная программа. Можно использовать любое
разрешенное имя, но принято, чтооткомпилированной версии присваивается имя исходной
программы с добавлением буквы О на конце. Выгруженный файл будет также содержать
объектный код программы с добавленной к нему системой, работающей после запуска
программы.
Чтобы убедиться, что запись прошла успешно, наберите, а затем загрузите объектный код
так же, как загружаются обычные бейсик-программы. Запустите командой RUN. "БПАСТ"
всегда выгружает объектный код так, что он загужается в область памяти, предназначенную
для текста, записанного на Бейсике.
4. Комплирование больших программ
Итак, комплирование RAM-RAM возможно только для коротких программ Чтобы обойти
это неудобство, "БПАСТ" имеет возможность читать исходный код с ленты или микродрайва
и записывать объектный код на любое из этих устройств.
4.1 Выбор входного и выходного устройства
Чтобы выбрать устройство, с которого "БПАСТ" будет читать исходный файл, нажмите *l
и ответьте на появившийся вопрос клавишей R,T или М.
R - память RAM;
Т- магнитофон (лента);
М - микродрайв.
Чтобы задать выходное устрйоство, нажмите *0 и дайте ответ, аналогичный: R,T или М.
После того как вы дадите команду на компиляцию (* С), "БПАСТ" запросит информацию об
устройстве ввода-вывода. Так, например, если был набран микродрайв, то запросите его
номер и и мя файла а если была выбрана лента, то только имя файла. Разл и чные комби наци и
устройств ввода/вывода дают различные объемы свободной памяти, доступной во время
компиляции. Если компилируемая программа превышает 5К, то лучше, чтобы ввод был с
ленты или микродарйва, а если превышает 8К, то и ввод, и вывод должны быть на одно
устройство.
Таким образом, если в качестве выходного устройства принята лента или микродрайв,
компиляция будет закончена, когда объектный код будет записан на эти устройства. Чтоб
запустить программу в объектном коде, его надо будет вначале загрузить. Следует иметь в
виду, что сам "БПАСТ" занимает достаточно большой объем памяти "СПЕКТРУМА" Это не
должно мешать компилировать большие программы, но "БПАСТ" должен быть удален из
памяти перед загрузкой больших откомпилированных программ Это делается командой
•Q.
4.2 Работа с микродрайвом
Это наилучший способ компиляции больших программ. Если имеются большие
программы и нет микродрайва, то мы настоятельно рекомендуем его приобрести.
4.3 Работа с лентой
Вследствие ограниченных возможностей ввода/вывода при работе с лентой, программа,
подлежащая компиляции, должна быть сначала переписана на ленту в спкециальном
формате. Средства для этого прилагаются к "БЛАСТУ" в программе "TOOLKIT" (см.
соотвествующий раздел). После того как исходная программа была записана на ленту в
нужном формате, "БЛАСТ" может быть перезагружен и программа откомпилирована. Процесс
достатчко прост, если объектный код помещается в памяти, но если программа длиннее 8К,
это не получится. Тогда придется использовать магнитофон и для ввода и для вывода.
Хотя "БЛАСТ" и дает такую возможность, это процесс утомительный.
4.4 Компилирование с ленты на ленту
В этом режиме используются две ленты: однас исходным файлом, другая • с объектным.
Исходный файл долен быть записан в специальном формате (см. выше).
Когда вы нажмете *С для компиляции, "БЛАСТ" запросит ленту с исходным файлом.
Через некоторое время компьютер издаст звук и попросит поменять ленты. Необходимо
остановить ленту с исходным файлом в течение 5 секунд после звукового сиг нала. Если вы
этого не сделаете, есть вероятность того, что будут утрачены какие-то данные. Через
некоторое время компьютер опять укажет поменять ленты. Здесь, когда меняется лента с
объектным кодом на ленту с исходным, время не является столь критическим. В то же время
мы рекомендуем не оставлять процесс без надзора.
Вовремя компиляции вам будет предложено сменить ленты несколько раз в зависимости
от длины бейсик-программы. Хотя при таком компилировании объектный код получается в
несколько нестандартной форме, видимых отличий эта программа иметь не будет.
5. Пи-код и машинный код
"БЛАСТ" может компилировать бейсик-программу как в машинный код, так и в
псевдомашинный, иначе назваемый пи-код. "За" и "против" этих двух методов могут быть
выражены так:
• размер программы:
В машинныйх кодах обычно больше, чем в Бейсике, и всегда больше, чем в Пи-кодах;
В Пи-кодах всегда меньше, чем в Бейсике и в машинных кодах.
Карта памяти "БЛАСТА" приведена в Приложении 1, откуда видно, что кроме объектного
кода программа содержит также блок кодов, называемый RTS (рабочие процедуры). В
частности, это процедуры, которыми пользуется объектный код при выполнении умножения,
деления и работы со строками. RTS всегда включается в откомпилированную программу и
составляют в ней 5К. Из-за того, что откомпилированная программа не может быть меньше
5К, рекомендуется применять машинный код для тех частей программы, в которых критичным
является время счета, а для остальных • пи-код. Очень часто компиляция малого блока в
машинный код дает почти такой же выигрыш во времени, что и компиляция всей программы
в машинный код.
Тип кода, который должен быть сформирован, задается посредством директив.
REM! P-CODE • генерирует пи-коды
REM! Machlnacoda - машинные коды
По умолчанию выполняются пи-коды.
Компилирование программ, обращающихся к подпрограммам в машинных кодах, обычно
проблем не представляет.
1. Откомпилированная программа может резервировать пространство для блока в
машинных кодах путем понижения RAMTOP.
2. Переменные Бейсика хранятся в "БЛАСТЕ" таким же образом, как и в Бейсике
"СПЕКТРУМА", поэтому блок в машинных кодах, к которому обращается Бейсик, будет
работать и в "БЛАСТЕ".
3. Процедуры в машнных кодах, расширяющие Бейсик-процедуры обработки ошибок
(или какие-либо другие), будут работать в "БЛАСТЕ" по-прежнему. Выполняется это таким
образом: если во время компиляции "БЛАСТ" встречает выражение, которое выглядит син-
такси чески неверным, компилятор копирует его в объектный файлф и приписывает ему вы-
ходной код. Когда во время запуска программы рабочие процедуры RTS встречают этот вы-
ходной код, то они вызывают бейсик-интерпретатор для его обработки. Если выражение со-
держит синтаксическую ошибку, интерпретатор сообщает об этом и выходит из нее обычным
путем. Если это не ошибка, а предусмотренное расширение Бейсика, интерпретатор ведет
себя так, будто текст и не был компилирован. Расширение Бейсика, предусмотренное
"БЛАСТОМ" так же, как и директивы компилятора, вводятся в форме специальных инструкций
REM, которые распознаются "БЛАСТОМ" во время компиляции. Эту технику можно использо-
вать при введении дополнительных команд в Бейсик. Для этого в "БЛАСТ" встроена
возможность передачи выражений REM в интерпретатор, если они начинаются с "выходного"
символа Если "БЛАСТ" встречает выражение REM, начинающееся с этого символа, он
вырабатывает код, который во время прогона вызывает передачу выражений REM с
опущенными в интерпретатор. "БЛАСТ" сообщает о выполнении этого следующим
образом: Comment transferee! atlineXXXXX. На практике могут возникать проблемы. Например,
машинный код, содержащийся в строках REM,' не будет работать во время компиляции,
поскольку этот метод хранения процедур зависит от способа хзранения текста в памяти.
Примечание: вследствие возможности наложения в ОЗУ самого "БЛАСТА" и машинно
кодовых процедур пользователя, компилятор не разрешает выполнять компиляцию про-
грамм, содаржащих процедуры в машинных кодах из ОЗУ в ОЗУ. Для этого следует
использовать кассету, дискету или микродрайв.
6. Использование целых переменных
Часто можно поднять эффективность работы "БЛАСТА", если заранее сообщить ему,
какие из переменных гарантированно содержат тлько целые числа из диапазона •
65535...+65535. Большинство программ содержат много таких переменных, и вполне стоит
потрудиться оповестить об этом компилятор. Объявление типа переменной выполняется
следующей директивой, например:
REM! INT l9J9K9F(10,5)
Здесь переменные l,J,K и весь массив А объявляются целыми. Одновременно здесь же
выполняется для переменной А и задание массива т.е. DIM А(10,5) уже давать не надо.
Объявление типа должно быть до объявления переменной. Примечание: если переменная
была объявлена целой, а в программе используется не как целая, то резлуьтат может быть
непредсказуемым.
7. Совместимость с Бейсиком "СПЕКТРУМА"
"БЛАСТ" был разработан для максимальной совместимости с Бейсиком "СПЕКТРУМА"
Это относится не только к языку, но и к программному обеспечению.
В Бейсике можно остановить работающую программу, просмотреть состояние переменных,
выполнить операции и т.д. Работа может быть продолжена или начата сначала. Все это
возможно и под управлением "БЛАСТА" за одним исключением. Команда CONTINUE не
будет работать в программе, прошедшей "БЛАСТ"
8. Защита откомпилированных программ
"БЛАСТ" содержит ряд возможностей для обеспечения защиты от несанкционированного
входа в откомпилированную программу.
8.1 Автозапуск
Если в начале Бейсик-программы включить строку REM AUTORUN, "БЛАСТ" выховет
автоматическое выполнение файла после загрузки. С одной стороны, это в значительной
степени усложняет взлом программы, а с другой - добавляет необходимый штрих
профессионализма конечному продукту.
8.2 Защитный пи-код
Большинство распространяемых коммерческих программ содержат процедуры,
записанные в машинных кодах, служащие для защиты программ. Поскольку код Z-80
недостаточно сложен, то многие имеют возможноти для взлома программ и выведения
задиты из строя. Пи-код, который генерируется "БЛАСТОМ", это недокументированный
язык, предоставляющий более высокий уровень защищенности, чем машинный код.
Поэтому рекомендуем защищающиепрограммы писать на Бейсике, а затем компилировать
их в Пи-код.
8.3 Копирование программ, прошедших "БЛАСТ"
Откомпилированные программы не могут быть выгружены напрямую через "SAVE".
Команда HSH доступна для программ, которые были откомпилированы из RAM в RAM, но S
невыгрузитоткомпилированную программу, если она загружалась с ленты или микродрайва.
Если необходимо выгрузить программу на одно из этих устройств, то это производится
следующим образом:
Запись на ленту:
1. Загрузите откомпилированную программу в компьютер
2. Вставьте следующие строки:
15 LOAD PROG"
20 RANDOMIZE USR PEEK 23635*256* PEEK23636*150
(здесь PROG) - имя нового файла
3. Наберите:
SAVEHPROG"llne 15
Можно проверить правильность записи заменой оператора SAVE на VERIFY.
8.4 Запись на микродрайв
Процедура записи на микродрайв точно такая же, за исключением того, что должны
присуствовать обычные параметры микродрайва.
Например:
15 LOAD*"MM;1;"PROG"
20 RANDOMIZE USR PEEK 23635*256* peek23636*150
и наберите
SAVE*"M";1;"PROG"LINE15
9. Ошибки
9.1 Ошибки компиляции
Несмотря на то, что через редактор "СПЕКТРУМА" можно ввести только синтаксически
правильный Бейсик, суещствуют пути, которыми неверные коды могут попасть в "БЛАСТ".
Выходные данные, генерируемые программой, например, могут содаржать ошибки и
существует вероятность того, что бейсиковый текст на ленте или микродрайве может быть
нарушен. Возможно также, что пользователь введет ошибочную директиву компилятора
или инструкцию расширенного Бейсика. По этой причине "БЛАСТ" проводит проверку
синтаксиса всех инструкций, которые в него поступают.
В то же время не все так просто. Случается, что инструкция воспринимается "БЛАСТОМ"
как ошибочная во время компиляции, и в то же время это разрешенное расширение
Бейсика, например, из тех, которые предоставляют пользователю некоторые версии языка.
Такие расширения полностью допускаются "БЛАСТОМ". Беда в том, что во время компиляции
"БЛАСТ" еще не имеет достаточно информации, чтобы отличить их от подлинных ошибок.
Выход такой. Когда "БЛАСТ" встречает возможную синтаксическую ошибку, он
распечатывает наэкране подозрительный текст и выдет предупреждение.Затем компиляция
п род ожается, если впоследствии при запуске откомпилированной программы сомнительная
инструкция окажется фактически ошибочной. Запуск прервется с сообщением: Nonsenceln
Basic.
9.2 Ошибки во время работы программы
Во врем я работы отком п и л и рован ной програм мы ош и бки: Number too big, Return withoun
gosub выдаются таким же образом, как и в работе интерпретатора. Исключением является
ошибка Wrong. Для того чтобы избежать постоянных проверок индексов масссивов в работе
программы, процедуры RTS "БЛАСТА" игнорируют У ошибку. Если индексы выйдут за свои
пределы, резлуьтат будет непредсказуемым.
10. Директивы компилятора
"БЛАСТ" предоставляет дополнительные возможности при компиляции. Они реализуются
посредством директив компьютера. Выполняется это выражениями REM в виде:
REM! <Директива>
Восклицательный знак обеспечивает для "БЛАСТА" простой способ распознания, надо ли
игнорировать последующее сообщение. Существуют также еще две формы инструкций
REM REM % обеспечивает передачу текста или комментариев интерпретатору во время
работы программы.
REM & применяется для открытия допонительных и нструкций Бейсика, предусмотренных
"БЛАСТОМ". Они будут рассмотрены в соотвествующем разделе:
1. REM! PCODE - по этой директиве "БЛАСТ" компилирует программу в пи-кодах;
2. REM) Machine code - генерация в машинных кодах;
3. REM! INT I,J,К - объявляет переменные l,J,K как целые;
4. REM! AUTORUN - обеспечивает автоматический запуск объектной программы после
загрузки. Эта директива должна быть первой строкой в программе.
11. Расширение Бейсика
Ниже приводится список дополнений к Бейсику, которые распознаются "БЛАСТОМ". Они
вводятся инструкцией REM&.
11.1 Подключение и отключение клавиши BREAK:
REM& BREAK ON
REM& BREAK OFF
no умолчанию клавиша BREAK включена.
11.2 Whllm.Wmnd:
Форма: REM& While <условие>
REM& Wend
По этим командам блокоператоворов, замыкаемый REM& Wend, выполнчется многокртано
до тех пор, пока условие имеетзначение истины (не нуль). Если "условие" ложно, операторы
пропускаются.
Форма: REM& REPEAT
REN4M& UNTILL <услоаие>
Блок оператовор между REM& REPEAT и REM& UNTILL выполняется многокртано, пока
"условие" имеет нулевое значение. Независимо от "условия" этот блок выполняется хотя бы
один раз.
11 A POKE dXfrMi. - REMA POKE NV.NE
Здесь "NE" - числовое выражение. Все это 16-битная инструкция РОКЕ. Резлуьтат второго
выражения помещается в адрес, на который указывает первое выражение.
11.5 РЕЕК Форма мпиеи: REM& РЕЕК НУ.НЕ
Это 16-битная инструкция РЕЕК. Содеражние двух ячеек памяти, заданных числовым
выражением "НЕ", присваивается параметру "HV".
11.8 CALL?
Форма REM& CALL <NE> / <список параметров»
Эта команда вызывает процедуру в машинных кодах, содержащуюся по адресу,
записанному выражением NNE". Параметры разделяются запятыми: они могут быть либо
числовыми переменными в диапазоне отО до 65535, либо адресами числовых переменных,
тогда они записываются так: & имя переменной. Эти параметры хранятся в таком порядке,
что первый из них находится по адресу, на который указывает регистр IX.
Пример:
REM& CALL 50000,X,&IY
При входе в процедуру, находящуюся по адресу 50000, параметр X будет храниться в
(1Х+0) и в (IX+1), а адрес переменной Y будет храниться в (IX+2) и (IX+3).
11.7 ELSE
Форма: REM& ELSE<cnncoK инструкций:»
Это д пол ни тельное разрешен ное расширение к конструкции IF...THEN, которое разрешено
во многих версиях Бейсика.
Например:
IF XrO THEN GOSUB 1000: REM& ELSE: GOSUB 200
Здесь выполняется переход к строке 100, если Х«0, в противном случает к строке 200.
Помните, что конструкции IF...THEN...ELSE... не могут быть вложенными. После ELsE всегда
должно стоять двоеточие.
11.8 Многострочные инструкции
В Бейсике "СПЕКТРУМА" есть возможность задавать и вызывать функции, определяемые
пользователем. Их главным ограничением является то, что ни могут содержать только одну
инструкцию, которая долждна быть выражением. "БЛАСТ" расширяет эту возможность.
Рассмотрим пример инструкции по определению большего из ее параметров.
1000 REM& DRF М(А<В)
1010 IFA>B THEN М+А; REM& ELSE:MsB
1020 REM& END PROC
Такую процедуру можно вызвать:
100 REM& M(X<Y)
Здесь строка 10ОО задает фу нкци ю М. В строке 1010 М рассматривается как имя перемен ной,
которой присваивается значение А и В, в зависимости от того, что больше. Строка 1020
завершает процедуру и передает управление в ту точку, откуда пришел вызов. Параметры
определения процедуры являются локальными. То есть значения их неизвестны остальной
части программы. Более того, если X и Y определены вне процедуры или в другой процедуре,
они будут рассматриваться как совсем другие переменные. Процедура может иметь столько
строк, сколько необходимо, но долна заканчиваться инструкией REM& ENDPROG. Имя
процедуры и параметры могут состоять только из одной буквы, с возможным последующим
знаком S. Многострочные инструкции могут применяться рекуррентно.
12. Оптимизация
"БЛАСТ" не просто переводит бейсиковые инструкции в их машинные аналоги. Он также
применяет ряд методов, направленных на повышение скорости работы и компактность
объектной программы. Авторы "БЛАСТА" широко пользовались старым принципом
программирования: "никогда не откладывай на прогон программы то, что можно сделать
при компиляции".
Этоотносится в первую очередь к обраотке массивов Истринговых переменных. Например,
если, скажем, массив А(10,10) был назначен (DIM) как массив с постоянными границами,
"БЛАСТ" будет знать адрес каждого его заданного элемента. Например, А(1,2) уже на этапе
компиляции. Более того, даже если одна из границ постоянная, например, А(1,2), "БЛАСТ"
также улучшит объектный код путем проведения некоторых расчетов индексов переменной
во время компиляции. Если в программе много работы с массивами, это дает очень
большой выигрыш в скорости вычислений.
При расчете выражений "БЛАСТ" выбирает наиболее экономичный путь расчета, без
необходимости запоминания и вызова промежуточных значений. "БЛАСТ" различает
повторяющиеся места в расчетах сложных выражений. В этих случаях он рассчитывает их
один раз и и далее ползьуется результатом.
Если позволяет объем памяти, "БЛАСТ" формирует область переменных во время
компиляции, не оставляя это на прогон. В отличии от Бейсика "СПЕКТРУМА" "БЛАСТ"
сначала использует всю доступную память для хранения переменных, а только потом
занимается "уборкой мусора" (стиранием ненужных более данных).
Во многих случаях "БЛАСТ" способен улучшить скорость циклов FOR...NEXT путем
предварительного подсчета необходимого количества повторов и исопльзования
специального счетчика итераций. "БЛАСТ" широко применяет арифметику целых чисел. С
целыми работа происходит намного быстрее, чем с плавающией запятой.
12.1 Как получить от "БЛАСТА" максимум возможного
В отличив от бейсик-интерпретатора "БЛАСТ" не тратит время при прогоне программы на
поиск строк программы, заданий данных, определений функций. Он знает их адреса и обра-
щается напрямую. Чтобы помочь "БПАСТУ" и добиться реализации максимума его возмож-
ностей, есть несколько простых принципов, которым надо следовать, дабы переложить как
можно больше работы на процесс компиляции, оставив минимум на рабочий прогон
программы. Возможности, имеющиеся в прилагаемой программе "TOOLKIT*, позволяют
это сделать. Например, избегайте инструкций типа:
GO ТО <выражение>
Это вынуждает отложить расчет адреса перехода на рабочий прогон программы. Ста-
райтесь везде, где возможно, исопльзовать число, которое может быть известно на этапе
компиляции. Это относится к любым другим инструкциям, в которых используются числа.
Несмотря на то, что переходы из циклов FOR...NEXT и входы в них рарешены, старайтесь
этого не делать. Если это сделать, "БЛАСТ" не сможет заранее предвидеть последователь-
ность операций и, тем самым, не использует свои наиболее мощные способности по опти-
мизации. Пользуйтесь добавленными расширениями к Бейсику. Они компилируются в бо-
лее быстрые процедуры, чем их бей си к-а налог и. Старайтесь не объявлять один массив
дважды и пользуйтесь постоянными границами.
Везде, где можно, пользуйтесь однобуквенными именами переменных, поскольку для
них "БЛАСТ" применяет иной подход.
13. Программа TOOLKIT
К "БПАСТУ" прилагается обширный набор средств для облегчения разработки программ
("TOOLKIT"). 'TOOLKIT" самостартует после загрузки с сообщением:
BLAST TOOLKIT (C)OCCS 1985
Как и компилятор, "TOOLKIT' загружается в верхнуюю часть RAM и устанавливает
RAMTOP ниже себя. При этом объем доступной памяти снижается примрено на 2К. 'TOOLKIT'
не сможет находиться в памяти одновременно с "БЛАСТОМ" . Ниже приведен список
команд'TOOLKIT'. Они начинаются с (•), обозначаются одной буквой, за ней идут параметры:
N,N1,N2 - обозначают целые числа
N1-N2 • обозначает "от строки №1 до строки №2 включительно"
N2 • обозначает "от начала строки №2 включительно"
Если номера строк не приводятся, предполагается, что речь идет о всей программе.
13.1 Команды обработки блоков
1.Редактировать строку №1: *EN1
2. Копировать строку №1 в строку N2: *CN1, N2
3. Убрать строку N01: *DN1
4. Перенос строки №1 в №2 (строка №1 уничтожается): *MN1, N2
13.2 Команда обрабоки блоков
1. Копирование: *С<диапазон>,^ По этой команде копируются строки не заданного
диапазона в строки, начиная с N.
2. Стирание: Ь*<диапазон>
3. Перенос строки: *М<диапазон>, N
4. Перенумерация: ^<диалазон>,...Ж ,N2. Строки из заданного интервала перенумеровы-
ваются. Им присваивается номера от N1 с шагом через N2. По умолчанию N2 равно 10.
13.3 Команды обработки строк
1. Поиск: *F<Anana30H>,NS. По этой команде в заданном диапазоне строк разыскивается
заданная строка. По умолчанию программа будет искать последнюю строку.
2. Поиск с заменой: *$<диапазон>,Й1 S,N2 S. Отыскивается первая строка и заменяется на
вторую. Новая строка проверяется на синтаксис. Если ошибка есть, то первая же строка, в
которой есть ошибка, будет изображена на экране. Все предыдущие строки, где поиск и
замена прошли нормально, останутся измененными.
13.4 Прочие команды
1. "TRACE": *TN. По этой кмоанде начиная с номера на экране печатается номер
выполняемой в данный момент инструкции. Замедлить вычисление можно клавишей
"пробел", а остановить • клавишей [Enter].
2. Устранение всех строк REM, кроме тех, которые начинаются с "!","%","&".
•К
3. Запись на магнитофон (WRITE) блока программы.
*W<AManasoH> <имя файла>
4. Запись на ленту программы в формате, удобном для компиляции "БЛАСТОМ" с ленты.
Программа будет выгружатья блоками, совместно с информацией, необходимой для
компиляции.
•В <имя файла>
5. Конец работы: *Q.
Приложение 1
Карта памяти "БЛАСТА"
Р RAMT---------------
UDQ Графика пользователя
RAMTOP "БЛАСТА" стеки GOSUB, машинный стек
свободная область RAM.
STKEND Стек калькулятора
STKBOT Рабочее пространство
ELINE Переменные Бейсика
VARS Программа на Бейсике
PROG Информация о каналах
CHARS
Карты м и кродрайва
Системные переменные интерфейса-1
Системные перменные
Буфер принтера
Атрибуты
Экранная память
ROM
Приложение 2
Карта состояния памяти при прогоне откомпилированной программы
P-RAMT------------
Графика пользователя
UDG
RAMTOP
Стек GOSUB
Машинный стек
Свободная область RAM
STKEND Стек калькулятора
STKBOT Рабочее пространство
WORKSP Область редактирования
ELINE Переменные
VARS Откомпилированная программа
PROG Информация о каналах
CHARS
Карты ми кро драйва
Рабочие процедуры
Системные переменные интерфейса-1
Системные перменные
Буфер принтера
Атрибуты
Экранная память
ROM
Приложение 3
Приложение 3
|
А |
В |
С |
D |
Е |
F |
G |
Н |
I |
J |
К |
L |
М |
N |
0 |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
1 |
N |
Y |
R |
Y |
G |
Y |
N |
Y |
G |
Y |
G |
R |
N |
R |
G |
N |
Y |
G |
Y |
G |
G |
R |
Y |
G |
G |
N |
2 |
Y |
G |
G |
G |
R |
G |
Y |
G |
G |
R |
Y |
G |
R |
G |
R |
Y |
R |
Y |
R |
Y |
R |
G |
Y |
R |
Y |
G |
3 |
R |
Y |
R |
G |
Y |
G |
R |
Y |
R |
Y |
G |
R |
G |
Y |
G |
G |
R |
R |
G |
R |
G |
Y |
G |
R |
G |
Y |
4 |
G |
G |
Y |
R |
G |
R |
G |
G |
Y |
R |
R |
Y |
R |
G |
Y |
N |
Y |
G |
R |
Y |
R |
G |
N |
Y |
R |
G |
5 |
Y |
N |
G |
G |
G |
Y |
Y |
N |
G |
Y |
N |
G |
G |
R |
G |
Y |
R |
G |
Y |
G |
Y |
G |
Y |
G |
Y |
R |
б |
G |
Y |
R |
Y |
R |
G |
G |
G |
R |
G |
G |
R |
R |
G |
R |
G |
G |
Y |
R |
Y |
N |
Y |
G |
Y |
R |
G |
7 |
Y |
R |
G |
G |
Y |
N |
G |
Y |
G |
G |
Y |
G |
Y |
R |
Y |
Y |
N |
G |
Y |
R |
G |
R |
Y |
R |
Y |
G |
8 |
R |
G |
N |
Y |
R |
Y |
G |
R |
Y |
R |
R |
G |
R |
G |
R |
Y |
G |
Y |
G |
G |
Y |
G |
R |
G |
R |
N |
9 |
G |
Y |
G |
R |
G |
R |
Y |
G |
G |
G |
Y |
R |
G |
Y |
G |
G |
Y |
R |
Y |
G |
N |
Y |
G |
Y |
Y |
G |
10 |
R |
G |
G |
Y |
Y |
G |
R |
G |
R |
Y |
G |
R |
Y |
W |
Y |
G |
R |
G |
G |
W |
G |
W |
G |
R |
G |
Y |
11 |
Y |
R |
Y |
N |
G |
Y |
G |
R |
Y |
N |
Y |
G |
G |
Y |
G |
R |
Y |
G |
Y |
G |
R |
Y |
R |
Y |
G |
R |
12 |
R |
Y |
R |
G |
G |
R |
G |
G |
R |
Y |
R |
G |
N |
G |
N |
Y |
G |
R |
G |
G |
Y |
R |
G |
N |
G |
Y |
13 |
G |
G |
Y |
G |
Y |
G |
Y |
N |
Y |
G |
Y |
G |
N |
Y |
G |
R |
G |
Y |
G |
Y |
G |
Y |
G |
Y |
R |
G |
14 |
G |
Y |
R |
R |
G |
G |
Y |
G |
G |
R |
G |
N |
G |
G |
R |
G |
Y |
G |
N |
G |
Y |
G |
Y |
G |
G |
Y |
15 |
Y |
R |
G |
Y |
R |
Y |
N |
Y |
G |
R |
R |
Y |
R |
R |
Y |
R |
G |
R |
Y |
R |
Y |
R |
G |
N |
Y |
G |
16 |
G |
G |
G |
R |
G |
R |
Y |
R |
G |
R |
G |
R |
G |
Y |
G |
G |
G |
G |
G |
G |
R |
G |
R |
Y |
R |
G |
17 |
Y |
N |
G |
Y |
R |
G |
R |
G |
Y |
G |
G |
Y |
G |
N |
G |
Y |
R |
Y |
G |
Y |
G |
Y |
G |
G |
Y |
R |
18 |
R |
Y |
G |
R |
G |
Y |
R |
G |
R |
R |
Y |
N |
Y |
G |
Y |
R |
G |
R |
Y |
G |
Y |
G |
R |
G |
R |
Y |
19 |
Y |
G |
R |
G |
G |
N |
Y |
G |
Y |
G |
R |
G |
N |
G |
N |
G |
G |
N |
G |
N |
G |
G |
Y |
R |
R |
G |
20 |
R |
G |
Y |
Y |
G |
Y |
R |
Y |
G |
R |
Y |
R |
Y |
N |
Y |
R |
R |
G |
Y |
G |
R |
Y |
G |
N |
Y |
R |
21 |
G |
G |
R |
G |
R |
Y |
G |
Y |
N |
G |
R |
Y |
G |
Y |
G |
G |
Y |
R |
R |
Y |
G |
R |
R |
G |
R |
Y |
22 |
Y |
N |
Y |
R |
Y |
G |
Y |
G |
G |
Y |
G |
R |
Y |
R |
G |
Y |
R |
Y |
G |
R |
R |
G |
Y |
N |
Y |
G |
23 |
G |
G |
G |
Y |
R |
G |
R |
Y |
G |
G |
Y |
Y |
R |
Y |
G |
R |
G |
G |
N |
Y |
G |
R |
R |
Y |
G |
Y |
24 |
R |
G |
G |
R |
G |
Y |
G |
R |
Y |
N |
G |
R |
G |
G |
R |
G |
N |
Y |
G |
G |
R |
G |
Y |
G |
Y |
R |
25 |
G |
Y |
R |
Y |
R |
N |
G |
Y |
R |
G |
G |
R |
Y |
R |
G |
Y |
R |
G |
Y |
R |
G |
Y |
G |
R |
G |
Y |
26 |
Y |
R |
G |
G |
Y |
G |
Y |
R |
G |
Y |
R |
Y |
G |
R |
Y |
R |
G |
R |
G |
G |
Y |
N |
Y |
G |
Y |
R |
27 |
R |
Y |
G |
R |
Y |
R |
R |
Y |
R |
G |
G |
G |
W |
G |
R |
Y |
G |
R |
W |
G |
G |
Y |
R |
G |
R |
Y |
28 |
G |
R |
G |
Y |
G |
G |
Y |
R |
G |
Y |
G |
Y |
G |
Y |
G |
R |
R |
Y |
G |
Y |
R |
R |
Y |
R |
G |
G |
29 |
R |
Y |
R |
G |
N |
G |
G |
G |
Y |
R |
Y |
N |
Y |
G |
R |
G |
G |
R |
Y |
R |
G |
G |
N |
G |
R |
Y |
30 |
Y |
R |
G |
Y |
G |
R |
Y |
R |
Y |
R |
G |
G |
R |
Y |
G |
Y |
R |
Y |
R |
Y |
N |
Y |
G |
Y |
G |
N |
31 |
G |
Y |
N |
G |
R |
Y |
G |
R |
G |
G |
R |
Y |
G |
R |
Y |
R |
G |
Y |
G |
R |
Y |
R |
G |
G |
R |
G |
32 |
R |
G |
Y |
G |
Y |
G |
R |
Y |
R |
Y |
N |
G |
G |
Y |
R |
G |
N |
Y |
G |
Y |
R |
G |
Y |
R |
Y |
G |
33 |
Y |
G |
R |
Y |
G |
R |
Y |
G |
G |
R |
G |
G |
G |
R |
G |
R |
Y |
G |
Y |
G |
Y |
G |
N |
Y |
R |
G |
34 |
R |
Y |
G |
R |
R |
Y |
G |
Y |
R |
Y |
G |
Y |
Y |
G |
Y |
Y |
G |
Y |
R |
G |
G |
R |
Y |
G |
Y |
G |
35 |
G |
G |
Y |
Y |
G |
N |
Y |
N |
Y |
G |
R |
Y |
R |
G |
R |
G |
Y |
G |
Y |
R |
Y |
G |
N |
Y |
R |
Y |
36 |
Y |
R |
G |
G |
Y |
G |
R |
Y |
G |
G |
G |
R |
G |
Y |
G |
R |
G |
R |
G |
N |
G |
Y |
G |
G |
G |
Y |
37 |
R |
G |
Y |
G |
R |
Y |
G |
G |
R |
Y |
G |
Y |
R |
G |
Y |
G |
N |
G |
Y |
G |
Y |
G |
Y |
G |
G |
R |
38 |
G |
Y |
G |
G |
Y |
R |
R |
G |
Y |
G |
Y |
R |
G |
Y |
W |
Y |
R |
Y |
R |
G |
R |
G |
R |
G |
Y |
G |
39 |
Y |
G |
R |
Y |
N |
G |
Y |
G |
G |
R |
G |
Y |
R |
G |
Y |
G |
G |
R |
G |
R |
G |
Y |
G |
R |
G |
R |
40 |
R |
Y |
G |
R |
Y |
G |
G |
R |
Y |
G |
N |
G |
G |
Y |
R |
R |
Y |
G |
Y |
G |
Y |
G |
N |
Y |
G |
G |
1в. TRDOS
ДИСКОВЫЙ ИНТЕРФЕЙС
1. АННОТАЦИЯ
Интерфейс имеет следующие достоинства:
Легкий и быстрый доступ поиск данных и программ осуществляется быстрее,
чем при использовании кассетной ленты
Широкий выбор дисководов 5,25"; 3,5" илиЗ",40 или 80 дорожечные, одно или
двухсторонние дисководы.
Максимальная емкость-свыше 2,5 млн знаков
Гибкость интерфейс независим, по тому
можно использовать Ваши диски
с другими компьютерами
Совместимость интерфейс может использоваться
с компьютерами SRECTRUM,
SRECTRUM PLUS и SRECTRUM 128
Автозагрузка после включения и сброса автоматически
загружает TRDOS
(только SRECTRUM или SRECTRUM+)
Волшебная кнопка дает возможность сохранить программы,
основанные на ленте, с помощью
нажатия на кнопку
Системный переключатель используйте трехпозиционный переключатель
для сброса компьютера или
переключателя интерфейса
TRDOS В EPROM дисковая операционная система
(TRDOS) содержится в EPROM,
она использует только 112 байтов RAM
Простой синтаксис простой синтаксис с использованием
ключевых слов SPECTRUM обеспечивает
доступ к файлам на диске TRDOS на BASIC
или машинном коде
Простое обращение с файлами TRDOS управляет матрицами с номерами и
строками, файлами с последовательным
и произвольным доступом
В этом буклете содержится информация для полного пользования TECHNOLOGY RE-
SEARCH BETA 128 DISK INTERFACE (в дальнейшем DISK INTERFACE). В этом руководстве
даются сноски на компьютер SPECTRUM, но, если нет других указаний, они применимы и
к SPECTRUM PLUS и SPECTRUM 128. BETA 128 DISK INTERFACE с SPECTRUM и SPECTRUM
PLUS одинаковы (будем называть SPECTRUM и PLUS). Существует разница в отношении
SPECTRUM 128. Это будет отмечено.
DISK INTERFACE используется с UNILITY DISK, который содержит некоторое количество
обсуживающих программ (см. приложение). Размер диска может быть 5,25" или 3,5й, в
зависимости от Ваших требований.
2. ВВЕДЕНИЕ В ДИСКОВУЮ СИСТЕМУ
Дисковал система - это профессиональный способ хранения программ и файлов данных
в домашних и персональных компьютерных системах. Этот способ имеет много преимуществ
перед системами, базирующимися на лентах, такими как системы на кассетных лентах и
микронакопители. Дисковая система более надежна, проста в использовании и более
быстродействующая.
Терминология, относящаяся к гибким дискам, часто ведет к путанице, поэтому ниже
приводятся объяснения.
2.1. ДИСКИ И ДИСКОВОДЫ
Дисковый интерфейс "BETA PLUS" можно использовать накопители на дисках 5,25й, 3,5*
и 3". Их назвают гибкими дисками, дискетками, мини-дисками или микро-дисками. Мы
будем называть их просто диски. В настоящее время наиболее используемый вид дисков
3,5'.
Гибкий диск, покрытый пластиком, диаметром 5,25", хранится в своем собственном
маленьком шкафу или в пластиковом чехле. Хотя диски и "гибкие", их не следует сгибать.
Более маленькие диски 3,5" хранятся в плотных пластиковых кожухах, что означает, по
крайней мере в течение некоторого времени, что их стоимость выше стоимости дисков
5,25".
Диски, вставленные в дисковод, вращаются внутри своих защитных чехлов со скоростью
300об/мин. Для защиты диски лучшего качества имеют пластиковое кольцо, установленное
вокруг кромки центрального отверстия. Приводной механизм зажимает это кольцо, а не
более слабый диск. Индексное отверстие и подобное отверстие в диске дает дисководу
возможность следить за диском. Данные записываются и считываются через прорезь или
окно данных. Для защиты ценных данных в кожухе имеется "Борозда защиты записи",
которая может быть покрыта небольшим приклеивающимся ярлыком. Как и небольшая
наклейка на задней части кассеты, он предотвращает случайную запись на диск или его
стирание. Для кожухов диска 3,5" имеется устройство, подобное кассете.
В продаже имеются дисководы для 40 или 80-дорожечных дисков. Многие дисководы
имеют возможность переключения, что дает возможность использования 40 и 80-
дорожечных дисков. Многие дисководы имеют только одну головку считывания/записи
(одностороннике). Эти дисководы могут осуществлять считывание и запись только на
одной стороне диска. Другие дисководы имеют две головки считывания/ записи
(двусторонние), что дает возможность использования обеих сторон диска. Золотое правило
состоит в том, чтобы обеспечить дублирование до того, как первоначальные диски
перезаписываются и направляются на считывание на другой специальный дисковод. В
идеале, если один пользователь диска использует 40 или 80-дорожечный дисковод, то это
должен делать и другой пользователь.
Однако, диски, форматированные и записанные одним видом дисковода, могут
считываться другим типом дисковода. Очевидно, что диск физически должен иметь такой
же размер.
В нижеприведенной схеме показана совместимость между различными типами
дисководов.
где
Т - дорожка
SS - односторонний
DS - двусторонний
С - совместимый
R - совместимвый (только считывание)
X - несовместимый
? - несовместимый, но на некоторых типах дисководов может быть правильно.
Например, 40-дорожечный двусторонний дисковод совместим (считывание и запись), и
диски форматированы на 40-дорожечный односторонний дисковод. Но 80-дорожечный
двусторонний дисковод может считывать только с дисков, форматированных на 40-
дорожечный привод.
2.2. ДОРОЖКИ, СЕКТОРЫ, ПЛОТНОСТЬ
Процесс форматирования (раздел 7) дает возможность TRDOS и дисководу электронно
разделять диск на 40 или 80 дорожек (в соответствии с дисководом), а каждую дорожку -
на секторы. Количество секторов на дорожку и количество байтов на сектор полностью
зависят от операционной системы на дисках (DOS).
TRDOS обеспечивает 16 секторов на дорожку и 256 байтов на сектор Такое большое
количество небольших секторов имеет несколько преимуществ.
Во-первых, если хранению подлежит только наибольшее количество данных,
использованию подлежит не слишком большая часть диска. Это ведет к эконом и и большего
количества файлов.
Во-вторых, при использовании файлов с произвольным доступом (раздел 14)
обеспечивается большая гибкость программы и увеличивается скорость работы.
Чтобы знать, что где расположено, TRDOS использует дорожку 0, в основном, для своих
собственных целей поиска.
При наличии вышеуказанной информации можно рассчитать количество секторов и
емкость памяти форматированного диска. Эта форматированная емкость представляет
собой единственную имеющую значение цифру для любой системы, но должна
рассматриваться в связи с количеством и размером секторов. В нижеприведенной таблице
представлена емкость TRDOS в килобайтах с различными дисководами:
40-дорожечный односторонний Об'ем=39*16«624 сектора*256=156 кбайт.
40-дорожечный двусторонний Об'ем=79*16=1264 сектора*256=316 кбайт.
80-дорожечный односторонний Об'ем=79#16=1264 сектораф256=316 кбайт.
80-дорожечный двусторонний Об'ем-159* 16=2544 сектораф256=636 кбайт.
Это равняется 4 кбайтам на дорожку или 4 секторам на 1 кбайт. Этот последний расчет,
вероятно, наиболее пригоден. При изучении содержания диска с помощью CAT (раздел 8)
Вам всегда будет известно количество свободных секторов. Разделите это количество на 4
и узнаете, сколько кбайт свободного пространства остается.
Вы заметили, что мы ничего не сказали о плотности. Термины единичная плотность и
двойная плотность относятся к упаковке данных на диске методом записи. TRDOS использует
двойную плотность - поэтому Вы получаете 16 секторов из 256 байтов на дорожку.
3. ЗАПУСК
3.1. ПОДКЛЮЧЕНИЕ
Теперь, когдау Вас есть дисковый интерфейс и один или более дисководов, ознакомьтесь
с нижеследующими процедурами, прежде чем приступать к установке. Если у Вас имеются
другие интерфейсы, смотрите раздел 3.5.
1. Первый шаг - посмотрите на диаграмму 1 и определите четыре соединения. Соедине-
нием, на котором имеется ярлыкА, должно быть присоединено к задней части SPECTRUM,
если интерфейс не подходит. В этом случае интерфейс 1 попадает между SPECTRUM и
DISK INTERFACE. Соединение, находящееся напротив А, предназначается для добавки
других интерфейсов, например, ручки управления
2 Прежде чем подсоединить дисковый интерфейс к SPECTRUM, следует очистить
соединитель на SPECTRUM, осторожно протерев обе стороны ватным тампоном, смоченным
метилованным спиртом.
3. Ваш дисковод уже должен быть снабжен соответствующей штепсельной вилкой на
соединяющем проводе: она должна быть вставлена в "отверстие дисковода" (обозначенное
"В" в диаграмме 1). Удостоверьтесь, что окрашенная сторона плоского ленточного кабеля
обращена к SPECTRUM.
4. Вставьте провод дисковода и произведите подключение
5. Включите телевизор.
6. SPECTRUM PLUS: удостоверьтесь, что переключатель находится в центре, в нормальном
положении.
SPECTRUM 128: удостоверьтесь, что системный переключатель находится в положении
"Отключено".
7. Выведите штепсель из источника питания SPECTRUM и введите в соединение источника
питания (обозначенный "С" на диаграмме 1).
8. SPECTRUM PLUS: если подключено более одного дисковода задействуется только
дисковод NAN, и через секунду Вы увидите на дисплее следующее:
•TR-DOS VER 5.ХХ*
(С) 1986 TECHNOLOGY RESEARCH LTD
(U.K.)
A>
где 5.XX Номер версии
А> подсказка TRDOS
Возможно, что при подключенном питании SPECTRUM не распознает дисковый
интерфейс. Т.е. вышеприведенная надпись не появится на экране. Если это случится, то
сбросьте SPECTRUM с помощью системного переключателя как описано в разделе 4.1.
SPECTRUM 128: SPECTRUM 128 запускается как обычно Чтобы запустить TRDOS
напечатайте следующее:
RANDOMIZE USR 15616 <ENTER>
где <ENTER> - клавиша ENTER. Тогда на экране появится надпись, указанная выше.
Теперь Вы находитесь в режиме TRDOS. Когда Вы изучите остальную часть справочника,
Вы сможете пользоваться различными командами и устройствами. Но прежде всего Вы
испытаете служебный диск. Служебный диск защищен от записи (см. раздел 2.1) и должен
оставаться таким.
Вставьте диск с обслуживающей програм мой в дисковод А (и закройте крышку дисковода,
если необходимо). Для представления на экране содержания диска с обслуживающей
программой может быть использована программа САГ (см. раздел 8.1.). После того, как
TRDOS выдает А>, напечатайте нижеследующее и посмотрите, что произойдет:
CAT <ENTER>
Обратите внимание, что CAT - ключевое слово, a <ENTER> представляет собой клавишу
на клавиатуре. На экране будет представлено примерно следующее:
TITLE (название): UTILI
6 FILE(S) (файлов)
О DEL FILE(S) (файлов)
A: SECREAD <С>1: ТАРЕ 5.0<С>4
A: DOCTOR <В> 22: TAPECOPY <В>1
A: BOOT <В> 3: MAGIC <В> 12
1221 FREE
Предупреждение!
Никогда не отсоединяйте дисковый интерфейс от SPECTRUM при включенном в сеть
устройстве.
Никогда не вставляйте диск в дисковод с закрытой дверью при подключенной или от-
ключенной электроэнергии.
3.2. ПЕРЕЗАГРУЗКА
SPECTRUM 128 не может использовать эту возможность. При подключении к сети или
после сброса (предполагая, что системный переключатель в обычном положении, см.
раздел 4) Вы автоматически переходите в режим TRDOS, и система всегда выбирает
дисковод A. TRDOS делает попытку загрузить программу BASIC, назваемую "BOOT"
(самозагрузка). Если в дисководе "А" диск отсутствует или если дверь дисковода открыта,
или диск не содержит программы "Самозагрузки" BASIC, то на экран выводится обычная
подсказка, как в разделе 3.1.8.
Если диск находится в дисковод ее закрытой дверью, при подключен ной электроэнергии,
диск может быть испорчен, особенно, если дисководы имеют постоянно загруженные
головки. Для самозагрузки рекомендуются следующие процедуры:
1) Подключение SPECTRUM
2) Загрузка диска с программой самозагрузки BASIC в дисковод А.
3) Сброс компьютера, как описано в разделе 4.1
3.3 АВТОПРОВЕРКА ДИСКОВОДА
Когда запускается TRDOS, она автоматически проверяет технические условия дисковода
А. Это предполагает, что Вы хорошо владеете техникой и включили дисковод, прежде чем
это сделал компьютер или до него.
TRDOS подгоняется так, чтобы соответствовать скорости шага дисковода. Э/о значит, что
более быстрая скорость шага новейших дисководов находит полное применение. TRDOS
также осуществляет проверку на соответствие технических условий дисковода на 40 или 80
дорожек, одно или двустороннего.
Эти испытания проводятся даже в том случае, если в дисководе нет диска. Если подключено
более одного дисковода, они тоже подвергаются проверке при первой адресации к каждому
отдельному дисководу.
3.4. КОМАНДЫ "40" и "80"
У некоторых из устаревших 40-дорожечных дисководов нет конечного останова и,
следовательно, автопроверка не действует, то есть, TRDOS воспринимает его как 80-
дррожечный дисковод. Команда "40" информирует систему, что выбранный дисковод 40-
дорожечный.
Например:
40 <ENTER>.
При наличии переключаемых 40/80-дорожечных дисководов возможно переключение с
40 на 80 после того, как TRDOS произвела проверку. TRDOS должна быть информирована,
что Вы переключились, введя команду "40" или "80".
Например:
80 <ENTER>.
3.5. ДРУГИЕ ИНТЕРФЕЙСЫ
Дисковый интерфейс должен совмещаться со всеми имеющимися перефирийными
устройствами SINCLAIR, такие как интерфейс 1 и микродрайв. Он может работать также с
другими вспомогательными устройствами. Для этого они просто включатся в соединитель,
находящийся в задней части дискового интерфейса.
Существует несколько вспомогательных устройств, использующих память ROM только
для чтения занимающих место в памяти наряду с TRDOS. Если у нас подсоединен такой
интерфейс, и если он неотключен, то Вы должны сначала отключить дисковый интерфейс,
установив системный переключатель в положение "Выключено".
4. СИСТЕМНЫЙ ПЕРЕКЛЮЧАТЕЛЬ
Системный переключатель находится на левой стороне дискового интерфейса. Это
трехпозиционный переключатель. При нормальной работе переключатель должен
находиться в положении NORMAL (среднее).
SPECTRUM 128: Системный переключатель должен находиться в положении "Выкл".
Обычно при работе в TRDOS переключатель должен находиться в центральной позиции.
Это отражено в разделе 3.1.6. При включенном питании это дает возможность TRDOS
принять управление.
Переход от TRDOS на SOS и обратно (раздел 6) осуществляется без помощи переклю-
чателя. SOS-STANDART OPERATING SISTEM).
4.1. СБРОС
SPECTRUM 128: не пользуйтесь системным переключателем для сброса. Вместо этого
используйте кнопку сброса на компьютере. Устройство сброса вмонтировано в дисковый
интерфейс. Оно предназначено для полного сброса системы. Практически результат как
если бы SPECTRUM был отключен и затем снова включен Для обеспечения сброса Вам
следует перевести переключатель в положение RESET, а затем вернуть в центральное
положение (NORMAL). После сброса на RAMTOR восстанавливается обычное значение, все
переменные и память стираются. Следовательно, с помощью этого метода можно быстро
и легко убедиться, что все команды и данные предыдущих операций сброшены и SPEC-
TRUM очищен.
Сброс обеспечивает также быстрый способ перехода от одного вида работы к другому, при
условии, что данные в памяти не нужны.
4.2. ПОЛОЖЕНИЕ "ВЫКЛЮЧЕНО"
SPECTRUM 128: всегда устанавливайте системный переключатель в это положение.
Как упоминалось в разделе 3.5, существует несколько дополнительных устройств, которые
используют ПЗУ (постоянное запоминающее устройство), которое претендует на пространство
в памяти наряду с TRDOS. Если у Вас подсоединен такой интерфейс и если он не отключен,
при подключении к источнику энергии системный переключатель должен находиться в
положении "Отключено".
5. КРАТКИЙ ПЕРЧЕНЬ КОМАНД TRDOS
5. КРАТКИЙ ПЕРЧЕНЬ КОМАНД TRDOS
щттщь |
' ' ' ' **immn |
|
• "А:" |
У6?*И0*«« по умолмкни* Д*)ШИ1ДК A |
5.4 |
• ИВ:И |
Уст*К09*И ПО У^ЯМ*«ИК> |
5.4 |
• "С:" |
Yfetяиоак* no ушлч*аик> дисковод* С |
54 |
* |
Уодммм» по умонч*ни*о дисковод* з |
5.4 |
40 |
Информирует TRDOS, что дисковод ^дор^^чный |
2.4 |
80 |
Информирует ?ЙОО$* ЧТ* Дисковод бО^дорОжвНный |
24 |
CAT |
д на экран спра&очник» диска |
7.1 |
CAT # |
Распечатка справочника диска |
7.3 |
CLOSE # |
Шрыгь файл t поспадовм^ньным проюшпьтн
доступом |
13 |
COPY |
Копирование файлов с диска на даек |
8.1 |
COPY A |
Ко^иро^ани^файпатсист^ме с одни* диско м |
8.2 |
COPY В |
Дуфлнровани* д»ск*»систоме о одним диском |
8.2 |
ERASE |
УДаЛиТь файЯы с ДисКа |
92 |
LIST |
Вывод содержания ДИСКЙ |
72 |
LIST # |
Распечатка содержании диске |
72 |
LOAD |
ЗагруОка Программы сДИск* |
102 |
INPUT*' |
ЧТОНИ0 фийпа С НОСЛ*ДО«ИГГ*ЛЬНЫМ произвольным
доступом |
13 |
MERGE |
Объединить программу ВА$Ю t диска и Программу ВА$Ю еОЗУ |
10 3 |
MOVE |
Оптировать а упаковать имеет* файлы на диск |
93 |
NEW |
Изменить имя файла |
9 1 |
OPEN # |
Открыть ф*#п |
13 |
РЕЕК |
|
4.1 |
РОКЕ |
|
4.2 |
PRINT # |
Pttftftttttic* ф*й*Ш |
13 |
RANDOMIZE USR: 15616 |
одмюд ктяооз иазоз |
5.2 |
RANDOMIZE USR: 15619 |
&Ы30» Т&ОО&хВДМДОА ИЗ |
5.3 |
RETURN |
Пер«Х6& к SOS TRDOS |
5.1 |
RUN |
I тркантьц wiycTWfr программ!** диск» |
10.2 |
SAVE |
Здаисрть прргдомму *£# двдк |
10.1 |
VERIFY |
Ср*»ки?* пдодоммугОЗУ* ты*** |
10.1 |
Приведенная выше таблица представляет собой свод команд TRDOS. Прежде чем
использовать эти команды, прочтите соответствующие разделы данного справочника. Где
это возможно, указанные команды представляют собой ключевые слова, полученные
обычным способом с помощью SOS. Некоторые команды требуют дополнения, о чем будет
говориться в особом разделе.
6. СИНТАКСИС КОМАНД
TRDOS является гибкой системой, и Вы можете осуществлять доступ к системе на дисках
следующим образом:
A) непосредственно из TRDOS
B) прямым доступом из SOS
C) из BASIC
D) из программ в машинных кодах
Когда Вы работаете с TRDOS, Вы видите обозначение дисковода плюс стрелку. Это будет
называться подсказка TRDOS, например:
А>
В>
В соответствии с только что законченной операцией за подсказкой может следовать
дальнейшая часть команды TRDOS, например:
А> RUN" BOOT"
Команды TRDOS могут быть введены непосредственно после подсказки. Если вслед за
подсказкой идет предыдущая команда, Вы должны отменить старую команду с помощью
клавиши DELETE.
6.1. ПЕРЕХОД ИЗ TRDOS В SOS
Для перехода в SOS используется команда RETURN (возврат). В н ижесл едующем при мере
слова в скобках представляют собой объяснение, а не часть синтаксиса
А> (подсказка TRDOS на экране)
A>RETURN (N нажато - теперь на экране)
(С) SINCLAIR COPYRIGHT (нажато ENTER - теперь на экране)
Заметьте, что клавиша ENTER нажимается для завершения команды RETURN. Если нет
других указаний, это будет относиться к содержанию всего справочника, ENTER даже не
демонстрируется
6.2. ПЕРЕХОД ИЗ SOS В TRDOS
Для перехода от SOS к TRDOS, при указателе "К", необходима следующая запись:
RANDOMIZE USR 15616
Это достигается с помощью клюючевого слова на букву Т (RANDOMIZE), за котроым
следует буква L режима Е (USR), а затем номера. Как в примере в разделе 6.1, для
завершения команды следует нажать клавишу ENTER.
Если только один дисковод подогнан, это возвратит Вас к дисководу А:. Однако, если
подогнано более одного дисковода, то команда возвратит Вас к последнему выбранному
дисководу (см. раздел 6.4).
Хотя данная программа больше не выводится на дисплей, она все еще находится в
памяти и, после выполнения определенных команд TRDOS, таких как каталог диска, Вы
можете вернуться к SOS и LIST с целью представления этой программы на экран.
6.3. ВЫЗОВ TRDOS ИЗ SOS И БЕЙСИК - ПРОГРАММ
Синтаксис команды одинаков во все времена, но если команда вызывается из SOS или
из программы, она выполняет эту команду и возвращается в SOS. В этом случае префикс
должен быть следующий:
RANDOMIZE USR 15619: REM:
Например:
RANDOMIZE USR 15619: REM: САГ'В:"
Использование 15619 вместо 15616 сохраняет управление SOS. Действие CAT следует
предпринять на дисководе В (см. раздел 6.5).
Если данная команда не выполняет функций замещения, такие как прогон программы,
она завершает свое действие подсказкой дисководу, если используется TRDOS, либо
указанием SINCLAIR OK, если используется SOS, например:
A>CAT<ENTER>
по завершении получается подсказка А>
RANDOMIZE USR 15619: REM: CAT <ENTER>
в результате ОК.
Хотя существует возможность выполнять команды от SOS, это не рекомендуется. Во-
первых, если все действия предпринимаются от TRDOS, вероятность разрушения гораздо
меньше. Во-вторых, значительно уменьшается непосредственная печать, и, в-третьих, на
дисплей выводится текущий дисковод по умолчанию, что помогает избежать глупых
ошибок, ведущих к потере ценных данных.
Когда команды TRDOS включаются в программу BASIC, им должно предшествовать:
RANDOMIZE USR 15619: REM:
К тому же команда должна быть последним элементом в строке. При написании программы
или преобразовании ее как управляемую с диска, а не с кассеты Вы должны следовать
правилу - "команда TRDOS завершает строку". Например, строка программы с кассеты
LOAD" В: PROG RAM"
10 INK7: PAPER1: LOAD""CODE: GOSUB500: CLS: PRINT'PRESS ANY KEY" преобразуют-
ся для диска:
10 INK7: PAPER1: RANDOMIZE USR 15619: REM: LOAD"TITLE"CODE
20 GOSUB500: CLS: PRINT'PRESS ANY KEY"
Заметьте, что для диска нельзя использовать пустыеNN. Наряду с завершающей командой
TRDOS в строке 10 мы должны ввести заголовок, под которым сохраняется код.
6.4. ВЫБОР ДИСКОВОДА ПО УМОЛЧАНИЮ
Дисковод по умолчанию - этот тот дисковод, доступ к которому может осуществляться с
помощью любой команды, в которой не указывается подлежащий использованию дисковод.
При подключении к сёти или после сброса системы дисковод по умолчанию всегда А.
TRDOS поддерживает до 4 дисководов, обозначенных как А, В, С или D. Для изменения
дисковода по умолчанию формат команды следующий:
•"DRIVE:"
где дисковод - А, В, С или D. Например:
• ИВ:" - для перехода умолчания на дисковод В
•"А:" - для перехода умолчания на дисковод А
Примечание. Для обозначения дисковода команда может использовать верхний или
нижний вариант. Хотя на дисплее всегда будет представлена заглавная буква, предшеству-
ющая стрелке. Например, если произведено изменение умолчания с "А" на "В", все последу-
ющие команды будут осуществлять доступ к дисководу "В", если нет других указаний.
Если подогнан только один дисковод, то обозначение на экране останется А>, и гибкое
функционирование нескольких дисководов, продемонстрированное в этом руководстве,
отсутствует.
6.5. ВРЕМЕННЫЙ ВЫБОР ДИСКОВОДА
В некоторых случаях желательно оставаться в состоянии умолчания на одном дисководе,
но стремиться осуществить доступ к другому дисководу. Синтаксисом для этого является
суффикс к команде, указывающей требуемый дисковод. Суффикс выглядит как изменение
умолчания, но без звездочки, например:
"А:" или "В:" или "С:" или "D:"
Ниже приводится пример полного оператора из SOS:
RAMDOMSIZE USR 15619: REM: LOAD" В: PROG RAM"
Это обеспечивает загрузку "Программы" из дисковода В, независимо от того, какой из
дисководов является текущим дисководом по умолчанию, включая В.
7. ФОРМАТИРОВАНИЕ ДИСКА
Диск должен быть сформатирован до использования его компьютером. Это означает, что
секторы на каждой дорожке должны проверяться, идентифицироваться и получать метку
электронным методом с помощью TRDOS. Начиная с этого момента TRDOS будет следить
за тем, что и где хранится на диске.
В TRDOS содержится стандартная программа форматирования диска, и нет необходимости
в загрузке дополнительного матобеспечения. Форматирование может выполняться в лю-
бое время, даже если эта программа находится в памяти.
Для форматирования диска вставьте его в дисковод с умолчанием и закройте дверцу.
Отпечатайте ключевое слово FORMAT (Е SHIFT, SYMBOL SHIFT О), за которым следует
название диска в кавычках. Дли на названия может доходить до 8 знаков, с использованием
верхнего или нижнего регистров, включая пробелы. Например:
FORMAT"DISKONS"
Нажмите ENTER для завершения команды и ждите. Время, затрачиваемое TRDOS для
метки секторов, колеблется между одно и двусторонними 40 и 80-дорожечными дисково-
дами. Если дисководы двусторонние, то обе стороны форматируются автоматически. По
завершении на экране появляется:
DISKONS
624/624 или 1264/1264 или 2544/2544
А>
.На этом дисплее представлено название диска, за которым следует количество
сформатированных секторов, а затем максимально возможное количество секторов для
данного формата диска. Если первый номер меньше второго, Ваш диск дефектный.
Максимальное количество секторов варьируется в соответствии с техническими
особенностями диска. Система всегда использует дорожку 0, что оставляет 39 дорожек на
40-дорожечном, 79 на 40 или 80-дорожечном и 159 на DS 60-дорожечном. При 16 секторах
на Дорожку мы получаем 624,1264 или 2544 в качестве максимально возможного количества
(см. также раздел 2.2). Существуют случаи, когда Вы намереваетесь форматировать диск
как односторонний. Если дисковод только односторонний, то нет необходимости в
специальном форматировании, используйте просто стандартную команду TRDOS FORMAT.
7.1. ОДНОСТОРОННИЙ ФОРМАТ
Иногда бывает необходимо отформатировать диск как односторонний. Если дисковод
односторонний, используйте стандартную команду TRDOS.
Если дисковод двусторонний, то первым знаком названия диска должна быть $. Напри мер:
FOR М АТ"$С OU PER
После того, как Вы нажали ENTER и форматирование закончилось, на экране появится:
$DUMPER
624/624 или 1264/1264
А>
8. КАТАЛОГ СОДЕРЖАНИА ДИСКА
8.1. ОТОБРАЖЕНИЕ КАТАЛОГА
Для представления на экране содержания диска существует две команды. Первая и
наиболее часто используемая команда CAT. Вторая команда LIST. Доступ к обеим командам
осуществляется, когда программа находится в памяти. Команда CAT представляется на
экране название, тип и размер сектора файлов и подходит для осуществления почти всех
целей. Команда LIST представляет на экране каталог с расширенной информацией и
идеально подходит для анализа программы. Для получения каталога диска используется
следующий синтаксис*
CAT или LIST
Вы можете представить на экране каталог другого диска, не по умолчанию, например:
CAT'В:" или LIST'В:"
Можно также вызвать программу из SOS, например*
RANDOMIZE USR 15616: REM: САТ'А:" или
RANDOMIZE USR 15616: REM: LIST'A:"
Командой CAT на экране будет представлена следующая информация*
DISK TITLE - название диска
N FILES ' - количество файлов
N OF DELETED FILES • количество удаленных файлов
DRIVE: - диск:
FILE TITLES: - имя файла:
TYPE OF FILE: - тип файла
SIZE OF FILE - размер файла
N OF FREE SECTOR - количество свободных секторов
TRDOS PROMT - подсказка TRDOS
Например:
Название ACCOUNTS Значение
4 FILE(S) Диск в дисководе А 4 файла
1 DEL FILE(S) плюс 1 уничтоженный
A: BONE 12 Вапрограмма BASIC 12 секторов
A: BONE1 6 C=MACHINE CODE 6 секторов (1.5К) ,
A: BONE213 #»последоват. произвольн. доступ 13 секторов 3.25К
A: BONE3 7 0*массив данных 7 секторов 1.75К
FREE 2503 2544-38s2506 (Размер свободного пространства)
А> дисковод с умолчанием А
Устраненный файл занимает 3 сектора, оставляя свободными 2503 сектора
Если количество файлов, подлежащих представлению на экране более 30, появляется
"SCROLL?" (листать?). Нажатие обычной клавиши SPECTRUM обеспечит продолжение
представления на дисплее. Перечень завершается символами NNN или "BREAK".
Ниже приведен пример результата представления на дисплее команды LIST.
Название POOLPERM Дисковод В:
4 файла 80-дорожечный, двусторонний
1 удаленный файл свободных секторов 2480
Название файла START LENGTH LINE
POOLCAL 5 0029801200 25
25-начальная строка
BASIC-программы
POOLI 32 32768 08000
POOLPACT 7 01780 01780
POOLBASE 8 30000 32000
На дисплее представлены все обычные подробности о диске - то, что он находится в
дисководе В; что он 80-дорожечный двусторонний с 4 файлами и 2480секторами (около 620
кБайт) в свободном состоянии. Кроме информации CAT о заголовке, типе и размере, у нас
есть теперь стартовый адрес, длина и, в случае с BASIC, начальная строка программы.
8.2. РАСПЕЧАТКА КАТАЛОГА
Часто желательно знать содержание дисков, не используя каждый раз компьютер для
представления на экране каталога. В этом случае наиболее вероятным решением являются
карандаш и бумага, хотя это неудобно и очень часто ведет к ошибкам. TRDOS дает Вам
возможность создать твердую копию каталога диска при условии, что у Вас есть принтер,
подсоединенный к системе Нижеприведенный пример основан на использовании
интерфейса 1. Обычная процедура SOS открытия потока должна запускаться до распечатки.
Это требует возвращения к SOS при текущей работе в TRDOS и при еще неоткрытом потоке.
При работе в SOS можно ввести обычный синтаксис интерфейса 1, например:
FORM AT" 1":9600 ЮРЕ N#4:и 1"
Когда поток открыт, предпочтительно вернуться на TRDOS, так как это обеспечивает
лучшее управление и меньшее количество печати (RANDOMIZE ПРЕФИКС). Возвращенные
в TRDOS команды САТ# и LIST# точно такие же, как вышеобозначенные команды CAT и LIST,
например:
САТ#4 посылает каталог на печать через поток 4
LIST#4,"B:" посылает расширенный каталог дисковода В на принтер.
Руководство SINCLAIR имеет дело с использованием потоков от 0 до 15. Потоки от 0 до 3
зарезервированы для SPECTRUM. Непосредственно используемый поток между 4 и 15 не
имеет значения. Открытый поток должен быть потоком, используемым в командах САТ#
или LIST#.
9. КОПИРОВАНИЕ ФАЙЛОВ
Существуют три команды для копирования:
bOPY для копирования обычного файла.
COPY А для копирования файла системы с одним дисководом.
COPY В для дублирования системы одним дисководом.
Основной элемент синтаксиса COPY.
Это ключевое слово SPECTRUM на клавише "Z". Основной синтаксис следующий:
COPY"NEW FILE", "OLD FILE'TYPE
Требуемый синтаксис следует практике SOS таким образом, что названия как нового, так
и старого файла помещаются в кавычки, а тип файла обозначается с помощью ключевых
слов SOS. Четыре различных типа файлов следующие:
BASIC PROGRAM (программа БЕЙСИК),
CODE MACHINE CODE PROGRAM (программа в машинных кодах)
DATE (файл массива данных)
# (файл с последовательным/произвольным
доступом)
Обратите внимание, что программа BASIC имеет тип пустого файла. Все команды должны
иметь точную форму наименования, включая верхний и нижний регистр и пробелы, а также
тип файла. Поэтому лучше всего иметь дисплеи CAT. Следует помнить, что в тех случаях,
когда следует заключить в кавычки 2 наименования, например для команд COPY или NEW,
первым заключается в кавычки новое наименование. К тому же тип не следует за новым
наименованием, т.к. он идентичен старому.
9.1. КОПИРОВАНИЕ НА ТОТ ЖЕ ДИСК
Когда Вы установили диск, содержащий файлы и подлежащий копированию, в дисковод
А (не имеет значения, какой диск используется), первое, что надо сделать, это вызвать CAT
этого диска. Следует сообщить TRDOS название файла, подлежащего копированию и
название, по которым следует записать эту копию, например:
COPY"VAT69","WHISKY"CODE
Заметьте, что новое и старое название файла находятся в кавычках и разделены запятой.
Поскольку это мифическая программа, отнсящаяся к алкогольным напиткам, Вы должны
добавить тип файла CODE. Нажмите ENTER, и команда исчезнет на две секунды. Когда
подсказка TRDOS снова появится, явного изменения не будет. При выполнении другой
команды CAT мы обнаружим, что на дисплее представлен новый файл VAT69.
Вы не можете записать два файла на один и тот же диск с идентичными названиями.
Идентичные означает абсолютно одинаковые. Можно иметь два.файла с одинаковыми
названиями, но один в нижнем, а другой в верхнем регистре. Один может быть программой
BASIC, другой - программой машинного кода, например:
STOCKFILE<C>
STOCKHLE<B>
приемлемо, потому что типы файлов различны.
PURCHASE<B>
PURCHAS«<B>
приемлемо, потому что последняя буква в другом регистре. Используя этот принцип,
можно было бы скопировать наш предыдущий пример, не отходя от общего термина
"WHISKY" на новый:
COPY"WHISKY","WHISKy"CODE или
COPY"WHISKY2","WHISKY"CODE.
До сих пор мы рассматривали копирование только на один и тот же диск. Процедура
копирования на другой диск зависит от того, имеется ли у Вас второй дисковод.
9.2 КОПИРОВАНИЕ И ДУБЛИРОВАНИЕ НА ОДНОМ ДИСКЕ
Если имеется только один дисковод, нельзя использовать обычную команду COPY. Ьбе
команды "COPY А" и "COPY В" предназначены для системы с одним дисководом.
Первая "COPY А" используется для копирования одного файла с одного диска на другой,
используя один и тот же дисковод. Вторая команда "COPY В" используется для дублирования
диска на другой диск, то есть для копирования всех файлов.
Вот примеры команды "COPY А"
COPY A"WINES" или
COPY A"BEER"CODE
где "WINES" и "BEER"CODE - существующие файлы. Заметьте разницу. Прежде мы
вносили новое наименование в кавычках тотчас же после подсказки. Теперь мы сообщаем
TRDOS, какую программу копировать, и таким образом существующее наименование идет
в кавычках после "COPY А".
Чтобы удостовериться, что у Вас в дисководе правильный диск, Вам дается подсказка
вставить диск и нажать "Y". После прочтения диска программа дает Вам подсказку заменить
его вторым диском и ввести новое наименование, под которым будет копироваться данная
программа. Не следует придавать слишком большое значение созданию дублированной
копии всех программ. При работе, основанной на использовании кассеты, эта деятельность
поглощает слишком много времени. Чтобы программа представляла ценность, она должна
быть скопирована, лента повторно перемотана и затем проверена. Это довольно долгая
процедура!
При использовании TRDOS и диска копирования и, по желанию, повторная загрузка
программы для проверки правильности работы, займет меньше минуты. В основном
дублирование программы состоит из создания копии на другом диске, предназначенном
исключительно для целей дублирования.
Команда "COPY В" действует как расширение команды "COPY А". Стандартная программа
прогоняется с помощью ввода команды "COPY В". Начиная с этого момента на экране
появляется подсказка относительно смены диска и какие клавиши нажимать.
9.3. КОПИРОВАНИЕ И ДУБЛИРОВАНИЕ НА ДВУХ ДИСКОВОДАХ
Копирование на другой дисковод автоматически означает, что Вы будете копировать на
другой диск. Хотя взаимный обмен может происходить между любыми комбинациями двух
дисководов, мы используем дисководы А и В. Из синтаксиса очевидно, как будет
осуществляться ввод других комбинаций. Введите ключевое слово COPY, а затем два
заголовка в кавычках, но в этот раз включите временный идикатор дисковода. Работая с
другим диском мы можем использовать такое же наименование на втором диске:
COPY"A:WHISKY","В: WHISKY"
Хотя дисковод с умолчанием - это А, мы производим копирование с диска В на А и
используем то же самое наименование, которое не используется на диске А. Если бы диски
поменять местами в двух дисководах, у нас было бы:
COPY"B:WHISKY","A: WHISKY"
и таким образом копируется файл с дисковода А на дписковод В.
Дублирование производится гораздо проще при использовании системы с двойным
дисководом. Диск, подлежащий копированию, помещается в одном дисководе, а приемный
диск (пустой и отформатированный или частично использованный) вставляется в другой
дисковод Могут использоваться любые дисководы. Мы используем дисковод А в качестве
источника и дисковод В в качестве приемника. Синтаксис команды подобен копии
одиночного файла с "*"> (т.е вместо имени файла - *) заменяя специфическое название
файла, например*
COPY"B:*","A:*"
Остальное будет выполнено вводом команды TRDOS. Если названия файлов не
дублированы, а на принимающем диске имеется достаточно места, работа заканчивается
возвратом подсказки.
А>
Если название файла дублируется, то появляется сообщение об ошибке "Запись на
существующем файле "Y/N". Введите "Y" и произойдет наложение записей. Вводом N
копирование будет продолжено, но этот файл скопирован не будет. Это дает возможность
позднее изменить и скопировать один файл, если наименование было дублировано на
двух различных файлах.
Преимущество "COPY - это более быстрое копирование по сравнению с копированием
каждого файла отдельно.
10. ПЕРЕИМЕНОВАНИЕ, СТИРАНИЕ ФАЙЛОВ, ОБСЛУЖИВАНИЕ ДИСКА
10.1. ПЕРЕИМЕНОВАНИЕ ФАЙЛОВ
Способность к изменению заголовка файла на дисках - это одна из наиболее гибких
команд, имеющихся в нашем распоряжении. Изменение заголовка играет большую роль
для разработки программы К тому же Вы имеете возможность исправить ошибки печати
(они случаются) в заголовках программ.
В отличие от других команд TRDOS этот диск должен находиться в дисководе с
умолчанием, и этим дисководом должен быть дисковод А.
Это также одна из небольшого количества команд на диске, для которой Вам следует
находиться в TRDOS, а не выдавать команду из SOS. Следовательно, мы будем в TRDOS,
используя дисковод А за ключевое слово SPECTRUM NEW (клавиша А). Сделайте сначала
CAT диска с тем, чтобы на экране был представлен подлежащий изменению файл. Теперь
вводите ключевое слово NEW, а за ним - новый заголовок (как всегда, в кавычках), а затем
существующий заголовок; они раделяются запятой.
NEW" BOOT'V'P ROG"
Нажмите ENTER, и подсказка исчезнет на пару секунд. Когда она вновь появится, ничего
как будто не произойдет. Повторите CAT, и листинг снова появится на экране, и Вы увидите,
что "PROG" заменено на "BOOT".
10.2. УДАЛЕНИЕ ФАЙЛА
Если файл на диске устарел и больше не требуется, его можно стереть. Командное ключевое
слово ERASE, оно получается с помощью перехода в режим Е, нажатия и удержания
SYMBOL SHIFT и нажатия клавиши 7, например:
ERASE"OLDPROG"
ERASE"ABSOLE" DATA
Теперь мы вводим ENTER команду. Когда через пару секунд вновь появляется подсказка,
CAT подтверждает, что этот файл исчез, а данный факт зарегистрирован в заголовке CAT
под номером устраненного файла.
10.3. УПАКОВКА ДИСКА
Когда файл стерт, секторы, которые он занимал, должны быть освобождены для других
файлов. Чтобы обнаружить такие "потерянные" секторы, используя команду MOVE. Это клю-
чевое слово SPECTRUM получается с помощью перехода в режим Е и нажатия обеих
клавиш - SYMBOL SHIFT и 6, например
MOVE или MOVE"В:"
Хотя возможен и последний пример, предпочтительно выполнять это по умолчанию для
данного дисковода, с которым мы работаем Это команда, которая с наибольшей'
вероятностью должна использоваться из TRDOS, а не из SOS
Войдя в TRDOS, мы выполняем CAT с целью исследования диска, возможно, произвели
некоторое стирание, и теперь заканчиваем с помощью MOVE с целью запроса пространства
для использования.
Сама команда MOVE делает всю работу по реорганизации диска и его указателя. По
завершении снова появляется подсказка TRDOS. Если теперь вводится CAT, на распечатке
будет показано 0 устраненных файлов и увеличенное количество свободных секторов. Как
и все команды машинных кодов, MOVE быстродействующая, но используемое время
варьируется в соответствии с количеством и размером записанных файлов и устраненных
файлов и их местонахождения на диске. Чтобы сократить время ожидания до минимума,
следует ввести MOVE немедленно после устранения. Это помогает избежать большого
количества повторных прогонок, и всегда точно известно, какое место на диске свободно. Он
готов к минимальной загрузке, без остановок и и без предварительных действий по
обслуживанию.
11. ЗАПИСЬ, ПРОВЕРКА, ЗАГРУЗКА, ПРОГОН И СЛИЯНИЕ
Синтаксис всех этих команд одинаков, как Вы увидите, эти команды имеют тот же самый
или подобный синтаксис, как и те, которые используются для системы, основанной на кас-
сете. Все эти команды действуют на файлы Файлом на диске может быть программа BASIC,
программа в машинных кодах, файл массива данных или файл с последователь-
ным/произвольным доступом. Загрузка и сохранение файла с массивом данных рассматри-
ваются в разделе 13, а файлы последовательно/произвольного доступа в разделе 14. В
этом разделе рассматриваются программы BASIC и машинных кодов.
В процесс всех пяти операций SAVE/VERIFY/LOAD/RUN/MERGE для прерывания команды
может использоваться клавиша BREAK. Если в дисководе нет диска, команда будет
прервана и на экране будет представлено сообщение об ошибке "NO DISK". Таким же
образом, если на диске не имеется файла, то на экране будет представлено сообщение об
ошибке "NO FILE(S)".
11.1. КОМАНДЫ SAVE и VERIFY
С помощью команды SAVE программа в SPECTRUM записывается на диск. Следует
указать название программы и поставить его в кавычки. Для программы BASIC не требуется
типа файла. Однако, номер строки может быть указан после ключевого слова LINE для
автопрогона. Если номер строки не указан, программа будет прогоняться с первой строки.
Например:
SAVE"HOMEACC" LINE 100
SAVE"GRAPH" LINE
SAVE"A:DESIGN"
Для программы в машинных кодах вы должны указать тип файла CODE, за которым
следует стартовый адрес и количество байтов, подлежащих сохранению, например:
SAVE"DISCOUNT" CODE 47800,955
SAVE"B:COLLEC" CODE 32768,4000
Команда VERIFY проверяет, является ли файл, записанный на диск тем же самым, что и
файл в памяти. Команда VERIFY может быть использована для проверки BASIC-программ,
программ в машинных кодах и файлов массивов данных Например:
VERIFY"A:DESIGN"
VERIFY"DISCONT" CODE 47800,955
VERIFY"MONEY" DATA M ()
Если они различны, на экране появляется сообщение - проверка с ошибкой (VERIFY
ERROR)
11 2. КОМАНДЫ LOAD И RUN
Если программа BASIC предназначена для автопрогона с номера строки, например:
SAVE' INTEREST" LINE 25
то автопрогон будет осуществляться, какая бы команда (LOAD или RUN) ни использовалась.
Если программа BASIC не сохранена для автопрогона, RUN будет осуществлять загрузку и
прогон неавтоматической программы прогона. Например:
LOADNINTERESTN RUNNDESIGNH
Как Вы вероятно ожидаете, TRDOS будет информировать Вас о "недостаточной памяти",
если Вы сделаете попытку загрузить или прогнать программу, которая требует больше
памяти, чем имеется в распоряжении у SPECTRUM. Это может случиться, если RAMTOR
было устанолено слишком низким. Если Вы вводите LOAD или RUN без наименования
файла, TRDOS будет загружать или прогнять программы "Самозагрузка" BASIC.
Как видно из вышеприведенных примеров, синтаксис тот же самый, что и в SPECTRUM
BASIC. Что касается программ в машинных кодах, они могут быть загружены на тот же адрес,
из которого они были взяты на хранение, например:
LOAD"A:SALECALC" CODE
или загружены на другой с помощью указаний в инструкциях по загрузке, например:
LOAD"MARGIN"CODE 51000
При прогоне програм в машинных кодах адрес автопрогона должен быть тем же, что и
стартовый адрес программы, например:
RUNNDISCOUNT" CODE 47800
при условии, что этот код предназначен для автопрогона, начиная от 47800, загрузка
пройдет хорошо. Существует вариант использования загрузчика командой из двух строк,
например, запись (SAVE) последующей программы на диск, как "DCTLOAD"LINE 10.
10 RANDOMIZE USR 15619:REM:LOAD"DISCOUNTmCODE 47800
20 RANDONIZE USR 47838
Чтобы прогнать программу, Вы вводите RUNHDCTLOAD" LINE, с помощью чего будут
осуществляться загрузка в машинных кодах и затем запуск ее, начиная от 47838.
Двустрочный загрузчик необходим, так как команда TRDOS должна быть последней
записью в строке.
11.3. КОМАНДА MERGE
Слияние TRDOS - то же, что и слияние SOS. Она использует то же ключевое слово (Е
MODE SYMBOL SHIFT) и служит той же цели слияния в памяти SPECTRUM программы BASIC
с диска и этой же программы, уже имеющейся в памяти. Например:
MERGE"SUBROUr
MERGENB:FUNCT2"
12. ПЕРЕМЕЩЕНИЕ ПРОГРАММ, НАХОДЯЩИХСЯ НА ЛЕНТЕ
Если Вы написали программу на кассете,то копирование ее на диск представляет
некоторые проблемы. Вы загружаете свою программу с кассеты в SOS как обычно. Когда
программа находится в SPECTRUM, она может быть записана на диск с помощью
непосредственного ввода с клавиатуры, например:
RANDOMIZE USR 15619:REM:SAVEHXXX" или
RANDOMIZE USR 15819:REM:SAVEMXXX"CODE NNNN.BBB
Можно скопировать много других программ с помощью программы UTILITY DISKTAPECOPY
(см. приложение) (копия на ленте обслуживающего диска).
Синтаксисэтих программ может потребовать преобразования с тем, чтобы он работал при
TRDOS. Для других программ, которые трудно или невозможно преобразовать и прогнать на
диске, можно использовать "Волшебную кнопку" (MAGIC BUTTON).
12.1. ПРЕОБРАЗОВАНИЕ ПРОГРАММ
Очень многие программы представляют собой смесь BASIC и машинного кода, что
усовершенствует скорость их выполнения. Элемент BASIC может варьироваться от простой
программы загрузки кода до более сложного интерфейса между кодом и пользователем.
Для тех программ, которые используют BASIC в качестве интерфейса, переход на
использование TRDOS относительно простой. Другие программы могут требовать значитель-
ной "утряски", чтобы их можно было изменить для работы с TRDOS. Некоторые трудные
программы могут потребовать использования "Волшебной кнопки" (раздел 12.3) как
единственного средства решения этой проблемы.
Вы должны иметь доступ ко всем командам LOAD или SAVE в первоначальной програм-ме
BASIC, требующей изменения, поэтому первым шагом является распечатка (LIST) программы
BASIC. Используемая методика должна варьироваться в соответствии с индивидуальной
программой. В некоторых случаях характеристики программы LOAD и SAVE минимальны, и
все, что требуется для обнаружения местоположения команд, - это минимальное и быстрое
сканирование листинга. Другие программы могут иметь несколько вариантов LOAD и SAVE.
Самый простой способ в этом случае - пройти через программу по одной строке за раз,
осуществляя поиск команд LOAD и SAVE.
Каждый раз, когда такая команда найдена, в дополнение к обычному префиксу
производится модификация синтаксиса, т.е.
RANDOMIZE USR 15619:REM: это вводится перед существующим LOAD и SAVE в
программе.
Следует помнить также два других положения. Во-первых, команда TRDOS должна быть
последним элементом в строке программы; во-вторых, следует принимать во внимание
местоположение дисковода. Первый пункт часто будет требовать небольшой модификации
в нумерации и в содержании строк. Оба эти пункта проиллюстрированы на нижеследую-
щем примере.
EXISTING PROGRAM: (существующая программа)
500 IF Xs5 THEN INPUT"NAME";N$:SAVE N$ DATA C$(): VERIFY N$ DATA C$():GOSUB 700
505 IF XsV THEN GOSUB 800:INPUT"TITLE";T$:SAVE T$: SAVE T$ CODE 50000, 575
506 ...(продолжение программы)
Предположим, что эти файлы записаны на дисковод с умолчанием.
NEW PROGRAM: (новая программа)
500 IF Х=5 THEN INPUT"NAME";N$:RANDOMIZE USR 15619: REM:SAVE N$ DATA C$()
502 GOSUB 700
504 IF X=V THEN COSUB 800:INPUTHTITLEM;T$: RANDOMIZE USR 15619:REM:SAVE T$
505 RANDOMIZE USR 15619:REM:SAVE T CODE 50000, 575
506 ...(продолжение программы).
Регулировка строки изменяется от программы к программе. Чтобы обеспечить необходимую
1 строку на команду TRDOS, достаточно неиспользованных строк 502 и 504. Иногда может
возникнуть необходимость в подгонке других строк, не связанных непосредственно с
командами TRDOS, с целью создания достаточного пространства. Следует постоянно
следить за потоком програм м. Часто можно обнаруж ить, что в результате развития програм мы
другая часть программы переходит на номер строки, которую Вы используете в настоящее
время.
Существуют следующие правила преобразования:
1. Команда TRDOS должна быть последним оператором в строке.
2. Ко всем существующим командам LOAD и SAVE необходимо добавить только префикс
RANDOMIZE USR 15619:REM:
3. Если используется более одного дисковода, удостоверьтесь, что используется
правильный дисковод.
4. Все файлы должны иметь наименование.
5. Проверьте поток программ при добавке промежуточных номеров строки.
12.2. ВОЛШЕБНАЯ КНОПКА
Волшебная кнопка расположена a тыловой части дискового интерфейса (см. диаграмму
1). Волшебная кнопка предназначена для записи (сохранения) программ, расположенных
на кассете и прогона их на диске без какого-либо преобразования.
Существует много программ, таким образом, что их очень трудно или невозможно
преобразовать и прогнать на диске. Это могут быть программы со сложной защитой или
программы, осуществляющие хранение и загрузку файлов данных для использования их
главной программой. Так как замена команд TRDOS невозможна, требуется другой метод.
В этом случае программа загружается и создаются файлы данных. Вместо использования
инструкцией программы SAVE, волшебная кнопка используется для вывода всех программ
и файлов на диск. Последующая перезагрузка означает загрузку всей упаковки вместо
файла данных.
Небольшие неудобства наличия разработанной по индивидуальному заказу версии
полной упаковки для каждого типа файла данных компенсируются скоростью и гибкостью
диска с TRDOS.
Форматированный пустой диск следует убрать исключительно по этой причине, а при
использовании он должен быть в дисководе А. Если все в порядке, нижеприведенная
последовательность демонстрирует подробные операции (если Вы работаете с TRDOS)
1. Вернитесь в BASIC, напечатав RETURN <ENTER>.
2. Переведите системный переключатель в положение "Отключено"
3. Очистите SPECTRUM, напечатав PRINT USR 0<ENTER>.
4. Загрузите программу с кассетной ленты и прогоните ее как обычно.
5. После того как программа загружена и идет, нажмите вошебную кнопку и тотчас же
отпустите ее. Затем память компьютера распечатывается на диск. Эта память хранится на
диске в виде файла (файлов).
SPECTRUM & PLUS: - создается только один файл. Этот файл содержит изображение
всех 46К памяти произвольного доступа. CAT диска продемонстрирует, что заголовок - это
а тип файла CODE.
SPECTRUM 128: - может быть записано до семи файлов в зависимости от того, использу-
ются ли страницы на верхней памяти произвольного доступа в 64К. Ниже приведен пример
каталога диска после распечатки с помощью волшебной кнопки.
TITLE:TEST
7 FILE(S)
О DEL. FILE ^
А:@ 192:7 64
А:@5 64:4 64
А:@3 64:1 64
А:@2 1
Наименование семейства этих файлов "<§>". Чтобы осуществить повторную загрузку файла
(для всех компьютеров SPECTRUM), изменяем синтаксис от обычного LOAD или RUN.
Вместо этого используется ключевое слово GOTO SOS, например: GOTO M@"CODE
Программа может быть переименована или скопирована на другой диск собственным
названием и прогнана с помощью команды GOTO, например:
NEWGAMEl'VW CODE
COPYMB:GAMEr,"A:@H CODE
При прогоне "GAME Г и при условии, что диск находится в дисководе А, используется
следующий синтаксис:
GOTO"GAMEl" CODE
SPECTRUM 128: Существует возможность переименования или копирован ir всех файлов
один за другим с помощью команд NEW и COPY. Однако, для Вашего уд' бства при
программе UTILITY MAGIC (волшебная кнопка) имеется на диске с обслуживающими
программами. Подробности описаны в приложении Эта программа UTILITY может также
использоваться для стирания "семейства" файлов, записанных с помощью волшебной
кнопки. Прежде чем использовать волшебную кнопку для записи программы, Вы должны
удостовериться, что диск не содержит никакого файла с названием "<§Г или и@1и и т.д.
Некоторые програм мы используют нестандартную программу сканирования клавиш. Для
этих программ необходимо сделать первым символом имени файла "$", например:
GOTO"$GAMEl" CODE
Если программа проверяется до копирования ее с заголовком на другой диск, то в
названии файла потребуется префикспри возникновении задачи сканирования клавиши.
Например:
NEW"$GAME2",M@"CODE
GOTO"$GAME2" CODE
В процессов загрузки этих файлов на экране дисплея будут содержаться некоторые
произвольные элементы - некоторое количество строк с элементами изображения, чей
внеш н и й в и д напом и нает графическое представлен ие азбуки Морзе Когда экран очищается,
программа продолжает свой ход с того места, где она была остановлена.
13. ФАЙЛЫ МАССИВОВ ДАННЫХ
Синтаксис SOS для загрузки или хранения нестрокового массива под заголовком MONEY
следующий:
LOAD"MONEY"DATA М() или SAVE"MONEY"DATA М()
Для строкового массива с цепочками требуется добавление $, например:
LOAD"MONEY"DATA М$()
Как большинство команд TRDOS, LOADING (загрузка) SAVEING (хранение) массивов
данных осуществляется с помощью синтаксиса SOS BASIC с префиксом и, возможно, с
помощью индикатора дисковода. Редко массивы данных управляются непосредственно с
TRDOS.
Природа эти х масси вов такова, что дисковод с умолчан ием представляет собой дисковод
А. Если у Вас двойная система дисководов, то можно предположить, что диск с данными
всегда загружен в один и тот же дисковод, например В, в то время как основная программа
и дисковод с умолчанием остаются в А. В этом случае используется временный индикатор
дисковода, например*
RANDOMIZE USR 15619:REM:LOAD"B:MONEY"DATA М()
При копировании, стирании и обновлении (COPY, ERASE, NEW) файла данных команда
всегда должна заканчиваться обозначением типа файла, т.е. DATA или TRDOS будут знать,
что они ищут файл BASIC, например:
COPY"A:MONEY","B:MONEYMDATA
14. ФАЙЛЫ С ПОСЛЕДОВАТЕЛЬНЫМ И ПРОИЗВОЛЬНЫМ ДОСТУПОМ
14.1. ОБЩЕЕ ОПИСАНИЕ
В последнем разделе обсуждались обычные массивы файлов данных. TRDOS
обеспечивает два дополнительных типа файлов данных, последовательного и
произвольного доступа. Чтобы использовать эти два типа файлов данных, сначала Вы
должны открыть поток. В SPECTRUM содержится 16 потоков. SOS резервирует потоки от О
до 3 для своего собствен ного использован ия, а потоки от 4 до 15 доступны для TRDOS. Когда
открыт поток для файла с последовательным или произвольным доступом, используется
336 байтов памяти произвольного доступа.
В файле данных могут храниться как числовые, так и строковые переменные. Компьютер
преобразует числовые переменные в строки. Строка заканчивается системно возвратом
каретки (ASCII CODE 13).
Данные файла с последовательным доступом записываются по порядку, как в кассетной
ленте. Чтобы считать цепочку по направлению к концу файла, необходимо начать с самого
начала файла. Данные файла с произвольным доступом хранятся в виде некоторого
количества записей. Можно считать или записать любую запись в этом файле, указав ее
номер. Следовательно, доступ к последней записи можно осуществить так же быстро, как
и к первой.
Другие команды TRDOS по выбору дисковода, копированию, изменению названий и т.д
все одинаково применяются к файлам последовательного и произвольного доступа.
Единственная разница - в типе индикатора файла, который представляет собой "#" вместо
"CODE" или "DATA". Например:
COPY"B:PHONE'7,A:PHONE"#
NEW'NEWFILEV'OLDFILE"*
ERASE"NAMEOLD"#
Как и файлы данных, файлы последовательного и произвольного доступа редко управляются
непосредственно с TRDOS. Поэтому предполагается, что нижеследующие примеры
находятся в программе BASIC.
14.2. ФАЙЛЫ ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА
Последовательный файл может быть открыт для записи или считывания, но не для
обеих операций в одно и то же время. Синтаксис для открытия файла для WRITE (записи)
следующий:
OPEN STREAM NUMBERl"FILENAME,,fW
Когда поток открыт для записи, ключевое слово программы BASIC PRINT используется
для записи данных в этот поток. Например:
10 LETDOS-15619
20 RANDOMIZE USR DOS:REM:OPEN #4,"TEST",W
30 PRINT#4;"THIS IS A TEST LINE"
40 RANDOMIZE USR DOS:REM:CLOSE #4
Обратите внимание на "DOS" вместо печати в "15619" и закрытия файла Цепочка в строке
30 будет записана в файле "TEST" на диске. Если бы файл не был закрыт, данные были бы
потеряны. Любой закрытый файл может быть повторно открыт для дальнейшей операции
записи с помощью считывания, изменения и повторной записи под новым названием.
Ситаксис для чтения открытого файла:
OPEN STREAM NUMBER,"FILENAME",R
При открытом потоке для READ используется ключевое слово SOS INPUT для считывания
данных из этого потока, например:
10 LET DOS«15619
20 RANDOMIZE USR DOS:REM:OPEN #7,"TEST",R
30 INPUT #7;A$
Этот файл данных TEST" будет загружен в А$ с диска.
14.3. ФАЙЛЫ ПРЯМОГО ДОСТУПА
Файл с произвольным доступом - это файл данных, который содержит некоторое
количество записей, пронумерованных от 0 и выше. Длина записей (макс.254 байта каждая)
выбирается и распределяется при первом открытии файла. Запись хранится в виде
отдельной строки. Любая строка, длина которой меньше длины распределенной записи,
записывается, выравнивается слева и завершается с помощью возврата каретки (ASCII
CODE 13). Оставшиеся байты записи теряются. Любая строка, длина которой больше длины
записи, будет усечена до распределенной длины и записана без возврата каретки.
Когда файл произвольного доступа впервые открывается, TRDOS распределяет 16
секторов (примерно 4К) в этот файл. Он будет автоматически расширяться, если длина
файла превысит 4К.
Для открытия файла произвольного доступа используется следующий синтаксис:
OPEN STREAM-NUMBER, "FILENAME"RND,RECORD-LENGTH
Для произведения записи в файл существует следующий синтаксис команды (префикс
RANDOMIZE не требуется для распечатки и ввода: PRINT и INPUT):
PRINT STREAM-NUMBER;RECORD-NUMBER,VARIABLE-NAME
Например:
100 RANDOMIZE USR 15619:REM:OPEN #8, "ADDRESS'RND, 100
150 PRINT #8;72,D$
Поток 8 был открыт для файла "ADDRESS", в котором под каждую запись назначено 100
байтов. Содержание D$ было помещено в запись номер 72 этого файгГа.
В отличие от последовательного файла, в этом случае можно считывать файл и делать
в него запись, когда файл открыт. Для считывания записи из файла используется следующий
синтаксис команд:
INPUT STREAM-NUMBER; (RECORD-NUMBER), VARIABLE-NAME
Например:
100 RANDOMIZE USR 15619:REM:OPEN #12, "TEST"RND,20
110 PRINT #12,20 A$
570 INPUT #12;(15),A$
990 RANDOMIZE USR 15619:REM:CLOSE #12
999 END
В строке 570 считывается запись с номером записи 15 (помните, что это 16-я запись) и
загружается в переменную А$. Когда все операции с файлом закончены, поток необходимо
закрыть, как указано в строке 990. Если электроэнергия будет отключена до закрытия потока,
то содержание будет утрачено. Одна запись может содержать более одной переменной.
Программа должна связать вместе цепочки этих переменных для произведения операций
записи. Таким же образом программа должна разбить цепочку после операции чтения, если
данные должны быть снова разделены на отдельные переменные.
15. НЕПОСРЕДСТВЕННАЯ ЗАПИСЬ/ЧТЕНИЕ СЕКТОРА
Наряду с тремя типами файлов данных, описанных в последних двух разделах, TRDOS
предлагает также считывание/запись файла DIRECT SECTOR.Oahh сектор содержит на
диске 256 байтов.
15.1. КОМАНДА РЕЕК
Команда РЕЕК дает Вам возможность считывать любую часть файла на диске и переносит
данные в память с произвольным доступом. Вы можете считывать только один сектор за
раз, и данные могут быть переданы в любое место в памяти с произвольным доступом.
Синтаксис команды следующий:
PEEK'TILENAME" BUFFER -ADDRESS,SECTOR-NUMBER
Например:
PEEK "RECORD" 30023,5
В этом при мере 5-ый сектор файла "RECORD" считывается, и его содержание записывается
в память с произвольным доступом из адреса 30023.
15.2. КОМАНДА РОКЕ
Команда РОКЕ дает Вам возможность записать сектор данных из памяти с произвольным
доступом в любое место в файле на диске. Синтаксис - такой же, как синтаксис команды
РЕЕК:
POKE"FILENAME" BUFFER-ADDRESS,SECTOR-NUMBER
Например:
POKE"B:OLD"30024,10
В этом примере длина сектора данных, начиная с адреса RAM (память с произвольным
доступом) 30024, записывается в 10-ый сектор файла "OLD" в дисководе В. Т.к. эта команда
изменяет содержание файла на диске, ее следует использовать осторожно.