BASIC 64

émulateur rétro
Prêt
MONITEUR COULEUR

Touchez l'écran puis tapez comme sur la machine : LIST, RUN, LOAD"$",8… Échap = RUN/STOP, Page ↑ = RESTORE. Tapez en minuscules : Maj + lettre donne les caractères graphiques, comme à l'époque.

Programmes de démonstration

Le programme est chargé en mémoire puis lancé avec RUN. RUN/STOP l'interrompt, LIST l'affiche.

Supports

Image .d64 · lecteur 8

Cassette · .tap ou .t64

Cartouche · .crt

Disquette du navigateur · lecteur 8

Les programmes enregistrés avec SAVE"NOM",8 sont gardés dans ce navigateur.

Importer un programme

Collez un listing BASIC (une instruction numérotée par ligne) ou choisissez un fichier .d64, .t64, .tap, .crt, .prg, .bas ou .txt : il est chargé dès sa sélection. Vous pouvez aussi glisser un fichier sur l'écran. Les codes entre accolades comme {clr}, {wht} ou {rvon} sont reconnus.

Exporter le programme

Le fichier .prg est au format d'origine : il s'ouvre dans VICE ou sur une vraie machine. Le listing texte se réimporte tel quel.

Système d'exploitation

Par défaut, l'émulateur utilise son propre BASIC réécrit. Pour faire tourner les logiciels d'époque, démarrez-le avec les ROM d'origine que vous possédez : BASIC (8 Ko), KERNAL (8 Ko) et, en option, les caractères (4 Ko). On les trouve par exemple sur une vraie machine ou avec l'émulateur VICE. Elles restent dans ce navigateur.

Sans ROM d'origine

Open ROMs est un système libre écrit par l'équipe MEGA65, inclus ici pour essayer ce mode sans aucun fichier. Il est expérimental : son BASIC est très incomplet (FOR…NEXT n'y existe pas encore, par exemple). Il sert surtout à lancer des programmes en langage machine.

Open ROMs © Paul Gardner-Stephen et Roman Standzikowski, licence GNU LGPL v3. Code source : github.com/MEGA65/open-roms.

Aide

Clavier

ÉchapRUN/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éeRETURN : valide la ligne sous le curseur ; avec Maj, passe à la ligne sans valider
⌫ / Maj ⌫DEL / INST
Origine / Maj OrigineHOME / CLR (efface l'écran)
Ctrl 1…8 / Alt 1…8Couleurs 1 à 8 / couleurs 9 à 16
Ctrl 9 / Ctrl 0RVS ON / RVS OFF (inversion vidéo)
Maj lettre / Alt lettreCaractère graphique / graphique de la touche C=
Alt MajBascule majuscules / minuscules
F1…F8Touches de fonction (lisibles avec GET)
Flèches + TabJoystick 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 VColle du texte comme s'il était tapé

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 : 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), Son, Effet tube (lignes de balayage), 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 .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.

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é ligne par ligne pendant le balayage : un changement de registre en cours d'image (couleurs, mode, jeu de caractères, position des sprites) ne s'applique qu'aux lignes suivantes, ce qui permet les écrans partagés et le multiplexage des sprites. 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 vole 40 cycles au processeur toutes les 8 lignes et 2 cycles par sprite affiché. Sprites agrandis, multicolores, avec priorité, collisions et interruptions de collision.

SID 6581 synthétisé échantillon par échantillon : 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

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.

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. 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 : 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 exact à la ligne près, pas au cycle près : un changement fait au milieu d'une ligne s'applique à toute la ligne suivante, et les astuces qui en dépendent (bordures latérales ouvertes, FLD, étirement de sprites, données vidéo modifiées en cours de rangée) ne sont pas reproduites. Le filtre du SID est une approximation (la courbe réelle du 6581 varie d'une puce à l'autre), l'enregistrement sur cassette n'est pas possible, et le lecteur 1541 n'est pas émulé au niveau matériel : les disquettes protégées ou à chargeur rapide ne fonctionnent pas.