-- Visualisation methods for OAK. #USE "course.lib" #INCLUDE "oak.inc" #USE "basic" --{{{ PROC scope (CHAN SIGNAL in?, CHAN BYTE out!) PROC scope (CHAN SIGNAL in?, CHAN BYTE out!) WHILE TRUE SIGNAL sig: SEQ in ? sig SEQ j = 0 FOR (INT ROUND (sig[0] * 35.0)) + 40 out ! ' ' out ! '#' out ! '*c' out ! '*n' : --}}} --{{{ PROC printer (CHAN SIGNAL in?, VAL []BYTE label, SHARED CHAN BYTE out!) PROC printer (CHAN SIGNAL in?, VAL []BYTE label, SHARED CHAN BYTE out!) INITIAL REAL32 last IS 42.0: INITIAL INT count IS 1: WHILE TRUE SIGNAL sig: SEQ in ? sig SEQ i = 0 FOR BLOCK.SIZE CLAIM out! IF sig[i] <> last SEQ IF count <> 1 SEQ out.string (label, 0, out!) out.string (": (x", 0, out!) out.int (count, 0, out!) out.string (")*n", 0, out!) TRUE SKIP out.string (label, 0, out!) out.string (": ", 0, out!) out.real32 (sig[i], 2, 15, out!) out ! '*n' last := sig[i] count := 1 TRUE count := count + 1 : --}}} --{{{ PROC print.tap (CHAN SIGNAL in?, out!, VAL []BYTE label, SHARED CHAN BYTE scr!) PROC print.tap (CHAN SIGNAL in?, out!, VAL []BYTE label, SHARED CHAN BYTE scr!) CHAN SIGNAL b: PAR da (in?, [b!, out!]) printer (b?, label, scr!) : --}}}