═══════════════════ C S I D O S - 3.2 ═════════════════════════ ──────────────── Tехническая документация.───────────────────── Распредeление адресного пространства в системе "CSIDOS-3.2": ─────────────────────────────────────────────────────────────── Страницы 0,1,2,3,4 использюутся в различных программах по сво- ему усмотрению. Страница 5 является экраном. Страница 7 : 40000-44777...системная область монитора БК0011М и "CSIDOS-3.2".Сюда лазить не рекомендуется. 45000-47777...ядро системы.Сюда лазить нельзя. 50000-54277...знакогенератор. Сюда вообще-то тоже нельзя. 53400-62777...TURBO VISION. И здесь копаться нельзя 63000-63777...главный блок оболочки "Х-SHELL". если его испортить, в оболочку больше не попадешь. 64000-77777...оболочка. Если испортить ее, то прекраща- ется выполнение командного файла, дочиты- вается кусок оболочки с системного диска, и запускается со старыми данными оболочка. страница 6 : 100000-111777...оболочка.Те же положения, что и для 64000-77777 в 7-й странице. 120000-127777...каталог левой панели 130000-137777...каталог правой панели Если сказать обобщенно,то: -если вы хотите быстро вернуться в оболочку, то можно исполь- зовать адреса 112000-137777 в 7-й странице -если вы используете адреса 64000-137777, то тоже можете вер- нуться в оболочку после ее автодозагрузки с системного диска -если вам не потребуется возвращаться в оболочку, то смело можете использовать адреса 63000-137777 -если вам не нужен TURBO VISION, то можно использовать адреса 50000-137777. -ну а если после загрузки программы,вам вообще ничего не пот- ребуется, то вам доступна вся память компьютера. Естественно, что все сказанное справедливо только для страниц 7 и 6. Другие страницы доступны полностью и по любым адресам, в любое время не зависимо от условий и погоды. И не следует держать подключенной страницу 7 или 6, лучше забудте что они вообще есть. Более того, их не надо подключать и для того, что- бы выполнить ЕМТ115 или ТRAP. Система позваляет хранить, запи- сывать и читать файлы длиной до 200000 байт, если длина файла задана в байтах, и хранить длиной до 32 мегабайт если длина задана в блоках (такие файлы можно читать и писать только по частям). Да и еще: в оболочку можно вернуться примерно так: RET -если стек еще в порядке, или так: HALT -если вектор 4 еще цел, а можно вот так: JMP @#200 -если там еще что-то есть, и даже так: MOV #54400,@#177716 JMP @#63000 -если хоть там что-нибудь осталось. ─────────── КРАТКИЙ СПИСОК КОМАНД ОБОЛОЧКИ "X-SHELL" ────────── RUN ADDR [,PG0,PG1]...........старт по адресу. READ ADDR,LEN,BLOCK,PG0,PG1...чтение массива с диска. WRITE ADDR,LEN,BLOCK,PG0,PG1..запись массива на диск. SAVE NAME ADDR,LEN,PAGES......запись файла LOAD NAME [ADDR[,PG0,PG1]]....прочитать файл в память. CREATE NAME ADDR,NUMB,PG0,PG1.резервирование блоков на диске SET NAME PARAM................изменение параметров файла CD PATH.......................установить текущую директорию DELETE NAME...................удалить файл EXE NAME......................запустить файл SEARCH NAME...................поиск файла в каталоге. MOV NUM,ADDR..................поместить слово в адрес MOVB NUM,ADDR.................поместить байт в адрес ADD NUM,ADDR..................прибавить число к адресу BK10 OTHER_PARAM..............запусить монитор БК0010 PAUSE NUM.....................зделать паузу длиной NUM PAUSE.........................ожидание нажатия на клавишу. PALETTE NUM...................включить палитру NUM. CLS...........................очистить экран ?? STRING.....................вывести строку без ввода ? STRING......................вывести строку с вводом CUR POSX,POSY.................установка курсора на позицию GOTO LABEL....................переход на метку. ON ADDR,LABEL1,...,LABELN.....аналог ON GOTO на БЕЙСИКЕ RST ADDR......................начальный адрес для DC.B и DC.W DC.W NUM,NUM,...,NUM..........список чисел-слов для пересылки DC.B NUM,NUM,...,NUM..........список чисел-байт для пересылки IF NUM,NUM,COND OTHER_COM.....сравнит два числа PATH PATH1;PATH2;PATH3........установка путей поиска файлов ─────────────────── ЗАПРОСЫ К СИСТЕМЕ ───────────────────────── Обращение к системе происходит через магнитофонный блок пара- метров, состоящий из 54 байт. Адрес блока помещается в R0 и подается команда EMT 115. В нулевом байте блока помещается ко- манда системе.При записи и переименовании файла система смотрит первый байт: если он содержит 0 или 1, то если находится файл с таким же именем на диске, то он удаляется, если первый байт содержит код 2, то при обнаружении файла с таким же именем вы- дается ошибка (код 20). Перед работой с диском, если нет уве- ренности что система проинициализирована, то нужно сделать это в программе (если это не покажется трудным): MOV #54400,@#177716 ;инициализация с сохране- CALL @#45010 ;нием ранее установленного ;привода. или MOV #54400,@#177716 ;инициализация с установкой MOV #DRIVE,R0 ;нового привода DRIVE CALL @#45000 ; КОМАНДЫ СИСТЕМЫ: 0...запись файла на диск (или спасти его, как у англичан) 200...резервирование блоков. Если 52(R0)=0, то запись о файле в каталог не заносится. Выход: R3-номер первого блока, следующего за прочитаным. 1...чтение файла 201...чтение метки файла из каталога в 30(R0). 2...поиск файла. В адресе 41524 наход. адрес записи о файле 3...RENAME. 6(R0)- новое имя, 34(R0)- имя из каталога 4...чтение файла.Выход: R3-номер блока следующего за прочит. 5...выключение двигателя (если еще не выкрутился) 6...удаление файла (не печальтесь его еще может быть и можно востановить в программе "cds2.exe") 7...запись файла: 2(R0)...адрес файла в памяти 4(R0)...длина файла в байтах 26(R0)..окна 30(R0)..адрес для каталога 32(R0)..окна для каталога 207...то же что и команда 7 но длина в блоках 10...не используется (выключение двигателя, для настырных) 11...чтение файла без номера директории. Выход: R3-номер блока 211...то же что и 201 но без номера директории 12...удаление директории (вот ее вы уже не востановите) 13...создание директории (если такой нет) и вход в нее 14...операции с установкой пути: 54(R0)- начало описания пути (106 байт максимум) далее байт 0 и код любой и перечис- ленных команд.После выполнения команды возвращается ста- рый драйвер и директория (возвращение блудного сына) Если код команды 177,то после поиска пути устанавлива- ется новая директория и драйвер, описанные в пути. 15...трансформация имени файла. Вход: 6(R0)- имя для транс- формации.Выход: 34(R0)- странсформированное (уф-ф!) имя. 16...чтение по номеру блока 2(R0)- адрес для массива 4(R0)- длина массива 6(R0)- номер блока на диске 17...запись по номеру блока (см. ком. 16) 20...установка привода. 2(R0)- номер привода. 21...чтение файла. ответ в блок параметров не передается. (для наиболее привередливых программ) В командах,если файл вылезает за пределы страницы, подключен- ной в верхнее окно, адрес файла должен быть кратен 1000, тогда система подключает две страницы, следующие по порядку от стра- ницы в верхнем окне, и продолжает операцию. Следует заметить что система подключит новые страницы лишь в том случае, когда номера страниц заданы явно. напримеры: 1,2 - страницы заданы явно: 1 страница в нижнее окно, 2 страница в верхнее окно, 0,0 - заданы неявно: страницы берутся из ката- лога. (справедливо только при чтении) 177,2 - одна из страниц задана не явно: 177- это код страницы 7 377,3 - одна из страниц задана не явно: 377- это означает, что в данном окне остается ранее подключенная страница. В байтах 26 и 27 магнитофонного блока пареметров хранятся стра- ницы для работы с диском. Если они равны 0,0 при чтени, берут- ся номера страниц из каталога, при другой операции это страни- цы 0,0. Tак как страницы подключаются через монитор БК0011М, то ошибку отловить невозможно (при неправильных номерах страниц операция прекращается, устанавливается бит C- ошибка, а вот код ошибки может быть любым("ку" как,говорится в одном из филь- мов :) так что за кодами страниц следите сами. Если в данной операции страницы безразличны, то можно просто очищать ячейку 26(R0). ────── ОШИБКИ ВЫДАВАЕМЫЕ СИСТЕМОЙ В АДРЕСЕ 52 (и 53) ────────── при oшибке после EMT 115 устанавливается бит C 1-13.....стандартные ошибки КНГМД 14.....не используется в данной версии 15.....нет места на диске или в каталоге 16.....диск не в формате "CSIDOS" 17.....файл или директория не найдены 20.....файл уже есть ───── СИСТЕМНЫЕ ЯЧЕЙКИ ИСПОЛЬЗУЕМЫЕ ЯДРОМ "CSIDOS-3.2": ────── B41521.....=10 статус БК0010, =0 статус БК0011М (действителен при записи файла на диск) B41522.....номер привода B41523.....номер директории W41524.....адрес записи о файле в блоке каталога 42602.....54 байта.Копия магнитофонного блока параметров B47774.....номер системного привода B47775.....если не равен 0 то после операции двигатель дисковода забывает выключаться. 43552.....массив из 66 байт.Блок пареметров для дисковода ВСЕ АДРЕСА ДЕЙСТВИТЕЛЬНЫ ПРИ ПОДКЛЮЧЕННОЙ 7-Й СТРАНИЦЕ В НУЛЕВОЕ ОКНО. ─────────── Расположение информации на диске ────────────────── 0 блок - загрузчик системы 2-11 блоки - каталог устройства 12-.. блоки - блоки,отведенные под файлы Расположение записей в каталоге: первый блок в каталоге: W0............физический номер блока W2............общее число блоков на диске W4,W6.........123123 для CSIDOS-3 W10(123123)...принадлежность диска системе CSIDOS W12...........не используется (=0) B14-B777......записи о файлах остальные блоки каталога: W0............физический номер блока W2-W12........не используется (=0) B14-B777......записи о файлах Элемент каталога(запись о файле) 24 байта: B0...........=1-310.номер директории =311...плохое место (ну очень плохое) =376...дырка (от бублика) =312...запись не содержащая информацию (удаляется после сквизирования) =377...удаленный файл, который можно восста- новить =0.....конец каталога B1<0 .........защита от удаления B2-B14........имя файла с расширением (без точки) B15...........статус файла: 7 бит- признак длины в блоках 3 бит- признак файла для БК0010 остальные биты- копия регистра 177717 (страницы если кто-то забыл) W16...........начальный блок файла W20...........адрес загрузки W22...........длина файла ─────────────── СИСТЕМНЫЕ ЯЧЕЙКИ "X-SHELL" ──────────────────── W63002..номер панели (0 или 2) ! W63004..номер версии (3020) ?*W63006..тип панели: 0-FULL, 20-BRIEF, 177776-TREE, 177777-INFO !*W63012..адрес каталога *W63016..адрес файла на который указывает файловый курсор *B63036..номер привода *B63037..номер директории !*W63042..емкость устройства в блоках *W63046..количество занятых блоков *W63062..количество блоков в выделеных файлах *W63066..количество выделенных файлов !*W63076..адрес курсора на экране !*W63102..адрес панели на экране !*W63106..адрес поля на экране для каталога ! W63074..адрес начала bat-файла в памяти W63112..адрес имени файла на который указавает курсор (не зависит от номера панели) ! B63114..номер системного привода W63116..адрес программы для чтения каталога чужих систем (используется программой "graber4.exe") Если содержимое равно 0 то программа отсутствует. Эта программа должна находится в 4-й странице с адреса 135000 и иметь первое слово 123123, затем коды программы. Условные обозначения: !....содержимое этой ячейки менять нельзя! W,B..размер ячейки: слово или байт. *....доступ к этой ячейки имеет примерно такой вид: MOV @#63002,R0 ;загрузить номер панели в R0 MOV 63012(R0),R1 ;загрузить адрес каталога текущей ;панели в R1 то есть в адресе 63012 лежит адрес каталога для панели 0 (ле- вой), а в адресе на 2 больше адрес каталога для панели 2 (правой). ─────────── АДРЕСА СОДЕРЖАЩИЕ НЕКОТОРЫЕ ТОЧКИ ВХОДА ─────────── JMP @63120 - вход в оболочку без переоткрывания панелей (пример: запуск программы "graber4.exe") Но надо быть уверенным, что страницы 5,6,7 не бы- ли существенно изменены. (поэкспериментируйте) JMP @63136 - вход в оболочку с переоткрыванием панелей, но без перечитывания каталогов панелей. (пример: возврат из "csiview.exe") Существуют и другие точки входа, но они мало инте- ресны для широкого применения и потому здесь не рассматриваются ─────────────────────────────────────────────────────────────── При запуске файла из оболочки устанавливаются текущими те директория и привод, которые: -были на текущей панели (на которой стоял файловый курсор) -были установлены последней командой CD, если файл запус- кался из командного файла ─────────────────────────────────────────────────────────────── Я думаю вы простите мои дурацкие вставки-шутки, но поверьте, что писать документацию такая скукотища. Алексей Мельников ═══════════════════════════════════════════════════════════════ (C) 1995 A.V.M. Caroline Sofware Inc. Samara-city, Russia. ═══════════════════════════════════════════════════════════════ ░░░░░░┐ ░░┐ ░░┐ ░░░░░░┐ ░░░░░░┐ ░░░░░┐ └─░░┌─┘ ░░│ ░░│ ░░┌──░░┐ ░░┌──░░┐ ░░┌──░░┐ ░░│ ░░│ ░░│ ░░│ ░░│ ░░░░░░┌┘ ░░│ ░░│ ░░│ ░░│ ░░│ ░░░░░░┌┘ ░░┌──░░┐ ░░│ ░░│ ░░│ └░░░░░┌┘ ░░┌─┐░░┐ ░░░░░░┌┘ ░░░░░┌┘ └─┘ └────┘ └─┘ └──┘ └─────┘ └────┘ ░░┐ ░░┐ ░░┐ ░░░░░░┐ ░░┐ ░░░░░┐ ░░┐ ░░┐ ░░│ ░░│ ░░│ ░░┌────┘ ░░│ ░░┌──░░┐ ░░░┐ ░░│ ░░│ ░░│ ░░│ └░░░░░┐ ░░│ ░░│ ░░│ ░░┌░┐░░│ └░░┐░░┌┘ ░░│ └───░░┐ ░░│ ░░│ ░░│ ░░│└░░░│ └░░░┌┘ ░░│ ░░░░░░┌┘ ░░│ └░░░░░┌┘ ░░│ └░░│ └──┘ └─┘ └─────┘ └─┘ └────┘ └─┘ └─┘ ПОСЛЕДНЕЕ ВРЕМЯ ПОЯВИЛОСЬ МНОГО СИСТЕМ ИСПОЛЬЗУЮЩИХ ОКНА, НО,КАК ПРАВИЛО, ВСЕ ОНИ ИСКЛЮЧАЮТ РАБОТУ В ЦВЕТНОМ РЕЖИМЕ, ПРИЧЕМ,ЕСЛИ Ч/Б ОКОННЫЕ СИСТЕМЫ НЕВОЗМОЖНО СМОТРЕТЬ НА ЦВЕТНОМ МОНИТОРЕ, ТО ЦВЕТНАЯ СИСТЕМА СМОТРИТСЯ ХОРОШО, КАК НА ЦВЕТНОМ ТАК И НА Ч/Б МОНИТОРЕ, К ТОМУ ЖЕ В "TURBO VISION" ИСПОЛЬЗУЕТСЯ ШРИФТ СПЕЦИАЛЬНО НАРИСОВАННЫЙ ДЛЯ ЦВЕТНОГО МОНИТОРА, ЧТО НАМНОГО ЧИТАБЕЛЬНЕЕ ОЦВЕТНЕННОГО ЧЕРНО-БЕЛОГО. ─────────────────────────────────────────────────────────────── ОБЩИЕ СВЕДЕНИЯ О СИСТЕМЕ "TURBO VISION" : -СИСТЕМА ПОЛНОСТЬЮ САМОСТОЯТЕЛЬНА. К НЕЙ МОЖНО ОБРАЩАТЬСЯ ИЗ ЛЮБОЙ ПРОГРАММЫ,НАХОДЯЩЕЙСЯ В ЛЮБОЙ СТРАНИЦЕ ПО ЛЮБЫМ АДРЕСАМ. -ОНА НЕ ЗАНИМАЕТ РАБОЧЕЙ ПАМЯТИ. -ДОСТУПНЫ ВСЕ 128 КБАИТ -РАБОТАЕТ В РЕЖИМЕ 64 СИМВОЛА В СТРОКЕ ( В ЦВЕТНОМ РЕЖИМЕ ) -ТЕКСТ НЕПЛОХО ЧИТАБЕЛЕН НА ЦТВ И ЧБ МОНИТОРАХ -МНОГОУРОВНЕВЫЙ РЕЖИМ ВЫВОДА ОКОН -ПОДДЕРЖИВАЕТ МЫШЬ (БЕЗ КОНТРОЛЛЕРА),ЧТО ДАЕТ ВОЗМОЖНОСТЬ СОЗДАВАТЬ ПРОГРАММЫ НЕ ТРЕБУЮЩИЕ КЛАВИАТУРНОГО ВМЕШАТЕЛЬСТВА СИСТЕМА НАХОДИТСЯ В 7 СТРАНИЦЕ ПО АДРЕСАМ 54300-62777 ┌─────────────────────────────────────┐ ───────────┤ ОПИСАНИЕ КОМАНД "TURBO VISION v3.0" ├───────────── └─────────────────────────────────────┘ ДАННАЯ СИСТЕМА ЯВЛЯЕТСЯ МОНИТОРОМ ДЛЯ CSIDOS'a-3. ВСЕ ОБРАЩЕ- НИЯ К ДАННОЙ СИСТЕМЕ ОСУЩЕСТВЛЯЮТСЯ ЧЕРЕЗ TRAP. ОБРАЩАТЬСЯ МОЖ- НО И ЧЕРЕЗ ЕМТ, ДЛЯ ЭТОГО К НОМЕРУ TRAP'a НУЖНО ПРИБАВИТЬ ЧИС- ЛО 300, НАПРИМЕР, ТRAP 6 И EMT 306, A TRAP МОЖНО ИСПОЛЬЗОВАТЬ ДЛЯ ДРУГИХ ЦЕЛЕЙ. СИСТЕМНУЮ СТРАНИЦУ ПОДКЛЮЧАТЬ НЕ ОБЯЗАТЕЛЬНО. ДЛЯ ВЫЗОВА НЕОБХОДИМА КОПИЯ РЕГИСТРА 177716 В ЯЧЕЙКЕ 114 . В КАЧЕСТВЕ ЭКРАНА СИСТЕМА ИСПОЛЬЗУЕТ 5 СТРАНИЦУ. ПРИМЕРЫ ПРИВЕДЕНЫ В МНЕМОНИКЕ АССЕМБЛЕРА MICRO11D. СТЕК ПОЛЬЗОВАТЕЛЯ ДОЛЖЕН НАХОДИТЬСЯ НИЖЕ АДРЕСА 40000. *************************************************************** ВНИМАНИЕ!!! С ЦЕЛЬЮ УМЕНЬШЕНИЯ ПРОГРАММЫ TURBO VISION,ОШИБКИ НЕ ПРОВЕРЯЮТСЯ ПОЭТОМУ, ВОИЗБЕЖАНИИ ЗАВИСАНИЯ И ДРУГИХ ПОСЛЕДСТВИЙ, НЕ СЛЕДУЕТ ДАВАТЬ ДАННЫЕ,ВЫХОДЯЩИЕ ЗА ДИАПАЗОН ДОПУСТИМЫХ В ДАННОЙ КОМАНДЕ *************************************************************** --------------------------------------------------------------- ИНИЦИАЛИЗАЦИЯ СИСТЕМЫ: MOV #54400,@#177716 CALL @#45010 CALL @#54300 ИЛИ МOV #54400,@#177716 MOV #DRIVE,R0 ; НОМЕР ПРИВОДА ДЛЯ CSIDOS CALL @#45000 CALL @#54300 ПОСЛЕ ЭТОГО ВСЕ ОБРАЩЕНИЯ ЧЕРЕЗ TRAP БУДУТ ПЕРЕХВАТЫВАТЬСЯ "TURBO VISION", А ЕМТ 115 БУДЕТ РАБОТАТЬ С ДИСКОМ DRIVE ВНИМАНИЕ: ТОЛЬКО ДЛЯ ИНИЦИАЛИЗАЦИИ НЕОБХОДИМО ПОДКЛЮЧИТЬ 7 СТРАНИЦУ С АДРЕСА 40000 ─────────────────────────────────────────────────────────────── TRAP 0 ПЕРЕДАЕТ УПРАВЛЕНИЕ ПРОГРАММЕ НАХОДЯЩЕЙСЯ ПО АДРЕСУ 63000 В СИСТЕМНОЙ СТРАНИЦЕ ( ОБОЛОЧКА CSIDOS'а) ─────────────────────────────────────────────────────────────── TRAP 2,3 УСТАНАВЛИВАЕТ СТРАНИЦУ И АДРЕС БУФЕРА ПОД СОХРАНЕНИЕ МЕСТ, НА КОТОРЫЕ ВЫВОДЯТСЯ ОКНА. МОV #ADDRES,R0 ;АДРЕС БУФЕРА (100000 И ВЫШЕ) TRAP 2 .#PAGE ;СТРАНИЦА ПОД БУФЕР (0,1,2,3,4,6) ИЛИ TRAP 3 .#ADDRES .#PAGE ─────────────────────────────────────────────────────────────── TRAP 4,5 ОПРОС КЛАВИАТУРЫ .В R0 ВОЗВРАЩАЕТСЯ КОД СИМВОЛА ИЛИ АДРЕС МЫШИ, А ТАКЖЕ УСТАНАВЛИВАЕСТСЯ СЛОВО СОСТОЯНИЯ ПРОЦЕССОРА. МОV #SUBR,R0 ИЛИ ТRАP 5 TRAP 4 .@SUBR SUBR - АДРЕС ПОДПРОГРАММЫ,КОТОРАЯ ВЫПОЛНЯЕТСЯ ЕСЛИ НЕ НАЖАТА КЛАЖИША. ЕСЛИ АДРЕС МЕНЬШЕ 2 ТО ПОДПРОГРАММА НЕ ВЫПОЛНЯЕТСЯ. ЕСЛИ АДРЕС ЧЕТНЫЙ,ТО КУРСОР НЕ ВЫВОДИТСЯ ЕСЛИ НЕЧЕТНЫЙ ТО ВЫВОДИТСЯ МОРГАЮЩИЙ КУРСОР. БИТЫ ССП УСТАНАВЛЕВЫМЫЕ ПРИ ВЫХОДЕ: Z-НАЖАТА КЛАВИША "КТ" (В R0 KOД 3) N-НАЖАТА КЛАВИША В РЕГИСТРЕ "АР2" (В R0 КОД КЛАВИШИ) V-НАЖАТА ПРАВАЯ КНОПКА МЫШИ (В R0 АДРЕС МЫШИ) C-НАЖАТА ЛЕВАЯ КНОПКА МЫШИ (В R0 АДРЕС МЫШИ) ─────────────────────────────────────────────────────────────── ТRAP 6,7 ВЫВОД СИМВОЛА В ТЕКУЩЕЕ ОКНО. УПРАВЛЯЮЩИЕ КОДЫ: 12- ПС+ВК, 10-КУРСОР ВЛЕВО, 31-КУРСОР ВПРАВО, 32-ВВЕРХ, 33- ВНИЗ, 2-ОЧИСТКА ОКНА НАЧИНАЯ С ТЕКУЩЕЙ СТРОКИ И ДО КОНЦА, 14-ОЧИСТКА ВСЕГО ОКНА.40 И ВЫШЕ ПЕЧАТАЕМЕЫЕ СИМВОЛЫ МОV #SYMBOL,R0 ИЛИ TRAP 7 TRAP 6 .#SYMBOL ─────────────────────────────────────────────────────────────── TRAP 10,11 ВВОД ИЛИ РЕДАКТИРОВАНИЕ СТРОКИ.ВЫВОДИТСЯ ИНВЕРСНАЯ СТРОКА ДЛЯ РЕДАКТИРОВАНИЯ. ВЫХОДНЫЕ ДАННЫЕ КАК И У TRAP 4,5 . MOV #STROKA,R0 ИЛИ TRAP 11 TRAP 10 .@STROKA HALT HALT STROKA: .B:34 .A:ПРИВЕТ .+27 ПЕРВЫЙ БАЙТ СТРОКИ НЕ ВЫВОДИТСЯ И ПОКАЗЫВАЕТ МАКСИМАЛЬНО ВОЗМОЖНОЕ КОЛИЧЕСТВО СИМВОЛОВ-1.ПОСЛЕ РЕДАКТИРОВАНИЯ ПРОБЕЛЫ В КОНЦЕ СТРОКИ ЗАПОЛНЯЮТСЯ НУЛЯМИ. ─────────────────────────────────────────────────────────────── TRAP 12,13 ВЫВОД СТРОКИ СИМВОЛОВ. УПРАВЛЯЮЩИЕ КОМАНДЫ: .B:1 .A:ВЫВОД СТРОКИ ПО СЕРЕДИНЕ СТРОКИ ОКНА .B:0 .B:3 .A:ВЫВОД ЗАГОЛОВКА В ОТКРЫТОЕ ОКНО .B:0 .В:16 .В:20 .В:10 .В:201 .В:210 ... .В:0 ;РАЗМЕТКА ОКНА ЛИНИЯМИ .В:17 .В:ХCUR .B:YCUR ;УСТАНОВКА НОВЫХ КООРДИНАТ КУРСОРА В ОКНЕ .В:20+COL ;УСТАНОВКА ЦВЕТА ФОНА (0,1,2,3) .В:24+COL ;УСТАНОВКА ЦВЕТА СИМВОЛОВ (0,1,2,3) MOV #STROKA,R0 ИЛИ TRAP 13 TRAP 12 .@STROKA HALT HALT STROKA: .B:23 .B:25 .B:1 .A:ПРИМЕР .B:0 .B:12 .A:СТРОКИ .В:0 ─────────────────────────────────────────────────────────────── ТRAP 14,15 УСТАНОВКА КООРДИНАТ КУРСОРА В ТЕКУЩЕМ ОКНЕ. MOV (PC)+,R0 ИЛИ TRAP 15 .B:XCUR .B:YCUR .B:XCUR .B:YCUR TRAP 14 ─────────────────────────────────────────────────────────────── TRAP 16,17 УСТАНОВКА АТТРИБУТОВ У СИМВОЛОВ. MOV #SYMB*4+FON,R0 ИЛИ TRAP 13 TRAP 12 .#SYMB*4+FON ГДЕ SYMB= 0,1,2,3 И FON= 0,1,2,3 ─────────────────────────────────────────────────────────────── TRAP 20 ЗАКРЫТИЕ ПОСЛЕДНЕГО ОТРЫТОГО ОКНА И ВОССТАНОВЛЕНИЕ СОСТОЯНИЯ ПРЕДЫДУЩЕГО ОКНА (КООРДИНАТЫ КУРСОРА,ЦВЕТ И Т.Д) TRAP 20 ─────────────────────────────────────────────────────────────── TRAP 22,23 ОТКРЫТИЕ НОВОГО ОКНА. MOV #ADRSCR,R0 ИЛИ TRAP 23 TRAP 22 .#ADRSCR .@WINDOW .@WINDOW HALT HALT WINDOW: .#REGIM .B:XLEN .B:YLEN ADRSCR- АДРЕС ВЫВОДА ОКНА (100000 И ВЫШЕ).ОН ДОЖЕН БЫТЬ ЧЕТНЫМ. ТАК ЖЕ ЧЕТНЫМ ДОЛЖЕН БЫТЬ И XLEN. XLEN- ШИРИНА ОКНА В БАЙТАХ YLEN- ВЫСОТА ОКНА В СИМВОЛЬНЫХ СТРОКАХ REGIM- ЯЧЕЙКА РЕЖИМОВ: БИТ 17 =1 -ЗАПОМНИТЬ МЕСТО ПОД ОКНОМ(ЭТО ОКНО МОЖНО ЗАКРЫТЬ) =0 -НЕ ЗАПОМИНАТЬ ---//---- (ЭТО ОКНО НЕЛЬЗЯ ЗАКРЫТЬ) БИТ 16 =1 -ОКНО С ТЕНЬЮ =0 -ОКНО БЕЗ ТЕНИ БИТ 15 =1 -ВЫВЕСТИ ТЕКСТ В ОКНЕ =0 -НЕТ --//-- БИТ 14 =1 -ВЫВЕСТИ БАРЫ =0 -НЕТ --//-- БИТ 5 =1 -ТЕНЬ ЧЕРНАЯ =0 -ТЕНЬ ПРОЗРАЧНАЯ БИТЫ 2,3 - ЦВЕТ СИМВОЛОВ БИТЫ 0,1 - ЦВЕТ ФОНА ЕСЛИ УСТАНОВЛЕН 13 БИТ ТО ПОСЛЕ YLEN СТАВИТСЯ .@ADRTEXT ЕСЛИ УСТАНОВЛЕН БИТ 12 ТО ДОПИСЫВАЕТСЯ БАЗА ДАННЫХ ДЛЯ БАРОВ (ФОРМАТ ТАКОЙ ЖЕ,КАК И У TRAP 34,35). ПОСЛЕ ОТКРЫТИЯ ОКНА,ВСЯ ИНФОРМАЦИЯ ВЫВОДИТСЯ ТОЛЬКО В ЭТО ОКНО, ВСЕ СКРОЛЛИНГИ БУДУТ ЗАТРАГИВАТЬ ТОЛЬКО ЭТО ОКНО,КООРДИНАТЫ КУРСОРА БУДУТ ОТСЧИТЫВАТЬСЯ ОТ ЛЕВОГО ВЕРХНЕГО УГЛА ЭТОГО ОКНА ─────────────────────────────────────────────────────────────── TRAP 24,25 ПЕРЕНАЗНАЧЕНИЕ РАБОЧЕГО ПРОСТРАНСТВА НА ЭКРАНЕ,МИНУЯ ЗАКРЫТИЕ И ОТКРЫТИЕ ОКОН. MOV #ADRSCR,R0 ИЛИ TRAP 25 TRAP 24 .#ADRSCR .B:XLEN .B:YLEN .B:XLEN .B:YLEN ADRSCR- AДРЕС НА ЭКРАНЕ (100000 И ВЫШЕ) ОН ДОЛЖЕН БЫТЬ НЕЧЕТНЫМ XLEN- ШИРИНА ПРОСТРАНСТВА В БАЙТАХ .ДОЛЖЕН БЫТЬ ЧЕТНЫМ YLEN- ВЫСОТА ПРОСТРАНСТВА В СИМВОЛЬНЫХ СТРОКАХ ─────────────────────────────────────────────────────────────── ТRAP 26 И ТRAP 30 ЧТЕНИЕ АДРЕСА КУРСОРА И КООРДИНАТ КУРСОРА СООТВЕТСТВЕННО, КОТОРЫЕ ПОМЕЩАЮТСЯ В R0 ─────────────────────────────────────────────────────────────── TRAP 34,35 ВЫВОД БАРОВ. MOV #ADRBAR,R0 ИЛИ TRAP 35 TRAP 34 .@ADRBAR HALT HALT ADRBAR: .B:B1X .B:B1Y .B:B2X .B:B2Y ... .B:ATTR .B:377 .@SUBR1 .@SUBR2 ... .A:BAR1 .B:0 .A:BAR2 . . . .B:0 .B:0 B1X,B1Y,B2X,B2Y,... - ОПИСАНИЕ ПОЗИЦИЙ (КООРДИНАТ) БАРОВ В ОКНЕ ATTR- ФОН И ЦВЕТ БАРА КОГДА ОН ВЫБРАН. ЕСЛИ УСТАНОВЛЕН БИТ 7 ТО ПРИ ВЫБОРЕ БАРОВ БЛОКИРУЮТСЯ КЛАВИШИ "СТРЕЛКА ВЛЕВО", "СТРЕЛКА ВПРАВО"(ОРГАНИЗУЕТСЯ РЕЖИМ-PULLDOWN) SUBR1,SUBR2,...- ПОДПРОГРАММЫ КОТОРЫЕ ВЫПОЛНЕНЯЮТСЯ В ЗАВИСИ- МОСТИ ОТ ВЫБРАННОГО БАРА.ЕСЛИ ПРИ ЗАВЕРШЕНИИ ПОДПРОГРАММЫ УСТАНОВЛЕН БИТ "С",ТО ПРОИСХОДИТ ОТКАЗ ОТ ДАЛЬНЕЙШЕГО ВЫБОРА БАРОВ. BAR1,BAR2,...- НАДПИСИ БАРОВ. БАР ВЫБИРАЕТСЯ СТРЕЛКАМИ И МЫШЬЮ, АКТИВИЗИРУЕТСЯ КЛАВИШЕЙ ВВОД ИЛИ ЛЕВОЙ КНОПКОЙ МЫШИ, ОТКАЗ ОТ БАРОВ ПРОИЗВОДИТСЯ КЛАВИШЕЙ "КТ" ИЛИ ПРАВОЙ КНОПКОЙ МЫШИ. ─────────────────────────────────────────────────────────────── ТРАP 36,37 ВЫВОД СТРОКИ СИМВОЛОВ НА ЭКРАН ПО АДРЕСУ. MOV #ADRSCR,R0 ИЛИ TRAP 37 TRAP 36 .#ADRSCR АДРЕС ЭКРАНА ОТ 100000. .@STRING .@STRING В СТРОКЕ МОЖНО УСТАНОВИТЬ ЦВЕТ ФОНА И СИМВОЛОВ ТАКЖЕ,КАК В ТRAP 12,13. ─────────────────────────────────────────────────────────────── TRAP 40,41 АНАЛОГИЧНО ТRAP 4,5 НО ЗАДЕРЖКИ ПРИ АВТОПОВТОРЕ НЕ ПРОИСХОДИТ. ═══════════════════════════════════════════════════════════════ (С) 1994 А.МЕЛЬНИКОВ CAROLINE SOFTWARE INC. г.САМАРА ═══════════════════════════════════════════════════════════════