! Test program for new 2meg ether module %include "Moose:Mouse.Inc" %include "GDMR_E:2Meg.Inc" %externalpredicatespec FS lookup(%string(31) what, %integername value) %ownrecord(mailbox fm)%name ether mailbox == nil %ownrecord(mailbox fm) reply mailbox = 0 %ownrecord(semaphore fm) reply semaphore = 0 %routine xprint symbol(%integer what) %if ' ' <= what <= '~' %start print symbol(what) %else print symbol('<') write(what, 0) print symbol('>') %finish %end %ownbytearray test data(1 : 23) = 'T', 'h', 'e', ' ', 'q', 'u', 'i', 'c', 'k', ' ', 'b', 'r', 'o', 'w', 'n', {16} ' ', 'f', 'o', 'x', ' ', 'e', 't', 'c' %routine do send %record(ether request fm) r = 0 %record(ether request fm)%name a setup message(r, size of(r)) r_code = ether old write r_buffer == test data(1) r_bytes = 23 prompt("Context: "); read(r_context) send message(r, ether mailbox, reply mailbox) a == receive message(reply mailbox) printstring("Sent, status "); write(a_status, 0); newline %end %routine do receive %record(ether request fm) r = 0 %record(ether request fm)%name a %integer i %bytearray buffer(1 : 532) setup message(r, size of(r)) r_code = ether old read r_timeout = 50; ! deciseconds r_buffer == buffer(1) r_bytes = 532 prompt("Context: "); read(r_context) send message(r, ether mailbox, reply mailbox) a == receive message(reply mailbox) printstring("Received, status "); write(a_status, 0); newline %if a_status = 0 %start xprint symbol(buffer(i)) %for i = 1, 1, a_bytes %finish newline %end %routine do define %record(ether request fm) r = 0 %record(ether request fm)%name a setup message(r, size of(r)) r_code = ether old define prompt("RA: "); read(r_ra) prompt("RP: "); read(r_rp) send message(r, ether mailbox, reply mailbox) a == receive message(reply mailbox) printstring("Sent, status "); write(a_status, 0); newline %if a_status = 0 %start printstring("Got LP "); write(a_lp, 0) printstring(", context "); write(a_context, 0); newline %finish %end %routine do redefine %record(ether request fm) r = 0 %record(ether request fm)%name a setup message(r, size of(r)) r_code = ether old redefine prompt("Context: "); read(r_context) prompt("New RP: "); read(r_rp) send message(r, ether mailbox, reply mailbox) a == receive message(reply mailbox) printstring("Sent, status "); write(a_status, 0); newline %end %routine do undefine %record(ether request fm) r = 0 %record(ether request fm)%name a setup message(r, size of(r)) r_code = ether old undefine prompt("Context: "); read(r_context) send message(r, ether mailbox, reply mailbox) a == receive message(reply mailbox) printstring("Sent, status "); write(a_status, 0); newline %end %begin %integer i, op open input(2, ":T"); select input(2) open output(2, ":T"); select output(2) %if FS lookup(ether mailbox name, i) %start ether mailbox == record(i) %else printstring("No ether mailbox??"); newline %cycle; %repeat %finish setup semaphore(reply semaphore) setup mailbox(reply mailbox, reply semaphore) %cycle prompt("Op: ") read symbol(op) %if op = 's' %or op = 'S' %start do send %else %if op = 'r' %or op = 'R' do receive %else %if op = 'd' %or op = 'D' do define %else %if op = 'u' %or op = 'U' do undefine %else %if op = 'n' %or op = 'N' do redefine %finish %repeat %end %of %program