Bon voila j'ai tenté ça, je le passe pas en source tant que je ne suis pas sûr.
// C Source File
// Created 26/11/2004; 13:42:07
// programme freeware créé par squalyl^2 pour envoyer une liste d'octets sur le link sans protocole
// contact: squalyl^2 sur le forum www.yAronet.com
#define COMMENT_STRING "Utilitaire d'envoi de données low level en basic"
#define COMMENT_PROGRAM_NAME "bSendCalc"
#define COMMENT_VERSION_STRING "0.1.0.0 test"
#define COMMENT_VERSION_NUMBER 0,1,0,0 /* major, minor, revision, subrevision */
#include <tigcclib.h>
//on sait jamais...
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE ~FALSE
#endif
#define ARG_COUNT_ERROR -1
#define ARG_TYPE_ERROR -2
#define LINK_ERROR -3
//renvoie un nombre à tios en sortie de fonction
void return_tios(int i, char quit) {
push_quantum(END_TAG);
push_long_to_integer(i);
if(quit) exit(0);
return;
}
// Main Function
void _main(void)
{
ESI ap;
unsigned char *data;
int count,i,realcount;
if(ArgCount()!=1) {
//si on ne donne pas UN arg (liste_données) on sort
return_tios(ARG_COUNT_ERROR,TRUE);
};
//ici c'est bon on a un arg reste à savoir si c'est une liste
InitArgPtr(ap);
if(GetArgType(ap)!=LIST_TAG) {
//si on donne pas une liste on sort
return_tios(ARG_TYPE_ERROR,TRUE);
}
//ici c'est bon on a une liste
//on regarde la liste
ap--;
//comptage des octets dans la liste
count=RemainingArgCnt(ap);
//allocation
data=malloc(count*sizeof(char));
realcount=0;
for(i=0;i<count;i++) {
//pour chaque élément de la liste, regarde son type et ignore l'élément si ce n'est pas un entier positif
if(GetArgType(ap)==POSINT_TAG) {
realcount++;
data[i]=GetIntArg(ap)%256; //modulo 256 on veut des octets %)
}
//on pourrait traiter éventuellement les chaines de caractères mais faudrait prévoir la taille dans un premier scan
}
//ici on a scanné tous les éléms de la liste et on les a stocké dans le buffer si possible
//init du link
OSLinkOpen();
//envoi avec test de réussite
if(!LIO_SendData((void*)data,realcount)) {
//retour zéro, succès, renvoie le nb d'octets réellement envoyés.
return_tios(realcount,FALSE);
}
else return_tios(LINK_ERROR,FALSE);
//libération
OSLinkClose();
free(data);
return;
}
MIN_AMS = 2 et valeur de retour active dans les options de programme
ca compile chez moi en 627 bytes, mais j'ai pas pu tester.
la réception est encore plus simple, je la ferai plus tard.