Вроде бы проясняется... термин BASIC 128 не очень удачный. Уместнее говорить, что пока выбрано ROM-0 запустить TR-DOS нельзя и это реализовано аппаратной дешифрацией с учетом 5-го разряда порта 0x7FFD. Когда именно выбрано ROM-0, а когда - ROM-1 - дело "очень тонкое"... и к интерператору языка программирования БЕЙСИК отношение напрямую не имеющее, хоть 128К, хоть 48К версии. В ROM-0 по адресам входа в TR-DOS находится, начиная с 0x3CFE, процедура разбора строки, введенной в редактор-128 на соответствие синтаксису. Т.е. если гипотетичски некоторый код попытается, не переключив страницу ПЗУ, обратиться к 15616 и далее-вызов TR-DOS действительно не произойдет, т.к. 5-й разряд порта не даст.
Другое дело, что обработка команд при работе интерпретатора БЕЙСИК сопряжена с переключениями страниц ПЗУ между ROM-0(там, откуда стартовали, где меню, 128К редактор и т.д.) и ROM-1(где немного изменённый традиционный 48К, который в основном команды и выполняет)
Таким образом в момент выполнения любой команды даже из редактора 128 фактически, на момент работы, выбирается ROM-1, а 5-й разряд порта (регистра) дает затенять ROM-1 на TR-DOS.
Для чего в самом коде TR-DOS обработка посимвольных команд и как они могут туда попасть-не очень пока понятно.
Посмотрел прошивку ROM-0 Pentagon, там где TR-DOS в главном меню. Реализовано так: по адресу 0x3C16 (15382) в ROM-0 (т.е.той же странице, где меню и откуда стартуем) хранится строка в виде токенов RANDOMIZE USR VAL "15616". Эта строка после выбора пункта меню "TR-DOS" передается на исполнение интерпретатору, вызывая переключение страниц ПЗУ и разрешение затенения ROM-1. Вот это и имелось в виду, когда говорилось, что из BASIC 128 невозможно вызвать TR-DOS...




Ответить с цитированием
