Acceso ficheros desde ASM

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Acceso ficheros desde ASM

Mensaje por chernandezba » 26 May 2016, 20:04

Haplo escribió:Efectivamente César, era cosa de la "/" , los de PC tenemos nos viene esa deformación del DOS...
Guay :) Me alegro
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Acceso ficheros desde ASM

Mensaje por Uto » 28 May 2016, 00:08

He andado husmeando en comandos de ESXDOS, de la version 0.8.5, y aunque no he probado nada de lo que intuyo, dejo por aqui algunos apuntes inconclusos:


Abrir fichero para lectura:

Código: Seleccionar todo

ld hl,0xnnnn ; HL apunta a cadena ASCIIZ
ld a,0x2a  ; Esto no se por qué, porque en el .upgrade de antoniovillena  pone un 0 y funciona
ld b,0x01   ;FA_READ, modo lectura
rst 0x08    ;ESXDOS
db 0x9A     ;FOPEN
Si falla carry flag c activo, si funciona en A el handler del fichero

Abrir fichero para escritura:

Código: Seleccionar todo

ld hl,0xnnnn  ; HL apunta a cadena ASCIIZ
ld a,0x2a       ;  Ni idea
ld b,0x06       ; FA_WRITE, modo escritura, o quizá escritura y append (mas que nada porque 0x06 es 0110 en binario, e imagino que cada bit es una cosa
rst 0x08        ; ESXDOS
db 0x9a         ; F_OPEN
Si falla carry flag c activo, si funciona en A el handler del fichero

Leer bloque:

Código: Seleccionar todo

ld hl, 0xnnnn ; Dirección donde cargar lo leido
ld bc,0xnnnn;  Numero de bytes a leer
ld a,(FReadHandle); en A el handle del fichero
rst 0x08  ; ESXDOS
db 0x9d    ; F_READ
Este veo que el flag c se activa en algunos casos, creo que es cuando no lee el numero de bytes de bc, pero no lo tengo claro. También sospecho que devuelve en DE el número de bytes leidos, pero está sin comprobar.

Escribir bloque:

Código: Seleccionar todo

ld a, (FWriteHandle)
ld hl, 0xnnnn; La direccion de memoria que se va a escribir
ld bc, 0xnnnn; numero de bytes a escribir
rst 0x08  ; ESXDOS
db 0x9e   ; F_WRITE
Igualmente, parece que el carry flag se activa en caso de error

Cerrar fichero:

Código: Seleccionar todo

LD A, (FHandle) ;  el handle
rst 0x08 ; ESXDOS
db 0x9b; F_CLOSE

Nota: no se que diferencia hay coon ESXDOS 0.8.6, quizá en esa version sea en la que se usa IX en lugar de HL.

Edito: acabo de bajar ESXDOS 0.8.6 y el mismo comando usa HL, no IX, así que no acabo de entender por qué el código de Haplo tiene que llevar IX y no HL para funcionar... :roll:. Añado que acabo de abrir el mismo comando en la imagen de disco que viene con ZESARUX, y nada, que usa HL. No entiendo lo del IX :-?

Avatar de Usuario
Haplo
Mensajes: 368
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Acceso ficheros desde ASM

Mensaje por Haplo » 28 May 2016, 01:13

Yo también estuve husmeado el comando .CD y llegué a las mismas conclusiones que tú. Pero como dije, no acababa de funcionar, hice un pequeño programa que cargaba una pantalla, imprimía un texto sobre ella y a continuación grababa esa pantalla para verificar el cambio. Pues nada, ni flowers, lo más raro era que me cargaba la pantalla de nuevo :P

A ver si mañana le doy otra vuelta.

Lo de IX y HL, tampoco te ralles, será que se intercambian los registros en alguna parte oculta. Lo malo es que eso también puede pasar con otros y no sabemos si es por eso que no funciona.

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Acceso ficheros desde ASM

Mensaje por Uto » 28 May 2016, 01:24

Yo el que he husmeado es .CP que es el que tiene que escribir.

Avatar de Usuario
Haplo
Mensajes: 368
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Acceso ficheros desde ASM

Mensaje por Haplo » 28 May 2016, 16:40

Vaya tela, llevaba bastante rato rompiéndome la cabeza y resulta que el emulador de César no va fino con el DivMMC, me hace cosas extrañas, como poder cargar ficheros que no existen :shock:
Voy a empezar de nuevo pero probando sobre el zxuno real.

Avatar de Usuario
antoniovillena
Mensajes: 2621
Registrado: 27 Sep 2015, 20:41

Re: Acceso ficheros desde ASM

Mensaje por antoniovillena » 28 May 2016, 16:43

Haplo escribió:Vaya tela, llevaba bastante rato rompiéndome la cabeza y resulta que el emulador de César no va fino con el DivMMC, me hace cosas extrañas, como poder cargar ficheros que no existen :shock:
Voy a empezar de nuevo pero probando sobre el zxuno real.
Comprueba a ver si tienes la misma versión de ESXDOS en el emulador que en el ZX-Uno real. Y tiene que coincidir la versión de la ROM con la que hay en la SD.

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Acceso ficheros desde ASM

Mensaje por chernandezba » 28 May 2016, 18:45

Haplo escribió:Vaya tela, llevaba bastante rato rompiéndome la cabeza y resulta que el emulador de César no va fino con el DivMMC, me hace cosas extrañas, como poder cargar ficheros que no existen :shock:
Voy a empezar de nuevo pero probando sobre el zxuno real.
Como dice Antonio, eso es responsabilidad de esxdos, no de mi emulación de divmmc. En principio mi parte funciona ;)
Recuerda que debes usar esxdos 0.8.6 beta que es el que corresponde al firmware que lleva zxuno
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
Haplo
Mensajes: 368
Registrado: 05 Oct 2015, 13:51
Ubicación: Ciudad Real

