.TITLE CDR ; JEFFREY KODOSKY ARL NOV75 ; ; SUBR ; ENTRY: 1 ARG ; EXIT: 1 ARG CDR[] ; ERRORS: A10, CDR OF AN ATOM (SUPPRESSED WITH X SW) ; CALLS: GET, SEARCH PROPERTY LIST ; R2,R3 PRESERVED .GLOBL CDR,ZCDR,QGET,QA10ERR,XSW,APVAL CDR: MOV @R5,R0 ;GET ARG MOV 2(R0),R1;GET CDR (ASSUMING NON-ATOMIC) BIT #3,@R0 ;IS ARG NUMERIC? BNE CDR02 ;JUMP IF SO BIT #3,R1 ;IS IT ATOMIC? BNE CDR01 ;JUMP IF SO MOV R1,@R5 ;OTHERWISE RETURN CDR JMP @-(R4) CDR01: BIT #2,R1 ;IS ARG A LITATM? BEQ CDR03 ;JUMP IF SO CDR02: CLR @R5 ;CDR OF NUMBER OF STRING IS NIL JMP @-(R4) CDR03: ROOM 3 ;CHECK FOR ADEQUATE STACK SPACE MOV APVAL,-(R5) ;CHECK X SWITCH STATUS MOV XSW,-(R5) QGET TST (R5)+ BNE CDR04 ;JUMP IF ITS ON QA10ERR ;OTHERWISE A10 ERROR TRAP CDR04: MOV @R5,R0 ;CDR OF LITATM IS ITS PROPERTY LIST MOV 2(R0),@R5 DEC @R5 ;REMOVE THE LITATM FLAG JMP @-(R4) ZCDR=.-CDR .END