ORIC - Help !!!

dancresp
Mensajes: 5370
Registrado: 13 Nov 2010 02:08
Agradecido : 169 veces
Agradecimiento recibido: 296 veces

ORIC - Help !!!

Mensajepor dancresp » 08 May 2014 13:04

Pues me suena que ya abrí un hilo de ayuda para el ORIC pero no consigo dar con él, así que abro otro.
Al grano...

Tengo muy avanzado el ensamblador de 6502 en BASIC para el ORIC, que ahora mismo aprovecho para desarrollar en el Euphoric de MS-DOS, ya que el uso del teclado es muy cómodo.

El ensamblador va de coña y es más simple y rápido que el del Z80 pero tengo un par de dudas que seguro sabréis responder.

El ORIC no permite la grabación de ficheros secuenciales, ¿verdad?
Pero claro, he de poder grabar el código fuente de los programas, así que he pensado en volcar el contenido de la matriz que lo contiene de una forma secuencial a partir de una dirección de memoria y de allí grabarlo al casete como un bloque de bytes. Al recuperarlo hago el proceso inverso y todo queda bien.

Y yo pregunto, ¿a partir de que dirección de memoria debería hacer este volcado teniendo en cuenta que el programa en BASIC ocupa unos 7 KB, y me gustaría que esta parte quedara lo más junta posible al fuente en BASIC?

Y para hacer pruebas de rutinas en ensamblador, ¿que dirección uso para que no afecte a nada?

Pues ya está !!!

Gracias por adelantado.

-nb

Avatar de Usuario
Chema
Mensajes: 2237
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1816 veces
Agradecimiento recibido: 586 veces
Contactar:

Re: ORIC - Help !!!

Mensajepor Chema » 08 May 2014 16:15

Había un link en este foro por algún sitio a un libro de programación en CM de un autor español. No recuerdo ahora el enlace, pero a ver si luego te lo busco. Tiene un capítulo sobre la estructura de un programa en Basic muy interesante. En general puedes marcar con HIMEM la dirección máxima que puede ocupar un programa. De esa dirección hacia abajo se almacenan los strings y hacia arriba puedes usarlo como quieras.

Por defecto esa dirección es $9800 ( aunque en el Oric 1 estaba inicializada incorrectamente por defecto, cuidado), que es donde estaría el juego de caracteres en modo Hires, pero está libre en modo Text (hasta la $b400).

Ahora mismo esto es lo que pudro decirte. A ver si luego miro un poco más y te pasó información más concreta.

Avatar de Usuario
flopping
Mensajes: 2311
Registrado: 26 Jun 2011 17:50
Agradecido : 1 vez
Agradecimiento recibido: 39 veces

Re: ORIC - Help !!!

Mensajepor flopping » 08 May 2014 17:57

Yo no puedo ayudarte en esto, pero ¿has leído mi MP?, salu2.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide que padezco.
(C) 1982-2019, 37 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

dancresp
Mensajes: 5370
Registrado: 13 Nov 2010 02:08
Agradecido : 169 veces
Agradecimiento recibido: 296 veces

Re: ORIC - Help !!!

Mensajepor dancresp » 08 May 2014 18:11

flopping escribió:Yo no puedo ayudarte en esto, pero ¿has leído mi MP?, salu2.

Te he respondido.

Y con la respuesta de chema creo que puedo ir tirando.

Tonto de mi de no haber pensado en bajar la memoria RAM... -banghead

Avatar de Usuario
Taburoto
Mensajes: 1286
Registrado: 15 Mar 2011 00:40
Agradecido : 17 veces
Agradecimiento recibido: 83 veces

Re: ORIC - Help !!!

Mensajepor Taburoto » 08 May 2014 18:25

Ahora mismo esto es lo que pudro decirte


Yo tambien me pudro un poco,sobretodo despues de haber tostado la controladora microdisk.

Avatar de Usuario
Chema
Mensajes: 2237
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1816 veces
Agradecimiento recibido: 586 veces
Contactar:

Re: ORIC - Help !!!

Mensajepor Chema » 08 May 2014 18:41

-rofl

A tu comentario, no al problema de la controladora, claro...

Estos correctores ortográficos...

Avatar de Usuario
ron
Mensajes: 18442
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1615 veces
Agradecimiento recibido: 1338 veces

