/LDFV5E: I/O/U-H COMMANDS FOR THE PDP8E -JVZ- / THIS OVERLAY ADDS THE 'I H', 'O H' AND 'U H' COMMANDS / TO A PDP8/E VERSION OF LAB-FOCAL. THESE COMMANDS AL- / LOW A PROGRAM TO COMMUNICATE WITH A HOST COMPUTER VIA / THE 'KL8E' PORT. THE 'U H' COMMAND CONNECTS THE TER- / MINAL TO THE REMOTE MACHINE (EXIT WITH CTRL/E), WHILE / 'I H' AND 'O H' (WITH ECHO OPTIONS) ALLOW INPUT/OUPUT / TO THE HOST. ALL I/O IS INTERRUPT-DRIVEN AND SO WILL / NOT WORK WHEN LDF IS RUN AS A BATCH JOB. KKSF=6401 /KL8E INSTRUCTIONS KKIE=6405 KKRB=6406 TTSF=6411 TTCF=6412 TTLS=6416 CLEI=0131 /KW8EA CLOCK IOTS CLDI=0132 CLSK=0133 CDI=CDF CIF EXIT=31 /FIELD 0 GOSW=36 K177=54 CHAR=66 EKODEV=126 ER50=1465 PCHK=5227 IOCMDS=6614 INTJMP=6670 INJMP=6675 FORLVL=25 /FIELD 1 OUTDEV=57 CRTEST=2235 M10D=3235 CINT=3307 XINT=3333 *4426 CLA IAC /ENABLE 120 HZ CLOCK CLEI KKIE /AND KL8E INTERRUPTS CLA CLL *ER50 777 /REPLACE 177 *1540 XINTX, XINT /AFTER ERROR MESSAGES CINTX, CINT+3 PFLVL, FORLVL PCHKX, PCHK HINTX, CDI 10 /RETURN TO FIELD 1 CLSK JMP I XINTX JMP I CINTX IHCMD, TAD PIN /DUMP BUFFER CONTENTS DCA POUT TAD OHCMD+4 JMP I 163 /[SETIDV OHCMD, DCA POUT /DISABLE BUFFER CONTROL JMS I 167 /GTNAME JMS I 170 /SETODV HECHOP HOSTIO -33 UHEND, TAD .-1 /RESTORE KEYPAD DCA I ER50 JMP EXIT UHCMD, CLA STL RTL /CLEAN UP THE STACK CDF 10 ISZ I PFLVL /DROP FORLVL STL RAL JMS I PCHKX /DROP STACK CDF 10 TAD EKODEV /USE DEFAULT OUTPUT DEV DCA I 153 DCA I ER50 /DISABLE KEYPAD TAD PIN DCA POUT /EQUATE BUFFER POINTERS / PAGE BOUNDARY KINTP7, DCA SYNCSW /CLEAR SYNC SWITCH TAD (SKP DCA I KINTP7 /DISABLE CTRL/C TRAP UHLUP, CDF 10 TAD I KBP SZA JMP KBCHR /K.B. TO HOST JMS HIN JMP UHLUP CDI 10 JMP I (OH /HOST TO TERM -5 KBCHR, TAD .-1 /CTRL/E? SNA CLA JMP UHXIT /RETURN TO PROG TAD I KBP JMS HOUT /SEND CHAR DCA I KBP JMP UHLUP /BACK TO WAIT LOOP ///// K7757, 7757 /LOC=PAGE+23 HINT, KKSF /HOST INTERRUPT SERVICE JMP OINT KKRB KBP, AND K177 /(K.B. BUFFER POINTER) SNA JMP OINT /IGNORE NULLS TAD (-23 SNA JMP DC3 /XOFF IAC IAC SNA JMP DC1 /XON TAD (21 DCA I PIN TAD PIN /CLEAR NEXT POSITION IAC K223, AND K7757 DCA PIN DCA I PIN TAD SYNCSW /TRANSMITTER BUSY? SNA CLA JMP SYNCSW+1 /NO - CHECK BUFFER OINT, TTSF /TRANSMITTER DONE? JMP I SYNC+2 TTCF SYNCSW, 0 /JMP I SYNC+2 TAD POUT /COMPARE (IN,OUT) CLL CIA SNL /IGNORE OVERFLOW? TAD PIN SNL SZA TAD 150 /[20 = BUFFER LENGTH TAD 165 /[6-20 SNL SZA CLA TAD K223 /XOFF IF NEARLY FULL SZA TTLS /HOSTSYNC SYNC, DCA SYNCSW JMP I .+1 HINTX DC3, TAD OINT+1 /TTSYNC DC1, DCA SYNCSW JMP SYNCSW IFNZRO .&37 HBUF, ZBLOCK 20 /HOST INPUT BUFFER ///// HIO, 0 /HOST I/O ROUTINES SNA JMP I (IH /INPUT HAS ZERO AC JMS HOUT TAD CHAR /ECHO? CDI 10 JMP I HIO HIN, 0 CDF 0 TAD I POUT /CHECK BUFFER SNA JMP HINX /NOTHING THERE DCA HOUT TAD POUT IAC /BUMP POINTER AND K7757 DCA POUT TAD HOUT ISZ HIN /SECOND RETURN JMP I HIN HINX, TAD (21 /SEND XON JMS HOUT JMP I HIN /FIRST RETURN ///// HOUT, 0 DCA CHAR /SAVE TAD CHAR TAD 165 /[-LF SNA CLA JMP I HOUT /OMIT LF ION TAD SYNCSW SZA CLA JMP .-2 TAD CHAR ISZ SYNCSW TTLS CLA JMP I HOUT ///// UHXIT, DCA I KBP /REMOVE CTRL/E TAD HIO+1 DCA I KINTP7 /REPAIR CTRL/C TRAP JMP I (UHEND PAGE *104 PIN, HBUF POUT, HBUF *144 UH, UHCMD *360 IH, TAD HTIME /SET TIMEOUT COUNTER DCA GOSW JMS I HINP /RETN CHAR IN THE AC SKP JMP IHX ISZ GOSW /TIMEOUT? JMP IH+2 TAD 166 /[32]=[EOF] IHX, CDI 10 JMP I .+1 HECHOP-2 HINP, HIN HTIME, -2000 /1 SEC AT 9600 BAUD *IOCMDS+1 JMP I UH *INJMP IHCMD *INTJMP OHCMD FIELD 1 *M10D -14 /DIVIDE BY 12. *CINT CDI 0 /CHECK S.L. FLAGS JMP I .+1 HINT *6354 OH, JMS I OUTDEV CIF 0 JMP I .+1 UHLUP HOSTIO, 0 /I/O TO THE HOST CDI 0 JMS I .+3 JMS I HECHOP JMP I HOSTIO /VIA INDEV OR OUTDEV HIO HECHOP, CRTEST /OUTPUT ECHO ROUTINE $