Nº249 (1/2011)







  Download :
Le CEO vous présente ses meilleurs vœux pour la nouvelle année qui commence. Que votre santé soit la meilleure possible ! Que tous vos projets, tant familiaux que professionnels se réalisent ! Enfin et c’est finalement peut-être non-négligeable, que vous puissiez trouvez un peu de temps libre pour finaliser vos projets Oric et pour enfin essayer les beaux jeux qui ont vu le jour en 2010. Ah! J’oubliais! Que vous trouviez quelques bonnes idées pour participer au Ceo-Mag! Bonne année Oricienne! A.

Visu! Le samedi 29 Janvier 2011, de 14 à 18 H, au 1er étage du 17 rue des Petits Hôtels, Paris 10e (M° Gare de l’Est ou Gare du Nord). L'installation de Oric Explorer! Une commande fabuleuse: WRITE! Nouveau mode d'emploi pour DosBox! Le bug hardware des ULA!

sommaire

Adresses CEO / Sommaire / Editorial   Page 2
Courrier Oricien   Page 3-4
Petites Annonces & Bonnes Adresses   Page 5
Nouvelle Commande Haute Résolution : WRITE (2/2)   Page 6-7
Rush Hour Supplément n°8 (1/3)   Page 8-9
Nostalgie : L'Oric-1 sous la Loupe   Page 10-11
Divertissements Mathématiques et Logiques   Page 12
Le Coin Sudoku Oric : Les Grilles 1 à 6 de Décembre   Page 13
Réponses n°79 : Sujet 232 - Oric Explorer   Page 14-16
Listing Basic : Stars   Page 17-18
Anecdote : La Disquette passe aux Oubliettes   Page 18
Atelier : Ecrans LCD pour nos Oric ?   Page 19-22
Fabrice Broche connaissait le Bug Hardware des ULA   Page 23-24
DosBox : Lancement Automatique sous XP   Page 25-26
Ils ont fait le Mag en 2010   Page 27-28
Jeu de Cartes : Le 99 (1/2)   Page 29
Listings Basic : Composer & Clémentine   Page 30
Dino : Dictons, Devinettes, Blagues, Conseils   Page 5, 8, 9,15, 16 & 30


Fabrice Broche connaissait le bug hardware des ULAs du Telestrat!
par Fabrice F.

Il apparaît que Fabrice Broche a dû galérer lors du développement du logiciel du Telestrat : les quelques NOPs que l'on trouve dans Telemon ne sont pas à l'image du personnage, lui qui traquait les optimisations possibles dans la rom Oric… En fait, d'une manière ou d'une autre, il s'était rendu compte qu'il y avait des trucs qui ne tournaient pas rond dans les routines disque du Telestrat, et qui s'arrangeaient en déplaçant légèrement le code…
Voici un petit tour d'horizon des écritures sur le FDC dans le logiciel Telemon, qui reprend le désassemblage et les commentaires de Guillaume Meister dans son livre "Si Telestrat Système m'était conté":
Il y a d'abord des commandes Restore Track 0 envoyées au FDC pour chacun des lecteurs A à D:

C059-EA NOP ???
C05A-EA NOP ???
C05B-A2 03 LDX #$03
C05D-BD DC C2 LDA $C2DC,X les lecteurs A à D sont-ils branchés ?
C060-8D 14 03 STA $0314
C063-A9 08 LDA #$08 commande SEEK au FDC (placer la tête sur piste 0)
C065-8D 10 03 STA $0310 dans FDCCR
C068-A8 TAY
C069-C8 INY ->248 boucles
C06A-D0 FD BNE $C069 --pour attente de réponse
C06C-EA NOP ??? décidément

On voit que tous ces NOP ne plaisent guère à Guillaume… Mais comme par hasard, l'instruction suivant le STA $0310 se retrouve à une adresse multiple de 4, ce qui évite que le FDC écrive la commande dans un deuxième registre.
Ensuite, il y a les routines transférées en $B800 qui permettent de charger le StratSED :
C4B3-A9 88 LDA #$88 %10001000 dans FDCCR <---$B84F--------------------
C4B5-8D 10 03 STA $0310 soit lire un secteur
C4B8-A0 04 LDY #$04
C4BA-88 DEY délai pour attendre la fin de la lecture
C4BB-D0 FD BNE $C4BA

