.TITLE UICBIN - UIC CONVERSION/BINARY .IDENT /31JAN8/ ;12:00 MK ; .ENTRY UICBIN - CONVERTS ASCII STRING TO PROG AND PROJ CODES ;+ ; U I C B I N ; ; PURPOSE: CONVERTS AN ASCII UIC STRING OF THE FORM ; [PROJ,PROG] ; TO THE BINARY PROGRAMMER AND PROJECT CODES. ; PROJ AND PROG ARE OCTAL NUMBERS BETWEEN 0 AND 377. ; USES THE FCS CONVERSION ROUTINE .ASCPP. ; ; IF AN ERROR IS DETECTED IN THE ASCII STRING, ; THE PROGRAMMER AND PROJECT CODES ARE BOTH SET ; TO -1. ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL UICBIN (UIC,PROG,PROJ) ; ; INPUT: ; UIC = 9 BYTE STRING CONTAINING THE UIC. ; ; OUTPUT: ; PROG = INTEGER WORD TO RECEIVE THE ; PROGRAMMER CODE ; PROJ = INTEGER WORD TO RECEIVE THE ; PROJECT NUMBER. ; ; LANGUAGE: MACRO-11 ; ; REFERENCE: RSX-11 I/O OPERATIONS REFERENCE MANUAL, ; DESCRIPTION OF SUBROUTINE .ASCPP ;- ; REVISIONS: ; MAY-75 RK WRITTEN ; 07-FEB-76 FIXED ERROR IN UICBIN CAUSING CHAR COUNT ; TO BE SET TO 9 INSTEAD OF 8 (RESULTED IN ; RETURNING GROUP CODE OF ZERO IF UIC STRING ; WAS 8 BYTES LONG). ; 31-JAN-78 MK PUT IN BRANCH ON INPUT ERROR ; 31-JAN-78 MK REVISED DOCUMENTATION ; ; 2. PROGRAM DETAIL ; ; 2.1 MACROS-- ; .MCALL CALL,RETURN,PUSH,POP ; ; 2.3 STORAGE ALLOCATION-- ; UIC: .BYTE 0,0 UICPNT: .BLKW 2 ; ; 2.4 PROGRAM FLOW-- ; ; ENTRY: UICBIN ; UICBIN::MOV 2(R5),R0 ;ADDR OF UIC STRING MOV R0,UICPNT+2 ;PUT ADDR OF UIC STRING IN DESCRIPTOR CLR R1 ;BYTE COUNT 10$: CMPB (R0)+,#40 ;BLANK? BEQ 20$ ;YES - SCAN DONE INC R1 ;COUNT NON-BLANK CMP R1,#9. ;9 CHARS SCANNED? BLT 10$ ;NOT YET 20$: MOV R1,UICPNT ;PUT CHARACTER COUNT IN DESCRIPTOR MOV #UICPNT,R2 ;PASS ADDR OF DESCRIPTOR IN R2 MOV #UIC,R3 ;PASS ADDR OF RETURN BYTES IN R3 PUSH R5 ;SAVE ARGUMENT POINTER CALL .ASCPP ;CALL FCS CONVERSION ROUTINE POP R5 ;RESTORE ARGUMENT POINTER BCS 30$ ;CONVERSION ERROR CLR @4(R5) ;CLEAR PROGRAMMER WORD MOVB UIC,@4(R5) ;RETURN PROGRAMMER BYTE CLR @6(R5) ;CLEAR PROJECT WORD MOVB UIC+1,@6(R5) ;RETURN PROJECT BYTE RETURN ;ALL DONE 30$: MOV #-1,@4(R5) ;SET PROG AND PROJ=-1 ON ERROR MOV #-1,@6(R5) RETURN ;ALL DONE WITH ERROR RETURN ; ; .ENTRY BINUIC - UIC CONVERTS PROJ AND PROG CODES TO ASCII STRING ;+ ; ; ; ; B I N U I C ; ; PURPOSE: CONVERTS BINARY PROJECT AND PROGRAMMER CODES INTO ; A 9 CHARACTER ASCII UIC STRING OF THE FORM ; [PROJ,PROG] ; WHERE PROJ AND PROG ARE OCTAL NUBERS BETWEEN 0 AND 377. ; THE STRING WILL CONTAIN NO LEADING ZEROS OR EMBEDDED ; BLANKS, AND WILL BE PADDED WITH TRAILING BLANKS TO ; 9 CHARACTERS IF NECESSARY. ; USES THE FCS CONVERSION ROUTINE .PPASC. ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL BINUIC (PROG,PROJ,UIC) ; ; INPUT: ; PROG = INTEGER WORD OR BYTE CONTAINING THE ; PROGRAMMER CODE ; PROJ = INTEGER WORD OR BYTE CONTAINING THE ; PROJECT NUMBER. ; ; OUTPUT: ; UIC = 9 BYTE ASCII UIC STRING ; ; LANGUAGE: MACRO-11 ; ; REFERENCE: RSX-11 I/O OPEREATIONS REFERENCE MANUAL, ; DESCRIPTION OF SUBROUTINE .PPASC ;- ; REVISIONS: ; MAY-75 RK WRITTEN ; 07-FEB-76 FIXED ERROR IN UICBIN CAUSING CHAR COUNT ; TO BE SET TO 9 INSTEAD OF 8 (RESULTED IN ; RETURNING GROUP CODE OF ZERO IF UIC STRING ; WAS 8 BYTES LONG). ; 31-JAN-78 MK CORRECT ERROR IN CALL TO .PPASC ; 31-JAN-78 MK REVISED DOCUMENTATION ; ; ENTRY: BINUIC ; BINUIC::MOV 6(R5),R2 ;PASS ADDR OF UIC RETURN BUFFER IN R2 MOVB @4(R5),R3 ;GET PROJ CODE SWAB R3 ;PUT IN HIGH BYTE CLRB R3 ; BISB @2(R5),R3 ;GET PROG CODE CLR R4 ;SUPPRESS ZEROS, INCLUDE COMMA PUSH R5 ;SAVE ARGUMENT POINTER CALL .PPASC ;CALL FCS CONVERSION ROUTINE POP R5 ;RESTORE ARGUMENT POINTER MOV 6(R5),R0 ;COMPUTE ADDR OF BUFFER END ADD #9.,R0 ; LOOKING AT THE NEXT BYTE 10$: CMP R2,R0 ;ARE ALL BYTES WRITTEN? BEQ 20$ ;YES IF EQUAL MOVB #40,(R2)+ ;BLANK OUT THIS BYTE BR 10$ 20$: RETURN .END