Тоже съезжает вверх. :v2_dizzy_tired2:
- - - Добавлено - - -
Ибо нужно ещё ето.
- - - Добавлено - - -
https://media1.giphy.com/media/v1.Y2...wcUQ/giphy.gif
Вид для печати
Тоже съезжает вверх. :v2_dizzy_tired2:
- - - Добавлено - - -
Ибо нужно ещё ето.
- - - Добавлено - - -
https://media1.giphy.com/media/v1.Y2...wcUQ/giphy.gif
Ну, я предупредил, что с головы пишу :)
Вот это проверил:
Код:org $8000
entry:
ld a, 9
ld (22528),a
ld (22528+767),a
starter:
halt
ld hl, 22529-1
ld de, 22528-1
ld a, 24
scroll:
inc hl ; можно заменить на inc l
inc de
ex af, af'
ld a, (de)
DUP 31
ldi
EDUP
ld (de), a
ex af, af'
dec a
jp nz, scroll
jp starter
ret
jerri, удали EmuZWin.exe.manifest, тогда кнопки будут отображаться в винде 10 нормально.
Скорее ALKO
- - - Добавлено - - -
Ну разве что совсем чуточку, и освободим альт рег А:
Код:org $8000
entry:
ld a, 9
ld (22528),a
ld (22528+767),a
starter:
halt
ld hl, 22529
ld de, 22528
scroll:
ld a, (de)
DUP 31
ldi
EDUP
ld (de), a
inc l
inc de
ld a, $5B
cp d
jp nz, scroll
jp starter
ret
Bedazzle, спасибо, пашет.
Но я пока не уверен, как там ляжет условие в конце, где ld a, $5B.
У меня буфер 40х24, так что 960 на 256 делится с остатком, и в один байт не укладывается.
А прокручивать ты весь буфер будешь, или только видимую часть ? Насколько помню ты буфер вроде мутил тупо чтоб спрайты обрезать ))
- - - Добавлено - - -Код:; ...
ld de,Boofer
ld hl,Boofer+1
ld bc,24*31 ; 24*(размер прокручиваемой зоны-1: т.е. количество LDI ),
; т.е. 24*31 для видимой части, 24*39 для всего буфера
loop
ld a,(de)
DUP 31 ; если прокручивается только видимая часть или 'DUP 39' , если весь буфер
ldi
EDUP
ld (de),a
DUP 9 ; если крутится видимая часть или убрать обёртку 'DUP/EDUP' вокруг инков, если весь буфер
inс hl
inc de
EDUP
ld a,b
or c
jp nz,loop
; ...
Пожалуй если прокручивается видимая часть буфера, то лучше пожалуй заменить
на :Код:DUP 9
inс hl ; 6
inc de ; 6
EDUP ; (6+6)*9 = 108 тактов , 18 байт
- - - Добавлено - - -Код:push bc ; 11
ld bc,9 ; 10
add hl,bc ; 11
ex de,hl ; 4
add hl,bc ; 11
ex de,hl ; 4
pop bc ; 10 = 61 такт , 9 байт
;
Да так, как флаг p/v кроме ldi никакая команда здесь не меняет,
то можно
заменить всего лишь наКод:ld a,b
or c
jp nz,loop
Код:jp pe,loop