User Tag List

Показано с 1 по 5 из 5

Тема: esxdos - Загрузка с ленты в dot command

  1. #1

    Регистрация
    28.08.2023
    Адрес
    г. Брест, Беларусь
    Сообщений
    142
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    33 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию esxdos - Загрузка с ленты в dot command

    Будет небесполезна помощь знатоков esxdos. У кого-нибудь получилось из dot command вызывать $0562, процедуру загрузки с ленты из штатного ПЗУ? Это, вообще, теоретически возможно? И, если получилось, поделитесь примером кода.

    Детали: есть существующий код (C, z88dk) который хочется иметь в виде dot command для esxdos. Сделали вызов как положено через RST $18 + DW $0562, но всё падает при попытке чтения с ленты. Как отлаживать на железе я пока не в курсе, а вот при трассировке в FUSE получается так, что сразу после корректного перехода в 48k ПЗУ DivMMC подставляется обратно и, по сути, начинается выполнение случайного кода. Последствия предсказуемые, всё падает. Несколько смущает то, что в $3DFD вместо ожидаемого $C9 (RET) оказывается какой-то мусор и оттуда случайный код и начинается. Но причина это или следствие, моих знаний недостаточно пока для понимания.

    Попробовал «заходить» в ПЗУ 48 не по адресу $0562, который перехватывается esxdos’ом, а позже (скопировав код от $0562 до точки входа себе в проект), но там почему-то быстро происходит такой-же переход обратно в DivMMC ПЗУ. Поздно было, не отследил, откуда выбрасывает обратно в DivMMC, следующий заход уже на выходных.

    И, нет, TAP файл не подключён, все эксперименты для чистоты делаются на свежезагруженном компьютере/эмуляторе. Интересно, что если использовать RST $18, то падает сразу, а если наплевать на esxdos и дёргать $0562 напрямую (который, получается, где-то в ПЗУ DivMMC), то там почему-то попытка что-то загрузить есть, но после пилотного тона падает. Судя по коду в ПЗУ DivMMC, оно и без RST $18 должно выкидывать на $0564 в 48k ПЗУ, если там TAP файл не подключён. Или я ошибаюсь?

    P.S. кто по-англицки читает, тот мог видеть такой же вопрос на SC. Это вопрос примерно про один и тот же кусок кода, просто он спрашивает в англоязычном месте, а я тут.
    Последний раз редактировалось Chwe; 13.12.2023 в 18:20. Причина: зачеркнул ошибочную информацию

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

  3. #2

    Регистрация
    28.08.2023
    Адрес
    г. Брест, Беларусь
    Сообщений
    142
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    33 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    «Доверяй, но проверяй». «У семи нянек дитя без глаза». В смысле, поздний вечер воскресенья не самое лучшее время для могзового штурма

    В общем, если использовать 0x564 как точку входа (вторая инструкция, первая там IN A,($FE)), а эту точку esxdos не перехватывает, то всё работает как надо. Там остались вопросы по правильному оформлению кода, но, это уже в другой раз.

  4. #3

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,291
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Chwe Посмотреть сообщение
    Несколько смущает то, что в $3DFD вместо ожидаемого $C9 (RET) оказывается какой-то мусор и оттуда случайный код и начинается. Но причина это или следствие, моих знаний недостаточно пока для понимания.
    контроллер при вызове кода в диапазоне #3D00-#3DFF подключает свою страницу памяти и код выполняется на ней.
    базовый расклад получается
    #0000-#1FFF ; ROM
    #2000-#3FFF ; RAM ; кол-во страниц зависит от устройства (в базовом DivIDE их всего 4ре)

    Код:
    	LD   A,#03
    LOOP	OUT  (#E3),A
    	LD   HL,#2000
    	LD   DE,#2001
    	LD   BC,#1FFF
    	LD   (HL),L
    	LDIR
    	LD   (#3DF9),A
    	LD   HL,#3DFD
    	LD   (HL),#C9
    	LD   HL,#3D30
    	LD   (HL),#C9
    	DEC  A
    	CP   #FF
    	JR   NZ,LOOP
    .команда загружается в страницу 2 #2000-#3BFF (максимальный размер кода получается #1C00) и запускается с #2000
    Последний раз редактировалось goodboy; 13.12.2023 в 23:56.

  5. #4

    Регистрация
    28.08.2023
    Адрес
    г. Брест, Беларусь
    Сообщений
    142
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    33 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, спасибо. Жалко всего этого в одном месте нет. Ну, проблему таки решили, всё работает. Говорят, даже на Next. Скоро поделюсь результатами.

    Про $C9, я посмотрел ещё раз, там страниц-то хоть и минимум 4, но всё не больше одной. Вот и при вызове $0562 почему-то подключается не та страница, где $C9 явно записано, а какая-то другая (где esx.sys?). Разбираться не стал, будет время, спрошу на форуме esxdos (он живой, вообще?).

  6. #5

    Регистрация
    28.08.2023
    Адрес
    г. Брест, Беларусь
    Сообщений
    142
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    33 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Результаты усилий можно посмотреть тут: tape2esxdos repo (конкретно реализация esxdos_zx_tape_load_block).

    Кстати, мне тут показали замечательные публикации на форуме specnext, которые я, почему-то, сам через goondex найти не смог в своё время. Оставлю тут для поиска.

    Dot Commands - the final word (копия, если оригинал пропадёт)
    Generating Huge Dot Commands with Z88DK (копия, если оригинал пропадёт)
    Последний раз редактировалось Chwe; 19.01.2024 в 18:36.

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

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

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

Похожие темы

  1. Ответов: 17
    Последнее: 11.09.2017, 16:52
  2. Возможна ли загрузка не с ленты и не с fdd?
    от Damein Alpha в разделе Для начинающих
    Ответов: 9
    Последнее: 01.03.2010, 14:47
  3. Загрузка с ленты
    от Addison в разделе Разный софт
    Ответов: 15
    Последнее: 17.06.2008, 01:18
  4. Надежная загрузка с ленты
    от Conan в разделе Разный софт
    Ответов: 35
    Последнее: 15.09.2005, 18:00
  5. chunin[dot]infpres[dot]com закрылся и переедет на www.nedopc.com
    от CHRV в разделе Несортированное железо
    Ответов: 8
    Последнее: 22.05.2005, 21:00

Ваши права

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