ON ERROR GOTO no funciona en 464 con disco

Programando el Amstrad en BASIC, C, etc.
Avatar de Usuario
MoteroV4
Forero habitual
Forero habitual
Mensajes: 106
Registrado: Jue 02 May , 2019 9:26 pm

ON ERROR GOTO no funciona en 464 con disco

Mensajepor MoteroV4 » Jue 23 Jun , 2022 2:26 am

Hola buenas:

Tengo un problema con una rutina de interceptación de errores de disco. En las pruebas funciona bien en BASIC 1.1 pero no en el 1.0.
El caso es que el manual del 464 existen los mismos comandos (ON ERROR GOTO y RESUME) que uso, sin advertir de diferencias. Por supuesto está el AMSDOS y disquetera funcionando.

Esta es la rutina:

Código: Seleccionar todo

1 ' Rutina para lectura de variables en disco o cargar partida en curso
7000 ON ERROR GOTO 12000
8000 GOSUB 9000
8005 END
8010 PRINT"PULSE UNA TECLA":CALL &BB18
8020 END

1 'Abrir fichero lectura
9000 OPENIN"VARS.DAT"
9010 INPUT #9,H,M0,S0,PM,PP,AN,X,Y,MP,EM,IN,CO,J
9020 FOR y=1 TO J
9030 INPUT #9,S(y),R(y),Q(y),P(y),O(y),N(y),M!(y),L!(y),K!(y),J(y),I(y),H(y),G(y),F(y),E(y),D(y),C(y),B(y),A!(y),A$(y)
9040 NEXT y
9050 CLOSEIN
9060 RETURN

1 ' Rutina errores
12000 PRINT:PRINT"ERROR EN ACCESO A DISCO":RESUME 8010
El fallo que me da en el 464 con BASIC 1.0, es que el ON ERROR simplemente no actúa, y el programa se detiene automáticamente con un Break.

¿Alguna pista? Gracias.
Adjuntos
Snap 2022-06-23, 01_53_36.png
Última edición por MoteroV4 el Jue 23 Jun , 2022 4:33 pm, editado 1 vez en total.

Ivan
Forero habitual
Forero habitual
Mensajes: 157
Registrado: Dom 03 May , 2020 6:07 pm

Re: ON ERROR GOTO no funciona en 464

Mensajepor Ivan » Jue 23 Jun , 2022 10:48 am

Tu código no funciona pero el siguiente listado sí:

Código: Seleccionar todo

10 ON ERROR GOTO 1000
20 a%=32000
30 a%=a%+100
40 GOTO 30
1000 PRINT "error":RESUME 20
1010 PRINT"fin"

¿Puede ser que no entienda como error el no encontrar el fichero?

Avatar de Usuario
MoteroV4
Forero habitual
Forero habitual
Mensajes: 106
Registrado: Jue 02 May , 2019 9:26 pm

Re: ON ERROR GOTO no funciona en 464 con disco

Mensajepor MoteroV4 » Jue 23 Jun , 2022 4:33 pm

¿Puede ser que no entienda como error el no encontrar el fichero?
Gracias @Ivan, efectivamente, me diste la pista. Estoy leyendo "El gran libro del Floppy", p.334 (descargable en esta web) y confirma que el BASIC 1.0 del CPC464 no tiene acceso a los errores del AMSDOS, por tanto no tiene efecto alguno el ON ERROR GOTO sobre mensajes de error provenientes del disco.

Como solución da una rutina en código máquina (unos 270 bytes) con cargador BASIC, para interceptarlos y ej. de cómo usarla. También otra en ensamblador (para estudiarlo) e incorporarlas como comandos RSX junto a otros (Random Files). También recomienda usarla en 664 y 6128 por retrocompatibilidad, en lugar del ON ERROR GOTO, DERR, etc.


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic