Copy Link
Add to Bookmark
Report

Amoric (v1.4a) (1/3)

eZine's profile picture
Published in 
Amoric
 · 28 Sep 2019

 
DAMASO D. ESTEVEZ

******************************************************************************

Amoric (v1.4a) (1/3)
El primer emulador de ORIC-1/Atmos 48K para Amiga
© Copyright 1995-96 Jean-FranÁois Fabre

******************************************************************************

01.- IntroducciÛn 12.- Otras plataformas
02.- Requerimientos 13.- Modificaciones
03.- CaracterÌsticas 14.- Errores
04.- ConfiguraciÛn 15.- Juegos probados
05.- Arranque 16.- P·gina WEB
06.- Los joysticks 17.- A˙n pendiente
07.- Guardar en cinta 18.- GarantÌas
08.- El sonido 19.- CÛmo registrarse
09.- El teclado 20.- Agradecimientos
10.- Sugerencias 21.- Historia
11.- Importar de cinta 22.- El autor

23.- TraducciÛn al espaÒol de D·maso D. EstÈvez

******************************************************************************

1. IntroducciÛn
~~~~~~~~~~~~

El Oric Atmos fue mi primer ordenador y no he podido olvidarlo jam·s
(°ahhh, aquellos fant·sticos juegos de 8 colores predefinidos!... el CD-ROM
Multimedia no exitÌa en aquella Època ;-)). Estos juegos no diferÌan en
demasÌa de los juegos actuales en cuanto a calidad o interÈs, aunque sÌ
adolecÌan, principalmente, de los siguientes problemas:

- El tiempo de carga desde cassette podÌa volver loco a cualquiera sobre
todo si el programa despuÈs de la espera no funcionaba. Lo m·s
habitual era que esto fuese debido al ajuste del volumen, o al de
graves/agudos, o a la tensiÛn/velocidad de la cinta, o al maldito
frigorÌfico...

- Las puÒet*r*s protecciones de dos tonos en los juegos obligaban a
apagar y volver a encender el Oric, daÒando los componentes
electrÛnicos del equipo.

- Su tardÌo renacimiento en 1995 para jugar por ejemplo a Zorgon, cuando
ya disponÌamos de una nueva generaciÛn de ordenadores en el trabajo
o en casa...

- Mientras existÌan emuladores de C64, Amstrad, ZX81, VIC20, BBC,
Apple II para Amiga parecÌa no haber un sitio para el Oric habiendo
sido sin embargo el m·s popular en la Europa de la Època (de hecho,
°°m·s que el Vic20 o el BBC Micro!!).

Todo esto fue lo que me decidiÛ a escribir 'Amoric'. Primero escribÌ la
versiÛn para UNIX/X-Windows (para ir rompiÈndome la cabeza por anticipado) y a
continuaciÛn quise adaptarlo a mi ordenador favorito: el Amiga.

He esperado mucho tiempo a que otro programador realizase el emulador para
Amiga pero al final ha sido en vano: creo que °°soy el primero!! ;-) (de
hecho, un poco como Guy Degrenne).

==============================================================================

2. Requerimientos
~~~~~~~~~~~~~~

'Amoric' est· escrito en ensamblador 680x0 y en C. Lo adaptÈ de un
emulador previo que habÌa escrito totalmente en C para la plataforma
UNIX/X-Window, (las estaciones UNIX tienen una mayor potencia de c·lculo que
un 68030/68040 y gracias a la arquitectura RISC, los programas en C son
generalmente m·s r·pidos que los escritos en ensamblador si se usa un buen
compilador, como puede ser gcc, adem·s de permitir la portabilidad del cÛdigo
a otros procesadores). Mi emulador funciona sobre HP-PA1, Sun SPARC, Linux
i80x86 (a pesar de todo), PowerPC y Silicon Graphics.

Sin embargo, en Amiga, es necesario programar en ensamblador para este tipo
de aplicaciones pues la velocidad es crÌtica durante la simulaciÛn, y los
cÈlebres procesadores diseÒados a medida para el Amiga (Paula, Denise,
Gary...) no son muy ˙tiles en la emulaciÛn de la CPU 6502.

A˙n asÌ, el 6502 y el 680x0 tienen gran cantidad de caracterÌsticas
comunes, y la idea fundamental es aprovecharlas (instrucciones similares,
conversiÛn directa de las banderas de estado CCR,...) con mÌnimas
adaptaciones.

