Я хотел бы запустить основной код, как вы это делали на старых компьютерах, в Linux. (Я ищу BASIC Interrupter, который может запускать функции ОС изначально)
Какие варианты у меня есть? (Желательно для Debian и Arch)
Я хотел бы запустить основной код, как вы это делали на старых компьютерах, в Linux. (Я ищу BASIC Interrupter, который может запускать функции ОС изначально)
Какие варианты у меня есть? (Желательно для Debian и Arch)
Ответы:
Если вы хотите работать в Linux BASIC изначально, у вас есть несколько пакетов в Debian:
Бренди является интерпретатором BBC BASIC V, диалекта BASIC, который Acorn Computers поставлял со своими моделями настольных компьютеров, использующих процессор ARM, например, Archimedes и Risc PC, и до сих пор используется на этих и совместимых с ними.
BASIC V is a much extended version of BBC BASIC.
Это был бейсик, использовавшийся на 6502 BBC Micro, который Acorn сделал в 1980-х годах.
bwBASIC можно настроить для эмуляции функций, команд и функций, доступных для различных типов интерпретаторов BASIC;
bwBASIC реализует одну функцию, недоступную в предыдущих интерпретаторах BASIC: команду оболочки можно вводить в интерактивном режиме по приглашению bwBASIC, и интерпретатор выполняет ее в командной оболочке.
Например, команда "dir * .bas" может быть введена в bwBASIC (в DOS или "ls -l * .bas" в UNIX) и будет выполняться из командной строки операционной системы.Команды оболочки также могут быть заданы в пронумерованных строках в программе bwBASIC, так что bwBASIC можно использовать в качестве языка программирования оболочки. Внедрение bwBASIC команд и функций RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON и ENVIRON $ () обеспечивает дополнительные возможности обработки оболочки.
Чтобы установить их:
sudo apt-get install brandy bwbasic
Что касается моего личного опыта, я предпочитаю, bwbasic
поскольку он позволяет использовать мощь BASIC в текстовой командной строке или в сценарии оболочки.
В качестве альтернативы у вас также есть несколько пакетов эмуляции компьютеров старых версий, которые, очевидно, помимо синтаксиса BASIC, реализуют всю среду какого-либо старого компьютера, который вы, возможно, захотите пережить.
Интересно, что bwbasic
теоретически можно было бы автоматизировать операции в Unix, например, создавать сценарии с использованием языка BASIC. Никогда не пробовал, хотя.
Мои системы Debian и, возможно, большинство других дистрибутивов Linux имеют несколько вариантов, доступных непосредственно через менеджер пакетов. Из их:
bwbasic
:Bywater BASIC Interpreter (bwBASIC) реализует большой расширенный набор стандарта ANSI для минимального бейсика (X3.60-1978) и значительный поднабор стандарта ANSI для полного бейсика (X3.113-1987) в C. Он также предлагает оболочку средства программирования как расширение Бейсика. bwBASIC стремится быть максимально переносимым.
sdlbasic
:sdlBasic - это небольшой, эффективный и многоплатформенный интерпретатор BASIC для создания игр с использованием возможностей библиотеки SDL. Это было вдохновлено старым и славным AMOS.
Поскольку все, кажется, предполагают, что вы имеете в виду «ПК до 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-интерпретатор; Я буду использовать bwbasic
для примера, но все идет, на самом деле, до тех пор, пока он работает в терминале. Затем добавьте пользователя и установите его оболочку в качестве интерпретатора bwbasic. Это можно сделать через графический интерфейс, но это зависит от того, какую среду рабочего стола вы используете; портативный подход заключается в том, чтобы сделать это с помощью терминала useradd
. Это будет что-то похожее на
$ sudo -i
# grep -q "$(type -pP bwbasic)" /etc/shells || echo "$(type -pP bwbasic)" >>/etc/shells
# useradd --home /home/basic --create-home --shell "$(type -pP bwbasic)" basic
Затем вы сможете войти в чистую ОСНОВНУЮ среду с помощью sudo:
$ sudo -i -u basic
Вы можете создать модуль запуска (как указано выше), который выполняет эту команду в терминале, если хотите.
При появлении запроса sudo укажите ваш обычный пароль. Вы можете отредактировать конфигурацию sudoers, чтобы избежать запроса пароля при желании, но помните, что редактирование sudoers несколько сложное и даже более рискованное; Вы можете заблокировать себя из-под учетной записи root, что затруднит восстановление конфигурации.
Это наиболее инвазивный подход, но он также приблизит вас к тому, как работали первые микрокомпьютеры, загрузившись непосредственно в интерпретатор 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/
В сети есть эмуляторы других машин,
но многие из них идут прямо к любой загружаемой программе,
не эмулируя начальный ввод с клавиатуры, необходимый для ее получения.