.TITLE CVRTBL ; ; SUB TO CONVERT ASCII STRING NNN:MMM: TO TWO BLOCK NUMBERS ; A SUB OF FDUMP.FOR ; ; CALL ; ; CALL CVRTBL(INAME,IPOSIT,IFIRST,ILAST) ; ; INAME = DIMENSIONED VARIABLE CONTAINING MCR COMMAND LINE ; IPOSIT = NUMBER OF BYTE IN ABOVE STRING AFTER '/BL:' ; IFIRST = DECODED FIRST BLOCK ; ILAST = DECODED LAST BLOCK ; ; IF FIRST OR LAST CONVERSION FAILS, DOES NOT CHANGE VARIABLES ; CVRTBL:: JSR PC,$SAVAL ;SAVE ALL REG'S TST (R5)+ ;SKIP OVER # OF ARGUMENTS MOV (R5)+,R0 ;ADDRESS OF COMMAND LINE ADD @(R5)+,R0 ;ADD OFFSET INTO COMMAND LINE DEC R0 ;CAUSE CHARACTER #1 HAS OFFSET OF 0 JSR PC,$COTB ;CONVERT FIRST # TO OCTAL CMP #':,R2 ;WAS : A TERMINATOR BEQ 1$ ;YES, GET 2ND BLOCK # CMP #'/,R2 ;OR / BEQ 2$ ;YES, RETURN FIRST BLOCK NUMBER ONLY CMP #0,R2 ;OR END OF LINE BEQ 2$ ;YES, RETURN FIRST BLOCK NUMBER ONLY CMP #15,R2 ;OR CARRET BEQ 2$ ;YES, RETURN 1 BLOCK NUMBER ONLY BR RETURN ;IF NOT, QUIT 1$: MOV R1,@(R5)+ ;RETURN FIRST BLOCK NUMBER JSR PC,$COTB ;CONVERT 2ND BLOCK NUMBER (IF PRESENT) CMP #'/,R2 ;SHOULD HAVE FINAL TERMINATOR BEQ 2$ CMP #0,R2 ;OR END OF LINE BEQ 2$ CMP #15,R2 ;OR CARRET BEQ 2$ BR RETURN ;IF NOT, QUIT 2$: MOV R1,@(R5)+ ;RETURN SECOND OR FIRST BLOCK NUMBER RETURN: RTS PC ;AND RETURN (AUTO RESTORE OF REG'S) .END