ЮТ-88 на плис (Altera DE1)

 

CP/M

  1. 3. Выбрать в меню View > Start Debugger. Откроется окно дебаггера.

  2. 4. Нажать Ctrl-L и в появившемся окне в поле From ввести 0x0100 и выбрать файл, который надо перенести.

  3. 5. Файл будет загружен в память эмулятора. Перед закрытием окна дебаггера надо найти адрес конца загруженной программы для определения количества блоков для сохранения в CP/M. Для этого надо пролистать содержимое памяти в дебаггере и найти место после которого идут нули до адреса E000. Запишите это число. Два старших разряда адреса надо перевести в десятичный вид и это будет количество блоков, которые занимает программа. Например, если программа оканчивается по адресу 2F55, то переводим 2F в десятичный вид и получаем 47, что и является количеством блоков. Это число также надо записать или запомнить.

  4. 6. Закрываем окно дебаггера и вводим команду Монитора O0100,XXXX (XXXX - адрес окончания программы, например 2F55 из предыдущего примера). Перед тем как нажать ВВОД  запустите запись в wav файл нажав по этой кнопке:

  1. 7. По окончании записи вновь появится приглашение => после чего надо повторно нажать на кнопку с красным кругом, чтобы остановить запись в файл. Больше эмулятор нам не понадобится. Далее работаем только с компьютером на DE1.

  2. 8. Следующим шагом надо загрузить CP/M и после загрузки нажать СБРОС (ESC на клавиатуре). Перед этим необходимо включить ПЗУ Монитора-0 переведя выключатель SW[2] в положение “1”.

  3. 9. Далее запускаем Монитор-F обычным способом и после этого отключаем ПЗУ Монитора-0 (SW[2] в положение “0”).

  4. 10. Загружаем сохраненную в эмуляторе программу в компьютер командой I, подключив проигрыватель wav файлов ко входу платы и подобрав подходящую громкость сигнала (подробнее см. раздел “Монитор-F”). Программа будет загружена с адреса 0100.

  5. 11. По окончании загрузки выполняем “горячий старт” CP/M командой GDA00.

  6. 12. Теперь сохраним загруженную программу на квазидиск командой SAVE используя количество блоков, определенное в пункте 5 и имя файла под которым он будет сохранен. Например:


A> SAVE 47 M80.COM

Эта система была создана Г. Килдэлом в 1975 г. для микроЭВМ, использующих микропроцессор 8080 фирмы Интел (KP580BM80A – советский аналог) . Эта система была адаптирована и для компьютера ЮТ-88. Достаточно подробно ее структура, работа, распределение памяти и пр. было описано в журнале. С этим описанием можно ознакомиться, например, здесь: ХХХХХ.


Эта система использует электронный квазидиск объемом 256Кб, реализованный на SRAM, установленной на плате DE1.


Существует два способа загрузки CP/M в мой компьютер: загрузка дампа памяти и квазидиска с системой и некоторыми программами к ней или загрузка системы и программ с магнитофонного входа.


Рассмотрим первый способ, как самый удобный. В качестве первого шага необходимо загрузить Монитор-F как было описано на странице “ОПИСАНИЕ”. Далее необходимо подключить DE1 к Windows компьютеру через USB. Выключатель SW[8] переводится в положение “1” вводя DE1 в режим USB JTAG. На Windows компьютере запускается программа DE1_Control_Panel.exe, содержащаяся на диске прилагаемом к DE1. В меню выбирается: Open -> Open USB Port

Далее переходим на вкладку SRAM, отмечаем File Length и нажимаем кнопку “Write a File to SRAM”.

Вы выбираете файл для загрузки. Например это может быть мой файл, который можно скачать отсюда: ut-88_dump_v2.ram.zip и затем распаковать.

После загрузки выключатель SW[8] переводится назад в положение “0” и производится “горячий старт” системы командой GDA00 из Монитора-F. Команда DIR покажет вам какие программы установлены на квазидиске.


Вы можете содавать собственные дампы памяти с нужным набором программ. Для этого в программе DE1_Control_Panel надо выбрать “Entire Sram” и нажать кнопку “Load SRAM Contetnt to a File”. Естественно, что предварительно выключатель SW[8] должен быть установлен в положение “1”.


