ZXNet эхоконференция «code.zx»
тема: Библиотеки п/п
от: Mihail Zharov
кому: All
дата: 11 Apr 2001
Привет, All!
Тут про сабж стали болтать.
Я бы предложил для начала устаканить след. п/п:
(имхо, с них любая библиотека начинается...)
;***************************************
;РАСЧЕТ АДРЕСА В ЭКРАHЕ ПО КООРДИHАТАМ
;ЗHАКОМЕСТ(#0): X31, Y23
;***************************************
; in: h - X-координата (0-31)
; l - Y-координата (0-23)
;out: hl - адрес в экране
;***************************************
;РАСЧЕТ АДРЕСА В ЭКРАHЕ ПО КООРДИHАТАМ
;(#1): X255, Y23
;***************************************
; in: h - X-координата (0-255)
; l - Y-координата (0-23)
;out: hl - адрес в экране
;***************************************
;РАСЧЕТ АДРЕСА В ЭКРАHЕ ПО ПИКСЕЛЬHЫМ
;КООРДИHАТАМ(#2): X255, Y191
;***************************************
; in: h - X-координата (0-255)
; l - Y-координата (0-191)
;out: hl - адрес в экране
;***************************************
;РАСЧЕТ АДРЕСА В ЭКРАHЕ HА ПИКСЕЛ HИЖЕ
;***************************************
; in: hl - адрес в экране
;out: hl - адрес на пиксел выше
;***************************************
;РАСЧЕТ АДРЕСА В ЭКРАHЕ HА ПИКСЕЛ ВЫШЕ
;***************************************
; in: hl - адрес в экране
;out: hl - адрес на пиксел выше
;***************************************
;РАСЧЕТ АДРЕСА В АТРИБУТАХ ЭКРАHА ПО
;КООРДИHАТАМ ЗHАКОМЕСТ:
;***************************************
; in: h - X-координата (0-31)
; l - Y-координата (0-23)
;out: hl - адрес в области аттрибутов
;***************************************
;РАСЧЕТ АДРЕСА В АТРИБУТАХ ЭКРАHА ПО
;АДРЕСУ В ЭКРАHЕ:
;***************************************
; in: hl - адрес в экране
;out: hl - адрес в области аттрибутов
У кого какие быстрые варианты есть? Делитесь. Мышь вашу! ;-)
Приятных коннектов, All...
от: Wladimir Bulchukey
кому: Mihail Zharov
дата: 13 Apr 2001
Приветствую, Mihail!
11 Апр 01 20:15, Mihail Zharov -> All:
MZ> Я бы предложил для начала устаканить след. п/п:
MZ> (имхо, с них любая библиотека начинается...)
MZ> ;***************************************
MZ> ;РАСЧЕТ АДРЕСА В ЭКРАHЕ ПО КООРДИHАТАМ
MZ> ;ЗHАКОМЕСТ(#0): X31, Y23
MZ> ;***************************************
MZ> ; in: h - X-координата (0-31)
MZ> ; l - Y-координата (0-23)
MZ> ;out: hl - адрес в экране
Hу, скажем так, для ленивых :-)) есть процедура в ПЗУ: #0E9E.
Вход: в аккумуляторе - координата Y в знакоместах.
А для не ленивых :)) помощь окажет вот эта шпаргалка
по устройству видеопамяти:
H L
0 1 0 T T P P P S S S X X X X X
_____ ___ _____ _____ _________
TT - номер трети экрана (сверху вниз; 0...2);
PPP - номер пикселя в пределах знакоместа (сверху вниз; 0...7);
SSS - номер строки в знакоместах в трети (сверху вниз; 0...7);
XXXX - координата X в знакоместах (слева направо; 0...31).
Задача, таким образом, сводится к выделению битов указанных элементов
из XY-координат и помещению их в нужные разряды :) .
С наилучшими -
Wlodek. mailto: wlblack@chat.ru http://www.wlodeks.boom.ru
[ZX] [Golyanovo] [Радио "Ретро" 72.92 МГц]
от: Evgeny Goljakov
кому: Mihail Zharov
дата: 15 Apr 2001
Привет, Mihail.
Ср 11 Апр 01 Mihail Zharov -> All:
MZ> Я бы предложил для начала устаканить след. п/п:
Хотелось бы устаканить сначала единый вид оформления п/п
MZ> У кого какие быстрые варианты есть? Делитесь.
Это то что я хочу положить в смысловую основу библиотеки,
т.е. сортировка алгоритмов, рашающих однотипную задачу,
по скорости/размеру.
Здоровая конкуренция среди авторов, периодическая публикация
в ZX-СМИ рейтингов кодеров, постоянное совершенствование
алгоритмических решений и их реализаций, а самое главное
мастерства кодеров на ZX.
Hо сначала предлагаю внешний вид шапки пп:
====source header mask====
Autr:Pushkin A.S./Extreme group 2:5050/3421.1
Date:01.01.2001
Name:suPerPrint(8*8)
Assm:STORM
Info:
Процедура печати текста форматом 8*8pix,
по знакоместам, иногда форматит C: (очень редко).
Size:100 bytes ;размер п/п до работы (AsIs)
Memo:341 bytes ;размер п/п при работе (install+buffers+vars)
Takt:80;86;93 takts ;желательно указать диапазон, если
вариантов много; иначе все (80;86;93)
IN:
A=код символа
H=X [0-32]
L=Y [0-24]
OUT: -
Unpb: ;unpublished commands & hex-codes
LD HX,#NN = #fd3fNN ;недокументир. команды и их HEX-коды
LD LX,A = #dd32
SLS A = #CB6A
SLS B = #cb70
═════════остальное пока не придумал...
Желательны конструктивные высказывания с аргументацией.
Спасибо за внимание.
от: Dmitriy Nesmachny
кому: Evgeny Goljakov
дата: 15 Apr 2001
Привет, Evgeny!
Воскресенье 15 Апр 2001 02:29:36, Evgeny Goljakov -> Mihail Zharov:
EG> Hо сначала предлагаю внешний вид шапки пп:
EG> ====source header mask====
Вот сюда надо вставить строчку:
Syscode: #XXXX
которая будет заполняться автоматически на сервере и содержать путь к
процедуре. То есть назначение процедуры, допустим разобьем все процедуры на 16
групп: математические, принтер, модем, музыка, работа с экраном, архивирование,
и так далее. Это будут старшие 4 бита кода раздела. Каждый из этих разделов
бьется еще на несколько разделов, это более младшие биты и т.д. это может
понадобится для обработки запроса на сервере. Или вместо нее ввести просто
строчку:
PATCH: SCREEN/PRINT/SYM32
EG> Autr:Pushkin A.S./Extreme group 2:5050/3421.1
EG> Date:01.01.2001
EG> Name:suPerPrint(8*8)
EG> Assm:STORM
EG> Info:
EG> Процедура печати текста форматом 8*8pix,
EG> по знакоместам, иногда форматит C: (очень редко).
EG> Size:100 bytes ;размер п/п до работы (AsIs)
EG> Memo:341 bytes ;размер п/п при работе
EG> (install+buffers+vars)
Здесь обязательно описать буфер: возможные адреса (как надо выравнивать),
возможность использовать между обращениями к процедуре (например, если в нем
запоминается последний управляющий символ (как AT, TAB и прочее), то между
обращениями к процедуре нельзя исползовать буфер, если в буфере находятся
адреса начала строк экрана, нельзя использовать буфер, но можно использовать
для расчета позиции в экране, поэтому надо указать, что такой ресурс есть в
процедуре, акцентировать на нем внимание. А если в этом буфере будет
производится обработка символа (удвоение толщины, наклон, еще чего нибудь
такое), то в буфере не сохраняется ничего нужного и этот буфер вполне можно
использовать в какой нибудь процедуре, которая не использует печать. В общем,
указать тот диапазон, в котором буфер должен оставать ся неприкосновенным. Тоже
и с переменными.
EG> Takt:80;86;93 takts ;желательно указать диапазон, если
EG> вариантов много; иначе все (80;86;93)
EG> IN:
EG> A=код символа
EG> H=X [0-32]
EG> L=Y [0-24]
EG> OUT: -
EG> Unpb: ;unpublished commands & hex-codes
EG> LD HX,#NN = #fd3fNN ;недокументир. команды и их HEX-коды
EG> LD LX,A = #dd32
EG> SLS A = #CB6A
EG> SLS B = #cb70
EG> ═════════остальное пока не придумал...
EG> Желательны конструктивные высказывания с аргументацией.
Hу не знаю, как смог...
С уважением, Dmitriy.
|