.NLIST .NLIST BEX .MCALL FSRSZ$,FDBDF$,FDAT$A,FDRC$A,FDBK$A,FDOP$A,NMBLK$ .MCALL QIOW$,DIR$,GCMLB$,CSI$,CSI$SW,CSI$SV,CSI$ND,GCML$ .MCALL FINIT$,EXIT$S,OPEN$W,OPEN$R,CLOSE$,CSI$1,CSI$2 .MCALL READ$,WRITE$,WAIT$,GET$,PUT$,GTIM$C,OPNT$D .MCALL RDBBK$,CRRG$C,WDBBK$,CRAW$C,DTRG$C ;*************************************************************************** ; ; CCM - CORE IMAGE LIBRARY MODULE COMPARISON (RSX-11M VERSION) ; ; CCM IS A UTILITY PROGRAM USED FOR COMPARING CORE IMAGE LIBRARIES ; (CIL'S), WHICH ARE USED UNDER DOS. A CORE IMAGE LIBRARY IS A ; SINGLE FILE CONTAINING ONE OR MORE CORE IMAGES AND AN INDEX, ; WHICH IS USED TO RETRIEVE THEM. THE MAIN USE OF CILUS IS TO ; BUILD AND MODIFY MONITORS. "CIL'S" ARE USED EXTENSIVELY BY ; THE 2F87F OFT TRAINERS. ; ; INPUT COMMAND STRING FORMAT: ; ; /SW=/SW,/SW ; ; CREATED BY STEPHEN R. RAINIER (SINGER/LINK) ; NOVEMBER 1982 ; ;*************************************************************************** ; ; .MACRO PUSH A ;PUSH ONTO STACK MOV A,-(SP) ; .ENDM ;END PUSH ; ; .MACRO POP A ;POP FROM STACK MOV (SP)+,A ; .ENDM ;END POP ; ; .MACRO DSWERR ;DIRECTIVE IOERR BCC .+6 ; JMP IOERR ; .ENDM ;END DSWERR ; ; .MACRO PARSE FDB,FNB,DSD,DFB ;PARSE A FILE SPEC MOV #FDB,R0 ;FDB ADDRESS MOV #FNB,R1 ;NEW FILENAME BLOCK MOV #DSD,R2 ;DATASET DESCRIPTOR ADDRESS MOV #DFB,R3 ;DEFAULT FILENAME BLOCK CALL .PARSE ;PARSE THE FILENAME BCC .+6 ;OKAY JMP CMDERR ;COMMAND ERROR .ENDM ;END PARSE ; ; .MACRO DECASC A,B ;CONVERT DECIMAL BINARY TO ASCII MOV A,B ; CLR A ; DIV #10.,A ; BIC #177760,A ; BIC #177760,B ; ADD #60,A ; ADD #60,B ; .ENDM ; ; .MACRO FIND A,?B,?C ;FIND A PARTICULAR CHARACTER IN STRING B: CMPB A,(R0)+ ;IS IT WHAT WE WANT? BEQ C ;YES SOB R1,B ;NO, LOOP BR .+4 ; C: DEC R1 ;DONE .ENDM ; ; .MACRO RAD50 A,B,?C ;CONVERT ASCII TO RAD50 (1 WORD) PUSH R1 ;SAVE REGS PUSH R2 ; MOV R0,ARG10 ;SAVE WHERE WE ARE NOW CLR R1 ;INIT CALL $CAT5 ;CONVERT UP TO 3 CHARACTERS MOV R1,ARG11 ;SAVE RAD50 WORD POP R2 ;RECOVER REGS POP R1 ; MOV ARG11,(A)+ ;STORE THE RAD50 WORD BCC C ;DID WE GET AN EVEN 3 CHARACTERS? TSTB -(R0) ;NO, SO BACK UP OVER TERMINATOR C: PUSH R5 ;SAVE TEMPORARILY MOV R0,R5 ;GET WHERE WE ARE NOW SUB ARG10,R5 ;CALC HOW FAR WE'VE GONE SUB R5,B ;SUBTRACT FROM COUNTER POP R5 ;GET R5 BACK .ENDM ; ; .MACRO SKIP A,?B,?C ;SKIP OVER A CERTAIN CHARACTER B: CMPB #A,(R0) ;GOT ONE? BEQ .+4 ;YES BR C ;NO, EXIT TSTB (R0)+ ;SKIP TO NEXT SOB R1,B ;LOOP C: ; .ENDM ; ; .MACRO INCR A,?B ;SKIP AHEAD IN THE INPUT BUFFER PUSH R5 ;SAVE R5 MOV #A,R5 ;GET LOOP COUNT ASR R5 ;WORDS NOT BYTES B: TST (R4)+ ;SKIP A WORD SOB R5,B ;LOOP POP R5 ;RETRIEVE .ENDM ; ; .MACRO DMUL A ;DOUBLE PRECISION MULTIPLY MOV A,R0 ;GET MULTIPLIER CALL $DMUL ;MULTIPLY TO R2 & R3 MOV R0,R2 ;PUT ANSWER BACK IN R2 & R3 MOV R1,R3 ; .ENDM ; ;*************************************************************************** ; BUFSIZ = 80. ;INPUT BUFFER SIZE IN BYTES BLKSIZ = 1000 ;LOGICAL BLOCK SIZE IN BYTES CILLEN = 34 ;SIZE OF CIL FILE HEADER ICNUM = 100. ;NUMBER OF INDIRECT (EDIT) COMMANDS MODNUM = 107. ;MAXIMUM NUMBER OF MODULES IN CIL APR6 = 6 ;APR 6 FOR INDEX REGION APR7 = 7 ;APR 7 FOR INDEX REGION INX1 = APR7*20000 ;ARRAY BUFFER FOR INDEX1 INX2 = APR6*20000 ;ARRAY BUFFER FOR INDEX2 ARYSIZ = 10000 ;ARYSIZ MAX = 20. ;MAXIMUM NUMBER OF DIFFERENCES SPL = 1 ;SPOOL SWITCH ; ; INDIRECT COMMANDS ; C = 10 ;COMPARE ; ;**************************************************************************** .PAGE .LIST