Me gustaría ejecutar código BASIC, como solía hacerlo en computadoras más antiguas, en Linux. (Estoy buscando un interruptor BASIC que pueda ejecutar funciones del sistema operativo de forma nativa)
¿Que opciones tengo? (Preferentemente para Debian y Arch-based)
linux
command-line
programming
DiamondCoderMan
fuente
fuente
Respuestas:
Si desea ejecutar de forma nativa en Linux BASIC, tiene varios paquetes en Debian para elegir:
Para instalarlos:
En cuanto a mi experiencia personal, prefiero
bwbasic
ya que permite tener el poder de BASIC en una línea de comando de texto o script de shell.Como alternativa, también tiene varios paquetes de emulación de computadoras de la antigüedad, que obviamente, además de la sintaxis BASIC, implementan todo el entorno de alguna computadora antigua que desee revivir.
Curiosamente,
bwbasic
en teoría podría permitir la automatización de operaciones en Unix, por ejemplo, la creación de scripts utilizando el lenguaje BASIC. Aunque nunca lo intenté.fuente
Mis sistemas Debian, y probablemente la mayoría de las otras distribuciones de Linux, tienen varias opciones disponibles directamente a través del administrador de paquetes. Entre ellos:
bwbasic
:sdlbasic
:Página de inicio (guía de referencia)
Wikipedia
fuente
Dado que todo el mundo parece estar asumiendo que quiere decir "PC anterior a IBM" por "computadoras más antiguas", voy a ir a la otra ruta y ofreceré una respuesta que interpreta que "computadoras más antiguas" significa "compatibles con IBM antes de Windows 9x".
Si se refería a computadoras con versiones de MS-DOS que incluían
QBASIC.EXE
, tiene tres opciones, dependiendo de qué tan estrictamente defina ejecutarlas "en Linux":Si todavía tiene una copia de
QBASIC.EXE
patadas, puede usar DOSBox o DOSEMU para ejecutarlo en un entorno virtualizado de DOS. (Ambos están disponibles en los repositorios de Debian y son fáciles de configurar. Simplemente configure una carpeta para montarlaC:
, colóquelaQBASIC.EXE
y listo).Eso le dará una compatibilidad perfecta con el código fuente anterior, pero ninguna integración con el sistema operativo host más allá de "
C:
es en realidad una carpeta, en lugar de una imagen de disco".Debo aclarar, sin embargo, que hay una compensación entre los dos. DOSEMU se ejecutará en cualquier terminal que desee, pero no admitirá los sofisticados trucos de bajo nivel que utilizan algunas cosas de QBasic (por ejemplo, para modos gráficos especializados). La única forma de soportar eso es un emulador completo como DOSBox ... pero DOSBox abrirá su propia ventana en lugar de usar su terminal.
FreeBASIC tiene un
qb
dialecto / modo que apunta a una compatibilidad perfecta con un gran subconjunto de QuickBASIC. (Las cosas no admitidas son principalmente de bajo nivel relacionadas con el hecho de que QuickBASIC era un sistema de modo real de 16 bits, mientras que FreeBASIC es un sistema de modo protegido de 32 bits).FreeBASIC ofrece binarios de Linux, pero solo lo encontrará en su repositorio de paquetes si realmente quería decir "distribuciones de la familia Debian" en lugar de "Debian" y está ejecutando Ubuntu o un derivado de Ubuntu como Mint.
Las compilaciones de Linux de QB64 ni siquiera están en los repositorios de Ubuntu, pero apunta específicamente a ser el descendiente QuickBASIC en modo protegido más compatible e incluso proporciona un IDE que intenta clonar el IDE QBasic / QuickBasic.
fuente
Escribiste en un comentario a la respuesta de Foon que
Otros han proporcionado varias sugerencias diferentes para los intérpretes BASIC que podría instalar en un sistema Linux, por lo que no iré allí. Las PC modernas generalmente no vienen con intérpretes BASIC incorporados, por lo que está bloqueado arrancando algo que puede ejecutar un intérprete BASIC instalado.
Más bien, tomaré lo anterior para significar que quiere algo que inicie un intérprete BASIC automáticamente, similar pero no del todo parecido a las primeras microcomputadoras (como Apple II, Commodore C-64, Zinclair ZX-81 y sus semejantes) ) arrancado en un intérprete BASIC nativo.
Básicamente, puedo pensar en tres formas de hacer esto:
Crea un lanzador de escritorio que abra una terminal
Este es el menos invasivo, porque funciona completamente dentro del sistema y el entorno al que está acostumbrado.
Básicamente, a través de cualquier medio que proporcione su entorno de escritorio, usted crea un iniciador de programas y lo configura para iniciar el intérprete BÁSICO de su elección en un terminal. Para un efecto adicional, puede configurar fuentes, colores, etc. específicos, para simular un entorno de días pasados. La forma exacta en que haría esto depende del entorno de escritorio que esté utilizando, que no ha especificado, pero hacer un clic derecho en el lugar donde está haciendo clic para iniciar aplicaciones y buscar una opción para crear un nuevo iniciador será un buen comienzo .
Cree una cuenta de usuario separada con un intérprete BÁSICO como shell
Esto es un poco más complicado que un simple iniciador de escritorio, pero los proveedores tienen un mejor aislamiento para que no te arriesgues a arruinar tus propios archivos. Primero, instale un intérprete BÁSICO; Lo usaré
bwbasic
para el ejemplo, pero todo vale, siempre y cuando se ejecute de forma nativa en un terminal. Luego agregue un usuario y configure su shell para que sea el intérprete bwbasic. Esto se puede hacer a través de la GUI, pero eso depende del entorno de escritorio que esté utilizando; el enfoque portátil es hacerlo en una terminal usandouseradd
. Esto será algo similar aLuego, debería poder ingresar a un entorno BASIC limpio a través de sudo:
Puede crear un lanzador (como se indicó anteriormente) que ejecute este comando en una terminal, si así lo desea.
Proporcione su contraseña normal cuando se lo solicite sudo. Puede editar la configuración de sudoers para evitar la solicitud de contraseña si lo desea, pero tenga en cuenta que editar sudoers es algo complicado y aún más riesgoso; puede bloquear la cuenta raíz, lo que dificulta la reparación de la configuración.
Use un intérprete BÁSICO como init
Este es el enfoque más invasivo, pero también lo acerca más a cómo funcionaban las primeras microcomputadoras, al arrancar directamente en un intérprete BASIC. No recomiendo esto, y consideraría que es poco probable que funcione sin un trabajo significativo, pero lo estoy incluyendo por completo.
El kernel de Linux acepta un parámetro de línea de comando (sí, el kernel de Linux tiene parámetros de línea de comando; puede ver la línea de comando actualmente arrancada leyendo / / proc / cmdline) llamada
init
, que especifica qué programa ejecutar una vez que se completa la inicialización del kernel. Puede configurar el cargador de arranque (probablemente GRUB) para permitirle arrancar una entrada del núcleo que dice queinit
debería ser/usr/bin/bwbasic
(o cualquier otro intérprete BÁSICO que haya instalado).Para que esto funcione, el intérprete BASIC, así como todos los archivos que necesita, deben ubicarse en el
/
sistema de archivos root ( ). Esto se debe a que una de las tareas de init es montar todos los sistemas de archivos, y porque está proporcionando un programa no init como init, los sistemas de archivos no root no se habrán montado. (Creo que otra de las tareas de init es volver a montar el sistema de archivos raíz en modo de lectura y escritura, por lo que por el enfoque trivial no podrá guardar nada. Sin embargo, es posible que, dependiendo de los detalles de implementación exactos, pueda hacer que el sistema ejecute algo comomount -o remount,rw /
para volver a montar el sistema de archivos raíz de lectura-escritura.) El intérprete BASIC elegido tampoco debe depender de nada más de lo que init sea responsable, y no tendrá acceso a ninguna instalación manejada por init o por ningún proceso generado por init (por ejemplo , redes o soporte multiusuario).Una línea de comando del kernel de algo así
ro quiet init=/usr/bin/bwbasic
probablemente lo acercará bastante a cómo se veía en los viejos tiempos.fuente
sudo echo
no hace lo que quiere decir y es probable que se encuentre de-bash: /etc/shells: Permission denied
todos modos ya que la>>
redirección se configura mediante bash antes de que se evalúe el resto del comando. Probablemente sea mejor usarlotype -P bwbasic | sudo tee -a /etc/shells
en su lugar. Ver " permisos - ¿Cómo insertar texto en un archivo propiedad de root usando sudo? - Unix & Linux Stack Exchangeinit
sería configurar el sistema init para usar enbwbasic
lugar deagetty
y no iniciar un administrador de pantalla X11. (Para otros que no saben de lo que estoy hablando, el núcleo proporciona varias "consolas virtuales" accesibles a través de Ctrl + Alt + F1 a través de Ctrl + Alt + F12 y el sistema init, por defecto, comienzaagetty
del 1 al 6 y un X11 Display Manager (que proporciona un cuadro de diálogo de inicio de sesión) en 7. Antes de Upstart y systemd, esto se controlaba mediante/etc/inittab
.)getty
y sus descendientes manejan las instrucciones de inicio de sesión de la consola.Solo para descartar una alternativa: hay múltiples emuladores para Linux que pueden ejecutar sus computadoras viejas. Como ejemplo, con xkegs, si lo inicia, debería tener un aviso básico de Appleoft esperando por usted. La comunicación con otras cosas de Linux es un ejercicio que queda para el lector (pista: técnicamente, creo que puede redirigir la salida en su manzana emulada a la impresora emulada, que xkegs expondrá como un zócalo de red que puede usar, por ejemplo, nc para alimentar algunas otras aplicaciones canalizadas, etc. No estoy seguro de si hay una manera de ir a la inversa, pero espero que se pueda hacer algo similar). Esperaría que los emuladores del comodoro 64 también tuvieran una forma de ejecutar el básico del comodoro, etc.
fuente
kegs
no parece ser uno de ellos (sinapt-cache search
resultado). Y para algunos / la mayoría de los emuladores, probablemente necesitará obtener una ROM original de alguna parte.init=/usr/bin/sdlbasic
al kernel de Linux, que si funciona lo acercará mucho más, pero puede o no funcionar.Hay muchas alternativas. Mi sugerencia es similar a la respuesta de ssokolow. Si desea un BASIC "moderno" pero con una sintaxis similar a los viejos intérpretes BASIC, entonces debe probar BaCon . Es un transpilador BÁSICO que genera código nativo. El proyecto tiene un manual bastante bueno, muchas bibliotecas y ejemplos, e incluso un IDE escrito en BaCon.
fuente
Puede ejecutar un C64 en su navegador y usar BASIC de esa manera.
http://codeazur.com.br/stuff/fc64_final/
Tenga en cuenta que la distribución del teclado es diferente, es decir, Shift-2entre comillas.
http://jilltxt.net/wp-content/uploads/C64-keyboard-layout.png
Applesoft BASIC si lo prefiere: http://calormen.com/jsbasic/
Hay emuladores de otras máquinas en línea,
pero muchos de ellos van directamente a cualquier programa que cargue,
sin emular la entrada de teclado inicial requerida para llegar allí.
fuente