Super sympa, je viens de dépoussiérer mon C128D pour le rallumer à cette occasion !
J'en ai profité pour brancher sur la sortie vidéo 40 colonnes une petite télévision portative couleur THOMSON ayant un écran de 14".
Elle est à peine plus encombrante que mon moniteur C= 1084 qui maintenant peut rester en permanence en mode RGB pour assurer l'affichage 80 col.
Le Commodore C182D connaît la valeur de PI, j'ai donc pu simplifier le programme de
Ben. C'est l'avantage de pouvoir recopier à partir d'un code qui a déjà été bien éprouvé, on peut faire plus concis. J'obtiens exactement le même affichage graphique sur l'écran 40 col. que la capture d'émulateur de
Ben , mais uniquement en divisant le pas des boucles FOR pour R et T par deux (5 au lieu de 10).
Code : Tout sélectionner
10 SLOW:COLOR 0,RCLR(6):COLOR 4,RCLR(0):COLOR 1,RCLR(5):GRAPHIC 1,1
20 CS=SIN(π/12):CC=COS(π/12):FOR R=1.5 TO 99 STEP 1.5:Y=R*SIN(π*R/54)
30 FOR T=0 TO 355 STEP 5:A=π*T/180:X=R*COS(A):Z=R*SIN(A)
40 DRAW 1,160+X+Z*CC,60-Y-Z*CS:NEXT T,R:GRAPHIC 5
Explications:
Ligne 10: crée l'affichage graphique HD en (320x200 pixels) sur la sortie composite 40 col. en utilisant les couleurs de fond et d'écriture de l'écran RGB 80 col.
Ligne 20: Pré-calcul des deux SIN et COS constants pour la projection. Boucle FOR R mise à l'échelle pour faire disparaître le facteur .3 et pré-calculer la valeur de Y qui ne dépend pas de T.
Ligne 30: Boucle FOR T identique au programme de
Ben et calcul de X et Y
Ligne 40: Affichage du pixel graphique à l'aide de l'instruction DRAW sans utiliser les variables intermédiaires XP et YP et boucles successives de T et R.
L'instruction GRAPHIC 5 est facultative, elle permet d'afficher le READY. et le curseur sur l'écran 80 col. au cas où le programme ait été lancé depuis l'affichage texte 40 col. qui n'est plus visible.
L'avantage d'avoir les deux écrans disponibles et que l'on peut programmer sur l'écran 80 col. alors que le graphique et persistant sur l'autre écran.
Une caractéristique assez rare même de nos jour, les Commodore C128 ont deux sorties écrans simultanées. Mais en interne, il y a bien trois écrans indépendants : les deux terminaux texte 40 et 80 col. et l'affichage graphique soit HD (mode 1) ou Color (mode 3) recouvrant complètement (mode 1 et 3) ou non (mode 2 et 4) le terminal texte 40 col.
Utilisation:
Basculer sur l'écran 80 col éventuellement en pressant [ESC][ X ]
Sélectionner une couleur d'écriture à l'aide des touches de sélection.
La couleur du curseur sera celle du "chapeau" tracé
Lancer le programme par la commande RUN validée par [RETURN] ou [ENTER]
Profitez alors de près de 9 min de pur bonheur savoureux mais quelque peu hypnotique en observant comment le "chapeau" se dessine point par point dans une délicieuse (à défaut d'être rapide) farandole bien régulière.
La fin du programme est indiquée par l'apparition du curseur clignotant au début de la ligne juste en dessous de l'indication READY.
I ♥ C=
P.S.: Une version one liner est possible
Code : Tout sélectionner
1 GRAPHIC1,1:S=SIN(π/12):C=COS(π/12):FORR=1.5TO99STEP1.5:A=π*R/54:FORB=0TO6.2ST
EP.1:DRAW1,160+R*(COS(B)+C*SIN(B)),60-R*(SIN(A)+S*SIN(B)):NEXT:NEXT:GRAPHIC5
EDITé:
Patienter près de 9 min on observant comment le "chapeau" se dessine point par point