MACBAS-2014 Le Retour - Nouveautes et merveilles...

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2288
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par cgh » 17 nov. 2014 21:52

Bonjour, bonjour,

Je me remets au projet 1560 et du coup je deterre mon logiciel MACBAS car je suis en train de "merger" MACBAS95 et MACBAS-3.0.

MACBAS est un macro-assembleur symbolique/desassembleur/debuggueur LM et sourceur integre dans l'environnement BASIC. Tout est accessible directement dans le BASIC, sans besoin d'un programme particulier. On profite ainsi de la puissance de l'editeur, de l'evaluateur d'expressions,... MACBAS etant discretement "enfoui" dans le BASIC.

Il y a eu 3 versions:
  • 1.0 : Premiere mouture, peu optimisee et apportant son debuggueur sous forme d'une commande specifique DBGS.
  • 95 : La version disponible aujourd'hui.
  • 3.0 : La derniere version, malheureusement pas mal bugguee et pas assez testee ni stable pour etre diffusee.
A savoir aussi:
  • Les versions 1.0 et 3.0 utilisent les registres "a la mode SHARP" c'est a dire A F P S X Y U XH YH UH XL YL UL
  • La version 95 utilise les registres "Z80-like" c'est a dire A F PC SP BC DE HL B D H C E L
Personnellement, ma preference va au "mode Z80-like". De plus, c'est compatible avec les lhTools et XMON.

Seulement, MACBAS souffre de plusieurs erreurs d'implementation:
  • Les directives IF et END se superposent avec celles du BASIC.
  • Les mnemoniques AND OR CALL OFF se superposent avec les fonctions/instructions BASIC.
  • Les mnemoniques STA et RET perturbent la recherches des instructions BASIC STATUS et RETURN.
A l'epoque, j'utilisais un artifice. Si l'instruction etait suivi par . (point), c'etait une instruction au lieu d'une autre qui etait encodee. Cela faisait un code IMBITABLE, car le . n'etait plus affiche et donc on ne savait jamais si le AND liste etait celui du BASIC ou de MACBAS !

Bon, a l'origine, c'etait absolument pour la bonne cause: la "chasse a l'octet". MACBAS devant rentrer dans les 8Ko (&00C5-&1FFF) afin de laisser le plus de memoire disponible pour l'utiliser.

A le relecture du code, je me rends compte que le codage de ces artifices prend plus de place que la dizaine de . necessaires.
Oui mais, si on met les . cela est aussi illisible. De plus, certaines mnemoniques ont des . d'autres pas... etc...

Dans le cas des directives et autres pseudo-instructions, MACBAS-1.0 utilisait un truc que je viens de redecouvrir: tout commencait par un !. Par exemple, le programme structure suivant:

Code : Tout sélectionner

    10 !INLINE &2000,&20FF,&2100,&21FF
    20 BIT &80
    30 !IF NZ:LDA 01:!ENDIF
    40 RET
    50 !END
Deviendra sous MACBAS95 ou -3.0

Code : Tout sélectionner

    10 ASSEMBLE &2000,&20FF,&2100,&21FF
    20 BIT &80
    30 IF NZ:LDA 01:ENDIF
    40 RET
    50 END
Le IF de la ligne 30 devra etre introduit par un IF. (avec un point), de meme que le END de la ligne 50 (END.) Mais pour sauvegarder des octets, le . n'est pas ajoute aux instructions.
Ceci est valable pour IF END AND OR OFF et CALL.

Le cas de RET et STA est different. Comme les mots cles de MACBAS sont recherches avant ceux du BASIC, il sera impossible d'entrer RETURN et STATUS, car RET et STA capteront les instructions de MACBAS.
Il existe plusieurs pistes pour ces derniers:
  • RET est forcement suivi par : ou &0D. Il faudrait que la routine de recherche des mots cles capte RET et verifie si : ou &0D suit, et dans ce cas, on aurait RET sinon une instruction comme RETURN. Oui mais que dire d'un RET (suivi de 3 espaces) ?
  • Pour STA, on pourrait ici verifier qu'un T ou un . suit STA et dans ce cas, on utiliserait STATUS. Mais meme probleme: ST A TUS ne sera pas encode en STATUS mais en STA TUS !
