Derniers sujets
» L'immonde Docteur Kokus
Mar 17 Oct - 16:46 par Dom50

» Rencontre avec Emmanuel Viau (ERE informatique)
Mar 17 Oct - 16:17 par Dom50

» Organisation RAM vidéo
Mar 17 Oct - 12:26 par Davros

» OVERLAYS : est-ce accessible avec LCC65
Lun 16 Oct - 12:47 par Jede

» Holdies
Dim 15 Oct - 19:09 par Dbug

» Infocarte ORIC
Dim 15 Oct - 11:26 par fred72

» Alchimie DOUZE
Dim 15 Oct - 6:46 par kenneth

» maxiNoob apprend le C
Ven 13 Oct - 20:55 par Dbug

» page zéro ?
Ven 13 Oct - 20:36 par Dbug

» Orix : Thread de notification sur le développement
Jeu 12 Oct - 20:25 par Jede

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

Dany

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

Récupérer mon mot de passe

Statistiques
Nous avons 123 membres enregistrés
L'utilisateur enregistré le plus récent est james64

Nos membres ont posté un total de 5719 messages dans 417 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 - 12: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 : 171
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

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

Message  Hialmar le Jeu 7 Jan - 13: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 : 815
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 - 13: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 : 37
Date d'inscription : 30/10/2014

Revenir en haut Aller en bas

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

Message  Hialmar le Jeu 7 Jan - 14: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 : 815
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 - 14: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 : 106
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 - 16: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 : 815
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 - 16:23

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

Messages : 106
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 - 16: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 : 815
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 - 20: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 : 171
Date d'inscription : 09/02/2014

Revenir en haut Aller en bas

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

Message  Hialmar le Mer 22 Juin - 9:16

Impressionant !

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

Messages : 815
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