PDA

Просмотр полной версии : Инициализация системы



breeze
06.03.2005, 15:43
.

Lion17
06.03.2005, 16:00
Включи второй режим прерываний, проинициализируй таблицу векторов, тогда ты не будешь зависить от ПЗУ.

PS: ПЗУ ожидает что в IY хранится адрес служебной области бейсика

Lion17
07.03.2005, 16:53
С английским дружишь?
Вот сслыка на полный дизассембер ПЗУ
ftp://ftp.worldofspectrum.org/pub/sinclair/books/CompleteSpectrumROMDisassemblyThe.pdf

Robus
08.03.2005, 02:00
Но тем не менее! кто-нибудь может подскажет как инициализируется система по сбросу ? что куда кладется ? скажем если я хочу запустить basic файл ? или вообще выйти в интерпритатор ? :rolleyes:

Вообще-то, всё зависит что ты хочешь делать дальше !!! Если тебе нужно полноценная работа с ВАСИКом, то не так всеё просто ... Но если тебе нужно выполнение простейших операций то это можно сделать ... Каогда-то я делал прогу, которая вызывала любую ВАСИКовскую операцию, но нельзя было выполнять ниодного GOTO или любого перехода, а так что угодно. Только выглядело это всё в байтах.
Если тебе нужно проинициализировать переменные ВАСИКа для загрузки с диска, то это ещё проще, пару поков, предварительно стерев нулями его переменные и вперёд ... Так что конкретно ? Предупреждаю сразу, для первого варианта куча CALL'ов !!!

SMT
08.03.2005, 02:53
ну скажем я хочу при чистой памяти запустить бейсик(лоадер) с TR-DOS ?
естественно что при чистой памяти всё уходит в глубокий сад :(
если это сложно то фиг с ним! меня интересует хотя бы привести в норму IM1 (IM0) что бы при HALT не уходило всё в сад! (напомню что рама чистая :rolleyes: )
достаточно IY поставить на место, чтобы не портилась память. ну и страницу пзу b-48 в 0-е окно

Robus
08.03.2005, 03:52
достаточно IY поставить на место, чтобы не портилась память. ну и страницу пзу b-48 в 0-е окно

Что-то тут не то ... Или я не понял, или ошибочка выходит ... На ВАСИКе в инте висит серьёзная процедура чтения клавиш ... Серьёзная, - я имею в виду, что кучу всяких установок трогает ... Там одним IY'ом не обойдёшься ... А если грузить с диска то и подавно нужно стирать и подготавливать переменные ... Пример у меня есть, но он лежит на дисках, которые я сейчас не вытащу ... Так что уже уторм ... Точно помню, что для чтения с диска нужно было 222 байта для сохранения данных на месте переменных ВАСИКа, на их место сделать пару поков и можно полноценно читать, хоть БРЕАКЕ дави, он будет вас игнорировать ... Этот лоадер я вставл как минимум в четыре игрушки самая сложная была "LAST NINJA 2" так же в "ELITE", так же в "TARGET RENEGADE" и в "R-TYPE" ... Завтра вытащу из R-TYPE'а, там крохотная процедурка, которая загружается поверх кассетного варианта ...

jtn
08.03.2005, 08:29
ну скажем я хочу при чистой памяти запустить бейсик(лоадер) с TR-DOS ?

ld hl,0:push hl:jp #3d2f
запуск бута с диска A: %)
а вообще мысли в том же направлении - смотри, что делает дырдос для инициализации Basica (просто перетащи в свою прогу)

SMT
08.03.2005, 08:36
Что-то тут не то ... Или я не понял, или ошибочка выходит ... На ВАСИКе в инте висит серьёзная процедура чтения клавиш ... Серьёзная, - я имею в виду, что кучу всяких установок трогает ... Там одним IY'ом не обойдёшься ...
так корректный опрос клавиатуры и не был нужен. речь шла о том, чтобы HALT ничего не портил (естественно, кроме basic-области)

Robus
08.03.2005, 18:26
так корректный опрос клавиатуры и не был нужен. речь шла о том, чтобы HALT ничего не портил (естественно, кроме basic-области)

Вообще-то, я и не говорил об опросе клавиатуры, я говорил о том, что в инте весит опрос клавиш, я имею в виду в инте ВАСИКа !!! Поэтому я сказал, что одним IY'ом не обойдёшься !!!

SMT
09.03.2005, 08:13
Вообще-то, я и не говорил об опросе клавиатуры, я говорил о том, что в инте весит опрос клавиш, я имею в виду в инте ВАСИКа !!! Поэтому я сказал, что одним IY'ом не обойдёшься !!!
ну тогда скажи, что ещё нужно программе обработки INT, чтобы она не мешала программе

Alex/AT
15.03.2005, 10:20
Предлагаю банально-идиотский вариант. CLEAR 24999: RANDOMIZE USR 15616: RETURN, затем сбросить дамп #5B00-#61A7 в бинарник и при ассемблировании своей программы включать его на место. Тогда бейсик будет инициализирован, как на момент сброса дампа ж)

Sinus
23.03.2005, 10:18
2Alex/AT: ня! рулёьз ;) Но не эффективно с точки зрения затрат памяти.

Spectre
23.03.2005, 12:20
2Alex/AT: ня! рулёьз ;) Но не эффективно с точки зрения затрат памяти.

В резидентах RC/QC так и делается. Переменные нужно сохранять #5c00-#5d3a, то есть всего 315 байт. Плюс не забыть битик выставить по (IY+1) чтобы отключить 128-ой васик с его претензиями к #5b00-#5bff.

Sinus
24.03.2005, 10:03
всего-то 315? что-то я совсем описючился/оамижился. надо будетт кай из шкафа вынять ;)
тогда конечно эффективнее.