User Tag List

Страница 63 из 70 ПерваяПервая ... 596061626364656667 ... ПоследняяПоследняя
Показано с 621 по 630 из 697

Тема: Бейсики для Вектора-06Ц и клонов

  1. #621

    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    813
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    60 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ещё вариант: IF HI(X1) AND 255 THEN
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

  2. #622

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В линейке 2.5 такой функции нет.
    Можно еще учесть симметрию фигуры и границ.

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

    metamorpho(25.12.2024)

  3. #623

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    458
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    268
    Поблагодарили
    103 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Прокатит, только стоит спрятать &FF00 в переменную и избавиться от скобок. Тогда получается еще ускорить triplbuf7.
    т.е. наглядно вот так примерно ?
    D=&FF00
    IF X1 AND D THEN....

    И это по простому означает IF X1>255 OR X1<0 THEN ?

    А как это происходит например X1=144
    далее как работает Бейсик 144 AND FF00 ?

  4. #624

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от metamorpho Посмотреть сообщение
    т.е. наглядно вот так примерно ?
    D=&FF00
    IF X1 AND D THEN....

    И это по простому означает IF X1>255 OR X1<0 THEN ?
    Да. Понятно, что это подходит для проверки прямоугольников со стороной от 0 до степени двойки-1. Более общий и, что приятно, более быстрый вариант - использовать массив с отмеченными границами. Приложил пример, еще там учтена симметрия фигуры. К первоначальной идее иллюстрации тройной буферизации это прямого отношения не имеет (тем более "морфинг" более содержательный пример), но пусть летает побыстрее, почему бы и нет. Переводить все переменные на однобуквенные не стал для сохранения читаемости.
    Вложения Вложения

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

    metamorpho(25.12.2024)

  5. #625

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Твистер на бейсике, душераздирающее зрелище. Надо конечно делать на асме, но если не хочется, то можно воспользоваться мощью современных эмуляторов. В Emu80 (начиная с 4.0.498) LAlt+PgUp пока не станет приемлемо. В Emu можно удерживать F9.
    Upd: twister6 совместим и с режимом 12 МГц в VV (F10).
    Вложения Вложения
    Последний раз редактировалось ivagor; 08.01.2025 в 23:15. Причина: twister6

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

    Improver(10.01.2025), metamorpho(09.01.2025)

  6. #626

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ускорил как смог. Здесь аж двухбайтная машиннокодовая процедура, поэтому twister6 (где только бейсик) тоже оставил.
    Вложения Вложения

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

    Improver(10.01.2025), metamorpho(10.01.2025), svofski(10.01.2025)

  7. #627

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Округление в клонах msbasic (наверняка где-то уже было)
    A=SGN(A)*INT(ABS(A)+.5)

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

    metamorpho(05.02.2025)

  8. #628

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В программах иногда используются "бесконечные" циклы с заранее неизвестным числом повторений (может быть реализован выход из цикла по проверке некоторых условий, этот момент я не трогаю).
    Как правило для зацикливания в таких случаях используется GOTO назад, например:
    1 REM
    10 REM
    100 REM
    199 GOTO234
    200 REM
    234 REM
    999 GOTO199

    basic 2.5 - 7900 тактов на итерацию
    basic 2.996 - 4100 тактов на итерацию

    Можно ускорить подобные циклы используя FOR:
    1 REM
    10 REM
    100 REM
    199 FORI=.TO1STEP.:GOTO234
    200 REM
    234 REM
    999 GOTO199 - ошибка, в этой строке должно быть 999 NEXT

    basic 2.5 - 5760 тактов на итерацию
    basic 2.996 - 2828 тактов на итерацию

    Выигрыш очевиден, причем если перед строкой начала цикла (199 в примере) будет больше других строк, то вариант с GOTO будет еще замедляться, а на FOR это не влияет.
    В модернизированных бейсиках есть еще один потенциальный плюс - FOR не перебивает кеширование переходов, если они используются и внутри цикла, как в приведенном примере (поэтому в 2.996 относительный выигрыш больше).
    Последний раз редактировалось ivagor; 06.02.2025 в 17:03. Причина: подсветил свою ошибку

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

    metamorpho(05.02.2025)

  9. #629

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Объясни, пожалуйста, почему добавление лишних операторов что-то ускоряет и почему нельзя было просто написать 999 GOTO234 -- в чем смысл 199 GOTO234 ?
    Больше игр нет

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

    metamorpho(05.02.2025)

  10. #630

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    почему добавление лишних операторов что-то ускоряет
    Лишний FOR исполняется один раз и это потребует
    в basic 2.5 - 4980 тактов
    в basic 2.996 - 2272 такта
    Т.е. за 2-3 итерации (а цикл то "бесконечный") это время будет скомпенсировано и пойдет чистый выигрыш.
    А выигрыш за счет
    1) Парсинг NEXT быстрее, чем GOTO+номер
    2) Адрес начала цикла в NEXT сохранен FORом и сразу переходим куда надо. В GOTO надо еще найти строку (если речь не о модернизированном бейсике и если номер не совпал с "кешем").

    Цитата Сообщение от svofski Посмотреть сообщение
    почему нельзя было просто написать 999 GOTO234 -- в чем смысл 199 GOTO234
    Это порча жизни кешированию переходов и ближе к реальности, когда в содержательной программе внутри цикла будут переходы, скорее всего условные.

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

    metamorpho(05.02.2025)

Страница 63 из 70 ПерваяПервая ... 596061626364656667 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Картотека ПО для Вектора-06ц
    от svofski в разделе Вектор
    Ответов: 719
    Последнее: 04.04.2024, 11:13
  2. Восстановление Вектора-06ц
    от Daniil Chislov 86 в разделе Вектор
    Ответов: 100
    Последнее: 11.03.2021, 00:23
  3. Ответов: 198
    Последнее: 26.04.2020, 13:05
  4. Ответов: 58
    Последнее: 06.07.2019, 23:56
  5. Ответов: 8
    Последнее: 14.11.2008, 02:41

Ваши права

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