FORTH sur PC-1500

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

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: FORTH sur PC-1500

Message par cgh »

Autrement, tu peux aussi regarder le code de la tache console de MMPS : CONSOLE TASK (&1059..&12EC). C'est plus complique, mais ca fait bien plus de choses que monmon.

Code : Tout sélectionner

;;      The console TASK handles the following keys:
;;        SELECT        : Select the next console as active*
;;        OFF           : Display while the OFF is pressed the PID of the
;;                        process owning the console, the process name
;;                        and the console name as follow
;;                          P NNNNNNNNN CCCCCCCCC
;;        ON/BREAK      : Send an event KIL to the process owning the
;;                        console, or kill it if the process do not handle
;;                        the event
;;      If an OUTput (II is set) request is pending:
;;        RCL           : Clear the pending output (II is cleared)
;;      If an INput (I is set) request is pending:
;;        left-arrow    : Go back one character
;;        right-arrow   : Go forward one character
;;        shift-DEL     : Go back to begin of the line
;;        shift-INS     : Go forward to end of the line
;;        CL            : Clear from cursor to the end of the line
;;        shift-CA      : Clear all
;;        ENTER         : Terminate the INput request, all characters in
;;                        the line are returned to the calling process
;;        down-arrow    : Terminate the INput request, all characters
;;                        from the begin of the line to the cursor are
;;                        returned to the calling process
;;        up-arrow      : Return end-of-file error (CARRY is cleared and
;;                        D3 is returned in A
;;
;;      Note*   : The 'SELECT' key is the 'double up-down arrow' key on the
;;                left of the RCL key.
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 : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: FORTH sur PC-1500

Message par cgh »

remy a écrit :Je t'ai rajouté les breakpoints
En EXEC, READ WRITE (le R/W c'est pour bientôt).
Je suis aussi en train de développer un analyseur de condition de déclenchement car j'aimerai faire un truc du genre :

Code : Tout sélectionner

WRITE    &4000 - &4100    cond: (A=0x04) | | ( (Xh>0x80) && (Value&0x7f) )
je break si écriture sur la plage d'adresse &4000-&4100 selon la condition sur les registres et la valeur que j'écris....
Je ne sais pas si tu trouve que ça a du sens un tel système.
La version 1202 de PockEmul sous SVN ne compile plus:
cpu.h:117 -> CCPU:showDasm() is protected
Le probleme vient du pcxxxx.cpp en ligne 321:

Code : Tout sélectionner

void CpcXXXX::checkBreakWrite(UINT32 adr,UINT32 d) {
    if (pBreakpointManager->isBreak(Cbreakpoint::WRITE,adr,d)) {
        BreakSubLevel = 99999;
        DasmStep = true;
        DasmFlag = false;
        emit pCPU->showDasm();
    }
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
remy
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2218
Enregistré le : 13 mars 2006 15:39
Localisation : Issy
Contact :

Re: FORTH sur PC-1500

Message par remy »

Je ne comprends pas, je n'ai pas l'erreur chez moi.
PockEmul, Emulateur de pocket Sharp, Canon, Casio, HP, TI, NEC, Panasonic, Sanco, Seiko, General, National, ....
sur Windows, Linux, OS X et Android
Available now on the Google Play Store and the Apple Store
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: FORTH sur PC-1500

Message par cgh »

remy a écrit :Je ne comprends pas, je n'ai pas l'erreur chez moi.
J'ai fait un Rebuild all. Je tente un Clean all puis Build all.
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
remy
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2218
Enregistré le : 13 mars 2006 15:39
Localisation : Issy
Contact :

Re: FORTH sur PC-1500

Message par remy »

Dans le doute j'ai fait une modification. arrête ton build et prends les nouvelles sources. et rebuild all
PockEmul, Emulateur de pocket Sharp, Canon, Casio, HP, TI, NEC, Panasonic, Sanco, Seiko, General, National, ....
sur Windows, Linux, OS X et Android
Available now on the Google Play Store and the Apple Store
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: FORTH sur PC-1500

Message par cgh »

remy a écrit :Dans le doute j'ai fait une modification. arrête ton build et prends les nouvelles sources. et rebuild all
Idem... Desole !
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 : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: FORTH sur PC-1500

Message par cgh »

cgh a écrit :lhasm considere possible de changer l'ORIGIN, TANT QUE RIEN N'A ETE FAIT ! Or declarer un symbole ou desd macros, c'est faire quelque chose, et dans ce cas l'origine par defaut (bon je suis pas d'accord, ce n'est pas genial comme idee mais en attendant...) est validee et revenir en arriere est interdit !!!!
Dans ton cas, je pense que tu devrais reflechir a generer 2 binaires: 1 pour le WORKAREA et un pour le kernel FORTH.
En fait, c'est la fermeture du premier fichier d'include qui "verrouille" le .ORIGIN: . car le .END (specifie ou non) met a jour les pointeurs geres par lhasm. C'est comme cela depuis le debut de lhasm, bien avant la directive .INCLUDE: . Et cela me sert aussi pour les symboles autogeres de debut, fin et longueur: les fameux <nom de include>$$._start $$._end et $$._length.

Il va falloir que je regarde un moyen pour ne pas mettre les pointeurs dans le cas ou le code est vide...
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 : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: FORTH sur PC-1500

Message par cgh »

cgh a écrit :
cgh a écrit :lhasm considere possible de changer l'ORIGIN, TANT QUE RIEN N'A ETE FAIT ! Or declarer un symbole ou desd macros, c'est faire quelque chose, et dans ce cas l'origine par defaut (bon je suis pas d'accord, ce n'est pas genial comme idee mais en attendant...) est validee et revenir en arriere est interdit !!!!
Dans ton cas, je pense que tu devrais reflechir a generer 2 binaires: 1 pour le WORKAREA et un pour le kernel FORTH.
En fait, c'est la fermeture du premier fichier d'include qui "verrouille" le .ORIGIN: . car le .END (specifie ou non) met a jour les pointeurs geres par lhasm. C'est comme cela depuis le debut de lhasm, bien avant la directive .INCLUDE: . Et cela me sert aussi pour les symboles autogeres de debut, fin et longueur: les fameux <nom de include>$$._start $$._end et $$._length.

Il va falloir que je regarde un moyen pour ne pas mettre les pointeurs dans le cas ou le code est vide...
OK. J'ai vu comment faire ! Ce sera pour la 0.4.8 (demain). On pourra specifier l'ORIGIN: tant que aucune instruction n'aura ete assemblee.
Merci phe78 pour m'avoir signale ca... En fait, j'avais jamais vraiment regarde, mais ce que tu m'as decrit ne me plaisait pas.
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
remy
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2218
Enregistré le : 13 mars 2006 15:39
Localisation : Issy
Contact :

Re: FORTH sur PC-1500

Message par remy »

Eh bien je ne comprends alors pas pourquoi chez moi ça marche.
J'ai tous mon code de firmaware avec un .ORIGIN: C000
Mon code, et les include.
Le dernier INCLUDE est la workAREA du FORTH et commence par :

Code : Tout sélectionner

.ORIGIN:	40C5

;-------------------------------------------------
; INIT WORKING AREA
;-------------------------------------------------
PRTFLAG:
	BYTE	00		; print flag
CHARPTR:
	 BYTE	00
DBUFF:
	TEXT "                           "
;-------------------------------------------------
.HOLE
KBUFF:				; Terminal Input Buffer - 128 bytes
.SKIP	0080
;-------------------------------------------------
.HOLE
Eh bien cela me génère correctement le binaire.

EDIT: EH BIEN NON, Je n'ai pas les yeux en face des trous. En effet ça ne marche pas .
PockEmul, Emulateur de pocket Sharp, Canon, Casio, HP, TI, NEC, Panasonic, Sanco, Seiko, General, National, ....
sur Windows, Linux, OS X et Android
Available now on the Google Play Store and the Apple Store
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: FORTH sur PC-1500

Message par cgh »

remy a écrit :Eh bien je ne comprends alors pas pourquoi chez moi ça marche.
J'ai tous mon code de firmaware avec un .ORIGIN: C000
Mon code, et les include.
Le dernier INCLUDE est la workAREA du FORTH et commence par :

Code : Tout sélectionner

.ORIGIN:	40C5

;-------------------------------------------------
; INIT WORKING AREA
;-------------------------------------------------
PRTFLAG:
	BYTE	00		; print flag
CHARPTR:
	 BYTE	00
DBUFF:
	TEXT "                           "
;-------------------------------------------------
.HOLE
KBUFF:				; Terminal Input Buffer - 128 bytes
.SKIP	0080
;-------------------------------------------------
.HOLE
Eh bien cela me génère correctement le binaire.

EDIT: EH BIEN NON, Je n'ai pas les yeux en face des trous. En effet ça ne marche pas .
Que dit lhasm en sortie ?
cgh> ../lhTools-0.4.8/lhasm -D ROM=1 -o b2 MAIN.asm
Written 55269 bytes (00C5:D8AA) to b2 Checksum D584
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
remy
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2218
Enregistré le : 13 mars 2006 15:39
Localisation : Issy
Contact :

Re: FORTH sur PC-1500

Message par remy »

non il générai bien le code mais ma workarea était à la suite d u code e c'est donc pour ça qu'il écrivait en ROM à l'éxécution. :-)
Tout s'explique donc...
PockEmul, Emulateur de pocket Sharp, Canon, Casio, HP, TI, NEC, Panasonic, Sanco, Seiko, General, National, ....
sur Windows, Linux, OS X et Android
Available now on the Google Play Store and the Apple Store
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: FORTH sur PC-1500

Message par cgh »

remy a écrit :non il générai bien le code mais ma workarea était à la suite d u code e c'est donc pour ça qu'il écrivait en ROM à l'éxécution. :-)
Tout s'explique donc...
Cool !

Oui, il faut bien verifier le message de sortie de lhasm (c'est pour cela que je l'ai ajoute...). Je vais d'ailleurs faire une remarque la dessus dans le manuel :geek:
Quand on lance lhasm, par exemple: lhasm -D ROM=1 -o MAIN.bin MAIN.asm
On va obtenir: Written 55269 bytes (00C5:D8AA) to MAIN.bin Checksum D584
Ce qui signifie:
  • 55269 : c'est la taille de l'image ! Donc 1h06 demande pour une lecture du wav via CLOAD M ;-)
  • (00C5:D8AA) : Adresse de base de l'image (celle de telechargement) et adresse de fin (dernier octet + 1): Le code est donc de &00C5 a &D8A9.
  • D584 : Somme de controle simple (ajout de tous les octets de l'adresse de base a l'adresse de fin. Cela correspond a la commande : 00C5 D8AA sous XMON. En cas de crash ou de doute, on peut tres simplement verifier que l'image n'est pas corrompue (hmm enfin presque car la somme simple ne permet de detecter 2 octets inverses...)
@Remy : Un ajout de la somme de controle (cks += mem pour i = [base, end[; cks est une valeur sur 16-bits non signe), ce serait pas mal dans PockEmul :!:

Je pense aussi qu'un warning signifiant que le code est "detecte" en ROM (&8000..&FFFF) pourrait etre a envisager (sauf si un .ROM est specifie dans le code pour dire que l'on veut du code en ROM). Qu'en dites-vous ?

Je vais ajouter les directives .ROM et .RAM specifiant que l'on est en "partition ROM" (&8000..&FFFF) ou en "partition RAM" (&0000..&67FF ou &7FFF). Si on fixe la directive .RAM dans des adresses > &7FFF -> FATAL error ! De meme, si le code .RAM deborde sur la zone .ROM -> FATAL error !
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
remy
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2218
Enregistré le : 13 mars 2006 15:39
Localisation : Issy
Contact :

Re: FORTH sur PC-1500

Message par remy »

Avec les partition ROM et RAM paramétrable.bien sur, je pense que c'est un plus.
PockEmul, Emulateur de pocket Sharp, Canon, Casio, HP, TI, NEC, Panasonic, Sanco, Seiko, General, National, ....
sur Windows, Linux, OS X et Android
Available now on the Google Play Store and the Apple Store
Avatar du membre
Rom1500
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 701
Enregistré le : 29 nov. 2013 16:24
Localisation : Pas très loin de Lyon
Contact :

Re: FORTH sur PC-1500

Message par Rom1500 »

Mais ça sera à modifier pour le PC-1560 qui va tout chambouler.
Une directive .PC1500, .PC1560 etc ?
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
Avatar du membre
phe78
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 721
Enregistré le : 22 avr. 2011 19:08
Localisation : Les Adrets de l'Esterel (Var)

Re: FORTH sur PC-1500

Message par phe78 »

C'est pour ça que j'ai mis deux paramètres ORGRAM et ORGROM separes. On pourra eventuellement rajouter une troisieme zone correpondant a une zone EEPROM pour la sauvegarde du dictionnaire utilisateur.
Répondre

Retourner vers « Tous les Pockets »