Type ASSEMBLE
Source Lines : 860
Fixes Applied : 1
Most Recent Version : Friday, December 8, 1978
Last Fix ID : [R09878DM]
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