nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 15:44



Reply to topic  [ 22 posts ]  Go to page Previous  1, 2
Акселератор 
Author Message
Novelist

Joined: 10 Feb 2011 07:04
Posts: 35
Location: 92.112.8.125
Reply with quote
Post 
Shaos wrote:
А вот чего я точно упустил, так это возможность с помощью номера страницы управлять режимами копирования (сквозное и/или с прозрачностью):
Code:
        LD A,50h        ; Use   50h for normal mode
                        ;       54h for "no copy in main shadow RAM" mode
                        ;       58h for "FF is transparent" mode
                        ;       5Ch for "no copy in main shadow RAM" and
                        ;               "FF is transparent" mode
        OUT (PAGE3),A

Только я пока не встретил ни одной программы, которые бы этим пользовались...

Для игр незаменимая вещь, как раз думаю об этой фиче, т.к. планирую сделать игрушку кроссплатформенную (Spec, Evo и Sprinter)


28 May 2013 11:51
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Hard wrote:
Shaos wrote:
А вот чего я точно упустил, так это возможность с помощью номера страницы управлять режимами копирования (сквозное и/или с прозрачностью):
Code:
        LD A,50h        ; Use   50h for normal mode
                        ;       54h for "no copy in main shadow RAM" mode
                        ;       58h for "FF is transparent" mode
                        ;       5Ch for "no copy in main shadow RAM" and
                        ;               "FF is transparent" mode
        OUT (PAGE3),A

Только я пока не встретил ни одной программы, которые бы этим пользовались...

Для игр незаменимая вещь, как раз думаю об этой фиче, т.к. планирую сделать игрушку кроссплатформенную (Spec, Evo и Sprinter)


Как начнёшь делать - кидай сюда демки - я их в своём эмлуяторе постараюсь поддержать :roll:

_________________
:dj: https://mastodon.social/@Shaos


28 May 2013 12:14
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Quote:
LD B, B - Switch the Accelerator off.

LD D, D - Switch the Accelerator in the mode of load a byte of block size.
Next command is "LD A, dat" where "dat" is a new block size.

LD C, C - Switch the Accelerator to filling by one byte mode for horizontal line.
Next command "LD (HL), A" will fill all bytes by value of A.

LD E, E - Switch the Accelerator to filling by one byte mode for vertical line.

LD H, H - Reserved.

LD L, L - Switch the Accelerator to copying a data block mode for horizontal line of the screen.
Next command "LD A, (HL)" will fill the Accelerator memory by value of (HL).
And the command "LD (DE), A" will copy the data from the Accelerator memory to RAM or to VideoRAM.

LD A, A - Switch the Accelerator to copying a data block mode for vertical line of the screen.


Предлагаю в будущем заюзать LD H,H как задание старшего байта размера блока, причём вызов LD D,D будет задавать младший байт, сбрасывая старший байт в 0 (хотя если устанавливается 0, то как и раньше размер будет браться как 256, т.е. старший байт становится равным единице автоматически). Таким образом можно будет снять ограничение на копирование блоков больше 256 байт...

_________________
:dj: https://mastodon.social/@Shaos


29 May 2013 13:31
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Shaos wrote:
Предлагаю в будущем заюзать LD H,H как задание старшего байта размера блока, причём вызов LD D,D будет задавать младший байт, сбрасывая старший байт в 0 (хотя если устанавливается 0, то как и раньше размер будет браться как 256, т.е. старший байт становится равным единице автоматически). Таким образом можно будет снять ограничение на копирование блоков больше 256 байт...

Либо LD H,H будет задавать младший байт (как и LD D,D), но старший байт при этом будет всегда устанавливаться в 1 автоматом (т.е. максимум в 512 байт можно будет размер копирования установить - это если сделать LD H,H и задать ноль - только в этом случае старший байт станет 2)

_________________
:dj: https://mastodon.social/@Shaos


18 Dec 2020 03:10
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
По последним сводкам LD H,H таки задействована - она удваивает пикселы:
Code:
ACCELER.TDF:      WHEN 0 => ACC_DIR[] = B"00000000"; % LD B,B %
ACCELER.TDF:      WHEN 1 => ACC_DIR[] = B"00100101"; % LD C,C % % fill by constant %
ACCELER.TDF:      WHEN 2 => ACC_DIR[] = B"00001001"; % LD D,D % % load count accelerator %
ACCELER.TDF:      WHEN 3 => ACC_DIR[] = B"00010101"; % LD E,E % % fill by constant VERTICAL %
ACCELER.TDF:      WHEN 4 => ACC_DIR[] = B"01000001"; % LD H,H % % duble byte fn %
ACCELER.TDF:      WHEN 5 => ACC_DIR[] = B"00100111"; % LD L,L % % copy line %
ACCELER.TDF:      WHEN 7 => ACC_DIR[] = B"00010111"; % LD A,A % % copy line VERTICAL %

и читает она напрямую с HDD:
Code:
        CASE ACC_DIR6 IS
                WHEN 0 => MDOY[7..0] = DI[];
                WHEN 1 => MDOY[7..0] = HDDR[];
        END CASE;

и судя по исходнику VPLAY3.ASZ оно используется вот так:
Code:
        LD H,H
        REPT 16
        INI
        INC HL
        INC B
        ENDM
        LD B,B

_________________
:dj: https://mastodon.social/@Shaos


07 Apr 2021 00:32
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Shaos wrote:
Shaos wrote:
Предлагаю в будущем заюзать LD H,H как задание старшего байта размера блока, причём вызов LD D,D будет задавать младший байт, сбрасывая старший байт в 0 (хотя если устанавливается 0, то как и раньше размер будет браться как 256, т.е. старший байт становится равным единице автоматически). Таким образом можно будет снять ограничение на копирование блоков больше 256 байт...

Либо LD H,H будет задавать младший байт (как и LD D,D), но старший байт при этом будет всегда устанавливаться в 1 автоматом (т.е. максимум в 512 байт можно будет размер копирования установить - это если сделать LD H,H и задать ноль - только в этом случае старший байт станет 2)

Ещё мысль - LD H,H и дальнейшая команда LD A,n могут устанавливать внутренний набор битиков задающих расширенные режимы работы акселератора (по умолчанию все нули):
бит 0 и 1 - старшие 2 бита длины буфера акселя (вплоть до 1023)
бит 7 - включает режим декремента адреса источника (предложено сегодня пользователем Smalovsky на соседнем форуме):
https://zx-pk.ru/threads/33324-moi-eksperimenty.html?p=1118859&viewfull=1#post1118859

_________________
:dj: https://mastodon.social/@Shaos


31 May 2021 12:50
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Сайман тут разбирает spectrum.exe и ему удалось подсмотреть способ как программно можно отключить акселератор :o
Code:
; Disable accelerator
        ld      bc,#204E
        xor    a ; the same as a=0
        out     (c),a

Я проверил - работает :)

Чтобы включить его обратно надо в этот порт записать 1

_________________
:dj: https://mastodon.social/@Shaos


02 Jul 2021 22:36
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 22 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 9 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.