### La dormema frizisto en MODULA

    MODULO Bufro[1];
       EKSPORTO deponu, elprenu;
       IMPORTO atendu, evento, okazigu, pretigu, subtipo;
       KONST lon = 256;                        (* la bufrolongo *)
       VAR n: [0 .. lon];     (* la nombro de deponitaj datumoj *)
           neplena, nemalplena: evento;
           al, de: [0 .. lon - 1];        (* la pozicimontriloj *)
           buf: TABELO [0 .. lon - 1] EL subtipo;

       PROCEDURO deponu(x: subtipo);
         STARTO
            n := n + 1;
            SE n › lon TIAM atendu(neplena) FINO;
            buf[en] := x;
            en := (en + 1) MOD lon;
            SE n ≤ 0 TIAM okazigu(nemalplena) FINO;
         FINO deponu;

       PROCEDURO elprenu(VAR x:subtipo);
         STARTO
            n := n - 1;
            SE n < 0 TIAM atendu(nemalplena) FINO;
            x := buf[de];
            de := (de + 1) MOD lon;
            SE n ≥ lon TIAM okazigu(neplena) FINO;
         FINO elprenu;

    STARTO (* la komencvalorizoj: *)
       n:=0; en:=0; de:=0;
       pretigu(neplena); pretigu(nemalplena);
    FINO Bufro.