Re: ORIC - Help !!!

Mensajepor ron » 08 May 2014 19:09

Los coches de antaño... esos de 1950 hacia atrás que andaban por España, llevaban una especie de tapa que se quitaba y aparecía un sitio al que llamaban " ahí te pudras ", cuando os digan que os pudráis acordaros de aquellos que se pudrieron a la intemperie viajando en el ahítepudras.

Dicha esta bobada suele pasar. No recuerdo cuando casqué mi ultima cosa pero siempre pasa por lo que ahora llaman hype, emoción, ansia, ganas, prisa todo junto en un cocktail que por lo que veo nunca ha dejado de ser explosivo.

Sobre lo de la memoria del ORIC pues hay recursos que seguro algo pueden ayudar, a ver que os parece... aunque después de lo leído poco puedo aportar.

http://wiki.defence-force.org/doku.php? ... emory_maps

http://oricspider.home.insightbb.com/or ... olour.html

Avatar de Usuario
Chema
Mensajes: 2237
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1816 veces
Agradecimiento recibido: 586 veces
Contactar:

Re: ORIC - Help !!!

Mensajepor Chema » 08 May 2014 21:12

¡El ahitepudras! Recuerdo a mi padre contándome eso :)

Bueno, pues creo que "pudro" decirte algo más. El libro de Geoff Philips (descargable al final de esta página o aquí en PDF) tiene un montón de información interesante (mira el capítulo 2).

Dices que almacenas el código (supongo que el fuente) en una matriz. Mi BASIC está muy oxidado (pero mucho, mucho) pero igual te era más eficiente almacenarlo directamente en la zona de memoria libre a través de POKEs y PEEKs. De todas formas puedes grabar directamente el array en cinta y recuperarlo.

Si el programa va a ser sólo compatible con ATMOS, tienes las funciones STORE y RECALL para eso. Si lo quieres compatible también con el Oric-1, es posible seguir haciéndolo (creo) pero a mano. Los punteros en página cero $9e,$9f (DEEK($9e) te daría la dirección de memoria) y $a0,$a1 mantienen las direcciones inicio y fin de la zona donde se almacenan los arrays. Cada array se almacena poniendo primero su nombre y luego sus dimensiones.

Podrías buscar tu array ahí y, sabiendo su tamaño guardar en cinta el bloque de bytes que ocupa. Para cargarlo, lo mismo. En el libro que te comento te indica los detalles, pero si no sería cosa de investigar un poco.

En cuanto a dónde ensamblar rutinas de prueba, casi cualquier zona por encima de HIMEM te sirve, hasta llegar a donde está el juego de caracteres (que cambia de TEXT a HIRES, como te comenté). Pero hay otras posibilidades. Si no tienes unidad de disco ni cosa parecida, tienes libre toda la página 4. Para rutinas pequeñas es muy cómodo usarla. Creo que el libro te comenta estas posibilidades también (aunque yo sigo prefiriendo ponerlo por encima del límite del BASIC).

Una cosa. Creo que leí en algún sitio que el BASIC en ocasiones tiene que hacer recolección de basura y ésta se lanza más a menudo si dejas poco espacio para el programa (bajando el límite con HIMEM).

Espero que todo esto te sirva de ayuda. Ya te digo que mi BASIC, sobre todo el del Oric lo tengo muy olvidado.

dancresp
Mensajes: 5370
Registrado: 13 Nov 2010 02:08
Agradecido : 169 veces
Agradecimiento recibido: 296 veces

Re: ORIC - Help !!!

Mensajepor dancresp » 08 May 2014 23:17

La intención es que sea compatible con todos los ORIC.

Respecto al tema de guardar el código fuente del programa a ensamblar, la intención es hacer un volcado del contenido del array en memoria a partir de una dirección vacía, y entonces grabar el bloque de bytes. Creo que será más seguro, aunque algo más lento.

Bueno, pues con la información que me habéis dado creo que ya puedo ir haciendo pruebas.

