как то странно стартует игрушка, стек зачемто из басик\переменных берёт, который в теле игры оказывается. потом в бейсик идет и возвращается на #6000
как то странно стартует игрушка, стек зачемто из басик\переменных берёт, который в теле игры оказывается. потом в бейсик идет и возвращается на #6000
Последний раз редактировалось DimkaM; 14.07.2012 в 14:18.
Там сделано выставление нового адреса RAMTop - для этого адрес системной процедуры обработки ошибки естественно берется с вершины стека, адрес которой и хранится в системных переменных, - иначе его не узнать. Если системные переменные выставлены не правильно запускающей программой, то будут проблемы, что и наблюдаем.Сообщение от DimkaM
Также определяется адрес загрузки кодового блока и, если он не рабочий, то блок переносится на рабочие адреса; таким образом кодовый блок можно грузить по любому разумному адресу, который и будет адресом запуска.
Корме того, проверяется контрольная сумма блока, чтобы убедиться, что загрузка прошла без ошибок.
Если загрузить FATALL с FAT-устройства средствами ERS, а потом из него мой Harrier Attack, то будут теже проблемы. Ошибка кроется где-то в ERS.
Никаких проблем нет, если загрузить кодовый блок моим бутом: http://grands.land.ru/creative.htm или из BASIC:Код:CLEAR адрес_загрузки-1 : RANDOMIZE USR 15619 : REM : LOAD...CODE адрес_загрузки RANDOMIZE USR адрес_загрузки
В настроечной части управление Q/A/O/P/Space (один из вариантов) или мышью/джойстиком. Там можно выбрать управление для игры (ради этого мной и затевалась эта адаптация, поскольку в оригинале управление очень не удобное). Если ничего не менялось, то в игре задействованы клавиши: S/X/O/P, A - бомбы, Space - ракеты.Сообщение от DimkaM
Кажется, ничего не перепутал.
Если что-то заинтересовало, могу подробнее написать.
Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.
Grand's - сайт об электронно-вычислительной технике (зеркало)
Нашел упоминание об этой проблеме в одной из тем на оффициальном форуме:Сообщение от Grand
http://forum.nedopc.com/viewtopic.ph...=1019&start=10
Пришлось написать специальный блок кодов с программой, которая печатает на экране значения системных переменных системы ZX Spectrum: CHANS, PROG, VARS, E_LINE, WORKSP, STKBOT, STKEND, ERR_SP и RAMTOP; для чистоты эксперимента не используется ни единый вызов из ПЗУ, а печать производится в текстовом режиме 80x25. Вот текст, кому интересно.Сообщение от DimkaM
Скрытый текст
Код:;Процедура печати значений системных переменных ;системы ZX Spectrum (только для ZX Evolution). ; ORG #6000 ; DI ; ;/ПОДГОТОВКА ТЕКСТОВОГО ЭКРАНА LD A,%00010011;Вкл. ROM1, RAM3 CALL CFG128 ; ;Очистка страницы атрибутов LD HL,#C1C0 LD DE,#C1C1 LD BC,#E7E7-#C1C0 LD (HL),7 LDIR ; LD A,%00011111;Вкл. ROM1, RAM7,SCR7 CALL CFG128 ; ;Очистка стр.текстового экр. LD HL,#C1C0 LD DE,#C1C1 LD BC,#E7E7-#C1C0 LD (HL)," " LDIR ;\КОНЕЦ ПОДГОТОВКИ ЭКРАНА ; LD A,%00000110;Вкл.текст.видеорежим CALL DOS ; ;/ЧТЕНИЕ И ПЕЧАТЬ ЗНАЧЕНИЙ СИСТЕМНЫХ ПЕРЕМЕННЫХ... LD HL,(23631);...CHANS LD A,H CALL PRHEXB LD A,L CALL PRHEXB LD A,13 CALL PR_TXT ; LD HL,(23635);...PROG LD A,H CALL PRHEXB LD A,L CALL PRHEXB LD A,13 CALL PR_TXT ; LD HL,(23627);...VARS LD A,H CALL PRHEXB LD A,L CALL PRHEXB LD A,13 CALL PR_TXT ; LD HL,(23641);...E_LINE LD A,H CALL PRHEXB LD A,L CALL PRHEXB LD A,13 CALL PR_TXT ; LD HL,(23649);...WORKSP LD A,H CALL PRHEXB LD A,L CALL PRHEXB LD A,13 CALL PR_TXT ; LD HL,(23651);...STKBOT LD A,H CALL PRHEXB LD A,L CALL PRHEXB LD A,13 CALL PR_TXT ; LD HL,(23653);...STKEND LD A,H CALL PRHEXB LD A,L CALL PRHEXB LD A,13 CALL PR_TXT ; LD HL,(23613);...ERR_SP LD A,H CALL PRHEXB LD A,L CALL PRHEXB LD A,13 CALL PR_TXT ; LD HL,(23730);...RAMTOP LD A,H CALL PRHEXB LD A,L CALL PRHEXB LD A,13 CALL PR_TXT ;\ ; ;Задержка до нажатия клавиши XOR A IN A,(#FE) CPL AND %00011111 JR NZ,$-6 XOR A IN A,(#FE) CPL AND %00011111 JR Z,$-6 ; ;Восстановл. видеорежима и конф. памяти. LD A,%00000011;Вкл. станд.ZX-видеореж. CALL DOS ; LD A,%00010000;Вкл. ROM1, RAM0 EI CFG128 LD BC,#7FFD LD (23388),A OUT (C),A RET ; ;--- DOS LD BC,10835 PUSH BC LD BC,#FF77 JP 15663 ;--- ;Печать байта в HEX PRHEXB PUSH HL PUSH AF RRCA RRCA RRCA RRCA AND #0F CALL PR_HEX POP AF AND #0F CALL PR_HEX POP HL RET PR_HEX CP #0A;Печать HEX-числа JR C,$+4 ADD A,7 ADD A,48 ; ;Драйвер печати в текстовом режиме (c) Grand, 2012 ;(без скролинга и атрибутов и только в ;страницу, включенную в диапазон адресов #C000...#FFFF). PR_TXT CP 13 a_txt LD HL,#C1C0;Операнд - тек.адр.в текст.экране JR Z,prt1 LD (HL),A LD A,H XOR %00100000 LD H,A BIT 5,H JR NZ,prt2 LD A,L;Приращ.X INC A LD L,A AND %00111111 CP 40 JR Z,prt1 prt2 LD (a_txt+1),HL RET prt1 RES 5,H LD A,L;Приращ.Y AND %11000000 ADD A,#40 LD L,A JR NC,prt2 LD A,H INC A LD H,A AND %00000111 JR NZ,prt2 LD HL,#C1C0 JR prt2 ;--- ;[свернуть]
Вот какие значения системных переменных при запуске этого кодового блока с SD-карты средствами FATALL0.25 и ERS0.5:Видим, что, во-первых, в момент запуска блока кодов в своей области присутствует какая-то BASIC-программа, а во-вторых (и это самое главное!) в ERS не верно установлена переменная ERR_SP!Код:Имя переменной FATALL ERS -------------- ------ ------ CHANS 5D26 5D26 PROG 5D3B 5D3B VARS 5D70 5DB4 E_LINE 5D71 5DB5 WORKSP 5D73 5DB7 STKBOT 5D73 5DB7 STKEND 5D73 5DB7 ERR_SP 5FFC 770E RAMTOP 5FFF 5FFF
Когда-то давно я обращал внимание автора на некорректный запуск кодов в FATALL'е. Savelij потом там кое-что исправил (но не всё), а в ERS, похоже, исправить забыл...
Последний раз редактировалось Grand; 01.08.2012 в 08:10. Причина: очепятки
Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.
Grand's - сайт об электронно-вычислительной технике (зеркало)
На досуге проанализировал код EVO-DOS на предмет соответствия его частей важным частям (которые используются в существующем ПО) TR-DOS V5.03, и вот что обнаружил.
Процедуры, обслуживающие Magic, 12090 (позиционирование), 11636 (запись сектора) и 11608 (запись секторов) - отсутствуют (вместо них #FF...#FF).
Другие процедуры, имеющие отношение к Magic, оставлены - 12133 (команда восстановления), 12119 (выдача команды и ожидание ее завершения), 12059 (чтение сектора, используется также и с адресов 12060 и 12079).
Не тронуты еще несколько важных процедур: 12225 (прерывание работы микроконтроллера, используется также и с адреса 12227), [i]697[/i} (останов дисковода, если в нем нет диска) и 16314 и 16341 (запись и чтение данных).
Все упомянутые выше процедуры используются, например, в адаптированных к TR-DOS играх, когда в условиях недостатка свободной памяти требуется организовать отгрузку и загрузку состояни игры и т.д.
Вообще, я уже сообщал (http://www.zx.pk.ru/showpost.php?p=337325&postcount=41), что нельзя трогать процедуры в диапазонах адресов 11635...11665, 12039...12136, 16314...16367; с осторожностью следует что-либо менять в 16050...16313. Также код в адресах 12227...12229, 7738...7740, 8179...8181, 12044...12046 и 10835...10837 используется для записи данных в регистры микроконтроллера.
Кроме этого, "исторически сложилось", что байт по адресу в TR-DOS #19 считается "кодом версии" - в 5.03 он равен #07, в 5.01 - #BD, а в EVO-DOS 0.3 он сейчас равен (видимо случайно) #E0.
Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.
Grand's - сайт об электронно-вычислительной технике (зеркало)
чтото у пентева моя стали сдвинуты атрибуты влево от графики...
вот такая хрень всегда.
Последний раз редактировалось AER; 03.08.2012 в 11:20.
_ _ __ ___ __ _____ _____________
Сорри если не увидел, при чтении каталога выдает FN. Что делать?
На хитрый код и Отладчик с мозгами.
Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.
Grand's - сайт об электронно-вычислительной технике (зеркало)
Неподскажете никто не подключал не тестил монитор Samsung SyncMaster 740N ?
нет возможности проверить а кота в мешке нехочется
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)