Called by parent program:
vc-send.setl (Section A.38 [vc-send.setl])
Calls child programs:
vc-comdev.setl (Section A.7 [vc-comdev.setl])
vc-comport.setl (Section A.8 [vc-comport.setl])
Source code: *
const yhwh = `vc-clear.setl';
-- ``Clear'' the Canon
printa (stderr, yhwh, `begins');
com_dev := filter (`exec setl vc-comdev.setl');
com_port := val filter (`exec setl vc-comport.setl');
rts_lo_time := val (command_line(1) ? `150'); -- ms
mcr := 4; -- modem control register
rts_bit := 2**1;
fd := fileno open (`/dev/port', `direct');
seek (fd, com_port + mcr);
mcr_val := abs getc (fd);
mcr_val bit_and:= bit_not rts_bit;
seek (fd, com_port + mcr);
putc (fd, char mcr_val); -- put RTS low
select (om, rts_lo_time); -- delay rts_lo_time ms
seek (fd, com_port + mcr);
mcr_val := abs getc (fd);
mcr_val bit_or:= rts_bit;
seek (fd, com_port + mcr);
putc (fd, char mcr_val); -- put RTS hi
select (om, 150); -- give the Canon 150 ms to catch its breath
printa (stderr, yhwh, `ends');