Y finalmente el Abe's Escape Mission para +2e o +3e con Load y Save
Abe's Mission Escape (3e version with Load&Save).rar
me ha costado unos meses pero finalmente lo he conseguido
El mayor problema para convertirlo a +3e era que para jugarlo teniamos que ejecutar usr0 por lo que se pierde el acceso a las disquetera con las rutimas de la rom. (la verison anterior que saque utiliza rutinas de bajo nivel sin usar la rom del spectrum por eso el anterior solo funcionaba en A: y B:)
y el segundo problema es que el primer bloque de carga es en el banco de memoria 7, justo el que utiliza el +3DOS para los bufferes de disco-
despues de muchas pruebas , dejarlo aparcado varias veces por muy dificil, etc.
El problema del usr0 lo he solucionado descomprimiendo todo y cambiando la rutina de descompresion por otra localizada en otro sitio.
Finalmente descubrí que el problema principal por el que usaba usr0 es que la rutina de descompresion usada por los traductores del juego utiliza la zona de buffer de impresora de un 48k pero que en modo 128k son rutinas de CM y variables de 128k, por lo que he necesitado descomprimirlo entero para poder mover la rutina de compresion a otro lugar.
pero a la hora de volverlo a comprimir he dejado solo el idioma ingles, he quitado el checo y el ruso
he utilizado la rutina de compresion zx7 con ligeras modificaciones para cambiar el color del borde mientras descomprime
.
Pero el mayor problema para poder usar las rutinas del +3DOS era el uso del banco de memoria 7 por el juego.
como ya hice algo parecido en el Bobby Carrot la solución consiste en hacer un backup del banco 7 en otro que este libre nada mas terminar de cargar del disco. para poderlo restaurarlo si se tiene que volver a usar el disco para leer o grabar los avances.
Examinando la memoria usada vi que quedaban unos 10k sin usar en el banco 3, por lo que me hice una rutina especial, que intercambia los ultimos 10k del banco 3 por los ultimos 10k del banco 7.
por lo que al terminar de usar el disco ejecuto esta rutina y me intercambia la informacion del final de los bancos 3 y 7.
quedando el buffer de datos del disco almacenado en el banco 3, procedo a descomprimir el contenido del juego del banco 7 que previamente he cargado en otro lugar. y ya puedo comenzar el juego.
despues para volver a usar la disquetera. me basta con llamar a mi rutina que intercambia el final de los bancos 3 y 7.
de esta manera la informacion del juego queda almacenada en el 3 y recupero el buffer de disco en el banco 7
al terminar de usar el disco la vuelvo a ejecutar y se restaura el juego en el bloque 7 a la vez que se guardan los buffers del disco en el banco 3
se hacen una serie de comprobaciones y se dan los errores oportunos.
funciona desde disquetera en A: o B:
o desde disco duro en +2e o +3e C: o D: incluso si se mapea la unidad de disco duro en A: o B:
para cargar desde A: -> desde el cargador o desde basic load "disk"
para cargar desde B: ->desde basic load "b:" y despues load "disk"
para instalarlo en C:
copy "ABE*.*" to "C:"
para cargarlo desde el basic load "c:" y despues load "abe3e"
al arrancar se comprueba desde donde lo estamos ejecutando.
si es A: o B: supuestamente seria disquetera, pero compruebo si existe la interfaz de disco antes de endender o apagar el motor de la disquetera, por lo que asi tambien funciona si A: o B: son unidades mapeadas.
tambien se comprueba el fichero tanto al abrir como al leer/escribir como al cerrarlo.
NOTA: Si el disco esta protegido contra escritura dara un ERROR al abrir el fichero ABE3E.S ya que se abre en modo mixto lectura/escritura para poder grabar los avances. Si veis el error, quitar la proteccion de escritura del disco y reiniciar.
Cuando carga los avances se pone el borde azul
Cuando graba los avances se pone el borde rojo (para grabar en cualquier momento del juego pulsar las cuatro teclas a la vez S+A+V+E )
saludos