ASMB HED . GET A DATA FROM A 2645/2648 IN BLOCK MODE NAM GETBK,7 92080-1X408 REV.2026 800515 SPC 2 * ************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * * * PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * * * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * ************************************************************** SPC 2 ********************************************************************** * * * NAME: GETBK * * SOURCE: &GETBK 92080-18408 * * BINARY: %GETBK 92080-16408 PART OF $GPLB4 * * * * PGMR: FRANCOIS GAULLIER * * * * CALL GETBK(LU,IBUFR,ILENTH,IMODE) * * * * LU : TERMINAL LU * * IBUFR : BUFFER WHERE DATA IS RETURNED * * ILENTH : EXPECTED READ LENGTH IN BYTES (INCLUDING RECORD * * SEPARATORS) * * IMODE : 0=NORMAL MODE (DATA READ WHEN ENTER KEY PRESSED) * * 1=BLOCK ENABLED PROGRAM READ (DATA READ WITHOUT * * PRESSING ENTER KEY) * * 2=LAST CALL TO GETBK WAS MODE 1 & AN ERROR OCCURRED * * ON THE SCREEN THAT WAS READ. DATA WILL BE READ * * WHEN ENTER KEY PRESSED & MODE RESET TO 2 (AUTOMATIC* * ENTER). * * * ********************************************************************** SPC 3 * ********************************************************* * * THIS SUBROUTINE RESETS THE 2645 TERMINAL IN CASE OF * * * POWER FAIL OR WRONG MANIPULATION OF OPERATOR AND GET * * * A BLOCK OF DATA FROM 264X TERMINAL. * * ********************************************************* SPC 2 ENT GETBK EXT EXEC,.ENTR,REIO SUP SPC 2 UNLK BYT 33,142,137,40 LOCK BYT 33,143 LENH BSS 1 ICLAS BSS 1 CLASS I/O WORD DUMY NOP STATU OCT 000004 STATUS WORD I/0 MASK ABORT OCT 60400 ABORT CHARACTER MASK OCT 177400 DEC1 DEC 1 DEC2 DEC 2 DEC3 DEC 3 DEC11 DEC 11 DEC17 DEC 17 DEC21 DEC 21 NEGA2 DEC -2 NEGA3 DEC -3 NEGA5 DEC -5 NEGA8 DEC -8 NEGA9 DEC -9 NEG60 DEC -60 SAVEA NOP BLKMD BYT 33,150,33,144,137,40 HOME CURSOR, BLOCK TRANSFER ENABLED BLOKM BYT 33,46,153,61,102,40 PAGEM BYT 33,46,163,61,144,60,147,60,110 FMTON BYT 33,127,0,137 ONGH BYT 33,46,163,61,147,61,110,137 D3 DEC 3 B3K OCT 3000 ILU NOP CNT25 NOP SAVEB NOP B25K OCT 2500 SECS NOP ITIME BSS 5 * * * LU BSS 1 LU # ADDRESS IBUF BSS 1 BUFFER ADDRESS NBYTE BSS 1 LENGRTH ADDRESS MODE BSS 1 MODE OF OPERATION (0=NORMAL, 1=PGM ENABLED BLK READ) GETBK NOP JSB .ENTR DEF LU * LDA NBYTE,I CMA ASK ONE EXTRA WORD, TO STA LENH CHECK THE LENGTH LATER * *-----UNLOCK THE KEYBOARD * JSB EXEC 33,142,137,40 DEF *+5 ESC B _ DEF DEC2 DEF LU,I DEF UNLK DEF NEGA3 * *-----SKIP DOWN TO "INPUT" IF MODE 0 OR 2, ELSE SET UP FOR * PROGRAM ENABLE BLOCK READ IF MODE=1. * LDA MODE,I CPA DEC1 MODE 1? JMP PREAD YES. DO PGM ENABLED BLOCK READ. * *-----TURN ON STRAPS G & H. * JSB EXEC DEF *+5 DEF DEC2 DEF LU,I DEF ONGH 33,46,163,61,147,61,110,137 DEF NEGA8 ESC & S 1 G 1 H - * *-----LET DRIVER KNOW OF STRAP CHANGES. * LDA LU,I ADA B25K STA CNT25 JSB EXEC DEF *+3 DEF DEC3 DEF CNT25 * JMP INPUT GO READ FORM. * *-----FORMAT MODE ON * PREAD JSB EXEC 33,127,0,137 DEF *+5 ESC W 0 - DEF DEC2 DEF LU,I DEF FMTON ESC W DEF DEC2 * *-----BLOCK MODE ENABLE * JSB EXEC 33,46,153,61,102,40 DEF *+5 ESC & K 1 B DEF DEC2 DEF LU,I DEF BLOKM DEF NEGA5 * *-----PAGE MODE ENABLE + SET STRAPS G & H TO NORMAL. * JSB EXEC 33,46,163,61,144,60,147,60,110 DEF *+5 ESC & S 1 D 0 G 0 H DEF DEC2 DEF LU,I DEF PAGEM DEF NEGA9 * *-----SEND CNTL 2500B + LU * LDA LU,I ADA B25K STA CNT25 * JSB EXEC INFORM DRIVER OF CHANGES TO BLOCK DEF *+3 AND PAGE MODE STRAPPING. DEF DEC3 DEF CNT25 * *-----SEND DISPLAY TO COMPUTER * JSB EXEC 33,150,33,144,137,40 DEF *+5 ESC H ESC D - DEF DEC2 DEF LU,I DEF BLKMD ESC H ESC SMALL D DEF NEGA5 HOME CURSOR, BLOCK MODE XFER ENABLED * *-----GET A CLASS I/O WORD * INPUT CLA STA ICLAS SET CLASS WORD TO GET A CLASS # * JSB EXEC DEF *+8 DEF DEC17 DEF LU,I DEF IBUF,I DEF LENH DEF DUMY DEF DUMY DEF ICLAS * *-----IS CLASS I/O # AVAILABLE ? * SZA A CLASS # HAS BEEN PROVIDED JMP INPUT ASK AGAIN FOR A CLASS # * *-----IS INPUT COMPLETED ? * JSB EXEC DEF *+5 DEF DEC21 DEF ICLAS DEF IBUF,I DEF LENH * * *-----CHECK FOR TIME OUT * AND STATU SZA JMP EROR * *-----CHECK FOR ABORT * CPB DEC1 JMP ABOR JMP RIGH ABOR LDA IBUF,I AND MASK CPA ABORT JMP RETUR * *-----CHECK RIGHT LENGTH * RIGH CPB NBYTE,I JMP RETUR * *-----ERROR ! * EROR JSB EXEC DEF *+5 DEF DEC2 DEF LU,I DEF ZONE DEF ILG00 * *-----FUNCTION: .TRUE. (ERROR RETURN) * CCA JMP GETBK,I * *-----LOCK THE KEYBOARD * RETUR JSB EXEC DEF *+5 DEF DEC2 DEF LU,I DEF LOCK DEF NEGA2 * *-----IF MODE 2, RESET IT TO MODE 1. * LDB DEC1 LDA MODE,I CPA DEC2 STB MODE,I * *-----FUNCTION: .FALSE. (NORMAL RETURN) * CLA JMP GETBK,I * *-----RESET BUFFER OF THE 2645 TERMINAL * ZONE BYT 33,143 LOCK KEYBOARD BYT 33,155,33,130 UNLOCK MEMORY, FORMAT MODE OFF BYT 33,110,33,112 HOME UP CS. CLEAR DISPLAY * BYT 33,46 ASC 10,s0a0b0c1d0e0f1g1h0j0 BYT 113,00 * BYT 40,33,46,153,61,102 SET BLOCK MODE BYT 33,46,146,61,141,61,153,61,114,11 NEXT FIELD BYT 33,46,146,61,141,62,153,62,114,33,151,40 PREVIOUS FIELD BYT 33,46,146,61,141,63,153,61,114,40 NOT USED BYT 33,46,146,62,141,64,153,61,114,141 ABORT BYT 33,46,146,61,141,65,153,64,114,33,110,33,144,40 NEXT SCREEN BYT 33,46,146,61,141,66,153,65,114,163,33,110,33,144 PREV.SCREEN BYT 33,46,146,61,141,67,153,65,114,150,33,110,33,144 HELP BYT 33,46,146,61,141,70,153,65,114,151,33,110,33,144 INSERT * BYT 33,110,33,112 HOME UP CURSOR, CLEAR DISPLAY END00 EQU *-1 STR00 EQU ZONE ILG00 ABS END00-STR00+1 END