Программа Menu для Basic V4.10 Орион-128 Пушкова, основы программирования, уроки языка

Как научиться писать программы в Basic V4.10 для Ориона-128 и Ориона-ПРО.

Продаю платы и наборы микросхем, куплю микросхемы Платы и комплектующие на ПК Орион-128

31.03.2023 обновление информации

Basic для Ориона 128 Пушкова v4.10 распределение памяти

Распределение памяти при работе в системе BASIC V4.10

ПРОГРАММА МЕНЮ V1.10 ДЛЯ ИНТЕРПРЕТАТОРА BASIC V4.10

1. Краткая характеристика

Программа Меню предназначена для работы в составе интерпретатора BASIC V4.10 под управлением ОС ORDOS V4.XX на компьютере "Орион-128", в системном ПЗУ которого записан "Монитор-2". Допускается работа в среде ОС ORDOS V2.40.

Предлагаемая программа имеет дружественный интерфейс благодаря примененной в ней системе цветных оконных меню с перемещающимися указателями и ориентирована на повышение удобства при работе с интерпретатором. Формирование окон осуществляется с помощью стандартного драйвера VBOX.

Программа Меню позволяет:

- работать с файлами, хранящимися в квазидисках A..D, путем выбора требуемого файла в каталоге ("File");
- редактировать загруженную программу внешним редактором или средствами Бейсика ("Edit");
- отлаживать программу, выполняя ее построчно или до строки с заданным номером с возможностью контрольного просмотра очередной выполняемой строки и значений переменных ("Debug");
- выходить в Basic, ORDOS или Atlas с возможностью возврата в прежнее состояние Меню ("Quit"). При выходе в систему имитируется режим "OS SHELL" (оболочка ОС), используемый в некоторых программах на IBM-совместимых компьютерах, благодаря тому, что состояние Меню и находящаяся в памяти программа сохраняются на квазидиске с последующим их восстановлением.

Программа Меню в полной мере использует цветовые возможности компьютера "Орион-128" и допускает настройку цветов окошек, рамок и т.д. по вкусу пользователя.
При открытии окон содержимое экрана сохраняется во временных файлах на одном из квазидисков (для нормальной работы программы требуется резерв дискового пространства около 12 Кбайт).
Программа Меню должна находиться на квазидиске B: или A: в файле с именем MNUBS$. Занимаемая область памяти при загрузке: 0A800H-0B900H.

2. Вход в Меню и выход из него

Программа Меню запускается интерпретатором при начальном старте автоматически, если на одном из квазидисков B: или A: находится файл MNUBS$ (и не нажата клавиша <F4> ). При запуске программа устанавливает "свой" цвет экрана и выводит главное меню с окном текущего режима. В правой части верхней строки отображается имя диска и имя рабочего файла, загруженного или сохраненного в Меню. Если в квазидиске B: или A: отсутствует файл VBOX, то выдается соответствующее сообщение об ошибке, и происходит возврат в интерпретатор.
Выйти в интерпретатор из главного меню можно, используя режим QUIT, или нажав клавишу <F4>.
При выходе окна убираются, и устанавливается цвет, определяемый интерпретатором и задаваемый при его начальной настройке. Путем настройки интерпретатора можно также изменить имя файла программы Меню (MNUBS$).

Повторный вход в Меню может быть осуществлен принудительно нажатием клавиши <КОМ> (на клавиатуре МС7007) или <УПР>+<^> в непосредственном режиме интерпретатора. Если выход из Меню был связан с выполнением некоторого режима (например, загрузка или запуск программы на Бейсике), то возврат происходит автоматически после отработки данного режима.
Во всех случаях входа в Меню файл MNUBS$ загружается с диска, и процесс его запуска повторяется снова.

3. Работа в Меню

Выбор требуемого режима осуществляется клавишами управления курсором и подтверждается нажатием клавиши <ВК>.
Находясь в главном меню, можно также использовать следующие клавиши:
<F1> - вывод информации о распределении памяти (выводятся адреса, занимаемые программой и ее данными, об'ем буфера строковых переменных и об'ем свободной памяти);
<F2> - отключение окон с их восстановлением после нажатия любой клавиши;
<F4> - выход в интерпретатор.

