SUBROUTINE DRAW_SPY_WINDOW(MODE, START) C---------------------------------------------------------------------- C- C- Purpose and Methods : Draw the foreground of the Spy Window display C- C- Inputs : MODE The base to draw the display in. C- START The first word in the Datablock to display C- Outputs : screen output C- Controls: none C- C- Created 2-JUN-1992 Philippe Laurens, Steven Klocek C- Updated 2-JUL-1992 Philippe Laurens, Steven Klocek C- Display Framework/Datablock status C- C---------------------------------------------------------------------- IMPLICIT NONE INCLUDE 'LV1_MPOOL.PARAMS' INCLUDE 'LV1_MPOOL_RAW.INC' INCLUDE 'LV1_MPOOL_DERIVED.INC' INCLUDE 'LV1_MPOOL_FORMATTED.INC' C INCLUDE 'LEVEL1_LOOKUP.PARAMS' INCLUDE 'LEVEL1_CAL_TRIG.PARAMS' INCLUDE 'LEVEL1_FRAMEWORK.PARAMS' INCLUDE 'LEVEL1_TRIGGER_DATA_BLOCK.INC' C INCLUDE 'LV1_MON_SCREEN.INC' INCLUDE 'LV1_MON_SCREEN_LAYOUT.PARAMS' C INTEGER MODE, START C INTEGER COUNT, COUNT2, BIT INTEGER LINE CHARACTER*132 BUFFER C INTEGER TRULEN C CALL PUT_STRING(1, 1, 'Spy Window Display') CALL PUT_STRING(SW_DATE_L, SW_DATE_C, CURRENT_TIME) C IF (FRAMEWORK_RUNNING .EQV. .TRUE.) THEN IF (INFO_FRESH .EQV. .TRUE.) THEN BUFFER = 'Level 1: Running Information: Fresh' ELSE BUFFER = 'Level 1: Running Information: Stale' ENDIF ELSE IF (INFO_FRESH .EQV. .TRUE.) THEN BUFFER = 'Level 1: Paused Information: Fresh' ELSE BUFFER = 'Level 1: Paused Information: Stale' ENDIF ENDIF CALL PUT_STRING(SW_STATUS_L, SW_STATUS_C, & BUFFER(1:SW_STATUS_W)) C LINE = SW_FIRST_L C 100 FORMAT(Z4.4, I5, 2X, 8(X, Z4.4)) 200 FORMAT(Z4.4, I5, ' (15:0)', 3(X, 4(X, 4I1.1))) C IF (MODE .EQ. 16) THEN DO COUNT = START, MIN(START+(LINES-5)*8, DATA_BLOCK_LENGTH), & SW_HEX_PER_LINE C WRITE (BUFFER, 100) (COUNT-1)*2, COUNT, & (DATABLOCK(COUNT + COUNT2), & COUNT2 = 0, MIN(SW_HEX_PER_LINE-1, & DATA_BLOCK_LENGTH - COUNT)) C CALL PUT_STRING(LINE, 1, BUFFER(1:TRULEN(BUFFER))) LINE = LINE + 1 END DO C ELSE C DO COUNT = START, MIN(START+(LINES-5)*3, DATA_BLOCK_LENGTH), & SW_BIN_PER_LINE C WRITE (BUFFER, 200) (COUNT-1)*2, COUNT, & ( ( IBITS(DATABLOCK(COUNT + COUNT2), BIT, 1), & BIT = 15, 0, -1), & COUNT2 = 0, MIN(SW_BIN_PER_LINE-1, & DATA_BLOCK_LENGTH - COUNT) ) C CALL PUT_STRING(LINE, 1, BUFFER(1:TRULEN(BUFFER))) LINE = LINE + 1 END DO ENDIF C CALL MOVE_CURSOR_SAFE CALL FLUSH_SCREEN C---------------------------------------------------------------------- 999 RETURN END