Retour sur ACME

&AE15 (664/6128) / &AE2E (464) : Récupérer le numéro de ligne de la dernière DATA lue

Auteur: Fredisland (Admin)
5.00
5 sur 1 votes

&AE15 (664/6128) / &AE2E (464) : Récupérer le numéro de ligne de la dernière DATA lue

Neuf fois sur dix, la lecture de longues séries de DATA ouvre la voie à une erreur lors de l’exécution d'un programme. Soit parce que trop de données sont lues, soit pas les bonnes au bon endroit suite à une mauvaise utilisation de l'instruction RESTORE, ou encore un "i" à la place d'un "1" ou d'un "l", u la lettre "O" à la place du chiffre zéro etc. Lorsque l'erreur survient, l'utilisateur est la plupart du temps renvoyé vers la ligne où sont lues les DATA, alors que connaître la dernière ligne de DATA lue serait davantage utile.

Le petit programme ci-dessous vous donne le moyen de récupérer le numéro de la dernière ligne de DATA lue. En fait, une seule ligne est importante, à laquelle vous donnerez un haut numéro, car c'est elle qui va chercher l'information dans deux octets. Vous accéderez à cette ligne par un simple GOTO. Les DATA des lignes 40 à 70 sont arbitraires et ne sont ici que pour créer un exemple :

10 'DERNIERE LIGNE DE DATA LUE
20 MODE 1
30 FOR i=1 TO 64:READ a$:NEXT
40 DATA 14,04,15,1C,18,1D,0C,05,0D,16,06,17,1E,00,1E,0E
50 DATA 07,0F,12,02,13,1A,19,1B,0A,03,0B,01,08,09,10,11
60 DATA 14,04,15,1C,18,1D,0C,05,0D,16,06,17,1E,00,1E,0E
70 DATA 07,0F,12,02,13,1A,19,1B,0A,03,0B,01,08,09,10,11
9990 '
9991 ' RECUPERATION DU NUMERO DE LA DERNIERE LIGNE DE DATA LUE
9992 '
9993 'Version CPC 664/6128
9994 REM A=PEEK(&AE16)*256+PEEK(&AE15):b=PEEK(A+1)*256+PEEK(A):PRINT "DERNIERE DATA LUE EN LIGNE";b
9995 '
9996 'Version CPC 464
9997 REM A=PEEK(&AE2F)*256+PEEK(&AE2E):b=PEEK(A+1)*256+PEEK(A):PRINT "DERNIERE DATA LUE EN LIGNE";b

N'oubliez pas d'ôter le REM sur la ligne 9994 ou 9997 en fonction de votre machine (464 ou 664/6128).

&AE15 (664/6128) / &AE2E (464) : Récupérer le numéro de ligne de la dernière DATA lue

&AE15 (664/6128) / &AE2E (464) : Récupérer le numéro de ligne de la dernière DATA lue

Neuf fois sur dix, la lecture de longues séries de DATA ouvre la voie à une erreur lors de l’exécution d'un programme. Soit parce que trop de données sont lues, soit pas les bonnes au bon endroit suite à une mauvaise utilisation de l'instruction RESTORE, ou encore un "i" à la place d'un "1" ou d'un "l", u la lettre "O" à la place du chiffre zéro etc. Lorsque l'erreur survient, l'utilisateur est la plupart du temps renvoyé vers la ligne où sont lues les DATA, alors que connaître la dernière ligne de DATA lue serait davantage utile.

Le petit programme ci-dessous vous donne le moyen de récupérer le numéro de la dernière ligne de DATA lue. En fait, une seule ligne est importante, à laquelle vous donnerez un haut numéro, car c'est elle qui va chercher l'information dans deux octets. Vous accéderez à cette ligne par un simple GOTO. Les DATA des lignes 40 à 70 sont arbitraires et ne sont ici que pour créer un exemple :

10 'DERNIERE LIGNE DE DATA LUE
20 MODE 1
30 FOR i=1 TO 64:READ a$:NEXT
40 DATA 14,04,15,1C,18,1D,0C,05,0D,16,06,17,1E,00,1E,0E
50 DATA 07,0F,12,02,13,1A,19,1B,0A,03,0B,01,08,09,10,11
60 DATA 14,04,15,1C,18,1D,0C,05,0D,16,06,17,1E,00,1E,0E
70 DATA 07,0F,12,02,13,1A,19,1B,0A,03,0B,01,08,09,10,11
9990 '
9991 ' RECUPERATION DU NUMERO DE LA DERNIERE LIGNE DE DATA LUE
9992 '
9993 'Version CPC 664/6128
9994 REM A=PEEK(&AE16)*256+PEEK(&AE15):b=PEEK(A+1)*256+PEEK(A):PRINT "DERNIERE DATA LUE EN LIGNE";b
9995 '
9996 'Version CPC 464
9997 REM A=PEEK(&AE2F)*256+PEEK(&AE2E):b=PEEK(A+1)*256+PEEK(A):PRINT "DERNIERE DATA LUE EN LIGNE";b

N'oubliez pas d'ôter le REM sur la ligne 9994 ou 9997 en fonction de votre machine (464 ou 664/6128).