PDA

Просмотр полной версии : Почему компилированный Бейсик выполняется быстро?



vlad-kras
16.11.2022, 12:10
Берем программу на бейсике, компилируем и она ускоряется ... в несколько раз. А почему так сильно ускорается, в несколько раз? Часто пишут, что интерпретатору сначала надо проанализировать программу. Но он (наверное) программу, выполняет по строчкам, как разные источники пишут. То есть берет из строки по одной команде, анализирует что за команда и переводит в машинный код. И вот вопрос - неужели интерпретатор самую большую часть времени тратит просто на анализ текста, может еще какие технические причины есть для ускорения?

Например по операторам, в спектруме ключевые слова это же токены, а не строки букв. Значит надо проанализировать не всю строку до пробела, а всего 1 байт и понятно будет что за оператор - для ABS и CLS 1 байт вместо 3 букв, а для PAUSE 5 и RANDOMIZE 9 букв. И кроме того сразу можно сделать таблицу соответствия токен -- адрес его обработки, тогда переход к подпрограмме обработки оператора должен будет выполняться за время о(1), т.е. независимо от числа возможных токенов. Ну ладно, я не знаю как внутри обработка в ROM устроено, может даже не сделали таблицу и выполняют сравнение токенов по цепочке if 200 else if 201 else if 202 итд. Ну все равно, проверка менее 128 вариантов должна выполняться не очень долго.

Потом подумал, что еще другие моменты есть. Например, интерпретатор все время опрашивает клавиатуру на предмет нажатия BREAK, а компилированный код не опрашивает - или тоже опрашивает?
И при выполнении операторов GOTO адрес для строки перехода скорее всего неизвестен интерпретатору, поэтому он начинает анализировать каждую строку программы, выискивая нужную.

Какие еще мысли есть по поводу того, где интерпретатор тормозит, а компилированный бейсик ускоряется?

P.S.

Есть похожая тема
Почему Спектрум-бейсик такой медленный?
https://zx-pk.ru/threads/27831-pochemu-spektrum-bejsik-takoj-medlennyj.html

наиболее понятные объяснения в ответах 3,12,25,35,45,53

goodboy
16.11.2022, 12:38
берет из строки по одной команде, анализирует что за команда и переводит в машинный код.
скорее вызывает свои подпрограммы с полученными параметрами

Bedazzle
16.11.2022, 14:34
Какие еще мысли есть по поводу того, где интерпретатор тормозит, а компилированный бейсик ускоряется?

Ну, к примеру, простая команда в ассемблере - jp на нужный адрес выполняется мгновенно.

В бейсике пускай, будет goto 1000. Но... чтобы узнать, где находится строка, на которую требуется переход - нужно взять адрес начала программы из системных переменных, и в цикле пробежаться по тексту программы, разбирая номера строк, и адреса следующей строки.
Для не сильно большой программы чтобы найти номер 1000, может потребоваться перелопатить сотню строк.

andrews
16.11.2022, 15:06
И при выполнении операторов GOTO
если есть исходник интерпретатора, то все станет очевидным. Если нет - придется лопатить с дизассемблером и эмулятором. Компиляторы Бейсика аналогично. Оптимизаторы могуn быть разными.

null_device
16.11.2022, 17:13
vlad-kras, приколов много. Начиная от того, что в процессе выполнении программы работает куча подпрограмм интерпретатора. Анализатор операторов в строке, калькулятор работы с цифровыми значениями, обработчик поиска значения переменных (числовых, символьных, внутри массивов, циклов, ПП go sub и т.п.), подпрограмма печати на экране символов, обработчик ошибок в конце - концов.
Числовое значение, для оператора PAUSE может содержать, алгебраические выражения (сложение, вычитание и т.п.), так и логические операторы (and, or), которые должен "перемолоть" интерпретатор. Также числовой аргумент команды может быть вызов кода через USR.
А та же RANDOMIZE с числовым параметром, без, и USR - выполняется вполне по разному. Вот за эту гибкость и приходится платить не слишком большим быстродействием.

При компиляции, эта гибкость теряется т.к. операторы бейсика, заменяются вполне определенным набором ассемблерных "кубиков". Плюс, ограничения самих компиляторов - типа целочисленности, ограничения описателей переменных, массивов и фенкционала команд (иногда, до полной невозможности их использования).

Andrew771
19.11.2022, 00:01
Полностью поддерживаю null_device, универсализм убивает всё. Я с этим столкнулся, когда писал свой ZX Like Pascal. Компиляторы убивают универсализм по возможности, поэтому намного быстрее :)

vlad-kras
19.11.2022, 15:02
операторы бейсика, заменяются вполне определенным набором ассемблерных "кубиков". Плюс, ограничения самих компиляторов - типа целочисленности, ограничения описателей переменных, массивов и фенкционала команд (иногда, до полной невозможности их использования).

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

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

null_device
20.11.2022, 03:52
А невозможность использования команд на скорость влиять не должна - компилятор скажет, что синус нельзя использовать и на этом остановится. Но если программа есть в бейсике и компилируется нормально, значит она состоит из нормальных допустимых команд.

Это, как посмотреть. Дополнительный функционал, любой команды в компилляторе, это как минимум: трата памяти на хранение библиотеки с куском кода, ей соответствующий. И время на поиск нужной библиотеки. А уж вычисление, тех же алгебраических функций, далеко не самое быстрое занятие. Из-за чего, некоторыми даже используется не встроенный в Бейсик калькулятор и процедура печати на экран.

Barmaley_m
03.12.2022, 00:15
Берем программу на бейсике, компилируем и она ускоряется ... в несколько раз.
Да, это опьяняет - поначалу. Но всё равно, это ускорение - ничто по сравнению с тем, что можно получить, программируя на ассемблере.

А почему так сильно ускорается, в несколько раз? Часто пишут, что интерпретатору сначала надо проанализировать программу.
Да, надо проанализировать. Синтаксический анализ - очень непростая тема. Особенно, когда начинаешь думать, какие сложные варианты конструкций языка программирования могут встретиться, и их все интерпретатор должен правильно понять и обработать.

Но он (наверное) программу, выполняет по строчкам, как разные источники пишут. То есть берет из строки по одной команде, анализирует что за команда и переводит в машинный код.
По командам, если точнее. В одной строке могут встретиться несколько команд, разделенных двоеточием. Как только интерпретатор доходит до конца команды (последней в строке, или отделенной двоеточием от следующих команд) - то он ее выполняет. Потом переходит к следующей. Принципиальных отличий строк от команд два:
1) На строку можно перейти командой GOTO или GOSUB (исполнение продолжится с первой команды в строке, на которую переходит GOTO/GOSUB). На отдельную (не первую) команду в строке прямо перейти нельзя - нет таких команд. Хотя можно вернуться на вторую и последующие команды в строке с помощью RETURN.
2) Команда REM делает всё, что стоит в строке после нее, недостижимым для исполнения интерпретатором, и потому является последней в строке, где она встретилась.

Интерпретатор не переводит программу в машинный код. Он ее анализирует и, по мере анализа, исполняет действия, которые требуется. Например, встретилась команда BEEP - интерпретатор анализирует её параметры и вызывает подпрограмму в машинных кодах, которая издаёт звук. Встретилась команда DRAW - интерпретатор анализирует параметры и вызывает подпрограмму рисования линии в машинных кодах.

И вот вопрос - неужели интерпретатор самую большую часть времени тратит просто на анализ текста,
Да, это занимает львиную долю процессорного времени. Анализ текста программы - трудная задача. Большинство профессиональных программистов нашего времени не умеют ее решать эффективно и без ошибок. Учили когда-то в университете основы теории, но благополучно забыли и на практике не используют. Попробуй, ради интереса, написать на любом языке программирования, программу вычисления выражений, заданных формулами в текстовом виде. Сразу прочувствуешь всю глубину транса.

может еще какие технические причины есть для ускорения?
Да, есть и еще причины.

Во-первых, как уже говорили выше, для исполнения команд GOTO или GOSUB интерпретатору приходится сканировать весь текст программы, от ее начала, пока он не найдет нужную строку. В компилированной программе можно заранее (на этапе компиляции) рассчитать в памяти место программы, откуда надо продолжить исполнение. Кроме случая "косвенного перехода", когда параметром GOTO или GOSUB является не константа, а переменная или математическое выражение с переменными. Но последний случай не поддерживается большинством компиляторов бейсика. Его поддержка обошлась бы сложно и дорого (по времени исполнения).

Во-вторых, подпрограммы, с помощью которых выполняются конкретные действия (рисование линий, печать символов, выдача звука и т.д.) являются универсальными и потому неэффективными для отдельных частных случаев, где программирование на ассемблере могло бы в десятки и сотни раз увеличить быстродействие.

Наконец, не все подпрограммы действия в машинных кодах эффективны. В свое время я занимался переделкой Спектрум-бейсика, и удалось ускорить исполнение команды CIRCLE в разы, применив более эффективный алгоритм.

Например по операторам, в спектруме ключевые слова это же токены, а не строки букв. Значит надо проанализировать не всю строку до пробела, а всего 1 байт и понятно будет что за оператор - для ABS и CLS 1 байт вместо 3 букв, а для PAUSE 5 и RANDOMIZE 9 букв. И кроме того сразу можно сделать таблицу соответствия токен -- адрес его обработки, тогда переход к подпрограмме обработки оператора должен будет выполняться за время о(1), т.е. независимо от числа возможных токенов.
Токенизация строк - это очень важный момент, и если бы ее не было - то бейсик работал бы в разы медленнее. Большинство интерпретаторов бейсика используют токенизацию для внутреннего представления программы, даже те, где надо набивать операторы по буквам, и токенизации как бы не видно.

Но не токенизацией единой. Кроме самих команд, надо еще обрабатывать параметры, переводить в двоичную форму числа и вычислять выражения. Даже с числами в Спектрум-бейсике применяется трюк: внутреннее представление программы содержит числовые константы в предварительно интерпретированном, двоичном виде. Это внутреннее представление может отличаться от текстового. С этим связан хакерский трюк: реальные числа, с которыми работает программа, могут отличаться от отображаемых, если над внутренним представлением программы провести манипуляции. В программе может стоять команда RANDOMIZE USR 0, но при ее выполнении не произойдет сброс, как ожидается, а будет вызван машинный код совсем с другого адреса.

Но даже и предварительное преобразование числовых констант не решает все проблемы быстродействия. Для вычисления выражений все равно приходится использовать сложные процедуры, которые долго исполняются. А компилятор может один раз проверить синтаксис и преобразовать любое выражение в обратную польскую запись. Даже при сохранении затрат на собственно математические операции, это может в разы повысить быстродействие.

Ну ладно, я не знаю как внутри обработка в ROM устроено, может даже не сделали таблицу и выполняют сравнение токенов по цепочке if 200 else if 201 else if 202 итд.
Конечно, там сделали таблицу. Авторы бейсика, хоть и не боги, но вполне хорошие и опытные программисты уровня гораздо выше среднего (особенно в сравнении с нашим временем). У них можно многому поучиться. Для меня в свое время анализ интерпретатора Спектрум-бейсика был хорошей школой. Два добрых человека Ian Logan & Frank O'Hara провели полное дизассемблирование, анализ и комментирование Спектрум-бейсика, и издали результаты в виде книги. Там каждая команда разжевана, все идеи и алгоритмы расписаны. Очень рекомендую. Гугл в помощь. Был и русский перевод. "Ян логан, Френк о хара"

Потом подумал, что еще другие моменты есть. Например, интерпретатор все время опрашивает клавиатуру на предмет нажатия BREAK, а компилированный код не опрашивает - или тоже опрашивает?
Это от компилятора зависит. Большинство не опрашивают. Но такой опрос не занимает много процессорного времени, даже, если он есть.

vlad-kras
03.12.2022, 12:17
Для вычисления выражений все равно приходится использовать сложные процедуры, которые долго исполняются. А компилятор может один раз проверить синтаксис и преобразовать любое выражение в обратную польскую запись. Даже при сохранении затрат на собственно математические операции, это может в разы повысить быстродействие.
Спасибо за подробные ответы

Barmaley_m
05.12.2022, 23:49
Спасибо за хорошие отзывы. Хочу немного уточнить, сразу не все вспомнилось.

На отдельную (не первую) команду в строке прямо перейти нельзя - нет таких команд. Хотя можно вернуться на вторую и последующие команды в строке с помощью RETURN.
Не только RETURN, а еще NEXT и CONTINUE.

Да, есть и еще причины.
Еще одна причина - это поиск переменных. Бейсик по сути хранит базу данных всех переменных, с которыми работает программа. При каждом обращении к переменной происходит ее поиск по имени в этой базе. Уже забыл, какой там используется алгоритм, как бы не линейный поиск. Чем больше переменных, тем медленнее работает программа. И скорость ее работы зависит от того, какие дать имена переменным, которые часто используются.

goodboy
06.12.2022, 00:09
В компилированной программе можно заранее (на этапе компиляции) рассчитать в памяти место программы, откуда надо продолжить исполнение. Кроме случая "косвенного перехода", когда параметром GOTO или GOSUB является не константа, а переменная или математическое выражение с переменными. Но последний случай не поддерживается большинством компиляторов бейсика. Его поддержка обошлась бы сложно и дорого (по времени исполнения).
первый-же проверенный компилятор (от Hisoft1988г.) спокойно поддерживает такой приём.
https://pic.maxiol.com/thumbs2/1670274766.3645248197.test.png (https://pic.maxiol.com/?v=1670274766.3645248197.test.png&dp=2)

Lethargeek
06.12.2022, 13:59
Конечно, там сделали таблицу.
аж два уровня, и это еще до разбора выражений-параметров

собс-но вот, страница 84 -
http://www.primrosebank.net/computers/zxspectrum/docs/CompleteSpectrumROMDisassemblyThe.pdf

vlad-kras
31.10.2023, 21:44
Ну, к примеру, простая команда в ассемблере - jp на нужный адрес выполняется мгновенно.

В бейсике пускай, будет goto 1000. Но... чтобы узнать, где находится строка, на которую требуется переход - нужно взять адрес начала программы из системных переменных, и в цикле пробежаться по тексту программы, разбирая номера строк, и адреса следующей строки.
Для не сильно большой программы чтобы найти номер 1000, может потребоваться перелопатить сотню строк.

дополню, здесь аналогичные вопросы и аналогичные выводы о тормознутости бейсика
https://zx-pk.ru/threads/3548-operatory-bejsika-skolko-taktov.html?p=55863&viewfull=1#post55863

null_device
01.11.2023, 07:02
goodboy, Тут как бы, палка о двух концах. Быстродействие или полнота поддержки синтаксиса. Плюс, размер библиотек компилятора в памяти.

Barmaley_m
04.11.2023, 15:39
Кстати, раз уж мы тут "внутренности" бейсика обсуждаем - хочу поделиться найденной в нем ошибкой, о которой раньше публикаций не встречал.

А именно: можно без POKE, USR и прочих запрещенных приемов, заставить бейсик исполнять команды, стоящие за REM.

Ошибка происходит при попытке пропустить исполнение цикла FOR, если его условие сразу не выполнено. Например, при запуске следующей программы:
10 FOR i=1 TO 0
20 PRINT "loop"
30 REM hihi: NEXT i: PRINT "gotcha"
40 PRINT "end"
Будет напечатано:
gotcha
end

Также можно заставить бейсик ошибочно читать данные из команд DATA, стоящих за REM. Например:
10 READ a$: PRINT a$
20 REM aaa: DATA "gotcha"
30 DATA "ok"
При исполнении этой программы будет напечатано "gotcha".

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

Особые эффекты будут наблюдаться, если в интерпретируемых за REM командах встречаются числовые константы (как если бы было не DATA "gotcha", а DATA 1 в строке 20). Ведь при проверке синтаксиса интерпретатор внедряет во внутреннее представление программы двоичное представление чисел. А тут числа стоят за REM, и они не интерпретируются, и их двоичное представление не внедряется. Но при попытке исполнения таких команд интерпретатор ищет это представление. У меня программа из первого примера, когда я в команде PRINT поставил не "gotcha", а 1, интерпретатор надолго задумался и напечатал C Nonsense in BASIC. Не помню уже, какие там возможны варианты, и может ли наступить серьезный сбой.

Также в случае с FOR/NEXT, логика пропуска тела цикла все равно реализована неверно. Например:
10 GO TO 30
20 NEXT i
25 STOP
30 FOR i=1 TO 2
40 PRINT i
50 GO TO 20
При запуске этой программы, как и должно быть, будут напечатаны числе 1 и 2.

Однако, если в строке 30 записать 30 FOR i=1 to 0

То при запуске программы интерпретатор не сможет понять, что цикл оканчивается командой NEXT i в строке 20, и пропустить его. Будет выведено сообщение I FOR without NEXT, 30:1.

На мой взгляд, из-за нелинейности хода исполнения бейсик-программы, отследить, где заканчивается тот или иной цикл, очень сложно. Авторам следовало бы просто убрать функцию пропуска тела цикла из интерпретатора, чтобы не морочить себе голову. Тем более, что в других диалектах бейсика тоже не делается попыток пропустить цикл.

null_device
04.11.2023, 22:48
Barmaley_m, тут в чистом виде - не баг, а фича. :)
Вообще, хорошим тоном считается не задавать значения параметров цикла через переменные (чтобы тело программы вложенное в цикл выполнялось хотя бы раз, хотя, непонятно зачем он вообще тогда нужен).
Как и не рекомендуется использовать выход по условию (IF...THEN) из тела цикла.

Одной из особенностей переменных в циклах, командой NEXT n, можно продолжить его выполнение при выходе из середины тела (т.е. команд NEXT n) может быть больше одной.

SfS
14.11.2023, 12:17
Эх, поумничать хочу))

Я, с высоты теперешнего опыта, понимаю, что Спектрум-бейсик, очень неэффективен.

При создании переменных и строк там огромные куски памяти (по меркам спека) двигаются. Там же стековая организация. Реализация кучи была бы куда более быстрой. По памяти плюс-минус тоже.
Алгоритмы вывода на экран линий и окружностей - тоже совсем не быстрые.
Числа с плавающей запятой - вообще крайне медленно реализованы.
Поиск строки перебором при переходе - это жесть.
И так далее и тому подобное.

Я не хочу нисколько умалять заслуг создателей спектрум бейсика. У них куда хуже условия были для работы, чем у меня. И технически. И сроки. И не было тогда такого обилия информации по тому, "как писать языки" и "как организовывать системы".

null_device
14.11.2023, 13:21
SfS, поиск номера строки, даже перебором их, реализован вполне быстро (прибавив к адресу текущей строки, ее длину, находится номер следующей строки и так от строки к строке, до нужной).

Памяти, в спектруме, не так чтобы много. Стек, вполне приемлем по многим критериям оптимального использования свободного пространства.

SfS
14.11.2023, 16:11
SfS, поиск номера строки, даже перебором их, реализован вполне быстро (прибавив к адресу текущей строки, ее длину, находится номер следующей строки и так от строки к строке, до нужной).

Памяти, в спектруме, не так чтобы много. Стек, вполне приемлем по многим критериям оптимального использования свободного пространства.

Оно все "по отдельности" вполне. А все вместе существенно медленно работает.

Нет, для задач обучения вполне. Но для игр не вполне.
Есть же всякие мега бета Бейсики. И там многие вещи, в основном графика, куда быстрее.

null_device
14.11.2023, 18:25
SfS, так спектрум изначально и создавался как обучающий "домашний" ПеКа. Разве, нет?
А игровой платформой, он стал скорее, вопреки. ;)

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

Диалекты ЯВУ для спектрума, как и компиляторы - огромных размеров костыль. Да, расширяют функционал. Да, дают прирост в скорости выполнения программы. Но, как правило, все это ценой, сжирания почти всей доступной памяти.

SfS
15.11.2023, 06:14
SfS, так спектрум изначально и создавался как обучающий "домашний" ПеКа. Разве, нет?


Он создавался как "бытовой ПК" с низкой стоимостью. Для того времени - вполне нормальный.

Но это никакого отношения к архитектуре ПО не имеет. Просто, как я понимаю, ПО писалось в сжатые сроки по принципу "херак-херак и в продакшн".

Изначальной проработки архитектуры ПО, позволяющей подключать например новые устройства - вообще не было. Хотя новые устройства расширения предполагались изначально.
А как бы помогла возможность без извращений, например, добавлять новые команды в бейсик. Появилось новое устройство - бамс, добавило свою команду со своим обработчиком. Всё. Не надо перехватывать адреса обработчика ошибок и писать костыль.
Или стандартизированное API для вызова подпрограмм ПЗУ - как его не хватало.
Но вместо этого приходилось наворачивать костыли типа "а вот по такому адресу есть такая подпрограмма, надо сбросить эти флаги, выставить вот эти, в регистры DE надо записать нуль, а в DE' надо записать FF, иначе оно не работает" и после этих манипуляций вызывайте.

Следствие этого - ошибки не исправлялись никогда практически (например, в "калькуляторе" их немало). Ибо Клайв очканул, что будет "несовместимость".

Другое следствие - миллион велосипедов, чтобы обойти ограничения бейсика. Наверное каждый писал свой ПРИНТ и свой ИНПУТ.
А ведь такое гениальное решение, как аналог sprintf() в языке C позволило бы избавиться от кучи разных "принтов". Точнее, упростить их до уровня "вывод символа".

В некоторых местах - вообще ни логики ни смысла. Например, если мы рисуем круг или линию, часть которой выходит за экран - то "Out of Range". А ПОЧЕМУ?!
Что мешает нарисовать часть линии, которая видна? Безо всяких ошибок? В чём именно ОШИБКА, если часть круга вылазит за экран?

Об ошибках бейсика. Нет вообще средств их перехвата и обработки. Скажем, бабах и деление на нуль. И всё. Никак не обработать средствами только бейсика.

В калькуляторе вообще не должно быть "ошибок" при операции над числами по идее. Если число сильно велико по модулю - то просто должно возвращаться значение "бесконечность". Если пытаются сложить число и строку - то правила наподобие тех, как в javascript. Но не генерить на каждый чих "Error".
Да и код попроще был бы.

Недаром, всё это вошло потом в мега- бета- бейсики. Ибо очень надо было многим.


В общем, с высоты теперешнего опыта (более четверти века микроконтроллеров и линукс-систем) я понимаю, как примитивно и неказисто выглядит бейсик спектурма. И дело не в том, что "памяти мало, а проц на 3.5мгц", а в том, что делалось быстро и лишь бы сделать. Увы, это так.

