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

User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 21

Тема: Спектрум-бейсик, где почитать?

  1. #11
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,181
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    33 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    хорошо что нет конструкции ON VAR GOTO N1,N2

  2. #12
    Master
    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от null_device Посмотреть сообщение
    Прикол в том, что аргумент перехода на строку может ссылаться на строку с номером, которого нет. При этом будет выполнен переход к следующей ближайшей за ней.
    Да без проблем.

    Пошагово. Начинаем с пустого кэша.
    Переход на строку 100. Ячейка кэша пустая. Ищем строку, адрес заносим в ячейку кэша, соответствующую строке 100.
    Переход на строку 100. Ячейка кэша содержит адрес строки 100, проверяем номер - всё ок.
    Переход на строку 321. Ячейка кэша пустая. Ищем строку, находим строку 330, адрес заносим в ячейку кэша, соответствующую строке 321.
    Переход на строку 321. Ячейка кэша содержит адрес строки 330, проверяем номер - не совпадает. Ищем строку, находим строку 330, адрес заносим в ячейку кэша, соответствующую строке 321.

    То есть всё зашибись, просто при переходе на несуществующую строку работать будет "с обычной скоростью".
    Чтобы не засорять кэш можно не записывать в него адрес найденной строки, если её номер не совпадает с требуемым.

    Усложняем алгоритм...
    1. Вычислить номер ячейки кэша, прочитать из кэша адрес.
    2. Если номер строки по этому адресу меньше, а номер следующей строки больше или равен требуемому - берём следующую.
    3. Иначе - ищем строку с самого начала, но в кэш пишем адрес предыдущей. Для первой строки ничего не пишем.

    Пошагово. Начинаем с пустого кэша.
    Переход на строку 100. Ячейка кэша пустая. Ищем строку, адрес предыдущей (90) заносим в ячейку кэша, соответствующую строке 100.
    Переход на строку 100. Ячейка кэша содержит адрес строки 90, номер меньше, следующий равен - берём следующую.
    Переход на строку 321. Ячейка кэша пустая. Ищем строку, находим строку 330, адрес предыдущей (320) заносим в ячейку кэша, соответствующую строке 321.
    Переход на строку 321. Ячейка кэша содержит адрес строки 320, номер меньше, следующий больше - берём следующую.
    ...
    Переход на строку 1234. Ячейка кэша содержит адрес строки 2000, номер больше - ищем с начала, пишем в кэш предыдущую.
    Переход на строку 2345. Ячейка кэша содержит адрес строки 500, номер меньше, номер следующей тоже меньше - ищем с начала, пишем в кэш предыдущую.

    Вроде ничего не забыл.

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

    Цитата Сообщение от Shiny Посмотреть сообщение
    хорошо что нет конструкции ON VAR GOTO N1,N2
    Пофиг. Потому что в итоге, даже если N1 и N2 - выражения, всё в итоге сведётся к номеру строки, который будет обработан кэшем.

    Интересно, а как происходит переход в for ... next? По номеру строки или по адресу строки?
    Последний раз редактировалось Bolt; 26.02.2019 в 19:21.

  3. #13
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,181
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    33 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Интересно, а как происходит переход в for ... next? По номеру строки или по адресу строки?
    Если шибко интересует, то можно покопаться в дизассемблированном тексте с комментариями.
    Вангую, что вопрос снимется (:

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

    Цитата Сообщение от Bolt Посмотреть сообщение
    Пофиг. Потому что в итоге, даже если N1 и N2 - выражения
    не выражения, а номера строк.

  4. #14
    Guru Аватар для null_device
    Регистрация
    26.09.2009
    Адрес
    г. Красноярск
    Сообщений
    3,101
    Спасибо Благодарностей отдано 
    23
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    68 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Bolt, возникает вопрос: зачем вся эта эквилибристика с дублированием данных в кэш? Спектрум-бейсик и так довольно прожорлив в плане хранения данных.

    Если ТС, нужно вычислить конкретные значения строк в листинге полученной программы, эту узкоспециализированную задачу, можно решить без написания очередной надстройки на ЯВУ.
    Когда есть, но не знаешь где - это все равно, что нету.

  5. #15
    Master
    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ТС хочет сэкономить время на переходах ценой ещё бОльшего расхода памяти и некоторого количества эквилибристики. Почему бы не помочь человеку идеей?

  6. #16
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от null_device Посмотреть сообщение
    Bolt, возникает вопрос: зачем вся эта эквилибристика с дублированием данных в кэш? Спектрум-бейсик и так довольно прожорлив в плане хранения данных.
    Все гораздо прозаичней, у меня тут новодел спектрум-подобный на столе поселился. На Atmega32a с 128к SPI RAM, 256к извлекаемой флешки (иммитация дискеты) и экраном 480х320. Понимаете, SPI RAM не очень быстрая, поэтому закешировать что либо в памяти МК всегда рад. Там же не оригинальный бейсик, скорее некая разновидность 128к бейсика, поэтому есть немного свободы действий в реализации.

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

    Цитата Сообщение от null_device Посмотреть сообщение
    Чем плох такой вариант?
    Да как основной рабочий он и был с самого начала, это я уже чуть позже с кешем замудрил )) Потом, я совершенно не помню уже как работает оригинальный бейсик, поэтому засомневался и полез читать с помощью форумчан - как там все устроено.
    Последний раз редактировалось Dr.Potapov; 26.02.2019 в 21:47.

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

  8. #17
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,181
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    33 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Суть Бейсика в том, что не очень быстрый xD

  9. #18
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shiny Посмотреть сообщение
    Суть Бейсика в том, что не очень быстрый xD
    Микроконтроллеру все равно что разгребать - токены бейсика или опкод Z80 ) Будут с одинаковой скоростью работать. Была мысль сделать очередной эмуль Z80, но решил остановиться на бейсике.
    Последний раз редактировалось Dr.Potapov; 27.02.2019 в 07:09.

  10. #19
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    272
    Спасибо Благодарностей получено 
    286
    Поблагодарили
    214 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Dr.Potapov, а чего сразу спектрумский басик. я бы предложил бейсик с BBC микро. он шустрее и страшнее.
    С уважением,
    Jerri / Red Triangle.

  11. #20
    Member Аватар для Dr.Potapov
    Регистрация
    31.10.2006
    Адрес
    г. Воронеж
    Сообщений
    75
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    Dr.Potapov, а чего сразу спектрумский басик. я бы предложил бейсик с BBC микро. он шустрее и страшнее.
    Он действительно страшнее )) Я такой не осилю, атмега32 скорей всего тоже ))
    Да и разницы между
    LD A,10
    LD HL,32768
    LD (HL),A

    и
    LET A=10
    POKE 32768,A

    с точки зрения микроконтроллера нет, смысл плодить сущности поддерживая "ужасы" BBC BASIC (включая ассемблерные вставки, процедуры, функции, IF-THEN-ELSE и прочие навороты)? )) Спектрум бейсик по крайней мере мне понятен, вполне удобен и прост.
    Последний раз редактировалось Dr.Potapov; 27.02.2019 в 10:03.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Схема ZX-Спектрум совместимого компьютера "Бейсик"
    от Gryphon в разделе Несортированное железо
    Ответов: 9
    Последнее: 07.08.2021, 08:37
  2. Почему Спектрум-бейсик такой медленный?
    от mmxdmv в разделе ZX Концепции
    Ответов: 53
    Последнее: 07.07.2018, 19:39
  3. Ответов: 17
    Последнее: 18.06.2013, 17:10
  4. Где можно почитать про 16c ???
    от black_ninja в разделе Программирование
    Ответов: 32
    Последнее: 26.03.2008, 23:48
  5. Ответов: 10
    Последнее: 03.07.2007, 17:02

Ваши права

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