; ; STRING - C STRING, BYTE, AND BIT ROUTINES ; ; This file is PDP-10 dependent, system-independent. ; ;TITLE STRING ;[plb] confuses with STRINGP (STRNGP.REL) TITLE STR .INSRT SS:CINSRT .INSRT SS:MINSRT ; CONTAINS: ; SLEN ; STRING LENGTH ; STCPY ; STRING COPY ; STCMP ; STRING COMPARE ; LOWER ; CVT CHAR TO LOWER CASE ; UPPER ; CVT CHAR TO UPPER CASE ; BGET ; BIT ARRAY BIT GET ; BSET ; BIT ARRAY BIT SET ; ILDB ; INCREMENT AND LOAD BYTE ; IDPB ; INCREMENT AND DEPOSIT BYTE CENTRY SLEN,[STR] ; STRING LENGTH MOVE B,STR ; POINTER TO STRING SL$1: SKIPE (B) ; GET NEXT CHARACTER AOJA B,SL$1 SUB B,STR MOVEI A,(B) RETURN CENTRY STCPY,[SRC,DEST] ; STRING COPY ; COPY STRING FROM SRC TO DEST ; RETURN POINTER TO NULL TERMINATING NEW COPY MOVE B,SRC ; SOURCE POINTER MOVE A,DEST ; DESTINATION POINTER SUBI B,(A) HRLI B,A ; HACK TO MAKE LOOP SHORTER SC$1: MOVE C,@B ; GET NEXT CHAR MOVEM C,(A) ; STORE CAIE C,0 AOJA A,SC$1 ; INCR BOTH POINTERS SC$RET: RETURN CENTRY STCMP,[S1,S2] ; STRING COMPARE MOVE B,S1 MOVE C,S2 SUBI C,(B) HRLI C,B SM$1: MOVE A,(B) ; GET NEXT CHAR CAME A,@C GO SM$2 CAIE A,0 AOJA B,SM$1 MOVEI A,1 RETURN SM$2: MOVEI A,0 RETURN CENTRY LOWER,[CH] ; CVT CHAR TO LOWER CASE MOVE A,CH CAIL A,"A CAILE A,"Z CAIA ADDI A,"a-"A RETURN CENTRY UPPER,[CH] ; CVT CHAR TO UPPER CASE MOVE A,CH CAIL A,"a CAILE A,"z CAIA SUBI A,"a-"A RETURN CENTRY BGET,[BARRAY,BINDEX] ; BIT ARRAY BIT GET HRRZ C,BINDEX HRRZ A,BARRAY MOVEI B,(C) ; SUBSCRIPT LSH C,-5 ; GET WORD OFFSET ADDI A,(C) ; GET WORD ADDRESS MOVE A,(A) ; GET THE WORD ANDI B,37 ; BIT OFFSET ROT A,1(B) ; PUT BIT IN RIGHT-MOST POSITION ANDI A,1 ; GET THE BIT RETURN CENTRY BSET,[BARRAY,BINDEX] ; BIT ARRAY BIT SET HRRZ C,BINDEX HRRZ A,BARRAY MOVEI B,(C) ; SUBSCRIPT LSH C,-5 ; GET WORD OFFSET ADDI A,(C) ; GET WORD ADDRESS ANDI B,37 ; BIT OFFSET MOVN B,B ; NEGATIVE BIT OFFSET MOVEI C,1 ; A BIT ROT C,-1(B) ; PUT IN RIGHT POSITION IORM C,(A) ; SMASH ARRAY WORD MOVEI A,1 RETURN CENTRY ILDB,[ABPTR] ; INCREMENT AND LOAD BYTE ILDB A,@ABPTR RETURN CENTRY IDPB,[CH,ABPTR] ; INCREMENT AND DEPOSIT BYTE MOVE B,CH ; THE CHARACTER IDPB B,@ABPTR RETURN END