CodeMaster
15.11.2023, 08:06
делалось быстро и лишь бы сделать. Увы, это так.
Есть примеры "правильных" реализаций ПО бытовых компьтеров?

Barmaley_m
15.11.2023, 23:18
Я, с высоты теперешнего опыта, понимаю, что Спектрум-бейсик, очень неэффективен.
Где-то неэффекттивен, но улучшения предлагать надо с осторожностью. Вот я как-то думал, с высоты опыта, что могу улучшить кассетный формат без потери его устойчивости к искажениям сигнала. Казалось, что вся теория была "за". Однако практика показала, что формат FM по каким-то неведомым мне пока причинам обладает исключительной стойкостью к искажениям, достичь которой другим способом не удалось. И действительно, сегодня подобное кодирование применяется в радио-стандарте LoRa, где важна не скорость, а дальность передачи.

И таких примеров много.

Реализация кучи была бы куда более быстрой.
Быстрой - до момента достижения критической фрагментации памяти.

Текущую реализацию можно улучшить. Но с кучами на 8-битных архитектурах надо осторожнее. На них в свое время применялись другие, хорошо забытые, трюки - например, Gap Buffer. По сути тот же стек, но 2шт. Можно сделать и больше стеков, динамически их уплотнять и разуплотнять и т.д. В общем, не кучей единой, особенно, когда памяти мало. А еще все эти красивые вещи надо разработать на ассемблере и уместить в 16К ПЗУ.

Алгоритмы вывода на экран линий и окружностей - тоже совсем не быстрые.
Тут да, вероятнее всего, сказывается отсутствие интернета, соответствующей литературы, или банально времени у авторов.

Я не хочу нисколько умалять заслуг создателей спектрум бейсика. У них куда хуже условия были для работы, чем у меня. И технически. И сроки. И не было тогда такого обилия информации по тому, "как писать языки" и "как организовывать системы".
Да. И при всем при этом они создали вполне неплохой бейсик. Они смогли. А мы не смогли, хотя и литературы валом, и знаний, и опыта. Мне приходит иногда идея: "А не запилить ли бейсик на современных технологиях для Спектрума?" Но дальше идеи дело не идет. А ты бы хотел запилить хороший, правильный бейсик?

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


Изначальной проработки архитектуры ПО, позволяющей подключать например новые устройства - вообще не было.
Кое-какая проработка была, например, нереализованные команды MOVE, ERASE, CAT, FORMAT, и едва реализованная OPEN#. Тут причина только в том, что времени не хватило. Где-то пробегало даже интервью, где Синклер или разработчики его бейсика прямо говорили, почему не закончили подсистему ввода-вывода. Как есть - так есть.

А как бы помогла возможность без извращений, например, добавлять новые команды в бейсик. Появилось новое устройство - бамс, добавило свою команду со своим обработчиком. Всё. Не надо перехватывать адреса обработчика ошибок и писать костыль.
Перехват обработчика - не такой уж и костыль. Если имеешь книгу Логана и О-Хары - то написать обработчик, добавляющий в бейсик новые команды, не так уж и сложно. С API было бы не проще, разве что только "стандартнее". Я как-то развлекался добавлением в бейсик новых команд, внося изменения в ПЗУ. Удалось органично встроиться в соответствующие процедуры, но каких-то больших преимуществ, по сравнению с написанием обрабочика, этот способ не имеет.

Более того, расширяемость некоторых библиотек на том и построена, что следует добавить в обработчик неизвестных библиотеке ситуаций свою часть для добавления функционала. Далеко ходить не надо - оконная система Windows использует этот способ.

Или стандартизированное API для вызова подпрограмм ПЗУ - как его не хватало.
Не знаю, кому не хватало. Неизменность ПЗУ за все время жизни компьютера - чем не стандартизированное API? Вызывай когда хочешь и что хочешь, а не нравится - не вызывай, пиши своё. С другой стороны, любое API всегда ломается при переходе на новую версию - даже в тех проектах (напр. Windows), где обратная совместимость возведена в ранг высших ценностей.

Но вместо этого приходилось наворачивать костыли типа "а вот по такому адресу есть такая подпрограмма, надо сбросить эти флаги, выставить вот эти, в регистры DE надо записать нуль, а в DE' надо записать FF, иначе оно не работает" и после этих манипуляций вызывайте.
А в чем проблема выставить регистры? Параметры надо как-то передавать, и регистры - самый быстрый способ это сделать. Большинство подпрограмм ПЗУ (LOAD, SAVE, BEEP, PLOT, DRAW, калькулятор и мн. др.) были вполне себе изолированы и не требовали предстартовой подготовки.

Следствие этого - ошибки не исправлялись никогда практически (например, в "калькуляторе" их немало). Ибо Клайв очканул, что будет "несовместимость".
Не факт, что именно из-за этого. В Spectrum +2 и Spectrum-128 в прошивку было внесено немало изменений, и никто не очканул. Возможно, дело было просто в деньгах. Зачем вкладывать деньги в исправление ошибок, если эти ошибки незначительны по своим последствиям и не влияют на популярность продукта и его продажи?

Другое следствие - миллион велосипедов, чтобы обойти ограничения бейсика. Наверное каждый писал свой ПРИНТ и свой ИНПУТ.
А универсальный принт, одинаково полезный для всех, не сделаешь. Одному покажется, что в принте мало функций; другому покажется, что он медленно работает; третьему хочется перетереть системные переменные, а без них принт не работает. Писали своё либо тогда, когда имеющееся не подходило, либо просто для развития.

А ведь такое гениальное решение, как аналог sprintf() в языке C позволило бы избавиться от кучи разных "принтов".
Не позволило бы. Даже sprintf подходит не всегда и не всем, особенно, если нужно выжать последние крохи по быстродействию.

В некоторых местах - вообще ни логики ни смысла. Например, если мы рисуем круг или линию, часть которой выходит за экран - то "Out of Range". А ПОЧЕМУ?!
А потому, что идеология бейсика (не только на Спектруме) всегда была в том, чтобы останавливать программу при малейшей ошибке, а не продолжать ее выполнение, как к тому привыкли Сишники.

Кому-то это неудобно, зато обеспечивается полная проверка корректности программы во время исполнения. Я бы с удовольствием имел интерпретатор Си, который валится при любом Undefined Behavior. Для отладки и тестов бы использовал. Но такового нету.

Помню, что мои бейсик-программы тех времен были достаточно надежные, чтобы не вылетать по ошибкам. Неудобства доставляло только нажатие пользователем клавиши Break и ошибки ввода-вывода. Но для их перехвата были специальные средства. Кто хотел - тот имел.

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

Об ошибках бейсика. Нет вообще средств их перехвата и обработки.
Стандартных средств нет, но наколхозить свои было чрезвычайно легко, учитывая легкость перехвата RST 8. В журналах и других источниках была куча маленьких подпрограмм в кодах "ON ERROR GOTO", позволявшие обрабатывать ошибки. Но поверь, не нужно это было так уж сильно. Если программа написана надежно - в ней не будет возникать ошибок, она не будет падать. Не надо делить на нуль - и все будет в порядке. А написание обработчиков ошибок - что для новичков, что для профессионалов - трудная задача. Слишком многое надо предусматривать. И отлаживать программу с обработчиком ошибок тяжело. Вот зациклился твой обработчик - что делать? Жать ресет, а потом грузить все заново с кассеты? Такое себе удовольствие.

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

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

Не надо это. Я не встречал в серьезной литературе ни одного описания или реализации численного алгоритма, который бы полагался при нормальной работе всякие Inf и NaN.

Не всякая бесконечность равна другой. Это только на первый взгяд заманчиво вычесть из Inf 1000 и убедиться, что остается Inf. А если умножить ее на нуль? А если прибавить -Inf? Не все аспекты математической бесконечности удается реализовать с помощью значения "Inf". Поэтому на него и не полагаются.

Если при работе численного алгоритма возникают Inf, NaN, или просто очень большие числа - то это не означает ничего хорошего. Либо в реализации ошибка, либо недопустимые исходные данные. В таком случае, чем раньше ошибка будет обнаружена, а программа - остановлена, тем легче ее наладить. А не разбираться потом, на каком этапе вычислений произошло переполнение, и почему массив выходных данных заполнен NaN.

А отлаживать численные методы - поверь, трудная задача. Этому нельзя научиться по книжкам, обучающим просто программированию. Мне пришлось на опыте выработать ряд специальных приемов для такой отладки. Может быть, кто-то уже написал соответствующую книжку, но я таковых пока не встречал.

Если пытаются сложить число и строку - то правила наподобие тех, как в javascript.
Как раз с неделю назад смотрел видео с критикой различных языков программирования, там отдельный раздел был посвящен "интуитивным" правилам сложения различных несовместимых типов в Javascript. Как то некоммутативность такого сложения и неочевидность, почему получился тот или иной результат. На мой взгяд, такие вещи не способствуют обучению начинающих.

Недаром, всё это вошло потом в мега- бета- бейсики. Ибо очень надо было многим.
Или казалось, что надо. Я как-то не встречал больших и красивых проектов на этих бейсиках. Правда, не искал специально.

Большие и красивые проекты создавались на ассемблере. А там нет проблем с остановом программ по ошибке. Есть только проблемы с перепахиванием памяти и наступлении сбоев, которые потом трудно отследить. Благо только, что не было Undefined Behavior, а то бы многие программисты были доведены до белой горячки.

В общем, с высоты теперешнего опыта (более четверти века микроконтроллеров и линукс-систем) я понимаю, как примитивно и неказисто выглядит бейсик спектурма. И дело не в том, что "памяти мало, а проц на 3.5мгц", а в том, что делалось быстро и лишь бы сделать. Увы, это так.
Так, да не так. Во-первых, я привел выше возражения. Во-вторых, этот бейсик вполне неплохо работал. А в-третьих - что мешает сделать свой, хороший бейсик, с блекджеком и шл.?

SfS
17.11.2023, 00:36
Есть примеры "правильных" реализаций ПО бытовых компьтеров?

А бог его знает. Наверное есть где-то что-то лучше.
Я ж просто теоретезирую))

Высказываю то, что не нравится. И не более.

SfS
17.11.2023, 06:10
Да. И при всем при этом они создали вполне неплохой бейсик. Они смогли. А мы не смогли, хотя и литературы валом, и знаний, и опыта. Мне приходит иногда идея: "А не запилить ли бейсик на современных технологиях для Спектрума?" Но дальше идеи дело не идет. А ты бы хотел запилить хороший, правильный бейсик?



Идея такая приходила. Но нужен он разве кому-то? Чисто поиграться разве что.
А так.. Все программы - ориентированы на стандартный васик спектрума.
Прошивать в ПЗУ другой васик тоже мало кто будет. В эмуле если только погонять. Ну и на тех машинах, где можно вместо ПЗУ воткнуть ОЗУ и заблокировать его.

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


Неизменность ПЗУ за все время жизни компьютера - чем не стандартизированное API? Вызывай когда хочешь и что хочешь, а не нравится - не вызывай, пиши своё. С другой стороны, любое API всегда ломается при переходе на новую версию - даже в тех проектах (напр. Windows), где обратная совместимость возведена в ранг высших ценностей.


Так "неизменность ПЗУ" и стала таковой именно изза того, что не было API. И ошибки неисправимы - ПЗУ ведь менять нельзя.
Банальный пул системных вызовов решил бы эту проблему. Ну да что есть то есть.

Вот странно, что в UNIX основные API не меняются десятилетиями)) Что они делают не так?)

Правда, внутри ядра Линукс очень часто API меняется. Но со стороны пользовательского ПО - как гвоздями прибито. Большая часть ПО 25 лет назад написанного спокойно компилится и работает.

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



Ошибка в том, что поступившая от пользователя команда - нарисовать нечто за пределами экрана - не может быть исполнена. Классический отказ. Падать в случае его возникновения допустимо. Особенно учитывая роль бейсика как обучающего языка. В мои времена все бейсики вели себя так.

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


Допустимо, но очень резко ограничивает возможности васика. И в чём обучение? В том, что нельзя две трети круга нарисовать, если треть на экране не поместилась? За то в DRAW передать всякую чушь и получить на экране красивый узор - это прям необходимость первая))

Мы говорим про ВАСИК и пользователя, пишушего на нём, без машкода. "Наколхозить" можно всё, что угодно. Но то, кто "обучается на васике" явно врядли способен "наколхозить" нужное и быстро.

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



Скажу тебе как программист, использующий и реализующий различные численные методы в повседневной работе.

Не надо это. Я не встречал в серьезной литературе ни одного описания или реализации численного алгоритма, который бы полагался при нормальной работе всякие Inf и NaN.

Не всякая бесконечность равна другой. Это только на первый взгяд заманчиво вычесть из Inf 1000 и убедиться, что остается Inf. А если умножить ее на нуль? А если прибавить -Inf? Не все аспекты математической бесконечности удается реализовать с помощью значения "Inf". Поэтому на него и не полагаются.

Если при работе численного алгоритма возникают Inf, NaN, или просто очень большие числа - то это не означает ничего хорошего. Либо в реализации ошибка, либо недопустимые исходные данные. В таком случае, чем раньше ошибка будет обнаружена, а программа - остановлена, тем легче ее наладить. А не разбираться потом, на каком этапе вычислений произошло переполнение, и почему массив выходных данных заполнен NaN.


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

Впрочем, это то же самое, что и ONERROR. Но и ONERROR отсутствует.

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


Г
Как раз с неделю назад смотрел видео с критикой различных языков программирования, там отдельный раздел был посвящен "интуитивным" правилам сложения различных несовместимых типов в Javascript. Как то некоммутативность такого сложения и неочевидность, почему получился тот или иной результат. На мой взгяд, такие вещи не способствуют обучению начинающих.


Если смотреть с точки зрения обучения - то я соглашусь. Явные функции преобразования удобнее. Но это у же скорее всё "частности".

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


Или казалось, что надо. Я как-то не встречал больших и красивых проектов на этих бейсиках. Правда, не искал специально.

Ну так и на стандартном васике их какбы особо нет. Всё с асм-вставками.


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

Я не предлагал "а давайте запилим". Смысла не вижу сегодня это делать. Я просто описал, что лично мне не нравится в ZX васике.

goodboy
17.11.2023, 10:26
что мешает сделать свой, хороший бейсик, с блекджеком и шл.?
такое давно существует https://zxdesign.itch.io/opense

SfS
17.11.2023, 11:06
такое давно существует https://zxdesign.itch.io/opense

Посмотрел. Долго его писали. И забили все 16К под завязку! Молодцы.
Завидую)

Barmaley_m
18.11.2023, 00:23
Так "неизменность ПЗУ" и стала таковой именно изза того, что не было API. И ошибки неисправимы - ПЗУ ведь менять нельзя.
А мне, повторяю, кажется, что дело в деньгах. Зачем тратить деньги на зарплату программистов и пилить новое ПЗУ, если старое работает, и все довольны? Лучшее - враг хорошего.

Сколько-нибудь существенного улучшения бейсика добиться было невозможно. Бейсик-128 тому хороший пример. Когда захотели - то запилили еще 16К кода в ПЗУ. И часть старого поменяли, наплевав на несовместимость. А что улучшилось от этого? Если приходилось программировать на бейсике, имея 128й - то я предпочитал набрать usr0 и работать со старым бейсиком. Он был и удобнее, и надежнее, и новые функции 128го бейсика того не стоили.

А что ошибки "неисправимы" - то их там было кот наплакал. Не было из-за них критичного нарушения функционала. Находили их по большей части энтузиасты, вроде Яна Логана и О-Хары. Простому человеку на них наткнуться было очень маловероятно. В современных продуктах ошибки такого уровня могут быть известны, но никогда не исправляться. Даже если идет постоянная разработка новых версий, и обратная совместимость не важна. Потому, что есть более приоритетные задачи. Например, более серьезные ошибки или добавление функционала.

Банальный пул системных вызовов решил бы эту проблему. Ну да что есть то есть.
Я думаю, не решил бы. Всегда нашелся бы какой-нибудь умник, вызывающий напрямую какие-то процедуры, не вошедшие в "пул системных вызовов". Ну или пул менялся бы от версии к версии. Подобные меры способствуют совместимости новых версий библиотек со старыми, но не решают эту проблему полностью.

Вот странно, что в UNIX основные API не меняются десятилетиями)) Что они делают не так?)
А толку от этого? Можно ли взять бинарник со старого Linux с совместимой архитектурой процессора, и запустить его на новой версии ОС? У Линукса проблемы совместимости старого софта с новыми версиями ОС огромные. Как там у коммерческих UNIX - не знаю, может, ты в курсе?

А под линуксом - бинарники не запускаются, а собирать проекты заново из исходников - длительное, требующее высокой квалификации и опыта, и рискованное дело. Не всегда удаётся. То одна ошибка компиляции, то другая. То одна библиотека не подходит, то другая. То в компиляторе что-то поменялось.

Допустимо, но очень резко ограничивает возможности васика.
"Очень резко" - это как? Бейсик что, перестает от этого быть полным по Тьюрингу? Если программа написана без ошибок - то она не вызовет отказ и останов. В этом и цель программирования. Написать программу, которая решает некоторую задачу и при этом не сбивается.

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

В том, что нельзя две трети круга нарисовать, если треть на экране не поместилась?
Я понимаю, тебе очень не хватало клиппинга графики. Сочувствую.

А мне вот приходилось работать с другими бейсиками, где команды CIRCLE вообще не было. И знаний не хватало сделать свою реализацию на том же бейсике. Ну или тормозно это было. И ничего. Все равно программирование доставляло массу удовольствия и развития. Можно было реализовать массу других проектов. И без кругов (тем более - обрезанных) рисовалась прекрасная графика на экране.

Использовал даже бейсики, где вообще графики не было. РК-86 и "Агат". На последнем была некоторая графика... CIRCLE не было, но не это было основной проблемой. Основной было то, что в графическом режиме не было вывода текста! Нарисуешь, к примеру, график функции - а чем подписать оси?

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

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

Перехват ошибок штатно имеется в некоторых бейсиках, например, бейсик-Агат (ONERR GOTO). Я стал играться с этим далеко не на первом году своего знакомства с бейсиком. И к тому времени я уже был в состоянии находить и использовать полезные подпрограммы в маш. кодах.

Речь идёт о том, чтобы пользователь мог обработать ошибку.
Не понимаю, зачем тебе все время хочется заниматься обработкой ошибок? Это же трудно и громоздко, и не способствует достижению основных целей программы, которую ты взялся писать.

Меня тема обработки ошибок интересует только как раздражитель. Как необходимое зло, которым приходится заниматься. Но, если можно этого избежать - то предпочитаю избежать. Особенно, если пишу программу-прототип для внутреннего применения - тогда лучше, чтобы она исполнялась на таком же чувствительном интерпретаторе, как бейсик, чтобы при первых признаках неполадок останавливалась. Тогда ее легче отлаживать.

Получилось у него бесконечность - так он может, например, вывести сообщение, что заданы неверные параметры и предложить их поменять,
Это же лишние трудозатраты. Проверить результат на выход за пределы допустимого диапазона. Вывести сообщение, предложить что-то поменять. Когда ты начинаешь писать и отлаживать какой-нибудь вычислительный алгоритм - то такая деятельность только отвлекает и повышает затраты времени и сил. Их лучше тратить на сам алгоритм. А обработкой ошибок пусть лучше занимается интерпретатор. Его задача - обнаружить сбой на возможно ранней стадии. И остановить программу, облегчая тем самым ее отладку.

А проверять лучше не результаты - они не всегда будут явно ошибочными. Лучше проверять исходные данные на допустимый диапазон.

И опять же, в предложенном тобой решении неверные (Inf/NaN) промежуточные результаты идут куда-то дальше по программе, которая к этому не готова и может забрести в страшные дебри. И отследить, где возник первый сбой, становится гораздо труднее. До результатов можно и вовсе не добраться. Какой-нибудь итерационный алгоритм может вообще зациклиться.

Не знаю, какие ты писал и налаживал вычислительные алгоритмы, что тебе оказалась предпочтительной такая логика? Я на бейсике писал, в числе прочего, численное интегрирование, интерполяцию, метод Гаусса, приближение методом наименьших квадратов... У нас целый курс лабораборок по численным методам на бейсике был. Никогда не было такого, чтобы огромной величины (на грани переполнения) числа возникали там при нормальной работе. Никогда не получал сообщения об ошибке при переполнении. Ошибки были другие. А из какого опыта берутся твои предпочтения?

Ну так и на стандартном васике их какбы особо нет. Всё с асм-вставками.
На стандартном есть. Игры есть, даже динамические ("Breakout", "Ground force zero", "Dictator"). Всякие гороскопы, нумерология и др.

SfS
18.11.2023, 16:49
Я думаю, не решил бы. Всегда нашелся бы какой-нибудь умник, вызывающий напрямую какие-то процедуры, не вошедшие в "пул системных вызовов". Ну или пул менялся бы от версии к версии. Подобные меры способствуют совместимости новых версий библиотек со старыми, но не решают эту проблему полностью.

Если "умник" пишет задницей, а не через стандартное API - это проблемы "умника")) Мне так кажется. Впрочем в ТО время про API не очень часто задумывались.
Сейчас тоже есть масса "умников" (даже в больших компаниях), которые пишут через "херак-херак и в продакшн". А потом ловят кайф от того, что в продакшне задница.
Так допустимо ( и даже нужно иногда для скорости) делать в макетной версии "для себя". Но если уж ПО пишется "на долгую жизнь в большом мире" - то обязательно следовать рекомендациям.




А толку от этого? Можно ли взять бинарник со старого Linux с совместимой архитектурой процессора, и запустить его на новой версии ОС? У Линукса проблемы совместимости старого софта с новыми версиями ОС огромные. Как там у коммерческих UNIX - не знаю, может, ты в курсе?

А под линуксом - бинарники не запускаются, а собирать проекты заново из исходников - длительное, требующее высокой квалификации и опыта, и рискованное дело. Не всегда удаётся. То одна ошибка компиляции, то другая. То одна библиотека не подходит, то другая. То в компиляторе что-то поменялось.


Да, можно. Как пример, программа eagle для разводки печатных плат. 2008 года выпуска. Написана ещё под х32 архитектуру.



eagle: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.4, stripped


Сейчас 2023 год. 15 лет прошло. Спокойно работает под линукс х64 у меня на компе этот самый бинарник.

Уже сменились десятки, если не сотни версий ядра и библиотек.
Никаких виртуалок, никаких плясок с бубном. Просто запускаешь и работает. Как и в 2008м.
Так что слухи о том, что "под линуксом не запускаются бинарники" - сильно преувеличены.

