Программа в ПЗУ SOS с адреса 0000h:
- запрещаются прерывания;
- в порт feh отправляется значение 07h;
- регистр вектора прерываний устанавливается в 3fh;
- память с ffffh по 4000h (включит.) последовательно от старших адресов к младшим заполняется байтом со значением 02h;
-затем последовательно, от младших адресов к старшим, тестируется каждая ячейка памяти на исправность: ранее записанное содержимое ячейки памяти уменьшается на 1 (в исправной ячейке было 02h, стало 01h) и в случае если неожиданно в этой ячейке вместо 01h окажется 00h - тест на этом заканчивается, иначе содержимое ячейки памяти уменьшается еще на 1 (в исправной ячейке было 01h, стало 00h)и если вдруг в этой ячейке окажется не ноль, тест на этом заканчивается, иначе ячейка считается исправной и тест переходит к следующей ячейке;
- тест продолжается до конца памяти или до первой встреченной сбойной ячейки;
- адрес последней исправной ячейки памяти записывается в системные переменные бейсика;
- устанавливаются некоторые другие системные переменные;
- если выполняется 'сброс', а не команда 'new', то из ПЗУ в ОЗУ копируется a8h байт UDG-графики (копируется в область последней исправной ячейки от старших адресов к младшим, начиная с этой ячейки);
- устанавливается соответствующая системная переменная, которая указывает на эту область и устанавливаются некоторые другие переменные;
-устанавливается стек на свободную область в ОЗУ (перед областью UDG);
- устанавливаются некоторые системные переменные;
- режим прерываний устанавливается в 1;
- инициализируются переменные клавиатуры, переменные каналов и потоков, переменные принтера;
- инициализируются переменные экрана и производится очистка экрана;
- выполняется печать © 1982 Sinclair Research Ltd;
- ожидается прием команд с клавиатуры.
NB! Команда new выполняется несколько иначе.




Ответить с цитированием