-- Em3270StatusPack -- Status window display for 3270 emulator -- Last edit by: Caro 25-May-84 16:22:07 -- Owner: Lui DIRECTORY AreaDefs USING [Area, Ht, Posn, posnNil, Rt], DispDefs USING [ Bm, DisplayLine, EraseRectangle, IsPosnVisibleInWn, OrBitmapInRectangle, Ptbm], Em3270Defs USING [Lpttrt3270schemadata], Em3270PrivDefs USING [EmHandle, Statusdata, wthBorder], Em3270StatusDefs USING [Accent, Code], FeatureDefs USING [features], Heap USING [Create], RgnDefs USING [Sc, Srt], SchemaDefs USING [Aqschrt, Lschema, Posn, Schrt], SchemaUtilDefs USING [RtFromRelrt], StandardDefs USING [Bv, Ct, Cv, Ix, Lpt], TraitDefs USING [MyData], TreeEltDefs USING [AncestorOfType], UtilDefs USING [bvDebug], ZoneMgrDefs USING [GetPredefinedMDSZone, GetPredefinedZone]; Em3270StatusPack: MONITOR IMPORTS DispDefs, FeatureDefs, Heap, SchemaDefs, SchemaUtilDefs, TraitDefs, TreeEltDefs, UtilDefs, ZoneMgrDefs EXPORTS Em3270StatusDefs, Em3270PrivDefs = BEGIN OPEN StandardDefs, SchemaDefs, Em3270StatusDefs; -- ==================== -- PUBLIC DATA -- ==================== htStatusArea: PUBLIC --READONLY-- Cv; -- ==================== -- PUBLIC TYPES -- ==================== Statusdata: PUBLIC TYPE = RECORD [ -- per-instance status area data, exported to PrivDefs srt: RgnDefs.Srt _ srtNil, -- the Srt we get at startup posn: Posn _ posnNil, -- posn of the 3270 lschema rgCodesOn: RgCodesOn _ ALL[FALSE], -- what codes are currently displayed accentSaved: Accent _ none -- current accent, saved for redisplay ]; LptStatusdata: --PUBLIC-- TYPE = LONG POINTER TO Statusdata; -- ==================== -- PRIVATE TYPES -- ==================== Aqbitmap: TYPE = ARRAY [0..16) OF WORD; Bitmap: TYPE = LONG POINTER TO Aqbitmap; Bm: TYPE = DispDefs.Bm; Posn: TYPE = AreaDefs.Posn; Ptbm: TYPE = DispDefs.Ptbm; Rt: TYPE = AreaDefs.Rt; RgCodesOn: TYPE = PACKED ARRAY Code OF Bv; Hpos: TYPE = Cv [0..ctBitmapsPerRow); Vpos: TYPE = Cv [0..ctRowsOfBitmaps); Info: TYPE = RECORD [vpos: Vpos, hpos: Hpos, bitmap: Bitmap]; -- info on where & what bitmap RgInfo: TYPE = LONG DESCRIPTOR FOR ARRAY Ix OF Info; BugType: TYPE = {noAccent}; -- ==================== -- PRIVATE DATA -- ==================== -- CONSTANTS ctBitmapsPerRow: Ct = 32; -- do not change ctRowsOfBitmaps: Ct = 2; -- do not change htBitmap, wthBitmap: Cv = 16; -- do not change wthBorder: Cv = Em3270PrivDefs.wthBorder; -- do not change htBetweenVDTAndLine: Cv = 4; thkLine: Cv = 4; htTopMargin, htBottomMargin, htBetweenRowsOfBitmaps: Cv = 10; srtNil: RgnDefs.Srt = [[0, 0], [0, 0]]; posnNil: AreaDefs.Posn = AreaDefs.posnNil; -- GLOBAL VARIABLES AqGlobals: TYPE = RECORD [ rgAccents: ARRAY Accent OF Bitmap, -- accent bitmaps rgrgInfo: ARRAY Code OF RgInfo, -- rgrgInfo[code] describes the status bits for code bmSpace, bmX, bmBoxWithLine, bmBoxNoLine, bmLittleMan, bmLittleManInBox, bmLeftArrow, bmRightArrow, bmNumberSign, bmTallBlackBox, bmInvert4, bmInvert6, bmOnlineA, bmOnlineB, bmQuestionMark, bmQuestionInBox, bmClock, bmFlashLH, bmFlashRH, bmPlus, bmMinus, bmHorLine, bmKey, bmUparrow, bmChevron, bmT, bmE, bmS, bmY, bmM, bmP, bmR, bmO, bmG, bmf, bmN, bmU, bmGtr, bmBoxWithHorLine, bmBlackBox, bmBlackBoxWithLine, bmUnderbar: Bitmap]; globals: LONG POINTER TO AqGlobals _ NIL; zPerm, zSess: UNCOUNTED ZONE _ NIL; zMDS: MDSZone _ NIL; Bug: SIGNAL[msg: BugType] = CODE; -- ==================== -- PUBLIC PROCEDURES -- ==================== InitInstance: PUBLIC ENTRY PROC RETURNS [LptStatusdata] = BEGIN ENABLE UNWIND => NULL; lptstatusdata: LptStatusdata _ zSess.NEW[Statusdata]; RETURN[lptstatusdata]; END; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DestroyInstance: PUBLIC ENTRY PROC [lptstatusdata: LptStatusdata] = BEGIN ENABLE UNWIND => NULL; zSess.FREE[@lptstatusdata]; END; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SetSrt: PUBLIC ENTRY PROC [lschema: SchemaDefs.Lschema, srt: RgnDefs.Srt] = BEGIN ENABLE UNWIND => NULL; lptstatusdata: LptStatusdata _ InstanceData[lschema]; lptstatusdata.srt _ srt; END; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DisplayCode: PUBLIC ENTRY PROC [ lschema: Lschema, code: Code, bvOn: Bv _ TRUE, accent: Accent _ none] = BEGIN ENABLE UNWIND => NULL; DisplayCodeInternal[lschema, code, bvOn, accent]; END; -- DisplayCode DisplayCodeInternal: INTERNAL PROC [ lschema: Lschema, code: Code, bvOn: Bv _ TRUE, accent: Accent _ none] = BEGIN ctbm: Ct; rginfo: RgInfo; rtBase, rt: Rt; lptstatusdata: LptStatusdata _ InstanceData[lschema]; IF code = accentPlusWhat THEN { IF bvOn AND (accent = none) THEN { IF UtilDefs.bvDebug THEN SIGNAL Bug[noAccent]; accent _ acute}; IF bvOn THEN lptstatusdata^.accentSaved _ accent}; rginfo _ globals.rgrgInfo[code]; rtBase _ Rtstatusarea[lschema, TRUE]; ctbm _ LENGTH[rginfo]; FOR ix: Ix IN [0..ctbm) DO rt.posn.area _ rtBase.posn.area; rt.posn.xc _ rtBase.posn.xc + wthBorder + wthBitmap*rginfo[ix].hpos; rt.posn.yc _ rtBase.posn.yc + htBetweenVDTAndLine + thkLine + htTopMargin + (htBitmap+htBetweenRowsOfBitmaps)*(rginfo[ix].vpos); rt.rs _ [wth: 16, ht: 16]; DispDefs.EraseRectangle[rt]; IF bvOn THEN { --$ ptbm: Ptbm _ PtbmFromBitmap[rginfo[ix].bitmap]; --$ DispDefs.OrBitmapInRectangle[rt, ptbm]; --$ DestroyPtbm[ptbm]}; bm: DispDefs.Bm _ [lpt: rginfo[ix].bitmap, cvWpl: 1]; DispDefs.OrBitmapInRectangle[rt, @bm];}; ENDLOOP; IF code = accentPlusWhat THEN { -- add the accent rt.posn.xc _ rtBase.posn.xc + wthBorder + wthBitmap*8; -- don't change this 8 rt.posn.yc _ rtBase.posn.yc + htBetweenVDTAndLine + thkLine + htTopMargin; DispDefs.EraseRectangle[rt]; IF bvOn THEN { --$ ptbm: Ptbm _ PtbmFromBitmap[globals.rgAccents[accent]]; --$ DispDefs.OrBitmapInRectangle[rt, ptbm]; --$ DestroyPtbm[ptbm]}}; bm: DispDefs.Bm _ [lpt: globals.rgAccents[accent], cvWpl: 1]; DispDefs.OrBitmapInRectangle[rt, @bm];}}; lptstatusdata^.rgCodesOn[code] _ bvOn; END; -- DisplayCodeInternal -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ClearStatusArea: PUBLIC ENTRY PROC [lschema: Lschema] = BEGIN ENABLE UNWIND => NULL; lptstatusdata: LptStatusdata _ InstanceData[lschema]; amtDontErase: NATURAL _ htBetweenVDTAndLine + thkLine + htTopMargin; rt: Rt _ Rtstatusarea[lschema, TRUE]; rt.posn.yc _ rt.posn.yc + amtDontErase; -- don't erase line rt.rs.ht _ rt.rs.ht - amtDontErase; DispDefs.EraseRectangle[rt]; lptstatusdata.rgCodesOn _ ALL[FALSE]; END; -- ClearStatusArea -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RepaintStatusArea: PUBLIC ENTRY PROC [lschema: Lschema, schrt: Schrt] = BEGIN ENABLE UNWIND => NULL; -- note we are ignoring schrt, sigh lptstatusdata: LptStatusdata _ InstanceData[lschema]; rt: Rt; posnStart, posnEnd: Posn; -- Erase old status area if on screen: lschemawn: Lschema _ TreeEltDefs.AncestorOfType[lschema, trtstdwnschema]; IF DispDefs.IsPosnVisibleInWn[lschemawn, lptstatusdata.posn] THEN DispDefs.EraseRectangle[Rtstatusarea[lschema, FALSE]]; DispDefs.EraseRectangle[rt _ Rtstatusarea[lschema, TRUE]]; -- erase the whole shebang posnStart _ [rt.posn.xc + wthBorder, rt.posn.yc + htBetweenVDTAndLine, rt.posn.area]; posnEnd _ [rt.posn.xc + rt.rs.wth, rt.posn.yc + htBetweenVDTAndLine, rt.posn.area]; DispDefs.DisplayLine[posnStart, posnEnd, thkLine, black]; FOR code: Code IN [Ready3276..accentPlusWhat) DO IF lptstatusdata.rgCodesOn[code] THEN DisplayCodeInternal[lschema, code, TRUE]; ENDLOOP; IF lptstatusdata.rgCodesOn[accentPlusWhat] THEN DisplayCodeInternal[lschema, accentPlusWhat, TRUE, lptstatusdata.accentSaved]; END; -- RepaintStatusArea -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ==================== -- PRIVATE PROCEDURES -- ==================== InstanceData: INTERNAL PROC [lschema: Lschema] RETURNS [LptStatusdata] = BEGIN data: LONG POINTER TO Em3270PrivDefs.EmHandle; my: Em3270Defs.Lpttrt3270schemadata _ TraitDefs.MyData[lschema, trt3270schema]; data _ my^.lptEmState; RETURN[data.status]; END; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Rtstatusarea: INTERNAL PROC [lschema: Lschema, bvUpdate: Bv] RETURNS [rt: Rt] = BEGIN lptstatusdata: LptStatusdata _ InstanceData[lschema]; posn: Posn _ IF bvUpdate -- bvUpdate => get new Posn for lschema THEN (lptstatusdata^.posn _ SchemaDefs.Posn[lschema]) ELSE lptstatusdata.posn; -- Add our stored srt to the current or stored posn of the schema -- RtFromRelrt wants a SHORT pointer to a Posn and a LONG pointer to a Srt! How bogus! rt _ SchemaUtilDefs.RtFromRelrt[@posn, @lptstatusdata.srt]; END; -- Rtstatusarea -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PtbmFromBitmap: PROC [bitmap: Bitmap] RETURNS [ptbm: Ptbm] = INLINE BEGIN ptbm _ zMDS.NEW[Bm _ [lpt: bitmap, cvWpl: 1]]; END; -- BmFromBitmap -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - DestroyPtbm: PROC [ptbm: Ptbm] = INLINE BEGIN zMDS.FREE[@ptbm]; END; -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - InitBitmaps: PROC = BEGIN OPEN globals^; bmSpace _ zPerm.NEW[Aqbitmap _ ALL[0]]; bmX _ zPerm.NEW[Aqbitmap _ [100010B, 140030B, 160070B, 170170B, 74360B, 36740B, 17700B, 7600B, 7600B, 17700B, 36740B, 74360B, 170170B, 160070B, 140030B, 100010B]]; bmBoxWithLine _ zPerm.NEW[Aqbitmap _ [100000B, 140000B, 160000B, 70000B, 34000B, 177774B, 107004B, 103404B, 101604B, 100704B, 177774B, 160B, 70B, 34B, 14B, 4]]; bmBoxNoLine _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 0, 0, 177774B, 100004B, 100004B, 100004B, 100004B, 177774B, 0, 0, 0, 0, 0]]; bmLittleMan _ zPerm.NEW[Aqbitmap _ [0, 7400B, 4400B, 4400B, 7400B, 3000B, 3000B, 177760B, 3000B, 3000B, 3000B, 7400B, 14600B, 30300B, 60140B, 140060B]]; bmLittleManInBox _ zPerm.NEW[Aqbitmap _ [177760B, 107420B, 104420B, 104420B, 107420B, 103020B, 103020B, 177760B, 103020B, 103020B, 103020B, 107420B, 114620B, 130320B, 160160B, 177760B]]; bmLeftArrow _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 400B, 1400B, 3400B, 7776B, 7776B, 3400B, 1400B, 400B, 0, 0, 0, 0, 0]]; bmRightArrow _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 200B, 300B, 340B, 77760B, 77760B, 340B, 300B, 200B, 0, 0, 0, 0, 0]]; bmNumberSign _ zPerm.NEW[Aqbitmap _ [0, 0, 31400B, 31400B, 177700B, 177700B, 31400B, 31400B, 177700B, 177700B, 31400B, 31400B, 0, 0, 0, 0]]; bmTallBlackBox _ zPerm.NEW[Aqbitmap _ [0, 77700B, 77700B, 77700B, 77700B, 77700B, 77700B, 77700B, 77700B, 77700B, 77700B, 77700B, 77700B, 0, 0, 0]]; bmInvert4 _ zPerm.NEW[Aqbitmap _ [177760B, 177760B, 177760B, 176360B, 175360B, 173360B, 167360B, 160160B, 177360B, 177360B, 177360B, 177360B, 177760B, 177760B, 0, 0]]; bmInvert6 _ zPerm.NEW[Aqbitmap _ [177760B, 177760B, 170360B, 167560B, 167760B, 167760B, 160360B, 167560B, 167560B, 167560B, 170360B, 177760B, 177760B, 177760B, 0, 0]]; bmOnlineA _ zPerm.NEW[Aqbitmap _ [600B, 600B, 1700B, 1100B, 3140B, 2040B, 7760B, 4020B, 14030B, 10010B, 10010B, 0, 0, 77776B, 77776B, 0]]; bmOnlineB _ zPerm.NEW[Aqbitmap _ [0, 7700B, 4040B, 4040B, 4040B, 7700B, 4040B, 4040B, 4040B, 4040B, 7700B, 0, 0, 77776B, 77776B, 0]]; bmQuestionMark _ zPerm.NEW[Aqbitmap _ [0, 0, 3700B, 4040B, 4040B, 4040B, 100B, 200B, 400B, 400B, 400B, 0, 400B, 400B, 0, 0]]; bmQuestionInBox _ zPerm.NEW[Aqbitmap _ [77774B, 40004B, 43704B, 44044B, 44044B, 44044B, 40104B, 40204B, 40404B, 40404B, 40404B, 40004B, 40404B, 40404B, 40004B, 77774B]]; bmClock _ zPerm.NEW[Aqbitmap _ [600B, 14630B, 14030B, 0, 60146B, 60346B, 700B, 140603B, 140603B, 600B, 60606B, 60606B, 600B, 14030B, 14630B, 600B]]; bmFlashLH _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 10000B, 14000B, 6000B, 3000B, 77777B, 601B, 302B, 144B, 57B, 0, 0, 0, 0]]; bmFlashRH _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177600B, 0, 0, 0, 0]]; bmPlus _ zPerm.NEW[Aqbitmap _ [0, 0, 400B, 400B, 400B, 400B, 400B, 37770B, 400B, 400B, 400B, 400B, 400B, 0, 0, 0]]; bmMinus _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 0, 0, 0, 0, 3770B, 0, 0, 0, 0, 0, 0, 0, 0]]; bmHorLine _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 0, 0, 0, 0, 177777B, 0, 0, 0, 0, 0, 0, 0, 0]]; bmKey _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 0, 34000B, 42000B, 43774B, 42164B, 34164B, 4, 0, 0, 0, 0, 0, 0]]; bmUparrow _ zPerm.NEW[Aqbitmap _ [0, 0, 400B, 1200B, 2100B, 4040B, 10020B, 16160B, 2100B, 2100B, 2100B, 2100B, 2100B, 3700B, 0, 0]]; bmChevron _ zPerm.NEW[Aqbitmap _ [0, 0, 400B, 1600B, 3700B, 7340B, 16160B, 14060B, 10020B, 0, 0, 0, 0, 0, 0, 0]]; bmT _ zPerm.NEW[Aqbitmap _ [0, 0, 77700B, 2000B, 2000B, 2000B, 2000B, 2000B, 2000B, 2000B, 2000B, 2000B, 2000B, 0, 0, 0]]; bmE _ zPerm.NEW[Aqbitmap _ [0, 0, 77600B, 40000B, 40000B, 40000B, 40000B, 77000B, 40000B, 40000B, 40000B, 40000B, 77600B, 0, 0, 0]]; bmS _ zPerm.NEW[Aqbitmap _ [0, 0, 37400B, 40200B, 40000B, 20000B, 14000B, 3000B, 400B, 200B, 200B, 40200B, 37400B, 0, 0, 0]]; bmY _ zPerm.NEW[Aqbitmap _ [0, 0, 40100B, 20200B, 10400B, 5000B, 2000B, 2000B, 2000B, 2000B, 2000B, 2000B, 2000B, 0, 0, 0]]; bmM _ zPerm.NEW[Aqbitmap _ [0, 0, 40100B, 60300B, 50500B, 45100B, 42100B, 42100B, 40100B, 40100B, 40100B, 40100B, 40100B, 0, 0, 0]]; bmP _ zPerm.NEW[Aqbitmap _ [0, 0, 76000B, 41000B, 40400B, 40400B, 40400B, 41000B, 76000B, 40000B, 40000B, 40000B, 40000B, 0, 0, 0]]; bmR _ zPerm.NEW[Aqbitmap _ [0, 0, 76000B, 41000B, 40400B, 40400B, 41400B, 76000B, 50000B, 44000B, 42000B, 41000B, 40400B, 0, 0, 0]]; bmO _ zPerm.NEW[Aqbitmap _ [0, 0, 17400B, 20200B, 40100B, 40100B, 40100B, 40100B, 40100B, 40100B, 40100B, 20200B, 17400B, 0, 0, 0]]; bmG _ zPerm.NEW[Aqbitmap _ [0, 0, 17400B, 20200B, 40000B, 40000B, 40000B, 40000B, 41700B, 40200B, 40200B, 20200B, 17400B, 0, 0, 0]]; bmf _ zPerm.NEW[Aqbitmap _ [0, 7000B, 10400B, 10400B, 10000B, 76000B, 10000B, 10000B, 10000B, 10000B, 10000B, 10000B, 10000B, 0, 0, 0]]; bmN _ zPerm.NEW[Aqbitmap _ [0, 0, 40100B, 60100B, 50100B, 44100B, 42100B, 41100B, 40500B, 40300B, 40100B, 40100B, 40100B, 0, 0, 0]]; bmU _ zPerm.NEW[Aqbitmap _ [0, 0, 20200B, 20200B, 20200B, 20200B, 20200B, 20200B, 20200B, 20200B, 20200B, 20200B, 17400B, 0, 0, 0]]; bmGtr _ zPerm.NEW[Aqbitmap _ [0, 0, 40000B, 60000B, 30000B, 14000B, 6000B, 3000B, 3000B, 6000B, 14000B, 30000B, 60000B, 40000B, 0, 0]]; bmBoxWithHorLine _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 0, 0, 177774B, 100004B, 100004B, 177774B, 100004B, 100004B, 177774B, 0, 0, 0, 0]]; bmBlackBox _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 0, 0, 177774B, 177774B, 177774B, 177774B, 177774B, 177774B, 0, 0, 0, 0, 0]]; bmBlackBoxWithLine _ zPerm.NEW[Aqbitmap _ [100000B, 140000B, 160000B, 70000B, 34000B, 177774B, 177774B, 177774B, 177774B, 177774B, 177774B, 160B, 70B, 34B, 14B, 4]]; bmUnderbar _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37774B]]; rgAccents[acute] _ zPerm.NEW[Aqbitmap _ [0, 400B, 1000B, 2000B, 4000B, 10000B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]; rgAccents[grave] _ zPerm.NEW[Aqbitmap _[0, 10000B, 4000B, 2000B, 1000B, 400B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]; rgAccents[circumflex] _ zPerm.NEW[Aqbitmap _ [0, 2000B, 5000B, 10400B, 20200B, 40100B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]; rgAccents[umlaut] _ zPerm.NEW[Aqbitmap _ [0, 0, 14300B, 14300B, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]; rgAccents[cedilla] _ zPerm.NEW[Aqbitmap _ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000B, 1000B, 1000B, 400B, 4200B, 3400B]]; rgAccents[none] _ bmSpace; END; -- InitBitmaps -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - InitRgrginfo: PROC = BEGIN OPEN globals^; lpt: Lpt; lpt _ zPerm.NEW[ARRAY [0..1) OF Info _ [[0, 0, bmInvert6]]]; rgrgInfo[Ready3276] _ DESCRIPTOR[lpt, 1]; lpt _ zPerm.NEW[ARRAY [0..1) OF Info _ [[0, 0, bmInvert4]]]; rgrgInfo[Ready3274] _ DESCRIPTOR[lpt, 1]; lpt _ zPerm.NEW[ARRAY [0..1) OF Info _ [[1, 0, bmOnlineA]]]; rgrgInfo[onlineA] _ DESCRIPTOR[lpt, 1]; lpt _ zPerm.NEW[ARRAY [0..1) OF Info _ [[1, 0, bmOnlineB]]]; rgrgInfo[onlineB] _ DESCRIPTOR[lpt, 1]; lpt _ zPerm.NEW[ARRAY [0..1) OF Info _ [[0, 1, bmTallBlackBox]]]; rgrgInfo[myJob] _ DESCRIPTOR[lpt, 1]; lpt _ zPerm.NEW[ARRAY [0..1) OF Info _ [[1, 1, bmLittleManInBox]]]; rgrgInfo[systemOperator] _ DESCRIPTOR[lpt, 1]; lpt _ zPerm.NEW[ARRAY [0..1) OF Info _ [[0, 1, bmQuestionInBox]]]; rgrgInfo[unowned] _ DESCRIPTOR[lpt, 1]; lpt _ zPerm.NEW[ARRAY [0..4) OF Info _ [[0, 1, bmT], [0, 2, bmE], [0, 3, bmS], [0, 4, bmT]]]; rgrgInfo[test] _ DESCRIPTOR[lpt, 4]; lpt _ zPerm.NEW[ARRAY [0..3) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmClock]]]; rgrgInfo[time] _ DESCRIPTOR[lpt, 3]; lpt _ zPerm.NEW[ARRAY [0..8) OF Info _ [[1, 5, bmX], [1, 6, bmSpace], [1, 7, bmS], [1, 8, bmY], [1, 9, bmS], [1, 10, bmT], [1, 11, bmE], [1, 12, bmM]]]; rgrgInfo[systemLock] _ DESCRIPTOR[lpt, 8]; lpt _ zPerm.NEW[ARRAY [0..3) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmBoxWithLine]]]; rgrgInfo[machineCheck] _ DESCRIPTOR[lpt, 3]; lpt _ zPerm.NEW[ARRAY [0..4) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmFlashLH], [0, 8, bmFlashRH]]]; rgrgInfo[communicationCheck] _ DESCRIPTOR[lpt, 4]; lpt _ zPerm.NEW[ARRAY [0..6) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmP], [0, 8, bmR], [0, 9, bmO], [0, 10, bmG]]]; rgrgInfo[programCheck] _ DESCRIPTOR[lpt, 6]; lpt _ zPerm.NEW[ARRAY [0..4) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmQuestionMark], [0, 8, bmPlus]]]; rgrgInfo[what] _ DESCRIPTOR[lpt, 4]; lpt _ zPerm.NEW[ARRAY [0..4) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmMinus], [0, 8, bmf]]]; rgrgInfo[minusFunction] _ DESCRIPTOR[lpt, 4]; lpt _ zPerm.NEW[ARRAY [0..3) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmKey]]]; rgrgInfo[securityKey] _ DESCRIPTOR[lpt, 3]; lpt _ zPerm.NEW[ARRAY [0..5) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmBoxNoLine], [0, 8, bmHorLine], [0, 9, bmBoxWithLine]]]; rgrgInfo[printerNotWorking] _ DESCRIPTOR[lpt, 5]; lpt _ zPerm.NEW[ARRAY [0..6) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmBoxNoLine], [0, 8, bmHorLine], [0, 9, bmBoxNoLine], [0, 10, bmClock]]]; rgrgInfo[printerBusy] _ DESCRIPTOR[lpt, 6]; lpt _ zPerm.NEW[ARRAY [0..7) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmBoxNoLine], [0, 8, bmHorLine], [0, 9, bmBoxNoLine], [0, 10, bmClock], [0, 11, bmClock]]]; rgrgInfo[printerVeryBusy] _ DESCRIPTOR[lpt, 7]; lpt _ zPerm.NEW[ARRAY [0..4) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmLittleMan], [0, 8, bmX]]]; rgrgInfo[operatorUnauthorized] _ DESCRIPTOR[lpt, 4]; lpt _ zPerm.NEW[ARRAY [0..5) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmLeftArrow], [0, 8, bmLittleMan], [0, 9, bmRightArrow]]]; rgrgInfo[goElsewhere] _ DESCRIPTOR[lpt, 5]; lpt _ zPerm.NEW[ARRAY [0..4) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmLittleMan], [0, 8, bmGtr]]]; rgrgInfo[moreThan] _ DESCRIPTOR[lpt, 4]; lpt _ zPerm.NEW[ARRAY [0..6) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmLittleMan], [0, 8, bmN], [0, 9, bmU], [0, 10, bmM]]]; rgrgInfo[nonNumeric] _ DESCRIPTOR[lpt, 6]; lpt _ zPerm.NEW[ARRAY [0..5) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmLittleMan], [0, 8, bmNumberSign], [0, 9, bmQuestionMark]]]; rgrgInfo[whatNumber] _ DESCRIPTOR[lpt, 5]; lpt _ zPerm.NEW[ARRAY [0..5) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmLittleMan], [0, 8, bmBoxWithHorLine], [0, 9, bmQuestionMark]]]; rgrgInfo[questionableCard] _ DESCRIPTOR[lpt, 5]; lpt _ zPerm.NEW[ARRAY [0..5) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmLittleMan], [0, 9, bmPlus], [0, 10, bmQuestionMark]]]; -- locn 8 blank for accent rgrgInfo[accentPlusWhat] _ DESCRIPTOR[lpt, 5]; lpt _ zPerm.NEW[ARRAY [0..4) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmMinus], [0, 8, bmS]]]; rgrgInfo[minusSymbol] _ DESCRIPTOR[lpt, 4]; lpt _ zPerm.NEW[ARRAY [0..5) OF Info _ [[0, 5, bmX], [0, 6, bmSpace], [0, 7, bmBoxNoLine], [0, 8, bmLeftArrow], [0, 9, bmLittleMan]]]; rgrgInfo[messageReceived] _ DESCRIPTOR[lpt, 5]; lpt _ zPerm.NEW[ARRAY [0..2) OF Info _ [[1, 10, bmFlashLH], [1, 11, bmFlashRH]]]; rgrgInfo[communicationReminder] _ DESCRIPTOR[lpt, 2]; lpt _ zPerm.NEW[ARRAY [0..3) OF Info _ [[1, 10, bmBoxNoLine], [1, 11, bmLeftArrow], [1, 12, bmLittleMan]]]; rgrgInfo[reserved] _ DESCRIPTOR[lpt, 3]; lpt _ zPerm.NEW[ARRAY [0..3) OF Info _ [[0, 20, bmN], [0, 21, bmU], [0, 22, bmM]]]; rgrgInfo[numeric] _ DESCRIPTOR[lpt, 3]; lpt _ zPerm.NEW[ARRAY [0..1) OF Info _ [[0, 23, bmUparrow]]]; rgrgInfo[upshift] _ DESCRIPTOR[lpt, 1]; lpt _ zPerm.NEW[ARRAY [0..1) OF Info _ [[0, 24, bmChevron]]]; rgrgInfo[insert] _ DESCRIPTOR[lpt, 1]; lpt _ zPerm.NEW[ARRAY [0..3) OF Info _ [[1, 20, bmBoxNoLine], [1, 21, bmHorLine], [1, 22, bmBoxNoLine]]]; rgrgInfo[printerAssignment] _ DESCRIPTOR[lpt, 3]; lpt _ zPerm.NEW[ARRAY [0..5) OF Info _ [[1, 20, bmBoxNoLine], [1, 21, bmHorLine], [1, 22, bmBoxNoLine], [1, 23, bmQuestionMark], [1, 24, bmQuestionMark]]]; rgrgInfo[whatPrinter] _ DESCRIPTOR[lpt, 5]; lpt _ zPerm.NEW[ARRAY [0..3) OF Info _ [[1, 20, bmBoxNoLine], [1, 21, bmHorLine], [1, 22, bmBlackBox]]]; rgrgInfo[printerPrinting] _ DESCRIPTOR[lpt, 3]; lpt _ zPerm.NEW[ARRAY [0..3) OF Info _ [[1, 20, bmBoxNoLine], [1, 21, bmHorLine], [1, 22, bmBlackBoxWithLine]]]; rgrgInfo[printerFailure] _ DESCRIPTOR[lpt, 3]; lpt _ zPerm.NEW[ARRAY [0..5) OF Info _ [[1, 20, bmBoxNoLine], [1, 21, bmHorLine], [1, 22, bmBoxNoLine], [1, 23, bmUnderbar], [1, 24, bmUnderbar]]]; rgrgInfo[assignPrinter] _ DESCRIPTOR[lpt, 5]; END; -- InitRgrginfo -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Init: PROC = BEGIN -- set up exported variable even if 3270 disabled in case somebody uses it htStatusArea _ htBetweenVDTAndLine + thkLine + htTopMargin + htBitmap + htBetweenRowsOfBitmaps + htBitmap + htBottomMargin; -- only allocate storage if 3270 emulation is enabled in product factoring bits IF FeatureDefs.features.bv3270Emulation THEN { --+!+ zPerm _ ZoneMgrDefs.GetPredefinedZone[permanent]; zPerm _ Heap.Create[7]; --+!+ zSess _ ZoneMgrDefs.GetPredefinedZone[session]; zMDS _ ZoneMgrDefs.GetPredefinedMDSZone[short]; globals _ zPerm.NEW[AqGlobals]; InitBitmaps[]; InitRgrginfo[]}; END; -- Init -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- ==================== -- MAINLINE CODE -- ==================== Init[]; END. -- Em3270StatusPack LOG 19-Feb-82 - Weissman - Created 3-Mar-82 - Weissman - Mods for change to schemadata containing an Srt instead of an Rt 11-Mar-82 - Weissman - Don't erase line when clearing status area, fix htStatusArea 16-Mar-82 - Weissman - Move systemLock down to 2nd row, fix bmS 17-Mar-82 - Weissman - Fix bmClock to be bolder 12-Apr-82 - Weissman - Move all per-instance data to hyperspace 13-Apr-82 - Weissman - Work on fixing scrolling of status area 19-Apr-82 - Weissman - MONITORize, make critical procs ENTRYs 4-Jan-83 - Weissman - Check product factoring before allocating storage; move globals to hyperspace 30-Nov-83 - Pettit - eliminate compiler warnings by initializing zones to NIL 9-Apr-84 14:58:33 - Caro - Fix bitmap ineffieciencies in DisplayCodeInternal 26-Apr-84 13:57:03 - Caro - Implemented fixes for DisplayCodeInternal 25-May-84 16:22:14 - Caro - Changed zPerm to private zone.