π
<-

Jade - un projet de Xeda...

Assembleur, Axe, C/C++, ICE...

Jade - un projet de Xeda...

Messagede Lionel Debroux » 11 Mar 2013, 18:03

Xeda, qu'on ne présente plus, travaille actuellement, en plus de tous ses autres projets, sur "Jade" :)

Jade (dont la deuxième version est ici décrite) est une plate-forme simulée de sa création, qui n'existe pas dans le monde réel, dont le simulateur pour la famille 83+/84+ s'occupe d'un CPU et quelques ports matériels. Jade fournit 256 octets de RAM et 512 octets de code (ROM).
Contrairement à la plupart des CPUs, Jade n'a pas de vrais registres processeur: ils sont mappés en RAM. Les 53 premiers octets de la RAM contiennent les registres (SP, PC, etc.) et les ports; les 128 derniers octets sont alloués à une pile, mais il n'y a pas de danger à utiliser une partie de cet espace comme mémoire de stockage si on n'utilise pas l'intégralité des 128 octets de la pile.

Liste des ports matériels:
* 8 jeux de 5 ports qui contrôlent les sprites: pointeur vers le sprite, coordonnées, méthode de dessin;
* 7 ports pour les pressions de touches;
* 1 port pour sélectionner la liste des sprites qui sont dessinés;
* 1 port pour lire la liste des sprites qui ont été dessinés;
* 1 port pour sélectionner la liste des touches scannées par le simulateur;
* 1 port pour quitter Jade ou activer la mise à jour de l'écran;
* 1 pointeur de pile (SP);
* 1 compteur de programme (PC), utilisant 2 octets.

Le jeu d'instructions est inspiré d'un sous-ensemble du jeu Z80, toutes les instructions peuvent être optionnellement exécutées si les flags C et Z du processeur sont à 1:
Code: Tout sélectionner
   0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
0   lda()   adda()   adca()   suba()   sbca()   xora()   ora()   anda()   cpa()   inc()   rotl()   shftl()   pusha()   pop()   inv()   ldira()
1   ldc()   addc()   adcc()   subc()   sbcc()   xorc()   orc()   andc()   cpc()   dec()   rotr()   shftr()   pushc()   ex()   bits()   ldirc()
2   ret()   setz()   setc()   togz()   togc()   jp1()   jp2()   jrf()   jrb()   call1()   call2()   callf()   callb()
3
;Duplicate for execution on the c flag condition
4x,5x,6x,7x
;Duplicate for execution on the z flag condition
8x,9x,Ax,Bx
;<not implemented>
Cx,Dx,Ex,Fx


lda() charge un octet d'une adresse vers une autre.
ldc() stocke une valeur constante à une adresse.
jp1(), jp2(), call1(), and call2() permettent des sauts et appels relatifs et absolus.

L'état actuel du code est tout à fait utilisable, bien que Xeda indique que la documentation est faible:
Image
Téléchargement première version de Jade v2: http://www.omnimaga.org/index.php?actio ... tach=14836
Plus d'infos sur la programmation en Jade (fichier Jade.inc + code source du programme exemple): http://www.omnimaga.org/index.php?topic ... #msg287207

Source: http://www.omnimaga.org/index.php?topic=15832.0 / http://www.cemetech.net/forum/viewtopic.php?t=8895
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.4%
 
Messages: 6875
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Jade - un projet de Xeda...

Messagede Xeda E. » 11 Mar 2013, 22:57

Merci beaucoup, Lionel Debroux! J'ai trouvé deux bugs, mais je leur ai fixés, et aussi, j'ai commencé le jeu Pong.
JadePongEx0.gif

Et le code:
Code: Tout sélectionner
#include     "ti83plus.inc"
#include     "Jade.inc"
.org 0
scratchmath  equ  252
scratchmath1 equ  253
ballxinc     equ  254
ballyinc     equ  255

Start:
     ldirc(sLSB0,25)
       .dw $100+ball \ .db 3,3,2  ;load the sprite data for Sprite0. The 2 is for XOR logic.
       .dw $100+paddle \ .db 0,24,2  ;load the sprite data for Sprite0. The 2 is for XOR logic.
       .dw $100+paddle \ .db 0,32,2  ;load the sprite data for Sprite0. The 2 is for XOR logic.
       .dw $100+paddle \ .db 94,24,2  ;load the sprite data for Sprite0. The 2 is for XOR logic.
       .dw $100+paddle \ .db 94,32,2  ;load the sprite data for Sprite0. The 2 is for XOR logic.
     ldirc(keyMask,2)
       .db %00010110,31              ;the second byte is for sMask (the sprite mask)
     ldc(ballxinc,1)
     ldc(ballyinc,1)
Loop:
     orc(status,2)      ;tell the status port to draw the sprites
     orc(status,3)      ;tell the status port to update the LCD, then draw the sprites
KeyLoop:
     bits(key1,40h)     ;check for the Clear key being pressed
     orcz(status,80h)   ;sets bit 7 of the status port if the z flag is set. This turns off Jade.
     bits(key2,2)       ;check if player 2 down key is being pressed
     togz()
     jrfz(TestP2Up)
     cpc(sY3,48)
     jrfz(TestP2Up)
     addc(sY3,2)
     addc(sY4,2)
TestP2Up:
     bits(key2,8)       ;check if player 2 down key is being pressed
     togz()
     jrfz(TestP1Down)
     cpc(sY3,0)
     jrfz(TestP1Down)
     subc(sY3,2)
     subc(sY4,2)
TestP1Down:
     bits(key4,2)       ;check if player 2 down key is being pressed
     togz()
     jrfz(TestP1Up)
     cpc(sY1,48)
     jrfz(TestP1Up)
     addc(sY1,2)
     addc(sY2,2)
TestP1Up:
     bits(key4,8)       ;check if player 2 down key is being pressed
     togz()
     jrfz(MoveBall)
     cpc(sY1,0)
     jrfz(MoveBall)
     subc(sY1,2)
     subc(sY2,2)
MoveBall:
     adda(sX0,ballxinc)
     callfz(TestP1Collision)
     cpc(sX0,89)
     callfz(TestP2Collision)
     adda(sY0,ballyinc)
     jrfz(NegYinc)
     cpc(sY0,60)
     togz()
     jrbz(Loop)
NegYinc:
     inv(ballyinc)
     inc(ballyinc)
     jrb(loop)

TestP1Collision:
     lda(scratchmath,sY1)
     jrf(CheckBounds)
TestP2Collision:
     lda(scratchmath,sY3)
CheckBounds:
     lda(scratchmath1,scratchmath)
     subc(scratchmath,3)
     ldcc(scratchmath,0)
     suba(scratchmath,sY0)
     jrfc(CheckOtherBound)
LoseCode:
     ldc(status,80h)
CheckOtherBound:
     addc(scratchmath1,15)
     suba(scratchmath1,sY0)
     jrbc(LoseCode)
NegXinc:
     inv(ballxinc)
     inc(ballxinc)     
     ret()
     
ball:
     .db 18h
     .db 24h
     .db 24h
     .db 18h
     .db 0,0,0,0
paddle:
     .db $C0
     .db $C0
     .db $C0
     .db $C0
     .db $C0
     .db $C0
     .db $C0
     .db $C0

C'est 200 octets :) Les "ROMs" peuvent rester dans archive, aussi.


Je devrai écrire la documentation pour Jade .__.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Je suis désolé pour ma grammaire ^^ Je suis une américaine >.>
Avatar de l’utilisateur
Xeda E.
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 71.9%
 
Messages: 17
Inscription: 03 Sep 2011, 05:19
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
GitHub: Zeda

Re: Jade - un projet de Xeda...

Messagede Lionel Debroux » 13 Mar 2013, 20:02

L'écriture de la doc est en cours.

Jade peut être utilisé pour faire des tilemaps:
Image

Code: Tout sélectionner
spriteX = stackbase-1
spriteY = stackbase-2
tilenum = stackbase-3
.org 0
     ldc(keyMask,255)
     ldirc(160,96)
;tilemap data
;drawn by column
     .db 1,1,1,1,1,1,1,1
     .db 1,0,2,2,2,2,0,1
     .db 1,0,0,2,2,0,0,1
     .db 1,0,0,0,0,0,0,1
     .db 1,0,0,0,0,0,0,1
     .db 1,0,0,0,0,0,0,1
     .db 1,0,0,0,0,0,0,1
     .db 1,0,0,0,0,0,0,1
     .db 1,0,0,0,0,0,0,1
     .db 1,0,0,2,2,0,0,1
     .db 1,0,2,2,2,2,0,1
     .db 1,1,1,1,1,1,1,1
     ldirc(sMSB0,4)
       .db 1,96,0,2
     ldc(sMask,1)
TileMap:
     ldc(sY0,64)
     subc(sX0,8)
     jrfc(Start)
TileMapLoop:
     subc(sY0,8)
     jrbc(TileMap)
     pop(tilenum)
     rotl(tilenum)
     rotl(tilenum)
     rotl(tilenum)
     addc(tilenum,tiles)
     lda(sLSB0,tilenum)
     orc(status,2)
     jrb(TileMapLoop)
tiles:
     .db 0,0,0,0,0,0,0,0
     .db 3Ch,42h,81h,81h,81h,81h,42h,3Ch
     .db 3Ch,7Eh,$FF,$FF,$FF,$FF,7Eh,3Ch     
Start:
     ldc(stackptr,0)
     orc(status,1)
     ldc(status,80h)


Source: http://www.cemetech.net/forum/viewtopic ... 768#201768
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.4%
 
Messages: 6875
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Jade - un projet de Xeda...

Messagede Persalteas » 15 Mar 2013, 18:06

C'est intéressant, mais quelle est la réelle utilité de ceci, si c'est si semblable aux instructions du z80 ?

A part l'enrichissement personnel, bien sur ? ;)
Avatar de l’utilisateur
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 6.2%
 
Messages: 2337
Images: 113
Inscription: 04 Fév 2010, 00:00
Localisation: Evry (France)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PhD candidate, Bioinformatics

Re: Jade - un projet de Xeda...

Messagede Hayleia » 15 Mar 2013, 19:14

P-Rex a écrit:C'est intéressant, mais quelle est la réelle utilité de ceci, si c'est si semblable aux instructions du z80 ?

A part l'enrichissement personnel, bien sur ? ;)
Ça peut attirer les débutants à essayer "un ASM plus facile" avant de passer au "vrai ASM" ;)

Image
ImageImageImage
Pokemon Topaze (Axe) discussion and download links here
(19:29:36) noelnadal: plus sérieusemen​t, j'ai très peu de problèmes
(22:45:44) Clifward: J'aime rire du malheur des autres :troll:

(2017.11.18 - 17:07:12) Fireworks: Hayleia !!!!!
(2017.11.18 - 17:07:19) TI-Bot: Fireworks has been logged out (Kicked).
(2017.11.18 - 17:07:22) TI-Bot: Ban of user Fireworks revoked.
(2017.11.18 - 17:07:25) TI-Bot: Fireworks logs into the Chat.
(2017.11.18 - 17:07:28) Fireworks: <3
(2017.11.18 - 17:07:31) Fireworks: 208
Avatar de l’utilisateur
HayleiaGénéreux
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Prochain niv.: 43.8%
 
Messages: 2509
Images: 2
Inscription: 30 Aoû 2011, 08:22
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Templar

Re: Jade - un projet de Xeda...

Messagede Lionel Debroux » 15 Mar 2013, 19:34

Par exemple, oui.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.4%
 
Messages: 6875
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Jade - un projet de Xeda...

Messagede mdr1 » 15 Mar 2013, 19:36

Je vois que tu as parlé de "simulateur", Lionel, faut-il donc comprendre que le langage machine Jade est converti est z80 avant d'être exécuté ?
Image ImageImage
Avatar de l’utilisateur
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 44%
 
Messages: 1083
Images: 12
Inscription: 28 Mar 2011, 00:00
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Je voyage toujours en première.

Re: Jade - un projet de Xeda...

Messagede Persalteas » 15 Mar 2013, 20:21

mdr1 a écrit:Je vois que tu as parlé de "simulateur", Lionel, faut-il donc comprendre que le langage machine Jade est converti est z80 avant d'être exécuté ?

Ben... oui, comme tous les langages, quoi...

Que ce soit un interpréteur ou un simulateur, c'est transformé en asm z80.
Le terme "simulateur" convient mieux cependant puisque là on considère un processeur fictif.
Avatar de l’utilisateur
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 6.2%
 
Messages: 2337
Images: 113
Inscription: 04 Fév 2010, 00:00
Localisation: Evry (France)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PhD candidate, Bioinformatics

Re: Jade - un projet de Xeda...

Messagede chickendude » 14 Avr 2013, 03:14

Persalteas a écrit:C'est intéressant, mais quelle est la réelle utilité de ceci, si c'est si semblable aux instructions du z80 ?
Je crois que l'idée c'est de permettre à créer et faire courir des programmes avec un langage plutôt simple et dans un environment où il est impossible de planter la calto. Aussi, vue la limite de taille des programmes, on pourrait avoir peut-être des packs de jeux qui contiennent 10 ou 15 jeux mais n'occupent que 5ko. Une autre chose : le "simulateur" fait pas mal de choses pour toi, il gère tes sprites, met à jour l'écran, lit les touches, etc., donc avec très peu d'espace on peut faire des choses assez compliquées.

Xeda a aussi introduit l'indirection avec les commandes ind1() et ind2().
Avatar de l’utilisateur
chickendude
Niveau 0: MI (Membre Inactif)
Niveau 0: MI (Membre Inactif)
Prochain niv.: 0%
 
Messages: 9
Inscription: 15 Oct 2012, 15:31
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ouvrière


Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 8 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
3537 utilisateurs:
>3519 invités
>11 membres
>7 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)