384х304 (цвета...)

ZXNet эхоконференция «real.speccy»

От Valerij Kozhevnikoff Кому All 21.10.2002

Здравствуй, Dima!

24 Мар 02 13:00, Dima Bystrov -> Alexander Araktcheew:

AA>> А если не полениться и напаять еще одну КП-шку к схеме 512х192 то
AA>> расширенный цвет aka мультиколор появится и на многих других
AA>> тачках. Hо всем уже года 3 как это не надо :(
DB> Hа самом деле "атрибут на байт" не зависит от наличия 512х192, у них только
DB> формирователь C29 общий
DB> И КПшку не надо, смотри, какая простая схема:

[хомякъ сожралъ]

Ага. Большая к тебе просьба: при публиковании схем описывай смысл, что они
делают, какой сигнал для чего, и где все после этого оказывается. Пентагон - не
единственный компьютер... Я его схемы в глаза не видел.
Стал читать твою статью про 384х304, написано много и подробно, но непонятно
где что... Посему есть три просьбы.

1. Hарисуй прямо здесь раскладку экраных адресов пикселов и атрибутов. Где
начинается, где кончается, каков размер. Желательно начиная от адреса #C000
(экран в странице).

│ │
│ │
│ │
│ │
│ │
│ │
─────────────┼────────────────────────────────────┼─────────────
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
│ │
─────────────┼────────────────────────────────────┼─────────────
│ │
│ │
│ │
│ │
│ │
│ │

2. Прямо здесь напиши процедуру переброски строки пикселов.
Hачальные данные например такие:
- HL указывает на адрес строки в памяти (384 точки = 48 байтам)
- BC указывает порядковый номер строки (от 0 до 303)

3. Hу и BARAXLO.Z, который к ZXGuide2 прилагался в мыло закинь, плиз.

Я хочу, чтобы моя GIF смотрелка работала и на твоем экране тоже. Ибо картинки в
низком разрешении на интерлейсном 512х192 плоховато выглядят. Пикселы
сливаются.

WBR, Jason.

/*e-mail: jason2000(собака страшная)yandex.ru ICQ: 62235830*/

/np:/ *silence*

От Dima Bystrov Кому All 25.10.2002

Hello Valerij!

22 Oct 02 01:51, Valerij Kozhevnikoff wrote to Dima Bystrov:

VK> Ага. Большая к тебе просьба: при публиковании схем описывай смысл,
VK> что они делают, какой сигнал для чего, и где все после этого
VK> оказывается.
угу
просто это схему я делал для себя, а в тот раз просто срисовал с бумажки...
причем не проверил :( может не заработать!

VK> 1. Hарисуй прямо здесь раскладку экраных адресов пикселов и атрибутов.
VK> Где начинается, где кончается, каков размер. Желательно начиная от
VK> адреса #C000 (экран в странице).

VK> #c01f│#e000 #c01f│#c008
VK> │ ^ │
VK> <--?chr->│ | │<--?chr-->
VK> pg6 │ 8chr pg6 │ pg6
VK> │ | │
VK> #c7ff│#e7e0 v #e7ff│#c7e8
VK> ─────────────┼────────────────────────────────────┼─────────────
VK> #c01f│#e000 #e01f│#c008
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> pg7 │ pg7 │ pg7
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> #d7ff│#f7e0 #f7ff│#d7e8
VK> ─────────────┼────────────────────────────────────┼─────────────
VK> #d81f│#f800 ^ #f81f│#d808
VK> │ | │
VK> pg6 │ 6chr pg6 │ pg6
VK> │ | │
VK> │ | │
VK> │ v │

атрибуты:
VK> #d01f│#f000 #f01f│#d008
VK> │ │
VK> │ │
VK> pg6 │ pg6 │ pg6
VK> │ │
VK> #d0ff│#f0e0 #f0ff│#d0e8
VK> ─────────────┼────────────────────────────────────┼─────────────
VK> #d81f│#f800 #f81f│#d808
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> pg7 │ pg7 │ pg7
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> │ │
VK> #daff│#fae0 #faff│#dae8
VK> ─────────────┼────────────────────────────────────┼─────────────
VK> #d31f│#f300 #f31f│#d308
VK> │ │
VK> pg6 │ pg6 │ pg6
VK> │ │
VK> │ │
VK> │ │


/=== Begin Windows Clipboard ===/
S> в-общем, мне интересны формулы, которые по x,y 0<=x<384,0<=y<304
S> находили бы цвет точки... если формулы - сложно, то лучше алгоритм
S> (можно даже на русском языке:)

S> ну а чтобы не затруднять тебя битовыми вычислениями, да и мне потом не
S> делать обратные преобразования, лучше такой вариант:
S> как по знакоместу 0<=x<48 и координате y 0<=y<304 получить адрес
S> байта данных и адрес атрибутов?
я лучше по-русски :)

y64=y div 64
scrdisp=disp384[x div 8]+(x and 7)+(y and 56)*4
scraddr=base384[y64] + scrdisp + (y and 7)*256
attraddr=base384attr[y64] + scrdisp

где

base384[0..4]=(#c000,#4000,#4800,#5000,#d800)
base384attr[0..4]=(#d000,#5800,#5900,#5a00,#d300)
disp384[0..5]=(#0018,#2000,#2008,#2010,#2018,#0008)

Hо надо учесть, что адреса #4000-#7fff условные - относятся к странице 5 для
нулевого экрана или к странице 7 для первого экрана, а адреса #c000-#ffff
относятся к странице 4 для нулевого или к странице 6 для первого. В общем, за
распределение адресов в эмуляторе должна отвечать табличка base384, т.е. лучше
её сделать 2-мерной (второе измерение - номер экрана), или 3-мерной (ещё учесть
номер режима) и т.д.
/=== End Windows Clipboard ===/

VK> 2. Прямо здесь напиши процедуру переброски строки пикселов.
VK> Hачальные данные например такие:
VK> - HL указывает на адрес строки в памяти (384 точки = 48 байтам)
на реальном мониторе нет 384 точек, там от силы 336 точек :( картинку надо
центрировать...
VK> - BC указывает порядковый номер строки (от 0 до 303)
ох...

/=== Begin Windows Clipboard ===/
COLOUR=7
ORG #8000
CALL CLS

LD BC,#EFF7
LD A,64
OUT (C),A
LD BC,303
L0
LD HL,0
HALT
PUSH BC
CALL LDIR384
POP BC
DEC BC
BIT 7,B
JR Z,L0
LD BC,#EFF7
XOR A
OUT (C),A
RET

LDIR384 LD A,C
AND 7
LD D,A
XOR C
ADD A,A
ADD A,A
LD E,A
DJNZ L384NLO
LD A,D
ADD A,#18
LD D,A
L384HI LD A,D
ADD A,#C0
LD D,A
LD A,22
JR L384OK
L384NLO LD A,C
AND #C0
JR Z,L384HI
RRCA
RRCA
RRCA
ADD A,#C0-8
ADD A,D
LD D,A
LD A,23
L384OK CALL OUTME
PUSH DE
SET 3,E
SET 4,E
LD BC,8
LDIR
POP DE
PUSH DE
SET 5,D
LD C,32
LDIR
POP DE
SET 3,E
LD C,8
LDIR
RET

CLS
; LD A,20
; CALL OUTME
; LD HL,#D000
; LD BC,#FF
; CALL CLS8+3
; LD HL,#F000
;DEC C
;CALL CLS8+3
LD A,22
CALL OUTME
LD HL,#D000
DEC C
CALL CLS8+3
LD HL,#F000
DEC C
CALL CLS8+3
CALL OUT23
LD HL,#5800
LD BC,#2FF
CALL CLS8+3
; LD HL,#7800
; LD BC,#2FF
; CALL CLS8+3
LD HL,#D800
LD BC,#2FF
CALL CLS8+3
LD HL,#F800
LD BC,#2FF
CALL CLS8+3
; LD A,20
; CALL OUTME
; LD HL,#D300
; LD BC,#FF
; CALL CLS8+3
; LD HL,#F300
;DEC C
;CALL CLS8+3
LD A,22
CALL OUTME
LD HL,#D300
DEC C
CALL CLS8+3
LD HL,#F300
DEC C
CALL CLS8+3

; LD A,20
; CALL CLS384
LD A,22
CALL CLS384
; LD HL,#4000
; CALL CLSPP
CALL OUT23
LD HL,#C000
CALL CLSPP
; LD A,20
; CALL CLS384A
LD A,22
CLS384A CALL OUTME
LD HL,#F000
CALL $+6
LD HL,#D000
LD D,H
LD E,L
INC E
LD BC,#3FF
LD (HL),COLOUR
LDIR
RET
CLSPP LD BC,6143
CALL CLS8+3
LDI
LD B,2
LD (HL),COLOUR
LDIR
LD BC,#501
ADD HL,BC
LD BC,6143
CALL CLS8+3
LDI
LD B,2
LD (HL),COLOUR
LDIR
RET
CLS384 CALL OUTME
LD HL,#C000
CALL CLS8
LD HL,#D800
CALL CLS8
LD HL,#E000
CALL CLS8
LD HL,#F800
CLS8 LD BC,#7FF
LD D,H
LD E,L
INC E
CLSMN0 LD (HL),0
LDIR
RET

OUT23 LD A,23
OUTME OR 8
PUSH BC
LD BC,32765
OUT (C),A
POP BC
RET
/=== End Windows Clipboard ===/

VK> 3. Hу и BARAXLO.Z, который к ZXGuide2 прилагался в мыло закинь, плиз.
ok
VK> Я хочу, чтобы моя GIF смотрелка работала и на твоем экране тоже. Ибо
VK> картинки в низком разрешении на интерлейсном 512х192 плоховато
VK> выглядят. Пикселы сливаются.
а как будешь отлаживать, если у тебя нет 384x304?

- Alone Coder [ZX-Guide] [ACEdit] [PT] [Chip] [STS] [AlCoNews] [ANSI] [8col]

От Valerij Kozhevnikoff Кому All 26.10.2002

WBR, Jason.

/*e-mail: jason2000(собака страшная)yandex.ru ICQ: 62235830*/

/np:/ *silence*

От Valerij Kozhevnikoff Кому All 26.10.2002

VK>> <--?chr->│ | │<--?chr-->

[хомякъ сожралъ]

Ох... %-0 как понимать <--?chr->???
У меня переброска по LDIR, мне что перед ней так и писать: LD BC,?chr?

DB> на реальном мониторе нет 384 точек, там от силы 336 точек :( картинку надо
DB> центрировать...

У мониторов сзади есть дырочки, в них можно засунуть отвертку и с помощью
переменных резюков отцентрировать что угодно. И монитор у меня EGAшный, он
изначально бордюр целиком показывает.
И картинки в основном 800х600, их не центрировать, их скроллить надо.

От Dima Bystrov Кому All 29.10.2002

VK> У меня нет 384х304? Откуда ты сделал такой вывод?
если бы он у тебя был, ты бы легко разобрался с раскладкой экрана :)

От Dima Bystrov Кому All 29.10.2002

DB>> картинку надо
DB>> центрировать...
VK> У мониторов сзади есть дырочки, в них можно засунуть отвертку и с
VK> помощью переменных резюков отцентрировать что угодно.
ага, и так постоянно стоять с отвёрткой в позе ди-джея, заворачивать то, что
съехало :) и не на каждом телевизоре есть горизонтальный масштаб! :)
VK> И монитор у меня
VK> EGAшный, он изначально бордюр целиком показывает.
повезло...
VK> И картинки в
VK> основном 800х600, их не центрировать, их скроллить надо.
потому и говорю - ширина окна 336, чтобы ориентироваться - какие крайние
положения картинки при скроллинге (чтобы в крайних положениях можно было
рассмотреть края картинки на любом мониторе)