User Tag List

Страница 65 из 70 ПерваяПервая ... 616263646566676869 ... ПоследняяПоследняя
Показано с 641 по 650 из 697

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

  1. #641

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

    По умолчанию

    Все побежали и я побежал.
    Еще год назад сделал (кроме шаманства с палитрой) версию 2.997 и хотел ее выложить вместе с более быстрым rtbasicом, но его не доделал, за год не притрагивался.
    А тут на горизонте новый Ретроград и вдруг кто-нибудь захочет использовать бейсик.
    Исправления и улучшения:
    89. Исправлены: работа разделителей , и ; с оператором PRINT; функция POS. Печать чисел без переноса, как в оригинальном бейсике-микрон для РК86.
    90. Исправлен CIRCLE (рисование дуг эллипсов при некоторых комбинациях параметров, ошибка была в 2.995). Спасибо Игорю Титарю за багрепорт.
    91. Часто встречающаяся в программах комбинация IF..THEN теперь выполняется чуть быстрее, чем практически не используемый вариант IF..GOTO
    92. В кодовых подпрограммах теперь можно использовать пересылки или стирание стеком (через BC) по методу Медноногова.
    93. Увеличено время между командами программирования палитры для максимальной совместимости с любыми 06Ц и .02.
    94. Несколько мелких оптимизаций.

    Это "очередная финальная" версия ветки 2.9x, надеюсь на это раз действительно финальная.
    Уже писал, но повторюсь, что 2.997 заменяет 2.995, по быстродействию они близки, а место более быстрого 2.996 в перспективе должен занять еще чуть более быстрый rtbasic.
    Вложения Вложения

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

    Improver(09.06.2025), metamorpho(09.06.2025), parallelno(15.06.2025), Pyk(10.06.2025), svofski(09.06.2025)

  2. #642

    Регистрация
    02.02.2005
    Адрес
    Saint-Petersburg
    Сообщений
    217
    Спасибо Благодарностей отдано 
    127
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    30 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В 2.997 длительность звучания оператора BEEP .001,1 ощутимо дольше чем BEEP .01,1

    Отсутствует возможность определения версии Бейсика из программы на Бейсик,
    при этом сам Бейсик свою версию на старте не отображает.
    Ни один эмулятор не содержит обновлённый Бейсик по умолчанию.

    Поэтому всё что остаётся автору написать в начале программы нечто подобное
    (и рассчитывать что умный пользователь пойдёт гуглить в чём дело):

    Нажмите на изображение для увеличения. 