Y respecto al colector de basura, tengo entendido que hay BASIC que cuando haces:
A$="TEXTO"
A$="A$+"DE PRUEBAS"
En la primera línea defines la variable y le asignas un valor.
En la segunda línea le concatenas más texto y lo que hace es borrar la variable anterior y definir una nueva con el mismo nombre a continuación de la última variable existente. Cuando el ordenador se queda sin memoria lo que hace es una compactación para eliminar estos espacios en blanco que han ido quedando y reducir espacio.
En el ensamblador de Z80 del MSX es la única explicación que le encuentro a las "pajaras" que le da de tanto en tanto, y que pueden durar unos 3 o 4 segundos. Cuanta más memoria le asigno a las variables con CLEAR más tarda en entrar en estado "pajara" y lo hace con menos frecuencia.

Pues nada, gracias por todo y tendréis noticias.

dancresp
Mensajes: 5370
Registrado: 13 Nov 2010 02:08
Agradecido : 169 veces
Agradecimiento recibido: 296 veces

Re: ORIC - Help !!!

Mensajepor dancresp » 09 May 2014 12:28

Esto de hacer un ensamblador de un lenguaje máquina que "casi" desconoces es todo un puntazo.
Hice cuatro cosillas muy simples hace muuuchos años, ensamblando a mano.

El problema es que no acabo de entender como le haces diferenciar al ensambladorentre algunos de los distintos métodos de direccionamiento.

Absoluto:
INSTRUCCION $HHLL
INSTRUCCION $HHLL,X
INSTRUCCION $HHLL,Y

Relativo:
INSTRUCCION $BB

Zeropage:
INSTRUCCION $LL
INSTRUCCION $LL,X
INSTRUCCION $LL,Y

Inmediato:
INSTRUCCION #$LL

Así, me gustaría poder pasar los valores en decimal o hexadecimal, y no se como decirle que el valor 64 ($40) puede ser un valor de un byte ($40) o dos bytes ($4000).

En un libro han usado la opción de poner un asteristo "*" delante de los valores que corresponde a "zeropage", pero en el fondo en que se diferencia el "zeropage" INSTRUCCION $LL y el "relativo" "DIRECCION $BB" si los dos hacen referencia a un valor de un byte.

Ahora mismo lo hago a partir de valores hexadecimales con un $ delante y si tiene 4 digitos es de dos bytes y si tiene 2 es de un byte. Pero con los valores decimales no se como se hace en un ensamblador normal.

-nb

Avatar de Usuario
Chema
Mensajes: 2237
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1816 veces
Agradecimiento recibido: 586 veces
Contactar:

Re: ORIC - Help !!!

Mensajepor Chema » 09 May 2014 13:10

Creo que no entiendo bien tu pregunta. Si el valor cabe en un byte, entonces es zero-page, sino no lo es. En hexa, el número de caracteres te lo dice, claro. En decimal es mirar si es mayor que 255 (en cuyo caso son dos bytes).

Sé que en algunos casos rarísimos un programador puede querer generar una instrucción en un modo no zero-page aunque el parámetro lo sea (no recuerdo para qué, yo nunca lo he usado) y entonces hay que poner en el fuente, por ejemplo sta $0040.

En cuanto al direccionamiento relativo como solo se usa en las instrucciones de branch (BNE, BEQ, BCC,...) y es el único que se puede usar, pues no hay duda.

Seguro que no he entendido alguna cosa....

dancresp
Mensajes: 5370
Registrado: 13 Nov 2010 02:08
Agradecido : 169 veces
Agradecimiento recibido: 296 veces

Re: ORIC - Help !!!

Mensajepor dancresp » 09 May 2014 21:33

Pues no se si no me has entendido bien o es que yo no me he sabido explicar, pero leyendo tu comentario me he dado cuenta de lo burrete que soy... -banghead

Efectivamente, si el valor esta entre 0 y 255 usa un tipo de direccionamiento y si es superior a 255 usa otro.
Total que de vuelta a casa ha repasado el ensamblador y ya ensambla perfectamente.
Es mucho más simple que el del Z80 !!!

Ultimas preguntas para matar el tema:
- ¿Que se suele usar para indicar la dirección de inicio del programa? Uso un ORG o hay otra nomenclatura. He visto varias.
- ¿Como se define un byte o word? ¿Uso DB y DW o se hace de otra forma?

En algunos textos he visto que se puede usar el ">" y "<" para referenciarse al byte alto o bajo de un valor de 16 bytes. ¿Es algo estándar o invento de algún ensamblador concreto?

