natohara escribió:Estoy haciendo alguna cosa con el manual, de momento he conseguido grabar el contenido de la pantalla en el disco.
Cuidado con el número de fichero, yo suelo empezar en 5. Creo que los más bajos están "cogidos" por el sistema y pueden dar problemas.
natohara escribió:Funciona sin problemas pero como mi objetivo es pasar juegos del 48 al +3 cuando intento después grabar grandes bloques de memoria, desde mi desconocimiento del +3, veo cosas raras como que al cargar lo grabado hay parte que no está. Creo que se deberá a algo relacionado con la paginación y demás
Cuatro cosas cosas:
- Lo que apuntaba del número de fichero, aunque puede que no de problemas.
- En ningún momento compruebas que haya habido errores. Carry a 0 significa error, carry a 1 significa OK. Te recomendaría que pongas breakpoints tras las llamadas... puede que tu problema sea algún error no controlado.
- Hay un error en el manual del +3, en la llamada dos open todos los números están corridos una unidad. Es decir, donde pone "2. Open the file read..." debería poner "1. Open the file read...". No sé la documentación que tienes tú está corregida.
- Cuidado con las cabeceras y las acciones asociadas. Hay dos modos de crear/usar un fichero: con y sin cabecera. Si hay cabecera, los primeros 128 bytes del fichero son la cabecera. El tema es que si creas un fichero con cabecera y luego lo abres SIN cabecera o le indicas a +3DOS que ignore la cabecera, los primeros 128 bytes que vas a leer son la cabecera en sí... lo que puede llevarte a confusión.
Las cabeceras son informativas y son las que permiten cargar desde BASIC sin demasiados problemas. Un fichero sin cabecera se puede copiar usando COPY, pero a la hora de cargarlo suele dar errores del estilo "Invalid File Type" o algo así. Personalmente, yo guardo y cargo todo SIN cabecera... así nunca me confundo
natohara escribió:Por otra parte, con el manual delante advierto que la zona de variables de sistema se ha ampliado, comiéndose toda la zona reservada para el buffer de impresión y hay muchos juegos de 48 que hacen uso de esa zona de memoria para datos o variables. A saber qué ocurre si algún programa machaca el contenido de BANKM (05B5Ch).
¡BUM! El sistema se cuelga. Te acabas de cargar las rutinas de paginación del Spectrum. Es algo que pasa en los 128k en general. Y te preguntarás... ¿por qué no se cuelga al cargar (p.ej.) el Humphrey que carga casi toda la RAM? Pues porque el problema lo vas a tener si retornas a BASIC. En esos juegos, el cargador salta directamente al c/m del juego, así que no tienes problemas.
Lo que yo hago en esos casos es cargar la pantalla y toda la RAM desde 24576 hacia arriba normalmente. Los 1280 bytes que van desde 23296 hasta 24575 los cargo en la RAM 3 junto con una rutina que los reubique a su posición original, ponga la página 0 y salte al c/m del juego. Cuando termino con el disco (ya no hay riesgo de reventar nada), pagino la RAM 3 y llamo a la rutina en cuestión.