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

Avatar de l’utilisateur
Leraptor06
Messages : 691
Inscription : 15 févr. 2022 10:34
Localisation : Mandelieu

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Leraptor06 »

Merci de ce travail impressionnant.
Jp
Dmanu78
Messages : 270
Inscription : 20 juin 2020 14:28
Localisation : Yvelines

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Dmanu78 »

Je ne connais pas du tout l’Alice mais bravo pour ce gros travail au profit de la communauté. C’est impressionnant. Comme quoi, si les ingénieurs à l’époque s’étaient donnés la peine de mieux optimiser leurs ROMs, la machine aurait pu avoir un tout autre destin.
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonjour,

Une petite fournée ... d'évolutions et de corrections.

Je rappelle que la version 3.xx sont expérimentales.
L'ajout des commandes LINPTR,DTPTR$,NTLINPTR doit permettre d'accéder le plus rapidement aux lignes contenant la commande DATA.
En préchargeant dans une variable les pointeurs de ligne cela doit permettre d'accéder plus rapidement aux données.
cela peut être utile pour la définition des sprites.
On peut jouer facilement avec ces 3 commandes.
l'ajout de la commande PROC permet de définir des procédures.
La version 3.51 gère que les procédures sans passage de paramètres.
Les prochaines versions géreront ceux-ci/

V3.49 2023/05/02 : + FOR ... TO ... STEP fonctionne de nouveau avec
des entiers et des float
+ HIRES : la conjonction de HIRES puis CLS puis
une fonction graphique conduisait à produire
des artefacts de pixel : corrigé
+ Rationalisation/Optimisation du code
+ Correction commentaire associée à FNDLIN
+ Correction RESTORE : test erroné sur le retour
de FNDLIN
+ Ajout des fonctions LINPTR,DTPTR$,NTLINPTR :
ces fonctions permettent entre autre de
manipuler des pointeurs sur des lignes contenant
des strings suivant le mot clé DATA
A la clé, temps d'accès aux constantes + rapide
+ HEX$ : conversion d'un word en hexa
V3.50 2023/06/06 : + Ajout de la commande LABEL : définition d'une
ligne avec un nom. A utiliser avec GOTO/GOSUB
V3.51 2023/06/14 : + Ajout des commandes PROC/ENDPROC : définition
d'une procédure & modification de FN pour
prendre en compte la définition d'une procédure
Pièces jointes
rom_ALICE32_V3.51_CLEAN_ALL_WIP_V2.asm.zip
(142.39 Kio) Téléchargé 32 fois
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonjour,

une nouvelle fournée :
; V3.52 2023/06/29 : + Ajout des fonctions HPOS & VPOS
; V3.53 2023/06/29 : + Implémentation du log base 10 nommé LOG
; L'ancienne commande LOG est renommée LN
; (LOG NEPERIEN)

la future version V3.54 permettra d'ajouter la prise en compte des paramètres lors des appels de procédure.

Seilebost
Pièces jointes
rom_ALICE32_V3.53_CLEAN_ALL_WIP_V1.asm.zip
(142.9 Kio) Téléchargé 36 fois
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonsoir,

Nouvelle évolution :
; V3.54 2023/07/03 : PROC : suppression des parenthèses autour des
; arguments passage possible de paramètre
; Les arguments sont évalués au moment de l'
; exécution de la commande PROC et non pas à
; l'appel. De plus, les noms des arguments sont
; globaux au programme et non pas locaux aux
; procédures.
; La V3.55 rendra locale les arguments. Cela
; necessitera des modifications de PTRGET
; READ : modification du code afin d'interpréter
; des variables en plus des constantes numériques
; et alphanumériques. Impact lié à la mise en
; place de PROC
; Effet de bord : 10 INPUT "CHOIX";A autorise la
; saisie d'une chaîne. Si l'utilisateur tape T
; la commande restitue la valeur de la variable T
; au moment de l'exécution
; La V3.55 corrigera les effets de bord liés aux
; modifications de READ

Je fournis un exemple d'utilisation de PROC sous forme d'un fichier .k7 à utiliser avec l'émulateur DCALICE.
Il faudra lier ce fichier à l'émulateur puis de taper CLOAD "TEST354" puis RUN