Aujourd'hui MACBAS n'apporte pas de fonction HEX$. Les instructions/commandes RENUM, LINK et UNLINK sont supportees: RENUM [ligne][,incr] permet de renumeroter les lignes BASIC, mais ne s'occupe pas des GOTO, GOSUB et THEN. LINK et UNLINK sont a peu pres les memes instructions que MOVE et REMOVE du BASIC1501. Cela permet de realiser un "merge" manuellement.

De meme, MACBAS95 ne possede pas (c'est arrive avec 3.0) d'instruction BKPT qui "assemble" un CALL direct sur le vecteur de break-point du debuggueur LM. C'est tres utile pour le debogage en assembleur. C'est l'equivalent du STOP BASIC.
Enfin, il n'y a pas d'instruction CLA (code &34 = LDA N). Une optimisation tres interessante et tres utilisee, d'autant que MACBAS ne supporte pas le registre non documente MN.

Pourquoi ce fil ?

L'interet de ce fil est de faire participer "tous les interesses" aux choix d'implementations du futur MACBAS. Mon but etant bien sur de le perenniser et de l'inclure dans le projet 1560.
Enfin, c'est aussi sur le choix de certaines fonctionnalites et instructions de MACBAS que je souhaiterais recueillir votre avis.

1/ Registres Z80-like vs SHARP ? Comme explique plus haut, ma preference va aux registres Z80. En plus du mode compatibilite XMON/lhTools, je trouve mieux d'avoir les registres 8-bits sur 1 lettres (A F B C D E H L) et les registres 16-bits sur 2 lettres (PC SP BC DE HL). Par contre, ce n'est pas le cas de PockEmul, ni de PC-MACRO...

2/ Nommage des directives: Je pencherais assez pour la methode MACBAS-1.0, c'est a dire un ! en debut ou en fin.
Cela concerne ASSEMBLE END IF ELSE ENDIF BEGIN WHILE REPEAT UNTIL. Les fonctions THIS et PASS resteraient sans !, de meme que toutes les instructions/fonctions sur les symboles DEFS GETS SYMBOL , ainsi que le sourceur SRCS.

3/ Mnemoniques dupliquees ou capturant les instructions BASIC: CALL AND OR OFF STA RET. Je souhaiterais conserver une certaine "uniformite" dans les nommage.
a) XMON et mon assembleur exigent qu'une mnemonique soit precedee d'un /. On pourrait utiliser le meme principe:

Code : Tout sélectionner

    10 !INLINE &2000,&20FF,&2100,&21FF
    20 /BIT &80
    30 !IF NZ:/LDA 01:!ENDIF
    40 /RET
    50 !END
Cela ne va-t-il pas alourdir le code ? De plus, il y aura 54 / a ajouter au nom des mnemoniques dans la table des instructions... c'est un peu du gachis !

b) Il serait aussi possible d'utiliser les minuscules pour les mnemoniques. Dans ce cas, les conditions et les registres seraient eux aussi en minuscules. Et cela apporte un avantage:
Actuellement, LDA H sera compris par MACBAS comme le chargement du registre CPU H dans l'accumulateur. Mais si H reference la variable BASIC H, il faut donc ecrire LDA 0+H. En effet, l'evaluateur de MACBAS doit savoir quand il s'agit d'un registre CPU ou d'une variable BASIC: il peut s'averer necessaire de prefixer une expression immediate par 0+.
Dans le cas des minuscules, lda h sera bien compris comme le chargement du registre CPU h dans l'accumulateur et lda H lui reference la variable BASIC H.

Code : Tout sélectionner

    10 !INLINE &2000,&20FF,&2100,&21FF
    20 bit &80
    30 !IF nz:lda 01:!ENDIF
    40 ret
    50 !END
