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

User Tag List

Страница 5 из 8 ПерваяПервая 12345678 ПоследняяПоследняя
Показано с 41 по 50 из 75

Тема: Почему BBC Basic так тормозит?

  1. #41

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А вот новости. Автор разоблачил правки от BlaireCas - оказывается в документации ясно прописано, что есть команда *ESC OFF, которая вопрос решает.
    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Покопался на сайте автора и обнаружил интересную вещь.
    Исходники бейсика для PDP - на ассемблере. Компилятор там свой собственный используется. Как-то поначалу не придал этому значения. Ну мало-ли мол пишут люди компилятор для асм-а, я и сам когда-то писал. Возможно все кто связывался с ассемблером хотели свой компилятор "с ништяками" и некоторые даже писали или улучшали имеющийся.
    Но .. тут вообщем этот компилятор, которым собираем бейсик, написан на .. этом-же бейсике! Прям на нем. В .exe-шник для винды как я понимаю встроен транслятор бейсика который выполняет программу бейсиковую которая собирает компилятор ассемблера которым компилируем бейсик которым собира.... так, стоп.
    Вообщем вот это поворот
    BBC Basic для истории мировых ИТ - это крутейшая вещь. Именно на нем был разработан самый массовый процессор современности ARM. Поэтому энтузиасты продолжают его использовать и на современных компиках. Современный BBC Basic естественно заметно расширен. Разных вариантов этого бейсика наделали столько, что уже вроде никто и не знает точных статусов этих вариантов.

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Одно из сообщений данной темы. Очень несложно делается например проверять "на каждую 256-ю строку". Пробовал - работает и ESC и тормоза можно сказать не добавляются на реальной УКНЦ.
    Почему не стал делать - а нужно что-ли? Бейсик ведь недоделан. Там нет скажем SIN(x) или записи плавучки с отрицательной экспонентой типа 2E-5. Вообщем бейсик-то недопортирован изначально.
    Его недоделанное состояние для PDP-11 объясняется тем, что поддержка этой платформы изначально вообще отсутствовола. Изначально были только TUBE-карты с акселлерированным 6502, с Z80, c 32016, 80186, и ARM. Были ещё какие-то малотиражки от третьих фирм с 6809 и возможно (не уверен) с 68000 - ни одной такой карты вроде до сегодняшнего дня не дошло. Карту с поддержкой базовой архитектуры PDP-11 (скорее даже без EIS) сделали уже только после 2010 на базе FPGA. Насколько мне известно, таких карт было сделано менее 50 и понятно что народ использовал скорее другие процы. Только в 2020 в проект карт на базе Raspberry Pi с софтверной эмуляцией процессоров добавили PDP-11. Понятно, что число юзеров скорее в районе 1-2 человек. Тем не менее удивительно, что PDP-11 поддерживается лучше, чем 68000. Что-то не срoслось у Acorn и Motorola.

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Ну и если уж на то пошло - надо бы и проверку на УКНЦ переделать и вообще обработку IO.
    Ибо на некоторых версиях RT-11 (на версиях с набором самопала как Хунта говорит) - этот бейсик вообще виснет при получении каких-то кодов (скажем при нажатии backspace у меня).
    Сейчас там проверка на УКНЦ сделана так:
    cmp @#&CA20,#&8080 (более привычное восьмиричн. cmp @#145040, #100200)
    Что это вообще? Что, так можно проверять что это УКНЦ? Имхо ерунда какая-то. Никто не знает как нормальным образом проверить что перед нами действительно УКНЦ?
    Спросил об этом CMP автора - странный там адрес. У меня тоже этот бейсик иногда виснет. Самое неприятное, что не смог запустить знаменитый ClockSp - а автор его как-то запустил https://www.youtube.com/watch?v=6wKWdPNwVWw - результат там интересный ВМ2@8MHz = 6502@0.6MHz. А некоторые товарищи, включая Хунту, недовольны данными по π-затвору Стыдно должно быть таким товарищам. IBM раздавила DEC в 1975, а виноват автор простой программки.
    EDIT. Поправил ссылку на видео.
    Цитата Сообщение от Alex_K Посмотреть сообщение
    Виснет на УКНЦ потому, что использует команды терминала VT-100. На УКНЦ обрабатываются только коды <Esc>[r, <Esc>[2h и <Esc>[2l. Причем обработка сделана так, что если после <Esc>[ не пришел символ 2, то далее тупо ожидается r. Потому нажимаем маленькую букву r, экран очистится и далее всё отвиснет.
    Странно сделан перевод на новую строку, обычно это <CR><LF>, а тут наоборот <LF><CR>, но это работает. При нажатии Backspace подаются коды <Esc>[D<Space><Esc>[D. А чтобы не зависеть от типа терминала надо подавать <010><Space><010>.
    Не все так просто. Иногда r не помогает. Пробовал патчить ClockSp, но ничего не получилось - виснет в самых неожиданных ситуациях.

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

    Цитата Сообщение от Hunta Посмотреть сообщение
    Судя по адресу - он лезет куда то в RMON. Но учитывая, что RMON может быть разных размеров, да и памяти, строго говоря, может быть и не 56 кб, а меньше.. Вот так и получаются "легендарные" программы и системы
    А Хунта ещё тут - помимо того ваша система ломает работу с таймером, она ещё и даёт юзеру существенно меньше памяти, чем штатная. Штатная позволяет высчитать 7268 знаков числа π, а ваша только 6812. Зря трудились.
    Последний раз редактировалось litwr; 06.09.2021 в 22:30.

  2. #42

    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    483
    Спасибо Благодарностей отдано 
    139
    Спасибо Благодарностей получено 
    391
    Поблагодарили
    146 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex_K Посмотреть сообщение
    Виснет на УКНЦ потому, что использует команды терминала VT-100.
    Просто на обычной УКНЦ бейсик у меня не определял машину как УКНЦ. (автор видимо практиковался на какой-то определенной сборке RT-11 и проверка на УКНЦ не прокатила на той что у меня запускается на железной машинке). Выбросил из кода эту проверку и стал работать backspace.


    Цитата Сообщение от litwr Посмотреть сообщение
    Самое неприятное, что не смог запустить знаменитый ClockSp
    Запускается. Правда на моей УКНЦ с моей RT-11 оно по причинам выше не те символы выдавало в терминал и вообщем кривило вывод. После хака вот что вышло на реальной технике.

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

    [свернуть]

    Среднее 0.95Mhz.
    Это якобы доказательство что 8-ми битка с 32кб памяти лучше что-ли? Ну подумаешь циклы быстрее крутит (неудивительно).

    Цитата Сообщение от litwr Посмотреть сообщение
    Автор разоблачил правки от BlaireCas
    Кстати раз переписываетесь с ним - можно спросить мол почему он использует вот такую конструкцию для перехода по таблице? (ADR это его ассемблер вроде превращает в MOV pc,dst и ADD #label-$,dst, навроде вычисление реального адреса в перемещаемом коде)
    Код:
    .CommandTable
    EQUW cmdAUTO-$
    EQUW cmdDELETE-$
    ...
    adr  CommandTable,r1	; Point to command address table 
    add  r0,r1		; Index into command table
    add  (r1),r1		; Calculate routine address
    jmp  (r1)		; Jump to command routine, (r5)=>current char
    не проще и быстрее будет такое? (если ему не надо сохранять регистр R1 на адресе перехода)
    Код:
    .CommandTable
    EQUW cmdAUTO
    EQUW cmdDELETE
    ...
    JMP	@CommandTable(R0)
    Последний раз редактировалось BlaireCas; 07.09.2021 в 09:29.

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

    litwr(08.09.2021)

  3. #43

    Регистрация
    19.04.2013
    Адрес
    г. Чебоксары
    Сообщений
    610
    Спасибо Благодарностей отдано 
    18
    Спасибо Благодарностей получено 
    175
    Поблагодарили
    135 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    не проще и быстрее будет такое?
    Проще и быстрее, но это неперемещаемый код, а тот - перемещаемый. Может автору была как раз важна перемещаемость, даже в ущерб производительности.

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

    litwr(08.09.2021)

  4. #44

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Просто на обычной УКНЦ бейсик у меня не определял машину как УКНЦ. (автор видимо практиковался на какой-то определенной сборке RT-11 и проверка на УКНЦ не прокатила на той что у меня запускается на железной машинке). Выбросил из кода эту проверку и стал работать backspace.
    А что конкретно посоветуете прописать в код, чтобы на УКНЦ все работало? Мне вообще непонятно, зачем автор проверяет, что это именно УКНЦ. Вроде УКНЦ - это вполне типовая PDP-11 машинка, что он такого особого от УКНЦ хочет?

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Запускается. Правда на моей УКНЦ с моей RT-11 оно по причинам выше не те символы выдавало в терминал и вообщем кривило вывод. После хака вот что вышло на реальной технике.

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

    [свернуть]

    Среднее 0.95Mhz.
    Благодарю Вас. Реально интересно, сам минут 20 пробовал запустить, но никак.

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Это якобы доказательство что 8-ми битка с 32кб памяти лучше что-ли? Ну подумаешь циклы быстрее крутит (неудивительно).
    Циклы же не пустые. Памяти может быть много на втором процессоре. И получается, что копеечный 6502 из 1975 в почти 9 раз быстрее ВМ2 - Хунте и некоторым такое не в корм. Бейсик наверное можно разогнать... Кстати, по результатам такого теста в Acorn поняли, что 32016 - это тормоз, его обгонял 6502 на 4 МГц. Поэтому там начали делать ARM.

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    Кстати раз переписываетесь с ним - можно спросить мол почему он использует вот такую конструкцию для перехода по таблице? (ADR это его ассемблер вроде превращает в MOV pc,dst и ADD #label-$,dst, навроде вычисление реального адреса в перемещаемом коде)
    Написал, но он человек занятый и на бейсик у него сейчас совсем мало времени.

  5. #45

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Хунте и некоторым такое не в корм
    Как ТС корёжит то Аж кюшать не может

  6. #46

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Как ТС корёжит то
    Вы бы так перед автором бейсика повыступали. На вычислении числа пи 6502 только в 3 раза быстрее ВМ2 без EIS на той же частоте, так что Вам бы в 3 раза уместнее было бы бейсик ругать.

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

  8. #47

    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,248
    Спасибо Благодарностей отдано 
    360
    Спасибо Благодарностей получено 
    638
    Поблагодарили
    414 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Мне вообще непонятно, зачем автор проверяет, что это именно УКНЦ. Вроде УКНЦ - это вполне типовая PDP-11 машинка, что он такого особого от УКНЦ хочет?
    У классических PDP-11 видеоконтроллера не предусмотрено. Есть регистры терминала по адресам 0177560-0177566. Обычно в качестве регистров терминала выступал последовательный порт. А к этому порту уже присоединялась различная аппаратура. Это мог быть и древний телетайп, и терминал VT-52, VT-100, у нас в СССР 15ИЭ-00-013. Терминалы для управления изображением на экране используют управляющие коды и Esc-последовательности. У VT-52 и VT-100 они разные, хотя VT-100 может эмулировать VT-52. В УКНЦ реализована поддержка совместимости с 15ИЭ-00-013 и VT-52. Но данные терминалы не поддерживали цвет, потому в УКНЦ свои Esc-последовательности переключения цвета символов.

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

    litwr(11.09.2021)

  9. #48

    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    600
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    231
    Поблагодарили
    123 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от BlaireCas Посмотреть сообщение
    не проще и быстрее будет такое? (если ему не надо сохранять регистр R1 на адресе перехода)
    Код:
    .CommandTable
    EQUW cmdAUTO
    EQUW cmdDELETE
    ...
    JMP	@CommandTable(R0)
    А на два кто умножать будет? А если в R0 нужно сохранить исходное значение?
    Но игнорирование индексно-косвенной адресации действительно выглядит странно. И вообще, самый компактный код для перехода по таблице давно известен. Вот он:
    Код:
    asl r0
    add r0, pc
    .word label0, label1, label2, ...

  10. #49

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,507
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    714
    Поблагодарили
    596 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Вы бы так перед автором бейсика повыступали. На вычислении числа пи 6502 только в 3 раза быстрее ВМ2 без EIS на той же частоте, так что Вам бы в 3 раза уместнее было бы бейсик ругать
    Продолжай продолжай, попкорна ещё много

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

    Цитата Сообщение от Sandro Посмотреть сообщение
    Вот он:
    Не пройдёт. После добавления R0*2 (там же индекс, да?) к PC новый PC будет указывать на слово, где хранится адрес-указатель на код, а не сам код.

  11. #50

    Регистрация
    06.02.2020
    Адрес
    г. Москва
    Сообщений
    483
    Спасибо Благодарностей отдано 
    139
    Спасибо Благодарностей получено 
    391
    Поблагодарили
    146 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    А на два кто умножать будет?
    Я просто пропустил в приведенном куске это умножение. В коде разумеется оно есть.
    Вот такой там код (был, я уже поменял на одну комманду заместо кучи, работает вроде). add r0,r0 комментировал не я, это уже кто-то другой видимо тестировал что быстрее сложение или сдвиг
    Код:
    .ExecByteCommand
    ;add  r0,r0		; Offset into command table
    asl  r0			; Offset into command table
    ;+Blaire why not just use @tbl(Rx)? also I've changed CommandTable from ADR-$ to ADR
    ; and do we need to set R1? maybe no
    	JMP	@CommandTable(R0)
    ;adr  CommandTable,r1	; Point to command address table
    ;add  r0,r1		; Index into command table
    ;add  (r1),r1		; Calculate routine address
    ;jmp  (r1)		; Jump to command routine, (r5)=>current char
    ;+Blaire
    Еще хотел поменять там формат чисел с плав.запятой.
    Вместо того что там в бейсике 1(или два)байт экспоненты + 4байта мантиссы на тот который у pdp-11 должен быть с одинарной точностью (два слова) 1бит знака + 8бит экспонента + 23бит мантисса (+1 скрытый бит мантиссы ибо нормализованы) и использовать fmul, fdiv, fadd, fsub которые в УКНЦ все-же сделаны пусть и программно.
    Но .. лень появилась внезапно
    Последний раз редактировалось BlaireCas; 08.09.2021 в 22:59.

Страница 5 из 8 ПерваяПервая 12345678 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 15
    Последнее: 09.09.2021, 14:27
  2. BBC Basic for PDP-11
    от zx_ в разделе БК-0010/0011
    Ответов: 3
    Последнее: 02.09.2020, 19:51

Ваши права

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