Выйти из подменю (а также из любого другого окна) в главное меню можно, нажав клавишу <F4> или <АР2>.

3.1. Режим работы с файлами "File"

В окне режима "File" можно выбрать один из следующих подрежимов:
Disk - Выбор текущего квазидиска (A, B, C, D) с проверкой того, что он есть в системе.
Files - Вывод списка файлов, имеющихся на текущем диске.
Exec - Выполнение выбранного "com"-файла ($) с последующим восстановлением находящейся в памяти программы и возвратом в Меню. После ответа "Y" на запрос
"Execute ? (Y/N)" ("Выполнить ?") происходит следующее:
а) состояние Меню сохраняется на квазидиске "B:" в скрытом временном файле конфигурации ###.BM ("BM" - "Basic Menu");
б) на квазидиске "B:" создается файл EXT$, который после выполнения "com"-файла удаляет сам себя и запускает интерпретатор. Если на момент создания файла EXT$ обнаруживается файл с таким же именем, то существующий файл временно переименовывается в EXT_BS;
в) находящаяся в памяти Бейсик-программа сохраняется на квазидиске "B:" во временном файле ###.BS.

Возврат в исходное состояние начинается с выполнения файла EXT$. Интерпретатор при старте автоматически загружает файл ###.BS и запускает программу Меню, которая, в свою очередь, загружает свое состояние из файла конфигурации ###.BM. В процессе загрузки файла конфигурации на экране высвечивается сообщение "Wait!" (Ждите!). Файл интерпретатора должен находиться на квазидиске "B:" или "A:". Run - Запуск на выполнение Бейсик-программы из файла типа ".BS" , при этом Меню отключается, а по окончании выполнения - включается снова.

Load - Загрузка Бейсик-программы из файла ".BS", ".TX" или загрузка произвольного файла (кроме "com"). В последнем случае проверяется допустимость адресов загружаемого файла. Загрузка разрешена в две области: 0050H..005FH (настройка драйвера LPT) и между блоком переменных программы и стеком интерпретатора ("Free").
Merge - Слияние программы, находящейся в памяти, и программы из файла ".BS" или ".TX", выбранного в каталоге.
Save - Сохранение программы, находящейся в памяти, на заданном квазидиске. После назначения режима "Save" появляется подменю, в котором можно выбрать тип со-
храняемого файла (".BS" или ".TX"), а затем ввести его имя. При этом в строку ввода сразу вставляется имя рабочего файла с именем диска, которые можно стереть или исправить. Если файл с введенным именем уже существует на данном диске, то выводится предупредительное сообщение: "File exists, overwrite ?
(Y/N)". После ответа "Y" файл будет переписан.
 
В процессе ввода имени файла (или параметров в других режимах - когда появляется курсор) действуют следующие клавиши:
<Влево> - стирает один символ слева;
<Забой> - стирает всю строку;
<ВК> - завершает ввод;
<F4>, <АР2>, <Вверх>, <Вниз> - отказ от ввода.
Kill - Удаление файла, отмеченного указателем. Если файл не имеет защиты от стирания, то после ответа "Y" на вопрос "Kill ? (Y/N)" он будет удален.

При назначении режимов Files, Exec, Run, Load, Merge, Kill на экране появляется каталог текущего квазидиска, причем в нем отображаются только те файлы, которые допустимы для заданной операции. В верхней строке каталога выводится имя квазидиска, конечный адрес размещения программ в нем и номер страницы, если все файлы не поместились. Перелистнуть страницу можно клавишей <СТР>. Если нажать клавишу <F1>, то на экран будет выведен адрес "посадки" и длина отмеченного указателем файла.

3.2. Режим редактирования "Edit"

В режиме редактирования "Edit" имеются следующие подрежимы:

Editor - Редактирование программы, находящейся в памяти, внешним текстовым редактором, имя которого задано при настройке программы Меню. При назначении этого режима появляется вопрос "Edit ? (Y/N)". Если ответить "Y", то для возврата в прежнее состояние создается файл EXT$ и скрытый файл конфигурации Меню ###.BM (аналогично режиму "File"/"Exec"), а программа сохраняется в текстовом виде во временном файле ###.TX (кстати, текстовый редактор AVIPL$ присваивает файлу такое же имя при его сохранении через режим QUIT).