4a/ Choix des instructions "autres" que les directives d'assemblage et les mnemoniques:
  • LOW value16 et HIGH value16 (quasi-identiques a LOW et HIGH du BASIC1501)
  • HEX$ value16
  • RENUM [ligne][,incr]
  • LINK et UNLINK
Lesquelles vous paraissent vraiment les plus utiles ? A savoir que LOW et HIGH se remplacent aisement par X AND 256 et X/256 respectivement.

4b/ BKPT et CLA. Utilite ou pas ?

5/ MACBAS n'accepte que certains caracteres pour les symboles: majuscules, chiffres et caracteres compris en &20 .. &40. Pourquoi pas les minuscules ????

Je tiens a preciser que j'aimerais rester au plus proche de l'assembleur XMON et des lhTools. Cela ne fera qu'un style d'assembleur.
Ensuite, il faut vraiment peser une decision en fonction de la taille d'implementation requise. Le but reste de faire rentrer ABSOLUMENT MACBAS20xx dans ses 8Ko initiaux (&00C5 a &1FFF).

Bien sur, si vous avez d'autres idees ou des remarques, suggestions, n'hesitez pas en faire part sur le fil. Tout est bon a prendre pour en discuter :)

Que le PC-1500 soit avec vous !

PS: La nouvelle version de MACBAS sera releogable et donc pourra etre utilisee avec un CE-155 ou un CE-159. Aujourd'hui, le CE-161 (ou CE-163) est obligatoire.

Edit: Modification du titre du fil.
Dernière édition par cgh le 23 nov. 2014 08:10, édité 2 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque

Avatar de l’utilisateur
Rom1500
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 701
Inscription : 29 nov. 2013 17:24
Localisation : Pas très loin de Lyon
Contact :

Re: MACBAS-2014 Le Retour - Votre opinion nous interesse...

Message par Rom1500 » 17 nov. 2014 22:10

Je relis tout ça demain matin quand je serais frais et dispo :D
Là je viens de finir mon routage de module et j'ai les yeux qui croisent.

Quand on développe en assembleur a-t-on vraiment besoin du Basic ?
On pourrait imaginer un OPN "ASM" qui donne la priorité aux mnémoniques assembleur ?
Ah, ça sera plus facile dans le PC-1560, on pourra choisir son langage en EEProm
Toutes les infos : http://www.pc-1500.info
PC-1500+CE-150 : EU PC1500, PC1500A / JP PC1500, PC1500D, PC1501 / HU PTA4000, PTA4000+16 / US TRS80 PC2 / BR PC-1500RP, PC-1500RP2 / CN PC-1500, PC-1500A, Nanfeng PC-1500A
PC-1600 : PC-1600K V2, CE-1600M, CE-1604L, CE-515P, module 32Ko, module 512Ko
Extensions en boite : CE-150/151/152/153/154/155/156/157/158/159/160/161/162E/163 sans boite

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2288
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: MACBAS-2014 Le Retour - Votre opinion nous interesse...

Message par cgh » 17 nov. 2014 22:17

Rom1500 a écrit :Quand on développe en assembleur a-t-on vraiment besoin du Basic ?
On pourrait imaginer un OPN "ASM" qui donne la priorité aux mnémoniques assembleur ?
Oui et non ! Meler les 2 langages peut avoir un interet, par exemple, pour assembler un code LM avant de l'utiliser via un programme BASIC de plus haut niveau. Et puis, il y a un super-editeur dans le BASIC. Sans parler de l'evaluateur. Enfin, avec REGS et EXEC, il est tres facile "d'echanger" des donnees (16-bits) entre le BASIC et un programme LM.

J'avais pousse le delire jusqu'a developper une instruction ASMEXEC "<mnemonique....>" qui assemblait et executait un programme LM "a la volee". C'etait dans une ancienne version de mon ASSEMBLEUR, malheureusement perdu aujourd'hui !

Un jeu comme Invader serait bien plus beau et lisible developpe sous MACBAS. Et en plus, MACBAS supporte la programmation structuree.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque

