   Акселератор компьютера Sprinter.

   Акселератор предназначен для ускорения операций по пересылке блоков данных в ОЗУ и видео-ОЗУ.

   Акселератор позволяет:

- быстро заполнять горизонтальную или вертикальную линию длиной до 256 точек одним цветом (в режиме 640x256 - одинарную/двойную горизонтальную линию длиной до 512 точек) 
- быстро копировать горизонтальную или вертикальную линию длиной до 256 точек (в режиме 640x256 - горизонтальную линию до 512 точек) 
- проводить быстрые операции AND, OR, XOR с блоками памяти.

   Акселератор не может работать с блоками данных ПЗУ и Быстрого-ОЗУ.

   ОЗУ акселератора является частью внутреннего ОЗУ ППЛМ.
Операции по пересылке данных производятся путем записи блока данных в это
внутреннее ОЗУ, а затем копировании его в нужное место ОЗУ из ОЗУ акселератора.
Блок данных, записываемый в ОЗУ акселератора может иметь различную
длинну из диапазона 1..256 байт.

   После одной записи копирование может производиться несколько раз и, таким
образом, можно производить заполнение экрана текстурами.

   Для заполнения экрана одним цветом используется другой режим
акселератора. В нем вместо копируемого блока данных из внутреннего ОЗУ
производится запись данных с шины процессора, которые в этот момент не
изменяются.

   Управление акселератором производится непосредственно из программы.
Для этого изпользуются команды процессора, которые, фактически, являются
операциями типа NOP. 

        LD B,B - выключить акселетарор.
        LD D,D - включить акселератор в режим приема байта размера блока
                далее следует команда типа LD A,dat, где dat и будет новым
                размером блока. Если размер блока был установлен ранее,
                его можно не устанавливать.
        LD C,C - Операция Fill - заполнение одним байтом. Последующая
                команда типа LD (HL),A приведет к заполнению указанного
                ранее количества байт значением A
        LD E,E - Операция Fill для графического экрана - заполнение
                вертикальных линий.
        LD H,H - rezerved
        LD L,L - копирование блока. Последующая команда типа LD A,(HL)
                приведет к заполнению ОЗУ акселератора данными из адреса (HL),
                а команда типа LD (DE),A приведет к перезаписи данных из ОЗУ
                акселератора в ОЗУ или видео-ОЗУ.
        LD A,A - копирование блока для графического экрана подобна команде
                LD L,L, но работает с вертикальными линиями экрана.

   Пример использования акселератора:

        ; Считаем, что экранная страница уже открыта по адресу #C000
        LD HL,#C040     ; адрес начала линии первого экрана
        LD DE,#C180     ; адрес начала линии второго экрана
        LD BC,#140      ; длина экрана по горизонтали
        DI              ; запретить прерывания для работы с акселератором
        LD D,D          ; включить акселератор на установку размера блока
        LD A,0          ; установить размер блока - 256 байт
        LD A,A          ; установить акселератор на копирование
                        ; вертикальных линий.
        LDIR            ; копировать
        LD B,B          ; выключить акселератор
        EI              ; включить прерывания



   Эта часть программы произведет копирование всего содержимого первого экрана на другой. 
Время исполения составляет примерно 26 милисекунд.

   Дополнительные функции акселератора (AND, OR, XOR) работают таким же образом. 
Для выполнения логических функций используются команды XOR (HL); OR (HL); AND (HL).

        Пример кодирования блока в 256 байт.

        LD HL,ADRES_1
        LD DE,XOR_DAT
        DI
        LD D,D
        LD A,0     ; число байт, которые надо закодировать
        LD L,L
        LD A,(DE)  ; взять блок данных в ОЗУ акселератора
        XOR (HL)   ; произвести операцию XOR с данными акселератора
        LD (HL),A  ; запомнить в ОЗУ результат операции
        LD B,B
        EI


Скорость работы акселератора ограничивается только физической
скоростью работы основного ОЗУ. Определить примерное время работы команды с
акселератором можно по такой формуле:

Время работы = время работы команды без акселератора + время работы
акселератора

Время работы акселератора = число пересылаемых байт /7 микросекунд

Во время работы акселератора необходимо отключать прерывания, так как в этот момент 
изменяется система команд процессора и программа на прерывании не сможет работать корректно. 
