.TITLE GENSYM ; JEFFREY KODOSKY ARL NOV75 ; ; FSUBR ; ENTRY: 1 ARG ; EXIT: 1 ARG ; ERRORS: NONE ; CALLS: CAR ; GETC .GLOBL GENSYM,ZGENSYM,QCAR,QGETC GENSYM: TST @R5 ;NULL LIST? BEQ GEN1 QCAR ;NO: GET 1ST LITATM MOV @R5,R0 ;(IGNORE IT UNLESS ITS A LITATM) BIT #2,(R0)+ BNE GEN1 BIT #2,@R0 BNE GEN1 BIT #1,@R0 BEQ GEN1 MOV -(R0),R1;GET FIRST LETTER OF PNAME MOVB 2(R1),R0 SUB #101,R0 CMP R0,#25. ;IGNORE IT IF ITS NOT ALPHABETIC BHI GEN1 MOV R0,SYM ;STORE IT FOR NEXT TIME BR GEN2 GEN1: MOV SYM,R0 ;GET LAST SYMBOL GEN2: ASL R0 ;MAKE A BYTE OFFSET MOV GTBL(R0),-(SP) ;GET LATEST NUMBER INC GTBL(R0);UPDATE NUMBER QGETC ;3 CELLS NEEDED FOR NEW ATOM MOV (R5)+,R3 QGETC MOV (R5)+,R2 QGETC MOV (R5)+,R1 MOV R1,@R5 ;BUILD ATOM MOV R2,(R1)+ INC @R1 ;NULL PROP LIST; LITATM BIT SET MOV #2,(R3)+;DATA BIT MOV (SP)+,@R3 ;NUMBER MOV R3,(R2)+;POINTER PLUS DATA BIT MOV SYM,@R2 ;GENSYM LETTER-'A ADD #100101,@R2 ;GENSYM PNAME FORMAT BIT JMP @-(R4) SYM: .WORD 'G-'A GTBL: .REPT 26. .WORD 0 .ENDM ZGENSYM=.-GENSYM .END