goodboy
18.11.2023, 18:11
Если "умник" пишет задницей, а не через стандартное API - это проблемы "умника")) Мне так кажется. Впрочем в ТО время про API не очень часто задумывались.
приведу к примеру MSX.
там API в основном использовали только японские фирмы, европейцы в играх напрямую лезли сами в порты.
потому-что это быстрее.
тут приходиться выбирать стиль программирования.
правильное как правило выходит тормозным.

Barmaley_m
18.11.2023, 20:58
там API в основном использовали только японские фирмы, европейцы в играх напрямую лезли сами в порты.
потому-что это быстрее.
Вот, кстати, да. На Спеке тоже есть хороший пример - точка входа TR-DOS #3D13. Де-факто стала стандартным API TR-DOS. В конце 90х - начале 2000х начали появляться разные IDE- и SD-Card-интерфейсы. И программы, использовавшие точку #3D13, без изменений продолжали работать.

Но в середине 90х никто не думал о том, что когда-нибудь появится другое железо, которое будет доступно через #3D13. В среде спектрумистов было престижно лезть в порты контроллера дисковода напрямую. Это давало доступ к некоторым функциям контроллера: форматирование, чтение и анализ дорожек. С прямым доступом можно было читать/писать диски в формате MS-DOS и других нестандартных форматах на 800К против стандартных 640К. Прямой доступ давал улучшение производительности диска, более точный контроль над ошибками. Всякие программы форматирования и восстановления дисков (DCU, ADS, тысячи их), IS-DOS, лезли в порты напрямую. Я тоже в своих проектах так делал. Так делал и ASC в своем ASC Sound Master и других проектах. Так делали знаменитые создатели Demo - группа Code Busters, белорусские Dream Makers, Rush и др.

Но все эти проекты оказались непортируемы на более современные носители - IDE-винчестеры и SD-карты.

тут приходиться выбирать стиль программирования.
правильное как правило выходит тормозным.
Да, полностью соглашусь.

Есть и противоположный пример, где все строго следовали API - CP/M. API там было весьма скудным, но достаточным. А зоопарк железа был огромным, так что соблазна лазить в порты напрямую ни у кого не возникало. Все понимали, что это сделает программу непортируемой на другие CP/M-машины. Конечно, какие-то аппаратно-зависимые проекты под CP/M где-то были. Но они не распространялись за пределы узкого круга железа. А те проекты, которые распространились повсеместно - они все строго следовали API.

Среди наследия CP/M - огромное число профессионального софта, включая редакторы, файловые утилиты, хорошие ассемблеры, дизассемблеры компоновщики, бейсики, компиляторы Фортрана, Паскаля, Си. Создатели таких проектов - Microsoft, Digital Research, Borland. Были и архиваторы, были текстовые игры, и вообще тысячи всего.

Но не было графики. Не было демок и игр, выжимающих максимум из железа. Не было стандартного доступа к памяти выше 64К (разве только как RAM-Disk).

goodboy
18.11.2023, 21:44
Но все эти проекты оказались непортируемы на более современные носители - IDE-винчестеры и SD-карты.
1 тут ты ошибаешься, в divIDE/MMC полная эмуляция давно существует.
2 стандартная функция #05,#3D13 спокойно прочитает сектор любой длины
3 проблемы с прямым доступом к портам возникли ещё в 90х (когда версию trdos 5.01 сменила 5.03)
в ранних программах (типа ADS) была проверка на версию и корректировка адресов вызова процедур

LW
19.11.2023, 00:07
чуток дополню
в последних прошивках ПрофПЗУ скорпиона также присутствует "эмуляция" вг93 и загрузчики использующие точку входа #3d2f/#3d96 вполне себе прекрасно работают
...ну по крайней мере в большинстве случаев

SfS
20.11.2023, 07:16
Вот, кстати, да. На Спеке тоже есть хороший пример - точка входа TR-DOS #3D13. Де-факто стала стандартным API TR-DOS. В конце 90х - начале 2000х начали появляться разные IDE- и SD-Card-интерфейсы. И программы, использовавшие точку #3D13, без изменений продолжали работать.

Но в середине 90х никто не думал о том, что когда-нибудь появится другое железо, которое будет доступно через #3D13. В среде спектрумистов было престижно лезть в порты контроллера дисковода напрямую. Это давало доступ к некоторым функциям контроллера: форматирование, чтение и анализ дорожек. С прямым доступом можно было читать/писать диски в формате MS-DOS и других нестандартных форматах на 800К против стандартных 640К. Прямой доступ давал улучшение производительности диска, более точный контроль над ошибками. Всякие программы форматирования и восстановления дисков (DCU, ADS, тысячи их), IS-DOS, лезли в порты напрямую. Я тоже в своих проектах так делал. Так делал и ASC в своем ASC Sound Master и других проектах. Так делали знаменитые создатели Demo - группа Code Busters, белорусские Dream Makers, Rush и др.


Точка входа TR-DOS #3D13 не содержала всех тех функций "форматирование, чтение и анализ дорожек" и прочих. То есть налицо недостаток функционала API.
Если бы всё это было - то особо никто бы и не лазил "напрямую в регистры".
Тем более, что никакого выигрыша в скорости в данном случае это не даёт. Просто обход недостатков стандатного ПЗУ.

Собственно, любой программист - хоть игрушек, хоть системного ПО - так или иначе создаёт набор библиотек с нужным ему API.
Все эти "игровые движки" - тоже по сути готовые модули со своим API.

Сейчас создателям ПО и в голову не придёт "лезть напрямую в регистры" видяхи или звуковухи. За исключением драйверописателей.

У спектрума видеопамять была "константой". Потому в неё безбоязненно лазили напрямую. Плюс скорость. В вот если был десяток видюшек, да разных... То фиг бы там куда лазали помимо API.

andrews
20.11.2023, 10:02
То одна библиотека не подходит, то другая. То в компиляторе что-то поменялось.
на кросс-системах с колоссальными ресурсами памяти и быстродействия это вообще не проблема! Достаточно однообразно верифицировать версии софта и железа и перестать загонять юзера в нужный тебе трек. Вот эта чехарда с версиями винды и переходом на 64 бит 99% юзеров не нужна! А кому она нужна? Только тому, кто зарабатывает деньги прежде всего на железе.

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


Сейчас создателям ПО и в голову не придёт "лезть напрямую в регистры" видяхи или звуковухи. За исключением драйверописателей
ну почему же? Для коммерческого софта чем непонятней непосвященному код - тем лучше. А в России это еще и способ сохранить на годы вперед высокооплачиваемое рабочее место ( так было в телефонных компаниях, где мне доводилось работать). А регистры, если они конечно правильно задокументированы позволяют работать и непосвященным новичкам с железом компании. И ассемблер, кстати тоже является "великим уравнителем" всех программистов.

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


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

ivagor
20.11.2023, 10:44
Границу на MSX по использованию BIOS / прямому обращению к портам нельзя четко провести между японскими и европейскими программистами. BIOS использовали в первые годы (причем даже тогда не все), когда для MSX писали практически только японцы. Игрушки были сравнительно простые и быстродействия хватало. Когда подключились европейцы, то они в основном портировали игры со спека, и не особо заморачивались использованием возможностей msx (спрайты, тайлы). Там в основном надо было побыстрее пересылать фрагменты изображения в видеопамять, как на спеке и мимо BIOS выходило явно быстрее. Но в то время и японцы стали все больше напрямую. А если взять например Konami, то они хотя и японцы, но не видел у них ни одной "корректной" игры, использующей только BIOS, всегда лезли в порты.

SfS
20.11.2023, 10:46
ну почему же? Для коммерческого софта чем непонятней непосвященному код - тем лучше. А в России это еще и способ сохранить на годы вперед высокооплачиваемое рабочее место ( так было в телефонных компаниях, где мне доводилось работать). А регистры, если они конечно правильно задокументированы позволяют работать и непосвященным новичкам с железом компании. И ассемблер, кстати тоже является "великим уравнителем" всех программистов.


Вот воткнул ты новую видяху или сетевуху в комп. И? Кто там выше драйвера "в регистры" лезет?

Я не говорю про какое-то "спецоборудование". Там может быть всё что угодно. Но обычно это оборудование не меняется за время своей жизни.

То есть каждый "новичёк" будет по новой изучать и программировать все 1599 регистров сетевухи?) А зачем ?! Это во-первых коммерчески невыгодно, во-вторых просто не нужно.

Недаром, сейчас очень многие производители предоставляют библиотеки работающие со своим оборудованием.

andrews
20.11.2023, 11:52
Ну конечно же это пример из личного опыта. Купили готовую операционку реального времени для ЦАТС. В описании было про поддержку интересной компании микрухи, которую и установили на плату процессора. Запустили программу -не работает! В коде рабочей программы станции на С/C++ ковыряться не стали, а пришлось дизассемблировать драйвер операционки. Там вместо кода оказалась "заглушка". Обратились к компании -производителю операционки. Те ответили, мол, ждите полгода, будет код. Обратились в компанию производителя микрухи в Японию про описание регистров микрухи. Те послали на й. Проект приостановился, компания возмещала убытки заказчику, а из меня сделали "козла отпущения" и уволили. Так как оказывается и нанимали-то меня именно с этой целью, так как не были уверены что все пройдет гладко. Поэтому еще раз: адекватное описание регистров и ассемблер( ну и прочее до получения исполняемого кода и его загрузки(программирования) . Всё остальное уже "роскошь"

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


То есть каждый "новичёк" будет по новой изучать и программировать все 1599 регистров сетевухи?
если что-то не работает как надо - придётся! Так как программист фирме стоит даже сегодня на 3 месяца от силы $10 000 даже при зп вбелую, а штрафные санкции за неработающее и не отгружаемое оборудование могут быть на порядки больше и это бьет по карману учредителей.

SfS
20.11.2023, 12:37
Это как раз относительно нетипичный пример.

andrews
20.11.2023, 13:39
Относительно топика. Умный и оптимизирующий кросс basic-compiler для железа на z80 и сейчас может быть много кому интересен. А остальное интересно очень узкому кругу программистов. Причем желательно, чтобы он охватывал как можно больше реального железа и комментировал линии ассемблера на выходе.

Lethargeek
20.11.2023, 17:17
Есть примеры "правильных" реализаций ПО бытовых компьтеров?
минимальный монитор в пзу + яву и другие непотребства только на кассетах, дисках и картриджах (хорошо быть богатым и здоровым, ога) :D
классический бейсик для бытовых пк 80-х в принципе не может быть "правильным" уже потому, что придуман для намного более слабого железа, чем даже спековское


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


Классический отказ. Падать в случае его возникновения допустимо. Особенно учитывая роль бейсика как обучающего языка. В мои времена все бейсики вели себя так.
нет, это классическая ОШИБКА разработчиков диалекта, вызывающая лишь фрустрацию у домохозяек (ЦА) необходимостью излишних телодвижений :p


Особенно учитывая роль бейсика как обучающего языка.
ну вот и пусть бы научились, что за бордером рисунков не видно, а с твоей логикой надо падать и на бипе за пределом человечьей слышимости :rolleyes:


В мои времена все бейсики вели себя так.

https://www.youtube.com/watch?v=Yawjc4Pg7x8

null_device
20.11.2023, 23:00
andrews, вопрос в том, насколько нужен функционал самого Бейсика в таком компиляторе.
Чистой воды имхо: ремейк целочисленного компиллятора от Евдокимова, для большинства целей достаточно. Кому нужны плюшки спектрум-бейсика, по максимуму, юзают tobos.
Слышал рекламу компрессоров Бейсика (ужимающие числовые формы хранения чисел и переменных). Которые также ускоряют до некоторой степени программу, без регистрации и смс.

andrews
20.11.2023, 23:24
Интересно. Дайте пожалуйста ссылку на этот кросс-компилер. Вот у Mattel Intellivision кросс-компилер есть intybasic, правда тоже целочисленный и о качестве ассемблерного кода для кросс ассемблера as1600 на его выходе судить не берусь. Неделю назад только на него наткнулся.

vlad-kras
20.11.2023, 23:39
Относительно топика. Умный и оптимизирующий кросс basic-compiler для железа на z80 и сейчас может быть много кому интересен. А остальное интересно очень узкому кругу программистов. Причем желательно, чтобы он охватывал как можно больше реального железа и комментировал линии ассемблера на выходе.

Зачем максимальный охват железа? Речь идет про все железо, у которого внутри Z80, всякие MSX и прочее, либо только про синклеровское железо и клоны спека? Но тогда для спека бейсик должен быть одинаковый?

Ну и зачем компилятор бейсика СЕГОДНЯ, язык-то убогенький, ни тебе IF-ELSE нормального, ни блочной структуры. И возможность клепать перекрещивающиеся GOTO, свободный вход-выход этими GOTO внутрь блоков циклов, эти самые ошибки NEXT without FOR, RETURN without GOSUB.

andrews
20.11.2023, 23:43
А что можете предложить какой-то другой ЯВУ с кросс-компилятором и ассемблерным кодом на выходе для sjasmplus?


Зачем максимальный охват железа?
для 6502 так обычно сейчас делают. Больший охват - больше потенциальных пользователей. Понятно, что не всё сразу. Но тянут от версии к версии.

null_device
21.11.2023, 04:58
ни тебе IF-ELSE нормального
....
ошибки NEXT without FOR, RETURN without GOSUB.

Вот ни разу не страдал от отсутствия многоэтажной конструкции IF-THEN-ELSE. Для большинства задаст хватает первой части.
Данные ошибки характерны для "индусского кода". Что является проблемой писателя таких программ, а не спектрум-бейсика.

Lethargeek
21.11.2023, 05:28
Вот ни разу не страдал от отсутствия многоэтажной конструкции IF-THEN-ELSE. Для большинства задаст хватает первой части.
еще скажи, что от строконумерации не страдал (ну, если очень примитивные "задасты", тогда возможно))

SfS
21.11.2023, 06:39
Вообщето, Бейсик ОЧЕНЬ плохой язык для обучения.

Функций нет, структуры нет.. Ну что-то вроде "ассемблера для домохозяек". Типа пишу что и как в голову придёт, а там если что ошибку выдаст.

Вот Pascal - это да. Для обучения. Строгие типы. Структура.

null_device
21.11.2023, 14:12
Lethargeek, нумерация строк, неизбежное зло. С другой стороны, это куда проще, чем запоминание названия меток. И снижает вероятность ошибки. Оттого, я например, не использовал многосимвольные переменные.

Lethargeek
21.11.2023, 18:19
Вообщето, Бейсик ОЧЕНЬ плохой язык для обучения.
Функций нет, структуры нет.. Ну что-то вроде "ассемблера для домохозяек". Типа пишу что и как в голову придёт, а там если что ошибку выдаст.
Вот Pascal - это да. Для обучения. Строгие типы. Структура.
для всего плохой, кроме "хоть какой-то я(о)ву на очень слабом железе"
а для обучения лучше лого (правда, реализация именно на спектруме странноватая)
паскаль подразумевает компиляцию и 48k ему маловато


Lethargeek, нумерация строк, неизбежное зло.
да ну, на ресурсах спека (и многих прочих восьмибиток 80-х) вполне избежное
а теперь представь, что от строчных номеров ты избавился, а else нету


С другой стороны, это куда проще, чем запоминание названия меток.
лучше помнить имена процедур)

null_device
21.11.2023, 18:43
а теперь представь, что от строчных номеров ты избавился, а else нету

Ну, нету, и нету. После конструкции, IF THEN, пишем что хотим выполнить по условию и делаем GOTO + несколько строк. А в промежутки между этими строками пишем, то что должно выполниться по условию ELSE.


лучше помнить имена процедур)

Вкусовщина и сила привычки. Мне было проще запомнить двух-трёх-четырехзначный номер строки с подпрограммой.

Lethargeek
21.11.2023, 20:08
Ну, нету, и нету. После конструкции, IF THEN, пишем что хотим выполнить по условию и делаем GOTO + несколько строк. А в промежутки между этими строками пишем, то что должно выполниться по условию ELSE.
то есть вместо else расставлять метки, каждой из которых изволь придумать уникальное имя, сколько неожиданного счастья-то привалило, не говоря уже о чисто текстовом разбухании

null_device
21.11.2023, 21:21
Lethargeek, применительно к спектрум-бейсику: редактирование десятка строк с короткими инструкциями, гораздо проще, чем манипуляции с этим же десятком операторов, но упиханых в одну строку через двоеточие.

Barmaley_m
21.11.2023, 22:01
Точка входа TR-DOS #3D13 не содержала всех тех функций "форматирование, чтение и анализ дорожек" и прочих. То есть налицо недостаток функционала API.
Если бы всё это было - то особо никто бы и не лазил "напрямую в регистры".
Я ни разу в жизни не встречал драйвера или API, который был бы настолько совершенным, что подошел бы для всех вообразимых нужд.

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

Авторы TR-DOS тронулись бы умом, если бы их заставили написать универсальное API для форматирования дисков произвольным образом или создавать/проверять защиты от копирования. Разработка заняла бы столько времени, что какая-то другая фирма выпустила бы подходящий для запуска игр контроллер дисковода раньше. И был бы у нас не Beta-Disk, а Theta-Disk. С не менее, а то и более улылым софтом, чем TR-DOS.

И даже если мега-универсальное API создать - то оно не подойдет тем, у кого мало места в памяти. ПЗУ или ОЗУ - оно денег немалых стоило.

Тем более, что никакого выигрыша в скорости в данном случае это не даёт.
Конкретно в случае TR-DOS - даёт. Программы, использующие самописные процедуры чтения секторов, читают с диска раза в полтора быстрее, чем те, которые используют API.

Сейчас создателям ПО и в голову не придёт "лезть напрямую в регистры" видяхи или звуковухи. За исключением драйверописателей.
Это потому, что зоопарк железа большой. К тому же, железо долго не живет, постоянно новое появляется. Если бы железо было константным, как во времена Спека - то лезли бы в регистры, как миленькие. Потому, что это давало бы конкурентные преимущества.

У спектрума видеопамять была "константой". Потому в неё безбоязненно лазили напрямую. Плюс скорость. В вот если был десяток видюшек, да разных... То фиг бы там куда лазали помимо API.
Вот в мире CP/M был большой зоопарк железа, и там почти все работали через API, каким бы убогим и тормозным оно ни было. По тем же причинам на этих системах не было красивой графики и динамичной анимации.

Lethargeek
22.11.2023, 01:17
Lethargeek, применительно к спектрум-бейсику: редактирование десятка строк с короткими инструкциями, гораздо проще, чем манипуляции с этим же десятком операторов, но упиханых в одну строку через двоеточие.
так и толку с этого десятка будет немного, а писать короткими что-нибудь большое запаришься, да и (на спектруме) работать будет медленнее
но суть ты ухватил верно - обязательная нумерация строк, она больше от убожества возможных редакторов на ранних, очень слабых машинах

andrews
22.11.2023, 01:35
К тому же, железо долго не живет, постоянно новое появляется
всё, теперь, когда проектные нормы подошли к физическому пределу и все трюки с целью обойти это уже использованы, железо наконец уймется в своем неутомимом прогрессе и настанет "эра программирования".

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


По тем же причинам на этих системах не было красивой графики
а разве она хоть какая-то была?

SfS
22.11.2023, 06:47
Lethargeek, нумерация строк, неизбежное зло. С другой стороны, это куда проще, чем запоминание названия меток. И снижает вероятность ошибки. Оттого, я например, не использовал многосимвольные переменные.

Ну да. Запомнить метку screen_loop_begin сложнее, чем номер 1278 ?)

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


для всего плохой, кроме "хоть какой-то я(о)ву на очень слабом железе"
а для обучения лучше лого (правда, реализация именно на спектруме странноватая)
паскаль подразумевает компиляцию и 48k ему маловато
да ну, на ресурсах спека (и многих прочих восьмибиток 80-х) вполне избежное
а теперь представь, что от строчных номеров ты избавился, а else нету
лучше помнить имена процедур)

Есть бейсики с процедурами и else и while и прочим.. И на спеке тоже. Вопрос реализации.

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



Вот в мире CP/M был большой зоопарк железа, и там почти все работали через API, каким бы убогим и тормозным оно ни было. По тем же причинам на этих системах не было красивой графики и динамичной анимации.

Так там и стандартов на графику, как мне помнится, не было.

Conan
22.11.2023, 11:45
Вообщето, Бейсик ОЧЕНЬ плохой язык для обучения.Британские ученые учителя и телевизионщики считали иначе: для обучения плох лишь нестандартный бейсик, особо если в нем нет поддержки пользовательских портов, ЦАП/АЦП и прочей периферии, которую можно использовать для лабораторных работ и творчества (роботизации).

Софи Уилсон (Acorn) за год возни (это только в фильме недельку повкалывали, выиграли конкурс, хлопнули шампанским и уже компьютер презентуют) написал(а) очень быстрый Бейсик (https://en.wikipedia.org/wiki/Rugg/Feldman_benchmarks) со всякими IF THEN ELSE. А потом его несколько лет доделывали и в прайм-тайм по телевизору показывали и в школы усиленно пихали. Помогло это стать самым-самым? Не очень. Проиграл BBC-Бейсик в популярности "ограниченной" и недоделанной версии от Клайва Синклера, а в массовости еще и Бейсику от Майкрософта. И это несмотря на гос. поддержку и навязчивую массовую рекламу. Ошибок в BBC-Бейсике тоже немало (https://beebwiki.mdfs.net/6502_BBC_BASIC). ПЗУ вдвое большего объема (по сравнению с ZX Spectrum) под него требовалось.

Судить современными мерками софт сорокалетней давности не очень корректно. Другое дело, что слабые стороны Синклер-Бейсика не были предопределены суровыми законами природы. Тут на результат больше повлиял человеческий фактор.

Кстати, напомню, что версия Бейсик 48К которая разошлась с оригинальными ZX Spectrum и клонами была урезанной Бета-версией. Более полная оригинальная (от Викерса) Альфа-версия (https://www.spectrumforeveryone.com/technical/inside-the-prototype-zx-spectrums-rom/) (с ошибками, но с доп. расширениями Бейсика) тоже сохранилась. На скрепке ее бинарник.
79794

SfS
22.11.2023, 11:52
Судить современными мерками софт сорокалетней давности не очень корректно.

Но мы то сейчас как раз и пытаемся оценить + и - данного васика с современной точки зрения. Понятно, что в ТО время были иные представления. Точнее, я бы сказал, отсутствие представлений даже)

Conan
22.11.2023, 13:36
с современной точки зренияточка "современности" очень быстро уходит в прошлое. Ваш внучок скажет: "дед, твои трухлявые перфокарты трехуровневые приложения имели больше минусов чем плюсов, Пайтон которому меня пытались учить, не поддерживал команду Face_Recognition с гендерными и эджовыми аргументами. А используемые тобой линуксы не могли эффективно распараллеливать потоки на суперскалярной архитектуре процессоров даже с длинными конвейерами. Ты жил в каменном веке дед, без представлений о том, как правильно писать проги"

null_device
22.11.2023, 13:42
Ну да. Запомнить метку screen_loop_begin сложнее, чем номер 1278 ?)


