File: D2.TK of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text)
/D2.TK 22-SEP-80 /THIS TASK CAN BE CALLED BY A GIANT IOT (22). /IT HANDLES THE SETTING AND READING OF THE /SECOND DIGITAL IN-OUT INTERFACE - DR8-EA / /CALLING SEQUENCE: / / TAD (22 / 6770 / JMP .+4 / COMMAND/ERROR / MASK / DATA / ........ / /COMMAND: 0000 READ DIGITAL INPUT / 0001 SET DIGITAL OUTPUT / /ERROR CODE: 0000 OK / 0001 NOT IMPLEMENTED / /VALUE RETURNED TO DATA: / / INPUT: INPUT REG .AND. MASK / OUTPUT: (MASK.AND.DATA).OR.(.NOT.MASK.AND.(OLD OUT REG)) / SET/CLEAR OUT REG. WITH (MASK.AND.DATA) DBDI=D2+6000 /CLEAR INTENA DBEI=D2+6001 /SET INTENA DBSK=D2+6002 /SKIP ON INPUT DBCI=D2+6003 /CLEAR INPUT BITS DBRI=D2+6004 /READ INPUT BITS DBCO=D2+6005 /CLEAR OUTPUT BITS DBSO=D2+6006 /SET OUTPUT BITS DBRO=D2+6007 /READ OUTPUT BITS *0 CDF 10 /GIGATB IS IN FIELD 1 GIGATB+22 "D^100+"2&3777 *200 D2NAME, "D^100+"2&3777 /TASK NAME IS "D2" 200 /ONE PAGE IS SUFFICIENT D2STAT, 0 D2IO, DCA D2STAT SZL /CLOSE ? JMP D2CLOS /YES TAD D2STAT TAD (UASEM-1 /FIND FREE UASEM ENTRY DCA ZTEM1 D2UALP, ISZ ZTEM1 TAD I ZTEM1 /SEARCH SNA /IS IT FREE ? JMP D2UAFR /YES CIA TAD D2NAME /IS IT MY NAME ? SZA CLA JMP D2UALP /NO, SEARCH D2UAFR, TAD D2NAME DCA I ZTEM1 /STORE NAME AC0003 TAD D2STAT /ADDRESS OF UPC DCA D2UPC AC0002 TAD D2UPC DCA D2TEM /ADDRESS OF UAC DCA I D2TEM /CLEAR AC OF 20 CODE TAD I D2UPC /GET UPC IAC /SET ADDRESS OF 'COMMAND' DCA D2UPC AC0001 TAD D2UPC DCA D2ARG /SET POINTER TOO ARG1 AC0004 TAD D2STAT JMS DEFER /GET UFLDS AND C70 /PICK OUT INSTRUCTION FIELD TAD I D2STAT TAD (-EMULATE+INCORE/SET INCORE REQUEST TO INSTR.FLD DCA I D2STAT JMS MONITOR /FORCE BS IN INCORE HANDLING SIGNAL BSSLOT TAD D2STAT TAD (USLOT JMS DEFER DCA D2TEM JMS MONITOR /WAIT ON BS READY WAIT D2TEM, 0 TAD C6201 DCA CDFSUB+1 JMS CDFSUB TAD I D2ARG //GET ARG1 DCA D2MASK //ALWAYS MASK ISZ D2ARG //ADVANCE TO DATA TAD I D2UPC //GET COMMAND SZA CLA //OUTPUT ? JMP D2OUT //YES DBRI //READ INPUT REG AND D2MASK //CONSIDER ONLY MASKED DCA D2RES //RESULT TAD D2RES DBCI //CLEAR ONLY RESULT BITS D2REL, CLA TAD D2RES //SEND RESULT DCA I D2ARG CDF 10 JMS MONITOR RETURN RELEASE D2OUT, DCA I D2UPC //CLEAR FUNCTION NOW (NO ERRORS) TAD I D2ARG //GET DATA CMA //BITS TO CLEAR AND D2MASK //ONLY THOSE IN MASK DBCO //CLEAR THOSE JMS BOUNCE //WAIT FOR RELAYS DBRO //READ OUTPUT REGISTER FIRST MQL //KEEP A WHILE TAD I D2ARG //GET DATA AND D2MASK //BITS FOR SET MQA //OR IN OLD BITS DBSO //I.E. SET NEW BITS, LEAVE OLD ONES JMS BOUNCE //WAIT AGAIN DBRO //READ FINAL RESULT DCA D2RES JMP D2REL //END BOUNCE, 0 //WAIT FOR RELAY BOUNCE / AC4000 //USES BIT 00 OF INPUT AS SIGNAL / DBCI //CLEAR BIT 00 OF INPUT / DCA CDFSUB //CLEAR TIMOUT /D2L, ISZ CDFSUB //INTERFACE BAD ? / SKP CLA / JMP D2ERR //YES, OLD PDP8 JMS MONITOR PRECEDE //WAIT A WHILE / DBRI //READY ? / SMA CLA / JMP D2L //NOT YET / AC4000 /CLEAR AGAIN / DBCI CLA JMP I BOUNCE D2ERR, AC0001 DCA I D2UPC //SET ERROR CODE 1 JMP D2REL //GO BACK WITH RUBBISH CDFSUB, 0 HLT //CDF TO BACKGROUND FIELD JMP I CDFSUB D2CLOS, JMS MONITOR EXIT SWPOUT D2UPC, 0 D2ARG, 0 D2RES, 0 D2MASK, 0 PAGE $-$-$