*DECK ODAYFL
USETEXT NIPDEF
USETEXT PARAMS
PRGM ODAYFL; # DISPLAY CONTENTS OF NIP-S MEM #
STARTIMS;
#
*1DC ODAYFL
*
* 1. PROC NAME AUTHOR DATE
* ODAYFL E. GEE 86/09/25
*
* 2. FUNCTIONAL DESCRIPTION.
* DISPLAY THE CONTENTS OF NIP-S MEMORY IN OCTAL AND HEX.
*
* 3. METHOD USED.
* LOOP FOR EACH WORD TO BE DISPLAYED IN NAM DAYFILE.
* CONVERT CONTENTS OF WORD TO OCTAL DISPLAY.
* CONVERT CONTENTS OF WORD TO HEX DISPLAY.
* CALL OMSG TO DAYFILE THE DISPLAYED CONTENTS.
*
* 4. ENTRY PARAMETERS.
* PARAMS1 FWA TO DISPLAY CONTENTS OF
* PARAMS2 NO OF WORDS TO DISPLAY CONTENTS OF
*
* 5. EXIT PARAMETERS.
* NONE
*
* 6. COMDECKS CALLED AND SYMPL TEXTS USED.
* NIPDEF NIP CONSTANT DEFINITIONS
* PARAMS COMMON BLOCK FOR PASSING PARAMETERS TO
* AND FROM SECONDARY OVERLAYS.
*
* 7. ROUTINES AND OVERLAYS CALLED.
* OMSG ISSUE DAYFILE MESSAGE
* XTRACE RECORD PROCEDURE CALLS
*
* 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
*
* THIS PROGRAM IS A SECONDARY OVERLAY LOADED BY SUBROUTINE
* OVLCALL. WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO
* LOCATION RJMAIN TO RETURN TO THE CALLING PROGRAM.
*
*
* W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY
* OVERLAY BUFFER SIZE MINUS 5 (443B WORDS).
*
* THIS OVERLAY IS CALLED BY HPRUSM, NGIGO, AND NLOPIP.
*
#
STOPIMS;
#
EXTERNAL VARIABLES
#
XREF
BEGIN
PROC OMSG; # ISSUE DAYFILE MESSAGE #
PROC XTRACE; # RECORD PROCEDURE CALLS #
LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
END
#
INTERNAL VARIABLES
#
#
ARRAY TO HOLD DISPLAY CODE DATA TO DAYFILE
#
ARRAY TRAPMSG[0:3] S(1);
BEGIN
ITEM WDMSG C(0,0,10);
ITEM ENDMSG U(0,42,18) = [,,,0];
END
#
TEMPLATE OF WORD TO DISPLAY
#
BASED ARRAY OCTMSG P(1);
ITEM OCTWD U(0,0,60);
ITEM ADDR; # FWA OF WORD TO DISPLAY #
ITEM CHARPOS; # NEXT POSITION TO INSERT CHA #
ITEM HEXCHAR; # HEX DIGIT TO BE DISPLAYED #
ITEM MSGNO; # CURRENT WORD IN DAY MSG BUFFER#
ITEM NUM; # NUMBER OF WORDS TO DISPLAY #
ITEM NUMPOS; # NEXT POSITION TO PICK UP NO #
ITEM TEMP2; # COUNTER FOR WORD TO DISPLAY #
#**********************************************************************#
BEGIN
CONTROL IFEQ DEBUG,1;
XTRACE("DAYFL") ; # TRACE PROCEDURE CALL #
CONTROL FI;
ADDR = PARAMS1; # FWA TO DISPLAY CONTENTS OF #
NUM = PARAMS2; # NUMBER OF WORD TO DISPLAY #
#
LOOP ONCE FOR EACH WORD TO DISPLAY CONTENTS OF WORD
#
FOR TEMP2 = 0 STEP 1 UNTIL NUM-1 DO
BEGIN
P<OCTMSG> = ADDR + TEMP2; # ADDR OF WORD TO DISPLAY #
CHARPOS = 0;
MSGNO = 0;
NUMPOS = 0;
#
LOOP ONCE FOR EACH OCTAL DIGIT TO CONVERT TO OCTAL DISPLAY CODE
#
FOR NUMPOS = 0 STEP 3 UNTIL 57 DO
BEGIN
# MASK OFF OCTAL DIGIT AND ADD 33B TO FORM DISPLAY CODE #
# EQUIVALENCE. SINCE EACH OCTAL DIGIT (3 BITS) BECOMES A CHAR #
# (6 BITS) TWO WORDS ARE REQUIRED TO HOLD THE DISPLAY CODE DATA#
B<CHARPOS,6>WDMSG[MSGNO] = B<NUMPOS,3>OCTWD[0] + O"33";
IF CHARPOS EQ 54
THEN # FIRST WORD HAS BEEN FILLED UP #
BEGIN
CHARPOS = 0; # INIT FOR 2ND WORD OF TRAPMSG #
MSGNO = MSGNO + 1; # UPDATE TO POINT TO SECOND WORD#
END
ELSE # FIRST WORD NOT FILLED YET #
BEGIN
CHARPOS = CHARPOS + 6; # UPDATE PTR FOR INSERTING CHAR #
END
END
#
INSERT 2 BLANKS BETWEEN OCTAL AND HEX DISPLAY
#
B<0,12>WDMSG[MSGNO] = O"5555";
CHARPOS = 12;
#
LOOP ONCE FOR EACH HEX DIGIT TO CONVERT TO HEX DISPLAY CODE
#
FOR NUMPOS = 0 STEP 4 UNTIL 56
DO # CONVERT WORD TO HEX DISPLAY #
BEGIN
#
MASK OFF HEX DIGITS AND CHECK IF GREATER THAN 9. IF SO,
CONVERT TO HEX LETTER (A - F) BY SUBTRACTING 9. IF NOT,
CONVERT TO DISPLAY CODE BY ADDING 33B TO FORM DISPLAY CODE
EQUIVALENCE. SINCE EACH HEX DIGIT (4 BITS) BECOMES A CHAR
(6 BITS) ONE AND A HALF WORDS ARE REQUIRED TO HOLD THE DISPLAY
CODE DATA.
#
HEXCHAR = B<NUMPOS,4>OCTWD[0];
IF HEXCHAR GR 9
THEN # NEED TO CONVERT TO LETTER #
BEGIN
B<CHARPOS,6>WDMSG[MSGNO] = HEXCHAR - 9; # CONVERT TO DC #
END
ELSE # NEED TO CONVERT TO DISPLAY COD#
BEGIN
B<CHARPOS,6>WDMSG[MSGNO] = HEXCHAR + 27; # CONVERT TO DC #
END
IF CHARPOS EQ 54
THEN # FIRST WORD HAS BEEN FILLED UP #
BEGIN
CHARPOS = 0; # INIT FOR 2ND WORD OF TRAPMSG #
MSGNO = MSGNO + 1; # UPDATE TO POINT TO SECOND WORD#
END
ELSE # FIRST WORD NOT FILLED YET #
BEGIN
CHARPOS = CHARPOS + 6; # UPDATE PTR FOR INSERTING CHAR #
END
END
#
DISPLAY CONTENTS OF WORD (IN OCTAL AND HEX)
#
OMSG(TRAPMSG,0); # ISSUE DAYFILE MESSAGE #
END
GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
END
TERM