En principio, existÌan dos versiones: la correspondiente a equipos con una
CPU 68000 y para una CPU 68020. Sin embargo, decidÌ abandonar el desarrollo
de la primera por ser extremadamente lenta hasta que un usuario con un
68000/28MHz me la pidiÛ, y aquÌ est· de nuevo, aunque °no espere milagros!
[1].

Supongo que no he de advertirle que 'Amoric' ser· LENTO en un A1200 b·sico
y M¡S A⁄N en un A500. Pruebe en un equipo con Fast RAM real, y ver· como
incrementa ligeramente su velocidad: Eric Totel (MUIBuilder) ha probado esta
versiÛn sobre su A1200/020/14MHz y el programa no iba tan lento.

Ahora, con mi tarjeta 68030/45 MHz la velocidad varÌa entre un 90-120%,
pero a˙n es necesario que optimice las siguientes versiones, aunque cada vez
se vuelva m·s difÌcil el lograrlo: Fabrice Frances me ha dado una idea para
mejorar la velocidad de nuevo y la implementarÈ prÛximamente.

Si encuentra que la emulaciÛn no va suficientemente r·pida, puede probar a
modificar los valores de la frecuencia de refresco de la pantalla en las
preferencias o con las teclas [y] durante la emulaciÛn. La velocidad del Oric
puede variar seg˙n la carga de trabajo derivada de la visualizaciÛn: asÌ
durante los desplazamientos de pantalla ('scroll'), 'AmOric' ir· algo m·s
lento.

Para hacer funcionar 'AmOric necesitar· KickStart 2.0 o superior y adem·s la
biblioteca 'asl.library' para las peticiones.

Ha sido probado con Èxito con las siguientes configuraciones:

68030 KS 3.0
68020 KS 3.0
68000 KS 3.0

----------------------

[1] Esta versiÛn no corre en un 68020 debido a que la
instrucciÛn MOVESR es privilegiada a partir del 68010:
justamente por ello, sintiÈndolo mucho, los usuarios que tengan
este ˙ltimo procesador no podran ejecutar ninguna de las dos versiones
suministradas... si se encuentra en dicha situaciÛn, escrÌbame para
pedir una versiÛn especÌfica.

3. CaracterÌsticas tÈcnicas del emulador
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

El emulador de Oric en esta versiÛn permite:

- Una emulaciÛn bastante fiel del procesador 6502.

- Una emulaciÛn gr·fica de los los modos 'HIRES' --alta resoluciÛn--
y 'TEXT' --texto-- que incluye los modos 'double height'
--altura doble-- y 'flash' --parpadeo--.

- EmulaciÛn del 6522 y 8912, incluyendo los temporizadores 1 y 2,
el teclado y las palancas de control ('joysticks').

- Carga/grabaciÛn en disquette flexible/disco duro
(m·s r·pido que las cintas/K7, øno?).

- Teclas de control para realizar
diferentes operaciones (reinicio de su Oric virtual,...).

- Sonido (a˙n no es perfecto, pero est· bien...).

- Carga/grabaciÛn de volcados/capturas de toda la memoria
('snapshots') a/desde disco/memoria.

Evidentemente, AmOric no es un Oric real, lo que significa que con ciertos
programas pueden surgir problemas. Consulte el capÌtulo errores para mayor
informaciÛn.

Este emulador NO emula o no tiene en cuenta:

- Los cambios de frecuencia 50/60Hz (habitualmente no utilizados),

- El modo 'Half-TEXT/Half-HIRES'
(Semi-Texto/Semi-AltaRes), que usan algunos juegos.

- La mayor parte de las instrucciones no documentadas del 6502
(pero no es especialmente grave).

==============================================================================

4. ConfiguraciÛn: preferencias del usuario
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

El fichero 'oric.cfg' contenÌa en versiones anteriores las preferencias del
usuario: hasta la versiÛn 1.0 usted podÌa editar este fichero para
modificarlo. Sin embargo, debido a razones de conveniencia, he cambiado tanto
el formato del fichero, que ahora es binario, como su nombre, que ahora es
'Amoric.prefs'.

El fichero contiene la siguiente informaciÛn:

Nombre de la ROM <--- define que ROM utilizar· el emulador.

Directorio de programas <--- define el directorio por defecto del
que se cargar·n los programas
con 'CLOAD'.

Directorio de volcados <--- lo mismo que en el caso anterior, pero
para la grabaciÛn de programas en
cinta (virtual) con 'CSAVE'.

Sonido <--- (des)activar sonido.

Parches ROM <--- parchea algunas rutinas de la ROM o no
para ganar velocidad.

Fotogramas por segundo <--- Û FPS, es la velocidad de refresco de
la pantalla (de 1 a 50 en PAL).

CÛdigo visual <--- defiene el modo de pantalla que el
Amiga utilizar· para la visualizaciÛn
del Oric.

Joystick 1 y 2 <--- (des)activa los joysticks 1 o 2

Advertir antes de salir <--- pide confirmaciÛn al usuario antes de
abandonar la ejecuciÛn definitivamente
del emulador AmOric.

Aplicar patrones <--- patrones/comodines por defecto para
filtrar los ficheros que se mostrar·n
en las peticiones: #?.DAT para cintas
(virtuales) y #?.ROM para los
ficheros ROM.

PolÌtica de refresco <--- tipo de refresco: puede elegir
entre 5 tipos.

Tipo de disco <--- puede elegir entre Microdisco,
Jasmin o ninguno

Video <--- le permite elegir diferentes gestores
(drivers) de video. El m·s r·pido es
el de plano de 1 bit ('1 bitplane').

Puede modificar este fichero empleando la ventana de configuraciÛn que
'AmOric' le muestra al arrancar. Estos cambios pueden ser temporales (durante
la sesiÛn actual del programa) o tambiÈn puede guardarlos para usar en
posteriores sesiones (tenga en cuenta que ciertos modos de pantalla pueden no
funcionar correctamente).

Los tipos de refresco (opciÛn 'PolÌtica de refresco') son:

* Fastest: es el m·s r·pido, pero el menos preciso. No toma en
cuenta la redefiniciÛn din·mica de caracteres (igual
refresco que la versiÛn 1.1).

* Fast: es el modo por defecto. Toma en cuenta la redefiniciÛn
din·mica, pero sÛlo parcialmente.

* Good: un poco m·s preciso que Fast para la redefiniciÛn
din·mica.

* Accurate: gran precisiÛn para la redefiniciÛn din·mica (siempre
es tenida en cuenta).

* Total: refresco total. Es muy costoso para la CPU, pero el m·s
prÛximo a un Oric original.

La redefiniciÛn din·mica es a menudo utilizada (sÛlo en modo texto) para
animar personajes u objetos. En modo 'HIRES', los refrescos Fastest, Fast,
Good y Accurate son equivalentes.


ATENCION:
Puede usar los ficheros de la ROM del Oric-1 y del Oric Atmos, lo mismo que
modificarlos pero sÛlo para su uso personal. Sin embargo, hay algunas
localizaciones que han sido parcheadas despuÈs de ser cargadas en memoria por
el emulador (cargador de cinta, otros parches...). Modificar estas rutinas
supone arriesgarse a que el Oric se bloquee sin razÛn aparente.

==============================================================================

5. Arranque:
~~~~~~~~

Pinche con el puntero sobre el icono de 'Amoric' si desea ejecutarlo desde
el WB o teclee 'AmOric' en una ventana CLI/Shell: el programa cargar· el
fichero ROM que corresponda y el de configuraciÛn... si todo va bien,
aparecer· la pantalla simulando la visualizaciÛn del Oric.

Si pulsa la tecla HELP en cualquier momento de la emulaciÛn, aparecer· un
recordatorio de las teclas que permiten controlar la emulaciÛn (reinicio,...)
sobre la pantalla del Oric. La emulaciÛn en este momento se habr· detenido
(no consumir· tiempo de CPU).

Pulsando la tecla F10 abandonar· la emulaciÛn y el programa.

Para elegir una cinta 'virtual', pulse F3: aparecer· la pantalla del
WorkBench y una peticiÛn de ficheros para que pueda elegir el fichero que
desee. DespuÈs de esto, teclee como siempre 'CLOAD ""' desde el emulador: si
apareciese el mensaje 'Searching...' ('Buscando...'), podrÌa ser debido a que
no ha seleccionado ninguna cinta de cassette (pulse nuevamente F3 como ya
hemos indicado) o que Èsta ha llegado al final (en este ˙ltimo caso pulse F7
para 'rebobinarla').

==============================================================================

6. Joysticks
~~~~~~~~~

'Amoric' 1.4a emula dos tipos de palancas de control (los conocidos
'joysticks'): los que utilizan la interfaz P.A.S.E y los programables.

