Проблему нехватки памяти можно было и иначе решить. Интересно, много ли игр с подгружаемыми уровнями обращаются внутрь процедур trdos для того что бы не использовались переменные?
---------- Post added at 16:01 ---------- Previous post was at 16:00 ----------
Как раз таки в команде LIST 2 ошибки, которые могли приводить и к зависаниям и к сбросу. На форуме есть тема.
Скрытый текст
Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
ZX Evolution Rev B.
Color 48 + Beta Disk Interface +FDD+YM2149F
Орель-08БК
Pentagon-48 (недоссобранный кем-то)
Pentagon-128 (полуубитый)
Кворум-128 (в ремонте)
Магик-05 (в ремонте)
Robotron 1715
Корвет ПК8020 и ПК8010
Amstrad CPC 464
Amstrad CPC 6128[свернуть]
практически все. в начале 90х когда сведений о размещении подпрограмм было мало использовали стандартную точку входа (15635), но при этом сами создавали область переменных (как правило всё зануляли подставив пару значений)
http://zx.pk.ru/showpost.php?p=118827&postcount=16
http://zx.pk.ru/showpost.php?p=118923&postcount=18
http://zx.pk.ru/showpost.php?p=247166&postcount=2
Последний раз редактировалось goodboy; 02.12.2012 в 14:19.
Да, но не сейчас, чуть позднее
Тем что если пропущены команды, то надо выносить кусочек в неиспользуемое место, ставить на него переход. Это не добавляет понятности кода, если таких заплат будет много - легко в них запутаться. Расширить функционал процедры патчем не всегда легко, ладно если новый вариант занимает столько же байт, сколько и старый или меньше, а если нет? Опять поиск свободного кода, перенос кода туда... Чем отличается моя версия от просто патчей? Сдвиг кода есть только в местах не связанных с диском. Вероятность, что программа туда обратится чрезвычайно мала. Конечно по определению система не 100% соотв. старому trdos. 100% совпадение может быть только при неизменном коде. 5.04s/5.04t не 100% совпадают по коду с 5.03. Но это не вызывает проблем. Да, потому что из основного кода изменено всего несколько байт + использован кусок памяти ранее не использованный. В моём варианте просто изменений больше вот и всё.
---------- Post added at 16:17 ---------- Previous post was at 16:16 ----------
Будем проверять
---------- Post added at 16:20 ---------- Previous post was at 16:17 ----------
ошибка 1: делаем в бейсике команду CLEAR 24999. Делаем команду LIST. Делаем ещё раз LIST.
ошибка 2: в команде LIST если заполнился экран и комп просит нажать любую клавишу - жмем пробел, выходим в бейсик - наблюдаем разные эффекты.
Последний раз редактировалось Vadim; 02.12.2012 в 14:35.
Скрытый текст
Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
ZX Evolution Rev B.
Color 48 + Beta Disk Interface +FDD+YM2149F
Орель-08БК
Pentagon-48 (недоссобранный кем-то)
Pentagon-128 (полуубитый)
Кворум-128 (в ремонте)
Магик-05 (в ремонте)
Robotron 1715
Корвет ПК8020 и ПК8010
Amstrad CPC 464
Amstrad CPC 6128[свернуть]
А разве должно быть иначе? Перемещаемся с макс. скоростью->не успеваем->увеличиваем значение (снижаем скорость)->повторяем тест.Удалена процедура определения макс.скорости перемещения МГ. Она всё равно была неработоспособна(*). В этой редакции системы используется скорость перемещения 6 мс;
----
* - В самой процедуре допущена ошибка: вместо перемещения на цилиндр 32 с минимальной скоростью, выполняется перемещение с макс.скоростью. Тест ничего не даёт. На медленном дисководе он просто не выполнится.
У меня при турбировании ВГ, данное значение явно уменьшалось, а на "гнилых" приводах и дискетах честно увеличивалось.
Вопрос: почему тогда значение не заносится в системные переменные (в эмуляторе, всегда равно 255)?
Последний раз редактировалось null_device; 02.12.2012 в 15:06.
Когда есть, но не знаешь где - это все равно, что нету.
В общем, проблему совместимости одним только программным путем не решить, нужны и аппаратные изменения.
Проблема совместимости решалась с помощью cache (уже используется во многих быстрых клонах, где медленная ПЗУ не успевает работать за процессором), т.е. стандартное ПЗУ DOS подменялось ОЗУ страницами. Новая программа просто переключалась на свою страницу с новым DOS и могла еще напрямую работать с портами в/в контроллера FDD, старая же использовала классическую версию TR-DOS. Так появилась возможность усовершенствовать ДОС без так называемой потери совместимости.
По этому поводу можно много спорить, что есть лучше или хуже, нужно или не нужно, а можно взять и сделать...
Когда есть, но не знаешь где - это все равно, что нету.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)