; THIS SUBROUTINE TAKES AN INPUT BYTE ARRAY LENGTH 12 CONTAINING ; A FILE NAME IN THE FORM DEV NAMEOF EXT AND CONVERTS IT TO THE ; FORM DEV:NAMEOF.EXT IN AN ARRAY OF SIZE 14.IF THE FILE-SPEC ; IN THE INPUT ARRAY DOES NOT CONTAIN THE FULL 12 LETTERS THE ; FILE-SPEC WILL BE SQUASHED UP INTO THE START OF THE OUTPUT ARRAY. .GLOBL FILECN FILECN: TST (R5)+ ;CLR NUMBER OF ARGUMENTS MOV (R5)+,R1 ;ADDRESS OF INPUT STRING MOV (R5)+,R2 ;ADDRESS OF OUTPUT STRING MOV #2,CNT ;ARRAY SUBSCRIPT FOR OUTPUT ARRAY MOVB (R1)+,(R2)+ ;MOVE 1ST CHAR INTO OUTPUT ARRAY DEV: CMPB #40,(R1) ;END OF DEVICE NAME? BEQ NCHR ;YES MOVB (R1)+,(R2)+ ;MOV CHAR INTO OUTPUT ARRAY DEC CNT ;DECREMENT COUNT TST CNT ;AT END OF DEVICE NAME BEQ LABEL JMP DEV NCHR: DEC CNT INC R1 TST CNT BEQ LABEL JMP NCHR LABEL: MOVB #':,(R2)+ ;INSERT COLON INTO OUTPUT ARRAY MOV #5,CNT ;RESET COUNT TO MAX LENGTH OF NAME CMPB #40,(R1) ;1ST LETTER OF NAME A BLANK? BEQ RETURN ;IF YES NO NAME THEREFORE RETURN MOVB (R1)+,(R2)+ ;MOV CHAR TO OUTPUT ARRAY NAME: CMPB #40,(R1) ;ANY NULL BYTES LEFT IN NAME SECTION BEQ XTEST ;NO! MOVB (R1)+,(R2)+ DEC CNT ;DECREMENT COUNT TST CNT ;AT END OF DEVICE NAME BEQ EXT ;LOOK AT NEXT CHAR OF DEVICE NAME JMP NAME ;TEST NEXT BYTE XTEST: DEC CNT INC R1 TST CNT ;END OF FILE NAME? BEQ EXT JMP XTEST ;LOOK AT NEXT CHAR EXT: MOVB #'.,(R2)+ ;INSERT FULL STOP CMPB #40,(R1) ;NEXT CHAR A NULL? BEQ RETURN MOVB (R1)+,(R2)+ MOV #2,CNT LAB4: CMPB #40,(R1) ;NEXT BYTE OF EXTENSION A NULL BEQ RETURN MOVB (R1)+,(R2)+ ;MOV CHAR INTO OUTPUT ARRAY DEC CNT TST CNT BNE LAB4 ;GET NEXT CHAR RETURN: RTS PC CNT: .WORD 0 .END