Horloge_bas (Clock Setter)

See all articles from QL_DOC n12
Author(s): Réal Gagnon
Publication: QL_DOC
Pub Details: QL_DOC n12 (Issue 12)
Date: October-November 1989
Pages: 3-4

In English: HORLOGE_BAS, a public-domain SuperBASIC utility by Réal Gagnon for setting the QL's internal clock. The date and time are adjusted with the cursor keys and confirmed with SPACE or ENTER; the result is saved to a HORL_DAT file on FLP1 and read back next time, so usually only the day and hour need changing. A four-line program creates the initial HORL_DAT, and a version compiled with Turbo or QLiberator can be run from a BOOT program. The full listing follows.

Printed title: HORLOGE_BAS. The article below is in French, as printed in QL_DOC n12 (October-November 1989).


HORLOGE_BAS est un utilitaire qui facilite la mise à jour de l’horloge interne du QL.

Le principe du programme est simple. Avec l’aide des touches curseurs ( <- et -> ) et la barre ESPACE ( ou la touche ENTER ), on ajuste les paramètres DATE et HEURE. Une fois terminée, un fichier HORL_DAT, contenant la date et l’heure, est écrit sur FLP1. Ce fichier sera lu, lors de la prochaine utilisation de HORLOGE_BAS. On aura alors tout simplement à ajuster le JOUR et l’heure si on le désire.

Avant d’utiliser HORLOGE_BAS, il faut créer le fichier HORL_DAT original. On peut procéder de la façon suivante:

10 OPEN_NEW #5,flp1_horl_dat
20 PRINT #5,"101189": REMark mois/jour/année
30 PRINT #5,"1000" : REMark heure/minute
40 CLOSE #5

Si ce programme est compilé avec TURBO ou QLIBERATOR par exemple, il est facile d’insérer un ligne du genre EXEC_W FLP1_HORLOGE_EXW pour mettre l’horloge à jour dans le programme BOOT. Une fois terminé , le programme BOOT poursuit son exécution.

> HORLOGE_BAS par RG-o89 pour QL_DOC

100 REMark mise à jour de l'horloge QLienne
110 REMark par Réal Gagnon MTL pour QL_DOC
120 REMark Logiciel Domaine Publique pour le SINCLAIR QL
130 :
140 LET dev$="flp1_"
150 OPEN#7,con_260x110a120x50
160 PAPER#7,7,2,2:CSIZE #7,2,0:INK#7,2:BORDER#7,2,7:CLS#7
170 PRINT#7," * HORLOGE v1 RG89 * ":INK#7,7
175 OVER#7,1:CURSOR#7,1,1:PRINT#7," * HORLOGE v1 RG89 *":INK#7,0
177 CURSOR#7,0,2:UNDER#7,1:PRINT#7," ":OVER#7,0
180 UNDER#7,0:PRINT #7,"<- & -> "" changent la valeur"
190 PRINT #7,"[ENTER] ou [ESPACE]"" valident la valeur"
200 :
210 lecture_horl_dat
220 modifie_date : modifie_heure
230 mise_a_jour_du_QL : ecriture_horl_dat
240 :
250 DEFine PROCedure lecture_horl_dat
260 OPEN #8,dev$&"horl_dat"
270 INPUT#8,anc_dat$;anc_heu$
280 CLOSE#8
290 END DEFine
300 :
310 DEFine PROCedure modifie_date
320 s$=" - " : AT#7,6,0 : PRINT #7,"DATE (mm - jj - aa)"
330 PRINT #7,TO 8,anc_dat$(1 TO 2)&s$&anc_dat$(3 TO 4)&s$&anc_dat$(5 TO)
340 n_dat$=entree_val$(anc_dat$,3,7,12,31,99,1)
350 END DEFine
360 :
370 DEFine PROCedure modifie_heure
380 AT#7,8,0 : PRINT#7,"HEURE (hh : mm)"
390 PRINT#7,TO 8,anc_heu$(1 TO 2)&" : "&anc_heu$(3 TO 4)
400 n_heu$=entree_val$(anc_heu$,2,9,24,59,0,0)
410 END DEFine
420 :
430 DEFine PROCedure mise_a_jour_du_QL
440 SDATE "19"&n_dat$(5 TO 6),n_dat$(1 TO 2),n_dat$(3 TO 4),
n_heu$(1 TO 2),n_heu$(3 TO 4),0
450 END DEFine
460 :
470 DEFine PROCedure ecriture_horl_dat
480 DELETE dev$&"horl_dat"
490 OPEN_NEW #8,dev$&"horl_dat'
500 PRINT#8,n_dat$n_heu$
510 CLOSE#8
520 END DEFine
530 :
540 DEFine FuNction entree_val$ (orig$,combien,ligne,lim1,lim2,lim3,min)
550 FOR boucle=0 TO combien-1
560 colonne=8+(boucle*5): AT#7,ligne,colonne : PAPER#7,7
570 xxx=orig$(((boucle*2)+1)TO(boucle*2)+2)
580 IF xxx<10:PRINT#7, "0";
590 PRINT #7,xxx
600 REPeat loop
610 touche=CODE(INKEY$(#7,-1))
620 SELect ON touche
630 =192
640 IF xxx>min : xxx=xxx-1
650 =200
660 SELect ON boucle
670 =0: IF xxx<lim1 : xxx=xxx+1
680 =1: IF xxx<lim2 : xxx=xxx+1
690 =2: IF xxx<lim3 : xxx=xxx+1
700 END SELect
710 =10,32: BEEP 5,100: EXIT loop
720 END SELect
730 AT#7,ligne,colonne
740 IF xxx<10:PRINT#7,"0";
750 PRINT#7,xxx
760 END REPeat loop
770 IF xxx<10
780 orig$(((boucle*2)+1)TO(boucle*2)+2)="0"&xxx
790 ELSE
800 orig$(((boucle*2)+1)TO(boucle*2)+2)=xxx
810 END IF
820 END FOR boucle
830 PAPER#7,7,2,2 : RETurn orig$
840 END DEFine

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.