Запомнит, пол дела, ее ещё нужно правильно воспроизвести при каждом обращении к метке. А средствами бейсика, GOTO 1278, достигается в шесть нажатий клавиши. Где накосячить можно лишь с номером начала процедуры.
После спектрума, для меня программирование на IBM было мукой, с его посимвольным вводом команд. В т.ч. с тем же редактором 128к спектрума.

andrews
22.11.2023, 14:23
Ваш внучок
скорее сын. Для внучков железо будет то же самое, что и для детей. Разве что архитектура станет "тонкий клиент" в виде чуть более мощного писи чем сегодня и сервера в виде суперкомпов, отчасти квантовых.

SfS
22.11.2023, 15:06
точка "современности" очень быстро уходит в прошлое. Ваш внучок скажет: "дед, твои трухлявые перфокарты трехуровневые приложения имели больше минусов чем плюсов, Пайтон которому меня пытались учить, не поддерживал команду Face_Recognition с гендерными и эджовыми аргументами. А используемые тобой линуксы не могли эффективно распараллеливать потоки на суперскалярной архитектуре процессоров даже с длинными конвейерами. Ты жил в каменном веке дед, без представлений о том, как правильно писать проги"


Нет, не подходит. Мы говорим про вещи в пределах той архитектуры и возможностей.
Что можно было сделать в пределах той аппаратуры.

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


скорее сын. Для внучков железо будет то же самое, что и для детей. Разве что архитектура станет "тонкий клиент" в виде чуть более мощного писи чем сегодня и сервера в виде суперкомпов, отчасти квантовых.

Квантовых. На антиматерии. Ога.

andrews
22.11.2023, 16:11
Квантовые процессоры уже реализованы, но это как процедурный процессор для вычислений по ограниченному множеству алгоритмов. Есть эмуляция в библиотеке Phython-а. До начала СВО была доступна в облаке. После не проверял.

SfS
22.11.2023, 16:14
Квантовые процессоры уже реализованы, но это как процедурный процессор для вычислений по ограниченному множеству алгоритмов. Есть эмуляция в библиотеке Phython-а. До начала СВО была доступна в облаке. После не проверял.

Знаток прям)

Только вот эти процессоры очень узко применимы. Может как с термоядом получиться.

Но по чем тут Бейсик на Спектруме?

andrews
22.11.2023, 16:17
Бейсик для Спектрума меня лично больше интересует. Жилплощадь моя способствует интересу к эмуляторам.

SfS
22.11.2023, 16:24
Бейсик для Спектрума меня лично больше интересует. Жилплощадь моя способствует интересу к эмуляторам.

А судя по обширности познаний, я думал, ты минимум в замке живёшь:)

andrews
22.11.2023, 18:04
На замок даже у Hunta познаний недостаточно. Ипотека, видишь, не выплачена. Я так понял, что кросс компилятора Бейсика для zx spectrum с выходом кода на sjasm в природе не существует.

SfS
22.11.2023, 21:54
На замок даже у Hunta познаний недостаточно. Ипотека, видишь, не выплачена. Я так понял, что кросс компилятора Бейсика для zx spectrum с выходом кода на sjasm в природе не существует.

Так он и не плачет, что его обманули, обобрали и все ему должны)
Он просто ростит детей. Живёт весьма неплохо и радуется. Да и я тоже. Ипотека у меня тоже, кстати, есть. На вторую квартиру. Ремонт сделаем, переедем. А старую детям оставим в наследство.

Чего тужить?

Ты лучше чего дельного про Бейсик скажи)

andrews
22.11.2023, 23:36
Так и я не плачу. Просто констатирую, что в очередной раз кинули и не меня одного. В 2011 году рубль по покупательной способности был один, а сегодня сцуко совсем другой. А пенсия какой была - такой и осталась. И еще. Человека с работы уволили, а пенсию 3 месяца не перерасчитывают. Типо а может сдохнет за это время? Я не про себя. У меня накоплений достаточно. Жена тоже все ныла про ипотеку. Слава Богу ума хватило в нее не влезать.

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


Ипотека у меня тоже, кстати, есть.
ну и выплачивай, и радуйся. Пока до пенсии доживешь, может и кончится СВО. А может и к вам, в Восточную Сибирь дроны-комикадзе долетать начнут.

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


Ты лучше чего дельного про Бейсик скажи
уже сказал. Кто сделает Бейсик кросс-компилер для Спектрума с выводом в sjasmplus. А то для Coleco есть, а для Спектрума нет.
Пусть даже целочисленный, без нумерации строк и без навороченных операторов. А может и есть такой?

Есть конечно Boriel ZX Basic, но у него нельзя получать файл для sjasmplus на выходе.
Но у него есть какой-то свой ассемблер. Завтра попробую.
Сегодня нашел комбинацию батника для автозагрузки и запуска. На выходе .tzx и в Unreal Portable под Win7 32bit запускается.
Но тормоза!!!


zxbc -T -B -a circle.bas
pause

circle.bas


REM Sample circle drawing

DIM i, r, x, y, q as Float
DIM ax, ay, zx, zy, dx, dy as Ubyte

x = 127
y = 87
r = 40
q = 1 / r

FOR i = 0 TO PI/2 STEP q
dy = SIN(i) * r
dx = COS(i) * r

zx = x - dx
zy = y - dy
ax = x + dx
ay = y + dy

PLOT ax, ay
PLOT zx, ay
PLOT ax, zy
PLOT zx, zy

NEXT i


Посмотрим завтра дает ли что-нибудь ключ оптимизации и побалуюсь с его ассемблером. Мне окружности надо мгновенно на экран выводить для моей леталки.

SfS
23.11.2023, 06:16
Так и я не плачу.

Хорошо.



Просто констатирую, что в очередной раз кинули и не меня одного. В 2011 году рубль по покупательной способности был один, а сегодня сцуко совсем другой. А пенсия какой была - такой и осталась.


И заплакал. Ну и соврал, конечно.

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



ну и выплачивай, и радуйся. Пока до пенсии доживешь, может и кончится СВО. А может и к вам, в Восточную Сибирь дроны-комикадзе долетать начнут.


Тебя и СВО с дронами обидели? Бейсиком заниматься мешают?)

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



уже сказал. Кто сделает Бейсик кросс-компилер для Спектрума с выводом в sjasmplus. А то для Coleco есть, а для Спектрума нет.
Пусть даже целочисленный, без нумерации строк и без навороченных операторов. А может и есть такой?


Это не спортивно. Бейсик должен быть в ПЗУ! Иначе его смысл вообще теряется.

Я долго размышлял над бейсиком и подумал, что наверное подойдёт бейсик на базе FORTH.
Правда, я не могу сказать сколько это памяти ПЗУ займёт.

Идея такая. В порядке бреда.

Каждая функция или строка бейсик-программы "на лету" компилируется в слово FORTH. Хранится в памяти исходник на бейсике + откомпилированный FORTH.
Откомпилированный за исключением расстановки адресов внешних, по отношению к текущей функции или строке, меток-слов.

При запуске программы расставляются адреса слов и программа выполняется как FORTH-программа.

Плюсы такого подхода.

1. Скорость выполнения - высокая. По сути это компилятор, да и форт-ядро тоже весьма не медленное.
2. Можно выгружать в виде исполняемого файла ТОЛЬКО уже откомпилированную FORTH-часть. Это экономия памяти, однако.
3. Относительно лёгкая расширяемость системы, за счёт возможности расширения стандартных форт-слов.
4. Относительно лёгкая концепция модульности за счёт относительных адресов, расставляемых в момент линковки.

Минусы тоже есть.
1. Дополнительный объём памяти для хранения программы в двух представлениях. Частично купируется возможностью выгружать "только откомпилированный форт".
2. На линковку нужно дополнительное время.

Но в голове такая идея бродит. Думаю, почему не поделиться... Тут много сумасшедших. Чем я хуже?)

Hunta
23.11.2023, 08:43
Кто сделает Бейсик кросс-компилер для Спектрума с выводом в sjasmplus.
Тебе нужен? Так сделай. Но, как обычно, ты начал ныть - кто бы тебе сделал. А никто, блин, не делает. Демократия, однако.

Меня IDA для дизасма PDP-11 не устраивала, я написал свой дизасм. Скоро буду пробовать нарисовать для меня модули для дизасма ещё одно проца, в компанию к PDP-11.

andrews
23.11.2023, 10:29
Ну и соврал, конечно
прибавка на копейку, а цены в 3 раза. Нормально. Про неспортивно и ПЗУ. Лично мне пофиг! У меня в приоритете скорость и проект. А то что спектрум пока не может работать с квантовым компьютером на сервере до звезды! Все-равно, что спектрум, что писи, что еще что-нибудь все это в перспективе "тонкие клиенты" просто с разными возможностями.
Ну а так, я и скорость эмулятору, если надо "подкручу" и нестандартный процедурный процессор прикручу. Мне плевать, что это с "классикой" несовместимо.

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

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


А никто, блин, не делает
а понять для начала делает то же что и ты, или нет, как думаешь, надо?

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


Тебя и СВО с дронами обидели?
ну я к тому, что за ипотеку платишь-платишь, а потом дрон прилетает...и тю-тю твои денежки! А пока Восточная Сибирь чувствует себя в безопасности, в отличие от Питера. Но это уже "политота".

SfS
23.11.2023, 10:51
прибавка на копейку, а цены в 3 раза. Нормально.

2.5-3 раза это не совсем копейка:))
Да и про цены враньё, как обычно.



Про неспортивно и ПЗУ. Лично мне пофиг! У меня в приоритете скорость и проект. А то что спектрум пока не может работать с квантовым компьютером на сервере до звезды! Все-равно, что спектрум, что писи, что еще что-нибудь все это в перспективе "тонкие клиенты" просто с разными возможностями.
Ну а так, я и скорость эмулятору, если надо "подкручу" и нестандартный процедурный процессор прикручу. Мне плевать, что это с "классикой" несовместимо.

Мы тут про стандартный спек говорим. Аппаратный. Эмули это не то.
И бредни про "квантовый пупутер" тоже непонятны мне.


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

Ну не навязывай. Ссы на оголённые провода и переходи дорогу на красный свет) Я ж не против) Результат мы уже видим - "вечный ной". :)
Когда дядя в 60 лет пытается "прогнуть мир под себя" - он или властелин мира или идиот)))


ну я к тому, что за ипотеку платишь-платишь, а потом дрон прилетает...и тю-тю твои денежки! А пока Восточная Сибирь чувствует себя в безопасности, в отличие от Питера. Но это уже "политота".

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

Но тебя, конечно, беспокоит то, что наименее вероятно)))

andrews
23.11.2023, 11:04
Да и про цены враньё, как обычно.
а это уж не надо ля-ля. То, что прежде жена и дочь из Дикси и Пятерочки за 1000 руб. приносили, теперь обходится минимум в 2000 руб. Они по моей карте покупают так что это не единичное наблюдение. А продукты питания у нас самые простые и те же самые, что и 6 лет назад. Своей будущей пенсией я тоже начал интересоваться в 2017-м. Так вот она точно такая же и в 2023-м. Ну максимум на 900 руб. больше.

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


Мы тут про стандартный спек говорим
какой именно? Тот что на fpga, или на "рассыпухе"? А чем программный эмуль отличается от аппаратного? Тем что монитор на столе перетыкать не надо? При современных мощностях компьютеров железо 80-х эмулируется ЛЮБОЕ, если только инфа есть и она правильная.

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


про "квантовый пупутер" тоже непонятны мне
ну это человечеству известно давно. Про то, что если я не знаю, то оно не существует. Чёрт на колокольне Эдгара По прочитай. Ну или мое "Окно" (https://zx-pk.ru/threads/34786-pochemu-kompilirovannyj-bejsik-vypolnyaetsya-bystro/page8.html)
Слава Богу вовремя запостил в сеть про Газоскреб, когда его на Охте хотели строить, что в случае войны это будет удобная цель для атаки. Вскоре после чего его строительство перенесли в Лахту.

В общем хватит флудить. Давай про Бейсик.

SfS
23.11.2023, 11:11
а это уж не надо ля-ля. То, что прежде жена и дочь из Дикси и Пятерочки за 1000 руб. приносили, теперь обходится минимум в 2000 руб. Они по моей карте покупают так что это не единичное наблюдение. А продукты питания у нас самые простые и те же самые, что и 6 лет назад. Своей будущей пенсией я тоже начал интересоваться в 2017-м. Так вот она точно такая же и в 2023-м. Ну максимум на 900 руб. больше.


Про цены в ТРИ раза ты писал. А тут выходит в ДВА раза. Ну и пенсия за это время выросла в 2.5 раза)



какой именно? Тот что на fpga, или на "рассыпухе"? А чем программный эмуль отличается от аппаратного? Тем что монитор на столе перетыкать не надо?

Тот, что на 3.5МГц. ZX-Spectrum original.




ну это человечеству известно давно. Чёрт на колокольне Эдгара По прочитай. Ну или мое "Окно" (https://zx-pk.ru/threads/34786-pochemu-kompilirovannyj-bejsik-vypolnyaetsya-bystro/page8.html)
Слава Богу вовремя запостил в сеть про Газоскреб, когда его на Охте хотели строить, что в случае войны это будет удобная цель для атаки. Вскоре после чего его строительство перенесли в Лахту.

В общем хватит флудить. Давай про Бейсик.

О да) Тебя прям послушались)) Поржал)

andrews
23.11.2023, 11:20
Ну и пенсия за это время выросла в 2.5 раза)
у отдельных категорий граждан.

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


Тот, что на 3.5МГц. ZX-Spectrum original
тут главное не это. А то что инфа есть и колоссальный опыт разработок. Ну и халява. Как без неё.

SfS
23.11.2023, 11:23
у отдельных категорий граждан.

средняя по стране

andrews
23.11.2023, 11:33
"О да) Тебя прям послушались)) Поржал)"
Можешь ржать. Но про сосульки лазером с крыш сбивать это мой был прикол. А г.-жа Матвиенко на полном серьезе озвучила. Про то, что рухнувший в случае атаки Газоскреб перекроет Неву у Смольного и затопит полПитера тоже была моя оригинальная идея. И тогда я людям даже промоделировать это предложил.
И еще, я тогда сотрудничал с компанией, где директором был сын подруги г.-жи Матвиенко.

SfS
23.11.2023, 11:35
Можешь ржать. Но про сосульки лазером с крыш сбивать это мой был прикол. А г.-жа Матвиенко на полном серьезе озвучила. Про то, что рухнувший в случае атаки Газоскреб перекроет Неву у Смольного и затопит полПитера тоже была моя оригинальная идея. И тогда я людям даже промоделировать это предложил.

Да твой, твой))

Это твоё, не сомневаюсь)

https://avatars.dzeninfra.ru/get-zen_doc/1244179/pub_5e6aa2c6ca551a68df051cbe_5e6aa3ee5793d1488554a 9d1/scale_1200

andrews
23.11.2023, 11:36
средняя по стране
ну ежели средняя возрастает в 2.5 раза, а у некоторых практически не меняется, то значит кому-то повысили вероятно в 3-5 раз.

Стань вторым Львом Толстым и публикуйся в Интернет и санитары тебе не понадобятся. А ты мне очень напоминаешь персонажа из комедии "33" Данелии, Прохорова.

SfS
23.11.2023, 11:41
ну ежели средняя возрастает в 2.5 раза, а у некоторых практически не меняется, то значит кому-то повысили вероятно в 3-5 раз.

Стань вторым Львом Толстым и публикуйся в Интернет и санитары тебе не понадобятся.

ну до тебя мне далеко) в каждом сообщении писать бред мне не по силам)

andrews
23.11.2023, 11:42
ну до тебя мне далеко
так молодой ишо, и высунуться боишься. На стадионе перед полсотней спектрумистов сумел бы с речью выступить без санкций городских властей? Я вот выступал.

SfS
23.11.2023, 11:47
Так поругайте мою идею по поводу FORTH-BASIC!)

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


так молодой ишо, и высунуться боишься. На стадионе перед полсотней спектрумистов сумел бы с речью выступить без санкций городских властей? Я вот выступал.

Высунуться откуда и зачем?) Ключевое слово ЗАЧЕМ?

Вот ты высунулся и ноешь в каждом сообщении) Могу уже даже все темы твоего нытья, повторяемые по кругу, повторить))

И зачем мне это? Я лучше буду спокойно иметь квартиру, загородный дом, платить ипотеку за вторую квартиру и ростить своих детей) Ешё проект хоббийный веду для души потихоньку)

Мне некогда ныть) я работаю)

andrews
23.11.2023, 12:06
Я не ною это ты говоришь, что я ною, хотя так не думаешь. Я тебе не случайно про Прохорова из "33" Данелии написал. Ты точно такой же. Иди, работай! Ипотека зовет!

SfS
23.11.2023, 12:32
Я не ною это ты говоришь, что я ною, хотя так не думаешь. Я тебе не случайно про Прохорова из "33" Данелии написал. Ты точно такой же. Иди, работай! Ипотека зовет!

"Мне должны землю, много денег, меня кинули, выгнали, обманули, прилетит беспилотник...Я Я Я Я МНЕ МНЕ МНЕ !!!!" и так далее)) Хахаха. :)

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

Итак, поругайте. Что плохого в идее?



Идея такая. В порядке бреда.

Каждая функция или строка бейсик-программы "на лету" компилируется в слово FORTH. Хранится в памяти исходник на бейсике + откомпилированный FORTH.
Откомпилированный за исключением расстановки адресов внешних, по отношению к текущей функции или строке, меток-слов.

При запуске программы расставляются адреса слов и программа выполняется как FORTH-программа.

Плюсы такого подхода.

1. Скорость выполнения - высокая. По сути это компилятор, да и форт-ядро тоже весьма не медленное.
2. Можно выгружать в виде исполняемого файла ТОЛЬКО уже откомпилированную FORTH-часть. Это экономия памяти, однако.
3. Относительно лёгкая расширяемость системы, за счёт возможности расширения стандартных форт-слов.
4. Относительно лёгкая концепция модульности за счёт относительных адресов, расставляемых в момент линковки.

Минусы тоже есть.
1. Дополнительный объём памяти для хранения программы в двух представлениях. Частично купируется возможностью выгружать "только откомпилированный форт".
2. На линковку нужно дополнительное время.

Но в голове такая идея бродит. Думаю, почему не поделиться... Тут много сумасшедших. Чем я хуже?)

Lethargeek
23.11.2023, 13:45
Есть бейсики с процедурами и else и while и прочим.. И на спеке тоже. Вопрос реализации.
а есть вообще без номеров строк? и да, я про классические бейсики говорил


Итак, поругайте. Что плохого в идее?
я форт люблю, но почти все восьмибитные камни (кроме 6809) для именно форт-ядра неудобны
свой заточенный байткод или шитый код вероятно, выгоднее окажутся
с полностью разобранными выражениями, выбором разных точек входа для операторов
с отложенным на рантайм связыванием для будущих, еще не добавленных процедур
"компиляция" прозрачная тупо по нажатию ентера - построчная или попроцедурная
и да, без аврала, думаю, такое можно было сделать даже в 80-х, и даже в 16k упихать

SfS
23.11.2023, 14:54
Мне тоже приятнее Бейсики без номеров строк.
С метками. С функциями.

Просто давно в голове вертится как-то совместить компактность и скорость форта и Бейсик надстройку.

b2m
23.11.2023, 15:02
Просто давно в голове вертится как-то совместить компактность и скорость форта и Бейсик надстройку.
А арифметика с плавающей точкой будет? :)

SfS
23.11.2023, 15:08
А арифметика с плавающей точкой будет? :)

А почему нет? И меня и библиотека есть для float ieee.

Но это все пока лишь идея

andrews
23.11.2023, 16:00
Мне тоже бредовая идея пришла. А если в эмуляторе для рисования графики использовать gpu писишки? И в бейсике в том числе.

SfS
23.11.2023, 16:10
Мне тоже бредовая идея пришла. А если в эмуляторе для рисования графики использовать gpu писишки? И в бейсике в том числе.

И Спектрум не нужен.

andrews
23.11.2023, 16:50
Почему не нужен? Всё остальное Спектрум или что угодно, Coleco например тоже на z80. А если ты о железном эмуляторе, то сейчас на чипах всюду графические ускорители и их тоже можно использовать в качестве процедурных процессоров. Только библиотеку при сборке поменяй.

SfS
23.11.2023, 17:06
Я вообще о чистом Спектруме и бейсике на нем.

andrews
23.11.2023, 18:05
Ну а я об эмуляторах и кросс-компилере бейсика. Мне леталку надо в туннеле из колец. Пустил я Бореля и обломался. Там одна окружность вечность отрисовывается.

Вопрос: с OpenCL кто-нибудь работал? Что качать, если видеокарта AMD Radeon дополнительная, а процик Intel, ну и в чипсете наверное тоже графический проц. Чем потестировать? Everest что-то нифига не показывает про граф. процессор на материнке.

Походу когда видеокарта установлена, gpu в чипсете на материнке вырубается полностью?

SfS
23.11.2023, 23:23
Бейсик тем хорош, что есть в пзу. Кроскомпилер Бейсика на пц это не интересно.хотя, наверное, и ему место есть в мире.

А эмули это разве для отладки. Если на реальном железе не работает, то фифифи.

Lethargeek
24.11.2023, 00:29
Ну а я об эмуляторах и кросс-компилере бейсика. Мне леталку надо в туннеле из колец. Пустил я Бореля и обломался. Там одна окружность вечность отрисовывается.
а чего ты ждал, штатные графпроцедуры универсальные, а значит медленные
ради скорости однозначно самому колхозить надо вставки на асме

andrews
24.11.2023, 10:35
Странно, что никому из эмуляторописателей не пришло в голову добавить такой режим для графики.

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


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

SfS
24.11.2023, 10:47
Ну так добавь) концептолгов то много)

andrews
24.11.2023, 11:11
Ну да "Как советовать, так все чатлане, а как работать, так"
https://www.youtube.com/watch?v=CfmImYyTpeY

SfS
24.11.2023, 11:18
Ну да "Как советовать, так все чатлане, а как работать, так"
https://www.youtube.com/watch?v=CfmImYyTpeY

Ну так покажи, что ты "наработал") Мои наработки по спеку, хоть их не много, на гитхабе)) Каждый может взять и использовать. Или обосрать. Как угодно)

andrews
24.11.2023, 11:23
Да, я в курсе "ху из ху". И не только на спектруме у тебя есть результаты. А мне вот пока ничего не удалось реализовать из своих идей. Увы.

SfS
24.11.2023, 11:48
А мне вот пока ничего не удалось реализовать из своих идей. Увы.

А почему? Кто мешал?

andrews
24.11.2023, 12:31
Ресурсов не было, а те что были женщинам и их детям ушли. Бросила меня первая жена после похорон моих родителей в марте 1996 года - вот и сошла жизнь с накатанной колеи. Карьера во ВНИИ ТВЧ в начале 90-х под откос пошла. Так что и личное и в окружающем мире. Все не благоприятствовало. Врагу не пожелаю всё это пережить! Но если бы оставался бы совок - лучше б тоже не было в связи с историей моей семьи. Люблю я финал фильма "гитлер капут"

SfS
24.11.2023, 13:29
Ресурсов не было, а те что были женщинам и их детям ушли. Бросила меня первая жена после похорон моих родителей в марте 1996 года - вот и сошла жизнь с накатанной колеи. Карьера во ВНИИ ТВЧ в начале 90-х под откос пошла. Так что и личное и в окружающем мире. Все не благоприятствовало. Врагу не пожелаю всё это пережить! Но если бы оставался бы совок - лучше б тоже не было в связи с историей моей семьи. Люблю я финал фильма "гитлер капут"

хм.. и за 28 лет ресурсов не нашлось

Hunta
24.11.2023, 14:07
хм.. и за 28 лет ресурсов не нашлось
Чему удивляться.

SfS
24.11.2023, 15:27
Чему удивляться.

Ну когда нет "ресурсов" просто программку пописать это удивительно... Все наверное в "верчение" ушло)

andrews
24.11.2023, 15:46
"Просто программок" я пописал...сорм для цатс "Селена" и кучу всего другого с 1983 года для 8080, 8051, mips R3000, 386EX.
Ну это не считая пустяков для Blackfin-а.
А вот квартиру свою слава Богу за кредит от Сельхозбанка не успел заложить в 2003 году. Мне завтра в банк идти, а сегодня Мамба в интернете всплыла. А была затея сделать свой мегасайт знакомств. И программист с дизайнером из Великого Новгорода уже были на "товсь".

Conan
24.11.2023, 15:55
с современной точки зрения в сочетании с:
в пределах той архитектуры и возможностей
это попытка протащить "футбольный альманах" из будущего в прошлое (Back to the Future часть 2).

Убираем первую часть (современную) и видим много Бейсиков того времени, всяких и разных. С оценками на любой вкус (пользователей, разработчиков и т.д.). Сравниваем их с собственными умозаключениями. Делаем выводы.

Например: "Бейсик Синклера был ограничен и несовершенен, поэтому миллионы пользователей ZX Spectrum очень страдали от этого. Плач и стон стояли над туманным Альбионом. Компьютерные журналы пестрели жалобами". :D

Оставляем первую часть - продолжаем рассуждать про преимущества лазерной заточки каменного топора для первобытного человека.

Lethargeek
24.11.2023, 16:09
продолжаем рассуждать про преимущества лазерной заточки каменного топора для первобытного человека.
не, не лазерной, просто не в условиях, когда медведь в пещеру скоро вернётся и шаман над ухом не гундосит "точи как предки!" :D

SfS
24.11.2023, 16:20
Оставляем первую часть - продолжаем рассуждать про преимущества лазерной заточки каменного топора для первобытного человека.[/FONT][/SIZE]

Совсем нет. Фиксируем аппаратную часть на Спектруме 48к. И рассуждаем, как можно сделать пзу лучше, имея современные знания.

andrews
24.11.2023, 16:27
Это похоже на конкурс 1k интро или переплывем на остров Пасхи, используя традиционные материалы.

Lethargeek
24.11.2023, 16:29
Совсем нет. Фиксируем аппаратную часть на Спектруме 48к. И рассуждаем, как можно сделать пзу лучше, имея современные знания.
да там даже не современные, а как бы не с 60-х еще теории, частью на шкафах еще применённые

SfS
24.11.2023, 16:30
да там даже не современные, а как бы не с 60-х еще теории, частью на шкафах еще применённые

Ну современные включают в себя и все прошлые)

Conan
24.11.2023, 17:34
когда медведь в пещеру скоро вернётсяскорее не медведь, а конкурирующее племя со своими топорами, заточенными без особых выкрутасов, но быстро.


Фиксируем аппаратную часть на Спектруме 48к. И рассуждаем...Аппаратная часть завязанная на ПЗУ зафиксировалась в 1983 году.
Синклеру надо было подождать пару лет (плюс время разработки кода) с выпуском ZX Spectrum?

P.S. Выше уже приводился пример (https://sinclair.wiki.zxnet.co.uk/wiki/OpenSE), где на давно зафиксированном железе, имевшееся ПЗУ для ZX Spectrum доделывали и улучшали. С более современными знаниями, подходами, средствами разработки, интернетом и прочими чудесами цивилизации. Заняло это от 5 лет, а результат оказался востребованным чуть менее чем заурядная дема или игра.

Lethargeek
24.11.2023, 17:48
скорее не медведь, а конкурирующее племя со своими топорами, заточенными без особых выкрутасов, но быстро.
но шаман таки ответственность разделяет


P.S. Выше уже приводился пример, где на давно зафиксированном железе, имевшееся ПЗУ для ZX Spectrum доделывали и улучшали. С более современными знаниями, подходами, средствами разработки, интернетом и прочими чудесами цивилизации. Заняло это от 5 лет,
яблоки и апельсины, фултайм и хобби
"series of gaps of between one to four years"


а результат оказался востребованным чуть менее чем заурядная дема или игра.
а монголы почти перестали стрелять из лука, с временами Потрясателя не сравнить!

короче, опять всё мимо

SfS
24.11.2023, 18:11
скорее не медведь, а конкурирующее племя со своими топорами, заточенными без особых выкрутасов, но быстро.

Аппаратная часть завязанная на ПЗУ зафиксировалась в 1983 году.
Синклеру надо было подождать пару лет (плюс время разработки кода) с выпуском ZX Spectrum?

P.S. Выше уже приводился пример (https://sinclair.wiki.zxnet.co.uk/wiki/OpenSE), где на давно зафиксированном железе, имевшееся ПЗУ для ZX Spectrum доделывали и улучшали. С более современными знаниями, подходами, средствами разработки, интернетом и прочими чудесами цивилизации. Заняло это от 5 лет, а результат оказался востребованным чуть менее чем заурядная дема или игра.


При чем тут Синклер?

Спектрум сейчас вообще не востребован. И 5 лет назад не был востребован.

Так что это просто мысли - что можно выжать из этой аппаратуры.

andrews
24.11.2023, 19:05
что можно выжать из этой аппаратуры
"эта аппаратура" должна быть современной. Тогда и старые программы на ней будут "летать". А кому надо их притормаживать - должен это делать с легкостью.

Conan
24.11.2023, 19:24
но шаман таки ответственность разделяеткакую ответственность разделяет шаман, если сроки "заточки каменного топора" отсутствуют?


При чем тут Синклер?При том, что он определял сроки и ресурсы (деньги) для разработки кода ПЗУ ZX Spectrum.
Исключаем его ограничения и получаем: open source replacement operating system ROM for the Timex 2000 series and Sinclair ZX Spectrum
Которая даже не 5+ лет, а с 2001 года все еще бета версия. Бесплатная (хобби), не фултайм, но и конца-края разработки не видно уже двадцать лет.

andrews
24.11.2023, 21:34
А под какой ассемблер Open82?
Makefile


# Makefile: Build script
# From the Open82 project
# Copyright (c) 2000 Matthew Westcott
#
# $Id: Makefile 16 2005-12-18 16:45:24Z gasman $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# Author contact information:
#
# E-mail: matthew@west.co.tt
# Postal address: 14 Daisy Hill Drive, Adlington, Chorley,
# Lancs, PR6 9NE, United Kingdom

# =====================
# Configuration options - override these in a file named config.mk if required

# Path to the Fuse <http://fuse-emulator.sourceforge.net/> executable, used by
# 'make fuse' to start up the emulator with the ROM image installed
FUSE=fuse

# Font to incorporate into the ROM. Valid options are ZX81ACE and CLAIRSYS
FONT=ZX81ACE

# End configuration options
# =========================

-include config.mk

.PHONY: fuse clean

ifeq ($(FONT),CLAIRSYS)
FONT_FILE=fonts/clairsys.bin
else
FONT_FILE=fonts/zx81_ace.asm
endif

open82.bin: rom.asm restarts.asm startup.asm printing.asm keyboard.asm interpreter.asm cassette.asm clear_screen.asm errors.asm memory.asm expressions.asm functions.asm commands.asm print_string.asm graphics.asm calculator.asm diagnostics.asm splash_screen.asm $(FONT_FILE)
pasmo --equ FONT_$(FONT) rom.asm open82.bin open82.sym

# build the ROM and run it in Fuse
fuse: open82.bin
$(FUSE) --rom-48 open82.bin --machine 48 --no-traps

clean:
rm -f open82.bin open82.sym




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


ресурсы (деньги)
на ерунду всякую деньги тратил, царство ему небесное! Нет чтобы на zx spectrum сосредоточить их все. Вот какая-то зараза ему нашептала, что у компьютера век недолог.

goodboy
24.11.2023, 23:01
Выше уже приводился пример, где на давно зафиксированном железе, имевшееся ПЗУ для ZX Spectrum доделывали и улучшали. С более современными знаниями, подходами, средствами разработки, интернетом и прочими чудесами цивилизации. Заняло это от 5 лет, а результат оказался востребованным чуть менее чем заурядная дема или игра.
там изначально была совсем другая цель, нужно было сделать аналог, но с другим кодом.
для применения в коммерческих проектах.
родную прошивку в продаваемом железе использовать нельзя.

Conan
24.11.2023, 23:14
ему нашептала, что у компьютера век недолог.Компьютеры ZX Spectrum (включая плюсы) производились до того, как их перестали раскупать и даже после этого на склад.



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


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

SfS
25.11.2023, 03:17
"эта аппаратура" должна быть современной. Тогда и старые программы на ней будут "летать". А кому надо их притормаживать - должен это делать с легкостью.

Тогда это не про Спектрум

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


какую ответственность разделяет шаман, если сроки "заточки каменного топора" отсутствуют?

При том, что он определял сроки и ресурсы (деньги) для разработки кода ПЗУ ZX Spectrum.
Исключаем его ограничения и получаем: open source replacement operating system ROM for the Timex 2000 series and Sinclair ZX Spectrum
Которая даже не 5+ лет, а с 2001 года все еще бета версия. Бесплатная (хобби), не фултайм, но и конца-края разработки не видно уже двадцать лет.

Вообще не интересно в данной теме про время деньги сроки.
Интересно (мне!) лишь чисто техническая часть.
Имеется Спектрум 48. Имеется стандартное пзу.

Вопрос, что в рамках этих 16к пзу можно сделать, чтобы улучшить его характеристики как встроенной ос или Биос.

Это интересно. Чисто техническая часть. Безотносительно того, что там было 40 лет назад у Синклера и вопросов, почему оно так было.

Conan
25.11.2023, 13:45
Имеется Спектрум 48. Имеется стандартное пзу. Вопрос, что в рамках этих 16к пзу можно сделать, чтобы улучшить его характеристики как встроенной ос или Биос.Ничего существенного. Значительное переписывание ПЗУ приведет ухудшению совместимости. Новые функции "BIOS" без программной поддержки и с глюками старого софта вряд ли кто-то назовет улучшением ПЗУ ZX Spectrum 48.

Фирменное ПЗУ пытались "улучшать" много раз. Начиная от замены (С) на "свое" и добавления кириллицы, заканчивая турбо загрузчиками и встроенными мониторами. Результаты известны (http://zxpress.ru/article.php?id=14890&lng=eng).

SfS
25.11.2023, 13:47
Про совместимость речь вообще не идёт.

Conan
25.11.2023, 14:05
Про совместимость речь вообще не идёт.Тогда можно продолжать теоретизировать о переписывании всего ПЗУ, не оглядываясь на фирменное. Практически любой написанный ранее код можно улучшать и оптимизировать. Пока не надоест.

SfS
25.11.2023, 14:21
Тогда можно продолжать теоретизировать о переписывании всего ПЗУ, не оглядываясь на фирменное. Практически любой написанный ранее код можно улучшать и оптимизировать. Пока не надоест.

Именно это мы и делаем тут))

SfS
27.11.2023, 12:21
Прям зацепила идея бейсика на базе форта) Из головы не выходит. Даже книги начал читать)

Conan
27.11.2023, 16:25
зацепила идея бейсика на базе фортаСоздателей Бейсика и железа ZX Spectrum подобная идея тоже "зацепила". В результате появился Jupiter Ace. Особого успеха он не имел: по оценкам в прессе было продано около 5 тысяч компьютеров. По словам Стива Викерса (автора встроенного ЯВУ) быстро удалось продать всего 300 штук.

SfS
27.11.2023, 16:29
Там же вроде форт был, а не Бейсик?

Lethargeek
27.11.2023, 20:16
ну и железо там примерно уровня zx81, что какбэ намекает на истинные "особенности успеха"

Conan
27.11.2023, 21:16
Там же вроде форт был, а не Бейсик?Самый натуральный Fotrh.


ну и железо там примерно уровня zx81, что какбэ намекает на истинные "особенности успеха"В те же годы, на том же рынке, с примерно таким же как у Jupiter Ace железом ZX81 было продано в 300 раз больше. Это без Timex 1000 (железо аналогичное ZX81).

Есть ли в истории другие примеры сколь ни будь заметного выпуска персонального компьютера со встроенным Forth?

SfS
27.11.2023, 22:20
А я не хочу форт. Я хочу от форта только нутро. Виртуальную машину так сказать. А снаружи Бейсик.

Понятно, что где-то и кто-то и как-то и когда-то наверное уже подобное делал. Просто интересно.

Но мы же любители велосипедов на костылях.

goodboy
27.11.2023, 22:26
так вроде Форт (как и Лого ) был в Питерском Хоббите,
только прошивки вроде-бы так и не `всплыли`

Lethargeek
27.11.2023, 23:49
В те же годы,
не в те же


на том же рынке,
на том же, но уже не таком же


с примерно таким же как у Jupiter Ace железом ZX81 было продано в 300 раз больше. Это без Timex 1000 (железо аналогичное ZX81).
это ДО выхода спектрума, за которым ZX80/81 быстро перешли в разряд стопора для дверей и "какбэкомпа" обмена по акции на комод

Conan
28.11.2023, 00:32
так вроде Форт (как и Лого ) был в Питерском Хоббите, только прошивки вроде-бы так и не `всплыли`Даже если бы прошивки "всплыли", это не поменяло бы ничего. Форт и Лого шли в "Хоббите" лишь довесками. Сам компьютер создавался как Спектрум-совместимый (основанный на Синклер-Бейсике). Это указано на первой страничке его руководства:
https://onedrive.live.com/embed?resid=F55CEE7E150E297A%2190138&authkey=%21AFhNCNq9EyCC6GA&width=710&height=550

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


не в те же
годы производства ZX81 - 1981-1984 (https://en.wikipedia.org/wiki/ZX81)
годы производства Jupiter Ace 1982-1984 (https://en.wikipedia.org/wiki/Jupiter_Ace)



на том же, но уже не таком жеА что случилось с британским рынком, на нем Forth запретили? Или новые компьютеры (все как один с Бейсиком) перестали выходить?



это ДО выхода спектрума, за которым ZX80/81 быстро перешли в разряд стопора для дверей и "какбэкомпа" обмена по акции на комодПри чем тут ZX80, если его выпуск прекратился до начала выпуска как Jupiter Ace так и ZX Spectrum? К тому же выпуск и массовые продажи Timex Sinclair 1000 (американской версии ZX81) начались после выхода ZX Spectrum. И проходили весьма успешно, причем на куда более конкурентном и зрелом рынке. Это к вопросу о "слабом железе".

Впрочем, все это значения не имеет. Ибо сами разработчики в интервью, заявили, что разрабатывали Jupiter Ace как нишевый компьютер для небольшой группы любителей Forth с целью подзаработать денег. И ценник установили изначально выше, чем у ZX81. Интересно было бы сравнить (цифр, к сожалению, нет) это с количеством проданных кассет с Forth для ZX Spectrum выпущенным в том же 1982 году.

andrews
28.11.2023, 01:01
Timex TS1000 новый из старых запасов ("ми русские не должны обманывать друг друга") продается до сих пор на e-Bay
https://www.ebay.com/sch/i.html?_nkw=timex+sinclair+1000&_sop=12
а вот здесь клавиатурами к нему барыжат мембранными пленочными
https://www.ebay.com/itm/325847938763?hash=item4bde0cf6cb:g:jaAAAOSwsw5lKhW x&amdata=enc%3AAQAIAAAA4C1TUNkdWsh6yPDybbhwuXXtJqD1n AdMP7Hca07xxo6onKos82AYgaV3SCLgfOrId61%2BSdNVi5N1B wsYOrL7QpUN6WKaTjqIihQFF6Rt5d%2BICM9NWFuZ8ajHb966l qvfyXArVnYgdgyFX8AOd8WYDhn2VWYc8ZoTOJNndpHASyRyB61 EJRdyP0PgC1TyUObnaJtTBDxQRxC8Ys7xi0qrqnup3gABPOvD% 2FuvhuaKqETHIvvAuIUQceLRqmE%2BkBPZ33kFYgbQZJC4fy7U Uj%2FVdCx9uCCd3Wg2XE5PG7T2n%2FzNR%7Ctkp%3ABFBMnM-irIJj
к самому Timex TS1000 продавался Forth на кассетах, у TS1500 было 16 КБайт ОЗУ. Cейчас можно свободно скачивать эти образы кассет на сайте португальского Timex.

SfS
28.11.2023, 06:21
У синклер-басика было одно и решающее преимущество: он уже был в ПЗУ как константа.

А что вы к форту прицепились - непонятно. Форт непривычен и менее понятен, чем васик. Вот и "не пошёл".

Conan
28.11.2023, 12:19
А что вы к форту прицепились - непонятно. Форт непривычен и менее понятен, чем васик. Вот и "не пошёл".Forth - прекрасный язык программирования. Его автор Чарльз Мур (не путайте с Гордоном Муром, автором одноименного закона) принес пользы людям планеты Земля гораздо больше, чем многие представляют. Созданный позднее, но на аналогичных принципах язык PostScript прошит в ПЗУ огромного кол-ва устройств (принтеров, МФУ), практически у всех читателей этих букв. Кроме того, PostScript используется во всеми любимом адобовском pdf. Да и сам Forth много где использовался, в том числе в космической аппаратуре (https://web.archive.org/web/20101024223709/http://forth.gsfc.nasa.gov/).

Но всему свое время и место. Мы тут вроде как про бытовые компьютеры начал 80-х годов говорим.

P.S. Идея скрестить ежа и ужа Форт с Бейсиком (насколько понял: облепить стековое ядро Форта командами Бейсика) имеет право на жизнь как любая другая. Она вполне реализуема. Вряд ли вы дальше слов в этом продвинетесь. Но если чудо случится, сравните скорость исполнения Бейсик программы с простыми вычислениями в нескольких вложенных циклах на классическом (медленном) Синкреровском Бейсике и этом "Франкенштейне". Возможно, после этого суждения "как несовершенен Бейсик Синклера" заиграют новыми красками или… (что скорее) сыграют в ящик (стола).

SfS
28.11.2023, 13:46
Вряд ли вы дальше слов в этом продвинетесь.

С этим я согласен. Для реализации такого надо очень захотеть) Прям очень-очень)

zebest
28.11.2023, 16:34
немного офф-а по поводу ужа-ежа и форта.
Технолидер-1 (https://dt-store.ru/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%B8%D0%B4%D 0%B5%D1%80-1-%D0%BD%D0%B0%D0%B1%D0%BE%D1%80-%D0%B4%D0%B5%D1%82%D0%B0%D0%BB%D0%B5%D0%B9-%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BC%D 0%B5%D1%85%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0% BA%D0%BE%D0%B3%D0%BE-%D0%BA%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D 1%82%D0%BE%D1%80%D0%B0-%D1%81-%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D1%8B%D0%BC-%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D 0%B8%D0%B5%D0%BC-p203003597) - детский конструптор под управлением совремённого Форт-а (ну как говорят создатели)
И вот еще вышел форт-ретрокомпьютер (https://vk.com/wall-190339254_124) на советском процессоре КР580ВМ80А
Еще в ФПГА форт-компьютер строили .
и еще в ПЛИС повторяли Юпитер - довольно неплохо получилось, забавное.
И да, и у юпитера, а значит и форта до сих пор хватает фанатов, как и у любого ретро-недо-компьютера.

andrews
28.11.2023, 19:05
Ну это для вундеркиндеров скорее. Для обычных детей что-то а-ля bbc micro:bit лучше подходит(SCRATCH- визуальное блочное программирование). Ну то что пока не сделали кросс- компилятор для z80 печалько.

Lethargeek
28.11.2023, 20:51
годы производства ZX81 - 1981-1984
годы производства Jupiter Ace 1982-1984
именно


А что случилось с британским рынком,
спектрум вышел

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


К тому же выпуск и массовые продажи Timex Sinclair 1000 (американской версии ZX81) начались после выхода ZX Spectrum. И проходили весьма успешно, причем на куда более конкурентном и зрелом рынке.
ага, "успешно" - для обмена на комодурь


Но если чудо случится, сравните скорость исполнения Бейсик программы с простыми вычислениями в нескольких вложенных циклах на классическом (медленном) Синкреровском Бейсике и этом "Франкенштейне". Возможно, после этого суждения "как несовершенен Бейсик Синклера" заиграют новыми красками или… (что скорее) сыграют в ящик (стола).
не сыграют, чтобы было медленнее спекбейсика - сейчас надо прям целенаправленно постараться

andrews
28.11.2023, 23:19
с текстовым экраном и килобайтом юзерского озу
в Timex 1050 было ведь кажется и 16кбайт ОЗУ, с возможностью расширения до 64кбайт и загрузка с катриджей. И когда Америка сдулась, Португалия еще трепыхалась.

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


для обмена на комодурь
и сколько процентов этим воспользовались из числа купивших?

Conan
29.11.2023, 16:52
и сколько процентов этим воспользовались из числа купивших?Если не натягивать "сову на глобус", и цитировать источники корректно, то ситуация выглядела так:

В 1983 году Commodore начал ценовую войну, которая привела к снижению цен, в том числе и на ZX Spectrum. На рынке США в 1983 году Таймекс продал 400 тысяч TS1000 и еще 100 тысяч в Канаде. Часть из них (в том числе новые в коробках) выкупил в трейд-ин Commodore. Это позволило ему твердо закрепиться на американском рынке бытовых компьютеров. Дальнейшие попытки продвижения Таймесом более продвинутых в плане железа (аналогичных ZX Spectrum) TS2068 окончились неудачей. Это к заявлению "спектрум вышел". Как вышел (на американском рынке), так и ушел.

Откуда же берется на ebay множество лотов TS1000, ведь их продают там больше, чем британских ZX81 (которые Commodore не выкупал в трейд-ин)?
Разумеется, Commodore ни в те годы ни позднее не барыжил выкупленными (часть была Б/У) TS1000. Но еще до начала ценовой войны (до конца 1982 года) на американском рынке Таймекс продал 550 тысяч TS1000 (https://en.wikipedia.org/wiki/Timex_Sinclair). "Ванг", знавших о грядущей ценовой войне среди покупателей TS1000 в 1982 году не замечено. Вот такое сказочное:
ага, "успешно" - для обмена на комодурь

К жалобам на слабое железо Jupiter Ace как причине его провала:

спектрум вышел вслед за чем смысл компа с текстовым экраном и килобайтом юзерского озу стал стремительно ускользать, независимо от содержимого пзу
Только ленивый мог не заметить, что с момента входа Jupiter Ace предлагались несколько модулей расширения ОЗУ (https://www.jupiter-ace.co.uk/hardware_rampacks.html#jupitercantab) на любой вкус и карман. И еще много другого железа.
Для "тестового экрана" ZX81 в 1982 году (когда уже вышел ZX Spectrum) было издано 130 игр (https://www.mobygames.com/platform/zx81/year:1982/). А в 1983 году еще 56 игр.
Для Jupiter Ace в 1982 году вышло 6 игр, а в следующем 1983 году 18 игр. Вот такой "стремительно исчезающий смысл".

Видимо разработчики Jupiter Ace были глупыми, поскольку зная о выходе ZX Spectrum (сами его и разрабатывали), ориентировались на более слабое железо во время "стремительно исчезающего смысла". Или не было никакого "стремительно исчезающего смысла", а была небольшая рыночная ниша любителей Forth, про которую и они сами и говорили. Одно из двух.

Кстати, некоторые недостатки ZX81 Викерс и Альтвассер при разработке Jupiter Ace учли. В частности, применили механическую клавиатуру вместо мембранной. И даже динамик, отсутствующий у ZX81 предусмотрели. И место под два ПЗУ.

Но все это не помогло их компьютеру стать сколь ни будь массовым (читай: популярным). Ибо даже пиратки (не считая клонов) на ZX-ы Синклера вышло в разы больше, чем доработанного (в плане железа) Jupiter Ace со встроенным Forth вместо Бейсика.

Lethargeek
29.11.2023, 17:46
и сколько процентов этим воспользовались из числа купивших?
да небось немало, если по воспоминаниям буржуев покупали новый только для немедленного обмена


В 1983 году Commodore начал ценовую войну, которая привела к снижению цен, в том числе и на ZX Spectrum. На рынке США в 1983 году Таймекс продал 400 тысяч TS1000 и еще 100 тысяч в Канаде. Часть из них (в том числе новые в коробках) выкупил в трейд-ин Commodore. Это позволило ему твердо закрепиться на американском рынке бытовых компьютеров. Дальнейшие попытки продвижения Таймесом более продвинутых в плане железа (аналогичных ZX Spectrum) TS2068 окончились неудачей. Это к заявлению "спектрум вышел". Как вышел (на американском рынке), так и ушел.
как говорится, "следите за руками" - сам же начинал про британский рынок, сам же соскочил на американский
и да, на американском у народа денег было побольше, требования к железу повыше


Откуда же берется на ebay множество лотов TS1000,
неликвиды?


ведь их продают там больше, чем британских ZX81 (которые Commodore не выкупал в трейд-ин)?
а буржуи вспоминали, что выкупал


Разумеется, Commodore ни в те годы ни позднее не барыжил выкупленными (часть была Б/У) TS1000.
к чему это "разумеется"? никто здесь вроде бы такого не утверждал


Только ленивый мог не заметить, что с момента входа Jupiter Ace предлагались несколько модулей расширения ОЗУ на любой вкус и карман.
только ленивый мог не вспомнить все недостатки подобного решения


на любой вкус и карман.
на любой карман, ахахах, одна только лишь убогая база уже стоила 90 фунтов, а к ней за 16k выложи еще 40
что в сумме получается даже чуть дороже стартового ценника спектрума-16 (вдруг кто забыл))
у которого цветной графэкран (так что и "на вкус" не любой, а на "очень специфичный, ты не поймёшь")))


И еще много другого железа.
"много" - это сколько и по сравнению с чем?


Для "тестового экрана" ZX81 в 1982 году (когда уже вышел ZX Spectrum) было издано 130 игр. А в 1983 году еще 56 игр.
инерция


Для Jupiter Ace в 1982 году вышло 6 игр, а в следующем 1983 году 18 игр.
совершенно ничтожное количество (да и качество у некоторых такое, будто школьник на уроке информатики сочинил)


Вот такой "стремительно исчезающий смысл".
именно - зачем в 1983 рынку ЕЩЕ один слабый (и есс-но несовместимый с прочими) комп?


Видимо разработчики Jupiter Ace были глупыми, поскольку зная о выходе ZX Spectrum (сами его и разрабатывали), ориентировались на более слабое железо во время "стремительно исчезающего смысла"
видимо, они были бедными


Или не было никакого "стремительно исчезающего смысла", а была небольшая рыночная ниша любителей Forth, про которую и они сами и говорили. Одно из двух.

Кстати, некоторые недостатки ZX81 Викерс и Альтвассер при разработке Jupiter Ace учли. В частности, применили механическую клавиатуру вместо мембранной. И даже динамик, отсутствующий у ZX81 предусмотрели. И место под два ПЗУ.

Но все это не помогло их компьютеру стать сколь ни будь массовым (читай: популярным). Ибо даже пиратки (не считая клонов) на ZX-ы Синклера вышло в разы больше, чем доработанного (в плане железа) Jupiter Ace со встроенным Forth вместо Бейсика.
просто надо было выпускать на безрыбье, где-то в Польше, Югославии или Венгрии
там бы схавали, и "рыночная ниша" примерно равнялась бы всей стране
а в Британии такому поделию с таким ценником в 1983 уже ничего не могло помочь

Conan
30.11.2023, 13:49
ZX81 несмотря на минимальный объем встроенного ОЗУ, упрощенную архитектуру, неудобную мембранную клавиатуру и множество других недостатков был любимым компьютером сэра Клайва Синклера. Именно ZX81 продаваемый миллионными тиражами в Великобритании и США принес ему мировую известность на рынке домашних компьютеров. Встроенный Бейсик и ввод команд нажатием одной клавиши одна из причин успеха ZX81. Спустя 40 лет в интервью Ричард Альтвассер сказал (https://youtu.be/nLnuY3EKnWE?t=1357):

Когда кто-нибудь пытается начать учиться чему-то новому, будь то игра на пианино, или вождение машины, или что-то еще, наступает своего рода переломный момент, когда удовольствие и награда превышают тяжелую работу по обучению. И, чем раньше этот момент наступает, тем лучше. … Система ключевых слов (токенов Бейсика) позволила людям очень быстро на раннем этапе использования компьютера иметь возможность напечатать несколько команд и увидеть результат (вознаграждение) на экране…
Никаких токенов и простоты Бейсика в Jupiter Ace не было. Массовым и популярным этот компьютер не мог стать именно потому, что имел встроенный Forth. Далее в интервью Альтвассер открыто говорит, что это было движение «против течения рынка», но технически и коммерчески Jupiter Ace был вполне успешен (в своей нише).
Идею использовать Forth вместо Бейсика принес Стивен Викерс, от кого-то из своих знакомых. Возможно, и Джон Грант (который предлагал Клайву Синклеру встроить Forth еще в ZX80) повлиял на это решение Викерса. Продав всем желающим (около 300 быстро купили и общий тираж 5 тыс.) Jupiter Ace Стив Викерс вернулся в академическую науку.


видимо, они [Викерс и Альтвассер] были бедными
Видимо Commodore тоже была "бедной" компанией (опубликовано в Popular Computing Weekly за май 1982 года, страница 5):

На недавней выставке в Ганновере компания Commodore представила довольно подробные спецификации своей новой линейки микрокомпьютеров, включая Ultimax (теперь переименованный в Vic-10) и Vic-30. Предполагаемая цена продажи Vic-10 составляет 100 фунтов стерлингов, а ожидаемая дата начала продаж - сентябрь этого года. Объем встроенной оперативной памяти составляет всего 2 КБ, а Бейсика в нем нет.

Добавлю лишь, что помимо упрощенного железа у Vic-10 была мембранная клавиатура:
https://www.c64-wiki.com/images/f/f5/VC10.jpg

Что касается трейд-ин (выкупа имеющегося компьютера при продаже нового) у Commodore в Великобритании. Да, такие объявления публиковались в начале 1982 года:
https://static.nosher.net/archives/computers/images/adve_033-m.jpgПредложение трейд-ин в Великобритании касалось дорогого Commodore PET, а доплата за трейд-ин (£ 50) не покрывала цены даже самых дешевых ZX81. Поэтому никакого массового обмена с доплатой не последовало (https://nosher.net/archives/computers/adve_033#2) (в отличие от США годом позднее):

Это любопытная попытка Commodore убедить пользователей ZX80 и ZX81 - небольших, с малым объемом памяти и чисто домашних компьютеров, которые подключались к телевизору и которые можно было держать в одной руке, - перейти на Commodore PET, большую машину "все в одном", которая весила 20 кг и была довольно известна в бизнесе и школьном секторе. PET был удобнее в использовании благодаря механической клавиатуре и достаточному объему памяти, а также тем, что в отличие от ZX80, экран не выключался каждый раз, когда вы что-то вводили. Возможно, Commodore достигла бы успеха, если попыталась переманить владельцев ZX на VIC-20, выпущенный в Великобритании всего за несколько месяцев до этого. Это было бы гораздо более правильным решением, но его не предложили. Да, и цена: менее £ 100 за ZX81 и около £ 450 за PET после трейд-ин.

Commodore, по-видимому, не знала, что делать с компьютерами Синклера, хотя представитель компании Кит Холл предположил, что компания пожертвует их все на благотворительность, если "мы получим разумное количество машин в удовлетворительном состоянии". Между тем Клайв Синклер заявил, что, хотя схема Коммодора была "привлекательной", она не причинила Синклеру никакого реального вреда, поскольку компьютеры не были "в прямой конкуренции".
Напомню, что у ZX-ов и Commodore PET на которые их предлагалось менять встроенный язык - Бейсик.

andrews
30.11.2023, 15:07
ZX-81 выключал экран при вводе только в режиме FAST, в режиме SLOW этого не происходило. Commodore PET выпускался с 1977 года на первом процессоре семейства 6502, весил 20 кг и занимал много места. С другой стороны он имел штатный дисплей( правда графический режим отсутствовал). Клавиатуры zx81, Timex TS1000 и TS1500 и серии PET проясните пожалуйста. Кажется только у первых образцов zx81 она была мембранная. Но зато операторы Бейсика вызывались нажатие одной клавиши, а у PET нет.

Из-за веса и дисплея это имхо не сравнимые компьютеры. И понять людей, которые сперва приобретали zx81, а потом отдавали их и доплачивали для приобретения PET довольно сложно.

Conan
30.11.2023, 16:05
понять людей, которые сперва приобретали zx81, а потом отдавали их и доплачивали для приобретения PET довольно сложно.20 лет назад мне удалось найти человека (из UK) отказавшегося от ZX Spectrum в пользу Commodore 64, но без всяких акций.

Трейд-ин (по рекламе выше) продолжался всего три месяца (до 31 марта 1982 года). Далее Commodore просто снижал цену, а Синклер вслед за ним.

andrews
01.12.2023, 11:04
Но речь же шла о zx81 и Commodore PET( оба с текстовыми экранами и бейсиками с пзпт).

Conan
01.12.2023, 19:25
речь же шла о zx81 и Commodore PETРынок домашних компьютеров в Великобритании был очень велик и случаи смены платформ/моделей имели место. Но говорить о сколь ни будь массовом переходе по трейд-ин программе с ZX80/81 на PET - натягивание "тульского пряника" на глобус. Ибо помимо розницы был вторичный рынок. Цены там выше, чем скидка по трейд-ин PET. Если человек хотел экономно перейти с ZX80/81 на Commodore ему выгоднее было продать компьютер, особенно если в комплекте имелись книги и софт. Например, страничка с десятком объявлений о продаже ZX81 (журнал Personal Computer World за февраль 1982 года):https://onedrive.live.com/embed?resid=F55CEE7E150E297A%21506919&authkey=%21AOFLNKu8tU2jmxc&width=2540&height=3567

В США в 1983 году ситуация с ценами выглядела иначе. Там скидка по трейд-ин у Commodore на некоторое время оказалась выше, чем розничная цена (плюс налоги) за TS1000 (ZX81). Таймекс распродавал остатки, и несколько магазинов предлагали предзаказ для отправки сразу в Commodore по трейд-ин. То есть покупатель не видел компьютера, не связывался с доставкой/проверкой/отправкой и не рисковал, что трейд-ин закончится. Поскольку это было беспрецедентным событием, шумихи вокруг него оказалось больше, чем реальных заказов. Говорить об этой акции, как о причине популярности TS1000 (выразившейся в продаже более миллиона компьютеров в Америке) - натягивание "тульского пряника" на глобус.

Lethargeek
02.12.2023, 23:29
ZX81 несмотря на минимальный объем встроенного ОЗУ, упрощенную архитектуру, неудобную мембранную клавиатуру и множество других недостатков был любимым компьютером сэра Клайва Синклера.
тут скорее "по причине", чем "несмотря", дядя Клайв известный "экономист" :D


Именно ZX81 продаваемый миллионными тиражами в Великобритании и США принес ему мировую известность на рынке домашних компьютеров.
"миллионными" это больше ну хотя бы двух миллионов, а официально только "больше полутора"
и не забываем, что основные продажи - до выхода спектрума и комода, конечно же


Встроенный Бейсик и ввод команд нажатием одной клавиши одна из причин успеха ZX81.
это не причина, а следствие, и не успеха, а убожества аппаратного


я 40 лет в интервью Ричард Альтвассер сказал:
Когда кто-нибудь пытается начать учиться чему-то новому, будь то игра на пианино, или вождение машины, или что-то еще, наступает своего рода переломный момент, когда удовольствие и награда превышают тяжелую работу по обучению. И, чем раньше этот момент наступает, тем лучше. … Система ключевых слов (токенов Бейсика) позволила людям очень быстро на раннем этапе использования компьютера иметь возможность напечатать несколько команд и увидеть результат (вознаграждение) на экране…
типичная попытка выдать нужду за добродетель, а уж "очень быстро на раннем этапе" - совсем уж нагло
я-то помню, как люди без опыта поначалу могли аж по нескольку минут каждую команду выискивать


Никаких токенов и простоты Бейсика в Jupiter Ace не было.
токены на кнопках - это не про простоту, а про экономию за счёт юзверя
запомнить расположение сорока символов всяко проще, чем многие десятки аккордов
и посимвольный набор быстрей тоже (на нормальной клаве, естественно)


Массовым и популярным этот компьютер не мог стать именно потому, что имел встроенный Forth.
ну, то есть, если бы там был бы бейсик вместо форта, то поделие сразу стало бы мегапопулярным?
то есть больше вообще ничто не смущает - ни убогое железо, ни неадекватный на него ценник?
ни, наконец, количество примеров не ставших популярными компов со встроенным бейсиком


Видимо Commodore тоже была "бедной" компанией (опубликовано в Popular Computing Weekly за май 1982 года, страница 5):
На недавней выставке в Ганновере компания Commodore представила довольно подробные спецификации своей новой линейки микрокомпьютеров, включая Ultimax (теперь переименованный в Vic-10) и Vic-30. Предполагаемая цена продажи Vic-10 составляет 100 фунтов стерлингов, а ожидаемая дата начала продаж - сентябрь этого года. Объем встроенной оперативной памяти составляет всего 2 КБ, а Бейсика в нем нет.
из цитаты как раз следует, что богатой, раз могла за раз выкатить целую ЛИНЕЙКУ компов :p
и ключевое в ней - это "vic-30", позднее известный как c64 :) а "vic-10" - это он же для бедных


Добавлю лишь, что помимо упрощенного железа у Vic-10 была мембранная клавиатура:
лучше бы добавил, что остальное "упрощенное" железо - это полноценные вик и сид
из-за сида и картриджей в том обрезке даже появлялся какой-то смысл
да и памяти там не два, а четыре килобайта, статейка врёт
правда, всё равно его отменили


Что касается трейд-ин (выкупа имеющегося компьютера при продаже нового) у Commodore в Великобритании.
...
не "в Великобритании", а везде, и не только на пет, но и на комод
но неважно, зря только потрачено столько сил и времени на борьбу с соломенным чучелом
речь-то ведь велась не о том, где и сколько обменяли в итоге таймексов и столь же слабых аналогов
а о том, что в 1983 это было для них ЛУЧШЕЕ ПРИМЕНЕНИЕ


Говорить об этой акции, как о причине популярности TS1000 (выразившейся в продаже более миллиона компьютеров в Америке) - натягивание "тульского пряника" на глобус.
не, типичное натягивание на глобус - это говорить о встроенном форте как о главной/единственной причине непопулярности, полностью игнорируя остальные факторы (в первую очередь неадекватное времени железо и неадекватный железу ценник) :rolleyes:

andrews
03.12.2023, 12:32
и посимвольный набор быстрей тоже
прежде чем быстро набирать, надо еще знать. Тут тот же эффект что в китайском языке с появлением компьютеров. Уже не нужно было уметь нарисовать иероглиф, достаточно найти и кликнуть!
Форт - для избранных. Простой народ со средним IQ не потянет. Поэтому если форт вместо бейсика, то и покупателей в разы меньше.

Conan
03.12.2023, 17:39
и не забываем, что основные продажи - до выхода спектрума и комода, конечно же
Конечно же не забываем:
ZX Spectrum - начало продаж апрель 1982 года
Commodore 64 - начало продаж август 1982 года
Timex Sinclair 1000 - начало продаж июль 1982 года. Продано более миллиона за 1982-83 годы.

Вот такие сказочные "до".



тут скорее "по причине", дядя Клайв известный "экономист"Дядя Клайв к маркетингу, рекламе и продажам миллиона Timex Sinclair 1000 в Америке и близко не подступался. ЛИКБЕЗ (https://www.timexsinclair.com/computers/timex-sinclair-1000/):


Продажи.
TS1000 вызвал массовый всплеск интереса, когда был выпущен в июле 1982 года.
У Timex, несмотря на отсутствие опыта в маркетинге компьютеров, был опыт розничной продажи потребительских товаров. Когда они вышли на рынок, у них был доступ к 171 000 розничным точкам, где уже продавалась их продукция.
Потребители внезапно получили возможность покупать компьютеры в местах, которые они уже знали и которым доверяли, от универмагов и сетей, таких как K-Mart, до компьютерных магазинов, бытовой электроники, ювелирных изделий и аптек.
Только у K-Mart было более 1100 магазинов, торгующих домашними компьютерами. И Timex предложила крупным розничным торговцам, таким как K-Mart, отдельный киоск для увеличения продаж компьютеров.
Кроме того, они наняли опытных маркетологов, таких как Марго Мерфи, в дочернюю компанию Timex Computer Corporation, чтобы обеспечить успешный запуск. Мерфи руководил разработкой и производством упаковки продукта и маркетинговых материалов, а также проводил исследования потребительского рынка, даже посещая отдельные торговые точки, чтобы увидеть и услышать, как клиенты воспринимают продукт.
Маркетинговое мастерство Timex окупилось сторицей: за пять месяцев, последовавших за запуском TS1000, компания продала 550 000 машин.
По данным компьютерной исследовательской фирмы Future Computing, Timex продала 20% всех домашних компьютеров, приобретенных в 1982 году.
Timex также была стимулирована сделкой с Sinclair, которая позволила им продавать до 900 000 единиц без роялти.
Обратите внимание на последнее предложение. Именно выплата роялти, с учетом проданного миллиона Timex Sinclair 1000 в условиях ценовой войны заставила Таймекс выпускать собственные и не слишком удачные модели для американского рынка.

Conan
04.12.2023, 11:25
Поэтому если форт вместо бейсика, то и покупателей в разы меньше.Даже не в разы, а на порядки. И "слабое железо" совсем не мешало покупателям машин с Бейсиком. На британском рынке в апреле 1982 года вышел ZX Spectrum (с усиленным железом), затем Forth для него, а ZX81 все продавались в бОльших объемах. Наступил 1983 год, продажи Спектрумов выросли, закрылся Jupiter Cantab Ltd (производивший Jupiter Ace со встроенным Forth), а ZX81 с Бейсиком все раскупали и раскупали. Закончился 1983 год, наступил 1984 год, Commodore 64 (тоже с Бейсиком) стал лидером мировых продаж, Синклер выпустил QL, Таймекс объявил об уходе с американского рынка ПК, а ZX81 выпускался без изменений, с Бейсикоми и слабым железом (!) уже более трех, и упрямые британцы все норовили его купить (SU Annual 1985 - итоги 1984 года):

Рекордные продажи продолжаются несмотря на пик покупок домашних компьютеров в начале года. Синклер продал более миллиона Spectrum, и в то же самое время люди продолжали покупать их вместе с ZX-81 по 50 000 в месяц. Увы, этого все еще было недостаточно для удовлетворения спроса, и в течение года по всей стране поступали сообщения о нехватке.


https://onedrive.live.com/embed?resid=F55CEE7E150E297A%21327699&authkey=%21ABYD7kSCw1cMICI&width=969&height=1341

И "конечно же" все купившие ZX81 бежали менять их на Commodore или подпирали двери, поскольку слабое железо, нет графики для игр, а без этого даже дешевые компьютеры "никому не нужны":
https://onedrive.live.com/embed?resid=F55CEE7E150E297A%21327718&authkey=%21ANDpsP7JKQ4TwMw&width=969&height=1336

andrews
04.12.2023, 22:31
И "конечно же" все купившие ZX81 бежали менять их на Commodore или подпирали двери, поскольку слабое железо, нет графики для игр, а без этого даже дешевые компьютеры "никому не нужны"
В СССР в это время (1982-83гг)был бум на программируемые калькуляторы, компьютеры с псевдографикой на 8080 по цене в 3-4 месячных зп инженегра появились после 1987 года.

Хотя почему никому в голову не пришло производить аналог MK14 ( 6 семисегментных индикаторов и расширенная клавиатура, которую массово производили для клавишных бухгалтерских калькуляторов) на 8031 или светлановской однокристаллке, ума не приложу.

Впрочем ...а кто мешал в поле данных вместе с машинными кодами выводить номера токенов бейсико-подобного ЯВУ?

Lethargeek
05.12.2023, 10:26
прежде чем быстро набирать, надо еще знать.
знать, блин, ЧТО? англоамеры, по-твоему, не знают английских слов (а over 95% яву на основе инглиша) и не смогут их набрать на клавиатуре?

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


Конечно же не забываем:
ZX Spectrum - начало продаж апрель 1982 года
Commodore 64 - начало продаж август 1982 года
Timex Sinclair 1000 - начало продаж июль 1982 года. Продано более миллиона за 1982-83 годы.

Вот такие сказочные "до".
:v2_dizzy_facepalm: вот не первый раз уже наблюдаю
интересно, это сознательная жульническая тактика или просто память как у рыбки стала уже?
если как у рыбки, то я напомню -
а) Conan сам пишет про ZX81:

ZX81 несмотря на минимальный объем встроенного ОЗУ, упрощенную архитектуру, неудобную мембранную клавиатуру и множество других недостатков был любимым компьютером сэра Клайва Синклера.

Именно ZX81 продаваемый миллионными тиражами в Великобритании и США принес ему мировую известность на рынке домашних компьютеров.
б) Lethargeek НА ЭТО отвечает про ZX81 же:

тут скорее "по причине", чем "несмотря", дядя Клайв известный "экономист"

"миллионными" это больше ну хотя бы двух миллионов, а официально только "больше полутора"
и не забываем, что основные продажи - до выхода спектрума и комода, конечно же

в) вслед за чем Conan привычно переводит стрелки - в этот раз исключительно на Timex1000:

Timex Sinclair 1000 - начало продаж июль 1982 года. Продано более миллиона за 1982-83 годы.

Дядя Клайв к маркетингу, рекламе и продажам миллиона Timex Sinclair 1000 в Америке и близко не подступался. ЛИКБЕЗ:
(хотя и это не особенно помогает, ведь даже ТОЛЬКО TS1000 в США всё равно продавалось и заказывалось больше в первые месяцы)

так что прежде чем проводить тут пафосные "ЛИКБЕЗЫ", надо бы сперва пропить таблеток для памяти, чтобы не забывать хотя бы собственные посты :v2_dizzy_stop:

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


Даже не в разы, а на порядки. И "слабое железо" совсем не мешало покупателям машин с Бейсиком. На британском рынке в апреле 1982 года вышел ZX Spectrum (с усиленным железом), затем Forth для него, а ZX81 все продавались в бОльших объемах. Наступил 1983 год, продажи Спектрумов выросли, закрылся Jupiter Cantab Ltd (производивший Jupiter Ace со встроенным Forth), а ZX81 с Бейсиком все раскупали и раскупали. Закончился 1983 год, наступил 1984 год, Commodore 64 (тоже с Бейсиком) стал лидером мировых продаж,
а вот, например, ну хотя бы Oric (тоже с бейсиком) почему-то не стал (видать, бейсика недоложили в него немножко))


Рекордные продажи продолжаются несмотря на пик покупок домашних компьютеров в начале года. Синклер продал более миллиона Spectrum, и в то же самое время люди продолжали покупать их вместе с ZX-81 по 50 000 в месяц.
кто на ком стоял - непонятно

andrews
05.12.2023, 11:08
знать, блин, ЧТО?
конкретный Бейсик - вот что! Его ключевые слова и их действия! Вот подписанная кнопка. Жамкнул - и сразу наблюдай её действие на экране. Были бы кнопки на шаблоны программ для их дальнейшего редактирования было бы тоже прикольно( ведь вообще любая работающая программа это "шаблон", хотя если раздумывать о том "как скрестить ужа с ежом" - то не любая). Типа нарисовать прямоугольник. построить график функции, решить квадратное уравнение и т.п. Хотя при ограниченной памяти компа и обычном бытовом магнитофоне это было сделать не так просто. Хотя почему и нет? Просто выведи на экран подсказку "поставьте на ваш магнитофон кассету N x сторона 0 и ожидайте z минут. А если взять DCC951?
Сегодня при наличии эмуляторов магнитофона это вообще не проблема! Но только не при "подходе коллекционера"!

Английский многозначный язык. А разве есть хоть один ЯВУ, где разные ключевые слова, вызывают одни и те же действия? Это сейчас поисковик Yаndex-а умеет корректировать ошибки при наборе, а тогда разве было такое? Что посимвольно набираешь неправильно, а главная программа обрабатывает на лету, корректирует и после подтверждения вводит правильно? Хотя бы в интерактивном режиме.
Форт как ни крути более гибок и неоднозначен. И если уж на бейсике в режиме непосредственной интерпретации такое не делали, то в Форте и подавно!

Conan
05.12.2023, 12:57
прежде чемпрежде чем делать заявления и давать советы вселенского масштаба, неплохо (хотя бы чуток) на факты опираться (ссылаться). А вместо этого сплошные: "он сказал, я сказал"... Скучно и комментариев недостойно. Ровно, как и детсадовское: "миллионные тиражи это не 1,5 млн, а от двух".

Любителю таблеток для памяти, напомню: ZX81 (https://en.wikipedia.org/wiki/ZX81) и TS1000 (https://en.wikipedia.org/wiki/Timex_Sinclair_1000) по внешнему виду, функционалу, железу и встроенному ПО практически не отличались. Заявления: "Синклер не продал много ZX81 потому, что TS1000 это ДРУГОЕ" = натягивание тульского кренделя на глобус. Ибо речь об одинаковых, минимальных по железу компьютерах с одинаковым встроенным Бейсиком. Оба продавались успешно на рынках британии и США.

Готов увидеть и обсудить с любым форумчанином любую публикацию начала 80-х в бриранском или американском изданиях о плохих продажах указанных компьютеров. Будет такая?
Обсуждать пустопоржнее:
это ДО выхода спектрума, за которым ZX80/81 быстро перешли в разряд стопора для дверей и "какбэкомпа" обмена по акции на комод - не готов.

По датам повторю еще раз: ZX81 (даже без TS1000) имел на порядки большую популярность чем Jupiter Ace (https://en.wikipedia.org/wiki/Jupiter_Ace) в любые годы (до, во время и после выпуска Jupiter Ace). Количественные показатели приведены выше по ссылкам. Даты находятся там же.



а вот, например, ну хотя бы Oric (тоже с бейсиком) почему-то [популярным] не сталОтличный пример! Популярность, выраженная в кол-ве проданных Oric-1 (https://en.wikipedia.org/wiki/Oric) (210 тыс.) со встроенным Бейсиком примерно в 8 раз меньше, чем ZX81 (1,5млн), но в 40 раз (!) выше, чем у Jupiter Ace (5 тыс.) со встроенным Forth вместо Бейсика.

Такое вот очередное сказочное заявление "с Бейсиком популярен не стал".

Никто не утверждает, что исключительно лишь встроенный Бейсик (любой) гарантия успеха (критерии?) на рынке домашних ПК в начале 80-х. Степень популярности (массовости) у компьютеров с Бейском разная. Начиная с сотен тысяч у Oric-1 и заканчивая десятком миллионов у Commodore 64. ZX-ы где-то посередине. Но попытка заменить Бейсик чем-то еще (например, Forth) не приводила к популярности (массовости) от слова совсем (см. Jupiter Ace).

andrews
05.12.2023, 14:19
Интересно сравнить с современными BBC micro:bit

Conan
05.12.2023, 16:12
Интересно сравнить с современными BBC micro:bitОтносительно современные одноплатные устройства, это совсем не в эту тему. Их надо сравнивать с современным (близким по времени, функциям и цене) железом.

Но если уж смотреть на Микробит (BBC micro:bit) в контексте предыдущей истории, связанной с BBC Micro и ZX-ами, то заметны очень неприятные совпадения:
Спустя 30 лет, бюрократическая медиаимперия, живущая на деньги налогоплательщиков, опять вспомнила о своей образовательной миссии и решила осчастливить британских школьников своей уникальной разработкой.
Деньги собрали и потратили, а результат получился средним: наштамповали 6,5 млн (https://www.bbc.co.uk/teach/microbit/what-is-the-microbit/zfjg8p3) которые бесплатно раздали в школы.
Сравнив с кол-вом купленных обычными людьми за живые деньги Raspberry PI (20-30м (https://forums.raspberrypi.com/viewtopic.php?t=287196) и забыв о разных Arduino) виден "масштаб" достижений. Еще нагляднее он измеряется кол-вом опубликованного софта (библиотек, проектов и т.д.).

Если уж BBC возбудилась (в очередной раз) чтобы подтолкнуть обучение программированию в школах, разумно было не прокручивать деньги через свои бездонные бюрократические жернова, а выдать родителям школьников по купону, на стоимость аналогичного устройства, с возможностью отоварить по своему выбору: хочешь купи дешевый одноплатник и обвязку к нему, хочешь более продвинутый без обвязки. Список производителей - по желанию.

При этом BBC могли в своих телепрограммах сравнивать разные варианты выбора с их плюсами и минусами для разных задач. А детишек с наиболее интересными (популярными, скачиваемыми, обсуждаемыми) решениями приглашать в студию или давать ссылки на их каналы. И монетизация работает (прямой стимул) и популярность (очень важный стимул) и конкуренция (разные платформы).

А в итоге все свелось (на Micro Bit) к редким грантам партнеров проекта (их довольно много) и унылой возне учебным стандартам. Зато теперь все дети знают, как заставить моргать светодиод на плате, а продвинутые даже смайлик нарисуют. В общем превратили зажигательную творческую историю в нудное школярство. Стимулов стать крутым программистом или железячником британцам это почти не прибавило. Рынок труда - доказательство.

Сравнивать это с началом 80-х, бумом домашних компьютеров (когда почти все школьники мечтали разработать крутую игру - ибо слава и деньги) это как сравнивать рыбалку для пропитания в походе на дикой реке с домашней игрой «поймай рыбку в коробочке с магнитиком». Зато "ни одно животное не пострадало".

andrews
05.12.2023, 16:35
Я про BBC micro:bit вспомнил потому, что он снова как в начале 80-х обходится без операционки и имеет поддержку со стороны кросс-инструментальных средств, в частности Scratch. Это доступно даже некоторым 5 летним деткам. То, что это похоже на игру, это имхо скорее плюс.

Arduino и тем более Raspberry PI это скорее для очень немногих даже первоклассников, опять же имхо. Другое дело, что тот же Scratch есть и под Android.

Conan
05.12.2023, 16:56
Есть возможность установить в одноплатник ОС или нет в данном случае вторично. Без компьютера (с ОС) на голой железке программировать не получится.

Без признания в большом мире (сверстников или взрослых) любой проект становится местечковым и быстро сходит на нет. Замысел BBC c Миробит-ом (если верить их пресс-релизам) был в том, что навыки, полученные школьниками, будут востребованы партнерами проекта (а это список ведущих мировых ИТ-компаний). Но что-то пошло не так, и партнеры оказались не у дел. А дети остались в «песочнице» вместе с учителями.

andrews
05.12.2023, 18:05
Есть возможность установить в одноплатник ОС или нет в данном случае вторично. Без компьютера (с ОС) на голой железке программировать не получится
получается. Там на компе wifi, можешь отлаживать со смартфона с Андроидом. MK14 и ему подобные системы были без ОС и допускали отладку в кодах. Хотя на МСУВТ В7 1982 г. вдобавок к монитору был редактор и ассемблер в ППЗУ. Поэтому я начинал с ввода кодов для 8080 на пленочной клавиатуре(это та же мембранная только на группу клавиш французская технология была внедрена на АЭМЗ Александрия Кировоградской УССР) и 6 семисегментных индикаторов, а потом подключил монитор фрязинский и бытовой магнитофон и стал все писать на ассемблере ппзу-ном, а свои программы сохранял или на кассетах или на бумажной ленте телетайпа РТА-80.

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


любой проект становится местечковым и быстро сходит на нет
там разные датчики подключаются. Можно управлять школьной оранжереей. Для будущих embedder-ов весьма ценный опыт. То, что игры примитивные, увеличивает шансы написаний полезных приложений для управления и контроля. Хотя вроде цветомузыка даже там есть.

Пока у Scratch маловато расширений и непонятно можно ли писать свои?

Conan
06.12.2023, 12:26
получается. Там на компе wifi, можешь отлаживать со смартфона с Андроидом. ...там разные датчики подключаются. Можно управлять школьной оранжереей. Для будущих embedder-ов весьма ценный опыт.Графический конструктор (редактор) в Scratch заточен под мышку и клавиатуру. Можно (если глаза ребенка не жалко) и на смартфоне отлаживать, но зачем?
Для массы практических задач (управление оранжереей, теплицей и т.д.) требуются исполнительные механизмы, а список совместимого железа (https://en.scratch-wiki.info/wiki/Hardware_That_Can_Connect_to_Scratch#micro:bit) весьма ограничен. И есть подозрение, что нынешним детишкам будет куда интереснее анимешных героев туда пририсовать, чем систему полива цветка собирать. Что, собственно, в библиотеке Scratch и наблюдается.


MK14 и ему подобные системы были без ОС и допускали отладку в кодах.В MK14 встраивался только монитор, каких-то особых средств отладки в нем не было - все вручную. Обучать студентов основам машинного кода в те времена на подобных платах еще куда ни шло, но для начинающих (школьников) это чуток хардкорно.

В 1986 году на первом курсе МЭИ (РТФ) были лабораторные с программированием в кодах на 580ИК80. Тренажеры выглядели примерно так, как МК14. Ввод вручную длинного кода, на маленькой клавиатурке, с листочка, чтобы убедиться в его неработоспособности, и после исправления повторение всего с начала... не для слабых духом. Студенты со скрипом лабы выполнили, выдохнули и забыли.

В фильме (Micro Men) Клайв Синклер показан надменным злодеем запрещающим Кристоферу Карри развивать MK14. Чего в реальности (со слов самого Карри) не было. А вот вопросы, кто будет это покупать, наверняка возникали. И представить папу (водителя-почтальона-рабочего) и уж тем более одинокую маму, разбирающуюся с ребенком в программе на ассемблере это не для всякого воображения...

Вот, тогда-то и потребовался Бейсик. Любой, даже самый примитивный, но хоть как-то похожий на арифметику и не требовавший выворачивать мозги начинающего наизнанку.

andrews
06.12.2023, 15:36
Были бы кнопки на шаблоны программ для их дальнейшего редактирования было бы тоже прикольно( ведь вообще любая работающая программа это "шаблон", хотя если раздумывать о том "как скрестить ужа с ежом" - то не любая)
вот решение даже для mk14! Необходимо было бы стандартизировать блок ввода данных и кроме ячеек памяти отображать регистры по номерам хотя бы. На русском на семисегментнике легко отображаются : от РЕГ1 до РЕГb A, F, B, С, D, E, H, L, SP и PC. Просто нужно добавить клавиши: РЕГ и ОСТАНОВ( точка останова) к RUN, и ШАГ( для выполнения команды по шагам). На крышку такого девайса вешались две таблички по номерам инструкций и в порядке алфавита инструкции с кодами.
В СССР кстати была такая машинка для учащихся техникумов и пту на 8080. К сожалению не запомнил ее названия и производителя. Но там не было последовательного порта и невозможно к ней было подключить ни дисплей, ни магнитофон.

Монитор в ПЗУ конечно нужно иметь более расширенный чем в МК14. Точку останова необходимо иметь возможность задавать, отображать регистры при останове, менять их содержимое, выполнять программу по шагам. Ну а для эмуляции и это далеко не предел.
В MK14 конечно же просился z80 и двустрочный ЖКИ индикатор на 40 символов двухцветный. Но и был выпущен Cambridge Z88.

Lethargeek
22.12.2023, 00:37
конкретный Бейсик - вот что! Его ключевые слова и их действия! Вот подписанная кнопка. Жамкнул - и сразу наблюдай её действие на экране.
нет, вот 40 кнопок и на каждой несколько надписей, и чтоб "жамкнуть" - с непривычки надо несколько минут выискивать нужную
а по буквам - уж давно бы набрал команду и узнал, вызывает ли она ошибку в "конкретном бейсике"
это уж не вспоминая, что параметры всё равно смотреть надо в мануале

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


Любителю таблеток для памяти, напомню: ZX81 и TS1000 по внешнему виду, функционалу, железу и встроенному ПО практически не отличались.
доооо, уместить бейсик-программу в килобайт встроенной памяти это же "практически не отличается" от задачи уместить в два
разные телестандарты, разные минимальные конфигурации, разная их себестоимость (плюсом к ней еще допэкранирование)


Заявления: "Синклер не продал много ZX81 потому, что TS1000 это ДРУГОЕ" = натягивание тульского кренделя на глобус.
не было такого, а было вот что:

ZX81 несмотря на минимальный объем встроенного ОЗУ, упрощенную архитектуру, неудобную мембранную клавиатуру и множество других недостатков был любимым компьютером сэра Клайва Синклера.

тут скорее "по причине", чем "несмотря", дядя Клайв известный "экономист"

Дядя Клайв к маркетингу, рекламе и продажам миллиона Timex Sinclair 1000 в Америке и близко не подступался.
ни с того ни с сего приплетать клон к вопросу о том, какой из оригиналов любимец автора - это и есть "натягивание кренделя"


Ибо речь об одинаковых, минимальных по железу компьютерах
прямая ложь


По датам повторю еще раз: ZX81 (даже без TS1000) имел на порядки большую популярность чем Jupiter Ace в любые годы (до, во время и после выпуска Jupiter Ace).
ну-ка стоп, "на порядки" - эти минимум на два порядка, то есть в сто раз
пруфы будут, что во время юпитера продано полмиллиона "ZX81 (даже без TS1000)"?
или так, "вселенское заявление"?


Количественные показатели приведены выше по ссылкам. Даты находятся там же.
хде, вот здесь, со ссылкой на педивикию?

годы производства ZX81 - 1981-1984
годы производства Jupiter Ace 1982-1984
ага, только вот By the end of October 1983, Jupiter Cantab had formally ceased trading. (https://www.theregister.com/2012/09/21/jupiter_cantab_jupiter_ace_is_30_years_old/?page=4)
итого для юпитера период 13 месяцев (да и zx81 не факт что найдутся платы 1984)


Отличный пример! Популярность, выраженная в кол-ве проданных Oric-1 (210 тыс.) со встроенным Бейсиком примерно в 8 раз меньше, чем ZX81 (1,5млн), но в 40 раз (!) выше, чем у Jupiter Ace (5 тыс.) со встроенным Forth вместо Бейсика.

Такое вот очередное сказочное заявление "с Бейсиком популярен не стал".
конечно, не стал - по сравнению с реальными конкурентами при сопоставимых характеристиках и датах


Никто не утверждает, что исключительно лишь встроенный Бейсик (любой) гарантия успеха (критерии?) на рынке домашних ПК в начале 80-х. Степень популярности (массовости) у компьютеров с Бейском разная. Начиная с сотен тысяч у Oric-1 и заканчивая десятком миллионов у Commodore 64. ZX-ы где-то посередине.
зато кое-кто пытается создать впечатление, будто форт - главная и чуть ли не единственная причина "непопулярности"


Но попытка заменить Бейсик чем-то еще (например, Forth) не приводила к популярности (массовости) от слова совсем (см. Jupiter Ace).
ахахах, то есть выкидывание бейсика из пзу песюка - причина его дальнейшей непопулярности?
именно поэтому бейсик решили вернуть в ставший популярнейшим от этого pcjr?
хотя, погодите-ка... :v2_dizzy_biggrin2:

andrews
22.12.2023, 10:58
нет, вот 40 кнопок и на каждой несколько надписей, и чтоб "жамкнуть" - с непривычки надо несколько минут выискивать нужную
это если писать программу, а чтобы ознакомиться с возможностями - нажимай любую. А вот если на клавиатуре буквы, то нажимай любую( и если комп продолжит за тебя, как сейчас в продвинутых редакторах и Яndex-е), то да - хоть какой-то эффект, а если нет, то кроме "error" в лучшем случае ничего не увидишь.
Параметры конечно нужны, но для многих операторов их не сложно воспроизвести. А для новичка восторг вызывает действие и набирать по буквам без навыка слепой печати и нормальной клавиатуры удовольствие еще то. А разыскивать символы на клавиатуре для непривычного к этому человеку разве проще?

Conan
22.12.2023, 20:26
разные телестандарты, разные минимальные конфигурации, разная их себестоимость (плюсом к ней еще допэкранирование)
...ни с того ни с сего приплетать клон к вопросуА еще у ZX81 и TS1000 разными были: упаковочные коробки, блоки питания и даже штепсельные вилки и даже разные адреса сервисных центров. И поэтому это совсем "разные" компьютеры. Про себестоимость особо улыбнуло, можно спросить: а она была ниже у ZX81 или TS1000?
Если следовать этой логике, то праворульная Тойота это "клон леворульной". Впрочем, называйте как угодно, ибо шоу с натягиванием тульского кренделя на глобус продолжается:

"на порядки" - эти минимум на два порядка, то есть в сто разНа порядки это значит что Jupiter-ов выпустили тысячи (5 тысяч), а ZX81 сотни тысяч. Вышло 300 000 или 600 000 ZX81 принципального значения для сравнения популярности - не имеет. Если интересны количественные оценки именно ZX81 (до выхода TS1000) - они есть (https://www.washingtonpost.com/archive/business/1982/10/25/clive-sinclair-launches-new-world-of-technology/ad91fddd-0b81-4937-8811-ccae3ee7080d/)


ага, только вот By the end of October 1983, Jupiter Cantab had formally ceased trading. (https://www.theregister.com/2012/09/21/jupiter_cantab_jupiter_ace_is_30_years_old/?page=4) итого для юпитера период 13 месяцевОтличная ссылка, из букв по ней вывод очевиден: производство Jupiter со встроенным Forth как развернули, так и свернули. Ибо спрос оказался минимальным.
Но ведь мы не урывками читаем, а целиком, поэтому забавно сравнить вот это заявление (про дороговизну Jupiter):

одна только лишь убогая база уже стоила 90 фунтов, а к ней за 16k выложи еще 40
с картинками из статьи по ссылке:
https://regmedia.co.uk/2012/08/06/ace_ads.jpg



кое-кто пытается создать впечатление, будто форт - главная и чуть ли не единственная причина "непопулярности"Кое-кто пытается опять натянуть тульский крендель на самовар, вместо того чтобы согласиться с очевидным: все популярные и массовые домашние компьютеры начала 80-х годов имели встроенный Бейсик. Попытки подсунуть потребителю другое (в случае с Jupiter это - Forth) успеха не имели.

Вместо этого опять передергивание и пустословие:

то есть выкидывание бейсика из пзу песюка - причина его дальнейшей непопулярности?
Простите, а какое отношение IBM PC в начале 80-х имел к рынку недорогих ДОМАШНИХ компьютеров?

andrews
22.12.2023, 23:13
все популярные и массовые домашние компьютеры начала 80-х годов имели встроенный Бейсик
и эта популярность Бейсика возникла не на пустом месте.

Barmaley_m
05.01.2024, 01:06
Уважаемым собеседникам удалось возбудить во мне интерес так, что я задумал и запилил свой собственный Бейсик!

За основу взял Altair BASIC 3.2 4K - прародителя почти всех классических бейсиков (Бейсик Агат, РК-86, "Микрон", Микроша, Специалист, Вектор и т.д. - но не Синклер!). Опираясь на дизассемблер (http://altairbasic.org/), реализовал алгоритмы на C99.

- Портируемо. Можно запускать как на PC, так и на почти любом микроконтроллере.
- Компактно. Около 12К кода на STM32F4.
- Быстро. На частоте STM32F412 @ 1MHz дает в тестах Rugg/Feldman (https://en.wikipedia.org/wiki/Rugg/Feldman_benchmarks) лучшие результаты, чем большинство классических бейсиков.
- Нет привязки к железу или ОС. Интегрируется в проекты - доступна функция исполнения команды. Ввод-вывод также перенаправляется куда угодно - хоть на консоль, хоть в последовательный порт, хоть в TCP/IP, хоть в файл.
- Объектно-ориентировано. Состояние интерпретатора и его память могут выделяться пользователем хоть на стеке, хоть статически, хоть динамически. Можно иметь и исполнять несколько бейсиков одновременно.
- Ограниченное использование машинного стека. Не используется рекурсия.
- Ограниченное использование ОЗУ. Используется только область, выделенная пользователем. В любой ситуации переполнение ОЗУ обрабатывается путем останова программы по ошибке.
- Не используется malloc. Нет проблем с неожиданной нехваткой памяти, фрагментацией кучи, блокировками, связанными с кучей.
- Не требует блокировок (Mutex и т.п.). Может использоваться в системах реального времени. При исполнении тестов воспроизводимость результатов до 1мс.
- Протестировано. В проект входит набор разнообразных тестов на ~1600 строк кода.
- Старался делать код высокого качества. Варнингов от компилятора GCC при стандартных настройках нет.

Набор функций на данный момент довольно ограничен (нет строк, нет двумерных массивов), но есть потенциал для расширения, конечно. И главное - "минимальный стандарт (https://altairclone.com/downloads/manuals/BASIC%20Manual%2075.pdf)" реализован полностью.

Исходники на https://github.com/mborisov1/uc-basic

SfS
05.01.2024, 11:20
Ну чё. Бармалей крут!:)

Barmaley_m
05.01.2024, 11:59
Спасибо. В общем, желающие могут пользоваться проектом. Конкретно здесь хочу выразить благодарность всем участникам обсуждения в этой ветке. Именно здесь подсказали про тесты Rugg/Feldman, и вообще было высказано много хороших идей, которые легли в этот проект.

Куда двигать его дальше - пока думаю. Исходно в планах было довести функционал до Altair BASIC 8K (а там строковые переменные, LEFT$, RIGHT$, многомерные массивы, больше свободы с именами переменных и др.). Но комментированный дизассемблер 8К-бейсика найти не удалось. Можно было бы продизассемблировать Бейсик "Микрон" с РК-86, например. По структуре он должен во многом повторять оригинал (Altair 4K), там даже баги одни и те же, я проверял по ходу разработки.

Так что, если у кого-нибудь есть желание помочь с дизассемблированием и попутно изучить один из самых компактных и мощных классических бейсиков эры 70-80х - буду благодарен!

Кстати. В Altair BASIC используются ассемблерные трюки, которых я никогда не встречал в мире ZX Spectrum. Подучился у Билла Гейтса, что называется! Вот один пример.

Допустим, есть 2 точки входа в процедуру, для одной из них регистр A должен быть равен 0, а для другой - не нулю. Билл Гейтс и Пол Аллен делают это так:


entry: or 0AFh
;do something
ret

use_entry_1: call entry
;...
use_entry_2: call entry+1
;...

Что получается: при вызове точки entry исполняется команда OR с ненулевым агрументом - после ее исполнения в аккумуляторе окажется ненулевое число; кроме того, будет сброшен флаг Z. Если же вызвать entry+1 - то аргумент двухбайтовой команды OR исполнится как команда - в данном случае AF = XOR A. То есть в аккумулятор будет загружен нуль, и установится флаг Z.

И подобных мест в Altair BASIC много. Там часто используются трехбайтовые команды вида LD BC, nnnn, для пропуска последующих двух байт кода, если значение регистра BC впоследствии неважно. Еще для пропуска двух байт используются команды условного перехода вида JP M, nnnn, если условие перехода заведомо не соблюдается.

LW
05.01.2024, 12:09
Допустим, есть 2 точки входа в процедуру, для одной из них регистр A должен быть равен 0, а для другой - не нулю.
Кладов в своей элите такой трюк использовал.

Conan
05.01.2024, 13:59
задумал и запилил свой собственный Бейсик! За основу взял Altair BASIC 3.2 4K - прародителя почти всех классических бейсиков (Бейсик Агат, РК-86, "Микрон", Микроша, Специалист, Вектор и т.д. - но не Синклер!). Очень интересный проект. Причем не только с технической точки зрения. Мало кто догадывается о том, что вы начали делать то, что почти случилось более сорока лет назад на ZX-ах. И наш спектрумовский мир был бы чуток другим. Нельзя сказать хуже или лучше, но точно другим. Спойлерить не буду, когда доделаю 1981 год истории - узнаете.


В Altair BASIC используются ассемблерные трюки, которых я никогда не встречал в мире ZX Spectrum. Подучился у Билла Гейтса, что называется!Думаю, что спектрумистам было бы интересно потестировать ваш бейсик на эмуляторах или реалах. Поэтому ожидаю (надеюсь) на .tap или .trd с небольшим readme. В идеале конечно же .bin увидеть, вместо оригинального)))

И пара вопросов: размеры 12Кбайт это только для STM-ки? Можно ли ожидать уменьшения объема на простых 8-ми битных платформах?
Сколько часов (дней/ночей) ушло на текущую версию?

Barmaley_m
05.01.2024, 18:02
Мало кто догадывается о том, что вы начали делать то, что почти случилось более сорока лет назад на ZX-ах.
Наверно, кто-то задумывал портировать на них Microsoft BASIC?

Думаю, что спектрумистам было бы интересно потестировать ваш бейсик на эмуляторах или реалах.
Мой бейсик не предназначен для исполнения на Z80 (иначе было бы больше смысла запрограммировать его на ассемблере, а не Си). К тому же, C-версия где-то заточена под 32-битную архитектуру процессора. Даже если удастся скомпилировать под Z80 - то скорость вряд ли будет приемлемой.

Но на любом компе с виндой или линуксом тестировать - без проблем. В проект включены файлы проекта Eclipse CDT. Скачиваете и ставите Eclipse, открываете проект, выбираете конфигурацию Debug или Release - и в путь! Для винды может потребоваться в конфигурации проекта заменить Builder с Linux GCC на MinGW GCC.

И пара вопросов: размеры 12Кбайт это только для STM-ки?
Это для STM-ки, и очень приблизительно. Это разность размеров проекта с вызовом функции basic_main_interactive_prompt() и без него. Но подтягивается не только сам бейсик. Подтягивается еще и printf() с выводом дробных чисел, а она сама по себе тяжелая.

Вообще преобразование чисел с плавающей запятой между двоичной и десятичной формами - трудная задача. Та функция преобразования из текста в float, что включена в интерпретатор - я ее поставил, скрепя сердце, переведя оригинальную процедуру Altair BASIC с ассемблера на Си. По крайней мере, удалось сохранить ту точность, что была. Но так вообще преобразование неточное. Я пытался сделать лучше, но понял, что точное преобразование (до ближайшего представимого float-числа) можно реализовать только с применением длинной арифметики (MPI). Хотя у меня и есть соответствующая библиотека (https://github.com/mborisov1/rsa_embedded), решил пока не заморачиваться, чтобы выпустить проект быстрее.

Ну и обратное преобразование для печати на экран - там те же проблемы, точный алгоритм сложен и громоздок. Пока применяю стандартную библиотеку Си, а там видно будет. Вот уж кто их придумал, эти десятичные числа...

Можно ли ожидать уменьшения объема на простых 8-ми битных платформах?
Не знаю. С одной стороны, плотность кода у Z80 выше. Но требуется хороший компилятор, а с ними на Z80 напряженка, как я слышал. Кроме того, Си-код бейсика рассчитан на 32-битную архитектуру процессора. На 8 битах будет неэффективно. Если требуется компактный бейсик на Z80 - то проще портировать Altair или Microsoft BASIC прямо, не уходя от ассемблера. Тем более, что процессор совместимый.

Сколько часов (дней/ночей) ушло на текущую версию?[/FONT][/SIZE]
Первый коммит в свой (неопубликованный) репозиторий я сделал 19 ноября 2023. Где-то 3-4 вечера в неделю уделял проекту. Всего сделано 110 коммитов. Под новогодние каникулы - каждый день помногу. Сколько часов... Ну, по грубым прикидкам, полмесяца полной занятости. Может, 3/4. И плюс еще время фоновых размышлений, когда за компом непосредственно не сидел.

В общем, нормальный такой проект, не слишком большой, но и не слишком маленький. Может быть, дойдут руки допилить его до функционала 8K BASIC. Или даже расширения сделать для возможности управления железом. Может получиться неплохой "старт-пакет" для начинающих программистов на микроконтроллерах. Ведь чем хорош бейсик - можно исполнять команды в интерактивном режиме, чередуя их с кусками программы. И нет опасности, что система завалится - по ошибке вылетит, и все. Если программа зависнет - есть кнопка Break. В "железном" проекте на Nucleo-F412 как раз задействовал для этого кнопку на плате.

Lethargeek
06.01.2024, 01:13
это если писать программу, а чтобы ознакомиться с возможностями - нажимай любую. А вот если на клавиатуре буквы, то нажимай любую( и если комп продолжит за тебя, как сейчас в продвинутых редакторах и Яndex-е), то да - хоть какой-то эффект, а если нет, то кроме "error" в лучшем случае ничего не увидишь.
Параметры конечно нужны, но для многих операторов их не сложно воспроизвести. А для новичка восторг вызывает действие и набирать по буквам без навыка слепой печати и нормальной клавиатуры удовольствие еще то. А разыскивать символы на клавиатуре для непривычного к этому человеку разве проще?
да уж явно проще, хоть потому, что их тупо меньше в несколько раз, чем токенов

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


А еще у ZX81 и TS1000 разными были: упаковочные коробки, блоки питания и даже штепсельные вилки и даже разные адреса сервисных центров. И поэтому это совсем "разные" компьютеры.
а что, "совсем одинаковые"?


На порядки это значит что Jupiter-ов выпустили тысячи (5 тысяч), а ZX81 сотни тысяч. Вышло 300 000 или 600 000 ZX81 принципального значения для сравнения популярности - не имеет. Если интересны количественные оценки именно ZX81 (до выхода TS1000) - они есть
нет, "на порядки" - это значит, "больше, чем на один порядок"
"на один порядок" - это в десять раз, итого "на порядки" = "не менее, чем в сто раз"
сделал заявление - докажи, остальное - пустословие и юление


Отличная ссылка, из букв по ней вывод очевиден: производство Jupiter со встроенным Forth как развернули, так и свернули. Ибо спрос оказался минимальным.
а вот вывод, что главная причина - встроенный форт, из этой ссылки совершенно неочевиден
как будто бы производство аппаратов со встроенным бейсиком так не сворачивали


Но ведь мы не урывками читаем, а целиком, поэтому забавно сравнить вот это заявление (про дороговизну Jupiter):
Сообщение от Lethargeek
одна только лишь убогая база уже стоила 90 фунтов, а к ней за 16k выложи еще 40
с картинками из статьи по ссылке:
https://regmedia.co.uk/2012/08/06/ace_ads.jpg

только вот "не урывками" мало прочитать, надо бы еще и понять... а теперь внимание, вопрос на понимание:
о чем нам может говорить крупным шрифтом "SPECIAL DEAL" по распродаже неликвидов "WHILE STOCKS LAST"?
неужто о том, что цены из него можно сравнивать с официальными ценами на старте спека-16?
или всё же было бы честно поискать такой же SPECIAL для него?


Кое-кто пытается опять натянуть тульский крендель на самовар, вместо того чтобы согласиться с очевидным: все популярные и массовые домашние компьютеры начала 80-х годов имели встроенный Бейсик.
угу, столь же очевидное, как и то, что огурцы смертельно опасны, потому что все, кто их ел в 19 веке - умерли! :v2_rolley


Простите, а какое отношение IBM PC в начале 80-х имел к рынку недорогих ДОМАШНИХ компьютеров?
простите, то есть любитель наставительно устраивать тут ЛИКБЕЗЫ - слыхом не слыхал про PCjr? :v2_dizzy_facepalm:

Conan
06.01.2024, 15:17
Адекватные люди уже давно назвали вещи своими именами, и на английском (https://en.wikipedia.org/wiki/Timex_Sinclair_1000) и на русском (https://ru.wikipedia.org/wiki/Timex_Sinclair_1000): "TS1000 был по сути слегка модифицированной версией Sinclair ZX81", поэтому софистика:
а что, "совсем одинаковые"?не интересна от слова совсем.




"на порядки" = "не менее, чем в сто раз"
сделал заявление - докаживаше личное непонимание выражения "на порядок (https://ru.wiktionary.org/wiki/%D0%BD%D0%B0_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BE% D0%BA)" это к школьному учителю или словарю (https://iling.spb.ru/publications/2200). Число произведенных ZX81 на октябрь 1982 года уже приводилось по ссылке (https://www.washingtonpost.com/archive/business/1982/10/25/clive-sinclair-launches-new-world-of-technology/ad91fddd-0b81-4937-8811-ccae3ee7080d/). Вычесть 100 тыс. ZX80 сможете самостоятельно (надеюсь не запутаетесь).




вывод, что главная причина [непопулярности Jupiter Ace] - встроенный форт, из этой ссылки совершенно неочевиденвам может и не очевиден, а разработчикам Jupiter Ace и авторам статьи очевиден. Нужно лишь дочитать буквы по вашей же ссылке (https://www.theregister.com/2012/09/21/jupiter_cantab_jupiter_ace_is_30_years_old/?page=1) до конца:

Викерс попытался переключить внимание компании с компьютерных энтузиастов на образовательный рынок. Но дети хотели изучать Basic, а не Forth со своеобразным синтаксисом "Обратной польской нотации", в котором операнды ставились первыми, операторы - после.
"Ричард и я оба инженеры, и мы подумали, что Forth - правильное решение для того, что мы пытались создать. И, выражаясь инженерным языком, мы достигли этого. Но с точки зрения маркетинга, я думаю, мы, вероятно, были немного наивны. Оглядываясь назад, мы продали компьютеры нескольким сотням энтузиастов Forth, и все ".



Вот это особо улыбнуло:
неужто о том, что цены из него [распродажные] можно сравнивать с официальными ценами на стартеТо есть, когда вы пишете про обмен на Commodore, то распродажные цены Timex вас устраивают, а в случае с Jupiter Ace: "неужто можно сравнивать" :v2_lol:





простите, то есть любитель наставительно устраивать тут ЛИКБЕЗЫ - слыхом не слыхал про PCjr?Ставить в один ряд компьютеры начала 80-х (ZX81 - 1981 год) и середины 80-х (IBM PCjr - 1984 год), да еще находящиеся в разных ценовых категориях (ZX81 - $90 против PCjr - $1269) - натягивание тульского кренделя. Но допустим, что это "почти одинаковые" недорогие домашние компьютеры начала 80-х :v2_lol:

И снова ЛИКБЕЗ:
IBM PCjr (https://en.wikipedia.org/wiki/IBM_PCjr) поставлялась с IBM PC DOS 2.10 (https://www.ibm.com/docs/en/announcements/archive/ENUS283-389):
DOS версии 2.1 для персонального компьютера IBM размещена на двух дискетах. Дискеты также содержат интерпретатор BASIC для Disk BASIC и Advanced BASICДаже в IBM PCjr (компьютере другого класса и сегмента рынка) Бейсик не "выкинули из ПЗУ", а лишь перенесли в состав дисковой операционной системы. Кстати, не подскажете по какой причине?

Lethargeek
01.02.2024, 02:19
Адекватные люди уже давно назвали вещи своими именами, и на английском (https://en.wikipedia.org/wiki/Timex_Sinclair_1000) и на русском (https://ru.wikipedia.org/wiki/Timex_Sinclair_1000): "TS1000 был по сути слегка модифицированной версией Sinclair ZX81", поэтому софистика:не интересна от слова совсем.
"адекватные люди" + ссыль на строчку в педивикии (без источников) :v2_dizzy_facepalm:
не говоря уж о том, что "слегка" - субъективное нечёткое оценочное суждение
как по мне, так изменение одной из ключевых характеристик вдвое - это "значительно"


ваше личное непонимание выражения "на порядок (https://ru.wiktionary.org/wiki/%D0%BD%D0%B0_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BE% D0%BA)" это к школьному учителю или словарю (https://iling.spb.ru/publications/2200). Число произведенных ZX81 на октябрь 1982 года уже приводилось по ссылке (https://www.washingtonpost.com/archive/business/1982/10/25/clive-sinclair-launches-new-world-of-technology/ad91fddd-0b81-4937-8811-ccae3ee7080d/). Вычесть 100 тыс. ZX80 сможете самостоятельно (надеюсь не запутаетесь).
мде, с логикой проблема - если "к школьному учителю", то не личное
да и с арифметикой далее (что неудивительно после логики)


вам может и не очевиден, а разработчикам Jupiter Ace и авторам статьи очевиден. Нужно лишь дочитать буквы по вашей же ссылке (https://www.theregister.com/2012/09/21/jupiter_cantab_jupiter_ace_is_30_years_old/?page=1) до конца:
Мало ли кому тоам что "очевидно". Мне вот очевиднее, что большинство детишек играть хотело, и потому на первом месте для них были аппаратные характеристики, а не языки в пзу. В мое детство мы и вовсе на безрыбье были рады и ПМК (чсх с обратной польской записью, никого она тогда не пугала) - тоже, в основном, поиграть. Вышел бы юпитер пораньше, как ZX8x - и намного популярнее оказался бы.


Вот это особо улыбнуло:То есть, когда вы пишете про обмен на Commodore, то распродажные цены Timex вас устраивают, а в случае с Jupiter Ace: "неужто можно сравнивать"
А вот тут надо бы не улыбаться без причины, а морщить лоб - чтоб понять, что эти цены приведены как пример, чего реально стоил комп с такими характеристиками на один, вполне определённый период. В который примерно период, по совпадению, вышел также аналогично слабый аппаратно юпитер - и совсем не по распродажной таймексовской цене.


Ставить в один ряд компьютеры начала 80-х (ZX81 - 1981 год) и середины 80-х (IBM PCjr - 1984 год), да еще находящиеся в разных ценовых категориях (ZX81 - $90 против PCjr - $1269) - натягивание тульского кренделя. Но допустим, что это "почти одинаковые" недорогие домашние компьютеры начала 80-х :v2_lol:
Во-первых, в ряд вообще "домашних компьютеров", во-вторых, не я туда поставил, а IBM, а в-третьих, кое-кто тут ставит в один ряд компы почти одинаковой цены, но совсем неравных характеристик, вот уж где натягивание кондитерских изделий-то настоящее :v2_rolley


И снова ЛИКБЕЗ:
IBM PCjr (https://en.wikipedia.org/wiki/IBM_PCjr) поставлялась с IBM PC DOS 2.10 (https://www.ibm.com/docs/en/announcements/archive/ENUS283-389):Даже в IBM PCjr (компьютере другого класса и сегмента рынка) Бейсик не "выкинули из ПЗУ", а лишь перенесли в состав дисковой операционной системы. Кстати, не подскажете по какой причине?
нет, "и снова ФЕЙЛ" :v2_tong2: а вот теперь с моей стороны ЛИКБЕЗ :v2_dizzy_botan: никуда Бейсик из пзу в pcjr не "переносили", он как был в пзу прошитым, так и остался. Более того, к нему выпущен был уникальный специальный бейсик на картридже с учётом особенностей компа и доступом к расширенным возможностям аппаратным. А вот бейсик на дискете был стандартным писишным, ничего о тех особенностях не знавшим. Не говоря уж о том, что на внешних свободно копируемых носителях любой комп мог обзаводиться любым яву.

Но вот только почему-то за коротким периодом первоначального успеха фирменные айбиэмовские компики с бейсиками в пзу не взлетели. А клоны несмотря на отсутствие встроенного бейсика - взлетели. И притом взлетели даже в домашней нише, для которой, вроде, были не предназначены. Подсказать, по какой причине? Потому что были надёжнее, дешевле и/или мощнее за те же деньги. А не потому что "дети очевидно хотели бейсик" :v2_lol: