<..frames..>
\def\HorFrames{\def\:tempa{cols}\:Frames}
\def\VerFrames{\def\:tempa{rows}\:Frames}
\Odef\:Frames[#1]#2{%
\PushStack\Frm:Stc{</frameset>}%
\HCode{<frameset\Hnewline \:tempa="#2" #1>}}
\def\NoFrames{%
\PopStack\Frm:Stc\:temp
\PushStack\Frm:Stc{</body></noframes></frameset>}
\HCode{<noframes><body>}}
\def\EndFrames{\PopStack\Frm:Stc\:tempc \HCode{\:tempc}}
\Odef\Frame[#1]#2{{\def\HREF:{ src=}\def\tag:A{frame}%
\def\empty:lnk{ /}\Link[#1]{#2}{}}}
-_-_-
Frames may be external or embedded. The embeded don’t need alternative for browsers that don’t recognize them.
<..framesNO..>
\def\p:Frames{\csname <.live.>\file:id\endcsname
\xdef:cs{<.live.>\file:id}{<.noframes noexpand.><./HCode NOFRAMES.>}%
\let\:Frames=\sb:Frames \sb:Frames }
\let\:Frames=\p:Frames
\Odef\sb:Frames[#1]#2{\HCode{<frameset\Hnewline \:tempa="#2" #1>}}
-_-_-
FrameSet can get the onLoad attribute.
<..initiate frames..>
\let\:Frames=\p:Frames
-_-_-
The \noexpand below is for getting the same definition as ‘\def\:temp{|</HCode NOFRAMES|>}’ above.
<..noframes noexpand..>
\noexpand -_-_-
<../HCode NOFRAMES..>
\HCode{<noframes>}%
-_-_-
<..framesNO..>+
\def\end:frames{\b:BODY\noexpand\HCode{\expandafter
\ifx \csname <.live.>\file:id\endcsname\:temp
</noframes></frameset>
\fi}\b:HTML}
-_-_-