если так принципиально
переменные к коде моветонКод:ld a,(m1) xor #01 jr z,.l1 inc l .l1 ld (m1),a
если так принципиально
переменные к коде моветонКод:ld a,(m1) xor #01 jr z,.l1 inc l .l1 ld (m1),a
Последний раз редактировалось krt17; 17.05.2016 в 23:51.
Здравствуйте. Помогите модернизировать процедуру расчета адреса:
На входе:Код:LD A,L AND 7 RRCA RRCA RRCA OR H LD H,L LD L,A LD A,H AND #18 OR #40 LD H,A
H = X-координата от 0 до 31;
L = Y-координата от 0 до 47.
Т.е. по вертикали в одно знакоместо 8x8 "укладываются" по два прямоугольника высотой 4 пикселя каждый.
На выходе:
HL = адрес в экранной области.
Ну самое простое - это учитывать младший бит Y-координаты:
А вообще исходя из строния спек-экрана разумней (на мой взгляд) хранить координаты наоборот (H=Y, L=X).Код:SRL L EXA LD A,L AND 7 RRCA RRCA RRCA OR H LD H,L LD L,A LD A,H AND #18 OR #40 LD H,A EXA RET NC SET 2,H RET
Тогда расчёт такой:
Можно сделать и быстрей.Код:; Stolb-столбец ; Sg-сегмент ; Str-строка в сегменте ; P-старший бит пикселей в знакоместе по вертикали ; Формат координат: H=00SgStrP L=000Stolb ; Формат адреса в экране: H=010SgPix L=StrStolb RRC H ; H=P00SgStr LD A,H ; A=P00SgStr RRCA ; A=rP00SgSt RRCA ; A=trP00SgS RRCA ; A=StrP00Sg XOR L AND #E0 XOR L ; A=StrStolb LD L,A ; L сформирован LD A,H ; A=P00SgStr RLC H ; H=00SgStrP RLC H ; H=0SgStrP0 RLC H ; H=SgStrP00 XOR H AND %11100 XOR H ; A=000SgP00 OR #40 ; A=010SgP00 LD H,A ; H сформирован
(XOR-AND-XOR тут сделано для защиты от переполнения, например если L вылезло за 31).
В общем как-то так, оптимизаций наверняка море
а так не лучше, не?
http://speccy.info/w/index.php?title...72&oldid=32289
понадобится 1024 байта для построение точки.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
AndTorp,
либоКод:LD A,D RRCA RRCA RRCA RRCA AND %11100000 OR E LD E,A LD A,D RRA AND %00011000 EX AF,AF' LD A,D RLCA RLCA AND %11111100 LD D,A EX AF,AF' XOR D AND %11111000 XOR D OR #40 LD D,A
Как-то так...Код:SLA D SLA D LD A,D AND #38 RLCA RLCA OR E LD E,A LD A,D AND #C0 RRA SCF RRA RRCA XOR D AND #F8 XOR D LD D,A
Последний раз редактировалось drbars; 29.05.2016 в 14:53.
копаюсь в одной демке, вот код HL=A*E
Вроде и знак учитывается, а знак двух регистров - нет. Непонятно, как это работает?Код:sub_80CB: ld hl, 0 bit 7, e jr z, loc_80D3 dec hl loc_80D3: ld d, h loc_80D4: srl a;0->A->c jr nc, loc_80D9 add hl, de loc_80D9: sla e;C<-E-<0 rl d; thru C or a jr nz, loc_80D4 ld a, h ret
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)