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.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
body postbox - нам пишут.
Введение - Некая контора под названием "е2е4" в лице трех сотрудников, поддавшись ностальгии и пинку руководителя, родила некое подобие музея ретрокомпьютеров.
Системки - NedoLang: Путь к самокомпиляции (часть 2).

В этот день...   16 октября