Re: Acceso ficheros desde ASM

Mensaje por Haplo » 30 May 2016, 01:36

Bien, ya he conseguido grabar y sobrescribir archivos, me había equivocado en un salto condicional y se iba a la parte de carga... :tepego: Tanta feria de Mayo es lo que tiene.

El código de FA_WRITE es $04, y el de FA_OVERWRITE $0C, y hay que cargar A con 42 porque es el código ASCII del "*", creo.
Mañana lo cuelgo que tengo que limpiarlo un poco.
En el ZXUno funciona de lujo, pero en el emulador me sale el error "Error Writing to MMC file", a ver si lo veo más despacio.

Avatar de Usuario
chernandezba
Mensajes: 841
Registrado: 02 Oct 2015, 23:35

Re: Acceso ficheros desde ASM

Mensaje por chernandezba » 30 May 2016, 08:38

Haplo escribió: En el ZXUno funciona de lujo, pero en el emulador me sale el error "Error Writing to MMC file", a ver si lo veo más despacio.
Hola

Simplemente es que el emulador no puede modificar el archivo de imagen de mmc/sd. Revisa los permisos de escritura sobre ese archivo. Si no recuerdo mal, los distribuyo por defecto con permisos de sólo lectura.

Saludos
----

ZEsarUX
ZX Second-Emulator And Released for UniX
https://github.com/chernandezba/zesarux

Avatar de Usuario
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Acceso ficheros desde ASM

Mensaje por Uto » 30 May 2016, 11:28

Haplo escribió:Bien, ya he conseguido grabar y sobrescribir archivos, me había equivocado en un salto condicional y se iba a la parte de carga... :tepego: Tanta feria de Mayo es lo que tiene.

El código de FA_WRITE es $04, y el de FA_OVERWRITE $0C, y hay que cargar A con 42 porque es el código ASCII del "*", creo.
¿Hmmm.. y entonces que será el $06 que usa el ".CP"?

Responder