ZX-UNO PACK V2.1

Software para o relacionado con el core ZX Spectrum / Software for or related to the ZX Spectrum core
Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: ZX-UNO PACK V2.1

Mensaje por desUBIKado » 21 Feb 2018, 09:34

neuro_999 escribió:Buenass.

Ayer saque un rato por la tarde y te la compile con el \boot.tap, te la anexo en el fichero.

En mi opinion queda mas bonito el boot sin el .tap... pero para gustos los colores.

Espero que te sea de utilidad.
Gracias, lo probaré esta tarde. ¿Podrías hacer también una versión de 48K con /boot.tap?

Yo también creo que es más bonito sin el .TAP (como por ejemplo el fichero BOOT de autorranque de los discos de TR-DOS), pero creo que es mejor explicitarlo. En el caso de la versión de autoboot con LOAD * sí que me parecería mejor que se llamase BOOT a secas, ya que no es un TAP sino un programa basic grabado con SAVE * en la SD. En mi opinión, sería mejor que esa versión arrancase con BOOT y al ZX-UNO PACK se le incluyese un fichero BOOT que ejecutase LOAD *"RUN".

Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: RE: Re: ZX-UNO PACK V2.1

Mensaje por desUBIKado » 24 Feb 2018, 14:17

antoniovillena escribió:
Uto escribió:
Hynreck escribió: Pero si lo queremos aplicar a este pack en particular lo mismo es una cosa que otra, ya que el LOAD * se repite muchas veces en todas las carpetas
Entiendo, bueno, pues para este pack no tiene remedio (fácil), pero quizá aun así sería mejor una ROM más genérica :-)
La modificación es muy sencilla. Te la adjunto. He insertado esta cadena:

.tapein AUTOEXEC.TAP: LOAD ""

Se basa en este código (Reset&Play)

https://sourceforge.net/p/emuscriptoria ... leches.asm

Solo tienes que cambiar la cadena tras el L129D y acortar o alargar la anterior para que el fichero ocupe 16384 bytes.
Hola Antonio:

Con el fichero que has dejado estoy intentando realizar mi propia modificación a la rom para que la linea que ejecute sea:

Código: Seleccionar todo

IF IN VAL "62278" <> VAL "190" THEN .tapein /BOOT.TAP:LOAD ""
Para que si pulso CAPS SHIFT en el arranque no se realice la carga de /BOOT.TAP

He modificado el fichero con el fuente de la rom de la siguiente forma:
48kboottap.asm.TXT
(819.76 KiB) Descargado 240 veces

Código: Seleccionar todo

;        DEFINE  easy
	DEFINE  resetplay
	DEFINE autoboot
;        DEFINE  pokemon
;        DEFINE  lenp  $c0       ; $40 if ZX Spectrum 16K

        OUTPUT  48kboottap.rom

Creo una etiqueta nueva autoboot para que coja mis cambios en la compilación condicional y cambio el fichero resultante de la compilación a
48kboottap.rom

Código: Seleccionar todo

    IFDEF autoboot
	LD      HL,$05FF        ; L=$FF Hasta 255 posiciones para linea BASIC que  
                                ; que luego se pasaran a reg C para el LDIR
    ELSE
        LD      HL,$0523        ; The keyboard repeat and delay values are 
    ENDIF    
Aquí he aumentado hasta 255 ($FF) caracteres la línea que puede ejecutar al inicio en lugar de los 35 ($23). Como ese valor también es el que se pone a la variable del sistema que define tiempo que hay que presionar una tecla antes de que se repita, he aumentado ese tiempo a unos 5 segundos, pero eso no es algo que me importe ahora, aunque podría haber dejado su valor correcto que es 23 y luego hacer un LD C,$FF antes del LDIR). Con tu código la línea como mucho puede tener 35 octetos, así que la mía la he definido en el sitio libre que hay a partir de la dirección $386E

Código: Seleccionar todo

    IFDEF autoboot
	LD      DE,L386E     	; Inicio de la línea de autoboot
    ELSE
        LD      DE,L129D
    ENDIF

Código: Seleccionar todo