Avatar de l’utilisateur
badaze
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7462
Inscription : 12 févr. 2007 19:36
Localisation : Pas très loin de Lyon
Contact :

Re: MACBAS-2014 Le Retour - Votre opinion nous interesse...

Message par badaze » 17 nov. 2014 23:40

Vous êtes des malades les gars.
8)
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer :(
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2288
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par cgh » 23 nov. 2014 08:08

Bon, j'y ai passe toute la nuit (depuis le debut de la soiree) et MACBAS2014 commence a etre operationnel :D

Maintenant, il pleinement relogeable et il y aura des images pour CE-151, CE-155, CE-159 et CE-161/3. Il necessite 8Ko et je n'ai plus 5 octets non-utilises ! Ca rentre a la lime, voir a la scie !!!

Par contre, j'ai trouve une belle optimisation: En mergeant une partie des tables du desassembleur et de l'assembleur, j'ai pu gagner de la place et developper la facilite suivante: Comme les mnemoniques et directives sont maintenant en minuscules (ca fait bizarre a l'affichage), les principales sont accessibles au clavier en modes PRO et RESERVE, par un DEF+A..Z space = ()*+-/. 0..9 :geek:

Les registres et les conditions sont aussi en minuscules... Mais je ne sais pas si je vais conserver cela, car maintenant avec les touches DEF, on peut entrer le source en majuscules. Sinon on passe le temps a commuter le mode SML...

J'ai introduit la fonction HEX$ qui renvoit une chaine hexa de la valeur donnee (0..65535). J'ai aussi remis BKPT: tres important quand on debug en LM.

Degats collateraux:
- RENUM n'a plus d'arguments. Il fera donc la renumerotation des lignes de 10 en 10 (sans GOTO, GOSUB et THEN).
- LINK et UNLINK ont ete supprimes.
- Nouvelle version 0.7.1 des lhTools.

Il reste encore a stabiliser le debugger lors d'une entree par BKPT, commenter le source (le faire bien beau) et rediger une documentation digne de ce nom en lieu d'un simple README.

Tchoooo, j'vais au dodo ;-)
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque

Avatar de l’utilisateur
Rom1500
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 701
Inscription : 29 nov. 2013 17:24
Localisation : Pas très loin de Lyon
Contact :

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par Rom1500 » 23 nov. 2014 11:03

Hé ben c'est du beau boulot !!!
Et quand ça rentre à 5 octets prêt c'est du vrai vintage !
J'ai hâte de tester ça. :D

Ca y est t'es réveillé ? :lol:
Toutes les infos : http://www.pc-1500.info
PC-1500+CE-150 : EU PC1500, PC1500A / JP PC1500, PC1500D, PC1501 / HU PTA4000, PTA4000+16 / US TRS80 PC2 / BR PC-1500RP, PC-1500RP2 / CN PC-1500, PC-1500A, Nanfeng PC-1500A
PC-1600 : PC-1600K V2, CE-1600M, CE-1604L, CE-515P, module 32Ko, module 512Ko
Extensions en boite : CE-150/151/152/153/154/155/156/157/158/159/160/161/162E/163 sans boite

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2288
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par cgh » 24 nov. 2014 23:06

cgh a écrit :Degats collateraux:
- RENUM n'a plus d'arguments. Il fera donc la renumerotation des lignes de 10 en 10 (sans GOTO, GOSUB et THEN).
RENUM a ete supprime... pour la bonne cause. Comme c'est tres penible de commuter entre minuscules (MACBAS) et majuscules BASIC, la routine de recherche va chercher en minuscules et tout ce qu'elle ne trouve pas est remis en majuscules. Et cela permet de tout entrer en minuscules. Seul REM <....> et les chaines de caracteres sont conservees.

Par exemple, le code

Code : Tout sélectionner

10 sta(hl):lda &0a: pr.
sera transforme en

Code : Tout sélectionner

10 sta (HL):lda &0A:PRINT
Seules les fonctions/instructions "majuscules" de MACBAS ne peuvent pas etre entrees en minuscules.

