MIT PDP-10 'Info' file converted to Hypertext 'html' format by Henry Baker

Previous Up Next

Parsing SIXBIT Words, and Filenames.

Here is a sample routine which accumulates a word of sixbit, returning it in B. Non-alphanumeric characters are terminators; the terminator encountered is returned in A.

We assume that GETCHR is a subroutine we can call which reads a character of input and returns it in A.

GETSIX: MOVEI B,0
        MOVE C,[440600,,B]      ;Byte pointer for storing into B.
GETSX1: PUSHJ P,GETCHR          ;Read next character into A.
        CAIN A,40
         JRST [ JUMPE B,GETSX1  ;Flush leading blanks
                POPJ P,]        ;but trailing blanks are terminators.
        CAIL A,"A+40
         CAILE A,"Z+40
          JRST .+2              ;Not lower case
           TRZ A,40             ;Make lower case into upper case
        CAIL A,"A
         CAILE A,"Z
          JRST .+2
           JRST GETSX2          ;Letters are ok in sixbit
        CAIN A,^Q               ;^Q means "quote": use the next char
         JRST [ PUSHJ P,GETCHR  ;even if it is usually a delimiter.
                JRST GETSX2]
        CAIL A,"0
         CAILE A,"9
          POPJ P,               ;Not a letter, not a digit.  This is delim.
GETSX2: SUBI A,40               ;Convert to sixbit
        TLNE C,770000           ;Skip if already got 6 characters.
         IDPB A,C               ;Otherwise we would clobber C here.
        JRST GETSX1
You don't need to write a filename parsing routine, because you can use the library SYSENG;RFN >. However, RFN is a good example to read.