; ---------------------
; THE 'SPARE' LOCATIONS
; ---------------------

;; spare
L386E:
      IFDEF autoboot
; IF IN VAL"65278" <> "190" THEN .tapein /BOOT.TAP:LOAD "" + Enter + $80      
	DEFB    $FA, $BF, $B0, $22, $36, $35, $32, $37, $38, $22 		; IF IN VAL "65278"
	DEFB	$C9, $B0, $22, $31, $39, $30, $22, $CB 				; <> "190" THEN
	DEFB    $2E, $74, $61, $70, $65, $69, $6E, $20, $2F, $42, $4F, $4F	; .tapein /BOO
	DEFB	$54, $2E, $54, $41, $50, $3A, $EF, $22, $22, $0D, $80  		; T.TAP:LOAD "" + Enter + $80	
      ENDIF
Y por ultimo he cambiado el mensaje de copyright del inicio al original para que no salga el de cargar la cinta del "cargando leches" y sea ese el que se vea en caso de pulsar CAPS SHIFT y no hacer autoboot.

Código: Seleccionar todo

;; copyright
L1539:
   IFDEF resetplay
      IFDEF autoboot
        DEFB    $7F                                     ; copyright
        DEFM    " 1982 Sinclair Research Lt"
        DEFB    'd'+$80
      ELSE
        DEFM    "Press PLAY or SPACE to brea"
        DEFB    'k'+$80        
      ENDIF
   ELSE
        DEFB    $7F                                     ; copyright
        DEFM    " 1982 Sinclair Research Lt"
        DEFB    'd'+$80
   ENDIF
El caso es que con esta rom sí se carga el fichero /BOOT.TAP, pero no consigo que funcione que al pulsar CAPS SHIFT no se ejecute la instrucción de carga. Tanto si la pulso como si no, el fichero /BOOT.TAP se carga.

He intentado ver si habilitando las interrupciones poniendo una instrucción EI antes del salto a la ejecución de la instrucción BASIC, pero no me ha funcionado.

Código: Seleccionar todo

	     EI
        JR      L1303-11        ; jump to one instruction before MAIN-4
        DEFM    'AVillena1'         
L129D:  DEFB    '.tapein AUTOEXEC.BAT:', $EF, $22, $22, $0D, $80; LOAD "" + Enter + $80
Tampoco poniendo un PAUSE VAL "50": al principio de la línea basic me ha funcionado.

¿Qué hay que hacer para que funcione el que si se tiene pulsada la tecla CAPS SHIFT en el arranque no haga autoboot?

Gracias anticipadas y recibe un saludo.

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

Re: ZX-UNO PACK V2.1

Mensaje por antoniovillena » 24 Feb 2018, 15:03

Puedes hacer la comprobación del shift en ensamblador que ocupa menos.

Código: Seleccionar todo

      ld    a, $fe
      in    a, ($fe)
      rrca
      jr    c, L12A9    ; forward to MAIN-1
      jr    L1303-11    ; jump to one instruction before MAIN-4

Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: ZX-UNO PACK V2.1

Mensaje por desUBIKado » 24 Feb 2018, 23:07

antoniovillena escribió:Puedes hacer la comprobación del shift en ensamblador que ocupa menos.

Código: Seleccionar todo

      ld    a, $fe
      in    a, ($fe)
      rrca
      jr    c, L12A9    ; forward to MAIN-1
      jr    L1303-11    ; jump to one instruction before MAIN-4
Muchas gracias, con lo que me has indicado ya lo tengo funcionando:
20180224_224219.jpg
20180224_224219.jpg (182.34 KiB) Visto 5191 veces
He cambiado el mensaje de arranque para que si se pulsa CAPS SHIFT se informe de que se ha deshabilitado el autoboot

Código: Seleccionar todo

;; copyright
L1539:
   IFDEF resetplay
      IFDEF autoboot
        DEFM    "Autoboot disabled by user  "
        DEFB    ' '+$80
      ELSE  
        DEFM    "Press PLAY or SPACE to brea"
        DEFB    'k'+$80
      ENDIF
   ELSE
        DEFB    $7F                                     ; copyright
        DEFM    " 1982 Sinclair Research Lt"
        DEFB    'd'+$80
   ENDIF
   
