LEX 'RWLEX' * (c) Copyright PPC Paris et l'Auteur 1987 CON(2) #E1 CON(2) 94 CON(2) 95 CON(5) 0 NIBHEX F REL(4) 1+(TXTBST) CON(4) 0 CON(5) 0 ************************************************** * RREC$(,) ************************************************** CON(3) (TXT001)-(TXTBST) RREC$ REL(5) RREC CON(1) 15 ************************************************** * WREC ,, ************************************************** CON(3) (TXT002)-(TXTBST) WREC REL(5) WREC CON(1) 13 TXTBST TXT001 CON(1) 9 NIBASC 'RREC$' CON(2) 94 token 94 TXT002 CON(1) 7 NIBASC 'WREC' token 95 CON(2) 95 TXTBEN NIBHEX 1FF ADDRCK EQU #1C5A5 ARGERR EQU #0BF19 ATNFLG EQU #2F442 Attn EQU 12 BSERR EQU #0939A CHKMAS EQU #425C COLLAP EQU #091FB COMCK+ EQU #032AE CONVUC EQU #152AA CSRW5 EQU #0ED2C D=AVMS EQU #1A460 DEVPAR EQU #1BF0 DRANGE EQU #1B076 DVCSPp EQU #7925 EXPEX- EQU #0F178 EXPEXC EQU #0F186 EXPPAR EQU #03FD9 EXPR EQU #0F23C EXPRDC EQU #05922 FIXDC EQU #05493 GETERR EQU #6791 GETMBX EQU #3B62 GETPIL EQU #6E0B GNXTCR EQU #03064 HEXASC EQU #17148 I/OFND EQU #118BA ID EQU #E1 IVEXPe EQU #02E35 LEXPIL EQU #FF MEMERR EQU #0944D MINTK EQU 94 MTHSTK EQU #2F599 NXTSTM EQU #08A48 OUTBY+ EQU #02CE5 PACKd EQU #7B4A POP1S EQU #0BD38 R3=D10 EQU #03526 R RNDAHX GOSBVL ADDRCK VÅrification de la validitÅ * de l'adresse (2e param.) C=B A GOC EXEC00 rndahx GOSBVL RNDAHX GONC ivarg D1=D1+ 16 C=A A EXEC00 RSTK=C ) adresse dans la pile de * ) retour GOSBVL REVPOP Renversement de la chaÑne * sur la Mathstack. C=0 A ) La longueur de la chaÑne LC(3) reclen ) est-elle de 256 octets ? ?A#C A GOYES ivarg Si non => ERREUR C=RSTK ) Restitution de l'adresse A=C A ) de l'enregist. dans A(A) C=RSTK ) Mise en place de * ) l'adresse de la mÅmoire D=C A ) de masse dans D(X). * GOSUB JUMPER ******************* CON(5) WRITE# * E C R I T U R E * * ******************* GOC erreur Au retour de la * routine, si Cy=1, * nous sommes en prÅsence * d'une erreur. GOSBVL COLLAP Remise en place de MTHSTK GOVLNG NXTSTM BASIC continu ivarg GOVLNG ARGERR ************************************************** * La routine VERTAP verifie si le paramÉtre * pointÅ par D1 correspond bien È une mÅmoire * de masse d'identificateur appareil 16. ************************************************** Dvnfnd P= ePIL Classe d'erreur 32 È 47 C=0 A Erreur 32. GOC erreur B.E.T. VERTAP GOSUB JUMPER CON(5) DEVPAR Routine d'analyse du * spÅcificateur d' appareil * de la fonction. En sortie * D1 ^ Math Stack - 16 pour * un paramÉtre numÅrique. GOC erreur Si carry: ERREUR VERT10 ?D=0 X D[X] contient l'adresse du * pÅriphÅrique. Si D[X] = 0, GOYES Dvnfnd le pÅriphÅrique n'est pas * prÅsent. On renvoie * "Device Not Found" CD1EX ) Sauvegarde de D1 dans R0 * ) pour le retour R0=C ) È BASIC (fin). GOSUB JUMPER VÅrification de l'AID du CON(5) CHKMAS pÅriphÅrique (16). RTNNC Cy=0 : OK, Cy=1 : ERREUR ************************************************** * Traitement des erreurs HPIL. P indique la * classe d'erreur (mÅmoire de masse... etc.) et * C[0] le numÅro de l'erreur. Le retour È la * main loop se fait via BSERR. ************************************************** erreur ?P= eTAPE GOYES ERROR1 ?P= ePIL GOYES ERROR1 ?P# eABORT GOYES ERROR0 GOSUB JUMPER CON(5) GETMBX GOSUB atnchk GOC ERROR0 GOSUB JUMPER CON(5) GETERR GONC ERROR- ?P# eABORT GOYES ERROR1 ERROR- P= eABORT ERROR0 C=P 0 P= eNODEF ERROR1 C=P 1 P= 2 LCHEX FF A=C A P= 0 bserr GOVLNG BSERR Envoyez l'erreur ! Erreur GOC erreur Ralonge ************************************************** * R R E C $ ************************************************** NIBHEX CC22 Alpha ou un numÅrique pour * les deux paramÉtres. RREC CD0EX ) Sauvegarde de D0 dans RSTK=C ) la pile de retour GOSUB r RNDAHX GOSBVL ADDRCK VÅrification validitÅ GOC EXEC10 rndah2 GOSBVL RNDAHX GONC Ivarg D1=D1+ 16 B=A A EXEC10 AD1EX C=0 A LC(3) (reclen)+16 ( 210H = 528D * (Soit la longueur de * ( l'enregistrement plus * ( 16 quartets d'en-tÁte) A=A-C A A[A] = MS-528 GOSBVL D=AVMS C=A A C[A] = AVMEMS ?C