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
Uto
Mensajes: 1394
Registrado: 17 Dic 2015, 16:39

Re: Acceso ficheros desde ASM

Mensaje por Uto » 30 May 2016, 23:10

Haplo escribió:Uto, ¿tú conoces bien el ImDisk?. No sé si es posible montar la imagen desde el command line, lo digo porque llevo toda la tarde probando y mirando foros, y lo más que consigo es que me cree una unidad en blanco (de hecho me pide formatearla). Juraría que el comando debería ser así:

Código: Seleccionar todo

imdisk -a -t file -f D:\ZEsarUX_win-4.1\divmmcesx086.mmc -m Z:
Y lo que me hace es crear la unidad z:, me pide formatearla y luego obviamente me deja el divmmcesx086.mmc vacío. :?
No, la verdad es que no tengo ni idea, solo he pensado ¿tendrá linea de comandos? He ido al cmd, he puesto imdisk y me ha hecho scroll la pantalla tres veces con la ayuda, asi que he pensado que se podria X-D

Voy a echarle un ojo de todos modos :-)

Por otro lado, a las malas si puedes crear un disco en blanco y montarlo, siempre puedes tener una carpeta con todo lo que va dentro del disco (todo ESXDOS incluido), y a cada compilacion hacer un xcopy /s al disco en blanco de todo, mas tu tap de turno. Es un poco bestia pero funcionaría ¿no?

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, 23:32

A ver, algo bestia es, pero si funciona y es rápido tampoco me importa. Buena idea :okidoki;

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

Re: Acceso ficheros desde ASM

Mensaje por Uto » 30 May 2016, 23:57

Haplo escribió:A ver, algo bestia es, pero si funciona y es rápido tampoco me importa. Buena idea :okidoki;

Me picaste:

Para montar la imagen en la unidad Q por ejemplo:

Código: Seleccionar todo

imdisk -a -t file -f divmmcesx085.mmc-m Q: -v 1 -o rw -o hd
Para desmontarla:

Código: Seleccionar todo

imdisk -d -m Q:
La cuestion es que parece que hay que decirle que particion quieres montar cuando la imagen es raw (-v 1) y además hay que especificarle que es un disco duro para que sea escribible. En teoría el tipo HD es por defecto, salvo que detecte que es un floppy o un CD-ROM, y por alguna razón las imagenes de ZESRUX, las dos, las estaba pillando como CD-CROM.

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

Re: Acceso ficheros desde ASM

Mensaje por chernandezba » 31 May 2016, 01:05

Sugerencia... Veo que el tratamiento de imagenes de SD/MMC es un poco liadilla... Habéis pensado en usar Mac o Linux para ello?
En ambos casos es muy sencillo, lanzas un comando (o doble click) y te aparece como una nueva unidad. Incluso aunque no hayáis tocado Linux o no queráis particionar el PC, la instalación en máquina virtual es recomendable.

Saludos
César
----

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 » 31 May 2016, 10:01

chernandezba escribió:Sugerencia... Veo que el tratamiento de imagenes de SD/MMC es un poco liadilla... Habéis pensado en usar Mac o Linux para ello?
En ambos casos es muy sencillo, lanzas un comando (o doble click) y te aparece como una nueva unidad. Incluso aunque no hayáis tocado Linux o no queráis particionar el PC, la instalación en máquina virtual es recomendable.
Hombre... cambiar de SO por no buscar como se hace... matar moscas a cañonazos ¿no?

La realidad es que no es tan complicado, solo hay que instalar ImDisk y ya puedes hacer lo mismo que en Linux u OSX. Montar y desmontar con el GUI de ImDisk es sencillo, y con linea de comandos - ahora que he dado con la tecla - también :-)

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

Re: Acceso ficheros desde ASM

Mensaje por chernandezba » 31 May 2016, 10:20

No estoy diciendo que cambéis de sistema operativo, sólo que probéis Linux como alternativa. Linux/Unix siempre se ha caracterizado por una integración nativa con sistema de scripting y hacer todo eso es super fácil... Además, es posible que la gente que sólo usáis Windows, si probáis Linux os guste mas incluso que Windows, jejeje
----

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 » 31 May 2016, 10:55

Yo he tocado Linux con frecuencia, e incluso lo tuve como S.O. principal varias veces, pero siempre llega un momento en que necesitas una aplicación de windows que no tiene equivalencia en Linux o que no funciona igual y todo se va al carajo. Desde luego si quieres complicarte la vida es una buena opción el tener máquinas virtuales y andar jugando con compartir datos entre sistemas operativos. Si fuera que sólo necesitara un par de programas o de funcionalidades comunes pues vale, pero si tienes que recurrir a una docena de programas distintos para un proyecto (como es el caso), no lo veo práctico.
Que no digo que en un futuro lo vuelva a intentar, pero a día de hoy para mí sería un dolor.

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

