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

User Tag List

Страница 10 из 11 ПерваяПервая ... 67891011 ПоследняяПоследняя
Показано с 91 по 100 из 107

Тема: Манделброт в ASCII Art

  1. #91
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    У меня нормально работает на эмуляторе БК от gid. Диск с RT-11 называется OSBKPLUM.IMG (думаю можно гуглем найти). Файлы загружаются в BBC бейсик, таймер тоже работает в тесте этом.
    Каких-то чудес не произошло и BBC васик (я использовал тот слегка модифицированный для УКНЦ разумеется) показал 410сек на эмуляторе. Частота 4МГц и видимо это нормальный его результат. При поднятии частоты до 8МГц (как у УКНЦ) - тест разгоняется в 2 раза и становится немного быстрее УКНЦ (в районе 205сек).
    (а собственно процессоры почти одинаковы, данная реализация бейсика не использует процессорное умножение/деление под УКНЦ, различий особо быть и не должно)
    Благодарю Вас. На этом образе вроде самый последний вариант RT11, сделанный для БК, и выглядит он лучше других. Действительно бейсик работает, хотя и на других образах диска тоже. Возможно что-то у меня сбилось. Но, в любом случае, без вашей коррекции бейсика запускать его не стоило - работал бы без нее часов более 10. Имеем теперь рабочий BBC Basic для БК0011! Удивительно, как тормузнуто работает ВМ2 на УКНЦ. B теории при правильном подключении должен быть вроде более чем в два раза быстрее, чем ВМ1. Хотя и на ДВК ВМ2 лишь ненамного быстрее, чем на УКНЦ. Видимо это правильное подключение какое-то непрактичное.
    Но вильнюсский бейсик с ДВК на БК под RT11 не идет и на OSBKPLUM. Получается, что для БК под RT11 вильнюсского бейсика так и нет.
    Последний раз редактировалось litwr; 05.09.2021 в 21:58.

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

  3. #92
    Master Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    590
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    115 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Про этот знаю. Вопрос про вильнюсский бейсик для ОС БК11 (RT-11SJ). Складывaется впечатление, что его так нормально под RT-11 и не портировали.
    А смысл его портировать, если он и так занимает 24 КБ? Программу-то куда девать? А данные?

    К тому же, ничего действительно интерактивного на нём не напишешь. Ввод убогий, где структуры данных пользовательского интерфейса хранить -- непонятно. Вот благодаря наличию плавучки считать на нём можно нормально, это да. Чем я в своё время и занимался.
    Причины этого понятны -- Бейсик же разрабатывался, как язык начального обучения для программистов на Фортране, отсюда и все его заморочки.
    (А Фокал -- так и вовсе урезанный Фортран, хех)

    Я лично очень быстро перешёл на ассемблер, потому как стало понятно, что основные возможности машины -- там, а Бейсик -- это другое. Формулы посчитать, графики построить, но не более того.

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

    Oleg N. Cher (24.09.2023)

  5. #93
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    А смысл его портировать, если он и так занимает 24 КБ? Программу-то куда девать? А данные?
    На УКНЦ его же прописали, а там памяти если и больше, то на незначительные 4-6 КБ.

  6. #94
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Добавил данные с БК0011М, но пока только с эмулятора. Беда прямо с таймингами на эмуляторах до сих пор! Наверное бэкашники вымрут раньше, чем тайминги наладят. Вот данные с 4-х эмуляторов:

    1) gid - 219 (199)
    2) BK2010 - 174 (174)
    3) Elektronika BK (BK-Terak) - 180 (172)
    4) Башкирия-2М - 173 (172)

    Время в секундах, в скобках - время от секундомера. Разброс большой. Только BK2010 показывает совпадение с секундомерными данными, поэтому данные с этого эмулятора пошли в таблицу. Но не факт, что реальная БК0011М покажет такие же цифры. По данным эмулятора БК0011М почти догнала Amstrad CPC...

    Исходники тут.
    Последний раз редактировалось litwr; 11.09.2021 в 21:21.

  7. #95
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А вот снимок экрана с заводской выпуска 1991 года БК0011М
    Нажмите на изображение для увеличения. 