Code : Tout sélectionner

pri.hex$this
sera

Code : Tout sélectionner

PRINT HEX$THIS
Il sera donc necessaire de faire une nouvelle fois ENTER sur la ligne pour obtenir

Code : Tout sélectionner

PRINT HEX$ THIS
Bon... j'vais jouer avec mon PB-100 !
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque

Avatar de l’utilisateur
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3397
Inscription : 06 sept. 2011 14:57
Localisation : Normandie

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par Hobiecat » 25 nov. 2014 21:19

Toujours impressionnant ! Bravo cgh !

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2288
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par cgh » 29 nov. 2014 00:10

Eh bien, MACBAS2014 marche bien ! J'en suis a optimiser de partout... Car comme j'avais des octets libres, j'ai eu de nouvelles idees qui m'ont pris plus d'octets que j'en avais de libres, donc j'ai fait plus d'optimisation et de place, du coups j'ai eu des octets et en meme temps une nouvelle idee qui a demande plus d'octets que j'en avais de libres, j'ai donc refait de l'optimisation et de la place et du coup j'ai eu encore des octets libres et une idee sympa qui a demande plus d'octets que j'en avais de libre alors j'ai encore essaye de faire de la place, par chance, j'ai gagne quelques octets et du coup j'ai pu coder mon idee qui ne me laisse qu'un octet de libre... 8) mais je n'ai plus d'idee !!!!

Voila quelques trucs que j'ai rajoutes:
  • Les symboles de 1 caractere ou commencant par un espace seront ignores, cela permettra de definir des labels BASIC sans encombrer les symboles de MACBAS. En plus un octet, ca correspond aux labels accessibles par DEF+<lettre>. Et aussi a indenter le code avec la programmation structuree.
  • J'ai resolu le probleme des instructions MAJUSCULES de MACBAS entrees en minuscules: j'appelle 2 fois la routine de recherche du clavier. Ce n'est pas tres beau mais ce que j'ai trouve de plus court: 3 octets !
    Donc

    Code : Tout sélectionner

    pri.hex$this
    deviendra bien

    Code : Tout sélectionner

    PRINT HEX$ THIS
  • L'instruction SYMBOL est devenue SMBL (2 octets) qui m'ont permis une petite optim dans un coin.
Cerise sur le gateau: comme MACBAS2014 accepte les registres/conditions en MAJUSCULES et en minuscules, c'est compatible avec MACBAS95.
Quand a RENUM, LINK et UNLINK, je les fournis en tant que source assembleur (1 programme BASIC en fait) a assembler sous MACBAS2014. On pourra ainsi appeller RENUM par un EXEC #"RENUM". La syntaxe EXEC #<symbole> appelle la routine a l'adresse du <symbole> et si un ; suit, la routine pourra elle-meme evaluer ses arguments: on pourra donc avoir

Code : Tout sélectionner

EXEC #"RENUM;100,5
qui fera un RENUM avec une premiere ligne de numero 100 et un increment de 5 !
Dernière édition par cgh le 29 nov. 2014 01:06, édité 1 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2288
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par cgh » 29 nov. 2014 00:58

Allez ! Pour vous mettre l'eau a la bouche... :slime:

En premiere mondiale et sous vos applaudissements, le RENUM sous MACBAS2014

Code : Tout sélectionner

 100 asm &4000,&40FF,&4100,&41FF
 110 IF PASS=1LET N=THIS+100:R=N:E=N:S=N
 120 defs "RENUM":sbr &C8,N
 130 sbr &C6
 140 ld h,00:ld l,10:lda l:jr R
 150 N=THIS:sbr &C6
 160 sbr &DE,E:sbr &D0,&3,E:push hl
 170 sbr &C2,ASC",",S
 180 sbr &DE,E:sbr &D0,&9,E:pop hl
 190 R=THIS:push de:sta e:sbr &CC,&69
 200 begin
 210 "  "lda (bc):inc a
 220 while nz
 230 "  "lda h:sti (bc):lda l:sti (bc)
 240 "  "ldi (bc):add bc
 250 "  "lda e:add hl
 260 repeat
 270 pop de:sbr &E2
 280 E=THIS:sbr &E0:S=THIS:sbr &E4
 290 end
