Shell   01-12-2022, 14:23
#1
Buenas!.

La idea es poder usar Visual Code para programar en el basic de Zx Spectrum (Basic Sinclair) y que el editor me permita usar un script en bash para convertir
y ejecutar en el emulador.  Este script lo lamaría Visual Code.

Visual Code dispone de distintos "complementos" que permiten desde "descatar" palabras reservadas de un basic de Commodore,
Msx, Zx Spectrum y mucho más. Esto también lo hacen otros editores, como SublimeText y su alternativa libre que ahora no recuerdo el nombre.

Este es el script que pretendo ejecutar. Claro, el archivo fuente de basic creado deberá ser guardado en un directorio a escoger por el usuario y entonces llamarlo.
( Perdonar la sencillez del script, que seguro que es mejorable. Lo principal es que  funciona ). Rolleyes

Código:
#!/bin/bash

# Convierte un archivo .bas que debe contener codigo basic de Zx Spectrum
# Se le pasa como único parámetro un archivo con extensión .bas
# Se asigna su valor, nombre, a la variable f
f=$1

# La extensión a la que convertimos es tap
extension='.tap'

# Eliminamos la extensión bas quedando solo el nombre sin esta para poder concatenar luego
noextension="${f%.*}"

# Convertimos el nombre original del archivo con la extensión .bas al mismo pero con .tap
# Y ademas usamos el guión -n para que a la hora de cargar la cinta se vea su nombre en el emulador
zmakebas $1 -o $noextension$extension -n $noextension

# Inicia el emulador fuse para ver la cinta creada con nuestro programa
fuse $noextension$extension

Siempre pregunto y no busco lo suficiente. Wink

Es algo como si tuvieras un código escrito en "C" y le dijeses al editor que programa debe usar para ejecutar el código y que opciones.
En este caso Visual Code grabaría el archivo.bas en un directorio y le pasaría el nombre al script para su conversión a cinta.

Saludos

El código en Visual Studio Code:

[Imagen: 0aNGgZ2.png]

El script lo guardé en /usr/local/bin
En este caso le paso el HolaMundo.bas que tengo en un directorio cualquiera.
El emulador carga la cinta y muestro el código en su interprete basic.

[Imagen: 3PPJ87A.png]
Última modificación: 01-12-2022, 14:42 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   01-12-2022, 17:38
#2
He tenido que modificar el script. Ya que al final se le pasaba como nombre de programa toda la ruta completa, en vez de solo un nombre.
Imaginar, load "" y mostraba como nombre del programa /home/usuario

Ademas para los que conocisteis esos ordenadores, recordar que la longitud de aquellos nombres de programas podían estar limitados a diez caracteres.


Código:
#!/bin/bash

# Convierte un archivo .bas que debe contener codigo basic de Zx Spectrum
# Se le pasa como único parámetro un archivo con extensión .bas

# El nombre del archivo sin ruta es
nombrebase=$(basename $1)

# La extensión a la que convertimos es tap
extension='.tap'

# Eliminamos la extensión bas quedando solo el nombre sin esta para poder concatenar luego
noextension="${nombrebase%.*}"

# Convertimos el nombre original del archivo con la extensión .bas a el mismo
# Y ademas usamos el guión -n para que a la hora de cargar se vea su nombre en el emulador
zmakebas $1 -o $noextension$extension -n $noextension

# Inicia el emulador fuse para ver la cinta creada con nuestro programa
fuse $noextension$extension

Por cierto, en Mate uso Xed para editar archivos, cuando edita como administrador los colores de los comentarios son horribles!!!. Ni se ven.

Cuidado:

[Imagen: xRVR1Ph.png]

Mortal.
Última modificación: 01-12-2022, 17:42 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   01-12-2022, 20:24
#3
No, nunca lo he usado.

Saludos

No podemos regresar
guizans   01-12-2022, 22:54
#4
Magnifico aporte, Shell.

Mi primer ordenador, un Spectrum ZX con 128 Kb de memoria. Una máquina impresionante. Y por supuesto programar mi pequeños programas. Creo que la nostalgia y los recuerdos se están apoderando de mi y voy a usar tu script para hacer algún pequeño programa en el Spectrum. Nunca he usado Visual Code pero supongo que no será complicado.

Un saludo.
Shell   02-12-2022, 14:36
#5
(01-12-2022, 22:54)guizans escribió: Mi primer ordenador, un Spectrum ZX con 128 Kb de memoria. Una máquina impresionante. Y por supuesto programar mi pequeños programas. Creo que la nostalgia y los recuerdos se están apoderando de mi y voy a usar tu script para hacer algún pequeño programa en el Spectrum. Nunca he usado Visual Code pero supongo que no será complicado.

Realmente se puede escribir desde un editor de texto cualquiera, siempre que se respete las líneas y la estructura del programa y eso ya lo conoces.
Naturalmente no es tan cómodo como el editor de Gambas. El complemento lo que hace es destacar las instrucciones de basic. Puedo asegurarte que
hay otro complementos más sofisticados. Y unas de las peculiaridades que tienen es que hacen uso desde un compilador de basic ( De Boriel supongo )
y ademas que este basic compilado, admite desde el clásico basic de Sinclair, hasta el uso de funciones (cosa que no existía en aquella época en el ordenador ),
como es también de no tener necesidad de número de líneas.

Aquí donde su creador  habla del compilador: ( ya existían en Spectrum, compiladores del basic, algunos muy buenos como el Hisoft basic).
Lo que te muestro es más actual (dentro de las posibilidades).

Zx Basic compiler

No pido tanto, tan solo poder escribir ejemplos de aquellos programas, mejorarlos, adaptarlos a gambas, etc. Funciones ya me parece ya,
rizar el rizo.

Entrando en más materia y complicándose un poco.

Preparando el ambiente para programar para Next con Boriel ZX Basic y NextBuild

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   03-12-2022, 11:33
#6
Encontré una forma de hacerlo.

Cuando creamos un proyecto en Gambas, le damos un nombre, crea archivos por defecto y a medida que vamos modificando o añadiendo cosas, grabamos.
En un editor más sencillo tal como se inicia, vemos la entrada de texto, escribimos y guardamos. En el caso de Visual Code, el código fuente
se habría escrito en algún lugar antes de ejecutar el script. Aunque lo suyo es trabajar con proyectos, suelo hacerlos con archivos sueltos,
sobre todo en Python. ( Siempre dentro del mismo directorio ). Para algo sencillo es suficiente.

How to run a command in Visual Studio Code with launch.json

Se hace mediante tareas, no es ejecución o depuración, su menú es otro.
En el post se explica un poco como hacerlo, algunos lo hacen desde Linux y otros desde Windows.
Es más reducido de lo que parece.

El archivo tasks.json se me ha quedado así: ( Parece que con todos los lenguajes que soporta geshi en el editor de Gambas, json no lo admite.
Código:
{  
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "convbas2tape ${file}",                                                           
            }
        }
    ]
}

convbas2tape es el script que hice y tengo en /usr/local/bin 

No dudo que puede haber cosas sobrantes. Títulos como label no adecuados (echo). Son cosas del archivo plantilla.

Esto se hace desde el menú Terminal y allí, abajo de todo las opciones, existen dos.
Configurar tarea y configurar tarea de compilación predeterminada.
Y este es el archivo tasks.json. En este si se encuentra la propiedad "preLaunchTask"
 
Código:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "launch program",
            "skipFiles": [ "<node_insertnals>/**"],
            "preLaunchTask": "convbas2tape"
                   
                      
                        
            
        }
    ]
}

Aunque los dos se llaman igual, su ubicación es distinta. Hay uno que se encuentra dentro un directorio oculto de la home del usuario en  el .config
Y el otro igual, solo que es ya dentro de .vscode.

Intenté probar con editores como SublimeText ( solo existe el complemento MSX) y Atom. No hubo suerte.

Luego configuraciones más complicadas si se quería hacer más ya parecía algo más pensado para Windows.
Ya que el tipo de aplicaciones eran ejecutables en su sistema. Que probablemente haya una emulación, pero paso.
Ejecuta emuladores de este sistema. Se sale bastante de lo que quiero. Y aunque no lo uso mucho, tengo Windows 10.

Lo que si debe ser imposible al menos en este editor, es la creación de G.D.U's. Gráficos definidos por el usuario.
Para eso hay otros y no voy por estos temas.

Dominar los archivos scripts en Linux  y darles uso es fundamental.  Es programación solo que a nivel de scrpit bash.
Ahorra mucho tiempo y tareas.

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.