y en la comprobación de la pulsación de CAPS SHIFT he cambiado la instrucción por jr nc,e

Código: Seleccionar todo

      IFDEF autoboot       
        ld    a, $fe		; If CAPS SHIFT is pulsed in boot time
        in    a, ($fe)          ; do not load /BOOT file and
        rrca			; execute a normal start up
        jr    nc, L12A9         ; forward to MAIN-1
      ENDIF    
        JR      L1303-11        ; jump to one instruction before MAIN-4
;
; 27 byte max. of available space for the basic sentence + Enter + $80
; 
	DEFM	"Antonio Villena ZX"	; 18  characters
L129D:  DEFB    $EF, $2A, $22,'/BOOT', $22, $0D, $80; LOAD *"/BOOT" + Enter + $80    (11 characters)
Tanto la versión de autoboot con LOAD y con TAPEIN funcionan perfectamente, aunque he visto que si luego intento cargar un juego de 48 K con el NMI browser mediente un fichero .TAP, el juego se cuelga al intentar cargarlo (los .SNA los carga bien). Curiosamente, sí se cargan sin problemas si los cargo manualmente con .tapein <fichero.tap>:LOAD "" ¿Sabes por que ocurre esto? En la rom de "Cargando leches" la NMI no levantaba el NMI browser, sino que salía un "pokeador". ¿Hay alguna incompatibilidad entre la rom de cargando leches, que es la base de estas, y el NMI browser?

Ahora voy a dar la lata a neuro_999 a ver como ha modificado la rom del +2A. Muchas gracias.

Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: ZX-UNO PACK V2.1

Mensaje por desUBIKado » 24 Feb 2018, 23:37

neuro_999 escribió:Buenass.

Ayer saque un rato por la tarde y te la compile con el \boot.tap, te la anexo en el fichero.

En mi opinion queda mas bonito el boot sin el .tap... pero para gustos los colores.

Espero que te sea de utilidad.
Muchas gracias. Lo he probado y funciona perfectamente. Por mi parte, he modificado la rom 48K "sin leches" que nos pasó Antonio

viewtopic.php?f=39&t=1977&p=22105#p22105

para que además si se pulsa CAPS SHIFT en el arranque no se haga autoboot. Quisiera tener 2 roms +2A con esta funcionalidad, una con carga .tapein y otra con LOAD*.

¿Me podrías indicar como has hecho tu las modificaciones en la rom del +2A para poder también yo realizar las modificaciones en ella?

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

Re: ZX-UNO PACK V2.1

Mensaje por antoniovillena » 25 Feb 2018, 00:23

desUBIKado escribió:¿Sabes por que ocurre esto? En la rom de "Cargando leches" la NMI no levantaba el NMI browser, sino que salía un "pokeador". ¿Hay alguna incompatibilidad entre la rom de cargando leches, que es la base de estas, y el NMI browser?

Ahora voy a dar la lata a neuro_999 a ver como ha modificado la rom del +2A. Muchas gracias.
Sí. Tanto la ROM leches.asm como sin_leches.asm tienen estos 3 defines al principio:

Código: Seleccionar todo

        DEFINE  easy
        DEFINE  resetplay
        DEFINE  pokemon
Se pueden activar o desactivar independientemente. El primero sirve para escribir sin tokens, el segundo es para que arranque con LOAD"" (lo que hemos usado como base para el autoarranque) y el tercero es un pokeador/transfer que usa la NMI. Este último es el que es incompatible con el NMI browser. Pero vamos que se puede desactivar tanto en leches.asm como en sin_leches.asm comentando el define. En leches.asm solo está implementado el pokeador porque el transfer no cabía.

Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: ZX-UNO PACK V2.1

Mensaje por desUBIKado » 25 Feb 2018, 00:29

Yo solo tengo activados

Código: Seleccionar todo

        DEFINE  resetplay
        DEFINE  autoboot      	 ; do autoboot (need resetplay modifs)
pero no se por qué en el NMI browser no funciona cargar .TAPs con esta rom.

Responder