! Segment 7 I/O layout included %end %of %list ! Layout of segment 7: ALL I/O status variables live here. ! Hence any process calling MAP VIRT (this id, 7, 7) can pick ! up entire state of this process' I/O. ! See e.g. new IMP-77 compiler control process. Each pass maps its ! Seg 7 onto that of control process, and control proc. performs ! all opening/closing of files instead of individual passes. Hence ! less code is required to support each pass, easing shoe-horning ! problems! %record %format seg7fm ( %c %string(*)%name param str, { ->string param from parent via loader } %integer load flag, { Type of load: generally ignored? } %byte unit, fsys, { Current disk + file system number } callid, strm0id, { Parent task, SER of TTY for this task } id, dummy1, { Real identity of this task } %integer gvar, { Var for GOT SYM - makes it go faster } %record(sdfm) %name inx, outx, { -> current stream descriptors } %string(31) prompt, { Current prompt string } %byte int char, dummy2, { Last int. Offset=8_60 *CRITICAL* } %integer instrmx, outstrmx, { Current stream numbers } %record(pf) p, { For all I/O Package message passing } %byte %array param space (8_76:8_237), { Covers 8_112:8_237 *CRITICAL* } %record(sdfm) %name %array %c in strm (0:max streams), { -> corresponding stream descs } out strm (0:max streams), { " " " " " " " " " } %record(sdfm) ttin, ttout, { TTY I/O stream descriptors } %byte %array tt in buff (0:127), { TTY I/O buffers } tt out buff (0:127), %record(sbfm) %array %c sb (1:max streams*2) { (Desc+buffer)s for file streams } %c ) ! Mapped onto virtual store by... %const %record(seg7fm) %name S7 == 8_160000 %list %end %of %file