Guay Me alegroHaplo escribió:Efectivamente César, era cosa de la "/" , los de PC tenemos nos viene esa deformación del DOS...
Acceso ficheros desde ASM
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Acceso ficheros desde ASM
Re: Acceso ficheros desde ASM
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:
Si falla carry flag c activo, si funciona en A el handler del fichero
Abrir fichero para escritura:
Si falla carry flag c activo, si funciona en A el handler del fichero
Leer bloque:
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:
Igualmente, parece que el carry flag se activa en caso de error
Cerrar fichero:
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... . 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
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
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
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
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
Cerrar fichero:
Código: Seleccionar todo
LD A, (FHandle) ; el handle
rst 0x08 ; ESXDOS
db 0x9b; F_CLOSE
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... . 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
Re: Acceso ficheros desde ASM
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
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.
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.
Re: Acceso ficheros desde ASM
Yo el que he husmeado es .CP que es el que tiene que escribir.
Re: Acceso ficheros desde ASM
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
Voy a empezar de nuevo pero probando sobre el zxuno real.
Voy a empezar de nuevo pero probando sobre el zxuno real.
- antoniovillena
- Mensajes: 2621
- Registrado: 27 Sep 2015, 20:41
Re: Acceso ficheros desde ASM
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.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
Voy a empezar de nuevo pero probando sobre el zxuno real.
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Acceso ficheros desde ASM
Como dice Antonio, eso es responsabilidad de esxdos, no de mi emulación de divmmc. En principio mi parte funcionaHaplo 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
Voy a empezar de nuevo pero probando sobre el zxuno real.
Recuerda que debes usar esxdos 0.8.6 beta que es el que corresponde al firmware que lleva zxuno
Re: Acceso ficheros desde ASM
Bien, ya he conseguido grabar y sobrescribir archivos, me había equivocado en un salto condicional y se iba a la parte de carga... 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.
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.
- chernandezba
- Mensajes: 841
- Registrado: 02 Oct 2015, 23:35
Re: Acceso ficheros desde ASM
HolaHaplo 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.
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
Re: Acceso ficheros desde ASM
¿Hmmm.. y entonces que será el $06 que usa el ".CP"?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... 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.