Macro: SUB$IMAGE$DEFINE
#IF (!0>0)
#IFSAME !1 VERTICAL // define a vertical set of windows
#DPUSH |CI-1 // vertical flag
#DPUSH !2 // push the start window number
#DPUSH !3 // and the number of windows
#SET ZG$ (!Zg+!3) // how many was that?
SUB$IMAGE$DEFINE !4 !5 !6 !7 !8 !9 // one more time
#ENDIF
#IFSAME !1 HORIZONTAL // horzontal (contiguous) windows
#DPUSH |CI-2 // horizontal flag
#DPUSH !2 // push the start window number
#DPUSH !3 // and the number of windows
#SET ZG$ (!Zg+!3) // how many was that?
SUB$IMAGE$DEFINE !4 !5 !6 !7 !8 !9 // one more time
#ENDIF
#IFSAME !1 RECTANGULAR // a rectangular array of windows
#DPUSH |CI-3 // the rect. flag
#DPUSH !2 // push the start window number
#DPUSH !3 // number of windows per row
#DPUSH !4 // number of rows
#SET ZG$ (!Zg+(!3*!4)) // not bad huh
SUB$IMAGE$DEFINE !5 !6 !7 !8 !9 // and again
#ENDIF
#IFSAME !1 VERTICAL RECTANGULAR HORIZONTAL // May look strange, but reduces
#ELSE // use of #if stack levels.
#DPUSH !1 // its just a single window def
#SET ZG$ !ZG // just add one
SUB$IMAGE$DEFINE !2 !3 !4 !5 !6 !7 !8 !9 // recurse
#ENDIF
#ENDIF