Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 26

Тема: Почему не стартует TR-DOS если только она и зашита в ПЗУ?

  1. #1
    Member
    Регистрация
    08.12.2009
    Адрес
    Харьков
    Сообщений
    57
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Question Почему не стартует TR-DOS если только она и зашита в ПЗУ?

    В рамках "научного эксперимента" установил в ZX "Львов-48к" ПЗУ с прошитой TR-DOS 5.03 (вместо BASIC 48). Больше никакого железа не подключал (в этом суть эксперимента). Надеялся получить заставку TR-DOS, а по факту получил цветную мозаику после теста памяти:


    Вопрос: ПОЧЕМУ? Ведь с точки зрения работы TR-DOS не знает, что кроме нее ничего больше нет в смысле ПЗУ.
    Или это такая реакция на недоступный ВГ93?

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    тр-дос вовсю использует части 48-го бейсика, так что один он работать не будет. соответственно, без механизма переключения этих пзу тоже.
    Все любят гипножабу

  4. Эти 2 пользователя(ей) поблагодарили SAM style за это полезное сообщение:

    idc (11.03.2021), IgorR76 (11.03.2021)

  5. #3
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    1,178
    Поблагодарили
    774 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от idc Посмотреть сообщение
    с точки зрения работы TR-DOS не знает, что кроме нее ничего больше нет в смысле ПЗУ.
    ошибочное мнение. TRdos вызывает подпрограммы из основного ПЗУ

  6. Эти 2 пользователя(ей) поблагодарили goodboy за это полезное сообщение:

    idc (11.03.2021), IgorR76 (11.03.2021)

  7. #4
    Member
    Регистрация
    08.12.2009
    Адрес
    Харьков
    Сообщений
    57
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А как она это делает? Т.е. как потом возвращается "в свое" ПЗУ? В стек адрес возврата кладет из "точки входа"? Надо будет посмотреть дизассемблер, спасибо за идею...

  8. #5
    Guru
    Регистрация
    16.12.2009
    Адрес
    Харьков
    Сообщений
    4,731
    Спасибо Благодарностей отдано 
    355
    Спасибо Благодарностей получено 
    369
    Поблагодарили
    238 сообщений
    Mentioned
    11 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от idc Посмотреть сообщение
    А как она это делает?
    как только вы делаете запрос в озу, то защелка трдос (почитайте про нее) тут же переключает пзу на бейсик 48. также проанализируйте как происходит переключение на пзу трдос, схему контроллера дисковода на дискретных элементах. ваши суждения в корне ошибочны.
    Profi must live!

    Моё железо...

    1. Profi 5.06/1Mb(DRAM)+Profi5.06(UP)/HDD/3`5FDD/CF512Mb/SD-CARD
    3. Profi 6.2 Rev. B/1Mb/3`5FDD/HDD3.2Gb
    4. Profi 5.05(down)/1Mb+Profi 5.03(UP)/Pentagon_Fix
    Все укомплектованы:
    Profi_ZX-BUS/ZXMC2/NemoIDE/SounDrive
    [свернуть]

    Ссылка на Telegram-канал поддержки пользователей Profi.

  9. #6
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    1,178
    Поблагодарили
    774 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от solegstar Посмотреть сообщение
    как только вы делаете запрос в озу
    скорее выполнение кода за рамками диапазона

  10. #7
    Master
    Регистрация
    31.03.2008
    Адрес
    Москва
    Сообщений
    725
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    75
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вход в TR-DOS из SOS начинается с прыжка на 15616. А Z80 начинает исполнение с 0 адреса (после ресета).
    Если через меню, то заход в TRDOS все равно должен быть через окно адресов #3Dxx
    ZXM-Phoenix rev.01 2048K, VG93 hw emulator

  11. #8
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    1,178
    Поблагодарили
    774 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    на многих контроллерах (для 48ой модели) можно было выставить тумблером запуск trdos сразу после подачи питания.

  12. #9
    Member
    Регистрация
    08.12.2009
    Адрес
    Харьков
    Сообщений
    57
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от solegstar Посмотреть сообщение
    как только вы делаете запрос в озу, то защелка трдос (почитайте про нее) тут же переключает пзу на бейсик 48.
    Согласен, понимаю. Это если запрос в ОЗУ. Но если TR-DOS вызывает подпрограмму из ПЗУ 48К, то "в одну сторону" оно переключить защелку может сама, но вот обратно, когда подпрограмма ПЗУ 48К отработает и сделает RET - управление перейдет туда, куда укажет адрес, взятый из вершины стека. И если там не адрес из диапазона #3Dxx, то "некому будет переключать обратно защелку". Поэтому в TR-DOS мы уже не вернемся. Или я неправ?

    Цитата Сообщение от solegstar Посмотреть сообщение
    также проанализируйте как происходит переключение на пзу трдос, схему контроллера дисковода на дискретных элементах. ваши суждения в корне ошибочны.
    Я вполне осознаю их ошибочность Меня "академическая голая теория" интересует... сферическая TR-DOS, короче...

    - - - Добавлено - - -

    Цитата Сообщение от goodboy Посмотреть сообщение
    скорее выполнение кода за рамками диапазона
    Это ответ на вопрос "как выйти из TR-DOS", отменить теневое ПЗУ. А меня волнует "как оно потом возвращается, когда отработала процедура из ПЗУ 48К?"

    - - - Добавлено - - -

    Цитата Сообщение от IanPo Посмотреть сообщение
    Вход в TR-DOS из SOS начинается с прыжка на 15616. А Z80 начинает исполнение с 0 адреса (после ресета).
    Если через меню, то заход в TRDOS все равно должен быть через окно адресов #3Dxx
    А вот с этим не очень согласен, глядя на дизассемблер TR-DOS. С адреса 0 там как раз полноценный полный запуск, с тестом RAM (который у меня проходит - см.видео)... т.е. высталение ША >=15616 <16384 - это способ переключить ПЗУ, но с адреса 15616, по цепочке JP, после 15665 имеем безусловный переход практически "в начало" - JP 569 - вход в TR-DOS

    - - - Добавлено - - -

    Цитата Сообщение от goodboy Посмотреть сообщение
    на многих контроллерах (для 48ой модели) можно было выставить тумблером запуск trdos сразу после подачи питания.
    Именно так. И старт начинается с 0.

    - - - Добавлено - - -

    А вот, собтвенно, и ответ на вопрос "как они это делают" (из книги Федина Павла Юрьевича "ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ TR-DOS 5.04T (5.03) ДЛЯ ПРОФЕССИОНАЛОВ, А ТАКЖЕ ДЛЯ ТЕХ, КТО ХОЧЕТ ИМИ СТАТЬ.")

    Код:
    Адрес 32. Переход к подпрограмме вызова подпрограмм из ПЗУ бей-
    сика. Адрес вызываемой подпрограммы поместите в двух байтах пос-
    ле команды RST 32. Например:
    RST 32
    DEFW #0D6B
    
    32    JP 12146
    ────────────────────────────────────────────────────────────────
    
    
    Адрес 12146. Вызов подпрограмм из пзу бейсика. Адрес задайте в
    двух байтах после CALL 12146:
    CALL 12146
    DEFW #0D6B
    
    12146 LD (23810),HL;сохранение HL и DE
          LD (23812),DE
          POP HL       ;снятие со стека адреса двух байтов с адресом подпрограммы
          LD E,(HL)    ;берем адрес подпрограммы
          INC HL
          LD D,(HL)
          INC HL
          PUSH HL      ;помещение на стек адреса возврата в программу, вызвавшую 12146
          LD HL,15663  ;помещение на стек адреса переключателя пзу на TR-DOS
          PUSH HL
          PUSH DE      ;помещение на стек адреса вызываемой подпрограммы
          LD HL,23746  ;помещение на стек адреса команды RET в озу
          PUSH HL
          LD HL,(23810);восстановление HL и DE
          LD DE,(23812)
          RET          ;переход к команде RET в озу
    Теперь все стало на свои места: когда TR-DOS вызывает ПЗУ 48К, перед вызовом она "подстилает себе соломы" в виде адреса возврата в стеке (15663), куда вернется, после того, как отработает процедура из ПЗУ 48К. А возврат к 15663 как раз и обеспечит обратное переключение защелки.

    А теперь вопрос №2:
    В уже упомянутой книге читаем:
    Способы обращения к ПЗУ TR-DOS
    ПЗУ TR-DOS является теневым, поэтому к нему нельзя обратиться
    непосредственно при помощи CALL. Но для того, чтобы оно было
    доступно для использования, существуют адреса, при переходе на
    которые включается ПЗУ TR-DOS. В ПЗУ бейсика-48 в этих адресах
    находится знакогенератор, следовательно обычно управление туда
    никогда не передается. Внимание!!! В ПЗУ бейсика-128 в этих ад-
    ресах находится программа, поэтому при включенном ПЗУ бейси-
    ка-128 ПЗУ TR-DOS блокируется полностью.
    Ниже вы видите список
    точек входа, переключающих ПЗУ.
    При том, что в самой TR-DOS, если верить Ларченко и Родионову, есть даже отдельный блок "согласования синтаксиса" - мнемоник ключевых слов из 48К и посимвольных команд 128К.

    Вопрос - так как же все-таки из Бейсика-128 попасть в TR-DOS? Где-то на форуме уже видел подобный вопрос, но там, кажется, так ни до чего не договорились...
    Последний раз редактировалось idc; 12.03.2021 в 18:50.

  13. #10
    Guru
    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    13,773
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    1,178
    Поблагодарили
    774 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    само понятие `бейсик128` довольно расплывчатое.
    это скорее надстройка/редактор который передаёт полученный результат в 48ой бейсик.
    исполнение строки "usr 15616" набранной в 128ом бейсике будет выполнено из 48ого
    Последний раз редактировалось goodboy; 12.03.2021 в 18:46.

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 5
    Последнее: 15.02.2020, 02:28
  2. Ответов: 5
    Последнее: 27.06.2018, 16:50
  3. ZX-Spectrum (Львовский вариант) - не стартует при вставленных ПЗУ
    от andreysur в разделе Несортированное железо
    Ответов: 3
    Последнее: 07.07.2016, 22:23
  4. Зашита от записи в ZXMAK
    от zxmike в разделе Эмуляторы
    Ответов: 1
    Последнее: 16.08.2013, 18:17

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •