User Tag List

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

Тема: Компилирование кода MSX Basic в COM-файл

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    06.09.2025
    Адрес
    г. Киев, Украина
    Сообщений
    240
    Спасибо Благодарностей отдано 
    412
    Спасибо Благодарностей получено 
    29
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Компилируются да, но они несовместимы друг с другом.
    По большей части совместимы, особенно для несложного кода. Есть программы, которые компилируются любым компилятором для этих диалектов Бейсика.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А что, MSX Basic только один? И в полном объёме поддерживается компиляторами?
    Да, один-единственный, с добавляемыми возможностями (в основном зависящими от аппаратной части) к каждой версии — https://ru.wikipedia.org/wiki/MSX_BASIC

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    P. S. Вижу, что Вы любитель Бейсика, устраняюсь.
    Если вопрос про Бейсик, в котором не разбираетесь, для платформы, с который похоже тоже не знакомы, то в чём состояла смысловая нагрузка «рекомендаций»?
    ÷)

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

  3. #2

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,709
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    yevrowl(24.09.2025)

  4. #3

    Регистрация
    06.09.2025
    Адрес
    г. Киев, Украина
    Сообщений
    240
    Спасибо Благодарностей отдано 
    412
    Спасибо Благодарностей получено 
    29
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    С чего Вы взяли, что я не разбираюсь в Бейсике?
    1. Из-за вопроса об MSX Basic'е, код из которого, после некоторой рихтовки, можно перенести как на Sinclair Basic, так и на GW-Basic.
    2. Исходя из утверждения о несовместимости GW-Basic, Turbo Basic, Q(uick)Basic между собой.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Я сделал игру на нём ещё в 1995-м.
    Для ZX с памятью 16 килобайт — впечатляет! Извините, ошибся с мнением.
    ÷)

  5. #4

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,709
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо.

    1. Я же спросил: все ли Бейсики для MSX совместимы между собой? Иными словами: MSX Basic всегда только один или их есть много? Если один, то все ли компиляторы совместимы с ним и между собой? Потому что даже для Спектрума без ОС были различные: BLAST, Tobos FP, MCoder'ы, компилятор LaserBasic и прочее, и всё несовместимо между собой.

    2. А что, они совместимы между собой? На уровне GOTO, INPUT и PRINT? Притом GOTO где-то обозначается как GO TO, а кое-где можно писать IF a THEN номер_строки и без ELSE. А INPUT на ZX при вводе строк требует кавычек. А PRINT имеет разные размеры табуляции. И где-то переносит на новую строку, а где-то нет. Даже такие, казалось бы, одинаковые вещи всё равно разные в разных Бейсиках. Я поэтому и сказал, что Бейсики это целое семейство.

    Да, если Вам надо писать для CP/M чисто расчётную программу, то может её и удастся относительно легко перенести на другой Бейсик, да и то не факт, потому что разная точность вещественных вычислений и прочее.

    Но мощь начинается там, где можно из Бейсика вызывать разные аппаратные фишечки, которых на MSX больше, чем на ZX Spectrum. Поэтому перенести что-то этакое с MSX Basic на ZX Basic будет практически невозможно.

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

    yevrowl(25.09.2025)

  6. #5

    Регистрация
    06.09.2025
    Адрес
    г. Киев, Украина
    Сообщений
    240
    Спасибо Благодарностей отдано 
    412
    Спасибо Благодарностей получено 
    29
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    1. Я же спросил: все ли Бейсики для MSX совместимы между собой? Иными словами: MSX Basic всегда только один или их есть много?
    MSX Basic по сути один, но выпущено множество модификаций и надстроек:

    VBC — http://old-dos.ru/index.php?page=fil...show&id=105514
    MBC — http://old-dos.ru/index.php?page=fil...show&id=105515
    WB-ASS2 — http://old-dos.ru/index.php?page=fil...show&id=105516
    Mozart — http://old-dos.ru/index.php?page=fil...show&id=105517
    Advanced Basic — http://old-dos.ru/index.php?page=fil...show&id=105518
    Artisan Basic — http://old-dos.ru/index.php?page=fil...show&id=105519
    Delta Basic — http://old-dos.ru/index.php?page=fil...show&id=105520
    MCBC — http://old-dos.ru/index.php?page=fil...show&id=105521
    MS Basic — http://old-dos.ru/index.php?page=fil...o=show&id=1391
    Nevada Basic — http://old-dos.ru/index.php?page=fil...show&id=105577
    Gradius Basic — http://old-dos.ru/index.php?page=fil...show&id=105574

    Использую только встроенный.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Если один, то все ли компиляторы совместимы с ним и между собой?
    Компиляторы между собой не совместимы, при том что ЯП один.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Потому что даже для Спектрума без ОС были различные: BLAST, Tobos FP, MCoder'ы, компилятор LaserBasic и прочее, и всё несовместимо между собой.
    Может подскажете в той теме, чем и как компилировать? https://zx-pk.ru/threads/36358-brain-teaser.html
    Встроенный Sinclair Basic с ленты, кажется, тормозит даже на таком примитивном коде.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    2. А что, они совместимы между собой? На уровне GOTO, INPUT и PRINT? Притом GOTO где-то обозначается как GO TO, а кое-где можно писать IF a THEN номер_строки и без ELSE. А INPUT на ZX при вводе строк требует кавычек. А PRINT имеет разные размеры табуляции. И где-то переносит на новую строку, а где-то нет. Даже такие, казалось бы, одинаковые вещи всё равно разные в разных Бейсиках. Я поэтому и сказал, что Бейсики это целое семейство.
    GO TO и GO SUB — это к Sinclair Basic относится, у этих же Бейсиков (GW, QB, TB) синтаксис почти весь общий, и пашет одинаково.
    ÷)

  7. #6

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,709
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от yevrowl Посмотреть сообщение
    Может подскажете в той теме, чем и как компилировать? https://zx-pk.ru/threads/36358-brain-teaser.html
    Извините, я не понял о чём идёт разговор в той теме. А исходник скачивать и смотреть лениво.

    Если работать с Бейсик-компилятором, то надо писать программу сразу под него. Например, относительно неплох целочисленный MCoder2. Но там все переменные целые [-32768..32767]. И есть ещё некоторые ограничения.

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

    Когда-то видел Тетрис, написанный на Бейсике и скомпилированный кажется при помощи MCoder. Но это из эпохи кассет и моих ковыряний в играх. Сейчас я его вряд ли найду.

    Подобным образом вроде даже написаны неплохие игры для Спектрума. На ум приходит HeartBroken, но она, кажется, с машкодовыми вставками.

    Компилятор BLAST просто игрушка. Tobos FP можно попробовать использовать для большей совместимости с Sinclair Basic, но он тоже имеет некоторые ограничения.

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

    yevrowl(25.09.2025)

  8. #7

    Регистрация
    15.06.2010
    Адрес
    г. Чита
    Сообщений
    65
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от yevrowl Посмотреть сообщение
    При помощи компилятора MSX Basic от Егора Глебовича Вознесенского — SOLiD VBasic — попытался собрать в командный файл MSX-DOS свой исходник (bt.bas).

    Инструкция — https://sysadminmosaic.ru/msx/vbc/vbc

    Затем попытался собрать штатным компилятором Microsoft Basic Compiler.

    Инструкция — http://sysadminmosaic.ru/msx/basic_c...basic_compiler

    В обоих случаях не получилось:



    Посоветовали компилировать бразильским компилятором Mozart Basic от Cibertron Software — однако результат компиляции отличается от запуска в среде MSX Basic.

    Исходник (bt.bas) прилагается:

    bt.7z

    Можно ли собрать COM-файл, который будет функционировать как исходник после команды RUN?
    Давайте пройдемся по вашим проблемам по мере их возникновения.
    Первое, о VBasic Егора Вознесенского: К сожалению та версия компилятора что доступна в интернете, или недописана, или повреждена, либо то и другое одновременно. По крайней мере у меня он сыпал мусором в ассемблерный файл при компиляции вполне тривиальной программы.
    По тексту ошибки при компиляции вашей программы, на этапе линковки с библиотекой линковщик не может найти в ней функцию/подпрограмму BEEPX которая является реализацией оператора BEEP. Что бы понять точнее надо посмотреть ассемблерный листинг и просмотреть библиотеку с которой линкуется программа.
    Далее: В документации к компилятору прямо сказано следующее: "Типы переменных жёстко связаны с именами. Нельзя, например использовать в одной программе A и A$, а также массив с именем, совпадающим с именем простой переменной. Подробнее об этом в главе 3."
    В третей главе говорится следующее:"В отличие от MSX BASIC по умолчанию все переменные определены как целые, поэтому следует в программах первой строкой вставить DEFDBL A-Z. Напротив, конструкцию типа DEFINT A-Z можно опустить."
    Далее "Тип переменной устанавливается компилятором один раз при первой встрече согласно правилам, описанным выше, и остаётся неизменным на протяжении всей программы, поэтому символ точности можно указывать только один раз, что экономит текст программы и избавляет пользователя от возможных ошибок в результате пропуска такого символа в программе."
    Далее "Функция RND - если аргумент плавающий, работает стандартно в отличие от случая с целым аргументом, который описан ниже.
    Если функция вызвана как RND(M), где М - целое выражение, она возвращает строго случайное, равномерно распределенное целое число в интервале от 0 (включительно) до M (исключительно), положительное или отрицательное в зависимости от знака М."

    Теперь по поводу Microsoft BASIC Compiler, это НЕ компилятор MSX BASIC. Это (как ни удивительно прозвучит) компилятор Microsoft BASIC который имеет некоторые отличия от MSX Basic в поведении, к примеру оператора FOR. Далее данный компилятор не курсах о расширенных аппаратных возможностях MSX (Screen, Width, CLS, Locate и т.д.), и соответственно буде пугаться при их виде.
    Почему Мелкомягкие таки не удосужились создать полноценный компилятор для MSX Basic? Сделаю спекулятивное предположение, что это произошло из-за ссоры Кея Ниши и Билла Гейтса, когда Гейтс попытался подмять стандарт MSX под себя, а Ниши резко воспротивился этому. После этого Microsoft резко вышла из проекта хлопнув дверью, и далее ASCII corp самостоятельно возилась со стандартом MSX.
    ПыСы. Я посмотрел исходный текст вашей программы, и у меня сложилось впечатление что вы отлаживали эту программу на GWBasic. По крайней мере псевдографику в вашей программе я смог увидеть только в досовской 866 кодовой таблице, а не в КОИ-8

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

    yevrowl(16.10.2025)

  9. #8

    Регистрация
    06.09.2025
    Адрес
    г. Киев, Украина
    Сообщений
    240
    Спасибо Благодарностей отдано 
    412
    Спасибо Благодарностей получено 
    29
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от axe_chita Посмотреть сообщение
    Давайте пройдемся по вашим проблемам по мере их возникновения.
    Спасибо за детальный разбор!

    Цитата Сообщение от axe_chita Посмотреть сообщение
    К сожалению та версия компилятора что доступна в интернете, или недописана, или повреждена, либо то и другое одновременно.
    Читал подобные комментарии и при попытке компилировать разные исходники пришёл к такому же заключению. Весьма жаль, потому что, насколько мог убедиться, генерирует оптимизированный по размеру и быстрый код исполняемый файлов, в сравнении с тем же бразильским Mozart. Другой версии этого компилятора, случайно, нигде не пробегало?

    Цитата Сообщение от axe_chita Посмотреть сообщение
    По тексту ошибки при компиляции вашей программы, на этапе линковки с библиотекой линковщик не может найти в ней функцию/подпрограмму BEEPX которая является реализацией оператора BEEP.
    Убрал бы BEEP, заменив на PLAY/SOUND, или даже вовсе убрав звук, если бы полагал что остальной код будет компилирован правильно.

    Цитата Сообщение от axe_chita Посмотреть сообщение
    Это (как ни удивительно прозвучит) компилятор Microsoft BASIC который имеет некоторые отличия от MSX Basic в поведении, к примеру оператора FOR. Далее данный компилятор не курсах о расширенных аппаратных возможностях MSX (Screen, Width, CLS, Locate и т.д.), и соответственно буде пугаться при их виде.
    Заметил:



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

    Цитата Сообщение от axe_chita Посмотреть сообщение
    отлаживали эту программу на GWBasic
    Вообще в QBasic, а к GWBasic обращаюсь за RENUM.

    Цитата Сообщение от axe_chita Посмотреть сообщение
    По крайней мере псевдографику в вашей программе я смог увидеть только в досовской 866 кодовой таблице, а не в КОИ-8
    Кодовая страница CP437, соответствует раскладке в зарубежных MSX1. В русской MSX1 символы псевдографики смещены:

    ÷)

  10. #9

    Регистрация
    15.06.2010
    Адрес
    г. Чита
    Сообщений
    65
    Спасибо Благодарностей отдано 
    110
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    9 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от yevrowl Посмотреть сообщение
    Другой версии этого компилятора, случайно, нигде не пробегало?
    Если бы тут были спички! Увы и ах, другой версии я не наблюдал. Конечно, чисто теоретически, можно задизасмить Vbasic, тем более Егор дал разрешение на такие действия, но не факт что из этого чтото получится.

    Цитата Сообщение от yevrowl Посмотреть сообщение
    Убрал бы BEEP, заменив на PLAY/SOUND, или даже вовсе убрав звук, если бы полагал что остальной код будет компилирован правильно.
    Play/Sound тем более работать не будут. Но прекрасно сработает Print CHR$(7); Эмуляция VT52 прекрасно работает.

    Цитата Сообщение от yevrowl Посмотреть сообщение
    В принципе, можно постараться переделать исходник под такой вариант Бейсика, но смысла в этом при наличии работающей логической игры в виде картриджа и дискеты с автозагрузкой — не наблюдаю.
    А что тут переделывать?
    Добавляем две пользовательские функции
    DEF FNL$(X,Y)=CHR$(27)+"Y"+CHR$(32+Y)+CHR$(32+X) - как определение LOCATE и DEF FNCL$=chr$(12) - как определение CLS
    используем их с ведущим оператором PRINT. Т.е PRINT FNL$(X,Y); вместо LOCATE, а PRINT FNСL$ вместо CLS

    Цитата Сообщение от yevrowl Посмотреть сообщение
    Вообще в QBasic, а к GWBasic обращаюсь за RENUM.
    Вообще Renum есть и MSX Basic
    Кстати совет, обратите внимание на https://msxpen.com/ возможно там вам будет более удобно писать и отлаживать программу.
    Цитата Сообщение от yevrowl Посмотреть сообщение
    Кодовая страница CP437, соответствует раскладке в зарубежных MSX1. В русской MSX1 символы псевдографики смещены:

    Так вроде на MSX официальная раскладка почти полностью совпадает с КОИ-8, имеются небольшие отличия в начертании символов псевдографики



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

    Кстати, маленькое правка вашей программы с целью её упрощения
    Код:
    1890 K$ = INKEY$
    1891 IF K$ = "" THEN 1890 ELSE K=asc(K$)
    1892 IF K = 27 THEN CLS: END
    1893 IF (K>=49 and K<=57) THEN ON (K-49) GOTO 2010,2050,2090,2130,2170,2210,2250,2290,2330
    1990 '
    2000 GOTO 1890
    Последний раз редактировалось axe_chita; 17.10.2025 в 19:07. Причина: устранение опечаток

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

    yevrowl(17.10.2025)

  11. #10

    Регистрация
    06.09.2025
    Адрес
    г. Киев, Украина
    Сообщений
    240
    Спасибо Благодарностей отдано 
    412
    Спасибо Благодарностей получено 
    29
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от axe_chita Посмотреть сообщение
    Но прекрасно сработает Print CHR$(7); Эмуляция VT52 прекрасно работает.
    Спасибо, заменил.

    Цитата Сообщение от axe_chita Посмотреть сообщение
    А что тут переделывать?
    Добавляем две пользовательские функции
    DEF FNL$(X,Y)=CHR$(27)+"Y"+CHR$(32+Y)+CHR$(32+X) - как определение LOCATE и DEF FNCL$=chr$(12) - как определение CLS
    используем их с ведущим оператором PRINT. Т.е PRINT FNL$(X,Y); вместо LOCATE, а PRINT FNСL$ вместо CLS
    Заменил и здесь, теперь компилируется, но пашет не ахти:



    Цитата Сообщение от axe_chita Посмотреть сообщение
    Вообще Renum есть и MSX Basic
    Знаю, только благодаря NTVDM можно запускать GW-Basic в Windows 10 без эмуляции и перебрасывания исходников через образы дискет. =)

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

    Цитата Сообщение от axe_chita Посмотреть сообщение
    Так вроде на MSX официальная раскладка почти полностью совпадает с КОИ-8, имеются небольшие отличия в начертании символов псевдографики
    Сейчас займусь подстановкой символов псевдографики и попробую ещё раз компилировать.
    Последний раз редактировалось yevrowl; 18.10.2025 в 14:20.
    ÷)

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

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

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

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

Похожие темы

  1. Ответов: 31
    Последнее: 10.09.2022, 14:22
  2. MSX BASIC — Промежуточный код
    от GreyWolf в разделе MSX
    Ответов: 7
    Последнее: 05.12.2019, 21:42
  3. Ответов: 30
    Последнее: 28.11.2017, 02:51
  4. Ответов: 0
    Последнее: 24.04.2017, 16:24
  5. Spectaculator - BASIC LLIST в текстовый файл
    от Gelip в разделе Эмуляторы
    Ответов: 3
    Последнее: 16.07.2011, 02:30

Ваши права

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