Y para terminar el tema... ¿me puedes pasar ejemplos de sencillas rutinas para el ORIC en las que aparezcan una buena variedad de instrucciones? Es para hacer pruebas. No se, rutinitas tipo scroll de pantalla en modo texto y cosas similares.

Nuevamente gracias !!!

-nb

Avatar de Usuario
Chema
Mensajes: 2237
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1816 veces
Agradecimiento recibido: 586 veces
Contactar:

Re: ORIC - Help !!!

Mensajepor Chema » 10 May 2014 20:45

No te había entendido yo, creo. Bueno, me alegro de que todo pite ya :)

En cuanto a tus preguntas, no sé si existe una notación estándar. La que comentas la he visto un montón de veces. La del XA, que es el que yo uso, tiene algunas diferencias. Para marcar el inicio del programa se usa *=dir y para definir byte o word .byt o .byte y .word, aunque tiene más...

No te compliques y usa el que propones...

Lo de los ángulos <> también es cosa del XA, creo. Es muy cómodo. Otros he visto que usan los operadores HI() y LO()

En cuanto a rutinas, tienes un montón de ellas interesantes en el libro que se comenta en este hilo y en el que te comenté hace unos días.

Si quieres podría prepararte yo alguna rutina que se pueda llamar desde Basic, pero no creo que pueda hoy.

dancresp
Mensajes: 5370
Registrado: 13 Nov 2010 02:08
Agradecido : 169 veces
Agradecimiento recibido: 296 veces

Re: ORIC - Help !!!

Mensajepor dancresp » 13 May 2014 15:34

Hola chema, disculpa el retraso en responder pero estuve el fin de semana fuera de casa, y vi tu mensaje pero no es cómodo responder con mi móvil.

He visto los enlaces del tal Ramón Cererols. Realment interesantes y guardados los PDF, recomiendo su lectura, especialmente sus manuscritos de la HP41c (en catalán, eso si). Un crack.

Yo tengo el ensamblador completamente listo, excepto la parte que graba/carga los programas. Por el resto, con mis habituales problemas con el BASIC del ORIC que he conseguido ir solucionando... como su "cutre" comando INPUT que no admite una respuesta vacía o con comas, por ejemplo, y la falta de USING.

Con todo el ensamblador funciona más que rápido, aunque copiado tal cual en un Commodore-16 iría mucho más rápido. Fijo.

Espero poderlo subir esta semana. La parte del editor funciona 100% igual que en el MSX, y uso cinta en lugar de disquetes.

Gracias !!!

Y para ir abriendo boca...

6502-Assembler.gif
ORIC 6502-Assembler


Nota:
No le busquéis sentido al programa. Solo miro que el código generado sea correcto. Y lo es. -thumbup

dancresp
Mensajes: 5370
Registrado: 13 Nov 2010 02:08
Agradecido : 169 veces
Agradecimiento recibido: 296 veces

Re: ORIC - Help !!!

Mensajepor dancresp » 13 May 2014 22:17

Esta tarde, de vuelta a casa en el tren he implementado los comandos ".BYTE", ".WORD", ".ASC" y "*=".

Ahora mismo ya solo me queda ver donde empiezo a hacer el volcado del programa que ensamblo, tanto del fuente como del objeto.

Mirando el mapa de memoria del ORIC veo que va de más a menos, así la ROM está al final y la memoria libre está al principio. Curioso.

De esta forma, ¿la dirección $9800 es una buena dirección para hacer el volcado de los fuentes?
La verdad es que el programa BASIC no llega a los 5 KB, datos aparte.

Y a ver si lo acabo pronto, que ya me he documentado sobre el 6809 y mi DRAGON quiere caña !!! -507

Avatar de Usuario
Chema
Mensajes: 2237
Registrado: 21 Jun 2012 20:13
Ubicación: Gijón
Agradecido : 1816 veces
Agradecimiento recibido: 586 veces
Contactar:

Re: ORIC - Help !!!

Mensajepor Chema » 13 May 2014 23:14

Vaya pinta que tiene esto! Otra vez enhorabuena...

Puedes volcar donde dices, siempre que vayas hacia abajo, claro. Si estás en modo texto puedes incluso empezar más arriba, en $b400.


Volver a “Oric”

¿Quién está conectado?

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