%recordformat desc fm(%integer l, a) %externalintegerfnspec init %alias "SMG$INIT_TERM_TABLE_BY_TYPE" %c (%integername type, {%byte, really} %integername address, %record(desc fm)%name name) %externalroutinespec del %alias "SMG$DEL_TERM_TABLE" %recordformat IOSB fm(%short status, length, %integer extra) %recordformat dvi fm(%short length, code, %integer address, length address) %systemintegerfnspec getdviw(%integer efn, chan, %record(desc fm)%name devnam, %record(dvi fm)%name itmlst, %record(IOSB fm)%name IOSB, %integer astadr, astprm, nullarg) %constinteger dvi dev class = 4 %constinteger dvi dev type = 6 %constinteger dc term = 16_42 %externalstring(127)%fnspec translate(%string(127) what) %externalstring(127)%fn terminal model %alias "INET_TERMINAL_MODEL" %ownstring(3) device = "TT:" %record(desc fm) tt, name %record(IOSB fm) IOSB %record(dvi fm) t, class, type %integer status, tt class, tt type, dummy, i, l %string(31) terminal name, translating, translated %bytename ch tt_l = length(device); tt_a = addr(device) + 1 t = 0 class_length = 4; class_code = dvi dev class class_address = addr(tt class); class_length address = addr(dummy) type_length = 4; type_code= dvi dev type type_address = addr(tt type); type_length address = addr(dummy) status = getdviw(0, 0, tt, type, IOSB, 0, 0, 0) %signal 10, 99, status %if status & 1 = 0 %signal 10, 99, IOSB_status %if IOSB_status & 1 = 0 %signal 10, 98, tt class %unless tt class = dc term name_l = 31; name_a = addr(terminal name) + 1 status = init(tt type, dummy, name) %signal 10, 97, status %if status & 1 = 0 length(terminal name) = 31; l = 0 %for i = 1, 1, 31 %cycle ch == charno(terminal name, i) %exit %if ch <= ' ' ch = ch - 'a' + 'A' %if 'a' <= ch <= 'z' l = l + 1 %repeat length(terminal name) = l translating = "TT_MAP_" . terminal name translated = translate(translating) %result = translated %if translated # translating %result = terminal name %end %end %of %file