Для запуска этой системы вторым способом необходимо загрузить загрузчик с магнитофона в Мониторе-F, затем отключить ПЗУ Монитора-0 и его программ, а так же прерывания таймера (выключатели SW[2], SW[4] и SW[6] в положение “0”), если это не было сделано ранее, и запустить его командой G3100. Загрузчик произведет все необходимые распределения памяти и запустит систему, после чего на экране появится такое сообщение:


СРМ V―2,2 DISK RAM 256 К

А>


Появление на экране дисплея сообщения-подсказки А> говорит о готовности ОС СР/М к работе и приему команды. Если при наборе команды замечена ошибка еще до нажатия клавиши ВК, то можно вернуться назад  клавишей “←”.

В СР/М имеется ряд полезных управляющих символов:

УС + X удаляет последнюю строку символов;

УС + М эквивалент нажатия «ВК»;

УС + J эквивалент перевода строки;

УС + S приостанавливает вывод текста на дисплей. Повторное нажатие возобновляет вывод текста.


Используемые в СР/М команды разбиваются на две категории: встроенные команды («резидентные») и транзитные команды.

Встроенные команды по сути являются частью операционной системы СР/М. Обращение к ним и их использование осуществляются простым вводом имени соответствующей команды независимо от того, имеется ли в данный момент в системе квазидиск. В СР/М имеются следующие встроенные команды:

DIR ― просмотр оглавления диска;

REN ― переименование файлов;

ERA ― удаление файлов;

TYPE ― просмотр содержимого файла;

SAVE ― сохранение на диске области ОЗУ в виде файла.

Транзитные команды хранятся на квазидиске в отдельных файлах с именами, оканчивающимися расширением «СОМ». Транзитные команды по сути дела являются программами СР/М, но термин «транзитные» подчеркивает, что их программы можно загружать в оперативную память с адреса 100Н, затем занести на квазидиск.

Для вызова транзитных команд на исполнение достаточно просто ввести имя файла без расширения «СОМ». СР/М определит наличие файла с указанным именем и расширением «СОМ» в каталоге квазидиска и при его обнаружении вызовет данную программу на исполнение.

Одной из основных транзитных программ является CH.COM. Эта программа позволяет считывать и записывать файлы с “магнитофона” на квазидиск. С ее помощью можно наполнить квазидиск нужными программами.

Чтобы записать саму эту программу на квазидиск для использования, необходимо выполнить следующие шаги (если вы использовали метот загрузки дампа, то эта программа уже записана на квазидиске):

1)Загрузить загрузчик CP/M с магнитофона и запустить его командой G3100.

2)Перевести выключатель SW[2] в положение “1” таким образом включив ПЗУ с Монитором-0.

3)Нажать “СБРОС” (ESC или KEY[0])

4) Если плата расширения не подключена к плате DE1, то также необходимо включить отображение 7-ми сегментных индикаторов на дисплее (выключатель SW[1] в положение “1”) и перевести клавиатуру в режим кейпада (выключатель SW[0] в положение “1”).

5)Далее, после появления на крайних правых индикаторах 7-ми сегментных дисплеев числа 11, как приглашения, надо ввести команду запуска Монитора-F (7 F800).

6) После запуска Монитора-F надо перевести клавиатуру PS/2 в полный режим (выключатель SW[0] в положение “0”) и загрузить с магнитофона программу CH.COM (она будет загружена с адреса 0100). Программу можно взять в разделе “СКАЧАТЬ”.

7)Далее требуется ввести команду “горячего старта” системы CP/M – GDA00.

8)После загрузки системы и появления приглашения A>, командой SAVE мы можем скопировать предварительно загруженную программу на квазидиск. Т.к. длина программы составляет 3 блока (по 256Кб), то команда будет такова: SAVE 3 CH.COM (это означает, что первые 3 блока по 256Кб (начиная с адреса 0100) будут сохранены на квазидиск в файл с именем CH.COM).

Другие программы можно скопировать по аналогии с этой на квазидиск, повторяя шаги 2-8, но удобнее воспользоваться для этого уже загруженной программой CH.COM.

Воспользовавшись командой DIR  , на экране получим ответ, подтверждающий наличие в каталоге файла CH.COM.

Чтобы проиллюстрировать работу CH.COM, создадим с помощью встроенной команды SAVE некоторый вспомогательный небольшой по объему файл:


