Je voudrais exécuter du code BASIC, comme vous le faisiez sur des ordinateurs plus anciens, sous Linux. (Je recherche un interrupteur BASIC capable d'exécuter les fonctions du système d'exploitation de manière native)
Quelles options ai-je? (De préférence pour Debian et Arch-based)
linux
command-line
programming
DiamondCoderMan
la source
la source
Réponses:
Si vous souhaitez exécuter nativement sous Linux BASIC, vous avez le choix entre plusieurs packages dans Debian:
Pour les installer:
Quant à mon expérience personnelle, je préfère
bwbasic
car elle permet d'avoir la puissance de BASIC dans une ligne de commande de texte ou un script shell.Comme alternative, vous avez également plusieurs packages d'émulation d'ordinateurs de l'ancien, qui évidemment, outre la syntaxe BASIC, implémentent tout l'environnement d'un ancien ordinateur que vous voudrez peut-être revivre.
Chose intéressante,
bwbasic
en théorie, cela pourrait permettre d'automatiser les opérations sous Unix, par exemple la création de scripts à l'aide du langage BASIC. Je ne l'ai jamais essayé.la source
Mes systèmes Debian, et probablement la plupart des autres distributions Linux, ont plusieurs choix disponibles directement via le gestionnaire de paquets. Parmi eux:
bwbasic
:sdlbasic
:Page d'accueil (Guide de référence)
Wikipédia
la source
Puisque tout le monde semble supposer que vous entendez «PC pré-IBM» par «ordinateurs plus anciens», je vais emprunter l'autre voie et offrir une réponse qui interprète «ordinateurs plus anciens» comme «compatibles IBM avant Windows 9x».
Si, vous vouliez dire des ordinateurs exécutant des versions de MS-DOS incluses
QBASIC.EXE
, vous avez trois options, selon la façon dont vous les définissez strictement "sous Linux":Si vous avez toujours une copie de
QBASIC.EXE
coups de pied, vous pouvez utiliser DOSBox ou DOSEMU pour l'exécuter dans un environnement DOS virtualisé. (Les deux sont disponibles dans les référentiels Debian et sont simples à configurer. Il suffit de définir un dossier à monterC:
, déposezQBASIC.EXE
-le et vous êtes prêt à partir.)Cela vous donnera une parfaite compatibilité avec l'ancien code source, mais aucune intégration avec le système d'exploitation hôte au-delà "
C:
n'est en fait un dossier, plutôt qu'une image disque".Je dois toutefois préciser qu'il y a un compromis entre les deux. DOSEMU s'exécutera dans le terminal de votre choix, mais ne prendra pas en charge les astuces de bas niveau sophistiquées utilisées par certains éléments QBasic (par exemple, pour les modes graphiques spécialisés). La seule façon de prendre en charge un émulateur complet comme DOSBox ... mais DOSBox affichera sa propre fenêtre plutôt que d'utiliser votre terminal.
FreeBASIC a un
qb
dialecte / mode qui vise une parfaite compatibilité avec un large sous - ensemble de QuickBASIC. (Les éléments non pris en charge sont principalement des éléments de bas niveau liés au fait que QuickBASIC était un système en mode réel 16 bits tandis que FreeBASIC est un système en mode protégé 32 bits.)FreeBASIC propose des binaires Linux, mais vous ne les trouverez dans votre référentiel de paquets que si vous vouliez réellement dire "distributions de la famille Debian" plutôt que "Debian" et exécutez Ubuntu ou un dérivé d'Ubuntu comme Mint.
Les versions Linux de QB64 ne sont même pas dans les référentiels Ubuntu, mais il vise spécifiquement à être le descendant QuickBASIC en mode protégé le plus compatible et fournit même un IDE qui tente de cloner l'IDE QBasic / QuickBasic.
la source
Vous avez écrit dans un commentaire à la réponse de Foon que
D'autres ont fourni plusieurs suggestions différentes d'interprètes BASIC que vous pourriez installer sur un système Linux, donc je ne vais pas y aller. Les PC modernes ne sont généralement pas livrés avec des interprètes BASIC intégrés, vous êtes donc bloqué en train de démarrer quelque chose qui peut exécuter un interpréteur BASIC installé.
Au lieu de cela, je prendrai ce qui précède pour signifier que vous voulez quelque chose qui démarre automatiquement un interpréteur BASIC, similaire mais pas tout à fait comme les premiers micro-ordinateurs (tels que l'Apple II, le Commodore C-64, le Zinclair ZX-81 et leurs semblables) ) démarré dans un interpréteur BASIC natif.
Il y a essentiellement trois façons de le faire auxquelles je peux penser:
Créer un lanceur de bureau qui ouvre un terminal
C'est le moins invasif, car il fonctionne pleinement dans le système et l'environnement auxquels vous êtes habitué.
Fondamentalement, par tous les moyens fournis par votre environnement de bureau, vous créez un lanceur de programme et le configurez pour lancer l'interpréteur BASIC de votre choix dans un terminal. Pour un effet supplémentaire, vous pouvez définir des polices, des couleurs, etc. spécifiques pour simuler un environnement d'antan. La façon exacte de procéder dépend de l'environnement de bureau que vous utilisez, que vous n'avez pas spécifié, mais un clic droit sur l'endroit où vous cliquez actuellement pour lancer des applications et la recherche d'un choix pour créer un nouveau lanceur sera un bon début. .
Créez un compte utilisateur séparé avec un interpréteur BASIC comme shell
C'est un peu plus compliqué qu'un simple lanceur de bureau, mais les fournisseurs offrent une meilleure isolation afin de ne pas risquer de gâcher vos propres fichiers. Tout d'abord, installez un interpréteur BASIC; Je vais utiliser
bwbasic
l'exemple, mais tout va vraiment, tant qu'il s'exécute en mode natif dans un terminal. Ajoutez ensuite un utilisateur et définissez son shell comme étant l'interpréteur bwbasic. Cela peut être fait via l'interface graphique, mais cela dépend de l'environnement de bureau que vous utilisez; l'approche portable est de le faire dans un terminal utilisantuseradd
. Ce sera quelque chose de similaire àEnsuite, vous devriez pouvoir entrer dans un environnement BASIC propre via sudo:
Vous pouvez créer un lanceur (comme ci-dessus) qui exécute cette commande dans un terminal, si vous le souhaitez.
Donnez votre mot de passe normal lorsque vous êtes invité par sudo. Vous pouvez modifier la configuration des sudoers pour éviter l'invite de mot de passe si vous le souhaitez, mais sachez que la modification des sudoers est quelque peu compliquée et encore plus risquée; vous pouvez vous verrouiller hors du compte root, ce qui rend la réparation de la configuration assez difficile.
Utilisez un interpréteur BASIC comme init
C'est l'approche la plus invasive, mais elle vous rapproche également le plus du fonctionnement des premiers micro-ordinateurs, en démarrant directement dans un interpréteur BASIC. Je ne le recommande pas et je considérerais qu'il est peu probable qu'il fonctionne sans travail important, mais je l'inclus pour être complet.
Le noyau Linux accepte un paramètre de ligne de commande (oui, le noyau Linux a des paramètres de ligne de commande; vous pouvez voir la ligne de commande actuellement démarrée en lisant dans / proc / cmdline) nommé
init
, qui spécifie le programme à exécuter une fois l'initialisation du noyau terminée. Vous pouvez configurer le chargeur de démarrage (probablement GRUB) pour vous permettre de démarrer une entrée de noyau qui indique que celainit
devrait être/usr/bin/bwbasic
(ou tout autre interpréteur BASIC que vous avez installé).Pour que cela fonctionne, l'interpréteur BASIC, ainsi que tous les fichiers dont il a besoin, doivent être situés sur le
/
système de fichiers root ( ). En effet, l'une des tâches d'init consiste à monter tous les systèmes de fichiers et parce que vous fournissez un programme non init en tant qu'init, les systèmes de fichiers non root n'auront pas été montés. (Je crois qu'une autre tâche d'init est de remonter le système de fichiers racine en mode lecture-écriture, donc par l'approche triviale vous ne pourrez rien enregistrer. Vous pourriez cependant, en fonction des détails d'implémentation, pouvoir demander au système d'exécuter quelque chose commemount -o remount,rw /
pour remonter le système de fichiers racine en lecture-écriture.) L'interpréteur BASIC que vous avez choisi ne doit pas non plus dépendre de quoi que ce soit dont init est responsable, et vous n'aurez accès à aucune installation gérée par init ou à aucun processus engendré par init (par exemple , prise en charge réseau ou multi-utilisateurs).Une ligne de commande du noyau de quelque chose comme ça
ro quiet init=/usr/bin/bwbasic
vous rapprochera probablement de ce à quoi il ressemblait autrefois.la source
sudo echo
ne fait pas ce que vous voulez dire et vous risquez d'en rencontrer de-bash: /etc/shells: Permission denied
toute façon car la>>
redirection est configurée par bash avant que le reste de la commande ne soit évalué. Il est probablement préférable d'utiliser à latype -P bwbasic | sudo tee -a /etc/shells
place. Voir " Permissions - Comment insérer du texte dans un fichier appartenant à root en utilisant sudo? - Unix & Linux Stack Exchangeinit
serait de configurer le système d'initialisation à utiliser à labwbasic
placeagetty
et de ne pas démarrer un gestionnaire d'affichage X11. (Pour ceux qui ne savent pas de quoi je parle, le noyau fournit diverses "consoles virtuelles" accessibles via Ctrl + Alt + F1 via Ctrl + Alt + F12 et le système init, par défaut, démarreagetty
de 1 à 6 et un gestionnaire d'affichage X11 (qui fournit une boîte de dialogue de connexion) sur 7. Avant Upstart et systemd, cela était contrôlé via/etc/inittab
.)getty
et ses descendants gèrent les invites de connexion à la console.Juste pour jeter une alternative: il existe plusieurs émulateurs pour Linux qui peuvent exécuter vos anciens ordinateurs. Par exemple, avec xkegs, si vous le démarrez, vous devriez avoir une invite de base applesoft qui vous attend. Communiquer avec d'autres trucs linux est un exercice laissé au lecteur (indice: techniquement, je crois que vous pouvez rediriger la sortie de votre pomme émulée vers l'imprimante émulée, que xkegs exposera ensuite comme une prise réseau que vous pouvez utiliser, par exemple, nc pour alimenter certaines autres applications, etc. Je ne sais pas s'il y a moyen d'aller dans l'autre sens, mais attendez-vous à ce que quelque chose de similaire puisse être fait). Je m'attendrais à ce que les émulateurs du commodore 64 aient de la même manière un moyen d'exécuter le basic du commodore, etc.
la source
kegs
ne semble pas être l'un d'eux (aucunapt-cache search
résultat). Et pour certains / la plupart des émulateurs, vous aurez probablement besoin d'obtenir une ROM originale quelque part.init=/usr/bin/sdlbasic
au noyau Linux, qui, s'il fonctionne , vous rapprochera beaucoup plus, mais cela peut ou peut ne pas fonctionner.Il existe de nombreuses alternatives. Ma suggestion est similaire à la réponse de ssokolow. Si vous voulez un BASIC "moderne" mais avec une syntaxe similaire aux anciens interprètes BASIC, vous devriez essayer BaCon . C'est un transpilateur BASIC qui génère du code natif. Le projet a un très bon manuel, beaucoup de bibliothèques et d'exemples, et même un IDE écrit en BaCon.
la source
Vous pouvez exécuter un C64 dans votre navigateur et utiliser BASIC de cette façon.
http://codeazur.com.br/stuff/fc64_final/
Soyez conscient que la disposition du clavier est différente, c'est- Shift-2à- dire pour les citations.
http://jilltxt.net/wp-content/uploads/C64-keyboard-layout.png
Applesoft BASIC si vous préférez - http://calormen.com/jsbasic/
Il existe des émulateurs d'autres machines en ligne,
mais beaucoup d'entre eux vont directement au programme que vous chargez,
sans émuler l'entrée de clavier initiale requise pour y arriver.
la source