El joystick que utiliza la interfaz P.A.S.E. se conecta en el puerto de
impresora del Oric: algunos juegos que los soportan son 'Ultima Zone',
'Pastablasta' o 'Lone Raider'. Pero tambiÈn hay muchos otros que no lo
utilizan lo cual es problem·tico, sobre todo con juegos que utilizan teclas
que no se encuentran en la misma localizaciÛn en el Amiga que en el Oric
original (en 'Zorgon Revenge', en el nivel arcade, X sirve para subir y <-
para bajar, pues estas teclas se encuentran una encima de la otra en el
Oric-1).

ExistÌa igualmente otro tipo de interfaz conectada en el puerto de
expansiÛn. PermitÌa elegir las teclas que el joystick debÌa simular durante
el juego. Esta interfaz es m·s flexible que la interfaz P.A.S.E. ya que
permitÌa utilizar el joystick en juegos diseÒados ˙nicamente para ser
manejados desde teclado. Sin embargo, tenÌa limitaciones: cuando presionaba
fuego, otros movimientos del joystick se desconectaban; adem·s, la interfaz
era incapaz de reproducir ciertas teclas como Shift, Control y Funct.

He probado a simular esta interfaz, pero con la posibilidad de
desplazamiento diagonal, y sin interferencia entre el botÛn de fuego y los
desplazamientos (si el juego permite mantener presionadas dos teclas
simult·neamente). Es igualmente posible usar las teclas Shift, Control y
Funct en los movimientos.

Puede elegir las teclas de definiciÛn de los joysticks en la ventana de
configuraciÛn, pinchando con el puntero sobre el botÛn 'Select...'
('Elegir...') en 'JoyType' ('Tipo de joystick'), y presionar el botÛn 'Define'
sobre el joystick elegido (en modo 'Custom', o sea, 'Programable'). Siga a
continuaciÛn las instrucciones. No podr· ver las teclas que actualmente est·n
definidas (lo siento) y sÛlo podr· elegir teclas v·lidas del Oric (por
ejemplo, la tecla Help ser· ignorada).

Podr· guardar (y recuperar) de disco la configuraciÛn de los joysticks.

==============================================================================

7. Guardando en cinta con la funciÛn modificada 'CSAVE': Saving... GAME C
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Las rutinas 'CSAVE' y 'CLOAD' son modificadas por 'AmOric' para permitirle
guardar/cargar ficheros desde disquette/disco duro. La carga es simple:
elija una cinta de cassette virtual, 'Amoric' la cargar· en memoria y cuando
teclee 'CLOAD ""' desde el emulador, los bytes ser·n leÌdos desde la memoria y
no desde el fichero en disco.

El guardar los datos es m·s delicado, ya que 'AmOric' debe para ello abrir
un fichero en modo de escritura y escribir sobre un disco, por lo que ha de
ser prudente, pues todo fichero que no se haya vuelto a cerrar puede
significar el forzar a validar el disco despuÈs de reiniciar su Amiga
(problema harto conocido por todos los usuarios).

Cuando usted teclea 'CSAVE "FOO"', un fichero FOO.DAT se crea en el
directorio por defecto (de volcados) que se haya definido desde las
preferencias. Si el fichero ya existe previamente, un mensaje se mostrar·
preguntando si se desea sobreescribir el fichero y si la respuesta es negativa
'CSAVE' no har· nada.

Si teclea 'CSAVE""', un fichero _NONAME_.DAT se crear·, pues no es posible
crear un fichero sin nombre bajo AmigaDOS. Pero el nombre Oric quedar· vacÌo
("").

Si por cualquier razÛn el fichero no puede ser creado, 'AmOric' no
escribir· nada y los datos no ser·n guardados (pero el mensaje 'Saving... FOO
B' aparecer· igualmente). Es como si no hubiese cinta en el magnetÛfono o
como si estuviese protegida la cinta contra escritura.

El fichero no se cerrar· hasta que:

- intente grabar otra cinta, o,
- pulse una tecla de funciÛn cualquiera (memorizar estado, ...).

Es difÌcil decidir, en efecto, cuando la operaciÛn de grabaciÛn ha
terminado para cerrar el fichero. Por lo tanto NO reinicie su Amiga mientras
la emulaciÛn estÈ activa si est· guardando datos en una cinta virtual y
'Amoric' no ha podido cerrar el fichero ya que esto le forzarÌa a validar su
disco lo cual aunque no suele ser grave, no es nada divertido, adem·s de
llevar su tiempo.

Si cierra el fichero mientras el emulador est· guardando los datos
(pulsando una tecla de funciÛn), esto tendr· el mismo efecto que detener el
magnetofÛn.

PS : Para acelerar el acceso, en la escritura
se emplea una memoria temporal de 1 Kb.

← previous
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT