
ZX Format #02: IS-DOS: Рестарт Монитора и Строкового Редактора
Авторы статьи
Упомянутые люди
Упомянутые программы
Рубрика "Как это сделано?" No 2
В. Елисеев
Монитор командной строки IS-DOS и рестарт строкового редактора #6E smbgt
Здравствуйте, уважаемые читатели ZX Format! Надеюсь, что тем из вас, кто решил попробовать свои силы в программировании в среде IS-DOS, было интересно прочитать о внутреннем устройстве системной утилиты gmen.com, о которой шла речь в первом номере журнала. Сегодня мы с вами продолжим изучение рестартов IS-DOS, так сказать, на живых примерах и рассмотрим в общих чертах использование рестарта строкового редактора #6E smbgt на примере утилиты mon.com. Утилита mon.com хорошо известна каждому пользователю IS-DOS, ведь с ее помощью организуется диалог пользователя с системой и вводятся все основные команды. Она позволяет принимать с клавиатуры и редактировать текст вводимой команды и по нажатию ENTER передает его системе, вызывая на исполнение команду, указанную в тексте. Для ввода и редактирования текста команды в мониторе используется рестарт #6E smbgt, представляющий собой функционально законченный модуль строкового редактора с максимальным объемом строки 256 байт. Рассмотрим текст программы:
;****************************************
;Пример использования строкового редактора IS-DOS #6E smbgt
;Монитор командной строки mon.com
;исходный текст с комментариями
ORG #5D64
;****************************************
;начало программы, нахождение при помощи рестарта #45 g_com адреса буфера командной строки - специальной области памяти, которая служит для передачи команд системе, и помещение его в стек
START LD C,#45 ;определение адреса
RST #10 ;буфера командной
EXX ;строки (в HL)
PUSH HL ;адрес - в стек
;****************************************
;инициализация программы, подготовка рабочего окна, буфера и т. д.
;подпрограмма очистки буфера
CLBUF LD B,#7F ;длина буфера
CLBUF1 LD (HL),#20 ;инициализация
INC HL ;буфера
DJNZ CLBUF1 ;командной строки
;открываем окно для редактора
;предварительно определяем по содержимому системных переменных текущие цвета, чтобы окно не выделялось на общем фоне и помещаем их в вектор окна.
LD IX,WIND ;адрес вектора окна
;редактора
LD C,#72 ;определить адрес
RST #10 ;вектора экрана
EXX ; (в HL)
LD A,(HL) ;считать цвета
;текущего экрана
LD (IX+4),A ;ввести текущие
;цвета в вектор
;окна редактора
;рисуем окно
LD C,#61 ;инициализация окна
RST #10
;инициализируем курсор
CURINI SBC HL,HL ;обнуление HL
LD C,#6B ;установка
RST #10 ;координат курсора
POP HL ;в HL - адрес
;буфера командной
;строки
;****************************************
;ввод и редактирование команды
;задаем параметры для редактора - ширину
;окна и байт регистра состояния - и вызываем редактор
LD A,#2A ;ширина окна ред.
LD DE,#0B00 ;регистр состояния
;байт регистра состояния определяет установки редактора по умолчанию:
; байт 0=0 - строчные буквы
; 1 - прописные буквы
; байт 1=0 - латинский регистр
; 1 - русский регистр
; байт 2=0 - режим текста
; 1 - режим псевдографики
; байт 3 должен быть равен 1
LD BC,#036E ;вызов smbgt #6E
RST #10
;рестарт smbgt принимает с клавиатуры любые символы, а также самостоятельно отрабатывает управляющие клавиши перемещения курсора и Delete, по нажатию ENTER происходит завершение редактирования и выход, при этом в регистре A содержится длина введенной строки. Выход возможен также и по клавишам CS+9, CS+SS, SS+A, SS+SPACE, SS+ENTER, при этом в регистре A возвращается код клавиши, вызвавшей выход из редактора
RET C ;выход по ошибке
;ввода-вывода
;если нажаты CS+9, CS+SS, SS+A,
;SS+SPACE, SS+ENTER, то
JR NZ,EXIT ;выход по отказу
;проверка - не пустой ли буфер?
AND A ;проверка флага
;ZERO
JR Z,START ;переход на начало
;при пустом буфере
;***************************************
;обработка содержимого буфера
PUSH HL ;запомнить адрес
;буфера ком. строки
LD D,E ;обнулить D
LD E,A ;в E - длина строки
ADD HL,DE ;определить адрес
;первой свободной
;ячейки буфера
LD (HL),#0D ;добавить ENTER
EX (SP),HL ;поместить в стек
;адрес конца буфера
;командной строки,
;а в HL - начала
PUSH HL ;поместить адрес
;начала командной
;строки в стек над
;адресом конца
LD B,(HL) ;сохранить первый
PUSH BC ;символ ком. строки
PUSH IX ;сохранить адрес
;вектора окна
;передача имени и параметров введенной
;команды интерпретатору IS-DOS
XOR A ;установить A=0
LD C,#44 ;вызов exebat #44
RST #10
;восстановление содержимого регистров
POP IX ;вектор окна
POP BC ;первый символ к.с.
POP HL ;адрес начала к.с.
POP DE ;адрес конца к.с.
;***************************************
;обработка результата выполнения команды
;и восстановление содержимого буфера для
;редактирования в случае ошибки
RET C ;выход по серьезной
;ошибке exebat
LD A,#20 ;в A - код пробела
LD (DE),A ;"забить" ENTER в
;буфере ком. строки
LD (HL),B ;восстановить
;первый символ в
;буфере ком. строки
PUSH HL ;запомнить в стеке
;адрес буфера к.с.
JR NZ,CURINI ;при ошибке в к.с.
;возврат с сохранением текста строки
;для исправления
JR CLBUF ;корректный возврат
;с очисткой буфера
;от выполненной
;строки
;****************************************
;выход по отказу
EXIT LD (HL),#0D ;поместить ENTER в
;начало буфера к.с.
XOR A ;установить флаги
;на выходе:
;Z=1, C=0
LD A,#F4 ;установить код
;внутренней команды
;оболочки (аналог
;shel1 #81 с сохранением позиций
;курсора на обеих
;панелях)
RET
;****************************************
;область данных программы
;вектор окна:
WIND DEFB #00 ;X-координата окна
DEFB #00 ;Y-координата окна
DEFB #03 ;высота окна
DEFB #20 ;ширина окна
DEFB %00101000 ;цвета окна
DEFB %11111111 ;цвет тени #FF ;тень не выводится
DEFB #00 ;X-позиция печати
DEFB #00 ;Y-позиция печати
;****************************************
Автор программы - А. Леонтьев
Комментарии - В. Елисеев
_________________________________________
Оглавление издания: ZX Format #02
- IS-DOS Анонс готового к использованию в школах аппаратно-программного комплекса от Iskra Soft и Петерс, оснащенного сетевым компьютерным классом на базе ZX Spectrum и IS-DOS.
- IS-DOS - Владимир Елисеев Объяснение работы командного монитора и рестарта текстового редактора в IS-DOS на примере утилиты mon.com.
- IS-DOS Введение в системные утилиты IS-DOS, охватывающее функции помощи, пользовательского меню, просмотра файлов, редактирования и операций с файлами.
- IS-DOS Подробное описание программы eliminat.com для освобождения памяти от резидентных задач и драйверов с интерактивным режимом и ключами командной строки. Специфические номера каналов выделены для типов задач и драйверов. Включает варианты использования и настройку цветов.
- Оконная система IS-DOS - Владимир Елисеев Изучение перезапусков оконной системы IS-DOS для печати текста в окнах и абсолютных координатах экрана. Примеры реализации перезапусков, таких как lwt, adrwt, lenwt, prstr, str и lnstr. Продолжение о вспомогательных перезапусках в следующем номере.
- Ассемблер Введение в основы языка ассемблера с акцентом на флаги, арифметические операции и манипуляцию регистрами. Обсуждаются операции сложения, вычитания и сложные операции, такие как умножение и деление, через примеры. Подчеркивается использование специфических команд ассемблера и их функций для ZX Spectrum.
- Железо Обсуждение модификаций железа для Scorpion ZS-256-Turbo, включая установку переключателя Turbo/Normal. Плюсы и минусы программных методов переключения. Советы по пайке и настройке схем.
- Железо Обсуждение новой музыкальной приставки для ZX Spectrum от X-TRADE и HACKER STINGER под названием 'ZX GENERAL SOUND', предлагающей высокое качество звука и минимальное использование процессора.
- Железо Обсуждение инноваций в железе и маркетинговых стратегий, с акцентом на интерфейсы мыши и клавиатуры для ZX Spectrum. Критика вводящей в заблуждение рекламы конкурентов и анализ технологий serial и пассивной мыши. Автор ставит под сомнение необходимость и стоимость продвинутых функций.
- Железо Обсуждение методов аппаратного ускорения для ZX Spectrum, с акцентом на турбо-режимы и их влияние на производительность и совместимость.
- Игрушки Фэнтезийный рассказ о магических существах, борющихся с вторжением людей. Главный герой набирает союзников для восстановления былого величия страны. Испытания включают поиск инструментов, преодоление препятствий и оживление компаньонов.
- Игрушки Обзор игры 'Carrier Command', с акцентом на стратегические и симуляционные аспекты. Включает детали игровых механик, управления и целей. Подчеркивает стратегии для успеха и уникальные особенности, такие как управление ресурсами и автономными системами.
- Интервью Интервью с Сергеем Зоновым и Андреем Ларченко об их опыте с микропроцессорами и разработке ZX Spectrum, включая создание компьютера Scorpion ZS 256.
- Информация Контактная информация и список сотрудников ZX-Format №2 (1995), включая редактора, кодеров и дизайнеров.
- Информация Обращение редактора к читателям ZX Format, обсуждение положительных отзывов, прошлых ошибок и поисков карикатуриста, планы на будущее для журнала.
- Информация Обсуждение новой интерпретации системы оконного меню 'PULLDOWN' для ZX Spectrum с акцентом на обновления интерфейса и улучшение взаимодействия с пользователем.
- Информация Обсуждение компаний, незаконно распространяющих ZX Format, с акцентом на преимущества покупки официальных копий.
- Конкурс Обсуждается отсутствие участия в конкурсе ZX Format, приводятся правила и призы, и поощряются читатели к предложению новых идей.
- Отдохнём Юмористический рассказ о трудностях продавца софта при общении с несведущими покупателями, демонстрирующий нервозность его работы.
- Почтовый ящик Обзор комплектующих и цен для энтузиастов ZX Spectrum с деталями заказа.
- Почтовый ящик Раздел писем читателей в ZX Format #02 обсуждает отзывы читателей, затрагивает вопросы с функциями ZX Format и предлагает будущие улучшения.
- Премьера Инструкция к музыкальному редактору Digital Studio v1.12 для ZX Spectrum, включая функции, навигацию по меню и использование Digital Studio Compiler.
- Программистам Изучение инструментов, расширяющих стандартный Basic 48, включая Renumber для Basic 128, Trace & Speed, Blast Toolkit и ZXeditor, с акцентом на их функции и полезности.
- Разное История моделей компьютеров Amiga и их эволюция от A1000 до A4000/60T с характеристиками и уникальными особенностями. Объяснение технических терминов и различий между chip и fast памятью. Упоминание о новых разработках, таких как AGA чипсет и модели для разных нужд.
- Разное Статья представляет предстоящие релизы программного обеспечения для ZX Spectrum и рассматривает новшества игр, таких как 'Приключения Винни Пуха' и 'НЛО 2: Дьяволы Бездны'. Она выделяет особенности, создателей и технические требования. Включает анонсы от SOFTLAND и Cracked Masters Group.
- Системы Обсуждение создания музыки с Instrument 3.01, акцент на оцифрованный звук. Анализ возможностей программы и конвертация из ASC Sound Master. Инструкции по созданию композиции и конвертации.
- Что новенького Обзор новых игр для ZX Spectrum на петербургском рынке в конце 1995 года. Подробные описания игр, требования к памяти, управление и оценки музыки/графики. Включает Night Hunter, Extreme, Grell & Falla и другие.