Просмотр полной версии : Инициализация системы
Включи второй режим прерываний, проинициализируй таблицу векторов, тогда ты не будешь зависить от ПЗУ.
PS: ПЗУ ожидает что в IY хранится адрес служебной области бейсика
С английским дружишь?
Вот сслыка на полный дизассембер ПЗУ
ftp://ftp.worldofspectrum.org/pub/sinclair/books/CompleteSpectrumROMDisassemblyThe.pdf
Но тем не менее! кто-нибудь может подскажет как инициализируется система по сбросу ? что куда кладется ? скажем если я хочу запустить basic файл ? или вообще выйти в интерпритатор ? :rolleyes:
Вообще-то, всё зависит что ты хочешь делать дальше !!! Если тебе нужно полноценная работа с ВАСИКом, то не так всеё просто ... Но если тебе нужно выполнение простейших операций то это можно сделать ... Каогда-то я делал прогу, которая вызывала любую ВАСИКовскую операцию, но нельзя было выполнять ниодного GOTO или любого перехода, а так что угодно. Только выглядело это всё в байтах.
Если тебе нужно проинициализировать переменные ВАСИКа для загрузки с диска, то это ещё проще, пару поков, предварительно стерев нулями его переменные и вперёд ... Так что конкретно ? Предупреждаю сразу, для первого варианта куча CALL'ов !!!
ну скажем я хочу при чистой памяти запустить бейсик(лоадер) с TR-DOS ?
естественно что при чистой памяти всё уходит в глубокий сад :(
если это сложно то фиг с ним! меня интересует хотя бы привести в норму IM1 (IM0) что бы при HALT не уходило всё в сад! (напомню что рама чистая :rolleyes: )
достаточно IY поставить на место, чтобы не портилась память. ну и страницу пзу b-48 в 0-е окно
достаточно IY поставить на место, чтобы не портилась память. ну и страницу пзу b-48 в 0-е окно
Что-то тут не то ... Или я не понял, или ошибочка выходит ... На ВАСИКе в инте висит серьёзная процедура чтения клавиш ... Серьёзная, - я имею в виду, что кучу всяких установок трогает ... Там одним IY'ом не обойдёшься ... А если грузить с диска то и подавно нужно стирать и подготавливать переменные ... Пример у меня есть, но он лежит на дисках, которые я сейчас не вытащу ... Так что уже уторм ... Точно помню, что для чтения с диска нужно было 222 байта для сохранения данных на месте переменных ВАСИКа, на их место сделать пару поков и можно полноценно читать, хоть БРЕАКЕ дави, он будет вас игнорировать ... Этот лоадер я вставл как минимум в четыре игрушки самая сложная была "LAST NINJA 2" так же в "ELITE", так же в "TARGET RENEGADE" и в "R-TYPE" ... Завтра вытащу из R-TYPE'а, там крохотная процедурка, которая загружается поверх кассетного варианта ...
ну скажем я хочу при чистой памяти запустить бейсик(лоадер) с TR-DOS ?
ld hl,0:push hl:jp #3d2f
запуск бута с диска A: %)
а вообще мысли в том же направлении - смотри, что делает дырдос для инициализации Basica (просто перетащи в свою прогу)
Что-то тут не то ... Или я не понял, или ошибочка выходит ... На ВАСИКе в инте висит серьёзная процедура чтения клавиш ... Серьёзная, - я имею в виду, что кучу всяких установок трогает ... Там одним IY'ом не обойдёшься ...
так корректный опрос клавиатуры и не был нужен. речь шла о том, чтобы HALT ничего не портил (естественно, кроме basic-области)
так корректный опрос клавиатуры и не был нужен. речь шла о том, чтобы HALT ничего не портил (естественно, кроме basic-области)
Вообще-то, я и не говорил об опросе клавиатуры, я говорил о том, что в инте весит опрос клавиш, я имею в виду в инте ВАСИКа !!! Поэтому я сказал, что одним IY'ом не обойдёшься !!!
Вообще-то, я и не говорил об опросе клавиатуры, я говорил о том, что в инте весит опрос клавиш, я имею в виду в инте ВАСИКа !!! Поэтому я сказал, что одним IY'ом не обойдёшься !!!
ну тогда скажи, что ещё нужно программе обработки INT, чтобы она не мешала программе
Предлагаю банально-идиотский вариант. CLEAR 24999: RANDOMIZE USR 15616: RETURN, затем сбросить дамп #5B00-#61A7 в бинарник и при ассемблировании своей программы включать его на место. Тогда бейсик будет инициализирован, как на момент сброса дампа ж)
2Alex/AT: ня! рулёьз ;) Но не эффективно с точки зрения затрат памяти.
2Alex/AT: ня! рулёьз ;) Но не эффективно с точки зрения затрат памяти.
В резидентах RC/QC так и делается. Переменные нужно сохранять #5c00-#5d3a, то есть всего 315 байт. Плюс не забыть битик выставить по (IY+1) чтобы отключить 128-ой васик с его претензиями к #5b00-#5bff.
всего-то 315? что-то я совсем описючился/оамижился. надо будетт кай из шкафа вынять ;)
тогда конечно эффективнее.
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot