--- title: "SuperBASIC Tips & Tricks" type: "article" slug: "superbasic-tips-tricks" url: "http://localhost/article/superbasic-tips-tricks/" markdown_url: "http://localhost/article/superbasic-tips-tricks.md" published_at: "2026-11-11T11:07:29+00:00" modified_at: "2026-11-11T11:07:29+00:00" featured_image: url: "http://localhost/wp-content/uploads/2022/04/20230809-041332.jpg" excerpt: "A collection of SuperBASIC tips for the Sinclair QL: detecting monitor or TV mode with PEEK 163890 after a reset, disabling CTRL+SPACE break with POKE_L 163900, and side-by-side comparisons with ordinary BASIC for waiting for a key with INKEY$(-1), case-insensitive string comparison with ==, single-line loops and PAUSE. It also shows how to put comments into a disk directory by saving empty files with descriptive names, and notes that single quotes are faster than double quotes in PRINT and INPUT." post_tag: - name: "French language" slug: "french-language" taxonomy: "post_tag" url: "http://localhost/tag/french-language/" - name: "QL" slug: "ql" taxonomy: "post_tag" url: "http://localhost/tag/ql/" - name: "Superbasic (programming language)" slug: "superbasic-programming-language" taxonomy: "post_tag" url: "http://localhost/tag/superbasic-programming-language/" - name: "Tips and tricks" slug: "tips-and-tricks" taxonomy: "post_tag" url: "http://localhost/tag/tips-and-tricks/" model: - name: "Sinclair QL" slug: "sinclair-ql" taxonomy: "model" url: "http://localhost/model/sinclair-ql/" indiv: - name: "Real Gagnon" slug: "real-gagnon" taxonomy: "indiv" url: "http://localhost/indiv/real-gagnon/" publication: "QL_DOC" publication_r: id: 52925 title: "QL_DOC" type: "periodical" url: "http://localhost/periodical/ql_doc/" authors: "Réal Gagnon" issue: "3" issues_articles: - id: 76710 title: "QL_DOC n3" type: "issue" url: "http://localhost/issue/ql_doc-n3/" pages: "5-6" pubdate: "April-May 1988" archive_link: false volumeissue: "n3" --- # SuperBASIC Tips & Tricks **In English:** A collection of SuperBASIC tips for the Sinclair QL: detecting monitor or TV mode with PEEK 163890 after a reset, disabling CTRL+SPACE break with POKE_L 163900, and side-by-side comparisons with ordinary BASIC for waiting for a key with INKEY$(-1), case-insensitive string comparison with ==, single-line loops and PAUSE. It also shows how to put comments into a disk directory by saving empty files with descriptive names, and notes that single quotes are faster than double quotes in PRINT and INPUT. *Printed title: SUPERBASIC … TRUCS & ASTUCES. The article below is in French, as printed in QL_DOC n3 (April-May 1988).* *** ### .Détection du mode vidéo Cette méthode est valable seulement après un RESET. On vérifie la valeur présente à l’adresse 163890. Si on fait PEEK 163890 et on trouve 0, on est en mode MONITEUR, si c’est 1, on est en mode TV. ### .Mise hors fonction de BREAK On peut faire POKE_L(163900),0 , et CTRL+ESPACE n’a plus d’effet. Pour revenir à la normale, on remet la valeur originale à cette adresse. Cette valeur peut varier selon la version de ROM. Il s’agit donc de la garder en mémoire. ``` Ex. 10 LET breakon=PEEK_L(163900) 20 POKE_L (163900),0 30 FOR i=0 TO 1000 40 PRINT 'BREAK inactif...' 50 END FOR i 60 POKE_L (163900),breakon ``` ### .Mauvaise influence des autres BASICs Si l’on veut attendre qu’une touche soit appuyée pour que l’exécution d’un programme se poursuivre. ``` BASIC -> 100 a$=INKEY$:IF a$="" THEN GOTO 100 SUPERBASIC-> 100 a$=INKEY$(-1) ``` Le paramètre -1 attend qu’on appuie une touche. La variable a$ contient la touche appuyée. Si on veut vérifier la réponse a une question, on prend la précaution de vérifier la réponse majuscule/minuscule. ``` BASIC -> 100 IF rep$="O" OR rep$="o" THEN ... SUPERBASIC-> 100 IF rep$=="o": ... ``` On remarque que == vérifie les 2 alternatives soit le O ou le o . On note également que le THEN est optionnel, il est remplacé par : . Si l’on veut faire un boucle de temps. ``` BASIC -> 100 FOR i=0 TO 1000 : PRINT i, : NEXT i SUPERBASIC-> 100 FOR i=0 TO 1000 : PRINT i, ``` Lorsqu’on a une boucle sur une seule ligne, le NEXT ou le END FOR est optionnel. Pour une pause dans un programme. ``` BASIC -> 100 PRINT "Une touche pour continuer..." 200 a$=INKEY$:IF a$="" THEN GOTO 200 SUPERBASIC-> 100 PRINT "Une touche pour continuer...":PAUSE ``` La commande PAUSE sans paramètre est l’équivalent de INKEY$(-1) mais on a pas besoin de variable. *** Le directory d’une disquette ou d’un µdv peut être très long. Pour clarifier les choses, les programmes devraient avoir une extension pour définir le type de fichiers ( voir INPUT<->OUTPUT ). Ou encore mieux, il est possible de mettre des commentaires directement dans le directory. ``` EXEMPLE : NEW SAVE "flp1_Les programmes suivants" SAVE "flp1_font partie intégrante" SAVE "flp1_de ma collection d'utilitaires" SAVE "flp1_.............................." DIR flp1_ ``` Pour la commande PRINT : PRINT “test” et PRINT ‘test’ sont équivlents. La deuxième façon est à préférer car elle est plus rapide. Cela est vrai pour la commande INPUT aussi.