В случае успешного создания файла ###.TX управление передается текстовому редактору, при этом в командной строке указывается имя редактируемого файла (###.TX). Если файл текстового редактора отсутствует на дисках B: и A: , то выдается соответствующее сообщение об ошибке. При использовании текстового редактора, который не анализирует командную строку, необходимо средствами редактора вручную загрузить находящийся на диске B: файл ###.TX.

Программа на Бейсике редактируется как обычный текстовый файл, причем строки могут располагаться в любом порядке - при загрузке они будут расставлены "по местам" в соответствии с их номерами. По окончании редактирования текст должен быть сохранен под тем же именем ###.TX.

После выхода из редактора состояние Меню восстанавливается, программа загружается из файла ###.TX после чего файлы EXT$, ###.BM и ###.TX удаляются. Файл интерпретатора должен находиться на диске B: или A: .

Edit - Редактирование строки программы внутренней командой интерпретатора EDIT. При назначении этого режима на экране появляется окно для ввода номера редактируемой строки. После ввода номера выполняется команда EDIT. По окончании редактирования происходит возврат в Меню.

Auto - Ввод и редактирование программы с автоматической генерацией номеров строк при помощи внутренней команды интерпретатора AUTO. Параметры команды могут быть заданы в окне перед выполнением команды.

Renum - Перенумерация строк программы. После указания необязятельных параметров выполняется команда RENUM.

Delete - Удаление строк программы с номерами из заданного диапазона путем вызова внутренней команды интерпретатора DELETE. Номера строк задаются в окне перед
 выполнением команды.

New - Удаление загруженной программы и ее данных из памяти. Выполнение команды NEW происходит после от вета "Y" на вопрос "New ? (Y/N)".

List - Вывод на экран строк программы с указанными номерами. После задания необязательных параметров выполняется внутренняя команда интерпретатора LIST.

3.3. Режим отладки "Debug"

В режиме отладки "Debug" допустимыми являются следующие подрежимы:

Run - Выполнение программы, находящейся в памяти, с возможностью останова. Номер начальной строки и строки останова задаются в подрежимах "Start" и "Stop" соответственно.

Start - Задание номера начальной строки для запуска прог раммы (Run) в режиме "Debug". Если введено значение 0 или "пусто", то выполнение программы начинается с начала.

Stop - Задание номера строки останова. Если задан нулевой номер или "пусто", то выполнение программы происходит без останова. В противном случае перед выполнением заданной строки программа прерывается с передачей управления в Меню, при этом цвет экрана не переключается. Убрать окна в главном меню можно клавишей <F2>. В процессе отладки номер строки останова может меняться требуемое число раз. Заметим, что никаких изменений в отлаживаемую программу не вносится.

Cont - Продолжение выполнения программы после останова со строки, перед которой он произошел. Если после останова программа редактировалась, или происходил выход из Меню в непосредственный режим интерпретатора, то продолжение выполнения невозможно. При назначении режима "Cont" все окна убираются, цвет, содержимое экрана, позиция курсора остаются без изменений, т.е. можно проследить за реальным поведением программы.

Step - Разновидность режима "Cont", выполняет одну очередную строку программы после останова. Может быть использован в сочетании со "Stop"/"Cont".

Watch - Вызов окна просмотра в нижней части экрана. В этом окне выводится строка программы, перед которой произошел останов (если он имел место), и появляется запрос "Expression:" (Выражение). В ответ на этот запрос можно вводить любые выражения с переменными программы, числами, строками и функциями, при этом знак "?" или слово "PRINT" писать не нужно. Операторы (в том числе оператор присваивания) использовать нельзя. Следует помнить, что в случае ошибки при вычислении выражения продолжение по "Cont" или "Step" будет запрещено. Выход из окна "Watch" с восстановлением экрана - при помощи клавиш <F4>, <АР2>, <Вверх>, <Вниз>.

