[an error occurred while processing this directive]
│.........*.......*...........*.............*.......................< /OSCLI/ интерпретатор командной строки Из языков высокого уровня команды для ОС могут подаваться через интерпретатор командной строки. Для этого команде ОС должен предшествовать знак '*'. Например *ROMS Введенная командная строка целиком передается OSCLI (исключая '*'). Из программы на ассемблере можно выполнить любую команду ОС. Для этого надо поместить в регистры X (младший байт) и Y (старший байт) адрес начала командной строки и обратиться по адресу &FFF7. Комадная строка должна заканчиваться символом &0D. Знаки '*' и пробелы стоящие в начале строки отбрасываются. ─PE10 Пример использования OSCLI: 10 DIM C 20 20 ¤C="HELP DFS" 30 X%=C MOD 256 40 Y%=C DIV 256 50 CALL &FFF7 После ввода команды RUN на экран будет выдана справочная информация по ДФС. Компьютер выделит область для массива C - возможно с адреса &F0C: ─PE11 Адрес Содержимое & F0C & 48 (H) & F0D & 45 (E) & F0E & 4C (L) & F0F & 50 (P) & F10 & 20 (пробел) & F11 & 44 (D) & F12 & 46 (F) & F13 & 53 (S) & F14 & 0D (перевод строки) ─PE |||/ Ошибки и обработка BRK/||| Для обработки ошибок Бейсик использует команду программного прерывания BRK. В своих программах на ассемблере Вы также можете воспользоваться этим способом. В Бейсике (как и в других языках) за командой BRK располагается последовательность байтов, содержащая следующую информацию: сама команда BRK (&00) Номер ошибки Сообщение об ошибке &00 - признак конца сообщения Когда 6502 выполняет команду BRK ОС помещает адрес следующего за BRK байта в ячейки &FD и &FE. Таким образом они указывают на номер ошибки. Затем ОС передает управление по вектору &202. Стандартная подпрограмма, чей адрес обычно располагается в ячейках &202 и &203, печатает сообщение об ошибке. Команда BRK позволяет пользователю легко генерировать свои собственные сообщения об ошибках. ─PE ─LJ|||/HIMEM, LOMEM, TOP и PAGE/||| Эти четыре псевдо-переменные содержат информацию о распределении оперативной памяти. PAGE и TOP содержат адреса начала и конца программы пользователя, таким образом PRINT TOP-PAGE печатает размер программы. HIMEM содержит адрес конца рабочей области. Таким образом, PRINT HIMEM-TOP печатает размер свободной области памяти. Когда Вы запускаете программу, компьютеру требуется некоторе количество памяти для хранения переменных, поэтому Вы не можете использовать всю свободную память. В Агате ОЗУ занимает адреса с 0 до 32767 (&7FFF). В 7-м режиме ОЗУ распределяется так, как показано на слдеующей странице. Если пользователь добавляет в программу новые строки значение TOP увеличивается. Обычно компьютер располагает область хранения переменных сразу после конца программы. Однако, переменные можно расположить где нибудь выше, изменив значение переменной LOMEM. ─PE --------------------------------------- &7FFF Экранная область ----> --------------------------------------- &7800 HIMEM Свободная область Переменные программы ^ LOMEM | ----> --------------------------------------- TOP | v Программа пользователя PAGE ----> --------------------------------------- &F00 Системные переменные --------------------------------------- &000 ─PE |||/Распределение памяти в ОС ОНИКС/||| │....*....*.*......*................................................< -------------------------------------------------------- Адреса Назначение -------------------------------------------------------- D000 - FFFF Операционная Система C000 - CFFF Ячейки ввода/вывода 8000 - BFFF Один из языков (например Бейсик) 0000 - 7FFF Оперативная память F00 Значение PAGE по умолчанию D80 - DFF Используется ОС D00 - D7F Зарезервировано для обработки NMI C00 - CFF Резервный буфер B00 - BFF Определения функциональных клавиш A00 - AFF Буфер для последовательного интерфейса 900 - 9FF Системные переменные 800 - 8FF Рабочая область 400 - 7FF Рабочая область активного резидента 300 - 3FF Рабочая область 200 - 2FF Системные вектора и переменные 100 - 1FF Стек 6502 000 - 0FF Нулевая страница Нулевая страница FF Старший бит - флаг 'ВЫХОД' FD - FE Адреса, используемые BRK FC Используется для сохранения A при обработке IRQ D0 - FB Системные ячейки ОС B0 - CF Ячейки файловой системы 90 - AF Системные ячейки ОС 70 - 8F Свободные ячейки для пользователя 0 - 6F Ячейки Бейсика --------------------------------------------------------[an error occurred while processing this directive]