Derniers sujets
» CEO MAG 325
Aujourd'hui à 8:15 par Symoon

» Divers question sur atmos
Dim 21 Mai 2017 - 0:36 par laurentd75

» Bienvenue dans le Forum des Oriciens
Sam 20 Mai 2017 - 15:15 par Danynou

» Oric Atmos : problème de son
Sam 20 Mai 2017 - 12:41 par nax

» HADES Assembleur
Mer 17 Mai 2017 - 21:50 par karnajh

» Les aventures de Lilla et Jacky
Dim 14 Mai 2017 - 11:02 par didierv

» Les aventures de Lilla et Jacky
Dim 14 Mai 2017 - 1:22 par Dom50

» Fumons un peu...
Jeu 11 Mai 2017 - 17:41 par kenneth

» Roland Garros (Sprites)
Mer 10 Mai 2017 - 21:11 par Symoon

» Euphoric avec Dosbox
Dim 7 Mai 2017 - 15:40 par karnajh

Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion

Récupérer mon mot de passe

Statistiques
Nous avons 119 membres enregistrés
L'utilisateur enregistré le plus récent est karnajh

Nos membres ont posté un total de 5300 messages dans 376 sujets
Portail ORIC




PILOT, Focal, Brainfuck, ... what else?

Page 2 sur 2 Précédent  1, 2

Voir le sujet précédent Voir le sujet suivant Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  assinie le Jeu 7 Jan 2016 - 13:29

Le float de 5 pour OSDK s'explique parce que le runtime utilise les routines de la ROM BASIC, ce qui évite de devoir tout ré-écrire.
avatar
assinie

Messages : 168
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  Hialmar le Jeu 7 Jan 2016 - 14:09

Oui les réels en virgule flottante en Basic Microsoft sont sur 5 octets. C'est space mais c'est comme ça. Pourquoi ? Il faut demander à Bill Gates et Paul Allen.

