|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Author |
Message |
CHRV
God
Joined: 29 Dec 2003 01:00 Posts: 1101 Location: Москва
|
| | | | 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.
| | | | |
Люди кто нить проверял работу оного?
Короче у меня функции OR и AND работает, а вот XOR не работает....
Видеопамять в первом окне (#4000-#7FFF), прога во втором (#8000-#BFFF).
Фрагмент следующий:
DI
LD l,l
LD a,(de)
XOR (hl)
LD (hl),a
LD b,b
EI
причем HL и DE адреса в видеопамяти.
OR и AND работают, а XOR работает как OR
|
28 Jan 2004 00:03 |
|
|
Mac Buster
Retired
Joined: 03 Aug 2003 22:37 Posts: 1474 Location: Moscow
|
Второй день забываю проверить Может быть стоит каждую инструкцию акселератора завершать кодом его отключения ?
|
30 Jan 2004 03:35 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22663 Location: Silicon Valley
|
Похоже, что именно так и надо делать - включил акселератор, выполнил 1 команду, выключил - и т.д. Иначе он работает не так, как ожидалось или вообще не работает (на реальной железяке).
|
02 Feb 2004 13:11 |
|
|
CHRV
God
Joined: 29 Dec 2003 01:00 Posts: 1101 Location: Москва
|
Я покрутил по всякому XOR чтото у меня не получился, ну ладно. Впринципе OR и AND вполне достаточно
|
02 Feb 2004 23:24 |
|
|
Hard
Novelist
Joined: 10 Feb 2011 07:04 Posts: 35 Location: 92.112.8.125
|
Код из flicplay.exe: Тут мы устанавливаем размер буфера записью значения аккумулятора в (DE), операция записи. кусок из сырка sprint, отработка команды акселя по установке размера буфера:
Тут видно, что сия конструкция реагирует лишь на чтение, т.е. на команды типа LD A,X;LD A,(DE) и пр. Другими словами твой эмулятор проигнорирует команду установки буфера, оставит его равным 256 байт, и соответственно в программах, с подобным способом инициализации акселя полезут глюки. Я могу назвать по крайней мере 2 таких программы: flicplay и gfxview.
|
17 Apr 2012 12:03 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22663 Location: Silicon Valley
|
я боюсь, что это опечатка в самом flicplay - после ld d,d должна отрабатывать только ld a,# и ничего больше...
|
17 Apr 2012 12:18 |
|
|
Hard
Novelist
Joined: 10 Feb 2011 07:04 Posts: 35 Location: 92.112.8.125
|
Не думаю. Т.к. до исправления сего глюка у меня не работал как flicplayer (вылетал с матерными словами, либо ресетил "машину"), так и gfxview (копирование в буфер фона под окнами глючило), после исправления - все заработало как на реале. В твоем эмуляторе указанный софт глючит так же как и у меня ранее.
|
17 Apr 2012 13:13 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22663 Location: Silicon Valley
|
ну значит это недокументированная фича
P.S. чую я придётся хардверные сырцы акселя ковырять чтобы истину найти
|
17 Apr 2012 13:34 |
|
|
Sayman
Maniac
Joined: 05 Oct 2009 19:44 Posts: 223 Location: 212.164.105.5
|
набросал ещё один тест и вот вам первая ошибка в работе спринта. Hard, тебе тоже проверить надо на своём эмуле. суть такова - я взял тест ldee.exe и изменил в нём размер буфера и размер блока с 256 байт до 16 байт. предполагалось, что проверка сможет показать работу акселя совместно с портом "У". на реале если не делать отслеживание порта "У", получаются дыры каждые 16 байт начиная с нуля. размер дыр - 16 байт. этот же тест в эмуляторе спринт делает заполнение вертикали полностью. без быр. на реале чтобы достич этого же эффекта мне пришлось читать порт_у и вычитать 16. только тогда получил полную вертикаль! http://www.nedopc.org/nedopc/sprinter/upload/ldeen_1.zipкак обычно - ногами не пенать, просьба к Александру прикрепить архивчик к посту (но лучше эту кнопку в форум добавить). p.s. прошу обратить внимание на то, что я намеренно не использую отключение работы акселя между режимами/операциями. если на реале это работает, значит должно работать у всех. однако, если в процессе эксперемента (теста) всё таки без отключения не обойтись, я его приминяю.
|
17 Apr 2012 19:46 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22663 Location: Silicon Valley
|
ну в-принципе логично - ld a,(hl) сдвигает на 16 и потом ld (de),a сдвигает ещё на 16 - по идее спринт должен делать абсолютно тоже самое:
P.S. у меня в эмуле LDEEN1.EXE вообще ничего не делает...
|
17 Apr 2012 20:28 |
|
|
Sayman
Maniac
Joined: 05 Oct 2009 19:44 Posts: 223 Location: 212.164.105.5
|
я думаю что вот так будет чуть более заметно
скриншот из эмулятора
скриншот (камрип) с реала
кусок кода
| | | | Code: ld hl,data ld de,screen ld c,0 lp2: push bc ld b,16 lp1: di ld d,d ld a,16 ; ld b,b ld e,e ld a,(hl) ld (de),a ld b,b ei djnz lp1 pop bc inc de dec c jp nz,lp2 ld c,waitkey rst 10h jp _exit
| | | | |
|
17 Apr 2012 21:06 |
|
|
Hard
Novelist
Joined: 10 Feb 2011 07:04 Posts: 35 Location: 92.112.8.125
|
Shaos, имеется в виду операция типа LD E,E, (Graph Fill) а не LD A,A (Graph Copy).
У меня тоже полное заполнение, т.к. не предполагал, что эта команда реагирует на чтение, вот интересно что в этот момент происходит с буфером? Saymon, можешь подправить этот тест - после LD A,(HL) включить аксель LD A,A и выкинуть данные из буфера на экран LD (DE),A.
Че-та кусок кода с бинарником не совпадает - в бинарнике нет инкремента адреса DE, сейчас после патчинга у меня идет пунктирная линия по краю экрана...
|
17 Apr 2012 21:11 |
|
|
Sayman
Maniac
Joined: 05 Oct 2009 19:44 Posts: 223 Location: 212.164.105.5
|
|
17 Apr 2012 22:44 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22663 Location: Silicon Valley
|
Разобрался в чём дело - мой эмуль до сегодняшнего дня ничего не знал про вторую страницу видеопамяти
И в плеере фликов палитро хитро-хакерски по смещению в 992 и более пикселов пишется в каждую строчку - замапил это на свою палитру и всё заработало
Причём акселератор трогать не пришлось
|
20 May 2013 00:32 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22663 Location: Silicon Valley
|
А вот чего я точно упустил, так это возможность с помощью номера страницы управлять режимами копирования (сквозное и/или с прозрачностью):
Только я пока не встретил ни одной программы, которые бы этим пользовались...
|
20 May 2013 20:53 |
|
|
Who is online |
Users browsing this forum: No registered users and 2 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
|
|