Re: Acceso ficheros desde ASM

Mensaje por chernandezba » 31 May 2016, 12:08

Haplo escribió:Si fuera que sólo necesitara un par de programas o de funcionalidades comunes pues vale, pero si tienes que recurrir a una docena de programas distintos para un proyecto (como es el caso), no lo veo práctico.
Que no digo que en un futuro lo vuelva a intentar, pero a día de hoy para mí sería un dolor.
Bueno estoy seguro que para el desarrollo de tu juego lo puedes hacer todo en Linux y dejar Windows para otros menesteres ;)
----

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 » 01 Jun 2016, 18:16

Leñe, casi se me olvida, aquí pongo la rutina de grabación de ficheros a SD usando ESXDOS desde ASM:

Código: Seleccionar todo

asm
FA_READ		equ	$01	
FA_WRITE		equ 	$04	
FA_OVERWRITE	equ	$0c	
FA_CLOSE		equ 	$00
M_GETSETDRV	equ	$89
F_OPEN		equ	$9a
F_CLOSE		equ	$9b
F_READ		equ	$9d
F_WRITE		equ	$9e

SaveToSD:		xor a
		rst $08
		db M_GETSETDRV	; a = unidad actual
		jr nc, SDReady
		call Print2
		db "SD card not inserted"
		db 0
		ret
SDReady:		ld b, FA_OVERWRITE	; b = modo de apertura
		ld ix, FileNameToSave	; ix = Puntero al nombre del fichero (ASCIIZ)
		ld a,42		; ASCII "*"
		rst $08
		db F_OPEN		; abrir archivo
		ld (FHandle2),a
		jr nc, SaveBytes
		call Print2
		db "File can't be saved"
		db 0
		ret
SaveBytes:	ld ix, 16384	; ix=dirección de inicio del fichero
		ld bc, 6912	; bc=longitud del fichero
		rst $08
		db F_WRITE	; Grabar archivo
		jr nc, WriteOK
		call Print2
		db "Write Error"
		db 0
		ret
WriteOK:		ld a,(FHandle2)
		rst $08
		db F_CLOSE
		call Print2
		db "File Saved"
		db 0
		ret
Print2:		pop hl
		db $3e
Print21:		rst $10
		ld a, (hl)
		inc hl
		or a
		jr nz, Print21
		jp (hl)
		
FHandle2:		db 0
FileNameToSave:	db "scr/gatito.scr"	; ruta/Nombre del fichero 
		db 0		

end asm
Tal como está, grabaría una pantalla "gatito.scr" en el directorio "scr" sobrescribiendo si existiese ya el archivo.
Echadle un ojo a ver si os funciona correctamente y si hay algo que tocar/mejorar.

Por cierto, se puede fusionar con la de carga, así se evita repetir código (Print:) y posiciones de memoria (FHandle:).

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

Re: Acceso ficheros desde ASM

Mensaje por Uto » 02 Jun 2016, 12:35

Haplo escribió:Leñe, casi se me olvida, aquí pongo la rutina de grabación de ficheros a SD usando ESXDOS desde ASM:
Yo no le veo nada raro, aunque no la he probado, pero mas o menos es como la que yo tengo a medias, que es un read+write para probar (reaprovechando como dices)

Ayer me dejé ya hecho un .bat que compila el .tap, monta la imagen de ESXDOS 0.8.5, mete el tap dentro, desmonta la imagen, carga ZesarUX, con lo que ya es programar y nada más :-)

Cargo la 0.8.5 porque no estoy usando ZX-Uno, sino simplemente la emulación de DivMMC, sino hay que cargar la 0.8.6, pero para probar estas cosas no me hace falta ZX-Uno y me ahorro esperar la BIOS cada arranque O:-)

Estaba yo pensando, que lo mismo cuando se ejecuta un "dot command" de ESXDOS, el SO al cargarlo hace algo con los registros de modo que las llamadas usan HL en lugar de IX, pero que al hacerlo desde un .TAP eso no ocurre y por eso hay que usar IX. Sigo escamado con eso, pero lo que es innegable es que con IX funciona, y con HL no. Voy a tener que compilar un "dot command" a ver si en ese me funciona con IX o con HL, y si funciona tambien con IX, ya me cortaré las venas :rofl!:

Responder