Bench graphique en assembleur sur CASIO Z-1GR

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
Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 22 sept. 2010 18:30

Mon bench graphique LM porté sur Z-1GR

récap des temps :
en BASIC : 121s
en C : 182s
en LM : 82s

il est à noter le C plus lent que le basic.

le code
j'avais commencé à commenter ... je peux continuer mais pas motivé
j'ai pas le cordon, j'ai donc recopié le code à la mimine.
Si il y a des erreurs de recopie dites le moi

Code : Tout sélectionner

	ORG	2000H
	JMP	START
SC	DB	0,0,0,0
SCO	DB	0
x	DB	0
Y	DB	0
OX	DB	0
OY	DB	0
RX	DB	0
RY	DB	0
TX	DB	'SCORE:'
	DB	0
START:
	CALL	CLS	'Effacement de l'écran
	MOV	DI,OFFSET TX
	CALL	PRINT	'Affichage de SCORE:
	MOV	BL,59
	MOV	BH,0
	MOV	CL,135
	MOV	CH,30
	MOV	DL,0
	CALL	BOX	'BOX(59,0)-(135,30)
	MOV	BL,60
	MOV	BH,0
	MOV	CL,134
	MOV	CH,0
B1:	CALL	LINE	'LINE(60,0)-(134,0)
	ADD	BH,1
	ADD	CH,1
	CMP	CH,4
	JNE	B1	'Répétition 4 fois avec incrémentation de Y
	MOV	BH,6
	MOV	CH,6
B2:	CALL	LINE	'LINE(60,6)-(134,6)
	ADD	BH,1
	ADD	CH,1
	CMP	CH,10
	JNE	B2	'Répétition 4 fois avec incrémentation de Y
	MOV	WORD PTR SC,3030H
	MOV	BX,OFFSET SC
	ADD	BX,2
	MOV	BYTE PTR [BX],30H
	MOV	BYTE PTR X,99
	MOV	BYTE PTR OX,99
	MOV	BYTE PTR Y,10
	MOV	BYTE PTR OY,10
	MOV	AL,3
	NEG	AL
	MOV	BYTE PTR RX,AL	'RX=-3
	MOV	BYTE PTR RY,2
REPEAT:
	MOV	AL,RY
	ADD	AL,Y
	MOV	BYTE PTR Y,AL	'Y=Y+RY
	MOV	AL,RX
	ADD	AL,X
	MOV	BYTE PTR X,AL	'X=X+RX
	CMP	AL,60
	JC	OK1
	CMP	AL,133
	JC	SU1
OK1:
	MOV	AL,RX
	NEG	AL
	MOV	BYTE PTR RX,AL	'RX=-RX
	ADD	AL,AL
	ADD	AL,X
	MOV	BYTE PTR X,AL	'X=RX+RX+X
SU1:
	MOV	AL,Y
	CMP	AL,30
	JNC	OK2	'Si Y>=30 alors OK2
	MOV	AH,2
	NEG	AH
	CMP	AL,AH
	JNZ	SU2
OK2:
	MOV	AL,RY
	NEG	AL
	MOV	BYTE PTR RY,AL	'RY=-RY
	ADD	AL,OY
	MOV	BYTE PTR Y,AL	Y=OY+RY
SU2:
	MOV	BL,X
	MOV	BH,Y
	CALL	POINT
	CMP	DL,1
	JNZ	SU3
	MOV	AL,SCO
	ADD	AL,5
	MOV	BYTE PTR SCO,AL
	CALL	SCOR
	MOV	BL,6
	MOV	BH,0
	CALL	LOCATE
	MOV	DI,OFFSET SC
	CALL	PRINT
	MOV	BL,X
	MOV	BH,Y
	MOV	CL,X
	ADD	CL,2
	MOV	CH,Y
	ADD	CH,1
	MOV	DL,1
	CALL	BOX
	MOV	AL,Y
	SUB	AL,RY
	MOV	BYTE PTR Y,AL
	MOV	AL,RY
	NEG	AL
	MOV	BYTE PTR RY,AL