Float est sensé être standardisé IEEE depuis 1985 ( https://fr.wikipedia.org/wiki/IEEE_754 ) mais bon c'était après la création du Basic Microsoft (en 1977 en tant qu'Altair Basic). C'est pour ça qu'on ne trouve pas de type float32_t ou autre float64_t alors qu'on a ça pour les entiers qui sont vraiment merdiques en C côté taille.
Les types int16_t, uint16_t ou autres n'existent pas en OSDK mais comme ce ne sont que des #define ou des typedef on peut les ajouter.
Par contre vu qu'il n'y a pas du tout d'entier sur 4 octets en OSDK ça coince.

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 814
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  iss le Jeu 7 Jan 2016 - 14:27

First of all about base type sizes using simple C code:
Code:
 printf("char   : %d\n", sizeof(char));
  printf("short  : %d\n", sizeof(short));
  printf("int    : %d\n", sizeof(int ));
  printf("long   : %d\n", sizeof(long));
  printf("float  : %d\n", sizeof(float));
  printf("double : %d\n", sizeof(double));
and results are:
Code:

CC65:               OSDK:
-----               -----
char    1           char    1
short   2           short   1
int     2           int     2
long    4           long    2
float   4           float   5
double  4           double  5

Else, porting of ulua is fun and easy. I have the same results as assinie with the test Smile.
The choice of compiler for me is clear too:
- CC65 - 24059 bytes
- OSDK - 44949 bytes
This is the size of the compiled uluai (the byte code interpreter) with no optimizations.
I like OSDK, but when the C source code is relatively complex, unfortunately, the compiled files are huge and incomparable to CC65.
I'll prepare soon short demo in form of Sedoric DSK and will post it here.
avatar
iss

Messages : 35
Date d'inscription : 30/10/2014

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  Hialmar le Jeu 7 Jan 2016 - 15:20

J'ai trouvé pour les 5 octets.

C'est expliqué ici : http://www.pagetable.com/?p=46

En gros quand ils sont passés de la version qui tenait en 8 Ko à la version qu'on a ils en ont profité pour passers à des flottants sur 40 bits pour ajouter de la précision.

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 814
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  Godzil le Jeu 7 Jan 2016 - 15:47

Comparing size without optimisation is useless.

And using the ROM for anything like the float is stupid, but I suspect that it is not using the rom, just a compatible format. (If it were using the rom, you can't use the overlay ram + float)
You can't expect the ROM to always be mapped, and only for specific lib call, not for something like basic types.
avatar
Godzil

Messages : 105
Date d'inscription : 20/01/2013
Age : 35
Localisation : Entre France et UK

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  Hialmar le Jeu 7 Jan 2016 - 17:21

Si, si ça utilise bien la ROM. Jette un coup d'oeil au fichier math.s d'OSDK dans le répertoire lib.
Voilà un extrait :
Code:

getfarg1
   lda sp
   ldy sp+1
   jmp load_acc1

_log   jsr getfarg1
   jmp $DCAF

DCAF est bien la routine LOG de la ROM.

Tu peux virer et remettre la ROM sans problème comme ça :
https://github.com/hialmar/tyrann3/blob/master/sedoric_io.s#L27
et :
https://github.com/hialmar/tyrann3/blob/master/sedoric_io.s#L52

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 814
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  Godzil le Jeu 7 Jan 2016 - 17:23

C'est une grossière erreur alors.
avatar
Godzil

Messages : 105
Date d'inscription : 20/01/2013
Age : 35
Localisation : Entre France et UK

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  Hialmar le Jeu 7 Jan 2016 - 17:25

Après tu fais comme tu veux.

Si tu ne veux pas la ROM, tu la vires et tu n'utilises pas toutes ses routines (en re-codant ce dont tu as besoin).

C'est ce que fait Dbug dans ses démos.

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 814
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  assinie le Lun 20 Juin 2016 - 22:52

Bonsoir,

Je continue mes portages, actuellement j'ai modifié:

  • Tiny-pascal en BASIC NorthSoft publié dans la revue Byte avec le compilateur, l'interpréteur de p-code et un "traducteur" qui génère du code assembleur pour un... 8080 mais ce n'est pas génant. Le but est de me servir de cette version comme boostrap pour ré-écrire le tout en tiny-pascal et de l'améliorer à chaque itération.
  • PL/BIT publié par Carlo Magnaghi dans la revue italienne BIT, écrit en BASIC AppleSoft et qui génère du code assembleur 6502. Il s'agit d'une version étendue de PL/0, un sous ensemble de pascal décrit par Niklaus E. Wirth. dans “Algorithms + Data Structures = Programs”.
  • PL/65. Il s'agit de la version en ROM pour un AIM65 de Rockwell. La doc disponible est celle de la version sur disquette plus complète que la version d'origine mais j'ai ajouté les instructions manquantes. J'ai également ré-ecrit pratiquement la totalié du code source en PL/65, ce qui était probablement le cas à l'origine.


C'est en faisant le portage du PL/65 que j'ai décidé de passer au plan B et d'en profiter pour tester une idée. En effet, pour les programmes en assembleur, le principe est toujours le même:

  1. Récupération du binaire
  2. Génération de sources en assembleur
  3. Ajout des commentaires dans le code source
  4. Identification des routines spécifiques de la ROM utilisées par le programme
  5. Modification du code pour prendre en compte  l'Oric-1 et de l'Atmos ce qui donne 2 programmes différents ou un seul qui embarque ses propres patches pour les 2 machines


Pour les 3 premiers points, on ne peut pas y faire grand chose.

Mais les routines spécifiques ne concernent pratiquement que la gestion du clavier et de l'affichage.
La seule chose qui change éventuellement d'une machine à l'autre concerne les registres utilisés pour passer les paramètres.
Le code source obtenu au final s'éloigne du code d'origine et peut devenir plus ou moins simple à lire et à maintenir si on inclus les 2 Oric, voire les différentes versions de ROMs customs, et le Telestrat et mon environnement de test qui est encore différent.

Pour le PL/65, j'ai donc décidé de prendre le code source et de l'assembler directement sans modification, à part l'adresse des tampons mémoire utilisés en changeant juste les #define adéquats et encore ce n'était pas obligatoire.

Comment faire pour que le programme prévu pour un AIM/65 fonctionne directement sur un Oric-1 ou un Atmos?
Simple: utiliser le principe des librairies dynamiques (DLL chez PetitMou)!

Il suffit donc de charger le programme, la librairie correspondant à la machine cible et de lancer l'édition des liens.
L'avantage est qu'il n'y a que la librairie à modifier et qu'il est très simple d'ajouter des fonctionalités sans toucher au programme principal. Ce qui permet, par exemple d'ajouter la gestion des disquettes en plus du clavier (ce que fait d'ailleurs la ROM de l'AIM65)

Pour le moment, je charge la librairie manuellement et lance l'édition des liens par un CALL #xxxx, mais je vais essayer d'améliorer ça en écrivant un utilitaire qui charge automatiquement la bonne libraire si elle n'est pas déjà en mémoire et lance ensuite l'édition des liens et enfin le programme.
Il est à noter que, dans le cas d'un programme écrit au départ pour l'Oric-1 et éxécuté sur un Atmos, il n'y a pas vraiment de librairie à charger puisqu'il s'agit de la ROM de la machine.

J'en ai également profité pour tester une autre idée: écrire une petite routine simple qui permet de charger un programme en mémoire à une autre adresse que celle prévue au départ.
Je pense qu'il devrait même être possible de le faire à la volée pendant le chargement du programme en mémoire mais il faut faire attention au timing sur une machine réelle pour ne pas perdre trop de temps entre 2 secteurs à lire sinon la disquette devra faire un tour de plus et cela ralentira un peu le chargement.

Voilà, voilà...

(Je ne sais pas si c'est vraiment le bon post ou la bonne rubrique pour tout ça )
avatar
assinie

Messages : 168
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  Hialmar le Mer 22 Juin 2016 - 11:16

Impressionant !

_________________
Hialmar
Membre du CEO et de Silicium.
avatar
Hialmar
Admin

Messages : 814
Date d'inscription : 03/03/2014
Age : 47
Localisation : Toulouse

Revenir en haut Aller en bas

Re: PILOT, Focal, Brainfuck, ... what else?

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 2 sur 2 Précédent  1, 2

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum