Я хотів би запустити BASIC-код, як ви робили на старих комп'ютерах, в Linux. (Я шукаю BASIC Interrupter, який може запускати функції ОС на самому собі)
Які у мене варіанти? (Переважно для Debian та Arch)
Я хотів би запустити BASIC-код, як ви робили на старих комп'ютерах, в 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, який виготовляв Жолудь у 1980-х роках.
bwBASIC можна налаштувати для емуляції функцій, команд та функцій, доступних для різних типів інтерпретаторів BASIC;
bwBASIC реалізує одну функцію, недоступну в попередніх інтерпретаторах BASIC: команда оболонки може бути введена інтерактивно в рядку bwBASIC, а інтерпретатор виконає її під командною оболонкою.
Наприклад, команду "dir * .bas" можна ввести в bwBASIC (під DOS або "ls -l * .bas" під UNIX), і вона буде виконуватися як з командного рядка операційної системи.Команди оболонки також можуть бути задані в нумерованих рядках програми bwBASIC, так що bwBASIC може використовуватися як мова програмування оболонки. Реалізація команд та функцій RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON та ENVIRON $ () bwBASIC пропонує додаткові можливості обробки оболонок.
Щоб встановити їх:
sudo apt-get install brandy bwbasic
Що стосується мого особистого досвіду, я віддаю перевагу bwbasic
тому, що це дозволяє мати силу BASIC у текстовому командному рядку або скрипті оболонки.
Як альтернатива, у вас також є кілька емуляційних пакетів старих комп'ютерів, які, очевидно, крім синтаксису BASIC реалізують усе середовище старого комп'ютера, яке ви можете повторно пережити.
Цікаво, що bwbasic
теоретично може дозволити автоматизувати операції в Unix, наприклад, створення сценаріїв з використанням мови BASIC. Ніколи не пробував цього.
У моїх системах Debian і, можливо, у більшості інших дистрибутивів Linux є кілька варіантів, доступних безпосередньо через менеджер пакетів. Серед них:
bwbasic
:Інтерпретатор Bywater BASIC (bwBASIC) реалізує великий набір стандарту ANSI для мінімальних BASIC (X3.60-1978) та значну підмножину стандарту ANSI для Full BASIC (X3.113-1987) у C. Він також пропонує оболонку засоби програмування як розширення BASIC. 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, що намагається клонувати QBasic / QuickBasic IDE.
Ви написали в коментарі на відповідь Foon, що
Що я маю на увазі під "як старі комп'ютери", це те, що його просто немає
Інші запропонували кілька різних пропозицій для інтерпретаторів BASIC, які ви могли б встановити в системі Linux, тому я не заходжу туди. Сучасні ПК, як правило, не мають вбудованих інтерпретаторів BASIC, тому ви застрягли в завантаженні чогось, що може запустити встановлений перекладач BASIC.
Вірніше, я візьму на увазі, що ви хочете щось, що запускає інтерпретатор BASIC автоматично, схоже на, але не зовсім схоже на те, як ранні мікрокомп'ютери (наприклад, Apple II, Commodore C-64, Zinclair ZX-81 та їхні подібні ) завантажується в рідний перекладач BASIC.
В основному є три способи зробити це, про що я можу придумати:
Це найменш інвазивно, оскільки він повністю працює в системі та середовищі, до якого ви звикли.
В основному, за допомогою будь-яких засобів, які надає ваше робоче середовище, ви створюєте запуск програми та налаштовуєте його для запуску інтерпретатора BASIC на ваш вибір у терміналі. Для додаткового ефекту ви можете встановити конкретні шрифти, кольори тощо, щоб імітувати оточення минулих днів. Як саме ви це зробите, залежить від використовуваного середовища робочого столу, якого ви не вказали, але клацанням правою кнопкою миші, де ви зараз натискаєте, щоб запустити програми та шукаєте вибір для створення нового запуску, буде хорошим початком .
Це трохи більше, ніж простий запуск робочого столу, але провайдери краще ізолюються, так що ви не ризикуєте зіпсувати свої власні файли. Спочатку встановіть інтерпретатор BASIC; Я використаю bwbasic
для прикладу, але все, щоправда, дійсно, поки воно працює в терміналі. Потім додайте користувача та встановіть його оболонку як інтерпретатора bwbasic. Це можна зробити через GUI, але це залежить від того, яке середовище робочого столу ви використовуєте; портативний підхід - це зробити в терміналі, використовуючи 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 дещо складне і, тим більше, ризиковане; ви можете заблокувати себе з кореневого облікового запису, що ускладнює відновлення конфігурації.
Це найбільш інвазивний підхід, але також ви наближаєтесь до того, як працювали ранні мікрокомп'ютери, завантажуючись безпосередньо в інтерпретатор BASIC. Я не рекомендую цього, і вважаю, що навряд чи вдасться обійтися без значної роботи, але включаю це для повноти.
Ядро Linux приймає параметр командного рядка (так, ядро Linux має параметри командного рядка; ви можете побачити завантажений в даний момент командний рядок, прочитавши з / proc / cmdline) з назвою init
, який вказує, яку програму виконати після завершення ініціалізації ядра. Ви можете налаштувати завантажувач (найімовірніше, GRUB), щоб дозволити завантажувати запис ядра, який говорить, що це init
має бути /usr/bin/bwbasic
(або залежно від іншого інстальованого BASIC).
Щоб це працювало, інтерпретатор BASIC, як і всі необхідні йому файли, повинні бути розташовані у кореневій ( /
) файловій системі. Це пояснюється тим, що одним із завдань init є встановлення всіх файлових систем, а тому, що ви надаєте не-init програму як init, некореневі файлові системи не були змонтовані. (Я вважаю, що ще одним із завдань 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
замість цього. Див. " Дозволи" - Як вставити текст у кореневий файл за допомогою sudo? - Unix & Linux Stack Exchange
init
було б налаштувати систему init для використання bwbasic
замість agetty
і не запускати менеджер дисплеїв X11. (Для інших, хто не знає, про що я говорю, ядро надає різні "віртуальні консолі", доступні через Ctrl + Alt + F1 через Ctrl + Alt + F12, і система init за замовчуванням запускається agetty
з 1 по 6 і X11 Менеджер дисплеїв (який забезпечує діалогове вікно входу) на 7. Перед запуском та систематизацією це контролювали через /etc/inittab
.), getty
і його нащадки обробляють підказки для входу в консоль.
Просто викиньте альтернативу: для Linux є кілька емуляторів, які можуть запускати ваші старі комп’ютери. Наприклад, з xkegs, якщо ви завантажуєте його, ви повинні очікувати базовий підказник applesoft. Спілкування з іншими матеріалами Linux - це вправа, що залишається читачеві (підказка: технічно, я вважаю, що ви можете перенаправити вихід у емільованому яблуку на емуляційний принтер, який xkegs потім відкриє як мережевий сокет, який ви можете використовувати, наприклад, nc для подачі в деякі інші трубопровідні програми тощо. Не впевнений, чи є інший шлях, але очікуйте, що щось подібне можна зробити). Я б очікував, що емулятори commodore 64 мають аналогічний спосіб запустити базовий Commodore тощо.
kegs
, схоже, це не один із них (немає apt-cache search
результату). А для деяких / більшості емуляторів вам, мабуть, доведеться звідкись отримати оригінальний ПЗУ.
init=/usr/bin/sdlbasic
на Linux ядра, що , якщо він працює допоможе вам набагато ближче, але він може або не може навіть працювати.
Є багато альтернатив. Моя пропозиція схожа на відповідь ssokolow. Якщо ви хочете "сучасний" 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/
В Інтернеті є емулятори інших машин,
але багато з них переходять безпосередньо до будь-якої програми, яку ви завантажуєте,
без емуляції початкового вводу клавіатури, необхідного для того, щоб потрапити туди.