SU3:
	MOV	BL,X
	MOV	BH,Y
	MOV	CL,X
	ADD	CL,2
	MOV	CH,Y
	ADD	CH,1
	MOV	DL,0
	CALL	BOX
	MOV	BL,OX
	MOV	BH,OY
	MOV	CL,OX
	ADD	CL,2
	MOV	CH,OY
	ADD	CH,1
	MOV	DL,1
	CALL	BOX
	MOV	AL,X
	MOV	BYTE PTR OX,AL
	MOV	AL,Y
	MOV	BYTE PTR OY,AL
	MOV	AL,SCO
	CMP	AL,205
	JNC	FIN
	JMP	REPEAT
FIN:
	IRET

CLS:
	MOV	AH,10H
	INT	41H
	RET
LINE:
	MOV	AH,13H
	INT	41H
	RET
BOX:
	MOV	AH,14H
	INT	41H
	RET
PRINT:
	MOV	AH,20H
	INT	41H
	RET
LOCATE:
	MOV	AH,OFH
	INT	41H
	RET
SCOR:
	MOV	BX,OFFSET SC
	ADD	BX,2
	MOV	AL,BYTE PTR [BX]
	CMP	AL,48
	JZ	SCO1
	MOV	BX,OFFSET SC
	ADD	BX,1
	MOV	AL,BYTE PTR [BX]
	CMP	AL,57
	JZ	SCO2
	INC	AL
	MOV	BX,OFFSET SC
	ADD	BX,1
	MOV	BYTE PTR [BX],AL
	ADD	BX,1
	MOV	BYTE PTR [BX],48
	RET
SCO1:
	MOV	BX,OFFSET SC
	ADD	BX,2
	MOV	BYTE PTR [BX],53
	RET
SCO2:
	MOV	BX,OFFSET SC
	ADD	BX,1
	MOV	BYTE PTR [BX],48
	ADD	BX,1
	MOV	BYTE PTR [BX],48
	MOV	BX,OFFSET SC
	MOV	AL,BYTE PTR [BX]
	INC	AL
	MOV	BYTE PTR [BX],AL
	RET

POINT:
	MOV	DX,BX
	MOV	AH,17H
	INT	41H
	MOV	AL,DL
	MOV	AH,0
	MOV	CL,6
	DIV	CL
	MOV	CH,AH
	MOV	CL,3
	SAL	AL,CL
	MOV	AH,0
	ADD	BX,AX
	MOV	AL,DH
	AND	AX,00F8H
	MOV	CL,5
	SAL	AX,CL
	ADD	BX,AX
	MOV	AL,DH
	AND	AX,0007H
	ADD	BX,AX
	MOV	AL,20H
	MOV	CL,CH
	OR	CL,CL
	JZ	POINT1
	SHR	AL,CL
POINT1:
	AND	AL,[BX]
	MOV	DX,0000H
	JZ	POINT2
	MOV	DL,1
POINT2:
	RET
	RET
Dernière édition par charognard le 22 sept. 2010 18:36, édité 1 fois.

Avatar de l’utilisateur
ledudu
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5600
Inscription : 26 mars 2009 14:07
Localisation : Ile de France
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par ledudu » 22 sept. 2010 18:36

Ah, si je savais paramétrer ton code LINE ou BOX depuis C.... :oops:

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 22 sept. 2010 18:40

ledudu a écrit :Ah, si je savais paramétrer ton code LINE ou BOX depuis C.... :oops:
pas compliqué.
tu pokes tes x,y,x',y',d
et tu call la routine line qui va lire à ces adresses

si tu ni arrive pas on verra au pocketicaires

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 22 sept. 2010 19:17

BREF un truc comme ça

