Cree un iniciador de escritorio que abra una terminal

Cree un iniciador de escritorio que abra una terminal

Me gustaría ejecutar código BÁSICO, como solía hacerlo en computadoras más antiguas, en Linux. (Estoy buscando un intérprete BÁSICO que pueda ejecutar funciones del sistema operativo de forma nativa)

¿Que opciones tengo? (Preferiblemente para sistemas basados ​​en Debian y Arch)

Respuesta1

Si quieres ejecutar Linux BASIC de forma nativa tienes varios paquetes en Debian para elegir:

  • brandy - compatible con BBC Micro BASIC - funciona en una interfaz gráfica X11, aparentemente admite sonido y gráficos;

Brandy es intérprete de BBC BASIC V, el dialecto de BASIC que Acorn Computers proporcionó con sus gamas de computadoras de escritorio que usan el procesador ARM, como Archimedes y Risc PC, y todavía se usa en estos y compatibles.

   BASIC V is a much extended version of BBC BASIC. 

Este fue el BASIC utilizado en el BBC Micro basado en 6502 que Acorn fabricó durante la década de 1980.

  • bwbasic - byWater BASIC - modo texto, afirma ser compatible con ANSI, tiene extensiones compatibles con shell y afirma ser capaz de emular/tener buena compatibilidad con varios tipos de dialectos BASIC "antiguos", incluidos IBM BASICA, Microsoft BASIC y gwBASIC.

bwBASIC se puede configurar para emular características, comandos y funciones disponibles en diferentes tipos de intérpretes BASIC;

bwBASIC implementa una característica que no está disponible en los intérpretes BASIC anteriores: se puede ingresar un comando de shell de forma interactiva en el indicador de bwBASIC y el intérprete lo ejecutará bajo un shell de comandos.
Por ejemplo, el comando "dir *.bas" se puede ingresar en bwBASIC (en DOS, o "ls -l *.bas" en UNIX) y se ejecutará desde la línea de comandos del sistema operativo.

Los comandos de shell también se pueden dar en líneas numeradas en un programa bwBASIC, de modo que bwBASIC pueda usarse como lenguaje de programación de shell. La implementación de bwBASIC de los comandos y funciones RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON y ENVIRON$() ofrece capacidades adicionales de procesamiento de shell.

Para instalarlos:

sudo apt-get install brandy bwbasic

En cuanto a mi experiencia personal, lo prefiero bwbasicporque permite tener el poder de BASIC en una línea de comando de texto o script de shell.

Como alternativa, también tienes varios paquetes de emulación de ordenadores antiguos, que obviamente además de la sintaxis BÁSICA implementan todo el entorno de algún ordenador antiguo que quizás quieras revivir.

Curiosamente, bwbasicen teoría podría permitir automatizar operaciones en Unix, por ejemplo, crear scripts utilizando el lenguaje BASIC. Aunque nunca lo intenté.

Respuesta2

tu escribiste enun comentarioala respuesta de fooneso

Lo que quiero decir con "como computadoras viejas" es que simplemente está ahí.

Otros han proporcionado varias sugerencias diferentes para intérpretes BASIC que se pueden instalar en un sistema Linux, así que no entraré en eso. Las PC modernas generalmente no vienen con intérpretes BASIC integrados, por lo que no puede iniciar algo que pueda ejecutar un intérprete BASIC instalado.

Más bien, interpretaré lo anterior en el sentido de que desea algo que inicie un intérprete BASIC automáticamente, similar pero no del todo a cómo las primeras microcomputadoras (como Apple II, Commodore C-64, Zinclair ZX-81 y similares ) arrancado en un intérprete BASIC nativo.

Básicamente, se me ocurren tres formas de hacer esto:

Cree un iniciador de escritorio que abra una terminal

Este es el menos invasivo, porque funciona completamente dentro del sistema y entorno al que estás acostumbrado.

Básicamente, a través de cualquier medio que proporcione su entorno de escritorio, usted crea un iniciador de programa y lo configura para iniciar el intérprete BÁSICO de su elección en una terminal. Para lograr un efecto adicional, puede configurar fuentes, colores, etc. específicos para simular un entorno de antaño. Exactamente cómo haría esto depende del entorno de escritorio que esté utilizando, que no ha especificado, pero hacer clic con el botón derecho en el lugar donde está haciendo clic actualmente 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 proporciona un mejor aislamiento para que no corras el riesgo de estropear tus propios archivos. Primero, instale un intérprete BÁSICO; Lo usaré bwbasicpara el ejemplo, pero todo vale, siempre y cuando se ejecute de forma nativa en una terminal. Luego agregue un usuario y configure su shell para que sea el intérprete de bwbasic. Esto se puede hacer a través de la GUI, pero depende del entorno de escritorio que esté utilizando; el enfoque portátil es hacerlo en una terminal usando useradd. Esto será algo similar a

$ 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

Luego, deberías poder ingresar a un entorno BÁSICO limpio a través de sudo:

