DEF
 taille.res taille compteur ischaine INTEGER
 adr.lec adr.res adr.ecr POINTER
 car tmpcar marque CHAR
ENDDEF

adr.lec MGETI
adr.lec D1STO
ischaine MGETI
IF ischaine 10796 != THEN 514 ERROR ENDIF
5 INCD1
taille MGETI
5 INCD1
RLE1.asm INCLUDE
adr.lec D1RCL
taille 5 SUB taille STO
IF taille 16 < THEN EXIT ENDIF
taille 16 ADD taille.res STO
adr.res taille.res RESSTR
adr.res 10 ADD adr.ecr STO

adr.ecr D1STO
RLE2.asm INCLUDE
adr.ecr D1RCL
adr.ecr taille PUTI
0 marque STO
1 compteur STO
adr.lec tmpcar GETC
taille SR 1 SUB taille STO

INTOFF
WHILE taille 0 >
DO
  adr.lec car GETC
  taille DEC
  IF tmpcar car == THEN
    IF compteur 255 == THEN
      adr.ecr marque PUTC
      adr.ecr compteur PUTC
      adr.ecr tmpcar PUTC
      1 compteur STO
    ELSE
      compteur INC
    ENDIF
  ELSE
    @NWRITE GOSUB
    car tmpcar STO
    1 compteur STO
  ENDIF
ENDWHILE
@NWRITE GOSUB
INTON
DROP
adr.ecr adr.res STRCALC
adr.res PUSHOBJ



@NWRITE PROC
DEF
ENDDEF
 IF compteur 3 > THEN
   adr.ecr marque PUTC
   adr.ecr compteur PUTC
   adr.ecr tmpcar PUTC
 ELSE
   WHILE compteur 0 !=
   DO
     adr.ecr tmpcar PUTC
     compteur DEC
   ENDWHILE
 ENDIF
ENDPROC