В.А. Шаповалов (г. Йошкар-Ола)
Графика БЕЙСИКа
В рубрике "БК за рога" неоднократно печатались просьбы читателей журнала о публикации материалов по применению Вильнюсского БЕЙСИКа для программ на АССЕМБЛЕРе.
Предлагаю Вам методы использования графики БЕЙСИКа для программ пользователя, написанных на языке АССЕМБЛЕРа.
1. Закрашивание области экрана, ограниченной точками заданного цвета.
MOV #Х, -(Sp) MOV #Y, -(Sp) MOV #COLOR, -(Sp) MOV #LIM.COLOR, -(Sp) TST -(Sp) MOV #ADDR., -(Sp) TST -(Sp) JMP @#125656
X, Y - координаты точки, с которой начинается закраска.
COLOR - код цвета закраски (221 - 224).
LIM.COLOR - код цвета ограничивающих точек (221 - 224). Ограничивающими точками являются ещё и точки цвета закраски.
ADDR. - константа, являющаяся адресом ячейки, в которой содержится адрес выхода из программы.
При выполнении этой программы происходит обнуление 2134.
Программа активно использует стек. Размер стека при закраске сложной фигуры может превышать 3 кбайта.
2. Черчение Эллипса.
MOV #Х, -(SP) MOV #Y, -(SP) MOV #RAD, -(SP) MOV #COL, -(SP) MOV 2(SP), -(SP) Ввод координат ADD 10(SP), (SP) начала MOV 6(SP), -(SP) дуги MOV 6(SP), -(SP) Ввод координат ADD 14(SP), (SP) конца MOV 12(SP), -(5Р)дуги MOV #KY, -(SP) MOV #KX, -(SP) MOV @#214, -(SP) MOV #ADDR, -(SP) TST -(SP) JMP @#127350
X,Y - координаты центра эллипса.
RAD - радиус эллипса (равен размеру большой полуоси).
COL - цвет.
KY,KX - коэффициенты сжатия по X и У (обычно равны длине полуосей, но при черчении эллипсов больших диаметров должны быть пропорционально уменьшены во избежание сбоя программы)
ADDR - константа, являющаяся адресом ячейки, в которой содержится адрес выхода из программы.
При использовании данной программы чертится полный эллипс. Если вы хотите начертить дугу, то немного измените программу, задав координаты начала и конца дуги.
Заключение рецензента
1. Использование графической подпрограммы БЕЙСИКа БК0010.01 для закрашивания области экрана, ограниченной контуром заданного цвета, в программах, написанных в кодах или на АССЕМБЛЕРе, позволяет программисту экономить ОЗУ для других нужд.
К особенности предлагаемой подпрограммы относится способ организации перехода к графической подпрограмме с помощью безусловной передачи управления. Необычны и коды цвета 2218 - 2248 отличающиеся от стандартной кодировки. Код 221 соответствует стандартному цвету переднего плана в БЕЙСИКе.
2. Использование графической подпрограммы БЕЙСИКа для рисования эллипса в программах, написанных в кодах или на АССЕМБЛЕРе, позволяет экономить ОЗУ для других нужд и существенно расширяет графические возможности кодовых программ.
Л.Н. Жариков