* IDT 'SETPDT' * * The 931 DSR and CI403 board have been established as the * mechanisms for any remote system and/or modem connection. * It may be possible for a 931 port of a CI403 to be in an * uninitialized state. This condition results from POWERUP * occurring without a terminal connected to the port, and/or * from disconnecting a device from the same port. Then * as a task attempts to open the port for I/O, the open hangs * or fails(e.g. DX10 KERMIT opening the port for remote I/O) - * even with a modem or remote system connected to the port and with * proper signals set. The solution is to set the proper bits in the * PDT for the device (remote port) forcing the port to be initialized. * If an address(s) is passed to this routine that is NOT -1, then * that address is the address of the word that needs to be modified. * Modification will consist of setting bit 13 in the word(s). * * PROCEDURE SETPDT(WORD1ADDR,WORD2ADDR:INTEGER);EXTERNAL * * * ORIGINAL: PAUL W. MADAUS * MARCH 3, 1986 * BOT EQU R9 START OF STACK FRAME ARG EQU >28 BEGINNING OF ARGUMENT LIST * ADDR1 EQU ARG+0 ADDRESS OF FIRST PDT INIT WORD ADDR2 EQU ARG+2 ADDRESS OF SECOND PDT INIT WORD BMASK EQU >0004 THE BIT TO SET * MAPFIL DATA >4000,0 GOOD ENOUGH TO GET US INTO SYSTEM PDTS * DEF SETPDT * REF ENT$S,RET$S ENTRY AND RETURN ROUTINES * SETPDT BL @ENT$S BEGIN DATA >32 STACK FRAME SIZE * MOV @ADDR1(BOT),R1 GET THE FIRST PDT WORD ADDRESS CI R1,>FFFF VALID ADDR - i.e. CHANGE NEEDED? JEQ TRY2 NO - TRY SECOND WORD LDS @MAPFIL USE SYSTEM AREA MAP FILE MOV *R1,R2 GET PDT WORD ORI R2,BMASK SET THE BIT LDD @MAPFIL RELOAD SYSTEM AREA MAP FILE MOV R2,*R1 REPLACE THE MODIFIED PDT WORD * TRY2 MOV @ADDR2(BOT),R1 GET THE SECOND PDT WORD ADDRESS CI R1,>FFFF VALID ADDR - i.e. CHANGE NEEDED? JEQ BYE NO - ALL FINISHED LDS @MAPFIL USE SYSTEM AREA MAP FILE MOV *R1,R2 GET PDT WORD ORI R2,BMASK SET THE BIT LDD @MAPFIL RELOAD SYSTEM AREA MAP FILE MOV R2,*R1 REPLACE THE MODIFIED PDT WORD * BYE B @RET$S RETURN TO CALLER END