A>SAVE 2 EX.COM <ВК>


Проверим его наличие в каталоге с помощью команды DIR:


А: СН СОМ : EX СОМ

А>


Теперь на диске два файла. Запишем вспомогательный файл EX.COM на магнитную ленту кассетного магнитофона. Для этого наберем текст:


А>СН ЕХ.СОМ<ВК>


В результате на дисплее появится сообщение:


CHANGER VERS1.1 READY TR FOR OUTPUT, PRESS CR


что означает: если магнитофон к записи готов, нужно нажать на клавишу ВК. После записи файла на магнитофон на экране появляется сообщение:


READY TR FOR VERIFY, PRESS CR


Если магнитофон готов к проверке записи, нужно нажать ВК. Если запись сделана с ошибкой, то на дисплее появится сообщение:


VERIFY ERROR


В противном случае никакого сообщения не появляется, а вновь на экране подсказка


А>


С помощью встроенной команды ERA уничтожим вспомогательный файл на диске:


A> ERA EX.COM <ВК>


Если теперь вывести оглавление диска, то


А> DIR <ВК>

А: СН СОМ


т.е. EX.COM на диске уничтожен.

Восстановим файл EX.COM на диске, считав его с кассетного магнитофона. Для этого следует набрать:


А> СН EX.COM <ВК>


Отсутствие имени файла в каталоге диска приводит к режиму чтения файла с магнитной ленты. На дисплее появится сообщение


READY TR FOR INPUT, PRESS CR


т.е. при готовности магнитофона для воспроизведения записи нужн о нажать ВК. Если файл правильно считался в ОЗУ диска, появляется подсказка А>.

Проверить загрузку файла можно, опять применив команду DIR.

Рассмотрим работу с еще одним часто используемым файлом STAT.COM, который применяется для получения списка имен файлов на диске, определения размеров файлов, определения объема неиспользованного дискового пространства и для выполнения других функций. Предположим, что с помощью CH.COM мы  уже считали STAT.COM на диск. При последовательном вводе команд STAT <ВК> на дисплей выдается информация о состоянии квазидиска:


A:R/W, SPACE : 152К

А>


Это сообщение означает, что квазидиск установлен в режим ЧТЕНИЕ/ЗАПИСЬ и что объем оставшегося на диске пространства составляет 152 Кбайт.

Команда STAT позволит изменять статус диска, защитив его от возможной на него записи. Чтобы установить режим «только чтение», необходимо набрать сообщение:


A>STAT A:R/0


Исполнение команды проверим


A>STAT <ВК>

A:R/O, SPACE: 152K

A>


Команда STAT позволяет выводить на дисплей характеристики файлов.


A>STAT *.* <ВК>


В результате обработки этой команды будут выданы характеристики всех файлов, которые хранятся на квазидиске. В нашем случае на диске имеется только один файл:


RECS BYTES EXT АСС

41 6К 1 R/O A:STAT.COM

BYTES REMAINING ON A:152K

A>


Представленные характеристики имеют следующий смысл:

RECS ― определяет количество записей, из которых состоит данный файл. Одна запись содержит 128 байт;

BYTES ― определяет округленное значение размера файла в килобайтах;

ЕХТ ― это еще одна единица измерения размера файла эксистент, если файл не превышает 16 Кбайт, то выдается 1;

АСС ― от английского слова ACCESS ― означает статус доступа к файлу, R/O ― только

чтение.

Команду STAT можно использовать для спецификации файла, когда известны не полное имя или расширение, а только некоторые символы из этого имени. Неизвестные символы дополняют метасимволами «*» и «?» или их комбинациями.

Например:

STAT FILE. *

STAT *. COM

STAT FI??. ?0?

STAT F??. *

и т.д.

Для обозначения группы символов используется метасимвол *; для обозначения одного символа ― ?.

Такие метасимволы допускается применять и со встроенными командами DIR и ERA. В остальных случаях их использование приведет к возникновению ошибки.

В первом из рассмотренных выше примеров командой STAT будут выведены характеристики всех файлов с именем FILE, имеющие любые расширения. Во втором ― команда STAT выдает характеристики только командных файлов. В третьем примере осуществится вывод всех файлов, у которых имена содержат буквы FY и любые другие две буквы и имеющих расширение со средней буквой О. В четвертом примере команда STAT приведет к выдаче характеристик всех файлов, начинающихся буквой F и имеющих любое расширение. В имени файла может быть указано не более восьми метасимволов ?, а в расширении не более трех.

С помощью встроенной команды REN можно переименовать файл. Например:


А> REN FILE.COM = STAT.COM <ВК>


Однако если файл имеет статус «только чтение», то переименовать его не удастся.

С помощью команды TYPE можно выводить на дисплей текстовые файлы.

С командой ERA мы уже знакомы. С помощью нее удаляются с диска файлы. Например:


А> ERA FILE. COM <ВК>

А>


С командой ERA возможно использование метасимволов. Файлы, имеющие статус «только чтение», удалены быть не могут.


Программа POWER предназначена для работы с файлами, находящимися в квазидиске или в ОЗУ. С ее помощью можно просматривать файлы, менять их содержимое и название, удалять, а также просматривать и менять информацию в ОЗУ. POWER позволяет получить информацию о квазидиске, тестировать квазидиск, изолировать бракованные области памяти.

Программу необходимо загрузить с магнитофона на квазидиск и запускать командой POWER.

После загрузки POWER на экране появится его приглашение:


А!


В POWER могут использоваться команды с многозначными файловыми ссылками, например для вывода каталога:


А! R*.*


В этом случае будет выведен каталог файлов, начинающихся с буквы R.

Чтобы вывести весь перечень команд программы POWER, необходимо набрать:


А! ?


Для вывода на экран списка скрытых команд нужно ввести:


A!  ??


Для тестирования диска пользуются командой


А! TEST


Диск полностью прочитывается, вычисляется контрольная сумма, изолируются дефектные сектора, образуя файл = = =.= = = с целью принятия дальнейшего решения.

Информацию о диске ― емкость, формат, плотность и где находятся системные треки ― можно получить с помощью команды


А! DISK


Информация о занятом и свободном пространстве на диске, о состоянии файлов (R/W ― запись разрешена, R/O ― запись запрещена) выводится с помощью команды


А!  STAT


Для просмотра каталога пользуются командой DIR.

Сортировка каталога осуществляется командой SORT.

Имеется пять способов сортировки каталога:


А! SORT 1 (по именам файлов)

А! SORT 2 (по именам файлов, но в конце идут системные файлы)

А! SORT 3 (по типам расширения файлов)

А! SORT 4 (по типам расширения, но в конце идут системные файлы)

А! SORT 0 (без сортировки)


Переименовать файлы можно командой REN


A! REN *** (старое имя файла)


Для установки состояния файлов ― создания невидимых файлов ― служит команда SETSYS, хотя они доступны СР/М


А! SETSYS *** (имя файла)


Команда SETDIR противоположна по смыслу команде SETSYS.

Защита файлов от записи осуществляется командой SETRO


A! SETRO *** (имя файла)


Команда SETWR противоположна по смыслу команде» SETRO.

Подробную информацию о файле можно получить с помощью команды SIZE.

В первом столбце выдается количество использованных секторов, во втором ― количество свободных секторов, в третьем ― объем памяти, занимаемой файлом (кбайт), в четвертом ― объем памяти, занимаемой группой файлов.

Команды пересылки данных из квазидиска в ОЗУ и обратно:

1. А! LOAD (имя файла, тип) ХХХХ

Эта команда загружает файл из квазидиска в ОЗУ, начиная с адреса ХХХХН > 4000Н.

Завершается выполнение команды выводом на экран конечного адреса ОЗУ и числа секторов, которые занимает файл.

2. А! SAVE (имя файла.тип) ХХХХ YY

Команда загружает файл из ОЗУ с адреса ХХХХН в квазидиск, занимая число секторов, равное YY (если файл был загружен командой LOAD и его длина не увеличилась, то количество  секторов можно не указывать).

3. DUMPA ― вывод на экран ASCII символов.

DUMPH ― вывод на экран двоичных кодов.

DUMPX ― вывод на экран и двоичных, и ASCII кодов.

Имеется несколько вариантов использования команды DUMP:

A! DUMPH ХХХХ YYYY ― вывод на экран информации с адреса ХХХХН по адрес YYYYH

А! DUMPH XXXX,N ― вывод на экран N байт информации с адреса ХХХХН.

