;***************************************************************************;
; ;
; ;
; VUECOM ;
; VUE-like File Compare ;
; ;
; ;
;***************************************************************************;
;1.0 01-Nov-84 DFP written by D. Pallmann.
VMAJOR=1
SEARCH SYS
SEARCH SYSSYM
SEARCH TRM
SEARCH CRT
IMP=A5
TAB=11
LF=12
CR=15
ESC=33
.OFINI
.OFDEF FILE1,D.DDB ;DDB for 1st file
.OFDEF FILE2,D.DDB ;DDB for 2nd file
.OFDEF BASE1,4 ;base of 1st file
.OFDEF BASE2,4 ;base of 2nd file
.OFSIZ IMPSIZ
START: PHDR -1,0,PH$REE!PH$REU ;program header
GETIMP IMPSIZ,IMP ;allocate impure area
CHKLIN: BYP
LIN
BNE GETFLS
HELP: TYPECR <? usage: .VUECOM file1,file2>
JMP EXIT
GETFLS: FSPEC FILE1(IMP),M68 ;load DDB w/spec
INIT FILE1(IMP) ;fetch driver, allocate buffer
FSPEC FILE2(IMP),M68 ;load DDB w/spec
INIT FILE2(IMP) ;fetch driver, allocate buffer
LOAD: FETCH FILE1(IMP),A4 ;load file 1
JNE EXIT ;branch on error
MOV A4,BASE1(IMP) ;save base
FETCH FILE2(IMP),A4 ;load file 2
JNE EXIT ;branch on error
MOV A4,BASE2(IMP) ;save base
SETUP: CLS
LOW
TTYL DASHES
CRT #12.,#1
TTYL DASHES
CRT #23.,#1
TTYL DASHES
CRT #1,#65.
PFILE FILE1(IMP)
CRT #23.,#65.
PFILE FILE2(IMP)
MOV BASE1(IMP),A4
CLR D5
CRT #2,#1
CALL DISPLAY
MOV BASE2(IMP),A4
CLR D5
CRT #13.,#1
CALL DISPLAY
MOV BASE1(IMP),A4
CLR D5
JOBIDX A0
MOV JOBTRM(A0),A1
ORW #T$IMI!T$ECS,T.STS(A1)
READY: CMM BASE1(IMP),A4
BNE 10$
CRT #2,#1
BR 20$
10$: CRT #13.,#1
20$: KBD EXIT
EVAL: LEA A0,CMDTBL
MOV #-2,D0
10$: TSTB @A0
BEQ READY
ADDW #2,D0
CMMB (A0)+,D1
BNE 10$
BRANCH: MOVW JMPTBL[~D0],D0
JMP JMPTBL[~D0]
CMDTBL: BYTE 'J-'@
BYTE 'K-'@
BYTE 'R-'@
BYTE 'T-'@
BYTE TAB
BYTE ESC
BYTE 0
EVEN
JMPTBL: WORD DOWN-JMPTBL
WORD UP-JMPTBL
WORD BACK-JMPTBL
WORD FWD-JMPTBL
WORD SWITCH-JMPTBL
WORD EXIT-JMPTBL
PAGE
SWITCH: CMM BASE1(IMP),A4
BEQ 10$
MOV BASE1(IMP),A4
CRT #2,#1
CALL DISPLAY
JMP READY
10$: MOV BASE2(IMP),A4
CRT #13.,#1
CALL DISPLAY
JMP READY
PAGE
BACK: TST D5
JEQ READY
MOV A4,A0
ADD D5,A0
MOV #10.,D0
10$: DEC D5
BEQ 30$
CMPB -(A0),#LF
BNE 10$
SOB D0,10$
20$: INC D5
30$: CALL DISPLAY
JMP READY
PAGE
FWD: MOV A4,A0
ADD D5,A0
MOV #10.,D2
10$: MOV #80.,D0
20$: INC D5
CMPB (A0)+,#LF
BEQ 30$
SOB D0,20$
30$: SOB D2,10$
CALL DISPLAY
JMP READY
PAGE
DOWN: MOV A4,A0
ADD D5,A0
MOV #80.,D0
10$: INC D5
CMPB (A0)+,#LF
BEQ 20$
SOB D0,10$
20$: CALL DISPLAY
JMP READY
PAGE
UP: TST D5
JEQ READY
MOV A4,A0
ADD D5,A0
SUB #2,A0
SUB #2,D5
10$: DEC D5
BEQ 30$
CMPB -(A0),#LF
BNE 10$
20$: INC D5
30$: CALL DISPLAY
JMP READY
PAGE
EXIT: CRLF
EXIT
DISPLAY:
HIGH
MOV #CR,D1
TTY
MOV #10.,D0
MOV A4,A0
ADD D5,A0
CLR D2
10$: CTRLC EXIT
MOVB (A0)+,D1
CMPB D1,#CR
BNE 20$
SAVE D1
CLREOL
REST D1
20$: TTY
INC D2
CMPB D1,#LF
BNE 30$
24$: SOB D0,10$
RTN
30$: CMPB D1,#CR
BNE 10$
INC D2
CMPB D2,#80.
BEQ 24$
BR 10$
DASHES: ASCIZ /-------------------------------------------------------------------------------/
EVEN
END