$ sudo -i -u basic

Puede crear un iniciador (como el anterior) que ejecute este comando en una terminal, si lo desea.

Proporcione su contraseña normal cuando sudo se lo solicite. Puede editar la configuración de sudoers para evitar que se le solicite la contraseña si lo desea, pero tenga en cuenta que editar sudoers es algo complicado y aún más riesgoso; podría bloquearse el acceso a la cuenta raíz, lo que dificultaría bastante la reparación de la configuración.

Utilice un intérprete BÁSICO como inicio

Este es el enfoque más invasivo, pero también lo acerca más a cómo funcionaban las primeras microcomputadoras, al iniciar directamente en un intérprete BÁSICO.No lo recomiendo y considero poco probable que funcione.sin trabajo significativo, pero lo incluyo para que esté 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 iniciada leyendo desde /proc/cmdline) llamado init, que especifica qué programa ejecutar una vez que se completa la inicialización del kernel. Puede configurar el cargador de arranque (muy probablemente GRUB) para permitirle arrancar una entrada del kernel que diga que initdebería ser así /usr/bin/bwbasic(o cualquier otro intérprete BASIC que haya instalado).

Para que esto funcione, el intérprete BASIC, así como todos los archivos que requiere, deben estar ubicados en el /sistema de archivos raíz ( ). Esto se debe a que una de las tareas de init es montar todos los sistemas de archivos, y debido a que está proporcionando un programa que no es init como init, los sistemas de archivos que no son raíz 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 lectura-escritura, por lo que mediante el enfoque trivial no podrá guardar nada. Sin embargo, dependiendo de los detalles exactos de la implementación, podrá haga que el sistema ejecute algo como mount -o remount,rw /volver a montar el sistema de archivos raíz de lectura y 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 ni 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/bwbasicprobablemente te acercará bastante a cómo se veía en los viejos tiempos.

Respuesta3

Dado que todo el mundo parece suponer que te refieres a "PC anterior a IBM" con "computadoras más antiguas", voy a ir por el otro camino y ofreceré una respuesta que interpreta que "computadoras más antiguas" significa "compatibles con IBM antes de Windows 9x".

Si se refiere a computadoras que ejecutan versiones de MS-DOS que incluyen QBASIC.EXE, tiene tres opciones, dependiendo de qué tan estrictamente defina ejecutarlas "en Linux":

  1. Si todavía tienes una copia de QBASIC.EXEkicking around, puedes usarDOSBoxoDOSEMUpara ejecutarlo en un entorno DOS virtualizado. (Ambos están disponibles en los repositorios de Debian y son fáciles de configurar. Simplemente configure una carpeta para montarla como C:, colóquela QBASIC.EXEy listo).

    Eso le brindará una compatibilidad perfecta con el código fuente antiguo, pero no habrá 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 existe una compensación entre los dos. DOSEMU se ejecutará en cualquier terminal que desee, pero no admitirá los sofisticados trucos de bajo nivel que usan algunas cosas de QBasic (por ejemplo, para modos de gráficos especializados). ElsoloLa forma de admitirlo es un emulador completo como DOSBox... pero DOSBox abrirá su propia ventana en lugar de usar su terminal.

  2. GratisBÁSICOtiene un qbdialecto/modo que apunta a una perfecta compatibilidad con ungran subconjuntode QuickBASIC. (Las cosas no compatibles son en su mayoría cosas de bajo nivel relacionadas con el hecho de que QuickBASIC era un sistema en modo real de 16 bits, mientras que FreeBASIC es un sistema en modo protegido de 32 bits).

    FreeBASIC ofrece binarios de Linux, pero solo los encontrará en su repositorio de paquetes si en realidad quiso decir "distros de la familia Debian" en lugar de "Debian" y está ejecutando Ubuntu o un derivado de Ubuntu como Mint.

  3. Las compilaciones de Linux deQB64ni siquiera están en los repositorios de Ubuntu, pero apunta específicamente a ser el descendiente de QuickBASIC en modo protegido más compatible e incluso proporciona un IDE que intenta clonar el IDE QBasic/QuickBasic.

Respuesta4

Sólo para descartar una alternativa: existen varios emuladores para Linux que puedencorrertus viejas computadoras. Como ejemplo, con xkegs, si lo inicia, debería tener un mensaje básico de Applesoft esperándolo. Comunicarse con otras cosas de Linux es un ejercicio que se deja al lector (pista: técnicamente, creo que puedes redirigir la salida de tu Apple emulado a la impresora emulada, que xkegs luego expondrá como un socket de red que puedes usar, por ejemplo).Carolina del Nortepara alimentar otras aplicaciones canalizadas, etc. No estoy seguro de si hay una manera de ir en sentido contrario, pero espero que se pueda hacer algo similar). Esperaría que los emuladores de Commodore 64 tuvieran de manera similar una forma de ejecutar el sistema básico de Commodore, etc.

información relacionada