Page 1 of 13

Ошибки в us0.37.6

PostPosted: 14 Sep 2011, 13:28
by robat_e
В новой версии ставлю в инишнике
Code: Select all
ZXKeyMap=acedit

и эмулятор падает с таким сообщением:
Code: Select all
exception C0000005 at eip=004C5A46
eax=00000000 ebx=00000000 ecx=00002E25 edx=002A0000
esi=00000001 edi=00000003 ebp=0012F660 esp=00128650

Re: Ошибки в us0.37.6

PostPosted: 14 Sep 2011, 17:28
by deathsoft
Да, это баг, щас испралю. Но ты задал неверное значение параметра:
ZXKeyMap=default; default/bk08/quorum

а тебе нужен был:
; you can define own layout, naming section in this INI file [ZX.KEYS.myname]
; create layouts for xas/storm/zxasm/alasm/zxword/sts/etc yourself, i'm bored
KeybLayout= default

Re: Ошибки в us0.37.6

PostPosted: 24 Sep 2011, 18:34
by moroz1999
Переползаю со своим багом сюда.
http://vtrdos.ru/sbor/CHORDOUT.ZIP - для успокоения совести перепроверил в новой версии, не пашет.

Alexandr Makeev по поводу этой проблемы пишет так:
в первом ZXMAK v0.285 работает нормально, но там движок ВГ93 навороченый. В ZXMAK.NET и ZXMAK2 движок ВГ93 на 70% от unreal (а машина состояний на все 90%), поэтому тоже не работает

проблема заключается в некорректной машине состояний для комманд позиционирования, а также наличию лишних задержек, которые явно не нужны. При отключении fast (wd93_delay), все эти задержки убираются и поэтому все начианает работать.

Суть в том что время выполнения команды SEEK занимает очень много времени. В то время как CHORDOUT уже через 656 тактов начинает выполнять следующую команду, т.к. дорожки назначения и в регистре track совпадают.

Но есть также проблема с машиной состояний. Даже если вставить проверку и уменьшить задержку до минимума, при включенном wd93_delay нужно несколько раз обратиться к ВГ93 чтобы позиционирование завершилось. А CHORDOUT не делает ни одного обращения между отправкой команды SEEK и следующими действиями.

Эту проблему я устранил в ZXMAK205, но машину состояния конечно нужно переделывать. В unreal она даже не соответствует документации на WD179x.


Для меня это - китайская грамота, но надеюсь, что эта инфа как-нибудь поможет - хочется максимальной совместимости с реалом.

Re: Ошибки в us0.37.6

PostPosted: 24 Sep 2011, 18:50
by deathsoft
moroz1999 wrote:для успокоения совести перепроверил в новой версии, не пашет.

Да я в курсе, в соседней ветки специально для этого проводился тест реалов и эмулей. Проблему выяснили, в следующей версии все будет пофикшено. Там дело не в seek а совсем в другом, но баг с seek тоже исправлен уже. Про zxmak я тоже читал, делать подгонку лишь бы заработал chordout не вижу смысла (а в zxmak сделано именно так), в следующей версии унриала будет пофикшено по нормальному (чтобы поведение соответствовало поведению реально ВГшки).

Re: Ошибки в us0.37.6

PostPosted: 25 Sep 2011, 04:38
by нолька
deathsoft, он все верно написал. Глюк как раз в том, что делается seek на тот же самый трек, где находится голова, но поскольку после нее идет команда Шаг, то анрил считает что вгшка занята выполнением предыдущей команды и Шаг не выполняется

Re: Ошибки в us0.37.6

PostPosted: 25 Sep 2011, 15:40
by moroz1999
Шикарно, спасибо!

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2011, 18:13
by DimkaM
Конфиг АТМ3. Включаю текстмоод, включаю IM1(в нулевой банке сидит ОЗУ стр.0х3f).
делаю ei halt и получаю висяк "CPU HALTED", захожу в монитор dihalta не наблюдаю.
Брейкпоинт на следующей команде после халта не срабатывает, прога висит на халте при включенных прерываниях.
Унрил 0.37.6.

Re: Ошибки в us0.37.6

PostPosted: 28 Sep 2011, 19:41
by deathsoft
Выложи сюда trd с программой, ну и посмотри флажки i: там поди 00

Re: Ошибки в us0.37.6

PostPosted: 29 Sep 2011, 04:49
by DimkaM
deathsoft wrote:Выложи сюда trd с программой, ну и посмотри флажки i: там поди 00

Блин trd чёта не умею делать, вернее Бейсик загрузчики не умею :confused: . Хобету могу только, прикладываю его и бинарь(загружается и пускается с #8000).
Почини плиз, очень надо. Или скажи где мой косяк.

Оставляю код во второй банке,оставляю ПЗУ в нулевой банке, всё равно цпу-халтед. Может я неправильно текстмод подключаю?
И скриншот в момент "CPU HALTED", тоже самое без текстмода работает ровно.
Image
Code: Select all
   DEVICE ZXSPECTRUM128
   ORG #0
START
INI
   DI
   JP INI_CONT+#8000

   org #38
RST38 ;тут только счётчик прерываний
   PUSH HL
   ld hl,COUNTER
   INC (HL)
   JR NZ,.L1
   INC HL
   INC (HL)
   JR NZ,.L1
   INC HL
   INC (HL)
   JR NZ,.L1
   INC HL
   INC (HL)
.L1   POP HL
   ei
   ret

INI_CONT
   ld a,1 ;открываю порты
   out   (#BF),a
   LD BC,#3FF7 ;подключаю ОЗУ в нулевую банку
   LD A,#40
   OUT (C),A
   LD hl,#8000 ;копирую себя в нулевую банку
   ld de,#0000
   ld bc,#4000
   LDIR
   LD SP,#4000
   ld bc,#ff77 ;включаю текстмод
   ld a,6
   out (c),a
   xor a ;закрываю порты
   out   (#BF),a   
   jp .l1
.l1   ei
   halt ;а тут херня какая то "CPU HALTED", прерывания не срабатывают.
   di
   ld hl,COUNTER.HI+1 ;а это просто чтобы что то было
   ld a,(hl)
   or a
   jr .l1

COUNTER
.LO   WORD 0
.HI   WORD 0

ENDPROG

Re: Ошибки в us0.37.6

PostPosted: 29 Sep 2011, 06:15
by нолька
в прерываниях регистр AF сохранить забыл и зачем по адресу 38 RST 38?