Я хотел бы запустить основной код, как вы это делали на старых компьютерах, в Linux. (Я ищу BASIC Interrupter, который может запускать функции ОС изначально)
Какие варианты у меня есть? (Желательно для Debian и Arch)
linux
command-line
programming
DiamondCoderMan
источник
источник
Ответы:
Если вы хотите работать в Linux BASIC изначально, у вас есть несколько пакетов в Debian:
Чтобы установить их:
Что касается моего личного опыта, я предпочитаю,
bwbasic
поскольку он позволяет использовать мощь BASIC в текстовой командной строке или в сценарии оболочки.В качестве альтернативы у вас также есть несколько пакетов эмуляции компьютеров старых версий, которые, очевидно, помимо синтаксиса BASIC, реализуют всю среду какого-либо старого компьютера, который вы, возможно, захотите пережить.
Интересно, что
bwbasic
теоретически можно было бы автоматизировать операции в Unix, например, создавать сценарии с использованием языка BASIC. Никогда не пробовал, хотя.источник
Мои системы Debian и, возможно, большинство других дистрибутивов Linux имеют несколько вариантов, доступных непосредственно через менеджер пакетов. Из их:
bwbasic
:sdlbasic
:Домашняя страница (Справочное руководство)
Википедия
источник
Поскольку все, кажется, предполагают, что вы имеете в виду «ПК до IBM» под «старыми компьютерами», я собираюсь пойти другим путем и предложить ответ, который интерпретирует «старые компьютеры» как «IBM-совместимые до Windows 9x».
Если вы имели в виду компьютеры с установленными версиями MS-DOS
QBASIC.EXE
, у вас есть три варианта, в зависимости от того, насколько строго вы определяете запуск их «под Linux»:Если у вас все еще есть копия
QBASIC.EXE
, вы можете использовать DOSBox или DOSEMU для ее запуска в виртуализированной среде DOS. (Оба доступны в репозиториях Debian и просты в настройке. Просто установите папку для монтированияC:
, вставьтеQBASIC.EXE
ее, и все готово .)Это даст вам идеальную совместимость со старым исходным кодом, но никакая интеграция с хост-ОС за пределами «
C:
на самом деле это папка, а не образ диска».Я должен уточнить, однако, что есть компромисс между ними. DOSEMU будет работать в любом терминале, который вы хотите, но не будет поддерживать причудливые низкоуровневые трюки, используемые некоторыми компонентами QBasic (например, для специализированных графических режимов). Только способ поддержать это полный эмулятор DOSBox , как ... но DOSBox появится свое собственное окно , а не с помощью терминала.
FreeBASIC имеет
qb
диалект / режим, который нацелен на идеальную совместимость с большим подмножеством QuickBASIC. (Неподдерживаемые вещи - это в основном вещи низкого уровня, связанные с тем, что QuickBASIC был 16-битной системой реального режима, а FreeBASIC - 32-битной системой защищенного режима.)FreeBASIC предлагает бинарные файлы для Linux, но вы найдете их в своем хранилище пакетов только в том случае, если вы действительно имели в виду «дистрибутивы семейства Debian», а не «Debian» и работаете с Ubuntu или производным от Ubuntu, таким как Mint.
Linux-сборки QB64 даже не находятся в репозиториях Ubuntu, но он специально нацелен на то, чтобы быть наиболее совместимым потомком QuickBASIC в защищенном режиме и даже предоставляет IDE, которая пытается клонировать IDE QBasic / QuickBasic.
источник
Вы написали в комментарии к ответу Фуна, что
Другие предоставили несколько разных предложений для интерпретаторов BASIC, которые вы могли бы установить в системе Linux, поэтому я не буду идти туда. Современные ПК, как правило, не поставляются со встроенными интерпретаторами BASIC, поэтому вы застряли при загрузке чего-либо, что может запустить установленный интерпретатор BASIC.
Скорее, я приму вышеизложенное, чтобы означать, что вы хотите что-то, что автоматически запускает интерпретатор BASIC, аналогично, но не совсем так, как ранние микрокомпьютеры (такие как Apple II, Commodore C-64, Zinclair ZX-81 и тому подобное). ) загрузился в родной базовый интерпретатор.
Есть в основном три способа сделать это, о которых я могу думать:
Создайте панель запуска на рабочем столе, которая открывает терминал
Это наименее инвазивный метод, поскольку он полностью работает в системе и среде, к которой вы привыкли.
По сути, с помощью любых средств, которые предоставляет среда рабочего стола, вы создаете средство запуска программ и настраиваете его для запуска интерпретатора BASIC по вашему выбору в терминале. Для дополнительного эффекта вы можете установить конкретные шрифты, цвета и т. Д., Чтобы имитировать обстановку минувших дней. Как именно вы это сделаете, зависит от того, какую среду рабочего стола вы используете, которую вы не указали, но если вы щелкнете правой кнопкой мыши там, где вы в данный момент щелкаете для запуска приложений, и ищете выбор для создания новой панели запуска, это будет хорошим началом. ,
Создайте отдельную учетную запись пользователя с интерпретатором BASIC в качестве оболочки
Это немного сложнее, чем простая программа запуска на рабочем столе, но обеспечивает лучшую изоляцию провайдеров, поэтому вы не рискуете испортить свои собственные файлы. Сначала установите BASIC-интерпретатор; Я буду использовать
bwbasic
для примера, но все идет, на самом деле, до тех пор, пока он работает в терминале. Затем добавьте пользователя и установите его оболочку в качестве интерпретатора bwbasic. Это можно сделать через графический интерфейс, но это зависит от того, какую среду рабочего стола вы используете; портативный подход заключается в том, чтобы сделать это с помощью терминалаuseradd
. Это будет что-то похожее наЗатем вы сможете войти в чистую ОСНОВНУЮ среду с помощью sudo:
Вы можете создать модуль запуска (как указано выше), который выполняет эту команду в терминале, если хотите.
При появлении запроса sudo укажите ваш обычный пароль. Вы можете отредактировать конфигурацию sudoers, чтобы избежать запроса пароля при желании, но помните, что редактирование sudoers несколько сложное и даже более рискованное; Вы можете заблокировать себя из-под учетной записи root, что затруднит восстановление конфигурации.
Используйте BASIC-интерпретатор как init
Это наиболее инвазивный подход, но он также приблизит вас к тому, как работали первые микрокомпьютеры, загрузившись непосредственно в интерпретатор BASIC. Я не рекомендую это и считаю маловероятным, чтобы это работало без значительной работы, но я включил это для полноты.
Ядро Linux принимает параметр командной строки (да, ядро Linux имеет параметры командной строки; вы можете увидеть текущую загруженную командную строку, читая из / proc / cmdline) с именем
init
, которое указывает, какую программу выполнять после завершения инициализации ядра. Вы можете настроить загрузчик (скорее всего, GRUB), чтобы позволить вам загружать запись ядра, которая говорит, что этоinit
должно быть/usr/bin/bwbasic
(или какой-либо другой интерпретатор BASIC, который вы установили).Чтобы это работало, интерпретатор BASIC, а также все необходимые ему файлы должны быть расположены в
/
файловой системе root ( ). Это связано с тем, что одной из задач init является монтирование всех файловых систем, а поскольку вы предоставляете не-init программу в качестве init, файловые системы без полномочий root не будут смонтированы. (Я считаю, что другой задачей init является перемонтирование корневой файловой системы в режиме чтения-записи, поэтому при обычном подходе вы ничего не сможете сохранить. Однако, в зависимости от точных деталей реализации, вы сможете заставить систему выполнить что-то вродеmount -o remount,rw /
чтобы перемонтировать корневую файловую систему для чтения-записи.) Выбранный вами интерпретатор BASIC также не должен зависеть от чего-либо еще, за что отвечает init, и у вас не будет доступа ни к каким средствам, обрабатываемым init, или к любым процессам, порожденным init (например, , сеть или многопользовательская поддержка).Командная строка ядра, похожая на что-то подобное
ro quiet init=/usr/bin/bwbasic
, вероятно, поможет вам понять, как она выглядела в старые времена.источник
sudo echo
вами не соответствует вашим ожиданиям, и вы, скорее всего, столкнетесь с-bash: /etc/shells: Permission denied
каким- либо образом, поскольку>>
перенаправление настраивается bash до того, как остальная часть команды будет оценена. Вероятно, лучше использоватьtype -P bwbasic | sudo tee -a /etc/shells
вместо этого. См. «init
которая заключается в том, чтобы настроить систему инициализации для использованияbwbasic
вместоagetty
и не запускать диспетчер отображения X11. (Для тех, кто не знает, о чем я говорю, ядро предоставляет различные «виртуальные консоли», доступные через Ctrl + Alt + F1 через Ctrl + Alt + F12, и система init по умолчанию запускаетсяagetty
с 1 по 6 и Диспетчер отображения X11 (который обеспечивает диалог входа в систему) на 7. До Upstart и systemd это контролировалось с помощью/etc/inittab
.)getty
и его потомки обрабатывали запросы на вход в консоль.Просто чтобы исключить альтернативу: для Linux есть несколько эмуляторов, которые могут запускать ваши старые компьютеры. Например, для xkegs, если вы загрузите его, у вас должно появиться базовое приглашение appleoft. Общаясь с другими Linux вещью упражнение читателя (подсказка: технически, я полагаю , вы можете перенаправить вывод в вашей имитации яблока сэмулированного принтера, который xkegs будет разоблачать как сетевой сокет , который можно использовать , например , пс для подачи в некоторые другие приложения и т. д. Не уверен, что есть какой-то другой путь, но ожидать, что что-то подобное можно сделать). Я ожидал бы, что у эмуляторов Commodore 64 аналогичным образом будет работать базовая версия Commodore и т. Д.
источник
kegs
, похоже , это не один из них (apt-cache search
безрезультатно). А для некоторых / большинства эмуляторов вам, вероятно, потребуется откуда-то получить оригинальный ROM.init=/usr/bin/sdlbasic
на Linux ядро, что если он работает поможет вам гораздо ближе, но она может или не может даже работать.Есть много альтернатив. Мое предложение похоже на ответ Ссоколова. Если вам нужен «современный» BASIC, но с синтаксисом, аналогичным старым интерпретаторам BASIC, вам следует попробовать BaCon . Это базовый транспортер, который генерирует нативный код. У проекта есть довольно хорошее руководство, много библиотек и примеров, и даже IDE, написанная на BaCon.
источник
Вы можете запустить C64 в своем браузере и использовать BASIC таким образом.
http://codeazur.com.br/stuff/fc64_final/
Помните, что раскладка клавиатуры отличается, то есть Shift-2для кавычек.
http://jilltxt.net/wp-content/uploads/C64-keyboard-layout.png
Applesoft BASIC, если вы предпочитаете - http://calormen.com/jsbasic/
В сети есть эмуляторы других машин,
но многие из них идут прямо к любой загружаемой программе,
не эмулируя начальный ввод с клавиатуры, необходимый для ее получения.
источник