Code : Tout sélectionner

	ORG	2000H
	JMP	START
XD	DB	0
YD	DB	0
XF	DB	0
YF	DB	0
D	DB	0
START:
	MOV	BL,XD
	MOV	BH,YD
	MOV	CL,XF
	MOV	CH,YF
	MOV	DL,D
	MOV	AH,13H
	INT	41H
	RET

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 22 sept. 2010 23:35

tu POKE donc en 2003,2004,2005,2006 et 2007
avec (x,y)-(x',y'),d

avec d=0 pour tracer la ligne et d=1 pour détracer la ligne

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 23 sept. 2010 00:19

Juste pour information le Z-1GR avançant son processeur 16bits on peut penser à une rapidité intéressante.
comparont le donc au Z80 du SHARP G850V dans une boucle de 1 à 10000 en assembleur.
j'utilise les registres 16bits sur le casio car c'est plus rapide.


résultat
SHARP G850V : 0,0185s
CASIO Z-1GR : 0,052s

les tests (je divise bien sur pour les tps sur 10000)
Sur Sharp

Code : Tout sélectionner

10	ORG	100H
20	LD	E,100
30BOU1:	LD	B,255
40BOU2:	LD	D,255
50BOU3:	DEC	D
60	JP	NZ,BOU3
70	DEC	B
80	JP	NZ,BOU2
90	DEC	E
100	JP	NZ,BOU1
110	RET
sur Casio

Code : Tout sélectionner

	ORG	2000H
	MOV	AL,100
	MOV	BX,0FFFFH
BOU:	DEC	BX
	JNZ	BOU
	DEC	AL
	JNZ	BOU
	IRET

Avatar de l’utilisateur
Chris
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 220
Inscription : 20 oct. 2007 19:01

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par Chris » 23 sept. 2010 11:26

charognard a écrit :Mon bench graphique LM porté sur Z-1GR

récap des temps :
en BASIC : 121s
en C : 182s
en LM : 82s
Ce qui m'étonne dans le résultat, ce n'est pas trop le C par rapport au BASIC, mais plutôt le LM par rapport au BASIC 8O

Quelle est l'explication ?
HP : 11C 17BII 28S 48SX 50G 71B LX100
Sharp : PC-1403 PC-1600 PC-G850V
TI : TI-74

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 23 sept. 2010 11:56

le lm passe son temps à attendre la puce gérant l'écran.
la mémoire vidéo n'est pas accessible autrement ...
le sharp c'est pareil mais avec un composant plus efficace, et c'est peu dire ça met environ 1s (au lieu de 82s).

mon plus gros étonnement moi c'est le casio 16bits qui se fait griller par le pauvre Z80 du sharp en manipulation de registre. je vais essayer un bench lm sur la ram pour voir (2,8 fois plus lent !!!)

Avatar de l’utilisateur
jvernet
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7838
Inscription : 24 mai 2002 09:57
Localisation : France 69
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par jvernet » 23 sept. 2010 14:14

Et si tu reste sur les registres 8 Bits, ça donne quoi ?
Casio, c'est lent, un dirait un Ti99...
"l'ordinateur et l'homme sont les deux opposés les plus intégraux qui existent. L'homme est lent, peu rigoureux et très intuitif. L'ordinateur est super rapide, très rigoureux et complètement con."

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 23 sept. 2010 14:34

jvernet a écrit :Et si tu reste sur les registres 8 Bits, ça donne quoi ?
Casio, c'est lent, un dirait un Ti99...
c'est pire
on utilise des demi registres 16 bits.

pour l'interpretation des languages basic ça ne pose pas de problèmes (il y a des carry de moins à gérer) mais pour une optimisation assembleur c'est plus lent.
de plus mon bench graphique utilise les registres groupés en 16 sur le Z80
une bonne daube le Casio.
d'un autre côté pour une machine d'apprentissage c'est quand même plus agréable que accumulateur du Z80 pour le débutant.

