{"id":1186,"date":"2019-11-08T10:46:07","date_gmt":"2019-11-08T09:46:07","guid":{"rendered":"https:\/\/ceobeta.oric.org\/?p=1186"},"modified":"2019-11-08T10:46:07","modified_gmt":"2019-11-08T09:46:07","slug":"une-petite-curiosite-dans-theoric","status":"publish","type":"post","link":"https:\/\/oric.bqtt.net\/index.php\/2019\/11\/08\/une-petite-curiosite-dans-theoric\/","title":{"rendered":"Une petite curiosit\u00e9 dans Th\u00e9oric"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>par Andr\u00e9 C.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une info erron\u00e9e et hop, la l\u00e9gende est en marche!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;article bien connu &#8220;<strong>Votre Oric fait du bruit<\/strong>&#8221; paru dans Th\u00e9oric n\u00b01, page 6 concerne l&#8217;Oric-1 mais en fait \u00e7a marche aussi (avec plus ou moins les m\u00eames r\u00e9sultats) sur l&#8217;Atmos. L&#8217;auteur (anonyme) est parvenu \u00e0 produire des sons avec des CALL inappropri\u00e9s dans la Rom. Je dis inappropri\u00e9s car les adresses signal\u00e9es comme produisant des sons (et effectivement \u00e7a marche) tombent souvent au milieu d&#8217;une routine (et m\u00eame entre opcode et argument), voir au milieu d&#8217;une table de data (un CALL dans les data, faut le faire!). Incroyable, mais authentique !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le fait que l&#8217;Oric puisse produire des sons lorsqu&#8217;on fait n&#8217;importe quoi est plus que surprenant. En fait l&#8217;auteur a fait plein d&#8217;essais et ne rapporte que ceux &#8220;qui marchent&#8221;. Si vous avez du temps \u00e0 perdre, vous pouvez chercher \u00e0 comprendre pourquoi \u00e7a ne plante pas avec les exemples cit\u00e9s.<br> La mode de la chasse aux sons \u00e9tait lanc\u00e9e. Par la suite, des auteurs un peu plus rationnels ont cherch\u00e9 \u00e0 produire des sons en exploitant la routine #FA6C (Oric-1) ou #FA86 (Atmos). Cette routine, appel\u00e9e &#8220;<strong>Envoyer 14 param\u00e8tres au PSG 8912<\/strong>&#8220;, exploite les registres X et Y du 6502, qui ciblent l&#8217;adresse d&#8217;une table contenant 14 param\u00e8tres pour les registres du PSG 8912. La routine se charge donc d&#8217;\u00e9crire ces 14 param\u00e8tres dans les 14 registres du PSG.<br> L\u00e0 ou \u00e7\u00e0 cloche, c&#8217;est que ces auteurs ont utilis\u00e9 les valeurs de X et Y, non pas comme adresse d&#8217;une table de param\u00e8tres, mais comme param\u00e8tres en soit. Les articles &#8220;<strong>Bruits sur Oric-1<\/strong>&#8221; de Bruno Trinquier de la Valette (Th\u00e9oric n\u00b04 page 56), &#8220;<strong>Bruits sur Atmos<\/strong>&#8221; de Bruno Bouchaud (Th\u00e9oric n\u00b07, page 39) souffrent de cette erreur. Il ne suffit pas de donner une valeur de #00 \u00e0 #FF aux registres X et Y pour obtenir 65 536 possibilit\u00e9s de bruits! Ce n&#8217;est que par hasard que l&#8217;adresse cibl\u00e9e par X et Y tombe dans une zone de la m\u00e9moire qui contient 14 valeurs acceptables par le PSG. Dans la plupart des cas, \u00e7a ne marche pas ou \u00e7a donne des bruits inexploitables ou \u00e7a plante!<br> En effet, les 5 sous-programmes PING, SHOOT, EXPLODE, &#8220;Bruit clavier touches normales&#8221; et &#8220;Bruit clavier touches de contr\u00f4le&#8221; utilisent cette routine coupl\u00e9e \u00e0 5 tables de 14 param\u00e8tres appropri\u00e9s \u00e0 chacun de ces 5 sons. Notez que ZAP utilise \u00e9galement cette routine coupl\u00e9 \u00e0 une 6e table de param\u00e8tre, mais cette commande est compliqu\u00e9e par un post traitement du son.<br> Heureusement, plusieurs lecteurs de Th\u00e9oric ont signal\u00e9 le probl\u00e8me et l&#8217;article &#8220;<strong>Toujours des bruits<\/strong>&#8221; de Gilles Clavequin (Th\u00e9oric n\u00b011, page 36 et 37) remet un peu d&#8217;ordre dans tout cela. Cet auteur reprend la liste des 14 registres du PSG, rappelle \u00e0 quoi ils servent et la gamme de valeurs possibles que l&#8217;on peut y \u00e9crire. Quelques exemples illustrent cette petite introduction th\u00e9orique. L&#8217;auteur fournit quatre tables de 14 param\u00e8tres (2 pour l&#8217;Oric-1 et 2 pour l&#8217;Atmos), permettant de g\u00e9n\u00e9rer deux nouveaux sons PONG et PCHHH. Ces tables sont mises en oeuvre gr\u00e2ce \u00e0 la routine &#8220;<strong>Envoyer 14 param\u00e8tres au PSG8912<\/strong>&#8220;. Il faut bien s\u00fbr implanter tables et routine en Ram pour d\u00e9couvrir ces nouveaux sons. <em>Vous trouverez le programme de Gilles Clavequin dans le fichier PONGPCHHH.TAP accompagnant cet article<\/em>.<br> Pour en revenir aux exp\u00e9riences de Bruno Trinquier de la Valette et Bruno Bouchaud, ces auteurs ont quand m\u00eame r\u00e9ussi \u00e0 rep\u00e9rer (parmi les 65 536 possibilit\u00e9s de bruits !) quelques sons int\u00e9ressants. Pour quelqu&#8217;un de patient, il serait possible d&#8217;aller voir ce qu&#8217;il y a dans la m\u00e9moire aux adresses correspondantes et de recopier soigneusement les 14 octets qui s&#8217;y trouvent. Cela pourrait servir de base \u00e0 la mise au point de sons plus propres en peaufinant les valeurs pour qu&#8217;elles soient mieux adapt\u00e9es aux registres correspondants du PSG. Bon courage et n&#8217;oubliez pas de partager vos trouvailles\u2026<\/p>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/oric.bqtt.net\/wp-content\/uploads\/2020\/01\/PONGPCHH.tap\">PONGPCHH.TAP, le fichier de Th\u00e9oric n\u00b011<\/a><a href=\"https:\/\/oric.bqtt.net\/wp-content\/uploads\/2020\/01\/PONGPCHH.tap\" class=\"wp-block-file__button\" download>T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Mise en oeuvre du fichier PONGPCHHH.TAP correspondant au listing de Th\u00e9oric n\u00b011 :<\/strong> Avec Oric-1 faire CALL#A000 pour obtenir un PONG et CALL#A007 pour obtenir un PCHHH (qui ressemble plut\u00f4t \u00e0 TCHHH). Avec Atmos faire CALL#A00E pour obtenir un PONG et CALL#A015 pour obtenir un PCHHH.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Bibliographie<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">N&#8217;h\u00e9sitez pas \u00e0 consulter les excellents articles parus dans le CEO-mag sur la production des sons par l&#8217;Oric et notamment, parmi de nombreux autres :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>&#8220;Interruptions musicales&#8221; de Dominique P. (n\u00b099, pages 20 \u00e0 22).<\/li><li>&#8220;PLAY, MUSIC, SOUND&#8221; d&#8217;Andr\u00e9 C., Dominique P. et Claude S. (n\u00b035 \u00e0 39).<\/li><li>&#8220;Musique Maestro !&#8221; de Micka\u00ebl P. (n\u00b0143, pages 18 \u00e0 20; n\u00b0144, pages 13 \u00e0 15).<\/li><li>&#8220;Assembleur et sons sur Oric-1\/Atmos&#8221; de Fran\u00e7ois L. (n\u00b022, pages 5 et 6).<\/li><li>Les articles de Jean-Marie H. (n\u00b026, page 13; n\u00b027, page 16; n\u00b029, page 9; n\u00b031, page 6; n\u00b034, page 13; n\u00b035, pages 13 et 14; n\u00b037, page 10; n\u00b038, pages 7 et 8; n\u00b042, page 9).<\/li><li>&#8220;Musique pour votre Oric&#8221; d&#8217;Alain W. (n\u00b079, pages 4 \u00e0 6; n\u00b080, pages 6 et 7; n\u00b081, pages 11 et 12; n\u00b082, pages 11 et 12).<\/li><li>Sans oublier la s\u00e9rie &#8220;Musique Maestro ! initi\u00e9e par Dominique P. et Claude S., &#8220;consacr\u00e9e \u00e0 l&#8217;Atmos st\u00e9r\u00e9ophonique.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>par Andr\u00e9 C. Une info erron\u00e9e et hop, la l\u00e9gende est en marche! L&#8217;article bien connu &#8220;Votre Oric fait du bruit&#8221; paru dans Th\u00e9oric n\u00b01, page 6 concerne l&#8217;Oric-1 mais en fait \u00e7a marche aussi (avec plus ou moins les m\u00eames r\u00e9sultats) sur l&#8217;Atmos. L&#8217;auteur (anonyme) est parvenu \u00e0 produire des sons avec des CALL [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1208,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[337,22,309,318],"tags":[665,895],"class_list":["post-1186","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-337","category-ceomag","category-magazine","category-software","tag-ceomag356","tag-theoric"],"_links":{"self":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts\/1186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/comments?post=1186"}],"version-history":[{"count":0,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts\/1186\/revisions"}],"wp:attachment":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/media?parent=1186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/categories?post=1186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/tags?post=1186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}