A! DUMPH ХХХХ ― вывод всей памяти, начиная с адреса ХХХХН.

4. Просмотр и исправление текстов с помощью команды DS:

A! DS ХХХХ

ХХХХН ― начальный адрес памяти. На экран выводится следующая информация:

адрес ячейки  памяти , шестнадцатеричный код, десятичный код, двоичный код , ASCII код , ENTER (.)

ENTER ― указывает, в каком коде будет внесено изменение (А), (Н), (В), (D). Для перехода в другой код надо ввести .В(.) ― в скобках указать один из символов. Просматривать информацию можно как в прямом, так и в обратном направлении. Для смены направления адресации на обратное вводят ^, при этом у адреса появится “-“. Выход из команды DS осуществляется вводом двух точек.

5. Заполнение памяти константой

А! FILL ХХХХ YYYY ZZ

Начальный адрес ХХХХН, конечный адрес YYYYH и константа ZZH.

6. Перемещение содержимого памяти осуществляется командой MOVE

А! MOVE ХХХХ YYYY ZZZZ 

ХХХХН ―начальный адрес, YYYYH ― конечный адрес, ZZZZH ― новый адрес.

7. Программа сравнения содержимого памяти СМ.

А! СМ ХХХХ YYYY ZZZZ

XXXXH,YYYYH ―начальный и конечный адреса первой сравниваемой области памяти, ZZZZH― начальный адрес второй сравниваемой области памяти.

8. Поиск в памяти символов осуществляет команда SEARCH.

Эта команда выводит на дисплей номера найденных ячеек и коды (или символы ASCII), находящиеся в этих ячейках. Возможен размер искомой строки до 128 символов. Если искомым символам предшествовали знаки вопроса "?" то на экран выводятся найденные коды в контексте.

А! SEARCH (начальный адрес) (конечный адрес) (байт) (байт) 

В обычном режиме поиск ведется шестнадцатеричных кодов. Если же искомая  последовательность заключена в кавычки, то ведется поиск символов ASCII.

Для запуска программ в POWER имеются несколько команд:

1. Команда GO считывает программу с квазидиска, загружает ее в память и затем передает управление по новому адресу. Команда удобна для запуска программ, которые работают с адреса, отличающегося от стандартного 100Н.

A! GO (имя файла) ХХХХ

ХХХХН ― адрес загрузки программы.

2. Команда JP позволяет запустить программу, уже имеющуюся в памяти, с указанного адреса, при этом по завершении выполнения программы происходит выход из POWER:

А! JP ХХХХ 

ХХХХН ― адрес запуска программы.

3. Команда ЕХ действует аналогично предыдущей команде, но по завершении выполнения программы управление возвращается POWER.

Программа, предполагающая возврат в POWER, должна заканчиваться командой С9 (RETURN).

4. Команда RUN осуществляет загрузку и исполнение одного или нескольких файлов.

Подсчет контрольной суммы файла осуществляют с помощью команды CHECK

А! CHECK (имя файла)

В программе POWER имеется команда для выхода в СР/М

А! EXIT 


Рассмотрим некоторые другие программы CP/M.

ED.СОМ - это программа текстового строкоориентированного редактора. Описание команд и работы с этим редактором можно посмотреть по этой ссылке (текст на английском).

L80.СОМ - это программа, преобразующая файлы, полученные после трансляции, в файлы с исполняемым машинным кодом, а также осуществляющая сборку различных файлов в единый исполняемый файл. Описание на английском языке можно скачать по этой ссылке: LINK-80.pdf.

M80.COM - Microsoft MacroAssembler. Позволяет создавать программы на языке Ассемблер. Описание на английском языке можно скачать по этой ссылке: MACRO-80.pdf

MBASIC.СОМ - интерпретатор с языка Бейсик.

BASCOM.СОМ - компилятор с языка Бейсик.


На самом деле большинство существующих программ для  CP/M-80 (CP/M 2.2) прекрасно работают на этом компьютере. Многие из них не требуют даже дополнительных настроек или инсталляций. Для загрузки скачанных из Интернета программ в компьютер можно действовать по следующей схеме:

  1. 1. Загрузить эмулятор с этого сайта.

  2. 2. Запустить его на любом Windows компьютере выбрав UT88 при запуске.

 
X