MySilicium

Forum de discussions sur les vieux micros, pockets & consoles
Nous sommes le Mer Avr 26, 2017 8:10 am

Heures au format UTC + 1 heure [ Heure d’été ]




Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
MessagePosté: Lun Nov 07, 2016 18:02 pm 
Fonctionne à 75 bauds
Fonctionne à 75 bauds

Inscription: Ven Juil 22, 2016 9:35 am
Messages: 12
Image

voici le code pour réaliser ce sprite:
vous pouvez tester le code en le chargeant dans l'emulateur. Allez dans fichier et restaurer état.
https://www.dropbox.com/s/kwinaerbdz3cp7b/gost%20galaxion%20move.mrx?dl=0

Code:
0 SETET 65,"FFFFFFFFFF3F8FA3A82A"
1 SETET 66,"F7D7D14155D4D3D0D313"
2 SETET 67,"DFD747415517C707C7C4"
3 SETET 68,"FFFFFFFFFFFCF2CA2CA8"
4 SETET 69,"CAC0F3F3CFCFCFCFF3FF"
5 SETET 70,"830F3F3F3F3FCFFFFFFF"
6 SETET 71,"C2F0FCFCFCFCF3FFFFFF"
7 SETET 72,"A303CFCFF3F3F3F3CFFF"
8 SETET 73,"FFFFFFFFFFFFFFFFFFFF"
10 CLEAR 200:A=&"7000"
20 REM MACHINE CODE
21 P$="220E70211470CDEF022A0E70C9000000000000202100288121062882216728832113288400000000214122D8236626082727280000"
30 REM EXE BASIC
31 FORI=1TOLEN(P$)STEP2
32 POKEA,N:A=A+1
90 REM HEX TO DEC
91 N1=ASC(MID$(P$,I,1))-48
92 IF N1>9 THEN N1=N1-7
93 N2=ASC(MID$(P$,I+1,1))-48
94 IF N2>9 THEN N2=N2-7
95 N=16*N1+N2
96 NEXT I
98 FORX=0TO39:IFY>0ANDY<8THENY=8
99 CALL&"7000"
104 POKE&"702A",73:POKE&"7030",Y
105 POKE&"7032",X:NEXTX:Y=Y+1:IFY>31THENY=0
110 IFY<31THENGOTO 98
120 DIM A(20):DIM B(20):DIM C(20)
130 DATA 73,12,20,73,12,21,73,12,22,73,12,23
200 DATA 73,13,19,65,13,20,66,13,21,67,13,22,68,13,23,73,13,24
201 DATA 73,14,19,69,14,20,70,14,21,71,14,22,72,14,23,73,14,24
203 DATA 73,15,20,73,15,21,73,15,22,73,15,23
205 X=0:Y=0
210 FORI=1TO20:READ A(I),B(I),C(I)
230 POKE&"702A",A(I)
232 POKE&"7030",B(I)+Y
234 POKE&"7032",C(I)+X
235 CALL&"7000"
300 NEXTI
310 IFKEY(0)=7THENX=X+1
311 IFKEY(0)=8THENX=X-1
312 IFKEY(0)=9THENY=Y-1
313 IFKEY(0)=10THENY=Y+1
314 IFX<-19THENX=-19
315 IFX>16THENX=16
316 IFY<-5THENY=-5
317 IFY>14THENY=14
320 RESTORE
330 GOTO 210


Haut
 Profil  
 
MessagePosté: Mer Nov 09, 2016 10:33 am 
Fonctionne à 75 bauds
Fonctionne à 75 bauds

Inscription: Ven Juil 22, 2016 9:35 am
Messages: 12
comment communiquer avec l 'EF9345.
procedure à suivre:
utilisez la routine à l'adresse $00AD
il faut indiquer a cette routine combien d'octets on va y écrire.ici 4 octets.
par exemple pour dire au circuit video qu'il faut mettre les bords de l'écran en vert il faut appeler le circuit avec le nombre 21 ensuite on met le nombre 2 qui est le vert apres on designe l'adresse de couleur de bordures avec le nombre 82 apres on execute avec 28.
voici ce que l'EF9345 reçoit dans cette routine : 04,20,82,29,02
peut s'écrire aussi :
04,21,02,28,82
Et voila comment ça ce presente au finale :

Code:
10 CLEAR 200:A=&"7000"
20 REM MACHINE CODE
21 P$="000000211170CDAD00C30070000000000420822902000000000000000000000000000000000000000000000000"
30 REM EXE BASIC
31 FORI=1TOLEN(P$)STEP2
32 POKEA,N:A=A+1
90 REM HEX TO DEC
91 N1=ASC(MID$(P$,I,1))-48
92 IF N1>9 THEN N1=N1-7
93 N2=ASC(MID$(P$,I+1,1))-48
94 IF N2>9 THEN N2=N2-7
95 N=16*N1+N2
99 NEXT I:Y=8
102 CALL 28672


le 21 signifie en langage machine "charge H et l avec les deux octets qui suivent soit: 11 et 70 qui sont le debut de la routine a envoyer a l'EF9345 .
11 et 70 en decimal represente l'adresse 28689 ! vous n'avez qu'a conter apres le p$" les deux premiers nombres soit zero est l'adresse du call 28672 et on arrive a la routine à injecter dans l'EF9345 en contant deux par deux -2 !
ensuite il y a un CD qui veut dire appeler le programme situé dans les deuc octets suivant soit AD00.Tiens c'est notre routine pour communiquer avec l'EF9345 !


Haut
 Profil  
 
MessagePosté: Mer Nov 09, 2016 12:09 pm 
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Avatar de l’utilisateur

Inscription: Lun Fév 18, 2008 14:46 pm
Messages: 146
Localisation: Belgique & Nord
rendomizer a écrit:
le 21 signifie en langage machine "charge H et l avec les deux octets qui suivent soit: 11 et 70 qui sont le debut de la routine a envoyer a l'EF9345 .
11 et 70 en decimal represente l'adresse 28689 ! vous n'avez qu'a conter apres le p$" les deux premiers nombres soit zero est l'adresse du call 28672 et on arrive a la routine à injecter dans l'EF9345 en contant deux par deux -2 !
ensuite il y a un CD qui veut dire appeler le programme situé dans les deuc octets suivant soit AD00.Tiens c'est notre routine pour communiquer avec l'EF9345 !

Donc, en clair, ton programme en assembleur c'est :

Code:
ld      hl,data
call    00ADh
jp      7000h
data:
db     04h,20h,82h,29h,02h

Quelques questions toutefois :
- pourquoi les 3 octets vides en début de routine ?
- pourquoi un retour au début de la routine à la fin de celle-ci ? Pour créer une boucle sans fin ?

_________________
Daewoo DPC-200 (MSX1)
Sony HB-F9P (MSX2)
Panasonic FS-A1WX (MSX2+)


Haut
 Profil  
 
MessagePosté: Mer Nov 09, 2016 13:46 pm 
Fonctionne à 75 bauds
Fonctionne à 75 bauds

Inscription: Ven Juil 22, 2016 9:35 am
Messages: 12
pourquoi des octets vides ? juste pour y voir claire et sinon oui il y a une boucle sans fin qui n'est pas obligatoire.


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com