ASMB,R,C,L HED HP6940A/B RTE MPG DVA72 - LOCAL/REMOTE REV 1826 NAM DVA72,0 09611-16005 780403 REV 1826 ENT IA72,CA72 EXT $LIST,.MVW * ******************PROGRAM DESCRIPTION*********************** * * RELOC. TAPE: 09611-16005 REV 1826 * SOURCE TAPE: 09611-18005 REV 1826 * ************************************************************ * A EQU 0 B EQU 1 SC EQU 0 * ********* *CAUTION* ********* * * IF INSTRUCTION SPEEDS CHANGE IN FUTURE GENERATIONS * OF 2100 SERIES COMPUTERS, THE TIMING LOOPS OF THIS * DRIVER SHOULD BE VERIFIED FOR PROPER OPERATION. * * THERE ARE TIMING LOOPS IN THE FOLLOWING ROUTINES: * CPOLL,OUTWT,DELAY,TIME * * SYSTEM COMMUNICATION AREA * EQT1 EQU 1660B SHOWS I/O IN PROGRESS FOR CONTIN. EQT2 EQU 1661B DRIVER INITIATOR ADDRESS EQT3 EQU 1662B DRIVER CONTINUATOR ADDRESS EQT4 EQU 1663B SPECIAL BITS EQT5 EQU 1664B STATUS BITS EQT6 EQU 1665B REQUEST CODE, READ COUNT EQT7 EQU 1666B BUFFER ADDRESS EQT8 EQU 1667B BUFFER LENGTH EQT9 EQU 1670B FUNCTION TYPE CODE (PARAM.1) & * WRITE BEFORE READ COUNT EQT10 EQU 1671B RUNNING COUNTER EQT11 EQU 1672B SLOT# OF 1ST SENSE MODE INTERRUPTER EQT12 EQU 1771B DATA FROM THE INTERRUPTER EQT13 EQU 1772B SCHEDULE FLAG EQT14 EQU 1773B TIME OUT VALUE EQT15 EQU 1774B TIMEOUT CLOCK INTBA EQU 1654B INTERRUPT TABLE BASE ADDRESS SKP * IA72 NOP ENTRY POINT JSB SETIO "A" REG. CONTAINS CHANNEL # OF * DESIRED DEVICE ON ENTRY. SETIO USES * IT TO CONFIGURE DVA72'S I/O COMMANDS * LDA EQT5,I GET STATUS BITS AND MASKS RESET BITS 2,5,&7 STA EQT5,I RESTORE STATUS LDA RTNAD PUT (RETURN ADDRESS) STA CA72 INTO CONT. ENTRY LDA EQT13,I GET SCHEDULE FLAG SZA FLAG DEFINED YET? JMP CONT YES, SKIP DEFINITION SECTION * * THIS SECTION PLACES EITHER THE POSITIVE ADDRESS OF AN 'ALARM' * PROGRAM OR A MINUS 1 IF THERE IS NO SUCH PROGRAM INTO EQT13,I. * IT ALSO SETS BIT 12 OF EQT4,I TO INDICATE THE DRIVER WILL * HANDLE TIMEOUTS ITSELF. * LDA CHAN A_I/O CHANNEL, SET UP INDEX ADA N6 INTO THE INTERRUPT TABLE ADA INTBA TO GET THE SCHEDULE WORD LDB A,I B _ WORD (ITS ADDR. IN A) CMB,SSB,INB IF WORD POSITIVE SEZ EQT CCB THEN SET -1(NO PROG) ELSE STB TEMP +ADDR OF PROG INTO EQT13,I LDB EQT1 SET THE EQT ADDRESS INTO STB A,I THE INTERRUPT TABLE LDA EQT4,I SET THE 'I WILL HANDLE TIMEOUT' IOR BIT12 BIT IN EQT4,I STA EQT4,I RESTORE * * SETUP DATA BUFFER * LDA COUNT BUFFER POINTER CPA .8 BUFFER FULL?? JMP ERBUF NO MORE ROOM IN BUFFER LDA ADRS GET ADDR OF FIRST WORD OF BUFFER STA EQT13,I ADA .11 STA ADRS INCREMENT TABLE ADDR BY 11 ISZ COUNT INCREMENT BUFFER POINTER LDB EQT13,I GET NEW ADDR OF EQT13 LDA TEMP STORE STA B,I ID SEGMENT ADDR * CONT LDA EQT6,I GET CONTROL WORD OF REQUEST AND .3 ISOLATE BITS 1 & 0, REQ.OPERATION CPA .3 IS IT A FUNCTION REQ.? JMP FUNCT YES, THEN PROCESS FURTHER SKP * * REQUEST WAS READ OR WRITE. IS IT LEGAL? * LDA EQT6,I NO, GET REQ. CONTROL WORD AGAIN AND M700 ISOLATE K,V,& M BITS, MUST MATCH CPA KVM NO KEYBOARD,BINARY,FIXED LENGTH. RSS IT DOES, SKIP JMP RCER LDA EQT8,I GET BUFFER LENGTH CMA,SSA,INA,SZA BUFFER>0 CLA,RSS O.K. ZERO COUNTER JMP RCER BUFFER