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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Можно ли отследить, с помощью какого оператора был запущен файл boot в TR-DOS?

  1. #1
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Можно ли отследить, с помощью какого оператора был запущен файл boot в TR-DOS?

    Как известно в TR-DOS boot можно стартануть используя 3 оператора : RUN, POKE, LOAD. Возможно ли сделать такой файл boot, который бы проверял каким именно оператором он запущен и, в зависимости от этого выполнялась бы дальнейшая загрука либо file1 либо file2?
    Куплю корпус и материнку от Spectrum +2/+3

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

  3. #2
    Veteran
    Регистрация
    15.07.2009
    Адрес
    Череповец
    Сообщений
    1,747
    Спасибо Благодарностей отдано 
    149
    Спасибо Благодарностей получено 
    53
    Поблагодарили
    39 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    POKE? Может PEEK?
    А это что даст?

  4. #3
    Banned
    Регистрация
    12.02.2014
    Адрес
    г. Арзамас
    Сообщений
    6,123
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    кажется, в Insult MD загрузчик хитро сделан, достаточно набрать
    run"Insult".I love Codebusters, где концовка строки ловится.

  5. #4
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Gutten, POKE, только POKE )) А вообще хочу сделать, чтобы например по RUN грузился один файл, а по LOAD (POKE) второй. Первым фалом может быть ZYX-boot, вторым какой-нибудь продвинутый командер.

    Можно сначала грузить один, а потом из него другой. Но хотелось бы минимум телодвижений )) Лень - двигатель прогресса ))
    Куплю корпус и материнку от Spectrum +2/+3

  6. #5
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а как же merge?

    а вообще, ну куда проще? делаешь бут пустой, запускаешь в эмуле, выходишь в отладчик и сохраняешь всю память (или снапшотом). запускаешь другим способом и еще сохраняешь. потом сравниваешь и сразу всё видишь.

  7. #6
    Guru Аватар для SoftLight
    Регистрация
    28.02.2005
    Адрес
    Москва
    Сообщений
    2,082
    Спасибо Благодарностей отдано 
    736
    Спасибо Благодарностей получено 
    451
    Поблагодарили
    250 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а не проще сделать так: берем boot #1 и boot #2, записываем их с именами boot1.B boot2.B. Далее на бейсике пишем программу с опросом клавы - по нажатию 1 запускаем бут1, по нажатию 2 второй и т.п. Записываем прогу с именем boot.B. Даже программирование знать не надо.

  8. #7
    Guru Аватар для creator
    Регистрация
    02.07.2006
    Адрес
    Новосибирск
    Сообщений
    2,197
    Спасибо Благодарностей отдано 
    427
    Спасибо Благодарностей получено 
    219
    Поблагодарили
    130 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По адресу 23840 находится трёхбайтовая системная переменная TR-DOS, в которой хрянятся первые три символа введенной строки. Набираем простую программу:

    10 PRINT PEEK 23840
    20 PRINT PEEK 23841
    30 PRINT PEEK 23842

    Входим в TR-DOS, сохряняем программу на диск:
    SAVE "a" LINE 10

    Запускаем программу из TR-DOS:
    RUN "a"

    Видим на экране:
    247
    34
    97
    где 247 код команды RUN, 34 — кавычка, 97 — a (RUN "a).

    Снова заходим в TR-DOS, запускаем программу:
    LOAD "a"

    Видим на экране:
    239
    34
    97
    где 239 код команды LOAD, 34 — кавычка, 97 — a (LOAD "a).

    Эврика!

    Снова заходим в TR-DOS, переименовываем программу "a" в "boot":
    NEW "boot", "a"

    Запускаем:
    RUN

    Видим на экране:
    247
    34
    98
    где 247 код команды RUN, 34 — кавычка, 98 — b (RUN "b)

    Снова заходим в TR-DOS, запускаем:
    LOAD

    Видим на экране:
    247
    34
    98
    где 247 код команды RUN, 34 — кавычка, 98 — b (RUN "b)

    Ой! А почему 247, а не 239, мы же LOAD набирали? И вообще что за "b, мы вообще не набирали этого? А потому что команды запуска бута "без параметров" (просто LOAD, RUN, POKE, PEEK) трансформирутся интерпретатором TR-DOS в RUN "boot". Вот такой вот облом.

    Но если не лень набирать полное имя (мне точно лень) хотя бы из одной буквы, то всё будет ровно, по RUN "a" запустится ZYX, по LOAD "a" запустится CONVER:

    10 IF PEEK 23840=247 THEN RANDOMIZE USR 15619: REM : RUN "ZYX"
    20 IF PEEK 23840=239 THEN RANDOMIZE USR 15619: REM : RUN "CONVER"
    Последний раз редактировалось creator; 30.04.2014 в 18:12.
    В правильно заданном вопросе содержится половина ответа

  9. #8
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    а как же merge?
    Да, мерге тоже работает. Но чтобы её напечатать нужно несколько телодвижений, я имел ввиду одной кнопкой чтобы.

    ---------- Post added at 21:34 ---------- Previous post was at 21:33 ----------

    Цитата Сообщение от SoftLight Посмотреть сообщение
    а не проще сделать так: берем boot #1 и boot #2, записываем их с именами boot1.B boot2.B. Далее на бейсике пишем программу с опросом клавы - по нажатию 1 запускаем бут1, по нажатию 2 второй и т.п. Записываем прогу с именем boot.B. Даже программирование знать не надо.
    Да, так проще, но лишнее телодвижение, лишнее нажатие кнопки )) Я хотел свести к минимуму количество нажатий, но видимо так нельзя..

    ---------- Post added at 21:36 ---------- Previous post was at 21:34 ----------

    Цитата Сообщение от creator Посмотреть сообщение
    А потому что команды запуска бута "без параметров" (просто LOAD, RUN, POKE, PEEK) трансформирутся интерпретатором TR-DOS в RUN "boot". Вот такой вот облом.

    Но если не лень набирать полное имя (мне точно лень) хотя бы из одной буквы, то всё будет ровно, по RUN "a" запустится ZYX, по LOAD "a" запустится CONVER:

    10 IF PEEK 23840=247 THEN RANDOMIZE USR 15619: REM : RUN "ZYX"
    20 IF PEEK 23840=239 THEN RANDOMIZE USR 15619: REM : RUN "CONVER"
    Да, похоже облом! Набирать имя - это лишнее телодвижение. Но я всё равно что-нибудь придумаю, как минимизировать количество телодвижение, уже придумал, надо только проверить..
    Куплю корпус и материнку от Spectrum +2/+3

  10. #9
    Guru Аватар для ZX_NOVOSIB
    Регистрация
    24.12.2006
    Адрес
    р.п. Маслянино, Новосибирская обл.
    Сообщений
    5,547
    Спасибо Благодарностей отдано 
    233
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    178 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пожалуй наилучшее решение такое:

    10 BORDER 0: PAPER 0: CLS
    20 IF CODE INKEY$=13 THEN BORDER 2: RANDOMIZE USR 15619: REM: RUN "CONVER"
    30 RANDOMIZE USR 15619: REM: RUN "ZYX"

    Вводим RUN и.. если сразу отпускаем палец - грузится ZYX-boot, если чуть задерживаем палец на ентере, то грузится Конвер..

    Бордер 2 добавлен для того, чтобы просигнализировать "Всё, палец можно отпускать".
    Куплю корпус и материнку от Spectrum +2/+3

  11. #10
    Member Аватар для Faster
    Регистрация
    22.06.2005
    Адрес
    Ульяновск
    Сообщений
    161
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно оптимизировать boot разместив весь код после REM ассемблерным вариантом запуска файлов.
    Когда на твой вопрос отвечает философ, перестаешь понимать вопрос

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

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

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

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

Похожие темы

  1. БЕЙСИК: можно ли загрузить большой файл частями?
    от IanPo в разделе Программирование
    Ответов: 3
    Последнее: 28.11.2010, 12:47
  2. Форум запущен
    от CityAceE в разделе Форум
    Ответов: 109
    Последнее: 20.08.2010, 12:04
  3. SD2IEC запущен!
    от AlexBel в разделе Commodore 16/64/128
    Ответов: 6
    Последнее: 23.04.2009, 20:12
  4. Ответов: 3
    Последнее: 11.05.2006, 10:03

Ваши права

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