quoique je debute en LM moi et mon principal problème est de passer un processeur à l'autre. Je serais curieux de voir le merdier dans les écoles d'info japonaises pour l'apprentissage du LM avec les pro Casio et pro Sharp.
le beau merdier pour les profs.

pascal_meheut
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 307
Inscription : 25 sept. 2008 06:40

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par pascal_meheut » 23 sept. 2010 17:54

Ils n'apprenaient pas surtout le COMET justement ?
Pas mal de HP de la 55 à la 48, 97.... Casio 702p, 890P, AI-1000 et PB-2000C, WP34s dont j'écris les émulateurs et la version iOS
Je cherche les modules Pascal et Prolog pour la PB-2000C

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 23 sept. 2010 18:06

pascal_meheut a écrit :Ils n'apprenaient pas surtout le COMET justement ?
au debut si mais on fait vite fait le tour.
de plus il y a des petites subtilités entre SHARP et CASIO

Avatar de l’utilisateur
jvernet
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7838
Inscription : 24 mai 2002 09:57
Localisation : France 69
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par jvernet » 23 sept. 2010 23:02

charognard a écrit :
jvernet a écrit :Et si tu reste sur les registres 8 Bits, ça donne quoi ?
Casio, c'est lent, un dirait un Ti99...
c'est pire
on utilise des demi registres 16 bits.
Oui, mais c'est pas pour ça que ça doit être plus lent. J'avais même plutot tendance à dire que ça devait être plus rapide.

Les jump sont notoirement peu efficaces sur un 8088 (ils sont moins performants que sur un vrai 8 bits type 8085), hors, finalement, ce que tu teste, c'est surtout 6,5 millions de jump.
"l'ordinateur et l'homme sont les deux opposés les plus intégraux qui existent. L'homme est lent, peu rigoureux et très intuitif. L'ordinateur est super rapide, très rigoureux et complètement con."

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 23 sept. 2010 23:27

jvernet a écrit :
charognard a écrit :
jvernet a écrit :Et si tu reste sur les registres 8 Bits, ça donne quoi ?
Casio, c'est lent, un dirait un Ti99...
c'est pire
on utilise des demi registres 16 bits.
Oui, mais c'est pas pour ça que ça doit être plus lent. J'avais même plutot tendance à dire que ça devait être plus rapide.

Les jump sont notoirement peu efficaces sur un 8088 (ils sont moins performants que sur un vrai 8 bits type 8085), hors, finalement, ce que tu teste, c'est surtout 6,5 millions de jump.
Non en prenant des registre 8 bits c'est 4s de plus.
il faut voir ce test comme une structure FOR NEXT. Avec ce temps de base, je vais maintenant pouvoir tester d'autre fonctions.
Ca n'empêche pas que ce premier temps de référence est catastrophique pour le Casio (le DEC et JNZ sont des fonctions très courantes). De plus en code Z80 je fais un jump absolu (je viens de le remarquer,je vais peut etre le changer d'ailleur) et relatif sur le 80L188EB du casio (sensé être plus rapide)

Le Bus du Casio est d'ailleur 8bits comme le Z80. Je vais faire quelques autres tests en adressage indirect..

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Bench graphique en assembleur sur CASIO Z-1GR

Message par charognard » 24 sept. 2010 09:42

En enlevant le tmps mis par les boucles précédement citée (34s pour le casio et12s pour le sharp)

les fonctions suivantes répétée plus de 6,5 million de fois
MOV BYTE PTR VAR,20 et MOV AH,VAR
Mettent respectivement 49s et 38s à s'executé sur le Casio

Les mêmes fonctions sur le Sharp.
LD A,20 _ LD VAR,A et LD A,(VAR)
Mettent 16,5s et 10,5s

je crois que c'est clair. Ou alors je me suis trompé quelque part.

Répondre

Revenir vers « Tous les Pockets »