Nº251 (3/2011)







  Download :
Merci à Mme B. pour l'envoi de son Dino (en couverture). Il n'y a pas beaucoup de dames au CEO, mais c'est sans compter avec les épouses, les filles et les mères qui, chaque mois, lisent avec plaisir tout ou partie du Ceo-Mag. Dans le cas de Mme B., il s'agit d'une récidive, puisqu'elle avait déjà illustré la couverture du n°154 de février 2003, pour fêter les 20 ans de l'Oric. Mais il y a d'autres exemples. Comme celui du fameux coussin Oric, joliment brodé par la sœur de notre président et qui a fait le tour du monde (via ebay). A+

Compte-rendu et photos de la Visu du 29 janvier 2011 Une nouvelle commande: TIME! Vu sur le web: Stormlord! Routinothèque Super-Oric! Les 101 écrans de The Hellion!

sommaire

Adresses CEO / Sommaire / Editorial   Page 2
Courrier Oricien   Page 3-5
Petites Annonces & Bonnes Adresses   Page 5
Commande TIME (1/2)   Page 6
Vu sur eBay : Brand New Unopened Oric Atmos !   Page 7
Rush Hour Supplément n°8 (3/3)   Page 8-9
Les 101 Ecrans de "The Hellion" (6)   Page 10-11
Divertissements Mathématiques et Logiques   Page 12
Le Coin Sudoku Oric : Les Grilles 13 à 18 de Décembre   Page 13
Vu sur le Web : Stormlord   Page 14
Listing Basic : Longchamp (Tiercé de Tilt Micro)   Page 15-17
Quelques photos de la Visu du 29 Janvier 2011 (1/4)   Page 18-21
Compte-Rendu de la Visu du 29 Janvier 2011   Page 22-23
Quelques photos de la Visu du 29 Janvier 2011 (2/4)   Page 24-25
Routinothèque Super-Oric (3) : Double Hauteur (2)   Page 26-29
Listing Basic : Graph It   Page 30
Et votre mascotte Dino...   Page 1, 5, 7, 8, 9, 17, 21, 22, 23


Commande "TIME" (1/2)
par Yann L.

UN PROCESSEUR INTERROMPU SANS ARRÊT

Sur Oric, le processeur 6502 fonctionne en collaboration avec d'autres composants périphériques.
Lors d'un RESET, ces composants périphériques sont configurés.
Il s'agit principalement :
- VIA 6522 (Versatile Interface Adaptator) qui est le circuit d'entrées/sorties à multi usages
- PSG 8912 (Programmable Sound Generator) qui est le générateur de sons programmables
- ULA HCS 10017 (Uncommited Logic Array) qui est un réseau logique programmable comportant un grand nombre de portes logiques et qui gère notamment la mémoire vidéo
Une fois que ces composants sont configurés et que le système est initialisé, le processeur 6502 se retrouve à l'interpréteur .
Il peut alors être interrompu de deux manières :
1. Par une une interruption non masquable (Non Masquable Interruption ou NMI) qui correspond physiquement au bouton RESET.
2. Par une interruption "classique", générée tous les 1/100ème de seconde, appelée IRQ (Interruption ReQuest).
Lors d'une IRQ, le processeur termine l'exécution de l'instruction en cours et range le contenu de ses registres. Pour cela, le processeur saute au contenu de l'adresse FFFE-FFFF qui est 0244 pour l'Atmos et 0228 pour l'Oric 1. Ces adresses, situées en RAM, contiennent un saut en EE22 (Atmos) et EC03 (Oric 1), où a lieu la gestion de l'interruption.
En temps normal, les IRQ permettent de gérer le clavier (par scrutation), les différents timers et le clignotement du curseur.
Le retour de l'interruption se fait en RAM aux adresses 024A (Atmos) ou 0230 (Oric 1) qui pointent sur l'instruction RTI (ReTurn of Interruption).
RTI permet de :
- récupérer les registres P et PC dans la pile,
- de mettre à jour le pointeur de pile.
Pour faire réaliser à l'Oric un sous-programme de manière répétitive, il suffit donc de détourner le vecteur IRQ en RAM vers votre propre routine, donnant ainsi l'illusion que l'Oric réalise deux taches simultanément.

ILLUSTRATION DU PROPOS

Pour mieux vous rendre compte des possibilités offertes par les interruptions, je vous propose une nouvelle commande intitulée TIME.
Cette commande permet de déclencher (et de stopper) un compte à rebours affiché sur la ligne de statut.
Les options de cette commande sont les suivantes :
- TIME ON : déclenche le compte à rebours
- TIME OFF : stoppe le compte à rebours et vide la ligne de statut
- TIME SET : initialise la zone mémoire du compte à rebours avec la variable CK$ (dont seule la longueur est vérifiée)
- TIME : sans argument, récupère la valeur de la zone mémoire du compte à rebours dans la variable CK$. Si CK$ est nul, l'Oric vous gratifie d'un ?TIME ERROR.
Avant de déclencher le compte à rebours, il est impératif d'initialiser la zone mémoire grâce à la variable CK$, faute de quoi l'Oric retourne de nouveau un ?TIME ERROR.
Exemple :
10 CK$="00:30"
20 TIME SET
30 TIME ON
Les quelques lignes de programme ci-dessus pemettent d'initialiser la zone mémoire du compte à rebours à 30 secondes.
Une fois le compte à rebours initié, la décrémentation se fait de seconde en seconde jusqu'à la valeur 00:00.
Le compte à rebours est alors stoppé et le vecteur d'interruption remis à sa valeur d'origine (la ligne de statut n'est pas vidée).

A QUOI ÇA SERT ?

Cette nouvelle commande peut être utile dans le cas de jeux en Basic nécessitant un temps limite de réponse.
Selon la difficulté du jeu, il suffira de donner une valeur plus ou moins élevée à CK$ (de 59:59 à 00:01).

Dans un prochain article, nous verrons le listing détaillé du programme en assembleur.

A suivre…


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.08 Seconds