Clavier
| Échap | RUN/STOP : interrompt un programme BASIC (et le langage machine en BASIC intégré) |
| Page ↑ | RUN/STOP + RESTORE : arrête tout et remet l'écran d'origine |
| Entrée / Maj Entrée | RETURN : valide la ligne sous le curseur ; avec Maj, passe à la ligne sans valider |
| ⌫ / Maj ⌫ | DEL / INST |
| Origine / Maj Origine | HOME / CLR (efface l'écran) |
| Ctrl 1…8 / Alt 1…8 | Couleurs 1 à 8 / couleurs 9 à 16 |
| Ctrl 9 / Ctrl 0 | RVS ON / RVS OFF (inversion vidéo) |
| Maj lettre / Alt lettre | Caractère graphique / graphique de la touche C= |
| Alt Maj | Bascule majuscules / minuscules |
| F1…F8 | Touches de fonction (lisibles avec GET) |
| Flèches + Tab | Joystick pendant un programme (Tab = feu) : port 2 par défaut, lu en PEEK(56320) ; le bouton « Joystick » le passe sur le port 1 (PEEK(56321)) |
| Ctrl V | Colle du texte comme s'il était tapé |
| F9 / F10 | Sauvegarde / restauration rapide de l'état complet de la machine |
Tapez en minuscules : les lettres s'affichent en majuscules, comme sur la machine. Sur mobile, touchez l'écran ou la touche ⌨ pour faire apparaître le clavier.
Boutons et menus
Sous l'écran : 🕹 (joystick tactile, affiché d'office sur écran tactile), RUN/STOP, RESTORE, curseurs, inversion vidéo, C= ⇧ (majuscules/minuscules), F1 à F7, FEU (tir du joystick) et les 16 couleurs. Sur le moniteur : Turbo (vitesse maximale au lieu de celle d'origine), Synchro écran (voir ci-dessous), Son, Effet tube (filtre du moniteur cathodique : masque RVB, balayage, courbure, halo et rémanence — réglable dans Périphériques, section Écran), Joystick 2 / 1 (port utilisé) et Reset (redémarrage, mémoire effacée).
Programmes : démonstrations prêtes à lancer. Supports : disquette .d64, cassette .tap ou .t64, cartouche .crt et disquette du navigateur. Importer : listing collé, ou fichier .zip (décompressé automatiquement ; les autres disquettes de l'archive restent disponibles dans Supports), .d64, .t64, .tap, .crt, .prg, .bas, .txt (vous pouvez aussi le glisser sur l'écran). Exporter : programme en mémoire en .prg, en .txt ou copié. Système : BASIC intégré ou ROM d'origine.
Modèle de machine
Menu Système : C64 d'origine (puce vidéo 6569, SID 6581) ou C64C (puce vidéo 8565, SID 8580). Le changement est immédiat. Le son diffère nettement (filtre, voix digitalisées), et le 8565 affiche un pixel gris à l'endroit où une couleur est changée en pleine ligne, comme la vraie puce.
Moniteur (débogueur)
Bouton Moniteur : panneau façon VICE sous le clavier. Pause, pas à pas (z), pas par-dessus un JSR (n), sortie du sous-programme (ret), reprise (g) ou jusqu'à une adresse (until). Points d'arrêt, éventuellement conditionnels (break c000 if a == 05, ou sur une case mémoire : if @d012 >= 80), watchpoints en lecture ou écriture sur une plage (watch store d020), trace des 20 000 dernières instructions avec registres, ligne et cycle de balayage (trace on, trace save pour la télécharger). Désassembleur, affichage et modification de la mémoire (m, >, f), assembleur ligne à ligne (a c000 lda #$05), registres (r pc=c000), état des puces (io), vue de la mémoire vive seule (bank ram) et du lecteur 1541 émulé (dev 8). La lecture depuis le moniteur n'a aucun effet de bord sur les puces. Tapez h dans le moniteur pour la liste complète.
Sauvegardes d'état
Menu États : cinq emplacements (dont la sauvegarde rapide, F9 pour sauver, F10 pour revenir), avec miniature et date, gardés dans ce navigateur. Un état peut aussi être exporté dans un fichier .c64s et réimporté ailleurs. En BASIC intégré, la sauvegarde n'est pas possible pendant un INPUT ou un chargement en cours.
Cadence d'affichage
Le C64 européen produit 50 images par seconde. Sur un écran à 50 ou 100 Hz, chaque image est affichée au bon moment et le bouton Synchro écran s'active tout seul. Sur un écran à 60 Hz, deux choix : en temps réel (par défaut), la vitesse est exacte mais une image sur six est répétée, ce qui donne un léger à-coup dans les défilements ; avec Synchro écran, chaque rafraîchissement montre une nouvelle image, les défilements sont parfaitement fluides, mais la machine (et donc la musique) tourne 20 % plus vite. Survolez le bouton pour voir la fréquence mesurée de votre écran.
BASIC intégré (mode par défaut)
Instructions : PRINT, INPUT, GET, LET, IF…THEN, GOTO, GOSUB, RETURN, FOR…TO…STEP, NEXT, ON…GOTO/GOSUB, DIM, READ, DATA, RESTORE, DEF FN, POKE, WAIT, SYS, END, STOP, CONT, LIST, RUN, NEW, CLR, LOAD, SAVE, VERIFY, REM. OPEN, CLOSE, CMD et PRINT# sont acceptés mais sans effet.
Fonctions : ABS, ATN, COS, EXP, INT, LOG, RND, SGN, SIN, SQR, TAN, FRE, POS, PEEK, LEN, VAL, ASC, CHR$, STR$, LEFT$, RIGHT$, MID$, TI, TI$. Les abréviations d'origine marchent (? pour PRINT, lettre + Maj lettre).
Dans ce mode, le code de la ROM n'est pas présent : seules ces routines du système sont simulées pour le langage machine : $FFD2 (afficher), $FFE4 (lire une touche), $FFF0 (curseur), $AB1E (texte), $BDCD (nombre), $FFDE/$FFDB (horloge), $E544 (effacer), $FFBA/$FFBD/$FFD5/$FFD8 (charger, enregistrer) et $FCE2 (SYS 64738, redémarrer). Un appel à une autre routine arrête le programme avec « ?ROM $XXXX NOT EMULATED ».
Matériel simulé
Processeur 6510 complet (instructions officielles et non documentées, mode décimal, cycle supplémentaire au franchissement de page, double écriture des instructions lecture-modification-écriture) cadencé à 985 kHz. SYS lance du code machine, qui revient au BASIC par RTS.
Affichage calculé cycle par cycle pendant le balayage (8 pixels par cycle) : chaque écriture du processeur dans un registre vidéo prend effet à sa position exacte dans la ligne, ce qui permet les changements de couleur en milieu de ligne, les écrans partagés, le multiplexage des sprites et l'ouverture des bordures (latérales, haute et basse) grâce aux bascules internes de la puce, reproduites fidèlement. Modes texte, multicolore, couleur de fond étendue et bitmap ; défilement fin horizontal et vertical, modes 38 colonnes et 24 lignes ; changement de banque ; ouverture des bordures haute et basse. La puce vidéo prend le bus au processeur aux cycles exacts du vrai matériel : cycles 15 à 54 des lignes de caractères (avec les 3 cycles de préavis d'une badline déclenchée tardivement) et deux cycles par sprite affiché, aux positions d'origine (58 à 63 puis 0 à 10) ; le processeur attend alors son tour. Sprites émulés avec la mécanique interne de la puce : compteur de données, bascule d'agrandissement vertical, accès mémoire aux cycles d'origine et registre à décalage déclenché par la position X du balayage. Cela reproduit le multiplexage vertical et horizontal (même sprite plusieurs fois sur une ligne), l'étirement et la compression (« sprite crunch »), les sprites dans les bordures ouvertes, la priorité, les collisions (y compris dans la bordure) et leurs interruptions.
SID synthétisé échantillon par échantillon, en version 6581 ou 8580 selon le modèle choisi (courbe de filtre, résonance, formes d'onde combinées et décalage continu propres à chacun), avec la vraie logique d'enveloppe (compteur 15 bits, d'où l'« ADSR bug » que certaines musiques exploitent) : trois voix (triangle, dent de scie, impulsion à largeur réglable, bruit, formes combinées), enveloppes ADSR, synchronisation et modulation en anneau, filtre passe-bas / passe-bande / passe-haut avec résonance, sons échantillonnés joués par le registre de volume. Le son est coupé en Turbo. Deux CIA complets : timers A et B (continu ou un seul coup, B pouvant compter les passages à zéro de A), horloge TOD, interruptions (IRQ pour le premier, NMI pour le second), matrice clavier dans les deux sens, joystick sur les ports 1 et 2. La mémoire vive cachée sous les E/S ($D000-$DFFF) et sous les ROM est accessible selon le registre $01 et les lignes de la cartouche.
ROM d'origine (menu Système)
Avec vos fichiers ROM, le vrai BASIC et le vrai KERNAL tournent sur le processeur émulé et le clavier passe par la matrice du C64. Un lecteur virtuel répond sur les lecteurs 8 et 9 : LOAD, SAVE, OPEN/PRINT#/INPUT# et canal de commande 15 (S pour effacer, N pour formater une disquette dans le lecteur 8). RUN/STOP devient une vraie touche : un programme en langage machine ne s'arrête que s'il la teste ; utilisez alors Page ↑ (RESTORE). La cassette n'est pas disponible dans ce mode.
Open ROMs, inclus, est expérimental : son BASIC est très incomplet, et seuls LOAD et SAVE fonctionnent avec le lecteur virtuel (pas d'OPEN ni de canal de commande). Même limite avec un KERNAL modifié, comme JiffyDOS.
Disquettes
Formats de disquette : .d64 (1541, 35 ou 40 pistes, avec ou sans octets d'erreur, reproduits par le 1541 émulé pour les protections), .g64, .d71 (1571, double face) et .d81 (1581, 3,5 pouces), lus et écrits par le lecteur virtuel. Une image .d64 (35 ou 40 pistes) insérée va dans le lecteur 8 ; elle est lisible et modifiable (SAVE écrit dans l'image, téléchargeable ensuite). La disquette du navigateur est alors sur le lecteur 9 ; sans image, elle est sur le lecteur 8. LOAD"$",8 affiche le répertoire ; LOAD"NOM",8 charge au début du BASIC, LOAD"NOM",8,1 à l'adresse du fichier ; LOAD"*",8,1 charge le premier programme. Sans numéro de lecteur, LOAD et SAVE simulent la cassette sur la disquette du navigateur (mode BASIC intégré uniquement).
Tout fichier .prg importé est chargé en mémoire et copié sur la disquette du navigateur : pour le recharger plus tard, LOAD"NOM",8,1 (ou ,9,1 si une image .d64 est insérée). Un programme en langage machine peut charger la suite d'un jeu par la routine système LOAD.
Lecteur 1541 émulé
Avec la ROM du lecteur (16 Ko, ou ses deux moitiés de 8 Ko, chargées dans Système) et le mode ROM, le lecteur 8 peut être émulé au niveau matériel (Supports → Lecteur 1541 émulé → Activer). Son propre processeur 6502 fait tourner le vrai DOS, avec ses deux VIA, le bus série câblé fil par fil (ATN, CLOCK, DATA) et le disque lu et écrit bit par bit en codage GCR, zones de vitesse comprises. Les chargeurs rapides et la plupart des protections fonctionnent alors, et les images .g64 (disquettes protégées) sont acceptées. Les chargements sont accélérés pendant que le moteur tourne ; les écritures sont reportées dans l'image quand le moteur s'arrête. La disquette du navigateur passe sur le lecteur 9 (virtuel).
Périphériques
Menu Périphériques : pavé numérique en second joystick, manettes USB/Bluetooth (jusqu'à deux), souris en paddles ou en souris 1351 (port 1), deuxième SID en stéréo ($D420, $D500 ou $DE00), imprimante sur le périphérique 4 (texte téléchargeable), extension mémoire REU de 128 Ko à 16 Mo. Le modem RS-232 n'est pas disponible : un navigateur ne peut pas ouvrir de connexion réseau brute.
Écran et tube cathodique
Le rendu passe par la carte graphique (WebGL) quand le navigateur le permet : le C64 est dessiné dans une texture, puis un filtre de tube cathodique l'affiche — masque de trous RVB, lignes de balayage, courbure, halo du phosphore et bavure de chrominance PAL. Les réglages sont dans Périphériques, section Écran : trois presets (Moniteur 1084, TV PAL, Démoscene) et six réglages fins, conservés d'une visite à l'autre. Le switch Effet tube coupe l'ensemble ; sans WebGL, un effet de lignes de balayage plus simple est utilisé, et le reste de la machine fonctionne à l'identique.
Cassettes et cartouches
Une archive .t64 contient des programmes prêts à charger : LOAD"NOM" (ou LOAD tout court pour le premier), dans les deux modes. Une cassette .tap est l'enregistrement fidèle de la bande : elle est lue impulsion par impulsion, ce qui permet aussi les chargeurs rapides des jeux, mais demande le mode ROM. Pour enregistrer, choisissez « Enregistrer une cassette vierge » puis tapez SAVE"NOM" : la cassette obtenue se télécharge en .tap. Tapez LOAD"",1 puis cliquez sur Lecture dans Supports (un fichier .tap glissé sur l'écran se charge tout seul) ; le chargement est accéléré par défaut.
Cartouches .crt gérées : Epyx FastLoad (avec son condensateur qui la désactive toute seule), Action Replay et Final Cartridge III (avec leur bouton de gel), normales (8 Ko, 16 Ko, Ultimax), Ocean, Magic Desk, System 3, Dinamic, Fun Play, Super Games, Simons' BASIC et EasyFlash (en lecture). Brancher une cartouche redémarre la machine en mode ROM, sur vos ROM d'origine si elles sont chargées, sinon sur Open ROMs.
Limites
L'affichage est calculé au cycle près, accès mémoire de la puce vidéo compris, avec les points gris du VIC récent ; une adresse où rien n'est branché renvoie l'octet que la puce vidéo vient de lire (bus « flottant »). Les formes d'onde combinées du SID restent une approximation des tables mesurées sur les vraies puces. Le filtre du SID est une approximation (la courbe réelle du 6581 varie d'une puce à l'autre), et le processeur du lecteur 1541 exécute ses instructions d'un bloc, mais chacun de ses changements sur le bus série (ATN, CLOCK, DATA) est daté et n'est vu du C64 qu'à son instant réel, au demi-cycle près : les poignées de main des chargeurs rapides ne sont plus déphasées. Sans la ROM du lecteur, seul le lecteur virtuel est disponible.