Название:	bk2011m-mandelbrot.jpg 
Просмотров:	80 
Размер:	89.5 Кб 
ID:	76097
    164.66 сек.
    Таким образом, эмуляторы несколько медленнее реального железа - возможно не учитывается, что с ПЗУ проц работает быстрее.
    Последний раз редактировалось litwr; 14.09.2021 в 21:22.

  8. #96
    Junior
    Регистрация
    11.12.2019
    Адрес
    г. Владимир
    Сообщений
    20
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Ну вот с доброй помощью и построился Манделброт на БК. Конвертор (работа со сценариями) встроена в эмулятор GID. К сожалению у этого эмулятора проблема с таймером, поэтому запускать (перенесши bin-образ) пришлось на BK2010. И получилась вот такая картинка.
    Вложение 73926
    Обогнали почти всех, даже Коммодор 128 в быстром режиме! Все-таки бейсик 1986 года и неплохие были специалисты в Вильнюсе. Только BBC Micro осталась впереди, но там бейсик изначально делали быстрым. И эти Микро были одними из самых дорогих домашних/учебных ПК. Хотя и недорогой Амстрад тоже обогнал БК - там бейсик 1984 года и тоже один из самых быстрых.
    А если все вычисления для БК выполнять в режиме одинарной точности, то скорость вычислений возрастает на ~41% (на реальном железе пока не провярял - только в эмуляторе):

    Последний раз редактировалось dim33; 24.09.2023 в 00:29.

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

    CodeMaster (24.09.2023)

  10. #97
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от dim33 Посмотреть сообщение
    А если все вычисления для БК выполнять в режиме одинарной точности, то скорость вычислений возрастает на ~41% (на реальном железе пока не провярял - только в эмуляторе):

    БК опять преподносит сюрпризы. Как известно, у БК все операции идут с двойной точностью и поэтому операции на данных одинарной точности вроде бы должны быть медленнее из-за преобразований типа. Для объяснения возникшего феномена предложу следующие факторы:
    1) присваивание возможно происходит без преобразования типа и поэтому быстрее для одинарной точности;
    2) само преобразование типа происходит очень быстро;
    3) некоторые действия с мантиссами, где много финальных нулей, быстрее, а такие мантиссы должны естественно получаться из коротких мантисс.

  11. #98
    Master
    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    538
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    136
    Поблагодарили
    105 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Мне тоже стало интересно, и я запустил прогу в эмуляторе, на реальной БК-0010-01 надо придумывать способ, как загрузить прогу через магнитофонный вход, а я об этом вообще не задумывался ещё.
    Код из поста #32 в конфигурации БК-0010-01 на 3МГц выдал такое значение: 191.82660266666667, при этом счётчик таймера перешагнул через 0 и начал отсчёт заново.
    Затем, я заменил все переменные оперирующие целочисленными данными на целочисленные:

    Скрытый текст

    Код:
    100 rem a basic, ascii mandelbrot
    110 rem
    120 rem this implementation copyright (c) 2019, gordon henderson
    130 rem
    140 rem permission to use/abuse anywhere for any purpose granted, but
    150 rem it comes with no warranty whatsoever. good luck!
    160 rem
    165 rem bk conversion by litwr, 2020
    170 c$ = ".,'~=+:;[/<&?oxOX# "
    175 cls
    180 so% = 1%
    190 mi% = len(c$)
    200 mx = 4
    210 ls = -2.0
    220 tp = 1.25
    230 xs = 2.5
    240 ys = -2.5
    250 w% = 38%
    260 h% = 21%
    270 sx = xs / w%
    280 sy = ys / h%
    290 poke &O177712,&O162
    300 for y% = 0% to h%
    310   cy = y% * sy + tp
    320   for x% = 0% to w%
    330     cx = x% * sx + ls
    340     zx = 0
    350     zy = 0
    360     cc% = so%
    370     x2 = zx * zx
    380     y2 = zy * zy
    390     if cc% > mi% then goto 460
    400     if (x2 + y2) > mx then goto 460
    410     t = x2 - y2 + cx
    420     zy = 2 * zx * zy + cy
    430     zx = t
    440     cc% = cc% + 1%
    450     goto 370
    460     ? mid$(c$, cc% - so%, 1%);
    470   next x%
    480   print
    490 next y%
    510 t = peek(&O177710)
    512 if t<0 then t=-t else t=65536-t
    514 print (t+65536)*64/3000*128/1000
    [свернуть]

    стало чуточку быстрее, незначительно, но счётчик таймера всё равно успел перейти через 0, и выдало вот такой результат:
    181.47464533333333
    а затем я поменял плавающие переменные на одинарную точность:

    Скрытый текст

    Код:
    100 rem a basic, ascii mandelbrot
    110 rem
    120 rem this implementation copyright (c) 2019, gordon henderson
    130 rem
    140 rem permission to use/abuse anywhere for any purpose granted, but
    150 rem it comes with no warranty whatsoever. good luck!
    160 rem
    165 rem bk conversion by litwr, 2020
    170 c$ = ".,'~=+:;[/<&?oxOX# "
    175 cls
    180 so% = 1%
    190 mi% = len(c$)
    200 mx! = 4!
    210 ls! = -2.0!
    220 tp! = 1.25!
    230 xs! = 2.5!
    240 ys! = -2.5!
    250 w% = 38%
    260 h% = 21%
    270 sx! = xs! / w%
    280 sy! = ys! / h%
    290 poke &O177712,&O162
    300 for y% = 0% to h%
    310   cy! = y% * sy! + tp!
    320   for x% = 0% to w%
    330     cx! = x% * sx! + ls!
    340     zx! = 0!
    350     zy! = 0!
    360     cc% = so%
    370     x2! = zx! * zx!
    380     y2! = zy! * zy!
    390     if cc% > mi% then goto 460
    400     if (x2! + y2!) > mx! then goto 460
    410     t! = x2! - y2! + cx!
    420     zy! = 2! * zx! * zy! + cy!
    430     zx! = t!
    440     cc% = cc% + 1%
    450     goto 370
    460     ? mid$(c$, cc% - so%, 1%);
    470   next x%
    480   print
    490 next y%
    510 t = peek(&O177710)
    512 if t<0 then t=-t else t=65536-t
    514 print (t+65536)*64/3000*128/1000
    [свернуть]

    Стало прям реально быстро выполняться, программа завершилась раньше, чем счётчик досчитал до нуля, результат получился такой: 305.82101333333333
    Скриншотов не даю, потому что я не понимаю смысла выдаваемых результатов. Лучше - больше или меньше?
    Да и любой сможет повторить это в эмуляторе.
    mandelbrots.zip - архив с бейсиковскими .COD файлами, MAN0.COD - оригинал, MAN1.COD - добавлено целочисленных переменных, MAN2.COD - переменные одинарной точности.

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

    Код можно ещё на капелюшечку ускорить, если заменить функцию mid$ на массив символов. Но код становится менее красивым и удобным, а результат - не впечатляет.

    Скрытый текст

    Код:
    100 rem a basic, ascii mandelbrot
    110 rem
    120 rem this implementation copyright (c) 2019, gordon henderson
    130 rem
    140 rem permission to use/abuse anywhere for any purpose granted, but
    150 rem it comes with no warranty whatsoever. good luck!
    160 rem
    165 rem bk conversion by litwr, 2020
    170 rem c$ = ".,'~=+:;[/<&?oxOX# "
    171 data ".", ",", "'", "~", "=", "+", ":", ";", "[", "/", "<", "&", "?", "o", "x", "O", "X", "#", " "
    172 mi% = 19%
    173 dim c$(mi%)
    174 gosub 530
    175 cls
    180 so% = 1%
    200 mx! = 4!
    210 ls! = -2.0!
    220 tp! = 1.25!
    230 xs! = 2.5!
    240 ys! = -2.5!
    250 w% = 38%
    260 h% = 21%
    270 sx! = xs! / w%
    280 sy! = ys! / h%
    290 poke &O177712,&O162
    300 for y% = 0% to h%
    310   cy! = y% * sy! + tp!
    320   for x% = 0% to w%
    330     cx! = x% * sx! + ls!
    340     zx! = 0!
    350     zy! = 0!
    360     cc% = 0%
    370     x2! = zx! * zx!
    380     y2! = zy! * zy!
    390     if cc% >= mi% then goto 465
    400     if (x2! + y2!) > mx! then goto 465
    410     t! = x2! - y2! + cx!
    420     zy! = 2! * zx! * zy! + cy!
    430     zx! = t!
    440     cc% = cc% + 1%
    450     goto 370
    460 rem    ? mid$(c$, cc% - so%, 1%);
    465     ? c$(cc%);
    470   next x%
    480   print
    490 next y%
    510 t = peek(&O177710)
    512 if t<0 then t=-t else t=65536-t
    514 print (t+65536)*64/3000*128/1000
    520 end
    530 restore
    540 for i% = 1% to mi%
    550 read c$(i%)
    560 next i%
    570 return
    [свернуть]
    Последний раз редактировалось gid; 25.09.2023 в 16:01.

  12. #99
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от gid Посмотреть сообщение
    Мне тоже стало интересно, и я запустил прогу в эмуляторе, на реальной БК-0010-01 надо придумывать способ, как загрузить прогу через магнитофонный вход, а я об этом вообще не задумывался ещё.
    Код из поста #32 в конфигурации БК-0010-01 на 3МГц выдал такое значение: 191.82660266666667, при этом счётчик таймера перешагнул через 0 и начал отсчёт заново.
    Затем, я заменил все переменные оперирующие целочисленными данными на целочисленные:
    Надо было брать код из поста #94 - там корректные тайминги гарантируются на интервале от 0 до более 6 минут. Всё кроме поков не менялось.

  13. #100
    Junior
    Регистрация
    11.12.2019
    Адрес
    г. Владимир
    Сообщений
    20
    Спасибо Благодарностей отдано 
    13
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Надо было брать код из поста #94 - там корректные тайминги гарантируются на интервале от 0 до более 6 минут. Всё кроме поков не менялось.
    Прогнал три версии программы и получил следующие результаты [эмулятор/реальная БК 0010.01 (Экситон)]:
    1) все переменные двойной точности (оригинальная программа) ==> 191.80 / 197.75
    2) все одинарной точности ==> 137.48 / 141.52
    3) целочисленные+одинарной точности ==> 130.75 / 132.59

    Предыдущая оценка ускорения на 41% неверная и базировалась на данных из поста #32, в котором время выполнения составило 231.00.

Страница 10 из 11 ПерваяПервая ... 67891011 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Видео о ASCII 2002
    от flydream в разделе Демо
    Ответов: 1
    Последнее: 22.05.2016, 10:26
  2. ASCII/ANSI-art
    от Mat1sha в разделе Творчество
    Ответов: 19
    Последнее: 18.01.2012, 18:11
  3. Bmp->ASCII
    от ALKO в разделе Софт
    Ответов: 8
    Последнее: 23.05.2011, 15:54
  4. ascii logo за 5 минут
    от elf/2 в разделе Утилиты
    Ответов: 0
    Последнее: 21.06.2010, 11:27
  5. ASCII'2008
    от Stingrey в разделе События
    Ответов: 118
    Последнее: 18.11.2008, 16:51

Ваши права

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