ROM Alice 32 : Désassemblage et commentaires

Les bouquins, les scans, les pdf ou les liens qui vont bien... ici c'est la bibliothèque.

Modérateurs : Papy.G, fneck, Carl

Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonjour à tous.

Une mise à jour d'une bonne cuvée je pense ...

Voici de nouvelles versions :

ROM V1.0 : fichier V0.70 V5 : c'est une mise à jour des sources de la rom originale avec les dernières découvertes durant le développement de la V0.97.

ROM V2.0 : fichier V0.95 WIP V4
+ Ajout de la commande BOX
+ Correction de l'intervalle (X,Y) possible de la
commande basic PLOT
+ Ajout de la commande CARG b,n, ...
+ Début de la réorganisation des variables
définies à partir de l'adresse $3000
+ Suppression des HOOKS + réorganisation du code
+ Récupération espace mémoire
+ Correction de l'inversion des variables CURX_PRT et XMAX_PRT

ROM V3.xx : ficchier V0.97 WIP6
Cette version est utilisable en l'état (sauf pour les commandes TRUE et FALSE).
Mais il reste encore des bugs à corriger ...

+ Disparition de l'assembleur
+ La commande BASIC CLOAD est de nouveau fonctionnelle dans l'émulateur DCALICE
+ Réorganisation du code !
- Déplacement du noyau BASIC de la fin au début de la
rom
- Regroupement des constantes mathématiques
- Harmonisation des noms des constantes
- Regroupement du code par famille :
- calcul mathématique
- manipulation de chaîne
- routine spécifique (OS_XXXX)
- Le découpage de la rom est le suivant :
- BASIC
- ÉDITION
- I/O : CLAVIER/GRAPHISMES/K7/SON
- ZONE LIBRE
- ZONE VECTEURS CPU
+ Suppression de ASS / RESUME
+ Report V0.95 de la correction de l'inversion des
variables CURX_PRT et XMAX_PRT
+ Correction de CRT_TEMPO en TEMPO_PRT
+ Correction de la fonction QUICK_INT qui faisait
référence à ACC1 codé en dur au lieu de son
nom (ldx #$00C9 ==> ldx #ACC1
+ Nettoyage des variables (changement de nom, d'
utilisation, déplacement en mémoire vive, etc.)
pour des soucis de rationalisation et de clarté
+ Optimisation de la commande BASIC SGN
gain de temps estimé 10%
+ Développement de repeat until
+ Développement de while wend
+ romRND : remplacement de bsr j_romINT_RomRND par
jsr romINT
+ Ajout des commandes de DEBUG TRON et TROFF
+ La commande BASIC RESTORE peut prendre un
nouveau paramètre ligne
+ Ajout de la commande ELSE
+ Ajout de TRUE / FALSE
+ Ajout de INC A / DEC B / SWAP A,B
+ Ajout de DEF FN


La suite d'ici fin 2021 :
+ Renommer les noms des fichiers suivant le numéro de version pour plus de visibilité
V0.70 -> V1.00 : version initiale de la rom BASIC de l'ordinateur ALICE 32
V0.95 -> V2.xx : version V2.xx de la rom BASIC de l'ordinateur ALICE 32 rétrocompatible V1.xx
V0.95 -> V3.xx : version V3.xx : nouvelle version du BASIC non compatible d'un point de vue binaire avec la V1.xx
+ Stabiliser le code des nouvelles commandes ou fonction (REPEAT ... UNTIL, BOX, FILL, etc.)
+ Correction de TRUE et FALSE pour passer d'une commande BASIC en une fonction BASIC
+ Ajouts de nouvelles commandes : DRAW, USING, etc.
+ Ajout d'une nouvelle constante mathématique : TWOPI = 2*PI
+ Ajout des variables entières : A% + routines mathématiques entières : addition, soustraction, multiplication, division, comparaison, etc.
+ Modification de la commande FOR pour gérer directement les variables entières sans passer par les routines mathématiques de type float
+ Ajout du codage hexadécimal des nombres : POKE #4000,#10 ou POKE &4000,&10 : la syntaxe n'est pas stabilisée ...
+ Optimisation de la commande basic DIM
+ Nettoyage de code pour supprimer les doublons de code
Pièces jointes
rom_ALICE32_V0.97_CLEAN_ALL_WIP6.asm.zip
(109.64 Kio) Téléchargé 87 fois
rom_ALICE32_V0.70_CLEAN_ALL_V5.asm.zip
(134.01 Kio) Téléchargé 95 fois
rom_ALICE32_V0.94_CLEAN_ALL_WIP_V8.asm.zip
(134.35 Kio) Téléchargé 92 fois
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

La version 0.95 WIP 4 en plus
Pièces jointes
rom_ALICE32_V0.95_CLEAN_ALL_WIP_V4.asm.zip
(135.85 Kio) Téléchargé 98 fois
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Mokona »

Wow quel boulot ! Bravo.
Avatar de l’utilisateur
Patrice
Messages : 1518
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Patrice »

Vraiment un super boulot et énorme tâche en même temps. Un très grand bravo pour cela!!!
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Une nouvelle fournée pour Noël.

Les noms des fichiers reflètent maintenant le numéro de version du BASIC.

Nous avons donc :
Pour la rom INITIALE : V1.00_CLEAN_ALL_WIP_Vx avec x l'incrément des différentes mises à jour. Pour rappel, c'est le désassemblage de la version initiale de la rom ALICE 32

Pour la rom AMELIOREE : V2.ZZ_CLEAN_ALL_WIP_Vy avec ZZ le numéro de version des différentes mises à jour et y le nombre de différents tests/améliorations pour une version ZZ donnée. Pour rappel, c'est une version optimisée de la V1.00 en assurant une compatibilité source et binaire.

Pour la rom ETENDUE : V3.WW_CLEAN_ALL_WIMP_Vv avex WW le numéro de version des différentes mises à jour et v le le nombre de différents tests/améliorations pour une version WW donnée. Pour rappel, c'est une nouvelle version du BASIC d'origine. Elle montre les possibilités de la machine. Elle est compatible au niveau source avec la V1.0.

Vous trouverez un entête de chaque fichier listant les améliorations, modifications ou optimisations pour chaque version.

Carnet de route 2022:


1er trimestre :
1 - Poursuite de la mise à jour du source de désassemblage de la rom initiale V1.0
2 - Poursuite des ajouts des nouvelles fonctionnalités dans la rom étendue V3.0 :
A - RENUM
B - gestion des entiers, de l'hexadécimale
C - Suppression du code inutile, réorganisation du code, simplification du code

Note : la V2.0 ne subira pas de changement hors report de mises à jour de commentaires de la V1.0

2eme trimestre :
1 - Optimisation de la V3.00 : codage des constantes numériques directement dans le source via un token BASIC
Gain espéré :
A - Dans les opérations et dans les appels via ON GOTO/GOSUB, GOSUB/GOTO : cela permettra d'enlever les opérations de conversion ASCII -> BINAIRE,
B - La commande BASIC RENUM pourrait bénéficier de cette optimisation.
Perte estimée :
A - Temps d'exécution durant la phase d’interprétation des lignes de commandes,
B - Temps d'affichage de la fonction LIST.


CONSTATION :

1 - La version étendue du BASIC me semble plus réactive (subjectif ?). Ma marge de manœuvre étant maintenant réduite sur les optimisations
(le processeur utilisé limite grandement les possibilités), je m'attache maintenant à implémenter des fonctionnalités "utiles".
2 - D'après mes constations, cette machine aurait du mériter à l'époque un BASIC digne de ce nom malgré les limitations techniques
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonjour.

Avec les fichiers et le détail des ajouts et modifications pour la V3.10 :
; V3.10 2021/08/27 :
+ Changement de numérotation du nom du fichier
source : V0.97 devient V3.10
+ Les commandes TRUE et FALSE deviennent enfin des
constantes
+ Ajout de la constante TWOPI = 2 * PI
+ Ajout du calcul de la borne du numéro maximal de
ligne + maj commentaire lié à LINGET
+ 042 : Optimisation légère sur cmdRESTORE
+ O43 : Optim. bsr jmpFMULT_SubMapApproximxation
en jsr FMULT (optim. en vitesse pas en place !)
+ Déplacement des données liées à MATHTBL
+ Déplacement d'un jmp setError0x02_SYNTAXERROR
+ 044 : suppression de pshx/pulx dans la fonction
GR_readScreenAtHOME
+ Suppression de la fonction OS_convUnderscore
et GR_storeAToR1_EF9345
+ La séquence de touche CTRL+L ne génère plus
le mot clé PEEK mais effectue un CLS
+ Simplification de la commande BASIC CLS et
suppression GR_getParamCLS
+ Optimisation sur les commandes basic TEXT et
LORES
+ Ajout des commandes BASIC AUTO et DEL
+ Optimisation du code pour la commande FILL
et la fonction setMaskColor : Gain 2 cyles
+ Simplication des constantes cOS_DEV_*
+ Personnalisation de l'étiquette loc_E362 en
next3IsUnknownTokenBasic
+ Correction du contenu des constantes d'erreur
changement de nom et de contenu
+ Dans romCLEAR, remplacement de la constante
numérique $3A par cBAS_OFS_STK
+ Correction d'un commentaire sur cBAS_OFS_STK
+ Correction commentaire FREFAC
+ Dans ENDREL_FRMEVL, remplacement de la constante
numérique $07 par cBAS_TOKEN_sup-cBAS_TOKEN_PLUS
+ Nettoyage de commentaires inutiles
+ Remplacement des constantes numériques lièes
à la précédence des opérations mathématiques par
des constantes alpha (cBAS_PREC_xxx)
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Les fichiers :
rom_ALICE32_V3.10_CLEAN_ALL_WIP_V5.asm.zip
v3.10
(111.75 Kio) Téléchargé 101 fois
rom_ALICE32_V2.00_CLEAN_ALL_WIP_V1.asm.zip
v2.00
(136.43 Kio) Téléchargé 87 fois
rom_ALICE32_V1.00_CLEAN_ALL_WIP_V1.asm.zip
v1.00
(134.48 Kio) Téléchargé 95 fois
Avatar de l’utilisateur
Leraptor06
Messages : 672
Inscription : 15 févr. 2022 10:34
Localisation : Mandelieu

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Leraptor06 »

Bonjour,
Je découvre seulement ce sujet puisque j'ai enfin un alice90 fonctionnel. C'est un travail énorme qui a été fait, bravo et merci.
Jp
Avatar de l’utilisateur
6502man
Messages : 12286
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: ROM Alice 32 : Désassemblage et commentaires

Message par 6502man »

Quel travail :shock:

Bravo :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonjour à tous.

Merci pour les retours positifs.
Je n'ai pas chômé cette année et j'ai essayé avec le peu de temps à ma disposition pour continuer à travailler sur la nouvelle ROM.

J'ai amélioré les commentaires du source de la rom en V1.0 (source originel).

J'ai amélioré un peu le code de la rom V2.00 (qui est rétrocompatible avec la V1.0).

Pour la V3.xx : c'est une nouvelle rom qui améliore grandement la V1.0 et elle n'est plus compatible ni en source ni en binaire avec la V1.0.
J'ai ajouté la fonction LINE, ajouté le traitement des entiers : l'addition et la soustraction ainsi que la multiplication devrait fonctionner. Le AND et le OR aussi (je l'espère). L'affichage des entiers semble fonctionner.
Les variables de type entier sont suffixés par % : l'affectation à une variable fonctionne (I%=23).
Je n'ai pas testé si I%=#40 fonctionne ( # étant le signe pour la notation hexadécimale).
Je rappelle que la rom V3.xx est toujours en construction donc elle n'est pas fonctionnelle mais on peut la tester si on reste raisonnable ...
L'intégration des entiers n'est pas facile car le basic d'origine MICROSOFT n'a pas été prévu pour les manipuler.
Certains choix de mes codages peuvent surprendre ...
Je n'ai pas encore décidé si je code les entiers en complément à deux ou pas.
sinon les entiers vont de -65535 à +65535

Code pour tester la V3.xx : PRENDRE LA DERNIÈRE VERSION DE L’ÉMULATEUR ALICE FOURNIE PAR DANIEL COULOM
10 HIRES
20 PAPER 4
30 INK 6
50 BOX 20,30,20,30,2
70 BOX 2,2,30,10,1

La fonction LINE a été cassée en 3.4x : je regarderai en 2023 si je peux la réparer rapidement.

Dans tous les cas, pour avoir la liste des améliorations 2022, merci de consulter l'entête des sources.

Début 2023, j'ouvrirai un dépôt GITHUB avec toutes les sources. Tous les errements de codage seront visibles ...

Je vous souhaite de bonne fêtes.

Seilebost
Pièces jointes
rom_ALICE32_V3.44_CLEAN_ALL_WIP_V3.zip
(138.44 Kio) Téléchargé 47 fois
rom_ALICE32_V1.00_CLEAN_ALL_WIP_V1.zip
(145 Kio) Téléchargé 45 fois
rom_ALICE32_V2.00_CLEAN_ALL_WIP_V3.zip
(146.82 Kio) Téléchargé 47 fois
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonjour.

Une erreur sur le fichier fourni en V1.0 : voici la bonne version.

Seilebost.
Pièces jointes
rom_ALICE32_V1.00_CLEAN_ALL_WIP_V2.zip
(144.92 Kio) Téléchargé 56 fois
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Dominique »

Bonjour,

Tout d'abord merci et bravo @Seilebost pour ce remarquable travail.

Il m'est très utile pour suivre la partie GR de Alice.

J'ai assemblé le fichier rom_ALICE32_V0.70_CLEAN_ALL_V5.asm.zip
(message du 27 aout 2021 10:55)

Il s'agirait de la dernière mise à jour des sources de la rom originale.

Ma version dasm.exe est du 09/11/2020

Je trouve :

Code : Tout sélectionner

   6522  d58d				   bclinitSLICE
   6523  d58d		       e6 00		      ldab	0,x
   6524  d58f		       36		      psha
   6525  d590		       8d 00		      bsr	createOneSLICE	; FCT : valeurs à stocker par colonne (définition 2 col x 5 lignes)
   6526  d592							; IN  : A=valeur de la colonne gauche
   6527  d592							;	 B=valeur de la colonne droite
   6528  d592							; OUT : A,B modified
Il me semble que la ligne 6525 n'a pas reconnu l'étiquette createOneSLICE

De même, l'assembleur ne reconnait pas tab9345SLICE initSLICE et peut être d'autres.

Aurais-tu le même probleme ?
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonjour.
Je ne rencontre pas le même que toi.
Voici les paramètres et outils de compilation utilisés pour mes développements :
- dasm 2.20.12
- .\dasm .\rom_ALICE32_V0.70_CLEAN_ALL_V5.asm -f3 -o"res.bin" -v2 avec res.bin le fichier rom de 16Ko

==> Dans l'émulateur j'ai $8D 11 et non pas $8D $00

Comme je n'ai pas d'autres informations concernant ton problème, je te conseille d'installer la version 2.20.12 (au moins) et d'utiliser les paramètres indiqués dans l'entête du source (-s"symbol est optionnel).

Seilebost.
Avatar de l’utilisateur
Dominique
Messages : 828
Inscription : 09 mars 2010 13:37
Localisation : Limoges
Contact :

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Dominique »

Bonjour,

C'est bon, problème corrigé. J'ai bien 8d 11

Code : Tout sélectionner

   6522  d58d				   bclinitSLICE
   6523  d58d		       e6 00		      ldab	0,x
   6524  d58f		       36		      psha
   6525  d590		       8d 11		      bsr	createOneSLICE	; FCT : valeurs à stocker par colonne (définition 2 col x 5 lignes)
   6526  d592							; IN  : A=valeur de la colonne gauche
   6527  d592							;	 B=valeur de la colonne droite
   6528  d592							; OUT : A,B modified
   6529  d592		       32		      pula
Donc , juste pour info, ça a marché avec la dernière version :DASM 2.20.14.1

Merci
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonjour à tous,

une nouvelle cuvée : V3.48.

Au programme : des corrections, des optimisations & des évolutions (ajout d'une fonction de traçage de rectangle et d'une fonction de conversion en FLOAT appelée FLOAT)
Les version V3.X sont toujours en développement.
Elles contiennent encore des bugs.

A VENIR :
+ terminer de corriger toutes les régressions suite à la mise en place des entiers
+ ajouter la fonctionnalité d'appel à un sous-programme nommé
+ remettre en place les HOOK
+ remettre en place la table système des appels
+ factoriser le code
+ ajouter du code pour vérifier le domaine des paramètres (type et/ou valeur)

Récapitulatif des corrections & évolutions

V3.45 2023/01/05 : + Correction commande BASIC LINE
V3.46 2023/01/12 : + Correction régression sur les calculs des
entiers et la comparaison
+ Correction régression commande BASIC FOR
+ Correction régression sur l'opération *
+ Correction régression : dans certains cas, la
commande LIST affiche les numéros de lignes avec
un '-' avant (ex: -10 PRINT I)
V3.47 2023/01/16 : + Correction régression sur la multiplication
partie FMULT et sur la partie romPLUS
PRINT SIN(PI/2) donne le bon résultat
+ Harmonisation : FDIV_ACC1_BY_MEM devient FDIV
à l'image de FADD, FSUB, FMULT
+ CONUPK : le code ldab ACC1 a été sorti de la
fonction. Il n'y a pas de lien direct avec sa
fonctionnalité première.
+ LEN retourne dorénavant un entier
+ ASC retourne dorénavant un entier
+ INT traite aussi les entiers en paramètre et
retourne un entier dans ce cas
+ Ajout de la fonction FLOAT : conversion d'un
entier en float
+ Le code FPWRT a été optimisé légèrement afin
d'utiliser les constantes pour n^0 = 1 ou 0^n=0
Il faut passer des float car la gestion des int
comme paramètre n'a pas été effectuée
+ Diverses corrections pour passer le pointeur X
aux fonctions ZEROFAC1 et ZEROFAC2
+ Correction d'une régression lors de la
comparaison (IF A$="TITI" ...)
+ Correction du code de recherche de variable
confondant A et A$
+ Correction régression sur la multiplication ...
suite à une régression sur le type des variables
retourné lors d'une comparaison
V3.48 2023/04/11 : + Nettoyage de certains TODO
+ FOR : déplacement du test de la "numéricité" de
la valeur de départ au plus près de l'action au
de le faire avant le TO
+ Suppression de la constante cK7_TYP_PRG_ASS_SRC
+ Gestion des formats d'un nombre et du type :
NOTE : intervalle des entiers [-65535 65535]
nombre = . => type : float et égal à 0
nombre = 0 => type : entier
nombre = 0. => type : float
nombre = 10000 => type : entier
nombre = 10000. => type : float
nombre = 100000 => type : float car dépassement
de capacité d'un entier
+ Correction d'une régression dans la commande
INPUT dans le cas d'une attente d'une saisie
d'une chaîne de caractère
+ Ajout d'une commande RECT qui dessine ... un
rectangle de couleur c
+ la gestion des float dans FOR ... TO ... est
encore cassée
+ la comparaison ne vérifie pas la comptabilité
des types num. des éléments comparés

seilebost.
Pièces jointes
rom_ALICE32_V3.48_CLEAN_ALL_WIP_V1.zip
(147.01 Kio) Téléchargé 34 fois
Répondre