Вход

Просмотр полной версии : Запуск редактора Basic128 (Calculator) из программы



Дмитрий
27.01.2015, 08:55
Приветствую!
Работаю над новой версией KRS (http://zx-pk.ru/showpost.php?p=482836&postcount=1075) (порт EvoResetService под клоны S/KAY) и появилось желание изменить пункт "128K menu" на "128К Basic", т.е. переход непосредственно в редактор бейсика. Но, как говорится, с наскока не получилось. Нашел точки входа: #286c - редактор 128 бейсика, #2885 - калькулятор. Устанавливаю правильную банку ПЗУ, восстанавливаю область #5b00-#5d82 (системные переменные вместе с драйвером страниц по адресу #5b00), последующую вычищал в 0 (не всю, до #6200, но должно почистить буфер бейсик-программы). Восстанавливал регистры, вектор прерывания. Но при переходе на точку входа получаем зависание. Может кто-то уже в данном направлении копал? Подскажите плиз, как запустить редактор бейсика без холодного запуска (RST 0 с появлением меню).

James DiGreze
28.01.2015, 12:12
Стек устанавливаешь по системным переменным?

Дмитрий
28.01.2015, 12:18
James DiGreze, я сделал "слепок" всех системных переменных, точнее говоря все, что хранится в памяти по адресам #5b00-#5d81, указатель стека при входе в редактор 128го бейсика по адресу #286c установлен на #5bf3, я его восстанавливаю на этот адрес при попытке запуска.

Djoni
29.01.2015, 15:44
Может исходники Basic128 помогут

http://www.matthew-wilson.net/spectrum/rom/

https://code.google.com/p/pentevo/source/browse/rom/page2/source/spec128_0.a80

Alex Rider
29.01.2015, 15:57
James DiGreze, я сделал "слепок" всех системных переменных, точнее говоря все, что хранится в памяти по адресам #5b00-#5d81, указатель стека при входе в редактор 128го бейсика по адресу #286c установлен на #5bf3, я его восстанавливаю на этот адрес при попытке запуска.
Не просматривал дизассемблер, но есть одно подозрение интересное. Мне кажется в ОЗУ должен быть еще один стек в районе (ERR_SP), где-то под UDG примерно.

---------- Post added at 15:57 ---------- Previous post was at 15:55 ----------

А кинь сюда слепок переменных, который ты кидаешь перед переходом. Погляжу что там интересного.

Дмитрий
31.01.2015, 21:00
Вот копия переменных... Начало #5b00.
В спойлере данные по регистрам
http://s017.radikal.ru/i404/1501/a9/3bc7f591e2ec.png

goodboy
01.02.2015, 10:39
при переходе на точку входа получаем зависание.
у 128ого бейсика ещё есть переменные на 7ой странице.
поставь BP на чтение из адресов #c000-#ffff и всё поймёшь.

к примеру вот



LD A,$38 ; Set colours to black ink on white paper.
LD ($EC11),A ; Temporary ATTR_T used by the 128 BASIC Editor.
LD ($EC0F),A ; Temporary ATTR_P used by the 128 BASIC Editor.

....................................

LD HL,($EC0F) ; Alternate Editor ATTR_P, MASK_P. Fetch alternate Editor colour items.
LD DE,($EC11) ; Alternate Editor ATTR_T, MASK_T.
LD ($5C8D),HL ; ATTR_P, MASK_P. Store alternate Editor colour items as main colour items.
LD ($5C8F),DE ; ATTR_T, MASK_T.

shurik-ua
03.02.2015, 00:26
ты хочешь сделать своё меню как здесь ?
http://velesoft.speccy.cz/other/trdos-correct-return.gif

Дмитрий
03.02.2015, 08:10
shurik-ua, не, я хочу добавить выход из НеGluk-а в редактор 128 бейсика (чтоб без ресета и меню128). Т.е. сейчас пункт "U. 128k Menu" НеGluk-а выполняет просто RST 0 при включенной странице ПЗУ 128 Бейсика и попадаем в очередное меню, но хочется исключить лишние телодвижения и попасть непосредственно в редактор.

P.S.: Хотя реализация дополнения меню 128 своими пунктами меня тож интересует.

Дмитрий
03.02.2015, 08:12
к примеру вот
Я заподозрил это, когда в калькулятор попал, но он стал печатать черным по черному :) Посмотрю что там в этой странице еще хранится, спасибо за наводку.