.TITLE CVTUIC .IDENT /V01/ .SBTTL DESCRIPTION ; ; ; COMPONENT: CVTUIC ; ; DATE: 02-AUG-79 ; ; AUTHOR: GR JOHNSON ; BATTELLE NORTHWEST ; P O BOX 999 ; RICHLAND WA 99352 ; ; SOURCE: MACRO-11 ; ; CALLER: FORTRAN IV-PLUS ; ; CALLING SEQUENCE: ; ; CALL CVTUIC(AUIC,IUIC,MODE,[ISW]) ; ; AUIC = ASCII REPRESENTATION OF THE UIC. ; ; IUIC = INTEGER REPRESENTATION OF THE UIC. ; ; MODE = INTEGER ARGUMENT SPECIFYING THE CONVERSION MODE. ; ; -01 = 'DECODE' (ASCII TO INTEGER) ; ; 00 = 'ENCODE' (INTEGER TO ASCII: [1,1]) ; 01 = 'ENCODE' (INTEGER TO ASCII: [001,001]) ; 03 = 'ENCODE' (INTEGER TO ASCII: 001001) ; ; ISW = VARIABLE TO RECEIVE THE INTEGER STATUS WORD. ; ; 00 = SUCCESS ; -01 = SYNTAX ERROR ; ; ; DESCRIPTION: ; ; "CVTUIC" CONVERTS AN ASCII REPRESENTATION OF THE SUPPLIED USER ; IDENTIFICATION CODE TO ITS BINARY EQUIVALENT, AND VICE-VERSA. THE ; STRING MUST BE (WILL BE) TERMINATED BY AN ASCII NULL TERMINATOR. ; ; .SBTTL ENTRY POINT -- CONVERT UIC ; ; ; .PSECT ; ; CVTUIC:: ; ; MOV @6(R5),R4 ; MODE TO R4 BLT IUIC ; MODE -1? BRANCH TO INTEGER CONVERSION CMP #3,R4 ; MODES 0-3? BGE AUIC ; YES, BRANCH TO ASCII CONVERSION MOV #-1,R4 ; NO, SET ERROR FLAG BR RTN ; AND RETURN TO CALLER ; AUIC: ; ; MOV 2(R5),R2 ; STRING ADDRESS TO R2 MOV @4(R5),R3 ; INTEGER UIC TO R3 CALL .PPASC ; CALL UIC TO ASCII CONVERSION CLRB (R2) ; ASCII NULL TERMINATOR CLR R4 ; CLEAR ERROR FLAG BR RTN ; AND RETURN TO CALLER ; IUIC: ; ; CLR R0 ; CLEAR CHARACTER COUNT MOV 2(R5),R1 ; STRING ADDRESS TO R1 MOV #DSDB,R2 ; DSDB ADDRESS TO R2 MOV #UICB,R3 ; UIC BUFFER ADDRESS TO R3 CLR R4 ; CLEAR ERROR FLAG ; MOV R1,D.DSNM(R2) ; STRING ADDRESS INTO DSDB 2$: TSTB (R1)+ ; END-OF-STRING? BEQ 4$ ; YES, CONTINUE PROCESSING INC R0 ; NO, INCREMENT CHARACTER COUNT BR 2$ ; AND CONTINUE SCANNING FOR EOS 4$: MOV R0,D.DSLN(R2) ; STRING LENGTH INTO DSDB ; CALL .ASCPP ; CALL UIC CONVERSION BCC 6$ ; ERROR? MOV #-1,R4 ; YES, SET ERROR FLAG BR RTN ; AND RETURN ; 6$: CMPB #2,(R5) ; TWO OR MORE ARGUMENTS? BGT RTN ; NO, RETURN TO CALLER TST 4(R5) ; NULL ARGUMENT? BLT RTN ; YES, RETURN TO CALLER MOV (R3),@4(R5) ; NO, RETURN WITH IUIC BR RTN ; ; RTN: CMPB #4,(R5) ; FOUR ARGUMENTS? BNE 2$ ; NO, RETURN TO CALLER TST 10(R5) ; NULL ARGUMENT? BLT 2$ ; YES, RETURN TO CALLER MOV R4,@10(R5) ; NO, RETURN WITH ERROR STATUS 2$: RTS PC ; RETURN TO CALLER ; .EVEN ; ; DSDB: .WORD 0,0 ; DIRECTORY-STRING DESCRIPTOR BLOCK ; D.DSLN=0 ; DSDB STRING LENGTH OFFSET D.DSNM=2 ; DSDB STRING ADDRESS OFFSET ; UICB: .WORD 0 ; UIC BUFFER ; .END ;