; Exemple d'utilisation de PROC
1 CLS
5 J%=10
10 DATA J%,10,"TITI"
20 DATA 15,15,"TOTO"
30 FOR I=1 TO 2
40 READ A%,B%,A$
50 PROC AFFICHE A%,B%,A$
60 NEXT
65 END
70 DEF PROC AFFICHE X%,Y%,CH$
80 PRINT AT X%,Y% CH$
90 ENDPROC

la 3.55 permettra de rendre les arguments locaux à la procédure.
Il a été étonnamment simple d'ajouter la fonctionnalité "PROCEDURE".

Le rythme de publication des versions a été accéléré suite à du temps libre qui ne va pas malheureusement duré ...

Seilebost.
Pièces jointes
V354.zip
(309 octets) Téléchargé 37 fois
rom_ALICE32_V3.54_CLEAN_ALL_WIP_V2.zip
(152.91 Kio) Téléchargé 36 fois
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonsoir,

un message pour indiquer que les arguments d'une procédure sont locaux à la procédure et que je viens d'acquérir un ALICE 32 via LEBONCOIN.
Il fonctionne à merveille. Je vais pouvoir griller une eprom et tester la nouvelle rom :-).

Seilebost
Avatar de l’utilisateur
Patrice
Messages : 1562
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Patrice »

Bonjour,

Contant pour toi, tester sur la machine réelle sans les approximations quasi-obligatoires incluses dans un émulateur, permet d'éviter les fausses routes! 8)
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonsoir,

Une nouvelle fournée :

V3.55 2023/07/05 :
+ PROC : les paramètres sont locaux à la procédure
ATTENTION : premiere version instable
+ CLEAR : revue du commentaire
+ La variable FREESPC devient FRESPC
+ La variable STREND devient ARYEND
+ La variable DATAFLG devient DATFLG
+ La variable ADRENDMEM devient TOPRAM
+ La variable EOLPNTR devient EOLPTR
+ La variable INPUTFLG devient INPFLG
+ La variable CPRMASK devient CPRMSK
+ La variable SAVREGS devient REGSAV
+ La variable SUBFLG devient ARYDIS
+ Ajout du flag GRBFLG pour la partie garbage
+ addXtoTMPPTR devient addDtoX
+ La variable flgTYPINC devient INCFLG
+ la variable LINUM devient LINNUM
+ Création d'un pointeur temporaire SV1PTR
+ BLTU : correction du commentaire
+ Mises à jour diverses des commentaires
+ VARPTR retourne un entier et non pas un float !
+ MEM retourne un entier et non pas un float !
+ LEN : correction pour traiter correctement les valeurs retournées de type word

1ere version pour rendre les arguments locaux.
exemple de code pour montrer l'utilisation de la localité des arguments : affiche 12 puis 5
Attention : le code développé est instable et cela ne fonctionne que pour un seul argument.
1 CLS
5 I%=5
10 PROC TITI 12
15 PRINT I%
20 END
30 DEF PROC TITI I%
35 PRINT I%
40 END PROC

Suite à un bug très irritant car aléatoire (la résolution était simple : la valeur d'une constante a été codée en hexadécimale au lieu de décimale), la mise au point de la V3.55 a été longue.

La version 3.55 est une version inutilisable mais elle a le mérite de montrer que cela fonctionne. J'en ai profité pour mettre en place certaines choses pour améliorer les accès aux procédures. Actuellement, la basic recherche la procédure à exécuter depuis le début du programme. De même, un embryon de code pour la commande LOCAL pour créer des variables locales à la procédure a été implémenté.

La suite d'ici fin 2023 :

La prochaine version 3.56 devrait finaliser la mise en place de la localité des procédures pour n arguments.

La version suivante 3.57 sera une version de nettoyage de commentaire (il y a pas mal de commentaires avec le tag TODO).

La version suivante 3.58 sera une version de stabilisation du code développé : vérification des paramètres pour LINE, etc.

La version suivante 3.59 sera une version de développement pour la commande LOCAL.

A partir de 2024 :

je basculerai sur des projets hardware concernant ALICE et ORIC.

Si vous avez des demandes spécifiques au BASIC, n’hésitez pas !

Seilebost.
Pièces jointes
rom_ALICE32_V3.55_CLEAN_ALL_WIP_V5.zip
(158.59 Kio) Téléchargé 27 fois
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonsoir,

la version 3.56 :
1 - Corrections mineures
2 - Stabilisation de la commande PROC
Maintenant, le nom de la procédure est entouré de guillemet et les arguments sont séparés par des virgules.
Les arguments sont locaux aux procédures.

exemple :
10 PROC "TITI",5
20 END
30 DEFPROC "TITI",A%
40 PRINT A%
50 ENDPROC

La suite :
1 - La 3.57 sera un version de nettoyage de code (variables superflues, traitement des TODO)
2 - La 3.58 sera une version de stabilisation du code déjà développé
3 - La 3.59 sera une version de poursuite de développement :
a - Création de variables locales via la commande LOCAL
b - Passage en double token pour certaines commandes façon COMMODORE 64 car ils ne restent plus beaucoup de place dans les numéro de token.
c - Pour gagner encore un numéro de token, les commandes END et END PROC sont fusionnées.

seilebost
Pièces jointes
rom_ALICE32_V3.56_CLEAN_ALL_WIP_V5.zip
(161.2 Kio) Téléchargé 21 fois
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonsoir,

une version 3.57 de, revue de certains TODO et certains commentaires.

la 3.58 est en cours qui va permettre de stabiliser le code :
Déjà fait : correction de la détection de l'overflow pour les entiers négatifs
En cours ; correction de la régression sur la commande INPUT
A venir : ajout des tests sur les valeurs minimales & maximales pour les paramètres des fonctions graphiques.

Seilebost.
Pièces jointes
rom_ALICE32_V3.57_CLEAN_ALL_WIP_V1.zip
(161.49 Kio) Téléchargé 23 fois
Avatar de l’utilisateur
Patrice
Messages : 1562
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Patrice »

Bonjour,
Merci pour cette nouvelle mise à disposition. Dans tes recommandations présentent en début du fichier .ASM, tu précises que la version de l'émulateur
à utiliser doit être postérieure à la version Dcalice_20220401, mais c'est, à priori, la dernière version disponible sur le site de Daniel! :o
Daniel
Messages : 17426
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Daniel »

Il y a une version plus récente, mais elle n'a pas encore été diffusée officiellement car elle est insuffisamment testée. Vous pouvez l'essayer.
dcalice_20230831.zip
(137.47 Kio) Téléchargé 28 fois
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Patrice
Messages : 1562
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Patrice »

Merci Daniel pour ce nouveau partage, je vais également pouvoir tester! :wink: 8) :D

[EDIT]: Super, avec une grosse surprise option cartouche ROM disponible! :D :D :D 8)
Seilebost
Messages : 42
Inscription : 27 juil. 2015 23:24

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonsoir,

Pour dissiper le malentendu, il faut utiliser les versions à partir de celle datée du 01/04/2022.
Jusqu'à maintenant, il y en avait qu'une. :-)

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

Re: ROM Alice 32 : Désassemblage et commentaires

Message par Seilebost »

Bonjour,

Une nouvelle fournée contenant deux fichiers :
1 - la V3.58 : essentiellement de l'amélioration de code (correction de bugs, contrôle des paramètres) et développement du code pour PLOTB, PLOTQ spécifique mode Bichrome et Quadrichrome.
2 - la V3.59 : le code de ENDPROC a été intégré dans la commande PROC.
une nouvelle commande LOCAL a été ajoutée pour créer des variables locales dans les procédures.

Une nouvelle version V3.60 est en cours pour permettre de coder certaines commandes BASIC sur deux token afin de libérer de la place dans les numéros de token. La routine CRUNCH a été réécrite en supprimant l'utilisation du pointeur S. Le code n'a plus besoin d'ignorer les interruptions.
Un défi a été donc relevé car il n'y a qu'un seul registre d'index. La perte de vitesse introduite par le nouveau code est acceptable car la routine est utilisée uniquement pour coder les instructions tapées au clavier.

J'espère que la 3.60 sortira avant la fin de l'année.

Seilebost
Pièces jointes
rom_ALICE32_V3.59_CLEAN_ALL_WIP_V2.zip
(166 Kio) Téléchargé 18 fois
rom_ALICE32_V3.58_CLEAN_ALL_WIP_V3.zip
(165.25 Kio) Téléchargé 16 fois
Répondre