/// SOLITARY SWITCH REGISTER ROUTINE. / / IRSLT = ISWR(IBIT) /READ SWITCH REGISTER. / /-------------------- / / 'IBIT' = DESIGNATION FOR JUST ONE BIT, OR FOR ALL BITS. / IF = 0 THE ACTION IS PERFORMED ON ALL BITS. / IF FROM 1 - 12, INDICATES BIT NUMBER. / "B>12" *ERROR* IF .LT. 0 OR .GT. 12 . / / 'IRSLT' = ENTIRE REGISTER IF 'BIT' = 0. / OTHERWISE, = 1 IF BIT SET, 0 IF NOT. / IN RANGE (-2048) - 2047. / /------------ /// LAP OPDEF TADI 1400 ENTRY ISWR SETERR, CALL 1,ERROR ARG SETERM SETERM, 0276;6162 /ERROR MESSAGE 'B>12'. ISWR, BLOCK 2 JMS GETARG JMS SETBIT OSR AND BITPAT ISZ BITPAT /WAS THIS FOR A SINGLE BIT? SNA /YES, ANY RESULT? JMP SXIT2 /NO. RETURN ORIGINAL VALUE. CLA IAC /CONVERT NON-ZERO TO A 1.. SXIT2, RETRN ISWR GETARG, 0 TAD ISWR /NOW GET ARG INFO. DCA GET10 JMS GETONE JMP I GETARG GETONE, 0 GET10, HLT /(CDF TO CALLING FIELD.) TADI ISWR# /CDF TO ARG FIELD. DCA GET20 INC ISWR# TADI ISWR# /LOCATION OF ARG. DCA PARA INC ISWR# /MOVE TO RETURN ADDRESS. GET20, HLT /(CDF TO ARG. DATA FIELD) TADI PARA /GET INTEGER PARAMETER. JMP I GETONE PARA, 0 SETBIT, 0 SNA /SPECIFIC BIT? JMP SET20 /NO. SET ALL. CIA DCA BITPAT CLL CMA /SET UP BIT (NEGATED) SET10, RAR SNL JMP SETERR /OUT OF RANGE. ISZ BITPAT JMP SET10 SET20, CMA DCA BITPAT JMP I SETBIT BITPAT, 0 END