TITLE SCAN -- GENERAL PURPOSE ADAPTER FOR LISP SCANNER A=1 B=2 C=3 R=13 T=6 P=14 CR=15 LF=12 TAB=11 IGCRLF=31 ;^Y FOR UCI LISP EXTERNAL CHRTAB,IGSTRT,RATOM,OLDCH,FIX1A,NOINFG,INUM0,SCNVAL INTERNAL SCAN,SCANSET,SCANRESET,SCANINIT,LETTER,IGNORE SCAN: SETOM NOINFG PUSHJ P,RATOM SKIPA PUSHJ P,FIX1A MOVEM A,SCNVAL MOVEI A,INUM0(R) POPJ P, OLDSCN: IGCRLF ;IGSTRT LF ;IGEND POINT 4,CHRTAB(A),5 ;RATFLD POINT 2,CHRTAB(A),10 ;STRFLD POINT 3,CHRTAB(A),13 ;IDFLD IGST2: 0 ;IGSTRT IGEND2: 0 ;IGEND RATF2: POINT 4,CHRTAB(A),29 ;RATFLD STRF2: POINT 2,CHRTAB(A),31 ;STRFLD IDF2: POINT 3,CHRTAB(A),34 ;IDFLD SCANSET: SKIPA A,[XWD IGST2,IGSTRT] SCANRESET: MOVE A,[XWD OLDSCN,IGSTRT] BLT A,IGSTRT+4 FALSE: MOVEI A,0 POPJ P, SCANINIT: SUBI A,INUM0 SUBI B,INUM0 SUBI C,INUM0 SUBI C+1,INUM0 SUBI C+2,INUM0 MOVEM A,IGST2 ;IGSTRT MOVEM B,IGEND2 ;IGEND PUSH P,C ;STRBEG PUSH P,C+1 ;STREND PUSH P,C+2 ;SLASHIFY MOVEI B,2 MOVEI C,3 MOVEI A,176 DPB B,RATF2 DPB C,STRF2 DPB B,IDF2 SOJG A,.-3 MOVE A,[XWD "A"-"Z"-1,"A"] MOVEI B,5 MOVEI C,4 DPB B,RATF2 DPB C,IDF2 AOBJN A,.-2 MOVE A,[XWD "a"-"z"-1,"a"] DPB B,RATF2 DPB C,IDF2 AOBJN A,.-2 MOVE A,[XWD "0"-"9"-1,"0"] MOVEI B,8 DPB B,RATF2 DPB C,IDF2 AOBJN A,.-2 POP P,A ;SLASHIFY MOVEI B,3 DPB B,IDF2 DPB C,RATF2 POP P,A ;STREND MOVEI B,2 DPB B,STRF2 POP P,A ;STRBEG MOVEI B,9 DPB B,RATF2 MOVE A,IGST2 MOVEI B,0 DPB B,RATF2 DPB B,STRF2 DPB B,IDF2 MOVEI B,1 MOVEI A,0 ;NULL DPB B,RATF2 DPB B,IDF2 DPB B,STRF2 MOVEI A,"." MOVEI B,7 DPB B,RATF2 JRST FALSE LETTER: SUBI A,INUM0 MOVEI B,5 MOVEI C,4 DPB C,IDF2 LET2: DPB B,RATF2 JRST FALSE IGNORE: SUBI A,INUM0 MOVEI B,3 JRST LET2 END