;*************************** AMUS Program Label ******************************
; Filename: HEXDMP.M68 Date: 01/12/89
; Category: UTIL Hash Code: 655-503-251-756 Version: 1.0(100)
; Initials: PHI/AM Name: JIM DULANEY
; Company: SYSTEMS TECHNOLOGY Telephone #:
; Related Files: FILER.M68 (MACRO FILES USED IN HEXDMP)
; Min. Op. Sys.: Expertise Level: INT
; Special:
; Description: DUMP-like utility which redirects the output to a file called
; filename.dmp. Output is in hex format. (.HEXDMP filename.ext)
;
;*****************************************************************************
;08/21/81 - TDW, SYSTEMS TECHNOLOGY
HEXDMP:
PGMHDR <Hex Dump File>,<HEXDMP filespec(.LIT)>
GETIMP IMPSIZ,A5
PUSH A2 ; save line index for output file
OPNINP INPDDB(A5),LIT ; do input file
POP A2 ; get line index
OPNOUT HEXDDB(A5),,DMP ; do output
;D1,D4 = work reg, char reg
;A2 --> hex string buffer
;A3 --> RECBUF
;A5 --> work memory
CALL HDRLIN
LOOP: CTRLC DONE ; allow user to exit
TYPE <.>
CALL GETREC ; get a record
TST RECSIZ(A5) ; if this record is zero, then eof
JEQ LSTREC
MOV DMPADR(A5),D1
LEA A2,HEXDDB(A5) ; point to ddb for ocvt
OCVT 6.,OT$DDB
MOVB #':,D1
CALL PUTC
LEA A3,RECBUF(A5)
MOV RECSIZ(A5),D0 ; loop counter
MOVW #RECLNG,COL(A5)
10$:
MOVW COL(A5),D7
AND #3,D7
BNE 15$
CALL SPACE
15$: MOVB (A3)+,D1 ; get a data byte
LEA A2,HEXDDB(A5)
OCVT 2,OT$DDB ; data byte to hex
CALL SPACE
DECW COL(A5)
SOB D0,10$
MOV #RECLNG,D0
SUB RECSIZ(A5),D0
BEQ 30$
20$:
MOVW COL(A5),D7
AND #3,D7
BNE 25$
CALL SPACE
25$: CALL SPACE2 ; fill with trailing spaces
CALL SPACE
DECW COL(A5)
SOB D0,20$
30$:
CALL SPACE
DMPASC: LEA A3,RECBUF(A5) ; point to buffer again
MOV RECSIZ(A5),D0
SPACE2: CALL SPACE
SPACE: MOVB #40,D1
PUTC: PUTCHR HEXDDB(A5)
RTN
GETREC: MOV #RECLNG,D0 ; standard record length
LEA A1,RECBUF(A5) ; point to rec buffer
CLR RECSIZ(A5) ; start with zero
10$: GETCHR INPDDB(A5),(A1)+ ; get a chr into buffer
BEQ 20$ ; z flag is eof
INC RECSIZ(A5) ; recsiz one more
SOB D0,10$ ; loop until done
20$: RTN