Мда? Сколько помню, везде (в отечественной литературе) упоминалось, что они не правились потому, что много программ использовали процедуры ПЗУ. И высказывалось мнение, что лучше было бы сделать аналог керналя Амиги с точками входа.
Вид для печати
Мда? Сколько помню, везде (в отечественной литературе) упоминалось, что они не правились потому, что много программ использовали процедуры ПЗУ. И высказывалось мнение, что лучше было бы сделать аналог керналя Амиги с точками входа.
Я так думаю, что не были сделаны точки входа по следующим причинам:
1)Комп задумывался как обучающий для школьников начальных классов, разработчики и сам синклер не предполагали, что будет писаться некий софт, которому потребуется вызовы из ПЗУ. Т.е. делали "игрушечную" машинку, а не серьезный аппарат;
2)Т.к. в ПЗУ находится бейсик, а не BIOS то делать точку входа с парсингом номеров функций не особо осмысленно. Да, ПЗУ состоит (условно) из 2х частей: интерпретатор бейсика и системные процедуры (это условно в литературе называют собственной ОС спектрума или SOS). Но эта SOS она представляет собой просто набор нескольких процедур, нет там деления на классы или уровни. Мешанина процедур.
А точки входа были сделаны в ПЗУ +3DOS там такое деление есть
Насколько я помню, причина одна: рекомендация использования кода ПЗУ для уменьшения объема кода программ. И этот подход при всех своих недостатках имел успех. Правки вносить было нельзя из-за использования кода ПЗУ в самых экзотических целях, например, для расшифровки кода приложения, затирания по ldir: ret почти всей памяти и так далее. Saboteur 2, к примеру без зазрений совести использует код буквы "C" по ардесу #000f для печати первой буквы имени ракеты.
Я с вас удивляюсь что вы тут обсуждаете. Все эти привязки к тырдос пзу не более чем вые..анки адаптаторов. Какое нафиг использование привязки к тырдос пзу. Оригинальные игры про тырдос ничего не знают и соответственно никак к нему не привязаны. За такие выкрутасы этим самым адаптантам нужно руки поотбивать по самую шею.
В связи с переживанием владельцев 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 не сделали точек входа.