'CARTPUS2 lecture et interpretation des donnees d'une TELECARTE ' RM - version du 23/12/99 ' utilise un tableau, pas de procedure MESURE, decodage des cartes T2G ' pas de detection de presence de carte (pour les nouveaux connecteurs) DIM bit%(256) ' tableau des bits de la carte CLS : INPUT "nom du fichier .CAR ?"; f$ IF f$ = "" THEN f$ = "CARTE" f$ = f$ + ".CAR" OPEN f$ FOR OUTPUT AS #1 INPUT "Adresse du port parallele (en general 888) ? ", s e = s + 1 ' e: registre de controle CLS OUT s, 250 ' RESET (W=0, RAZ=0, H passe a 1) RAZ actif si 0 OUT s, 248 ' H revient a 0 PRINT "CONTENU DE LA CARTE : " z = 0 ' z passe a 1 des qu'un bit de la carte = 0 n = 0 ' n : numero du bit de la carte FOR f = 1 TO 8 ' ligne FOR g = 1 TO 8 ' groupe de 4 bits FOR h = 1 TO 4 OUT s, 249 ' repos (W=0, RAZ=1, H=0) d = INP(e): d = (d AND 64) ' ACK (bit6) n = n + 1 IF d = 64 THEN PRINT #1, "1 "; : PRINT "1 "; : bit%(n) = 1 IF d <> 64 THEN PRINT #1, "0 "; : PRINT "0 "; : z = 1: bit%(n) = 0 OUT s, 251 ' UP (W=0, RAZ=1, H passe a 1) NEXT h PRINT #1, " "; : PRINT " "; NEXT g PRINT #1, : PRINT NEXT f PRINT : PRINT "fichier "; f$; " disponible sur le disque": PRINT CLOSE IF z = 0 THEN PRINT "Carte illisible ! Veuillez v‚rifier le sens d'introduction" BEEP GOTO Fin END IF a$ = "" FOR n = 92 TO 96 ' zone du type de carte IF bit%(n) = 1 THEN d$ = "1" ELSE d$ = "0" a$ = a$ + d$ NEXT n c$ = "de type inconnu": c = 0 IF a$ = "10011" THEN c$ = "de 120 UNITES": c = 120 IF a$ = "00110" THEN c$ = "de 50 UNITES": c = 50 IF a$ = "00101" THEN c$ = "de 40 UNITES": c = 40 PRINT : PRINT "CARTE "; c$ IF c = 0 THEN INPUT " Carte T2G ? (O/n) "; r$ IF r$ = "n" THEN GOTO Fin ELSE GOTO T2G END IF END IF anciennecarte: g = 0 ' nb d'unites (=1) grillees ou consommees FOR n = 107 TO 248 ' zone des unites consommees IF bit%(n) = 1 THEN g = g + 1 ' sur les anciennes cartes NEXT n GOTO suite T2G: c = 2 g = 0 FOR j = 82 TO 87 g = g + bit%(j) NEXT j g = g * 8 FOR j = 89 TO 95 g = g + bit%(j) NEXT j suite: PRINT g; "UNITES CONSOMMEES" IF (g > c AND c <> 2) THEN PRINT "CARTE ANORMALE" GOTO Fin END IF a$ = "" FOR n = 249 TO 256 ' zone des 8 derniers bits (anciennes cartes) IF bit%(n) = 1 THEN d$ = "1" ELSE d$ = "0" END IF a$ = a$ + d$ NEXT n IF c > 2 AND a$ = "11111111" THEN PRINT "CREDIT EPUISE" IF c > 2 AND a$ = "00000000" THEN PRINT "IL RESTE "; c - g; "UNITES" PRINT : PRINT : PRINT Fin: PRINT INPUT "tester une autre carte (O/n)"; r$ IF r$ <> "n" AND r$ <> "N" THEN RUN END