// initmsg.sr


get "NEWMSG.DF"


// Outgoing Procedures

external	[
	InitMsg
	]


// Outgoing Statics

external	[
	mpIffFfs
	mpIffFfp
	]


// Incoming Procedures

external	[
	FfsYpos
	FfsClr
	FfsUp
	FfsDown
	FfsDxtb
	FfsXtb
	FfsSameLooks
	FfsSamePar
	FfsLeftmarg
	FfsColumn
	FfsSub
//	FfsTable
	move
	]


// Incoming Statics

// external


// Local Statics

static	[
	mpIffFfs
	mpIffFfp
	]


// Local Structures

// structure


// I N I T   M S G

let InitMsg(Alloc) be
[
let tmpIffFfs = table
	[
//	iw		offbitRt		cbit
	iwLook1 lshift 9	+ 8 lshift 5		+ 1	// iffTrailer
	iwLook1 lshift 9 	+ 7 lshift 5 	+ 1	// iffVisibuf
	iwLook1 lshift 9 	+ 5 lshift 5 	+ 1	// iffUl
	iwLook1 lshift 9 	+ 4 lshift 5 	+ 1	// iffVanish
	iwLook1 lshift 9 	+ 3 lshift 5 	+ 1	// iffBold
	iwLook1 lshift 9 	+ 2 lshift 5 	+ 1	// iffItalic
	iwLook1 lshift 9 	+ 1 lshift 5 	+ 1	// iffExt
	iwLook1 lshift 9 	+ 0 lshift 5 	+ 1	// iffVisible
	iwLook2 lshift 9 	+ 8 lshift 5 	+ 4	// iffFun
	iwLook2 lshift 9 	+ 0 lshift 5 	+ 8	// iffSuper

	(iwMinpar+0) lshift 9 	+ 0 lshift 5 	+ 16	// iffXrightmarg
	(iwMinpar+1) lshift 9 	+ 0 lshift 5 	+ 16	// iffXleftmarg
	(iwMinpar+2) lshift 9 	+ 0 lshift 5 	+ 16	// iffXleftmargf
	0					// iffProcYpos
	(iwMinpar+4) lshift 9 	+ 10 lshift 5 	+ 6	// iffLdln
	(iwMinpar+4) lshift 9 	+ 3 lshift 5 	+ 7	// iffLdhdr
	(iwMinpar+4) lshift 9 	+ 1 lshift 5 	+ 1	// iffRj
	(iwMinpar+4) lshift 9 	+ 0 lshift 5 	+ 1	// iffCenter

	0					// iffProcClr
	0					// iffProcUp
	0					// iffProcDown
	0					// iffProcDxtb
	0					// iffProcXtb

	(iwMinpar+4) lshift 9 	+ 0 lshift 5 	+ 2	// iffRjCenter
	0					// iffProcSameLooks
	0					// iffProcSamePar
	0					// iffProcLeftmarg
	0					// iffProcColumn
	(iwMinpar+4) lshift 9 	+ 2 lshift 5 	+ 1	// iffControl
	(iwMinpar+6) lshift 9 	+ 0 lshift 5 	+ 16	// iffYkeep
	0					// iffProcSub

	iwLook1 lshift 9 	+ 6 lshift 5 	+ 1	// iffOvstrike
	iwLook2 lshift 9 	+ 12 lshift 5 	+ 4	// iffTc

//	iwLook1 lshift 9 	+ 10 lshift 5 	+ 1	// iffUppercase
//	iwLook1 lshift 9 	+ 9 lshift 5 	+ 1	// iffLowercase
//	iwLook1 lshift 9 	+ 9 lshift 5 	+ 2	// iffCase
//	0					// iffProcTable
 	]
mpIffFfs = Alloc(iffMax)
move(tmpIffFfs, mpIffFfs, iffMax)
mpIffFfs ! iffProcYpos = FfsYpos
mpIffFfs ! iffProcClr = FfsClr
mpIffFfs ! iffProcUp = FfsUp
mpIffFfs ! iffProcDown = FfsDown
mpIffFfs ! iffProcDxtb = FfsDxtb
mpIffFfs ! iffProcXtb = FfsXtb
mpIffFfs ! iffProcSameLooks = FfsSameLooks
mpIffFfs ! iffProcSamePar = FfsSamePar
mpIffFfs ! iffProcLeftmarg = FfsLeftmarg
mpIffFfs ! iffProcColumn = FfsColumn
mpIffFfs ! iffProcSub = FfsSub
// mpIffFfs ! iffProcTable = FfsTable

let tmpIffFfp = table
	[
//	fParop	fProcval	fArgDep		carg
					0	// iffTrailer
					0	// iffVisibuf
					0	// iffUl
					0	// iffVanish
					0	// iffBold
					0	// iffItalic
					0	// iffExt
					0	// iffVisible
					0	// iffFun
					1	// iffSuper

	ffpParop				+1	// iffXrightmarg
	ffpParop				+1	// iffXleftmarg
	ffpParop				+1	// iffXleftmargf
	ffpParop	+ffpProcval		+1	// iffProcYpos
	ffpParop				+1	// iffLdln
	ffpParop				+1	// iffLdhdr
	ffpParop				+0	// iffRj
	ffpParop				+0	// iffCenter

		ffpProcval			+0	// iffProcClr
	ffpParop	+ffpProcval			+0	// iffProcUp
	ffpParop	+ffpProcval			+0	// iffProcDown
	ffpParop	+ffpProcval			+1	// iffProcDxtb
	ffpParop	+ffpProcval	+ffpArgDep	+1	// iffProcXtb

	ffpParop				+0	// iffRjCenter
		ffpProcval			+2	// iffProcSameLooks
	ffpParop	+ffpProcval			+1	// iffProcSamePar
	ffpParop	+ffpProcval			+2	// iffProcLeftmarg
	ffpParop	+ffpProcval			+2	// iffProcColumn
	ffpParop				+0	// iffControl
	ffpParop				+1	// iffYkeep
		ffpProcval			+1	// iffProcSub

					0	// iffOvstrike
					0	// iffTc

//					0	// iffUppercase
//					0	// iffLowercase
//					0	// iffCase
//	ffpParop	+ffpProcval	+ffpArgDep	+1	// iffProcTable
	]
mpIffFfp = Alloc(iffMax)
move(tmpIffFfp, mpIffFfp, iffMax)
] // end InitMsg