Мда? Сколько помню, везде (в отечественной литературе) упоминалось, что они не правились потому, что много программ использовали процедуры ПЗУ. И высказывалось мнение, что лучше было бы сделать аналог керналя Амиги с точками входа.
Мда? Сколько помню, везде (в отечественной литературе) упоминалось, что они не правились потому, что много программ использовали процедуры ПЗУ. И высказывалось мнение, что лучше было бы сделать аналог керналя Амиги с точками входа.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я так думаю, что не были сделаны точки входа по следующим причинам:
1)Комп задумывался как обучающий для школьников начальных классов, разработчики и сам синклер не предполагали, что будет писаться некий софт, которому потребуется вызовы из ПЗУ. Т.е. делали "игрушечную" машинку, а не серьезный аппарат;
2)Т.к. в ПЗУ находится бейсик, а не BIOS то делать точку входа с парсингом номеров функций не особо осмысленно. Да, ПЗУ состоит (условно) из 2х частей: интерпретатор бейсика и системные процедуры (это условно в литературе называют собственной ОС спектрума или SOS). Но эта SOS она представляет собой просто набор нескольких процедур, нет там деления на классы или уровни. Мешанина процедур.
А точки входа были сделаны в ПЗУ +3DOS там такое деление есть
Скрытый текст
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[свернуть]
Насколько я помню, причина одна: рекомендация использования кода ПЗУ для уменьшения объема кода программ. И этот подход при всех своих недостатках имел успех. Правки вносить было нельзя из-за использования кода ПЗУ в самых экзотических целях, например, для расшифровки кода приложения, затирания по ldir: ret почти всей памяти и так далее. Saboteur 2, к примеру без зазрений совести использует код буквы "C" по ардесу #000f для печати первой буквы имени ракеты.
Скрытый текст
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[свернуть]
Я с вас удивляюсь что вы тут обсуждаете. Все эти привязки к тырдос пзу не более чем вые..анки адаптаторов. Какое нафиг использование привязки к тырдос пзу. Оригинальные игры про тырдос ничего не знают и соответственно никак к нему не привязаны. За такие выкрутасы этим самым адаптантам нужно руки поотбивать по самую шею.
Скрытый текст
Profi 4.02 512k
Profi 5.04 1024k нижняя плата здесь
Scorpion 256k+ProfROM+SMUC 1.3+SMUC 2.0+ZXMC2
Pentagon v2.2+Z-controller+ZXMC2+NeoGS
АТМ 7.10 1024k
Pentagon 2.666LE
ZX Evolution 4Mb rev B[свернуть]
Извещение лички отключено, захожу редко.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
В связи с переживанием владельцев SMUC, а также для остальных заинтересованных лиц:
Проверка наличия SMUC:
Проверка наличия HDD:Код:LD A,(#8) CP #C3 JR NZ,NO_SMUC LD BC,#1FFD ;порт конфигурации scorpion'а LD A,#2 OUT (C),A ;включаем пзу монитора (rom 2) LD A,(#F1) ;код версии пзу OUT (C),0 ;отключаем пзу монитора CP #5E JR C,NO_SMUC ;в пзу нет поддержки hdd LD SP,TABLE LD HL,#3D2F LD BC,#FFBE JP (HL) LL_00 INC A ;#ff??? - если регистр состояния JR Z,NO_SMUC ;пуст, то smuc отсутствует ... TABLE DW #3FF3,LL_00
Проверка с какого устройства запущена программа (физический диск или виртуальный образ):Код:LD HL,WORKBUF LD C,#9 ;setwrk RST 8 DB #81 LD C,#22 ;$hddid RST 8 DB #81 JR C,NO_HDD ... WORKBUF DS #200
Используя эти исходники, можно в своих загрузчиках использовать как турболоадеры, так и обычные лоадеры, автоподстраиваясь под устройство.Код:LD A,(#8) CP #C3 JR NZ,FDD LD BC,#1FFD ;порт конфигурации scorpion'а LD A,#2 OUT (C),A ;включаем пзу монитора (rom 2) LD A,(#F1) ;код версии пзу OUT (C),0 ;отключаем пзу монитора CP #5E JR C,FDD ;в пзу нет поддержки hdd ;- LD SP,TABLE ;тест устройства (по исходникам MOA) LD HL,#3D2F LD BC,#7FBA JP (HL) LL_00 LD C,A LD A,(#5CF6) ;дисковод CP #2 ;"c","d" JR NC,HDD ;эмулятор DEC A JR Z,$+#8 BIT 7,C ;"a" JR Z,HDD ;эмулятор JR FDD BIT 6,C ;"b" JR Z,HDD ;эмулятор FDD ... TABLE DW #3FF3,LL_00
Когда на твой вопрос отвечает философ, перестаешь понимать вопрос
Есть еще TR-DOS 5.30, 6.XX.
Ну четыре таких точки все же сделали #0008, #0010, #0028, #0038. А, вообще, повторюсь, что можно использовать любой доступный набор байтов любым угодным способом, потому как ПЗУ неизменно.
А никто и не говорил, что авторы TR-DOS обещались ничего в ПЗУ не менять и позволяли использовать его код как угодно. Есть несколько стандартных точек входа - их и можно использовать без потери совместимости. Все остальное - для авторов, готовых на одну из двух возможностей: слушать про себя матерные отзывы или писать крупными буквами, что их вресия работает только на TR-DOS X.YZ и может убить диск при использовании другой версии TR-DOS (и слушать чуть менее матерные отзывы обладателей других прошивок, на которых идет софт от нормальных авторов). В моем понимании использование нестандратного кода TR-DOS оправдано только для разработки хитрых дем для "посмотрите как я умею" или для написнаия (перекрестившись) сервисных тулов, для работы которых авторы TR-DOS не сделали точек входа.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)