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

User Tag List

Страница 40 из 43 ПерваяПервая ... 3637383940414243 ПоследняяПоследняя
Показано с 391 по 400 из 426

Тема: Бейсик-помощь

  1. #391
    Master Аватар для LW
    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    950
    Спасибо Благодарностей отдано 
    228
    Спасибо Благодарностей получено 
    1,005
    Поблагодарили
    319 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну дело ваше, не хотите не копируйте, а мне без копирования никак

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

  3. #392
    Guru Аватар для ZEman
    Регистрация
    28.10.2005
    Адрес
    Омск
    Сообщений
    2,052
    Спасибо Благодарностей отдано 
    113
    Спасибо Благодарностей получено 
    34
    Поблагодарили
    23 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Rararura 2.0

    прошёл почти год и вот Я снова вернулся.
    на этот раз была проделана огромная работа над программой в результате чего во многих режимах была увеличена скорость работы программы.
    очень сильно переделал Big mode - теперь там целых 3 режима обработки спрайтов, можно обрабатывать 2 нижние (служебные) строчки, а также можно прервать обработку в любой момент или выйти в меню, ну и самое главное скорость обработки в 5 ! раз быстрее.
    также полностью переделал multiselect - теперь он выглядит совершенно по новому и работает очень быстро.

    список изменений:
    - расширение режима big mode, теперь можно обрабатывать две нижние (служебные строчки).
    - появились 3 опции в big mode:
    стандартная (only big sprite) - обработка 6 спрайтов из картинки и создание big sprite.
    расширенная (21 udg) - обработка до 21 спрайта из картинки, big sprite не создаётся.
    шрифт режим (font mode) - обработка до 96 спрайтов из картинки, big sprite не создаётся. спрайты импортируются в font 3.
    - стандартная обработка спрайтов в big mode теперь занимает всего 6 секунд, расширенная 20 секунд, шрифт режим 59 секунд.
    - в расширенном или шрифт режиме можно остановить выбор спрайтов в любой момент по нажатию кнопки SPACE, обработка будет проводиться до последнего выбранного спрайта.
    - в расширенном или шрифт режиме можно видеть количество выбранных спрайтов (синяя прозрачная полоса в верхней части экрана).
    - выход из big mode режима в любой момент в главное меню по кнопке ENTER.
    - изменён индикатор обработки спрайтов в big mode (теперь это смена цвета border).
    - новый вид multiselect mode.
    - другой способ обработки спрайтов в multiselect mode.
    - в multiselect mode обработка спрайтов теперь проходит за 2 - 21 секунд (зависит от количества выбраных спрайтов).
    - удалён вывод лишней информации при обработке в multiselect mode.
    - теперь все выбраные спрайты в multiselect mode идут по порядку (последний символ ставится последним как положено).
    - улучшенна система сохранений.
    - оптимизация программы.
    - разичные мелкие исправления.

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

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

    По умолчанию

    Напомните, плиз, элегантный универсальный загрузчик тырдос/лента. Вроде встречался раньше, вроде даже там не было конструкции "IF ... THEN" (?)

    Вроде даже на бейсике он был. Хотя может и на асме
    Куплю корпус и материнку от Spectrum +2/+3

  5. #394
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,100
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ZX_NOVOSIB, не знаю, насколько элегантен метод через анализ системной переменной "начала бейсик программы". Либо выполнения кодовой последовательности в бесик-строке. За счёт смещения его на 112 байт, после инициализации области системных переменных tr-dos. Сталкивался лишь с таким.
    Последний раз редактировалось null_device; 19.05.2023 в 05:09.
    Когда есть, но не знаешь где - это все равно, что нету.

  6. #395
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Напомните, плиз, элегантный универсальный загрузчик тырдос/лента. Вроде встречался раньше, вроде даже там не было конструкции "IF ... THEN" (?)
    ASC выпускал игры с "универсальными загрузчиками". Выполнялась команда вида RANDOMIZE USR x:REM:LOAD "file" CODE

    Где x - адрес машинного кода, встроенного в бейсик-программу, который определял, имеется ли TR-DOS. Если имеется - то код переходил на адрес 15619 - тем самым RANDOMIZE USR x было эквивалентно RANDOMIZE USR 15619, а дальнейший текст программы являлся "легальным" вызовом команд TR-DOS из бейсика. Если TR-DOS не было - то машинный код переставлял системную переменную CH_ADD, чтобы интерпретатор обошел команду REM, и возвращался в бейсик. После этого интерпретатор выполнял LOAD "file" CODE и грузил файл с кассеты.

    Некоторая сложность была с определением адреса x, ведь он был различным для случаев наличия или отсутствия TR-DOS. Для определения правильного адреса считывалась системная переменная PROG (адрес бейсик-программы), и к этому значению прибавлялось смещение.
    Цитата Сообщение от ZX_NOVOSIB Посмотреть сообщение
    Вроде даже на бейсике он был. Хотя может и на асме
    На чистом бейсике тоже можно сделать, и пользуясь только "легальными" средствами определения наличия TR-DOS, без "инсайдерских" POKE/PEEK, опирающихся на знание прошивок бейсика и TR-DOS. По-моему в инструкции к TR-DOS был приведен способ, как следует определять наличие TR-DOS определенной командой PEEK. Дальше надо использовать IF...THEN, без "инсайдерских" POKE иначе никак. Ведь синтаксис команд загрузки с ленты и диска разный.

  7. #396
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,100
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Некоторая сложность была с определением адреса x, ведь он был различным для случаев наличия или отсутствия TR-DOS. Для определения правильного адреса считывалась системная переменная PROG (адрес бейсик-программы), и к этому значению прибавлялось смещение.
    Сложностью могло пожалуй являться дополнительное смещение бейсика ещё на +256 байт, во время выполнения команд tr-dos. Или, при подключении иной специфичной периферии. В книжке, "...для пользователей и программистов", такой указан interface 1.
    В случае использования загрузчика через код вшитый в бейсик-строке, достаточно оформить по адресу со смещением +0, процедуру загрузчика tr-dos, а по адресу +112, загрузчик с ленты.
    Т.о. при вызове кода с адреса +112 байт, из тела программы, за счёт смещения начале бейсика переменными tr-dos, будет запущен нужный кусок кода.
    Когда есть, но не знаешь где - это все равно, что нету.

  8. Этот пользователь поблагодарил null_device за это полезное сообщение:

    Barmaley_m (19.05.2023)

  9. #397
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от null_device Посмотреть сообщение
    Сложностью могло пожалуй являться дополнительное смещение бейсика ещё на +256 байт, во время выполнения команд tr-dos.
    Во время выполнения команд TR-DOS бейсик-интерпретатор не исполняет команды, так что это несущественно. Ну, может, в случае открытия файлов через OPEN# еще растет область каналов, но OPEN# в реальных программах и, особенно, загрузчиках, мне нигде не встречался. Подобным пользуются только авторы больших проектов на бейсике.
    Цитата Сообщение от null_device Посмотреть сообщение
    Или, при подключении иной специфичной периферии. В книжке, "...для пользователей и программистов", такой указан interface 1.
    В СНГ Interface 1 был той еще экзотикой. Не видел ни одного "вживую", и клонов тоже не было. В мои времена никто из программистов под TR-DOS не заморачивался поддержкой возможного Interface 1.

    Рискну предположить, что реальных контроллеров Beta Disk от фирмы Technology Research было произведено в десятки раз меньше, чем наших клонов на ВГ93. Так что и на Западе конфигурация "Beta disk + Interface 1" была, скорее всего, большой экзотикой.
    Цитата Сообщение от null_device Посмотреть сообщение
    В случае использования загрузчика через код вшитый в бейсик-строке, достаточно оформить по адресу со смещением +0, процедуру загрузчика tr-dos, а по адресу +112, загрузчик с ленты.
    Т.о. при вызове кода с адреса +112 байт, из тела программы, за счёт смещения начале бейсика переменными tr-dos, будет запущен нужный кусок кода.
    А вот это отличная идея. Компактно, естественно, и красиво. Снимаю шляпу!

  10. #398
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,100
    Спасибо Благодарностей отдано 
    22
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Во время выполнения команд TR-DOS бейсик-интерпретатор не исполняет команды, так что это несущественно.
    При выполнении кода вшитого в бейсик-строке, он будет также релоцирован (со сдвижкой адресации). Это стоит учитывать.
    Когда есть, но не знаешь где - это все равно, что нету.

  11. #399
    Member
    Регистрация
    06.11.2020
    Адрес
    г. Санкт-Петербург
    Сообщений
    144
    Спасибо Благодарностей отдано 
    72
    Спасибо Благодарностей получено 
    22
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    адрес машинного кода, встроенного в бейсик-программу, который определял, имеется ли TR-DOS. Если имеется - то код переходил на адрес 15619 - тем самым RANDOMIZE USR x было эквивалентно RANDOMIZE USR 15619, а дальнейший текст программы являлся "легальным" вызовом команд TR-DOS из бейсика. Если TR-DOS не было - то машинный код переставлял системную переменную CH_ADD, чтобы интерпретатор обошел команду REM, и возвращался в бейсик. После этого интерпретатор выполнял LOAD "file" CODE и грузил файл с кассеты.
    А если есть TR-DOS, но при этом загрузка с ленты, тогда полезет грузить с диска?

  12. #400
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vlad-kras Посмотреть сообщение
    А если есть TR-DOS, но при этом загрузка с ленты, тогда полезет грузить с диска?
    Да. Но для этого TR-DOS должна быть инициализирована к моменту запуска загрузчика. Большинство кассетных загрузчиков вообще не запустятся при инициализированной TR-DOS из-за смещенного адреса бейсик-программы.

    Если же в бейсике выполнить RANDOMIZE USR 0 - то инициализации TR-DOS не произойдет. Можно набирать LOAD "" и грузить игру с любым ("универсальным" или обычным) загрузчиком полностью с кассеты.

    Кстати, интересный вопрос - а можно ли вообще проверить, имеется ли в системе контроллер Beta-Disk, если TR-DOS не инициализирована? Ведь порты контроллера недоступны, ПЗУ TR-DOS неактивно, и следов её прошлой активности в памяти нет.

    Единственный программный способ активировать порты контроллера и ПЗУ TR-DOS - это исполнить код по адресам #3Dxx. Если контроллер есть - то произойдет включение ПЗУ TR-DOS, и дальше всё понятно. А вот если контроллера нет? По адресам #3Dxx находится знакогенератор, и попытка исполнить его как код обычно заканчивается сбоем. Может быть, там есть какой-то фрагмент, на который можно выполнить переход, а потом вернуться с разным результатом в зависимости от наличия или отсутствия контроллера дисковода?

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

    UPD: проверил. Знакогенератор состоит из относительно безобидных команд, среди которых нет переходов за пределы знакогенератора, бесконечных циклов, вызовов или возвратов. Из опасного - есть немного команд записи в память, которые могут "перепахать" несколько её ячеек, но и только. При правильной инициализации регистров последствия можно ограничить. Рано или поздно управление попадает на адрес #4000, а там уже можно размещать "ловящий" код.

    Проверил без контроллера POKE 16384, 201: RANDOMIZE USR 15616. Сбоя не произошло, управление вернулось в бейсик: 0 OK, 0:1

    Итак, алгоритм проверки следующий:
    1) Размещаем на стеке адрес, где будем ловить случай наличия контроллера;
    2) Размещаем по адресу #4000 код, который будет ловить случай отсутствия контроллера;
    3) Инициализируем BC, DE, HL нулями или другими безопасными значениями. Надо пару раз протрассировать, что происходит при исполнении знакогенератора, и заметить, по каким адресам производится запись в память, и какие значения регистров позволят этого избежать. Ну или принять меры, чтобы запись в эти ячейки памяти не привела к сбою.
    4) Выполняем переход на адрес #3D2F
    5) Profit!

    UPD2: Задумался, а почему я раньше нигде не встречал такого алгоритма проверки? Ответ простой. Чтобы этот алгоритм имел смысл, его нужно загрузить с кассеты. Ведь в противном случае TR-DOS окажется инициализированной, и необходимость в проверке отпадает. Но ни один владелец дисковода в здравом уме не грузит ничего с кассеты. Разве только с целью сохранить загруженное на диск и забыть "кассетную" жизнь, как страшный сон.
    Последний раз редактировалось Barmaley_m; 22.05.2023 в 23:23.

  13. Этот пользователь поблагодарил Barmaley_m за это полезное сообщение:

    Reobne (23.05.2023)

Страница 40 из 43 ПерваяПервая ... 3637383940414243 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Руссифицированный бейсик
    от Den1982 в разделе Программирование
    Ответов: 17
    Последнее: 23.02.2022, 22:58
  2. Специалист: Бейсик
    от Prusak в разделе Специалист
    Ответов: 28
    Последнее: 26.07.2019, 16:07
  3. Про бейсик
    от yur в разделе Программирование
    Ответов: 23
    Последнее: 17.02.2014, 21:26
  4. напомните про бейсик
    от goblinish в разделе Программирование
    Ответов: 7
    Последнее: 22.06.2012, 06:14

Ваши права

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