User Tag List

Страница 33 из 70 ПерваяПервая ... 293031323334353637 ... ПоследняяПоследняя
Показано с 321 по 330 из 697

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

  1. #321

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

    По умолчанию

    Ускорил умножение, некоторые околоматематические процедурки и чуть-чуть FOR..NEXT/RETURN. Без упаковки сократил пару байт, а упакованный короче на 18. На глаз практически незаметно, но преодолен важный для меня рубеж - 2.81 обогнал пзушный бейсик 6128 во всех используемых мною тестах, математика держалась до последнего. Т.е. даже там, где эффект оптимизации минимален, он превысил разницу между 8080 и 8085 с учетом векторовского торможения.

    Upd 04.05.2023. Заметно ускорил эллипсы и LINE BF/BS, немного быстрее стали paint, дуги, круги, вывод символов и деление, еще несколько мелких оптимизаций. Доработал PAUSE - теперь дает практически одинаковую задержку на всех типах процессоров. При рисовании "обратных" (от большего к меньшему) дуг использовалась стековая процедура обмена слов временно запрещавшая прерывания. На мой взгляд это было совершенно излишне, переделал без стека и без запрета прерываний. Эллипсы отмечу особо - они на 35-40% быстрее 2.5 или на 30-35% относительно 2.81.
    Упакованный 2.82 на 49(!) байт короче 2.81 за счет оптимизации и бейсика и инициализатора распаковки. Если не блюсти размер, то можно еще ускорить умножение, деление и некоторые другие вещи, но ускорение будет не таким уж большим, решил лучше соблюдать культуру веса.

    Upd 07.05.2023.
    Исправил ошибку в SCREEN4 (скорость обмена с магнитофоном) - было небольшое отклонение от 2.5. В самооправдание скажу, что я не один такой ошибавшийся, в дизассемблере Филиппова и в бейсике 6128 в SCREEN4 тоже ссылки вместо констант, но у себя я теперь исправил. Наверное многие знают, но на всякий случай отмечу - в описании бейсика ошибка, диапазон аргумента SCREEN4 от 40 до 255, не до 460.
    В 2.82 слегка поломал эллипсы очень сильно сплюснутые по горизонтали. Не то чтобы смертельно, но результат отличался от 2.5, исправил. Скорость не уменьшилась, даже немного увеличилась.
    Освободил сравнительно много места и смог вернуть обратно быстрый набор по УС+СС+буква. К сожалению пришлось убрать восьмеричные числа (их не было в оригинальном 2.5, появились в 2.61), надеюсь svofski не будет меня сильно ругать. В связи с возвращением быстрого набора бейсик опять разбух, но не до тех значений, которые были на момент его удаления (с тех пор многое оптимизировал по размеру): упакованный 2.72 - 12958 байт, 2.83 - 12855 байт. Интересный факт - salvador сжал на байт сильнее, чем zx0.
    Полностью переписал деление в плавучке, стало быстрее.

    Upd2 07.05.2023. В 2.84 вернул восьмеричные, доработал поддержку шестнадцатеричных и восьмеричных.

    Upd 11.05.2023: Переделал в компактную форму таблицу перекодирования в QWERTY (SCREEN5,1). Теперь POKE и PEEK не могут обращаться к этой таблице (диапазон 640-767). Вместе с несколькими другими оптимизациями освободилось место, что позволило ввести и новые и ранее отброшенные (из-за экономии памяти) улучшения:
    1. Оптимизированы PUT и GET. PUT на 17% быстрее 2.84 и на 36% быстрее 2.5.
    2. Немного ускорены: проверка следующего символа, умножение, сложение/вычитание и обработчик прерываний.
    В упакованном виде 2.85 на 34 байта короче 2.84.

    Upd 19.05.2023:
    1. Исправлена ошибка в оцифровщике номеров строк (появилась в 2.70) - в некоторых случаях оцифровщик мог пропустить и неправильно перевести в число слишком большие номера.
    2. Околоматематические микроускорения: сравнение, оцифровка номеров строк.

    Upd 20.05.2023:
    46. Исправил (ошибка появилась в 2.86) и ускорил ON.
    47. Добавил в инициализатор распаковщика очистку памяти программы.

    Upd 26.05.2023:
    48. Ускорены вывод символов, LINE BF/BS.
    49. Немного ускорены: сравнение чисел, обработчик прерываний, изменение цвета рисования точки.
    50. Исправлена ошибка разрешения доступа к плоскостям в PAINT при использовании знчений цвета заливки и бордюра с предыдущего вызова PAINT.

    Upd 08.06.2023:
    51. Оцифровщик номеров строк переведен обратно на "стандарт Microsoft" 0-65529 и ускорен.
    52. Вернул "старый" (новый был с 2.57) вариант обработки токенов при вводе символьных переменных в INPUT. Исправлено сообщение об ошибке при вводе неправильной строки в INPUT.
    53. Чуть ускорен пропуск конца строки.
    Вложения Вложения
    Последний раз редактировалось ivagor; 08.06.2023 в 18:18. Причина: заменил на 2.89

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

    Improver(29.04.2023), metamorpho(29.04.2023), Napoleon1(04.05.2023), nzeemin(04.05.2023), parallelno(29.04.2023), PPC(08.05.2023), Stl75(09.05.2023), svofski(29.04.2023), tnt23(04.05.2023)

  2. #322

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

    По умолчанию

    Обновил бейсик.

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

    Improver(05.05.2023), Napoleon1(07.05.2023), svofski(04.05.2023)

  3. #323

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

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    плавучку уже выцепили (синтаксис z80). В принципе и в дизассембере 2.5 (синтаксис 8080), который я выкладывал примерно оно, но тут причесано и с комментариями.
    Глянул DIV - комментарии с ошибками! Код правильный, но с комментариями оттуда надо осторожно, стоит перепроверять.

  4. #324

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

    По умолчанию

    Добавил 2.82 в результаты пары тестов:
    1. Старт ANTIGRAV
    2. Бессмысленный (пустой цикл)

  5. #325

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

    По умолчанию

    Опять обновление, хочу перед праздником исправить найденные недостатки.

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

    Improver(07.05.2023)

  6. #326

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

    По умолчанию

    Еще один кросскомпилятор бейсика (и тут). Для вектора он компилировать не будет, но и boriel не будет, так что вполне подходит в компанию.

  7. #327

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

    По умолчанию

    Уже писал про недокументированное залезание POKE и PEEK в музыкальный буфер, но как оказалось это еще не все. В диапазоне 640-767 они лезут в таблицу перекодирования клавиатуры в QWERTY (включается по SCREEN5,1). В программах такого не встречал, это кому-нибудь нужно? Вопрос связан с тем, что таблицу перекодирования можно сократить/оптимизировать и освободить немного места, но тогда надо запрещать POKE и PEEK туда.

  8. #328

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

    По умолчанию

    Финальная полнофункциональная версия, свободное место и резервы закончились. Развивать дальше можно при удалении (или оптимизации по размеру с проигрышем в скорости) тех или иных элементов бейсика. Добавил 2.85 к результатам вышеупомянутых тестов, но в них разница небольшая.

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

    Improver(11.05.2023), nzeemin(12.05.2023)

  9. #329

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

    По умолчанию

    Закрыл еще один детский гештальт связанный с векторовским бейсиком - быстрые PUT и GET. Это не замена полнофункционального 2.85, это ответвление, т.к. в 2.90 пришлось выпилить: быстрый набор (УС+СС и АР2), SCREEN5 (JCUKEN/QWERTY).
    При ширине фрагмента <8 точек работает пиксельный вариант (скорость между 2.84 и 2.85).
    При ширине фрагмента >=8 точек работает байтово-пиксельный вариант (в лучшем случае PUT быстрее 2.85 почти в 2 раза, быстрее 2.5 почти в 3 раза; GET примерно аналогично, не стал измерять).
    Если добавить ограничений (чтобы ширина была четная или даже кратна 8 точкам), то можно было бы еще ускорить, но есть две причины, почему не стал:
    1. Хотелось получить эффект для большинства существующих программ, а там нечетная ширина для GET/PUT встречается.
    2. Свободного места для альтернативных вариантов совершенно не осталось.

    Пара слов про особенности PUT.
    В описании PUT сказано, что аргументы X и Y в диапазоне 0-255. На самом деле они трактуются как двухбайтные знаковые. Отрицатаельные значения позволяют при необходимости постепенно выдвигать картинку слева и/или снизу. Это, кстати, позволяет эмулировать и заворот - делаем 2 PUT одной картинки, один вариант с положительными координатами, другой - с отрицательными (ну и надо их конечно совместить).
    У пиксельного PUT есть побочный эффект - цвет последней "значащей" (не фоновой) точки после PUT становится текущим цветом рисования и вывода символов. Повторить такое поведение в байтово-пиксельном варианте во всех случаях к сожалению невозможно - это съело бы весь выигрыш в скорости, да и места нет. К счастью это не критично, попробовал несколько программ/игрушек - все нормально.

    Upd 15.05.2023. Исправил GET и PUT (ошибки были в 2.90, в 2.85 все нормально), спасибо metamorpho за багрепорт. PUT немного ускорен.

    Upd 18.05.2023. Заметно ускорен PUT (для ширины фрагмента >= 8 точек, особенно при четной ширине в режиме 2), немного ускорен GET (для ширины фрагмента >= 8 точек).

    Upd 19.05.2023.
    1. Исправлен GET для случая выхода за границу экрана (ошибка появилась в 2.92).
    2. Исправлена ошибка в оцифровщике номеров строк (появилась в 2.70) - в некоторых случаях оцифровщик мог пропустить и неправильно перевести в число слишком большие номера.
    3. Околоматематические микроускорения: сравнение, изменение знака, сложение, округление, оцифровка номеров строк.

    Upd 20.05.2023.
    1. Исправил (ошибка появилась в 2.93) и ускорил ON.
    2. Добавил в инициализатор распаковщика очистку памяти программы.
    3. Ускорены: сложение/вычитание, преобразование в целые (касается не только INT), помещение числа в стек.

    Upd 26.05.2023.
    54. Ускорены: вывод символов, LINE BF/BS.
    55. Немного ускорены: сравнение чисел, оцифровка десятичных чисел, обработчик прерываний, изменение цвета рисования точки.
    56. Исправлена ошибка разрешения доступа к плоскостям в PAINT при использовании значений цвета заливки и бордюра с предыдущего вызова PAINT.

    Upd 27.05.2023. Заметно ускорена оцифровка десятичных чисел.

    Upd 08.06.2023.
    58. Оцифровщик номеров строк переведен обратно на "стандарт Microsoft" 0-65529 и ускорен.
    59. Вернул "старый" (новый был с 2.57) вариант обработки токенов при вводе символьных переменных в INPUT. Исправлено сообщение об ошибке при вводе неправильной строки в INPUT.
    60. Исправил (ошибка была в 2.95-2.96) и ускорил сравнение чисел.
    61. Очень много оптимизаций: переходы, разбор имени и поиск переменных, математика, оцифровка чисел, массивы, обработка строк и некоторые другие вещи.

    Upd 09.06.2023 - Исправлена (крайне редкая) ошибка поиска номера строки (появилась в 2.97).
    Вложения Вложения
    Последний раз редактировалось ivagor; 09.06.2023 в 17:02. Причина: заменил на 2.97fix

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

    Improver(13.05.2023), metamorpho(13.05.2023), Stl75(13.05.2023), svofski(13.05.2023), tnt23(18.05.2023)

  10. #330

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

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    .... быстрые PUT и GET....
    Протестировал начальную версию ANTIGRAV (там через PUT вывод спрайта человечика) на Бейсике 2.90 - управление перестало работать, мои подозрения падают на baskey, видимо адреса опроса переехали на другие места.
    На Бейсике 2.85 тест начальной версии ANTIGRAV (там через PUT вывод спрайта человечика) прошёл успешно - управление работает - скорость немного прибавилась и движение человечика выглядит более плавно.

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

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

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

Эту тему просматривают: 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

Ваши права

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