Pour assembler, il suffit de faire RUN :geek:
Pour lancer RENUM de premiere ligne 10 et increment de 10 (defaut), faire EXEC #"RENUM"
Pour lancer RENUM de premiere ligne 1000 et increment de 5, faire EXEC #"RENUM";1000,5
Bien sur, les arguments incorrects seront rejetes:
-> EXEC #"RENUM";100000,5 produira une ERROR 19 (1000000 > 65529)
-> EXEC #"RENUM";1000,"A" produira une ERROR 17 ("A" n'est pas un nombre)
Dernière édition par cgh le 29 nov. 2014 01:01, édité 1 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2288
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par cgh » 29 nov. 2014 01:00

Et ceux qui sont amateurs d'emotions fortes pourront debugger RENUM en pas-a-pas sans quitter le BASIC ! Le debugger LM etant
embarque dans le pilote du clavier... :ugeek:
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque

Avatar de l’utilisateur
Rom1500
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 701
Inscription : 29 nov. 2013 17:24
Localisation : Pas très loin de Lyon
Contact :

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par Rom1500 » 29 nov. 2014 08:25

Excellent ! C'est super lisible. On va se régaler à développer avec ton outil.
1h du mat'… fais la grasse mat' !
Toutes les infos : http://www.pc-1500.info
PC-1500+CE-150 : EU PC1500, PC1500A / JP PC1500, PC1500D, PC1501 / HU PTA4000, PTA4000+16 / US TRS80 PC2 / BR PC-1500RP, PC-1500RP2 / CN PC-1500, PC-1500A, Nanfeng PC-1500A
PC-1600 : PC-1600K V2, CE-1600M, CE-1604L, CE-515P, module 32Ko, module 512Ko
Extensions en boite : CE-150/151/152/153/154/155/156/157/158/159/160/161/162E/163 sans boite

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2288
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par cgh » 29 nov. 2014 09:54

Hmmm... Bon, j'hesite entre 2 dispositions du clavier. MACBAS2014 offre n effet une "astuce": quand on est en mode PRO ou RESERVE, un DEF+lettre chiffre ()+-*/.= encode directement une instruction dans le buffer d'entree. Cela permet de rentrer le source LM en mode majuscules. Ci-dessous les 2 dispositions possibles:
1ere disposition: plus proche de celle de XMON (que je n'utilise jamais...)

Code : Tout sélectionner

 ldd  ldi  lda  ld   adc  sbc  and  or   xor  bit byte word text  sr
  Q    W    E    R    T    Y    U    I    O    P    7    8    9    /
  std  sti  sta  cp   cpi  cpa  jp   jr   djc      if  else endif sl
   A    S    D    F    G    H    J    K    L        4    5    6    *
   inc  dec  add call  sbr push  pop  scf  rcf   begin whilerepeatrr
    Z    X    C    V    B    N    M    (    )       1    2    3    -
                    ret                          until  swp defs  rl
                   SPACE                            0    .    =    +
et la 2eme qui me parait "mieux" representer les differents jeux d'instructions.

Code : Tout sélectionner

byte word text  if else endif beginwhilerepeatuntil cp  cpi  cpa  djc
  Q    W    E    R    T    Y    U    I    O    P    7    8    9    /
  adc  sbc  add  and  or   xor  bit  inc  dec      std  sti  sta  jr
   A    S    D    F    G    H    J    K    L        4    5    6    *
   swp  sr   sl   rr   rl   scf  rcf push  pop     ldd  ldi  lda  jp
    Z    X    C    V    B    N    M    (    )       1    2    3    -
                    defs                           ld   ret call  sbr
                   SPACE                            0    .    =    +
De votre cote, un avis ? une preference ?
Note: les autres touches <select> RCL fleches MODE CL et OFF sont deja utilisees par le pilote clavier et le debuggueur LM comme suit:

Code : Tout sélectionner

Dans tous les modes (RUN PRO et RESERVE) les extensions suivantes sont disponibles:
DEF OFF     - Calcule la somme de controle de MACBAS et provoque un RESET si le code est corrompu
DEF CL      - Efface depuis le curseur jusqu'a la fin de la ligne
DEF MODE    - Se deplace de : en : (instruction en instruction). Pratique pour les longues lignes.
DEF fleche-gauche - Va en debut de ligne
DEF fleche-droite - Va en fin de ligne
SHIFT INS   - Active/desactive le mode insertion automatique.

Le clavier avec le moniteur LM active en mode PRO
DEF fleche-haut - Lit le symbole/l'adresse depuis le buffer d'entree (comme AREAD) et desassemble a partir de l'adresse donnee 
DEF fleche-bas  - Desassemble a partir de l'adresse de start de l'assembleur ou de la derniere adresse visitee
fleche-haut     - 1 instruction, 8 octets ou 16 caracteres en arriere
fleche-bas      - 1 instruction, 8 octets ou 16 caracteres en avanr
fleche-gauche   - 1 octet en arriere
fleche-droite   - 1 octet en avant
DEF RCL         - Affiche les registres generaux: PPPP:BBCC DDEE HHLL AA FF
SHIFT RCL       - Affiche les registres d'etat PPPP:SSSS aaaaaaaa hvzic
                  avec aaaaaaaaa la representation binaire de A
                  et hvzic les drapeaux de F (MAJUSCULE si leve, minuscule si baisse)

Si le desassembleur est actif (apres DEF fleche-haut ou DEF fleche-bas)
DEF MODE     - Commute entre les mode affichage instruction ou texte
SHIFT MODE	- Commute entre les mode affichage instruction ou octet-hexa

Enfin en mode RUN, si le debuggueur LM est active par EXEC TRON ou une instruction bkp:
fleche-haut     - Affiche l'instruction courante
fleche-bas      - Execute l'instruction courante (pas-a-pas)
DEF fleche-haut - Affiche le contenu de la pile PPPP->xx yy ...()
DEF fleche-bas  - Execute un CALL comme instruction unique
DEF select	   - Execute jusqu'a une instruction RET en mode lent mais avec BREAK est actif
SHIFT select    - Continue l'execution en mode lent mais avec BREAK est actif
SHIFT CA        - Sort du debuggueur
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2288
Inscription : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par cgh » 29 nov. 2014 10:56

Ah ! Je viens de redecouvrir des trucs rigolos:
  • L'assembleur connait la pseudo-instruction ld R,mn ou R est un des registres BC DE ou HL. Et le plus drole, c'est que le desassembleur recompose la pseudo instruction...

    Code : Tout sélectionner

    10 ld HL,&8899
    sera assemble en

    Code : Tout sélectionner

    LD L,&99
    LD H,&88
    Mais le desassembleur affichera ld hl,&8899 8)
  • Et comme apres lui, lhasm, l'assembleur sait assembler aussi des jr <=,d et jr >,d.

    Code : Tout sélectionner

    20 jr <=,"leq"
    sera assemble en

    Code : Tout sélectionner

    jr z,"leq"
    jr nc,"leq"
Comme quoi, faire une documentation, cela peut servir :geek:

MACBAS2014 passe en "-rc". Si des amateurs veulent tester "avant l'heure" et me faire des retours/remarques/critiques/suggestions... n'hesitez pas a vous manifester :)
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque

Avatar de l’utilisateur
badaze
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7462
Inscription : 12 févr. 2007 19:36
Localisation : Pas très loin de Lyon
Contact :

Re: MACBAS-2014 Le Retour - Nouveautes et merveilles...

Message par badaze » 29 nov. 2014 11:55

Ce que tu fais me troue littéralement. Si je n'avais pas plein de projets info persos en cours je me jetterais dessus.
Encore bravo.
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer :(
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.

Répondre

Revenir vers « Tous les Pockets »