Compiladores Basic para ZX
Moderador: Fundadores
- javu61
- Fundador
- Mensajes: 2175
- Registrado: 30 Mar 2013, 11:58
- Ubicación: Valencia
- Been thanked: 76 times
- Contactar:
Re: Compiladores Basic para ZX
Los compiladores "compilan" las instrucciones estándar generando código máquina que llama a las rutinas en ROM cuando lo necesitan, para las extensiones hay que conocer bien la sintaxis de los comandos y las llamadas que hacen a las ampliaciones de las ROM de que disponen, por lo que a los creadores de compiladores les es complicado hacer que funcionen con cualquiera de ellas.
Lo mejor es que contactes con Boriel y le propongas que amplie su compilador para que soporte esos comandos, aunque es laborioso buscar la documentación o hacer seguimientos de las rutinas en código máquina para ver lo que hacen y como llamarlas, y no se como va de tiempo.
Lo mejor es que contactes con Boriel y le propongas que amplie su compilador para que soporte esos comandos, aunque es laborioso buscar la documentación o hacer seguimientos de las rutinas en código máquina para ver lo que hacen y como llamarlas, y no se como va de tiempo.
Larga vida y prosperidad \\//_
- merlinkv
- Hermano de Lucifer
- Mensajes: 6353
- Registrado: 06 Abr 2015, 23:08
- Ubicación: Madrid / Europa del Este
- Has thanked: 114 times
- Been thanked: 316 times
- Contactar:
Re: Compiladores Basic para ZX
Por eso intentaba hacerlo con la versión que tengo del HiBasic en formato MGT, pero por lo que veo es la misma que para los ZX normales.
Contactaré con Boriel, la ROM del +D está desensamblada y comentada, quizá con eso ya pudiera hacer algo ....
Contactaré con Boriel, la ROM del +D está desensamblada y comentada, quizá con eso ya pudiera hacer algo ....
No sé como será la tercera Guerra Mundial. Pero sí sé como será la cuarta: Con palos y piedras.
Aquí yace un valiente, un temible adversario y un verdadero hombre de honor. Descanse en paz. 21-04-1918
Visita mi Github igual te gusta algo.
Aquí yace un valiente, un temible adversario y un verdadero hombre de honor. Descanse en paz. 21-04-1918
Visita mi Github igual te gusta algo.
- wilco2009
- Hermano de Lucifer
- Mensajes: 8152
- Registrado: 01 Abr 2013, 23:47
- Ubicación: Valencia
- Has thanked: 47 times
- Been thanked: 101 times
Re: Compiladores Basic para ZX
Otra opción es usar inlines en assembler haciendo tú mismo las llamadas.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".
Douglas Adams. Guía del autoestopista galáctico.
Douglas Adams. Guía del autoestopista galáctico.
- merlinkv
- Hermano de Lucifer
- Mensajes: 6353
- Registrado: 06 Abr 2015, 23:08
- Ubicación: Madrid / Europa del Este
- Has thanked: 114 times
- Been thanked: 316 times
- Contactar:
Re: Compiladores Basic para ZX
No se, tengo que encontrar alguna solución para eso .... a ver si puedo conseguirlo. Mis conocimientos del CM del Spectrum están bastante oxidados e intentar hacerlo por mi cuenta desde assembler me cogería un tiempo que no tengo ....
No sé como será la tercera Guerra Mundial. Pero sí sé como será la cuarta: Con palos y piedras.
Aquí yace un valiente, un temible adversario y un verdadero hombre de honor. Descanse en paz. 21-04-1918
Visita mi Github igual te gusta algo.
Aquí yace un valiente, un temible adversario y un verdadero hombre de honor. Descanse en paz. 21-04-1918
Visita mi Github igual te gusta algo.
-
- Demonio tercer orden
- Mensajes: 973
- Registrado: 06 Sep 2014, 12:10
- Ubicación: Barcelona
- Been thanked: 4 times
Re: Compiladores Basic para ZX
Como dice wilco, la mejor manera es utilizar el ZXbasic de boriel y usar inlines de assembler para acceder al disco. Yo hice algo parecido en el +3 hace ya unos años. Era un menu para acceder al disco duro todo escrito en ZXBasic, salvo el acceso al disco que usaba llamadas a las rutinas de la ROM.
- merlinkv
- Hermano de Lucifer
- Mensajes: 6353
- Registrado: 06 Abr 2015, 23:08
- Ubicación: Madrid / Europa del Este
- Has thanked: 114 times
- Been thanked: 316 times
- Contactar:
Re: Compiladores Basic para ZX
Para alguien suoeroxidado .... ¿Podéis ponerme algún ejemplo de carga/grabado de archivos para discos del +3? .... Podría tomarlo como base para hacer las "llamadas" al +D ....
No sé como será la tercera Guerra Mundial. Pero sí sé como será la cuarta: Con palos y piedras.
Aquí yace un valiente, un temible adversario y un verdadero hombre de honor. Descanse en paz. 21-04-1918
Visita mi Github igual te gusta algo.
Aquí yace un valiente, un temible adversario y un verdadero hombre de honor. Descanse en paz. 21-04-1918
Visita mi Github igual te gusta algo.
-
- Demonio tercer orden
- Mensajes: 973
- Registrado: 06 Sep 2014, 12:10
- Ubicación: Barcelona
- Been thanked: 4 times
Re: Compiladores Basic para ZX
Te pongo un trozo de un cargador que hice para un juego:
La verdad que hace mucho tiempo y no recuerdo bien en detalle todo, pero en lineas generales debes:
-Llamar DOS_OPEN con HL apuntando a un buffer que contiene el nombre del fichero
-Mover el puntero del disco 16 bytes para adelante con SET_POSITION
-Leer longitud y destino del bloque con DOS_READ
-Mover otra vez el puntero 128 bytes, hasta el comienzo del bloque que vas a cargar (SET_POSITION).
-Llamar DOS_READ para leer el bloque (HL contiene la direccion de destino y DE la longitud del bloque de bytes)
-Llamar DOS_CLOSE y DOS_MOTOR_OFF
Los detalles de estas rutinas estan en el manual del +3. De todos modos para el +D sera distinto....
Mira pagina 26 del manual del UniDOS. Alli estan los "hook codes" para llamar a las diferentes rutinas. Quizas es mas sencillo de este modo
Código: Seleccionar todo
file LD HL, filename ; file name
LD DE, 2 ; E=2 open mode
LD BC, 5 ; C=5 shared read mode
CALL DOS_OPEN ; DOS OPEN
read_fileLenght
LD HL, 16 ; set position after first 16 bytes
LD E, 0
LD B, 0 ; file 0
call 310 ; DOS SET POSITION
LD HL, lenghtstart ; target addr
LD DE, 4 ; lenght and dest address
LD BC, 0 ; file 1, page 0
CALL DOS_READ ; read block lenght from header
LD HL, 128 ; set position after header
LD E, 0
LD B, 0 ; file 0
call 310 ; DOS SET POSITION
LD HL, (lenghtstart+2)
ld de, (lenghtstart)
ld B, 0
pages ld c, 0 ;
call DOS_READ ;read level
ld b, 0 ; Close file 0
call DOS_CLOSE
-Llamar DOS_OPEN con HL apuntando a un buffer que contiene el nombre del fichero
-Mover el puntero del disco 16 bytes para adelante con SET_POSITION
-Leer longitud y destino del bloque con DOS_READ
-Mover otra vez el puntero 128 bytes, hasta el comienzo del bloque que vas a cargar (SET_POSITION).
-Llamar DOS_READ para leer el bloque (HL contiene la direccion de destino y DE la longitud del bloque de bytes)
-Llamar DOS_CLOSE y DOS_MOTOR_OFF
Los detalles de estas rutinas estan en el manual del +3. De todos modos para el +D sera distinto....
Mira pagina 26 del manual del UniDOS. Alli estan los "hook codes" para llamar a las diferentes rutinas. Quizas es mas sencillo de este modo
- tacha
- Hermano de Lucifer
- Mensajes: 3139
- Registrado: 04 Abr 2013, 20:22
- Ubicación: Montevideo, Uruguay
- Has thanked: 44 times
- Been thanked: 30 times
- Contactar:
Re: Compiladores Basic para ZX
+100000000wilco2009 escribió: ↑25 Oct 2018, 00:10+10000Haplo escribió: ↑25 Oct 2018, 00:04 ¿Porqué quieres compilar desde el propio +3?
¿No puedes pasar o teclear los programas en pc?
Lo digo porque así podrías usar el compilador ZX Basic de Boriel.
http://boriel.com/wiki/en/index.php/ZXBasic
66 6C 6F 70 70 69 6E 67 20 6D 61 73 63 61 20 50 30 6C 6C 34 / 6D 61 73 20 63 6F 74 69 6C 6C 61 20 73 65 72 E1 73 20 74 75 20 49 7A 61 72 6F 20 3A 70