При отладке программы в режиме "Debug" необходимо помнить о следующих ограничениях:
- если в отлаживаемой программе на момент прерывания установлен режим экрана "SCREEN 1", то включается "SCREEN 2";
- при входе в Меню всегда устанавливается стандартный знакогенератор;
- так как область памяти, начиная с адреса 0A800H, используется программой Меню, отлаживаемая программа не должна размещать там блоки машинных кодов, иначе при входе в Меню они будут испорчены.
В этих случаях можно воспользоваться для отладки командами интерпретатора TRON и TROFF.

3.4. Режим выхода "Quit"

Режим "Quit" служит для выхода из Меню в интерпретатор, ORDOS или программу Atlas (операционную систему OSDOS): Basic - Передача управления интерпретатору. Действие этого подрежима дублируется нажатием клавиши <F4>. Ordos - Выход в ОС ORDOS. Если на вопрос "Save ? (Y/N)" ответить "Y", то перед выходом в ORDOS состояние Меню сохраняется в скрытом файле ###.BM, а находящаяся в памяти программа - в файле ###.BS. В этом случае при повторном запуске интерпретатора состояние Меню и программа на Бейсике восстанавливаются с удалением временных файлов. Если же ответить "N", то выход в ORDOS произойдет без сохранения конфигурации Меню и текущей программы. При нажатии любой другой клавиши режим выхода отменяется.
Atlas - Запуск загрузчика файлов ORDOS с дискет. Имя файла загрузчика (LDOS$, ATLAS$ и др.) может быть задано при настройке программы Меню. Если требуется возврат в Меню с восстановлением находящейся в памяти программы, то необходимо ответить "Y" в ответ на вопрос "With return ? (Y/N)" ("С возвратом ?").
При этом создаются файлы EXT$, ###.BM, ###.BS аналогично режиму "File"/"Exec" (файл интерпретатора должен находиться на квазидиске B: или A:).

4. Обработка ошибок

Исключительные ситуации (ошибки), возникающие в процессе работы программы Меню, полностью контролируются средствами Бейсика (например, переполнение квазидиска), так как выполнение назначенного режима осуществляется в конечном итоге через интерпретатор.
При возникновении ошибки интерпретатор проверяет: активно ли Меню. Если Меню активно, то управление с кодом ошибки передается в него. Меню, в свою очередь, проверяет номер захода по ошибке, и, если это первый заход, то выводит окно и пишет в нем одно из следующих сообщений: "DISK!" (диск заполнен), "R/O !" (только чтение), "Name?" (неверное имя файла), "Memory!" (нет памяти) и "Error!" (прочие ошибки). Если же при выводе окна снова произойдет ошибка, то это будет уже второй заход по входу обработки ошибок, и тогда Меню выключается, а сообщение о последней ошибке выдается обычным порядком.
Если квазидиск, используемый для хранения оконных файлов, заполнен настолько, что его не хватает для формирования главного меню, то при возникновении ошибки возможна ситуация, когда каждый раз после нажатия клавиши снова появляется окно с сообщением "DISK!". Для выхода из этого состояния в интерпретатор необходимо нажать клавишу <F4>.

5. Настройка программы Меню

В начале файла MNUBS$ находятся установочные константы, которые допускается изменять при настройке (к примеру, программой M128$) по усмотрению пользователя.
Не забудьте, что при корректировке указанных констант с загрузкой файла MNUBS$ в ОЗУ необходимо предварительно изменить адрес его "посадки" на 0000H, а после корректировки и сохранения - вернуть значение 0A800H. Корректировку можно производить прямо на квазидиске, но сначала необходимо узнать адреса размещения файла MNUBS$ в нем.
Байты по адресам 0A820H и 0A822H должны задавать одинаковый цвет фона.