Attention aux conclusions hâtives ici : la routine de lecture de secteur est transférée en $B84F, le LDY #$04 se retrouve donc à l'adresse $B854, qui est un multiple de 4… Coup de chance ? Regardons un peu plus loin :
C4D1-8D 10 03 STA $0310 ($B86D) on envoie la commande A
C4D4-A0 03 LDY #$03 on attend la réponse

Idem ici, le code est transféré à l'adresse $B86D, le LDY #$03 se retrouve à l'adresse $B870, multiple de 4, pas de souci… Coincidence ? Ces deux derniers fragments de code ne contiennent pas de NOP, mais à chaque fois ce sont des débuts de routine qui auraient pu être gardé en ligne dans les routines qui les appellent, et qui ont été déplacés pour mieux gérer leur adresse d'exécution. Regardons justement les routines qui y font appel, ce sont les dernières qui modifient des registres du FDC :

C471-A2 01 LDX #$0 on lit piste 0 secteur 1
C473-8E 12 03 STX $0312 1 dans le registre de secteur
C476-20 4F B8 JSR $B84F on lit le secteur
Intéressons nous ici au STX $0312, ou plutôt au JSR qui le suit et qui se retrouve une fois transféré en page $B8 à l'adresse $B812, ce qui fait que l'écriture dans le registre de secteur se répètera dans ce même registre et non dans un autre registre. Coincidence encore?
Et la meilleure pour la fin:

C48D-A9 58 LDA #$58 oui, %01011000
C48F-20 6D B8 JSR $B86D soit deplacer la tete d'une piste
C492-A2 00 LDX #$00 compteur de secteur à 0
C494-EA NOP tss tss...
C495-EA NOP
C496-E8 INX -->on lit un secteur du SED
C497-8E 12 03 STX $0312
C49A-20 4F B8 JSR $B84F

Ne critiquons pas Fabrice Broche, Guillaume, et regardons si ces deux NOPs ont une raison d'exister… On voit d'abord ici le JSR $B86D qui utilise la routine reportée un petit peu plus loin pour écrire une commande dans le FDC, nul besoin d'aligner le code à une adresse précise. Puis on a un STX $0312 qui pourrait être dangereux, deux NOPs ont été insérés pour le décaler, de sorte que le JSR qui suit se trouve à l'adresse $B836, soit un multiple de 4 plus 2 qui permet encore d'éviter que l'écriture dans le registre 2 (registre de numéro de secteur) se propage dans un autre registre… et enfin on réutilise la routine en $B84F pour lire un secteur. C'est tout, il n'y a pas d'autres écritures de registre FDC dans le Telemon, Fabrice Broche a tout fait pour limiter les sources de problèmes : pas d'utilisation de commande Seek qui nécessiterait d'écrire dans le registre de données en $0313, pas d'écriture dans le registre de piste non plus…
Alors, cela ne fait-il pas trop de coïncidences ? Moi je dis qu'on peut faire confiance à Fabrice Broche, que le moindre NOP est hyper-important: ce sont ces NOP qui font que le chargement du StratSED marche!!


BROWSE

NUMEROS
 [260] - [259] - [258] - [257] - [255] - [254] - [253] - [252] - [251] - [250] - [249] 

YEAR
2013 - 2012 - 2011 - 2010 - 2009 - 2008 - 2007 - 2006 - 2005 - 2004 - 2003 - 2002 - 2001 - 2000 - 1999 - 1998 - 1997 - 1996 - 1995 - 1994 - 1993 - 1992 - 1991 - 1990



Hosted By oric.org server www.oric.org V 2.6 CNIL ID : 872370 Write to Webmaster © 2000-2024 Built in 0.03 Seconds