Название:	basic_detect.jpg 
Просмотров:	43 
Размер:	22.0 Кб 
ID:	82521

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

    metamorpho, возьми эту версию, специально по заказу https://www.sensi.org/~svo/v06x/v06x-cload-run.zip
    К сожалению, sensi.org лежит и эта ссылка не доступна.

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

    Я конечно не метаморф, но эта ссылка дана также в документации Бейсик_Вектор-06Ц.pdf

  3. #643

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

    По умолчанию

    Цитата Сообщение от aGGreSSor Посмотреть сообщение
    В 2.997 длительность звучания оператора BEEP .001,1 ощутимо дольше чем BEEP .01,1
    Это не только в 2.997, а во всех вариантах 2.5, кроме 2.996. Проблема в недостаточной точности.

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

    aGGreSSor(19.07.2025)

  4. #644

    Регистрация
    02.02.2005
    Адрес
    Saint-Petersburg
    Сообщений
    217
    Спасибо Благодарностей отдано 
    127
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    30 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ещё вопрос. Существуют конверторы bas2asc и Vector06C Basic Converter. Оба позволяют перегонять bas в текст и текст в bas, последний дополнительно умеет в cas. Чтобы перегнать бейсик-программу из cas в bas или текст мне надо писать свой конвертер?

  5. #645

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

    По умолчанию

    Vector06C-Basic-Converter позволяет преобразовывать форматы bas, cas, txt в любых сочетаниях, в т.ч. и cas->bas, cas->txt.

  6. #646

    Регистрация
    02.02.2005
    Адрес
    Saint-Petersburg
    Сообщений
    217
    Спасибо Благодарностей отдано 
    127
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    30 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Vector06C-Basic-Converter позволяет преобразовывать форматы bas, cas, txt в любых сочетаниях, в т.ч. и cas->bas, cas->txt.
    Проверил, действительно открывает. Странно, вчера получал какие-то ошибки. Спасибо!

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

  8. #647

    Регистрация
    02.02.2005
    Адрес
    Saint-Petersburg
    Сообщений
    217
    Спасибо Благодарностей отдано 
    127
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    30 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Скажите, а в векторном бейсике есть что-нибудь типа TIME, чтобы замерить время выполнения куска программы (желательно в секундах)?

    Есть такой эталонный тест - Ahl's benchmark.
    При запуске на Basic 2.5 и 2.997 он даёт одинаковый результат:
    Код:
    3.38745E-02
    9.84033
    Хотя даже на глаз видно, что программа завершается в 2.997 быстрей. Для сравнения на Apple ][e она выполняется 113.7 сек.

    Есть новый тест претендующий на эталонность - bench64.
    Его особенность в том, что не допускаются никакие оптимизации, типа перенумерации с шагом 1, быстрые нули, запись &число и т.д.
    Он берёт за эталон последнюю модель Commodore 64 производившуюся для США и каждый из 8 содержащихся в нём тестов выполняется за минуту, что приравнивается к 100 попугаям
    Относительно комода сравниваются остальные Бейсики, например Sinclair Basic даёт 29 попугаев, т.е. в 3,5 раза медленней комодовского, а BBC Micro даёт 202 попугая, т.е. в 2 раза быстрей комода.
    Всё это прекрасно, но я не знаю как засечь время на векторном бейсике. Generic версия без таймера внезапно даёт результаты идентичные Спектруму и опять - одни и те же на обоих Бейсиках - 2.5 и 2.997:
    Код:
    BASIC BENCH INDEX
    > I GOOD. NTSC C64=100
    
    1/8 - FOR:
     309.5 S; 130.8 /S; I= 19
    2/8 - GOTO:
     367.8 S; 72.1 /S; I= 16
    3/8 - GOSUB:
     340.9 S; 61.7 /S; I= 18
    4/8 - IF:
     181.8 S; 80.1 /S; I= 33
    5/8 - IF:
     135.3 S; 26.9 /S; I= 44
    6/8 - MATHS:
     110.1 S; 3.5 /S; I= 54
    7/8 - STRING:
     125.8 S; 39.2 /S; I= 48
    8/8 - ARRAY:
     103 S; 16.3 /S; I= 58
    
    OVERALL INDEX= 29
    Вероятно, если бы удалось внедрить TIME (как в других вариантах), результаты бы отличались (не вдавался в логику). Прилагаю сами тесты.
    vector-benchmarks.zip
    Последний раз редактировалось aGGreSSor; 20.07.2025 в 23:27.

  9. #648

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

    По умолчанию

    Ссылки на тесты скорости, которые пробовал.
    Там есть и "общечеловеческие", например Rugg/Feldman benchmarks (комментарии там несколько устаревшие, т.к. результаты бейсиков обновлял, а комментарии - нет).
    В большинстве случаев засекал в отладчике emu для максимальной точности, но есть и пример использования встроенных возможностей - медленный Мандельброт.
    POKE768,0,0,0 в начале - это инициализация, PEEK(768) - младший и PEEK(769) - средний байты результата, сколько кадров прошло. Если мало, то есть еще и самый старший байт PEEK(770).

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

    aGGreSSor(21.07.2025)

  10. #649

    Регистрация
    02.02.2005
    Адрес
    Saint-Petersburg
    Сообщений
    217
    Спасибо Благодарностей отдано 
    127
    Спасибо Благодарностей получено 
    48
    Поблагодарили
    30 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо, ivagor! Таким образом, выражение позволяющее узнать кол-во секунд приблизительно прошедшее с момента старта компьютера строится аналогично Спектруму:
    Код:
    (65536*PEEK(770)+256*PEEK(769)+PEEK(768))/50
    В процессе адаптации возникло две проблемы:

    1) Так же как и на Спектруме, нельзя просто присвоить выражение переменной или функции и рассчитывать что оно всякий раз будет пересчитываться при вызове. Оно посчитается один раз, присвоится и будет всякий раз выдаваться одно и то же. В принципе, это логично, но на комоде это не так. По этой причине scruss допустил в версии bench64 для Спектрума ошибку, так что время в его версии не идёт, поэтому и результаты bench64zx.bas идентичны bench64g.bas (generic no time). Исправил и выкатил релиз для спектрума на zxart. Аналогично и для Вектора все TIME просто заменяются на выражение выше и вычисляются всякий раз по новой.

    2) Не хватало символьной памяти, ошибка "мал буфер" в тесте STRING. Добавил в тест CLEAR 2000 (скорей всего слишком много, но работает).

    Других изменений не было.

    Результаты:
    Код:
            |  Vector   |    Vector   | Commodore64 |  Sinclair |  Sinclair  |
            | BASIC 2.5 | BASIC 2.997 |    BASIC    |  BASIC 48 |  BASIC 128 |
    	|  (3 Mhz)  |   (3 Mhz)   | (1,023 Mhz) | (3,5 Mhz) |  (3,5 Mhz) |
    --------+-----------+-------------+-------------+-----------+------------+
    FOR     |    91     |     182     |     100     |     21    |     18     |
    GOTO    |    89     |     185     |     100     |     18    |     15     |
    GOSUB   |    75     |     193     |     100     |     19    |     15     |
    IF      |    101    |     219     |     100     |     35    |     29     |
    FN      |    86     |     189     |     100     |     46    |     43     |
    MATHS   |    112    |     225     |     100     |     55    |     55     |
    STRING  |    84     |     139     |     100     |     49    |     44     |
    ARRAY   |    91     |     186     |     100     |     59    |     55     |
    --------+-----------+-------------+-------------+-----------+------------+
    OVERALL |    90     |     186     |     100     |     30    |     26     |
    Похоже на правду. Зримое подтверждение того что BASIC 128 на Спектруме медленней BASIC 48, а Basic 2.997 на Векторе производительней Basic 2.5, причём более чем в 2 раза!

    Тест: bench64vc.zip

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

    Improver(22.07.2025), ivagor(22.07.2025), svofski(22.07.2025)

  11. #650

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

    По умолчанию

    На один момент стоит обратить внимание. В общем случае не рекомендую измерять время выражением
    (65536*PEEK(770)+256*PEEK(769)+PEEK(768)
    Если очень не повезет, то между PEEKами может произойти инкремент с переносом и получится странный результат. Вероятность этого очень маленькая (и в данном тесте такого не случилось), но мне один раз "повезло", поэтому стал делать как в медленном Мандельброте. Отдельно PEEKи, чтобы уменьшить время между ними (и, соответственно, вероятность переноса), отдельно проверка на перескок и отдельно вычисление. Ну и для максимальной точности лучше делить на 50.08, но это ерунда, которой можно пренебречь.

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

    Improver(22.07.2025)

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

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

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

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

Ваши права

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