Table of Contents

DMMLOC Abstract

Statistics

Type ASSEMBLE
Source Lines : 860
Fixes Applied : 1
Most Recent Version : Friday, December 8, 1978
Last Fix ID : [R09878DM]

Synopsis

Module

        DMMLOC (SUBROUTINE OF DUMPSCAN)

Function

        LOCATE 'STRING' WITHIN THE LIMITS 'FROM' 'TO'

Attributes

        REUSABLE
        NON-REENTRANT

Operation

        'LOCATE' ACCEPTS A COMMAND OF THE FORM:-
               'LOCATE' 'STRING' 'FROM' 'TO'
        WHERE 'STRING' MAY BE ANY CONTIGUOUS STRING
        OF UP TO 16 HEXADECIMAL DIGITS. 'FROM' IS
        THE ADDRESS AT WHICH THE SEARCH BEGINS,
        AND 'TO' IS THE END ADDRESS. 'LOCATE' WILL
        SEARCH THAT RANGE OF THE DUMP, SEARCHING
        ON A HALF BYTE BOUNDARY, FOR THE GIVEN STRING.
        SEARCH STOPS WHEN EITHER THE 'TO' ADDRESS IS
        REACHED, OR THE STRING IS FOUND. 'LOCATE WILL
        PASS OVER PAGES NOT IN THE DUMP.
        M.O. IS AS FOLLOWS. THE INPUT STRING IS SCANNED
        FOR VALID, CONTIGUOUS HEX CHARACTERS. EACH ONE
        CAUSES A BIT TO BE SET IN A MASK HALF BYTE.
        THERE ARE FOUR MASKS, ALLOWING A STRING LENGTH
        OF 16 CHARACTERS. THEN THE PAGE CONTAINING THE
        'FROM' ADDRESS IS BROUGHT INTO 'BUFF1' BY DMMGET.
        THE HEX DATA IS THEN XLATED INTO EBCDIC IN 'LOCBUFF'
        (IF THE 'FROM' ADDRESS IS LESS THAN 8 BYTES,
        ((16 HEX DIGITS)) FROM THE END OF THE PAGE,
        THE LAST 8 BYTES ARE TRANSLATED INTO THE 16 BYTES
        IMMEDIATELY PRECEDING 'LOCBUFF', AND THE NEXT PAGE
        IS TRANSLATED. THIS IS BECAUSE THE STRING MIGHT
        RUN ACROSS A PAGE BOUNDARY.) THE FIRST FOUR BYTES
        OF THE STRING ARE LOADED INTO R4. THE MASK IS LOADED
        INTO R2, AND R3 IS POINTED AT THE TRANSLATED
        EQUIVALENT 'TO' LOCATION IN 'LOCBUFF'. AN EXECUTE
        INSTRUCTION WITH A 'CLM' AS ITS OBJECT, IS USED
        FOR THE COMPARE. IF NO MATCH OCCURS, THE PTR IN R3
        IS UPDATED, THE LIMITS ARE CHECKED, AND ANOTHER
        COMPARISON IS MADE UNTIL THE 'TO' EQUIVALENT
        ADDRESS IS REACHED. IF THERE IS A MATCH, THE
        MASK IS REPLACED BY THE NEXT ONE, THE R3 POINTER
        IS UPDATED BY 4 AND THE NEXT WORD IN THE STRING IS
        COMPARED AGAINST THE NEXT WORD IN THE TRANSLATED
        BUFFER. THIS IS CONTINUED UNTIL ALL WORDS IN THE
        STRING AGREE WITH THE BUFFER, SUBJECT TO THE MASKING.
        THE MATCHING ADDRESS IN R3 FROM 'LOCBUFF', IS
        CONVERTED BACK TO A REAL ADDRESS FROM THE DUMP.
        THIS ADDRESS IS PASSED TO EITHER DMMFED, FOR
        A TYPEWRITER TYPE DEVICE, OR DMMFEX FOR A GRAPHICS
        DEVICE.

Calls to Other Routines

        DMMGET TO FETCH DATA INTO CORE
        DMMINT TO TRANSLATE HEX TO EBCDIC
        DMMHEX TO TRANSLATE EBCDIC TO HEX
        DMMFEX TO WRITE THE FOUND LOCATION TO A SCREEN
        DMMFED TO WRITE THE FOUND LOCATION TO A TYPEWRITER