.TITLE PUT ; JEFFREY KODOSKY ARL NOV75 ; ; SUBR ; ENTRY: 3 ARGS ;; ; EXIT: 1 ARG ; ERRORS: NONE ; CALLS: SPL ; GETC .GLOBL PUT,ZPUT,QSPL,QGETC PUT: ROOM 3 MOV (R5)+,R0;IGNORE CALL IF ARG1 IS NOT LITATM MOV (R5)+,R1 BIT #2,(R0)+ BNE PUT9 BIT #2,@R0 BNE PUT9 BIT #1,@R0 BEQ PUT9 CMP -(R5),-(R5) MOV R1,-(R5) TST -(R0) MOV R0,-(R5);SPL[;] QSPL MOV (R5)+,R0 BEQ PUT5 ;JUMP IF INDICATOR NOT FOUND MOV 2(R0),R0;OTHERWISE MODIFY PROP LIST MOV (R5)+,R1 TST (R5)+ MOV @R5,@R0 ;REPLACE OLD VALUE WITH MOV R1,@R5 JMP @-(R4) PUT5: QGETC MOV (R5)+,R3 QGETC MOV (R5)+,R2 MOV (R5)+,R0; MOV 2(R0),R1 DEC R1 ;REMOVE LITATM FLAG BIT INC R2 ;NEW PROP LIST POINTER WITH FLAG MOV R2,2(R0) DEC R2 MOV (R5)+,(R2)+ ; IS INDICATOR MOV R3,@R2 MOV (R5)+,(R3)+ ; IS VALUE MOV R1,@R3 ;TACK ON REST OF PROP LIST MOV R0,-(R5);RETURN JMP @-(R4) PUT9: CLR @R5 ;IGNORE CALL AND RETURN NIL JMP @-(R4) ZPUT=.-PUT .END