File: DA.TK of Tape: Sources/Multi8/multi8-1
(Source file text)
/DA.TK 24-SEP-80 /THIS TASK CAN BE CALLED BY A GIANT IOT (23). /IT HANDLES THE SETTING OF 1 OF THREE DACS / /CALLING SEQUENCE: / / TAD (23 / 6770 / JMP .+4 / COMMAND/ERROR / UNIT / DATA / ........ / /COMMAND: 0000 SET DIGITAL VALUE TO CONVERT / /ERROR CODE: 0000 OK / 0001 BAD INTERFACE / 0002 BAD UNIT # / /DATA: / /OUTPUT: DIGITAL VALUE TO CONVERT DAL1=DAC+6001 /LOAD DAC1 WITH AC3-AC11 DAL2=DAC+6002 /LOAD DAC2, NO AC CLEAR DAL3=DAC+6003 /LOAD DAC3, DAC3 IS BIPOLAR DASK=DAC+6004 /SKIP ON ANY DAC FLAG DARS=DAC+6005 /READ STATUS REGISTER DALS=DAC+6006 /LOAD STATUS REGISTER DACL=DAC+6007 /CLEAR ALL *0 CDF 10 /GIGATB IS IN FIELD 1 GIGATB+23 "D^100+"A&3777 *200 DANAME, "D^100+"A&3777 /TASK NAME IS "DA" 200 /ONE PAGE IS SUFFICIENT DASTAT, 0 DAIO, DCA DASTAT SZL /CLOSE ? JMP DACLOS /YES TAD DASTAT TAD (UASEM-1 /FIND FREE UASEM ENTRY DCA ZTEM1 DAUALP, ISZ ZTEM1 TAD I ZTEM1 /SEARCH SNA /IS IT FREE ? JMP DAUAFR /YES CIA TAD DANAME /IS IT MY NAME ? SZA CLA JMP DAUALP /NO, SEARCH DAUAFR, TAD DANAME DCA I ZTEM1 /STORE NAME AC0003 TAD DASTAT /ADDRESS OF UPC DCA DAUPC AC0002 TAD DAUPC DCA DATEM /ADDRESS OF UAC DCA I DATEM /CLEAR AC OF 23 CODE TAD I DAUPC /GET UPC IAC /SET ADDRESS OF 'COMMAND' DCA DAUPC AC0001 TAD DAUPC DCA DAARG /SET POINTER TOO ARG1 AC0004 TAD DASTAT JMS DEFER /GET UFLDS AND C70 /PICK OUT INSTRUCTION FIELD TAD I DASTAT TAD (-EMULATE+INCORE/SET INCORE REQUEST TO INSTR.FLD DCA I DASTAT JMS MONITOR /FORCE BS IN INCORE HANDLING SIGNAL BSSLOT TAD DASTAT TAD (USLOT JMS DEFER DCA DATEM JMS MONITOR /WAIT ON BS READY WAIT DATEM, 0 TAD C6201 DCA CDFSUB+1 JMS CDFSUB TAD I DAARG //GET ARG1 DCA DAUNIT //ALWAYS UNIT ISZ DAARG //ADVANCE TO DATA DAOUT, DCA I DAUPC //CLEAR FUNCTION NOW (NO ERRORS) TAD I DAARG //GET DATA DCA DARES TAD (7700 //VALUE TO CLEAR ALL FLAGS DALS //AND ENABLE INTERNAL SKIP CLA TAD DAUNIT SPA SNA JMP DAERR2 //BAD UNIT TAD (-4 SMA CLA JMP DAERR2 //BAD UNIT (MUST BE 1-3) TAD DAUNIT TAD (DAL1-1 //MAKE INSTRUCTION DCA DAEXEC TAD DARES //GET VALUE TO LOAD DAEXEC, HLT //GETS LOAD INTSTRUCTION CLA DCA CDFSUB //CLEAR TIMOUT DAL, ISZ CDFSUB //INTERFACE BAD ? SKP CLA JMP DAERR1 //YES, OLD PDP8 JMS MONITOR PRECEDE //WAIT A WHILE DASK //READY ? JMP DAL //NOT YET DARS //GET STATUS DALS //LOAD STATUS DAREL, CLA //THIS CLEARS THE FLAG CDF 10 JMS MONITOR RETURN RELEASE DAERR2, AC0001 DAERR1, IAC DCA I DAUPC //SET ERROR CODE 1 OR 2 JMP DAREL //GO BACK WITH RUBBISH CDFSUB, 0 HLT //CDF TO BACKGROUND FIELD JMP I CDFSUB DACLOS, JMS MONITOR EXIT SWPOUT DAUPC, 0 DAARG, 0 DARES, 0 DAUNIT, 0 PAGE $-$-$