A810: DB 0FFH ; Признак разрешения звука при нажатии ; клавиш перемещения указателя (00H -; звук запрещен).
A811: DB 00H ; Признак разрешения "перескока" ука; зателя через границы окна, кроме ; указателя в каталоге диска (00H -; указатель "упирается" в границы окна). В каталоге диска указатель не  перескакивает в любом случае.
A812: DW 1200H ; Константа задержки, действующая при нажатии клавиш перемещения указателей.
A814: DB 0FFH ; Признак вывода рамки при формировании окон.
A815: DB 'M' ; Выбор квазидиска для оконных файлов
; Меню. Можно указывать имена дисков
; "B", "C", "D". При задании любого
; другого символа выбирается максимальный диск, имеющийся в системе.

A816: DB 1FH ; Цвет экрана при включении Меню
A817: DB 0FDH ; Цвет верхней строки главного меню
A818: DB 07H ; Цвет тени от верхней строки
A819: DB 0BCH ; Цвет окон главного меню
A81A: DB 07H ; Цвет тени от окон главного меню
A81B: DB 0EDH ; Цвет окон подменю
A81C: DB 07H ; Цвет тени подменю
A81D: DB 4EH ; Цвет окна ошибки
A81E: DB 07H ; Цвет тени от окна ошибки
A81F: DB 0CEH ; Цвет верхней строки каталога
A820: DB 9AH ; Цвет окна и рамки каталога
A821: DB 07H ; Цвет тени от окна каталога
A822: DB 9FH ; Цвет имен файлов в каталоге
A823: DB 0E0H ; Цвет окна просмотра Watch
A824: DB 0AH ; Цвет окна с информацией (по F1)
A825: DB 07H ; Цвет тени от окна с информацией
A826: DB 0ACH ; Цвет окон для прочих сообщений
A827: DB 07H ; Цвет тени от окна для сообщений
;
A828: DB 'ATLAS$ ' ; Имя загрузчика файлов ORDOS, хранящихся в формате CP/M-80.
A830: DB 'BASIC$ ' ; Имя файла интерпретатора
A838: DB ' AVIPL$ ' ; Имя файла текстового редактора

6. Сводный список клавиш, действующих в Меню

6.1. Главное меню

<Влево> - перемещение текущего окна влево
<Вправо> - перемещение текущего окна вправо
<Вверх> - перемещение указателя в текущем окне вверх
<Вниз> - перемещение указателя в текущем окне вниз
<Угол> - перемещение указателя на первую позицию
<ПС> - перемещение указателя на последнюю позицию
<ВК> - выбор подсвеченного режима в окне
<F1> - вывод информации о распределении памяти
<F2> - отключение окон
<F4> - выход в интерпретатор

6.2. Подменю

<Вверх> - перемещение указателя вверх
<Вниз> - перемещение указателя вниз
<Угол> - перемещение указателя на первую позицию
<ПС> - перемещение указателя на последнюю позицию
<ВК> - выбор подсвеченного режима
<Другая> - выход в главное меню

6.3. Окно каталога

<Влево> - перемещение указателя файла влево
<Вправо> - перемещение указателя файла вправо
<Вверх> - перемещение указателя файла вверх
<Вниз> - перемещение указателя файла вниз
<Угол> - перемещение указателя на первую позицию
<ПС> - перемещение указателя на последнюю позицию
<ВК> - выбор подсвеченного файла
<СТР> - следующая страница каталога
<F1> - выдача информации о подсвеченном файле
<Другая> - выход в главное меню

6.4. Ввод строки с клавиатуры

<Влево> - удаление символа слева от курсора
<Забой> - удаление всей строки
<ВК> - ввод набранной строки
<АР2>, <F4>, <Вверх>, <Вниз> - отказ от ввода

6.5. Ответ на запрос "Y/N"

<Y> - подтверждение действия, указанного в запросе
<N> - отказ от действия, указанного в запросе
<Другая> - отказ от выполнения режима

 

Программирование микропроцессорных комплектов i8080, 580вм80, z80, i8085, 1810, 1824

Орион-128 описание команд микропроцессора к580вм80 (Орион-Софт)

Язык Ассемблера для Ориона

Язык Си для Ориона

Язык Паскаль для Ориона

Язык Форт для Ориона

 

 

Купить платы, наборы микросхем на Орион-128, КР565РУ5В, КР565ру7В, к565ру5г AU, к565ру7г Au в позолоте, куплю микросхемы

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу