Я тогда не знал точно как будет себя вести встроенный ассемблер. Сейчас уже проникся, а писал, ведь год назад.
У меня, намного больше примеров, конечно.
В частности библиотека прямого доступа к видеопамяти.
Только всё это надо обсуждать, я же не программист вовсе.
Кстати, вот пример очарования PL65:
Выравнивание начала памяти PM графики по 2 килобайтам:
BYTE PMDUMMY[$800-(@ AND $7FF)]
То есть начиная от текущего программного указателя обозначен как @ строится массив, выравненный по 2кб, после этого @ указывает уже на начало PM памяти и адрес можно взять оператором точкой. То есть PM=.PMDUMMY.
Соответственно, если надо выровнять модифицированный шрифт по 1кб границе,
будет так:
BYTE CHRDUMMY[$400-(@ AND $3FF)]
Вкусно!
Вот работа с прерываниями:
Код:! ------------------------------------ ! INTERRUPT DLINT() BYTE ColReg=$D018 BEGIN ColReg=0 END ! ------------------------------------ ! PROC int_enable() POINTER Ptr INT Addr BASED Ptr BYTE Data BASED Ptr BYTE NMIEN=$D40E ! Interrupt register INT SDL=$230 ! Display list address BEGIN Ptr=$200 Addr=.DLINT !Store address of interrupt subroutine into vector Ptr=SDL+15 Data=$82 ! interrupt at line fifteen NMIEN=$C0 ! Enable interrupt END ! ------------------------------------ ! MAIN() BEGIN int_enable() END
Здесь по DLI прерыванию, наступающему по достижении 15-й строки,
цвет фона меняется на чёрный.
DLINT() - меняет фон
int_enable() - Инициализация DLI
При работе с указателями
сначала определяется сам указатель (2 байта на нулевой странице)
После этого к нему привязываются переменные, которые BASED на нём.




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