RGA TITLE 'DMKRGA (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000 COPY OPTIONS @V305731 00003000 COPY LOCAL @V305731 00004000 EJECT 00005000 ************************************************************* 00006000 * 00007000 * MODULE NAME - 00008000 * 00009000 * DMKRGA 00010000 * 00011000 * CONTENTS - 00012000 * 00013000 * DMKRGAIN - SECOND LEVEL INTERRUPT HANDLER FOR 3270 STATIONS 00014000 * 00015000 * FUNCTION - 00016000 * 00017000 * THIS MODULE PROVIDES SUPPORT FOR THE 3270 REMOTE DISPLAY 00018000 * AND PRINTER STATIONS. THE MODULE HANDLES INTERRUPTS AND CCW 00019000 * PROCESSING FOR THE REMOTE STATIONS INCLUDING MESSAGE HANDLING 00020000 * AND SCREEN MANAGEMENT. 00021000 SPACE 2 00022000 DMKRGA START , @V305731 00023000 SPACE 1 00024000 USING PSA,R0 @V305731 00025000 USING TRQBLOK,R4 @V305731 00026000 USING CONTASK,R6 @V305731 00027000 USING BSCBLOK,R5 @V305731 00028000 USING RDEVBLOK,R8 @V305731 00029000 USING IOBLOK,R10 @V305731 00030000 USING VMBLOK,R11 @V305731 00031000 USING NICBLOK,R9 @V305731 00032000 SPACE 1 00033000 EXTRN DMKIOSQR,DMKSCNRU,DMKQCNCL,DMKCFMBK @V305731 00034000 EXTRN DMKSTKMP,DMKCNSED,DMKSTKIO,DMKBLDVM @VA07391 00035100 EXTRN DMKSCHRT,DMKSCHST,DMKCVTBD,DMKCVTDB @V305731 00036000 EXTRN DMKCVTBH,DMKTBLUP,DMKTBLGR,DMKIOERN @V305731 00037000 EXTRN DMKERMSG,DMKSCNRD,DMKSCNVU,DMKCVTHB @V305731 00038000 EXTRN DMKCFMEN,DMKCFMAT,DMKQCNET,DMKQCNTO @V305731 00039000 EXTRN DMKRGBSN,DMKRGBIC,DMKRGBMT,DMKRGBEN @V346931 00040000 EXTRN DMKTBMTI,DMKTBMZI @V387398 00041000 EXTRN DMKCVTAB @VA04301 00041100 EXTRN DMKPTRAN,DMKQCNWT @V407511 00041110 EXTRN DMKRGFEN @VA13123 00042000 SPACE 1 @VA13123 00042500 ENTRY DMKRGAIN @V305731 00043000 ENTRY DMKRGACR @VA13123 00044000 EJECT , @VA13123 00044500 ************************************************************** 00045000 * 00046000 * SUBROUTINE NAME - 00047000 * 00048000 * DMKRGAIN 00049000 * 00050000 * FUNCTION - 00051000 * 00052000 * DMKRGAIN IS THE SECONDARY INTERRUPT HANDLER FOR THE 00053000 * 3270 REMOTE SUPPORT. THE SUBROUTINE HANDLES INTERRUPTS 00054000 * AND CCW PROCESSING FOR THE REMOTE DISPLAY AND PRINTER 00055000 * STATIONS, INCLUDING MESSAGE HANDLING AND SCREEN 00056000 * MANAGEMENT. 00057000 * 00058000 * ATTRIBUTES - 00059000 * 00060000 * RE-ENTRANT, RESIDENT, ENTERED VIA IOBLOK UNSTACK 00061000 * 00062000 * ENTRY CONDITIONS - 00063000 * 00064000 * GR12 = ADDRESS OF DMKRGAIN 00065000 * GR11 = ADDRESS OF THE SYSTEM VMBLOK 00066000 * GR10 = ADDRESS OF THE UNSTACKED IOBLOK 00067000 * 00068000 * EXIT CONDITIONS - 00069000 * 00070000 * EXIT IS MADE VIA GOTO DMKDSPCH 00071000 * 00072000 * CALLS TO OTHER ROUTINES - 00073000 * 00074000 * DMKIOSQR - TO START I/O ON LINE 00075000 * DMKSCNRU - TO LOCATE LINE RDEVBLOK 00076000 * DMKQCNCL - TO CLEAR CONTASK STACK AT LOGOUT 00077000 * DMKCFMBK - TO ENTER CONSOLE FUNCTION MODE 00078000 * DMKSTKMP - TO STACK CPEXBLOK 00079100 * DMKCNSED - TO PERFORM EDITING AND TRANSLATION ON INPUT 00080000 * DMKBLDVM - TO BUILD A VMBLOK FOR USER LOGON 00081000 * DMKSCHRT - TO RESET A TIMER REQUEST 00082000 * DMKSCHST - TO SET A TIMER REQUEST 00083000 * DMKERMSG - TO WRITE AN ERROR MESSAGE 00084000 * DMKSCNRD - TO GET REAL LINE ADDRESS 00085000 * DMKQCNET - TO RETURN CONTASK AT COMPLETION 00086000 * DMKQCNTO - TO SLEEP USER AFTER ERROR CONDITION 00087000 * DMKIOERN - TO RECORD HARDWARE ERROR 00088000 * DMKCFMEN - TO EXECUTE A CP CONSOLE FUNCTION 00089000 * DMKCFMAT - TO POST AN ATTENTION INTERRUPT TO VM 00090000 * DMKSCNVU - TO LOCATE THE VIRTUAL CONSOLE 00091000 * DMKFREE - TO ALLOCATE FREE STORAGE FOR CONTASK'S 00092000 * DMKFRET - TO RETURN ALLOCATED STORAGE 00093000 * DMKCVTBH - TO CONVERT LINE ADDRESS FOR ERROR MESSAGE 00094000 * DMKRGBSN - TO SCAN THE NICBLOKS FOR AN ACTIVE USER 00095000 * DMKRGBMT - TO FORMAT THE DISPLAY SCREEN 00096000 * DMKRGBIC - TO INITIALIZE CONTASK AND SCHEDULE I/O 00096100 * DMKRGBEN - TO ENABLE/DISABLE BISYNC LINE 00096200 * 00097000 * EXTERNAL REFERENCES - 00098000 * 00099000 * DMKTBLUP - TRANSLATE TO UPPER CASE CHARACTERS 00100000 * DMKTBLZI - APL 3270 COMPOUND CHARACTER TABLE 00100100 * DMKTBLTI - TEXT 3270 COMPOUND CHARACTER TABLE 00100200 * DMKRIOCN - SYSTEM CONSOLE ADDRESSES 00101000 * DMKSYSVM - ADDRESS OF THE SYSTEM VMBLOK 00102000 * 00103000 * TABLES / WORK AREAS - 00104000 * 00105000 * TRQBLOK CONTROL BLOCK IS EXTENDED BY 1 DOUBLE WORD 00106000 * TO CONTAIN EXTRA CONTROL DATA FOR THE RESOURCES. 00107000 * THE TRQBLOK EXISTS FROM THE FIRST MORE STATUS ON THE 00108000 * SCREEN TO LOGOUT. 00109000 * 00110000 * A BINARY SYNCHRONOUS COMMUNICATION CONTROL BLOCK (BSCBLOK) 00111000 * WILL EXITS FOR EACH BISYNC LINE. THE BSCBLOK EXITS 00112000 * FROM THE TIME THE BISYNC LINE IS ENABLED TO THE TIME IT'S 00113000 * DIABLED OR AN ERROR OCCURRED ON THE BISYNC LINE. 00114000 * 00115000 * TBL3277 - A TABLE USED TO INDEX FOR THE BUFFER ADDRESSES 00116000 * KEYBL - A TABLE USED TO FIND CONTROL KEYES 00117000 * 00118000 * NOTES - 00119000 * 00120000 * NONE 00121000 * 00122000 * REGISTER USAGE - 00123000 * 00124000 * GR14-15 LINKAGE REGISTERS 00125000 * GR12,13 MODULE BASE REGISTERS 00126000 * GR11 = ADDRESS OF THE SYSTEM VMBLOK 00127000 * GR10 = ADDRESS OF ACTIVE IOBLOK 00128000 * GR 9 = ADDRESS OF AFFECTED NICBLOK (IF ANY) 00129000 * GR 8 = ADDRESS OF RDEVBLOK FOR LINE 00130000 * GR 7 = INTERNAL LINKAGE REGISTER 00131000 * GR 6 = ADDRESS OF CONTASK 00132000 * GR 5 = BSCBLOK ADDRESSABILITY 00133000 * GR 4 = TRQBLOK ADDRESSABILITY 00134000 * G0-3 = WORK REGISTERS 00135000 * 00136000 * OPERATION - 00137000 * 00138000 * I. ANALYZE STATUS OF BISYNC LINE FOR 3270 REMOTE SUPPORT 00139000 ** 00140000 * 1. IF THE LINE RDEVBLOK INDICATES ANY OF THE FOLLOWING: 00141000 * 00142000 * . NON-BISYNC LINE RDEVBLOK 00143000 * . A COPIED IOBLOK FOR THIS LINE 00144000 * . UNSOLICITED INTERRUPT 00145000 * . THE BISYNC LINE IS NOT IN USE 00146000 * THEN, THROW AWAY THE LINE INTERRUPT AND RETURN 00147000 * TO THE DISPATCHER. 00148000 * 00149000 * 2. IF THE LINE RDEVBLOK INDICATE A FATAL CONDITION OR 00150000 * A NON-ZERO CONDITION CODE, DO ACTION 1. 00151000 * 00152000 * ACTION 1 00153000 * ________ 00154000 * 00155000 * . RELEASE ALL CONTASKS FROM THE LINE RDEVBLOK 00156000 * . FORCE ALL VIRTUAL MACHINE USERS OFF BISYNC LINE 00157000 * . RELEASE STORAGE OBTAINED FOR THE BSCBLOK 00158000 * . RESET THE POLL DELAY TIMER VALUE IF ONE EXIST 00159000 * . IF THE LINE RDEVBLOK INDICATED A CONDITION CODE OF 3 AND 00160000 * THE BISYNC LINE IS NOT OFFLINE, THEN SEND A 'NOT 00161000 * OPERATIONAL ...' MESSAGE TO THE SYSTEM OPERATOR. 00162000 * . SET THE OFFLINE AND DISABLE FLAG IN THE LINE RDEVBLOK 00163000 * . SEND 'LINE ... DISABLED' MESSAGE TO SYSTEM OPERATOR 00164000 * . RELEASE THE IOERBLOK AND IOBLOK; RETURN TO DISPATCHER 00165000 * . IF THE BISYNC LINE IS A SWITCHED LINE, BYPASS GOING TO 00165250 * DISPATCHER WHEN A PERMANENT IS INDICATED ON THE LINE. 00165500 * CALL DMKRGBEN TO PUT AN ENABLE UP ON THE LINE. 00165750 * 00166000 * 3. GET THE ENDING CCW ADDRESS AND PICK UP THE TP-OP 00167000 * CODE (BYTE 5) FROM THE CCW. GO BRANCH TO THE 00168000 * APPORPRIATE FUNCTIONAL AREA. 00169000 * 00170000 * TP-OP CODE FUNCTION 00171000 * __________ ________ 00172000 * 00173000 * 00 ERROR HANDLING CCW 00174000 * 01 ENABLE/DISABLE FUNCTION 00175000 * 02 WRITE EOT (SEQUENCE PRIOR TO POLLING 00176000 * AND ADDRESSING) 00177000 * 03 WRITE POLLING OR ADDRESSING CHARACTERS 00178000 * 04 HANDLE STATION'S STATUS & SENSE MSG. 00179000 * 05 READ RESPONSE TO ADDRESSING 00180000 * 06 WRITE RESPONSE TO TEXT 00181000 * 07 NO-OP FOLLOWING POLL COMMAND 00182000 * 08 UNIT EXECPTION CONDITION (TIMEOUT) 00183000 * 09 ALL RESET COMMANDS 00184000 * 10 READ/WRITE TEXT 00185000 * 11 READ RESPONSE TO TEXT 00186000 * 12 READ REMAINING DATA FROM STATION 00187000 * 13 STATUS BIDDING ON SWITCH LINE 00187100 * 14 DISCONNECT STATION FROM LINE 00187200 * 15 SEND ACK AFTER FSS WRITE 00187300 * 16 WRITE TEXT CCW 00187400 * 00188000 * II. PROCESS THE TP-OP CODE FUNCTIONS 00189000 * 00190000 * 1. HANDLE THE WRITE OPERATION FUNCTION 00191000 * A. HANDLE READ RESPONSE TO ADDRESSING (05) 00192000 * . IF THE REPLY IS AN RVI, GO DO A SPECIFIC 00193000 * POLL OPERATION FOR THE STATUS MESSAGE FROM 00194000 * THE STATION. 00195000 * . IF THE REPLY IS A WACK, CHECK FOR COPY FUNCTION 00196000 * ACTIVE, IF NOT, GO RESTART AN I/O OPERATION 00197000 * TO THE BISYNC LINE. IF COPY FUNCTION IS ACTIVE, 00198000 * SEND 'NOT ACCEPTED' MESSAGE TO REQUESTOR. 00199000 * . IF THE REPLY IS AN ACK, GET THE POINTER TO 00200000 * THE WRITE CCW STRING AND WRITE THE DATA 00201000 * TO THE STATION THAT WAS SELECTED. 00202000 * . IF THE REPLY IS AN EOT (3275 DIAL ONLY), GO 00202200 * GET THE PENDING STATUS MESSAGE. 00202400 * . IF THE REPLY WAS A NAK (3275 DIAL ONLY) GO 00202600 * RETRY THE OPERATION. 00202800 * . IF NO REPLY WAS RECEIVED, SEND ENQ TO 00203000 * CONTROL UNIT FOR RETRANSMISSION OF REPLY. 00204000 * 00205000 * B. HANDLE READ RESPONSE TO TEXT (11) 00206000 * 00207000 * . IF THE REPLY IS AN EOT AND IS NOT EXPECTED, 00208000 * SEND A SPECIFIC POLL OPERATION TO THE STATION 00209000 * FOR THE STATUS MESSAGE. IF THE EOT IS EXPECTED, 00210000 * GET THE RETURN INDEX VALUE AND GO TO 00211000 * FUNCTIONAL AREA. 00212000 * . IF THE REPLY IS A NAK, RETRANSMIT LAST WRITE 00213000 * OPERATION TO STATION. 00214000 * . IF THE REPLY IS A WACK AND NOT A PRINTER, 00215000 * RESET THE BISYNC LINE TO CONTROL MODE. IF THIS 00216000 * STATION IS A PRINTER, GET THE RETURN INDEX 00217000 * VALUE AND GO TO FUNCTIONAL AREA. 00218000 * . IF THE REPLY IS AN ENQ, RETRANSMIT LAST WRITE 00219000 * OPERATION TO STATION. 00220000 * . IF THE REPLY IS AN ACK, GET THE RETURN INDEX 00221000 * VALUE AND GO TO FUNCTIONAL AREA. 00222000 * . IF THE REPLY IS A DISCONNECT SIGNAL (DLE EOT), 00222200 * FORCE THE USER OFF THE SYSTEM AND PUT A READ 00222400 * UP ON THE LINE. 00222600 * . IF THE REPLY IS NOT RECEIVED, SEND AN ENQ 00223000 * TO CONTROL UNIT FOR RETRANSMISSION OF REPLY. 00224000 * 00225000 * RETURN INDEX VALUES (CONLABEL) 00226000 * INDEX FUNCTION 00227000 * _____ ________ 00228000 * 00 NEXT CONTASK FUNCTION 00229000 * 04 READ STATE FUNCTION 00230000 * 08 DETERMINE STATUS OF CONTASK 00231000 * 0C CONSOLE PROCESSING FUNCTION 00232000 * 10 MORE STATE FUNCTION 00233000 * 14 REJECT FUNCTION 00234000 * 18 WRITE STATUS FUNCTION 00235000 * 1C LOGOFF USER FUNCTION 00236000 * 20 BUILD VMBLOK FUNCTION 00237000 * 24 FORMAT DISPLAY FUNCTION 00238000 * 28 WRITE OPERATION FUNCTION 00239000 * 2C RELEASE BUFFER FUNCTION 00240000 * 30 RVI RESPONSE FUNCTION 00241000 * 00242000 * 2. HANDLE READ OPERATION (10) 00243000 * 00244000 * A. ANALYZE MESSAGE OR TEXT FROM THE REMOTE STATION 00245000 * 00246000 * . DETERMINE IF MESSAGE HAS ENDING CHARACTER (ETX) 00247000 * AT THE END OF MESSAGE AND IF NOT, REQUEST 00248000 * RETRANSMISSION OF MESSAGE FROM THE CONTROL 00249000 * UNIT. 00250000 * . IF TEXT IS FROM A 3275 DIAL, CHECK FOR 00250200 * DISCONNECT SIGNAL AND IF DISCONNECT SIGNAL 00250400 * (DLE EOT) IS PRESENTED, FORCE USER OFF SYSTEM. 00250600 * . IF EOT IS IN TEXT GO GET PENDING STATUS MESSAGE. 00250800 * 00251000 * 1) HANDLE TEST REQUEST MESSAGE 00252000 * 00253000 * . VM IGNORE THE TEST REQUEST MESSAGE 00254000 * 00255000 * 2) HANDLE STATUS MESSAGE 00256000 * 00257000 * . IF THE STATUS MESSAGE IS A STANDALONE DEVICE 00258000 * END, DETERMINE IF THE STATION SHOULD BE 00259000 * FORMATTED. IF THE MESSAGE IS NOT A STANDALONE 00260000 * DEVICE END, DETERIMINE IF THE STATION ERROR 00261000 * IS RETRYABLE AND IF SO, RETRY THE FAILING 00262000 * OPERATION FOR A MAXIMUM OF SEVEN TIMES . IF 00263000 * STATION ERROR IS NOT RETRYABLE, DO ACTION 2. 00264000 * 00265000 * ACTION 2 00266000 * ________ 00267000 * 00268000 * . SEND I/O ERROR MESSAGE (DMKRGA705I) FOR STATION 00269000 * TO THE SYSTEM OPERATOR. 00270000 * . RECORD MISCELLANEOUS DATA RECORD FOR STATION 00271000 * ERROR. 00272000 * . FORCE VIRTUAL MACHINE USER OFF BISYNC LINE 00273000 * . GET ACTIVE RESOURCE AND START I/O OPERATION 00274000 * TO BISYNC LINE. 00275000 * 00276000 * 3) HANDLE TEXT MESSAGE 00277000 * 00278000 * . PROCESS TAB FUNCTION 00279000 * . PROCESS COPY FUNCTION 00280000 * . CANCEL AND CLEAR KEY 00281000 * RELEASE READ BUFFER 00282000 * RESET ANY TIMER REQUEST 00283000 * CLEAR OUTPUT SCREEN AREA 00284000 * PROCESS NEXT CONTASK 00285000 * . PA1 KEY 00286000 * CANCEL FUNCTION BY RETURN CODE 4 OR 8 00287000 * CLEAR SCREEN AREA 00288000 * CLEAR THE STACK OF CONTASKS 00289000 * . PF KEYS 00290000 * GET THE USER'S FUNCTION TABLE VMPFUNC 00291000 * GET AND VERIFY THE EXISTENCE OF A FUNCTION 00292000 * WRITE UNDEFINED MESSAGE IF NOT FOUND 00293000 * WRITE FUNCTION DATA IF FOUND AND DELAYED 00294000 * PROCESS DATA IF IMMEDIATE 00295000 * RETURN TO RELEASE BUFFER AT WRITE COMPLETION 00296000 * . ENTER KEY 00297000 * ANALYZE DATA IN BUFFER TO GET LENGTH 00298000 * IF DATA ENTERED FROM READ STATE, CONTINUE 00299000 * AT LABEL RDATA. 00300000 * IF ENTERED FROM RUNNING, PROC. BY ENVIR. SET. 00301000 * NULL DATA GIVE ATTN TO VM, OR ENTER CP MODE. 00302000 * DATA ENTERED GO TO VM OR EXECUTE CONSOLE 00303000 * FUNCTION. 00304000 * DATA ENTERED IS RE-DISPLAYED UNLESS PRIVATE 00305000 * DATA THAT IS ALREADY PENDING CAUSES 'NOT 00306000 * ACCEPTED' MESSAGE. 00307000 * IF VIRTUAL DATA IS #CP EXECUTE FUNCTION 00308000 * RDATA ENTRY FOR RESPONSE TO READ REQUEST PASS 00309000 * BUFFER DATA BACK TO CALLER WITH LENGTH 00310000 * INDICATION. 00311000 * 00312000 * 4) TIMER INTERRUPT 00313000 * 00314000 * . STATUS TIMER INTERRUPT 00315000 * REBUILD IOBLOK AND RESTORE STATUS IF NOT 00316000 * ACCEPTED, CLEAR OUTPUT AREA, AND CONTINUE 00317000 * TO NEXT CONTASK IF MORE. 00318000 * . POLL DELAY TIMER INTERRUPT 00319000 * RELEASE THE TIMER REQUEST BLOCK 00320000 * GET NEXT ACTIVE RESOURCE AND START I/O 00321000 * TO BISYNC LINE. 00322000 * 00323000 * 5) HANDLE DATA THAT ENDS WITH AN ETB 00324000 * 00325000 * . WHEN MORE THAN 256 BYTES ARE ENTERED, 00326000 * A CHECK IS MAKE FOR AN ENDING CHAR. OF ETB. 00327000 * ONCE DETECTING AN ETB, AN ACKNOWLEDGEMENT 00328000 * IS SENTED REQUESTING MORE DATA. 00329000 * AFTERWARD, CONTROL IS GIVEN TO THE TEXT MSG. 00330000 * HANDLER (SEE FUNCTION ABOVED 'HANDLE TEXT 00331000 * MESSAGE'). 00332000 * 00333000 * 3. HANDLE THE ENABLE/DISABLE FUNCTION (01) 00334000 * 00335000 * A. IN ORDER TO DISABLE THE BISYNC LINE DO ACTION 1. 00336000 * B. ONCE THE BISYNC LINE IS ENABLED RETURN THE 00337000 * CONTASK TO THE SYSTEM AND RESTART THE I/O 00338000 * OPERATION TO THE BISYNC LINE. 00339000 * 00340000 * 4. HANDLE ALL RESET FUNCTIONS (09) 00341000 * 00342000 * . IF THERE ARE NO ERROR CONDITIONS OR STATUS 00343000 * INDICATED, GET NEXT CONTASK ON THE STATION QUEUE. 00344000 * . IF THIS IS A STATION ERROR, DO ACTION 2. 00345000 * . IF THIS IS A CONDITION TO IGNORE INPUT DATA, THEN 00346000 * GET NEXT CONTASK FROM STATION QUEUE. 00347000 * . IF THIS IS A COPY FUNCTION, THEN REACTIVATE THE 00348000 * REQUESTOR'S STATION. 00349000 * . IF NONE OF THE ABOVE, ABEND SYSTEM. 00350000 * 00351000 * 5. HANDLE THE NO-OP COMMAND FUNCTION (07) 00352000 * 00353000 * . IF THE POLL DELAY INTERVAL IS ZERO, GO REACTIVATE 00354000 * GENERAL POLL OPERATION IF THERE ARE NO OUTSTANDING 00355000 * WRITE OPERATIONS. 00356000 * . IF THE POLL DELAY INTERVAL IS NON-ZERO, SET UP 00357000 * THE TIMER REQUEST BLOCK WITH THE DELAY POLL 00358000 * TIMER INTERVAL AND WAIT UNTIL THE TIME HAS EXPIRED, 00359000 * BEFORE DOING A GENERAL POLL OPERATION AGAIN. 00360000 * 00361000 * 6. HANDLE THE UNIT EXECPTION FUNCTION (08) 00362000 * 00363000 * . SET UP TO RESTART THE FAILING OPERATION THAT 00364000 * THE TIMEOUT OCCURRED ON FROM THE REMOTE UNIT. 00365000 * 00366000 * 7. HANDLE UNKNOWN CCW OR ERROR HANDLER CCW (00) 00367000 * 00368000 * . DO ACTION 1 00369000 * 00370000 * 8. HANDLE STATION'S STATUS AND SENSE MESSAGE (04) 00371000 * 00372000 * 9. HANDLE BLOCK DATA FROM DISPLAY STATION (12) 00373000 * 00373020 * 10. HANDLE PENDING STATUS MESSAGE ON A SWITCHED LINE (13) 00373040 * 00373060 * . IF THE REPLY IS AN ENQ, WRITE AN ACK0 TO THE 00373080 * STATION AND PUT A READ UP ON THE LINE TO RECEIVE 00373100 * THE STATUS OR TEXT MESSAGE. 00373120 * . IF THE REPLY IS THE DISCONNECT SIGNAL (DLE EOT), 00373140 * GO FORCE THE USER OFF THE SYSTEM. 00373160 * . IF THE REPLY IS UNKNOWN, RETRY THE I/O OPERATION 00373180 * 00373200 * 11. HANDLE DROP/DISCONNECT SWITCHED LINE (14) 00373220 * 00373240 * . IF THE STATION IS MARKED DISABLED ONLY ENABLE THE 00373260 * SWITCHED LINE. IF THE STATION IS ENABLED, ENABLE 00373280 * THE SWITCHED LINE AND WRITE THE VM LOGO TO THE 00373300 * STATION. 00373320 * 00373340 * ERROR MESSAGES - 00374000 * 00375000 * DMKRGA454I LINE 'ADDR' DISABLED 00376000 * DMKRGA455I LINE 'ADDR' CC=3 NOT OPERATIONAL 00377000 * DMKRGA705I I/O ERROR RESID='RESOURCE ID' STATUS='STATUS' LINE='ADDR' 00378000 SPACE 2 00379000 ************************************************************* 00380000 EJECT 00381000 USING DMKRGAIN,R12 @V305731 00382000 DMKRGAIN DS 0D @V305731 00383000 LM R12,R13,RGABASE SET UP ADDRESSABILITY @V305731 00384000 USING DMKRGA,R12,R13 @V305731 00385000 LH R1,IOBRADD REAL DEVICE ADDRESS OF LINE @V305731 00386000 CALL DMKSCNRU GET THE RDEVBLOK ADDRESS @V305731 00387000 CLI RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS ? @V305731 00388000 BNE RGIGNORE NO, THROW AWAY INTERRUPT @V305731 00389000 CLI RDEVTYPE,TYPBSC IS THIS A BISYNC LINE @V305731 00390000 BNE RGIGNORE NO, THROW AWAY INTERRUPT @V305731 00391000 CL R10,IOBLINK IS THIS A COPIED IOBLOK @V305731 00392000 BNE RGIGNORE YES, THROW AWAY INTERRUPT @V305731 00393000 TM IOBSPEC,IOBUNSL IS THIS A UNSOLICITED INTERRUPT @V305731 00394000 BO RGIGNORE YES, THROW AWAY INTERRUPT @V305731 00395000 TM RDEVSTAT,RDEVRSVD IS THIS LINE IN USE ? @V305731 00396000 BZ RGIGNORE NO, CLEAN UP AND EXIT @V305731 00397000 SWITCH ENSURE WE ARE ON THE MAIN PROC @V407511 00397100 L R5,RDEVBSC GET POINTER TO BSCBLOK @V305731 00398000 L R9,BSCAUSER GET ADDR OF ACTIVE RESOURCE @V305731 00399000 TM BSCFLAG1,BSCHALT HAS HALT I/O BEEN DONE YET? @V346931 00399300 BO FATALER0 YES, DON'T DISABLE LINE @V346931 00399600 TM IOBSTAT,IOBFATAL+IOBCC3 A FATAL CONDITION @V305731 00400000 BNZ FATALER YES, FATAL CONDITION @V305731 00401000 L R3,IOBCSW GET CCW ADDRESS FROM CSW @V305731 00402000 LTR R3,R3 IS ADDRESS FROM CSW ZERO @VM03116 00403000 BZ FATALER YES, FATAL CONDITION @VM03116 00404000 SL R3,F8 BACK UP ONE CCW (KEY IS ZERO) @V305731 00405000 SR R1,R1 CLEAR INDEX REGISTER @V305731 00406000 IC R1,5(R3) GET BRANCH TABLE INDEX @V305731 00407000 SLL R1,2 MULTIPLE BY 4 @V305731 00408000 B TP0X(R1) BRANCH TO FUNCTIONAL SECTION @V305731 00409000 TP0X EQU * BRANCH TABLE @V305731 00410000 B FATALER1 ERROR HANDLER CCW OR UNKNOWN @V346931 00411100 B TP01 ENABLE - DISABLE FUNCTION @V305731 00412000 B TP02 WRITE EOT PRIOR POLL OR ADDR. @V305731 00413000 B TP03 WRITE POLLING OR ADDRESSING CHARS@V305731 00414000 B TP04 READ RESPONSE TO POLLING @V305731 00415000 B TP05 READ RESPONSE TO ADDRESSING @V305731 00416000 B TP06 POLL - WRITE RESPONSE TO TEXT @V305731 00417000 B TP07 NO-OP FOLLOWING POLL COMMAND @V305731 00418000 B TP08 UNIT EXECPTION CONDITION-TIMEOUT @V305731 00419000 B TP09 ALL RESET COMMANDS @V305731 00420000 B TP10 POLL/ADDR - READ-WRITE TEXT @V305731 00421000 B TP11 ADDR - READ RESPONSE TO TEXT @V305731 00422000 B TP12 READ REMAINING DATA FROM STATION @VM03043 00423000 B TP13 GET PENDING STATUS MESSAGE @V346931 00424100 B TP14 STATION DISCONNECT/DROP FROM LINE@V346931 00424200 B TP16 WRITE TEXT CCW @VA13944 00424250 SPACE 2 00424300 TP02 EQU * WRITE EOT PRIOR TO POLL OR ADDR. @V305731 00425000 TP03 EQU * WRITE POLLING OR ADDRESSING CHARS@V305731 00426000 TP06 EQU * POLL - WRITE RESPONSE TO TEXT @V305731 00427000 TP16 DS 0H WRITE TEXT CCW @VA13944 00427100 SPACE 1 00428000 UNITEXCP EQU * TEST FOR TIMEOUT CONDITION @V305731 00429000 BAL R3,RTYCOUNT CHECK RETRY FIELD FOR MAXIMUM @VA13944 00430100 TM IOBCSW+4,CE+DE+UE IS THIS A CE,DE, AND UE @VA13944 00430200 BNO FATALER NO, FATAL SITUATION @VA13944 00430300 MVC IOBMISC2+1(3),IOBCAW+1 SAVE CCW STRING ADDRESS @V305731 00438000 LA R1,UNEPTCCW SET UP TO DO A READ SKIP @VA13944 00439100 BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 00440000 SPACE 2 00441000 TP01 EQU * ENABLE - DISABLE FUNCTION @V305731 00442000 L R6,NICQPNT GET ADDRESS OF ACTIVE CONTASK @V305731 00443000 TM RDEVFLAG,RDEVDISB IS DISABLE LINE INDICATED? @V346931 00444000 BO FATALER1 YES, FORCE ALL USERS OFF LINE @V346931 00445000 BAL R3,CONRET GO RETURN CONTASK @V305731 00446000 NI RDEVSTAT,X'FF'-RDEVWAII CLEAR BUSY FLAG FOR LINE@V305731 00447000 BAL R7,RGSTART GET ACTIVE RESOURCE & START I/O @V305731 00448000 SPACE 2 00449000 TP05 EQU * ADDR-READ RESPONSE TO ADDRESSING @V305731 00450000 TM RDEVFTR,FTRDIAL DIAL FEATURE INDICATED? @V346931 00450050 BZ NODIAL2 NO, GO CHECK RESPONSE @V346931 00450100 TM BSCFLAG1,BSCINBID INITIAL BIDDING SEQUENCE? @V346931 00450150 BZ NODIAL2 NO, GO CHECK RESPONSE @V346931 00450200 NI BSCFLAG1,X'FF'-BSCINBID CLEAR INITIAL BID FLAG @V346931 00450250 CLC BSCRESP+LENADDR(L'BSCRCVD),BSCRCVD ACK RESPONSE?@V346931 00450300 BE CORACK0 YES, WRITE MESSAGE TO STATION @V346931 00450350 CLI BSCRESP+LENADDR,NAK NAK RESPONSE ? @V346931 00450400 BE GETDUSNS YES, GO SET UP TO RETRY I/O @V346931 00450450 NODIAL2 EQU * NOT DIAL OR NOT INIT BIDDING @V346931 00450500 CLC BSCRESP(2),BSCRCVD IS THIS THE CORRECT RESPONSE @V305731 00451000 BE CORACK0 YES, GET NEXT RESPONSE EXECPTED @V305731 00452000 CLC BSCRESP(2),BSCSEND IS THIS THE SENDING RESPONSE @V305731 00453000 BE CORACK0 YES, GET NEXT RESPONSE EXPECTED @V305731 00454000 CLC BSCRESP(2),RGFWACK IS THIS A WACK RESPONSE @V305731 00457000 BE ISWACK YES, GO SET WACK INDICATOR @V305731 00458000 TM RDEVFTR,FTRDIAL IS DIAL UP FEATURE INDICATED?@V346931 00458050 BNO CHKRVI NO, CHECK FOR RVI RESPONSE @V346931 00458100 CLI BSCRESP,EOT EOT ? @V346931 00458150 BE GETDUSNS YES, GET PENDING STATUS MESSAGE @V346931 00458200 CLC BSCRESP,RGFDLEOT DISCONNECT SIGNAL? @V346931 00458250 BE DLEEOT YES, GO FORCE USER OFF SYSTEM @V346931 00458300 CLI BSCRESP,NAK NAK RESPONSE (NO TERMID)? @V346931 00458350 BE GETDUSNS YES, GO SET UP TO RETRY I/O @V346931 00458400 TM BSCFLAG,BSCRVI WAS EOT EXPECTED? @VA10521 00458410 BO ISRVI YES, GO ISSUE SPECIFIC POLL @VA10521 00458420 BAL R7,SENDENQ UNRECOGNIZED RESPONSE @V346931 00458450 CHKRVI EQU * CHECK FOR PENDING STATUS @V346931 00458500 CLC BSCRESP,RGFRVI IS THIS AN RVI RESPONSE? @V346931 00458550 BE ISRVI YES, GO SET RVI INDICATOR @V346931 00458600 CLI BSCRESP,EOT IS THIS AN EOT RESPONSE @V305731 00459000 BE ISRVI YES, GO ISSUE SPECIFIC POLL @V305731 00460000 TM BSCFLAG,BSCRVI WAS EOT EXPECTED? @VA11660 00460100 BO ISRVI YES, GO ISSUE SPECIFIC POLL @VA11660 00460200 BAL R3,RTYCOUNT CHECK RETRY COUNTER @VA13944 00461000 B RESTARTA DO IT AGAIN, SAM @VA13944 00461050 SPACE 2 00461100 GETDUSNS EQU * SET UP TO HANDLE RETRY @V346931 00461200 MVC BSCPCCW1(TWOCCW),S3275EOT WRITE EOT/READ CCW @V346931 00461300 LA R1,BSCRESP ADDR OF RESPONSE BUFFER @V346931 00461400 STCM R1,B'0111',BSCPCCW2+1 INTO CCW @V346931 00461500 XC BSCRESP(RESPLEN),BSCRESP CLEAR RESPONSE BUFFER @V346931 00461600 LA R1,BSCPCCW1 ADDRESS OF CHANNEL PROGRAM @V346931 00461700 BAL R7,SETCAW GO START I/O TO BISYNC LINE @V346931 00461800 SPACE 1 00462000 CORACK0 EQU * CORRECT RESPONSE SECTION @V305731 00463000 XI BSCRCVD+1,X'11' CHANGE ACK-0 TO ACK-1 @V305731 00464000 XI BSCSEND+1,X'11' CHANGE ACK-1 TO ACK-0 @V305731 00465000 MVI IOBMISC2,IBBWRITE FLAG AS WRITE CCW STRING @V305731 00466000 L R1,BSCSPTR GET POINTER TO WRITE CCW STRING @V305731 00467000 BAL R7,SETCAW GO RESTART I/O OPERATION @V305731 00468000 SPACE 2 00469000 ISWACK EQU * @V305731 00470000 TM BSCFLAG,BSCCOPY IS COPY FUNCTION ACTIVE @V305731 00471000 BO COPYERR YES, SEND MESSAGE TO REQUESTOR @V305731 00472000 LA R1,BSCSCCW1 GET SELECT CCW @VA12356 00472100 C R1,IOBCAW IS IT THE ONE? @VA12356 00472200 BE OKCAW YES, RESTART AT THE SELECT @VA12356 00472300 BAL R3,SELECTCW GO RESTART ADDRESSING SEQUENCE @VA11299 00473100 OKCAW BAL R7,SETCAW ... @VA12356 00473300 SPACE 1 00474000 COPYERR EQU * SEND MESSAGE TO REQUESTOR @V305731 00475000 NI BSCFLAG,X'FF'-BSCCOPY CLEAR COPY FUNCTION FLAG @V305731 00476000 ICM R6,15,NICQPNT GET COPY FUNCTION CONTROL TASK @V305731 00477000 BZ *+8 IF ZERO, BYPASS RETURN TASK @V305731 00478000 BAL R3,CONRET RETURN CONTROL CONTASK @V305731 00479000 L R9,BSCUCOPY GET COPY REQUESTOR NICBLOK ADDR @V305731 00480000 BAL R3,NOTACPT GET CCWS FOR NOT ACCEPTED MESSAGE@V305731 00481000 OI NICSTAT,NICCPNA+NICNTRL SET NOT ACPTED & CONTROL@V305731 00482000 LA R1,CONCCW1 GET START OF CCW STRING @V305731 00483000 ST R1,IOBCAW SAVE POINTER IN CAW FIELD @V305731 00484000 BAL R3,SELECTCW GET ADDRESSING CHARACTERS @V305731 00485000 BAL R7,RESTART GO RESTART I/O OPERATION TO LINE @V305731 00486000 SPACE 2 00487000 ISRVI EQU * @V305731 00488000 BAL R3,SPOLLCW SET UP SPECIFIC POLLING CCWS @V305731 00489000 BAL R7,SETCAW GO RESTART I/O OPERATION @V305731 00490000 SPACE 2 00491000 TP07 EQU * NOP FOLLOWING POLL COMMAND @V305731 00492000 MVI BSCFLAG,X'00' CLEAR BISYNC INDICATORS @V305731 00493000 BAL R7,FRETIOB RELEASE IOBLOK & IOERBLOK @V305731 00494000 L R4,BSCTMRQ GET POINTER TO TIMER REQUEST @V305731 00495000 LTR R1,R4 IS THERE A POINTER ? @V305731 00496000 BZ POLLTMR YES, SET UP TIMER REQUEST BLOCK @V305731 00497000 CALL DMKSCHRT GO RESET TIMER INTERRUPT @V305731 00498000 BAL R7,DSCSTRQ GO SET UP TIMER REQUEST BLOCK @V305731 00499000 SPACE 1 00500000 POLLTMR EQU * GET STORAGE FOR TRQBLOK @V305731 00501000 BAL R3,TRQSETUP GET STORAGE FOR TIMER REQUEST @V305731 00502000 ST R4,BSCTMRQ SAVE POINTER TO TIMER REQUEST @V305731 00503000 DSCSTRQ EQU * SCHEDULE TIMER REQUEST @V305731 00504000 NI RDEVSTAT,X'FF'-RDEVWAII CLEAR LINE BUSY FLAG @V305731 00505000 SLR R3,R3 CLEAR REGISTER 3 @V305731 00506000 SLR R2,R2 CLEAR REGISTER 2 @V305731 00507000 ICM R3,15,RDEVPDLY GET VALUE FOR TENTHS OF SECOND @V305731 00508000 BZ TMREAD IF ZERO, CONTINUE POLLING @V305731 00509000 M R2,=F'100000' PUT VALUE IN TIME OF DAY @V305731 00510000 SLDL R2,12 (TOD) CLOCK VALUE @V305731 00511000 STM R2,R3,TMRGPOLL SAVE TOD INTERVAL VALUE @V305731 00512000 MVI TRQNAME,TRQBPOLL SET TIMER REQUEST FOR POLL @V305731 00513000 LA R15,TMRINT GET RETURN ADDRESS ON INTERRUPT @V305731 00514000 LA R1,TMRGPOLL GET ADDRESS OF TOD CLOCK INTERVAL@V305731 00515000 BAL R7,SCHTIME SCHEDULE TIMER REQUEST @V305731 00516000 OI BSCFLAG,BSCSCAN SET SECOND SCAN FLAG @V305731 00517000 BAL R7,RGSTART CHECK FOR QUEUED WRITE REQUESTS @V305731 00518000 SPACE 2 00519000 TP10 EQU * POLL/ADDR - READ-WRITE TEXT @V305731 00520000 CLI BSCREAD,EOT AN END OF TRANSMISSION RESPONSE @V305731 00521000 BE ISRVI YES, DO A SPECFIC POLL OPERATION @V305731 00522000 TM IOBCSW+4,UE DID WE GET AN EOT SOMEWHERE? @VA13944 00522100 BO RESTARTA YES, START THE LINE AGAIN @VA13944 00522200 LA R1,BSCSIZE1 GET SIZE OF INPUT BUFFER @V305731 00523000 LA R2,BSCREAD GET ADDRESS OF BEGINNING OF DATA @V305731 00524000 SR R3,R3 CLEAR REGISTER 3 @V305731 00525000 ENQLIST EQU * CHECK FOR ENDING BISYNC CHARACTER@V305731 00526000 CLI 0(R2),ENQ IS THIS AN ENQ BISYNC CHARARCTER @V305731 00527000 BNE ENQDIAL NO, TEST FOR ENDING CHAR @V346931 00528000 OI BSCFLAG,BSCENQ SET ENQ INDICATOR @V305731 00529000 B DATAGOOD GO CHECK FOR BISYNC HEADER @V305731 00530000 ENQDIAL TM RDEVFTR,FTRDIAL IS DIAL FEATURE INDICATED? @V346931 00530100 BZ ENQETX NO, CHECK FOR ENDING CHARACTER @V346931 00530200 CLC 0(DLEOTLN,R2),RGFDLEOT IS THIS DISCON SIGNAL? @V346931 00530300 BE DLEEOT YES, FORCE USER OFF SYSTEM @V346931 00530400 CLI 0(R2),EOT EOT? @V346931 00530500 BE ISRVI YES, GET PENDING STATUS MESSAGE @V346931 00530600 ENQETX EQU * CHECK FOR ENDING CHARACTER @VM03133 00531000 CLI 0(R2),ETX IS THIS THE ENDING BISYNC CHARS. @V305731 00532000 BE DATAGOOD YES, GO CHECK FOR BISYNC HEADER @V305731 00533000 CLI 0(R2),ETB IS THIS END OF TEXT BLOCK CHARS. @V305731 00534000 BE DATAGOOD YES, GO CHECK FOR BISYNC HEADER @V305731 00535000 LA R2,1(R2) UPDATE INPUT DATA ADDRESS @V305731 00536000 BCT R1,ENQLIST GO CHECK NEXT CHARACTER IN DATA @V305731 00537000 BAL R7,SENDNAK REQUEST RETRANSMISSION OF INPUT @V305731 00538000 SPACE 1 00539000 DATAGOOD EQU * CHECK FOR BISYNC HEADER @V305731 00540000 LR R1,R2 SAVE ENDING ADDRESS @V305731 00541000 SR R0,R0 CLEAR REGISTER 0 @V305731 00542000 LA R4,BSCREAD+1 GET POINTER TO STX CONTROL CHAR. @V305731 00543000 CLI BSCREAD,X'05' IS THIS THE INDEX BYTE @V305731 00544000 BE DATUPDAT YES, BYPASS GETTING ADDR. OF STX @VM03133 00545000 S R4,F1 GET POINTER TO STX CONTROL CHAR. @V305731 00546000 DATUPDAT EQU * GET CONTROL UNIT & DEVICE ADDRESS@VM03133 00547000 ICM R0,3,1(R4) GET STATION ADDRESS (CU & DV) @V305731 00548000 CLI 0(R4),STX IS THIS THE BEGINNING CHARACTER @V305731 00549000 BE STATGOOD YES, GO FIND RESOURCE NICBLOK @V305731 00550000 CLC 0(2,R4),RGFSONL IS THIS - SOH % - @V305731 00551000 BNE SENDNAK NO, REQUEST RETRANSMIT INPUT DATA@V305731 00552000 ICM R0,3,4(R4) GET STATION ADDRESS (CU & DV) @V305731 00553000 CLC 2(2,R4),=X'D902' STATUS MESSAGE (R STX) @V305731 00554000 BE STATGOOD YES, GO FIND RESOURCE NICBLOK @V305731 00555000 CLC 2(2,R4),=X'6102' TEST REQUEST MSG. (/ STX) @V305731 00556000 BE TESTREQ YES, GO IGNORE INPUT DATA @V305731 00557000 BAL R7,SENDNAK REQUEST RETRANSMISSION OF INPUT @V305731 00558000 SPACE 1 00559000 STATGOOD EQU * FIND RESOURCE NICBLOK @V305731 00560000 L R9,RDEVNICL GET ADDRESS OF NICBLOK LIST @V305731 00561000 LA R2,NICSIZE*8 GET SIZE OF NICBLOK @V305731 00562000 LH R3,RDEVMAX GET MAXIMUN NUMBER OF RESOURCES @V305731 00563000 MH R3,=AL2(NICSIZE*8) GET ENDING ADDR. OF LIST @V305731 00564000 ALR R3,R9 ... @V305731 00565000 POLLIST EQU * FIND AFFECTED NICBLOK @V305731 00566000 TM RDEVFTR,FTRDIAL DIAL FEATURE INDICATED @V346931 00566100 BNO CKPLCHAR NO, GO EXAMINE POLLING CHARS @V346931 00566200 TM NICTYPE,NICTERM DISPLAY/PRINTER ? @V346931 00566300 BO FOUND YES, GO PROCESS INPUT TEXT @V346931 00566400 CKPLCHAR EQU * NOT DIAL PRINTER @V346931 00566500 CLM R0,B'0011',NICPOLL CORRECT POLLING CHARACTERS? @V305731 00567000 BE FOUND YES, GO PROCESS INPUT DATA @V305731 00568000 BXLE R9,R2,POLLIST GET NEXT NICBLOK AND LOOP @V305731 00569000 L R9,RDEVNICL GET POINTER TO NICBLOK LIST @V305731 00570000 BAL R7,TESTREQ RESOURCE NOT SYS-GEN. - IGNORE @V305731 00571000 SPACE 2 00572000 *********************************************************** 00573000 * ENTRY WHEN TIMER REQUEST EXPIRES. 00574000 *********************************************************** 00575000 SPACE 1 00576000 USING *,R12 ADDRESSABILITY FOR TIMER REQUEST @V305731 00577000 TMRINT EQU * ENTRY TIMER REQUEST AT EXPIRATION@V305731 00578000 SWITCH ENSURE WE ARE ON THE MAIN PROC @V407511 00578100 LM R12,R13,RGABASE GET BASE ADDRESSES @V305731 00579000 USING DMKRGA,R12,R13 .... @V305731 00580000 LH R1,TRQBDEV-TRQBLOK(R10) GET LINE ADDRESS @V305731 00581000 CALL DMKSCNRU LOCATE REAL DEVICE CONTROL BLOCKS@V305731 00582000 L R5,RDEVBSC GET ADDRESS OF BSCBLOK @V305731 00583000 L R9,TRQBCRT-TRQBLOK(R10) GET NICBLOK ADDR OF USER@V305731 00584000 CLI TRQNAME-TRQBLOK(R10),TRQBPOLL A POLL REQUEST @V305731 00585000 BE TMREAD YES, RELEASE TIMER REQUEST BLOCK @V305731 00586000 TM RDEVSTAT,RDEVWAII IS THE LINE ACTIVE? @VA08733 00586050 BNO TMRGO NO, GO ON @VA08733 00586100 CL R9,BSCAUSER IS THIS USER ACTIVE? @VA08733 00586150 BNE TMRGO NO, GO ON @VA08733 00586200 * *** DANGEROUS SITUATION: ACTIVITY ALREADY ON-GOING FOR 00586250 * *** THE SAME TUBE. SAFER TO WAIT ANOTHER SECOND BEFORE 00586300 * *** TRYING ANYTHING. 00586350 LA R1,=A(1,0) 1 SECOND TIMER DELAY @VA08733 00586400 LA R15,TMRINT RETURN ADDRESS @VA08733 00586450 LR R4,R10 TRQBLOK ADDRESS @VA08733 00586500 BAL R7,SCHTIME SCHEDULE TIMER REQUEST @VA08733 00586550 B GODSPCH AND GO WAIT AWHILE LONGER @VA08733 00586600 TMRGO EQU * HERE IF NOT ACTIVE SAME TUBE @VA08733 00586650 NI NICSTAT,X'FF'-NICTRQ RESET TIMER REQUEST @V305731 00587000 TM NICSTAT,NICCPNA NOT ACCEPTED MESSAGE ON @V305731 00588000 BO CPNATMR1 YES, GO DETERMINE CORRECT STATUS @V305731 00589000 BAL R3,GRFCLRT SET UP CCWS TO CLEAR SCREEN @V305731 00590000 MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 00591000 BAL R7,CKLINE CHECK STATUS OF BISYNC LINE @VA04651 00592100 SPACE 1 00593000 CPNATMR1 EQU * GET CORRECT SCREEN STATE @V305731 00594000 BAL R4,STATUS DETERMINE SCREEN STATUS @V305731 00595000 CKLINE EQU * DETERMINE STATUS OF LINE @VA04651 00595100 OI NICFLAG,NICPROCN PROCESS CONTASK NOW ... @V305731 00607000 NI NICSTAT,X'FF'-NICCPNA CLEAR NOT ACPTED MSG FLAG @V305731 00608000 SR R10,R10 CLEAR IOBLOK ADDRESS REGISTER @V305731 00609000 BAL R7,RGSTART GET ACTIVE RESOURCE & START I/O @V305731 00610000 SPACE 2 00611000 TMREAD EQU * HANDLE A POLL TIMER REQUEST @V305731 00612000 LA R0,TRQBSIZE+CRTEXT GET SIZE OF TRQBLOK @VA13071 00613100 L R1,BSCTMRQ GET ADDRESS OF TIMER REQUEST @V305731 00614000 BAL R7,FRETSTG RELEASE STORAGE FOR TRQBLOK @V305731 00615000 ST R0,BSCTMRQ CLEAR ADDRESS OF TIMER REQUEST @V305731 00616000 SR R10,R10 CLEAR IOBLOK ADDRESS REGISTER @V305731 00617000 BAL R7,RGSTART GET ACTIVE RESOURCE & START I/O @V305731 00618000 SPACE 2 00619000 RGABASE DS 0F REMOTE 3270 BASE REGISTER VALUES @V305731 00620000 DC A(DMKRGA,DMKRGA+4096) @V305731 00621000 SPACE 2 00622000 FOUND EQU * PUT INPUT DATA INTO READ BUFFER @V305731 00623000 TM BSCFLAG,BSCENQ IS ENQ IN TEXT FLAG SET ? @V305731 00624000 BO SENDNAK YES, GO SEND NAK RESPONSE @V305731 00625000 CLI 0(R4),STX IS THIS A TEXT MESSAGE ? @V305731 00626000 BNE SENSTAT NO, GO TO STATUS MESSAGE SECTION @V305731 00627000 LA R14,NDXRGFFN PASS ENTRY BRANCH TABLE OFFSET @VA13123 00627500 GOTO DMKRGFEN GO HANDLE THE INPUT DATA @VA13123 00637500 SPACE 1 @VA13123 00647500 SECOND EQU * FIND COMPOUND CHARACTERS @VA13123 00657500 LA R14,NDXRGF02 PASS ENTRY INDEX @VA13123 00667500 GOTO DMKRGFEN GO HANDLE THE INPUT DATA @VA13123 00677500 SPACE 1 @VA13123 00687500 CHECKEY EQU * DETERMINE WHAT KEY WAS DEPRESSED @VM03043 00702000 LA R14,NDXRGFCC PASS ENTRY INDEX @VA13123 00703000 GOTO DMKRGFEN GO CHECK KEY @VA13123 00706000 SPACE 1 @VA13123 00709000 NOTKEY DS 0H @VA13123 00712000 BAL R3,FRETRD RELEASE READ BUFFER @V305731 00715000 TM BSCFLAG,BSCCOPY IS THIS A COPY FUNCTION ? @V305731 00716000 BO RGFTSTRQ YES, RESET BISYNC LINE @V305731 00717000 BAL R7,CPNATMR2 SET RETURN AND TEST FOR STATUS @V305731 00718000 SPACE 1 00719000 DATACNT EQU * SET UP COUNT IN BUFFER @V305731 00764000 LA R14,NDXRGFDC PASS ENTRY INDEX @VA13123 00765000 GOTO DMKRGFEN GO CHECK KEY @VA13123 00765800 SPACE 1 @VA13123 00766600 DMKRGACR DS 0H VALIDATE VECTOR OFFSET @VA13123 00767400 LTR R14,R14 POSITIVE REGISTER? @VA13123 00768200 BNM RGACRTN1 YES - GO COMPLETE VALIDATE @VA13123 00769000 ABEND 3 GO DIE @VA13123 00769800 RGACRTN1 DS 0H @VA13123 00770600 CLM R14,B'1111',VECTBLST VALID OFFSET? @VA13123 00771400 BL VECTBLGC(R14) YES - GO TO INDICATED ROUTINE @VA13123 00772200 B RGA3 GO DIE @VA13123 00773000 VECTBLGC DS 0H VECTOR TABLE USED ON RETURN FROM @VA13123*00773800 DMKRGF @VA13123 00774600 B EDNULL @VA13123 00775400 B RVIRESP @VA13123 00776200 B LOGUSER @VA13123 00777000 B CLRKEY @VA13123 00777800 B PA1KEY @VA13123 00778600 B PA3KEY @VA13123 00779400 B PFKEY @VA13123 00780200 B CNCLKEY @VA13123 00781000 B TESTREQ @VA13123 00781800 B CRTMOR @VA13123 00782600 B POSTINT @VA13123 00783400 B SETHOLD1 @VA13123 00784200 B NOTKEY @VA13123 00785000 B RDRTN @VA13123 00785800 B RDATA @VA13123 00786600 B CFMBK @VA13123 00787400 B VIRTBUFF @VA13123 00788200 B TESTCF @VA13123 00789000 VECTBLST DC AL4(*-VECTBLGC) VECTOR TABLE SIZE FOR COMPARE @VA13123 00789800 SPACE 1 @VA13123 00790600 EDNULL EQU * CLEAR INPUT AREA ON SCREEN @V305731 00793000 BAL R3,FRETRD RELEASE THE READ BUFFER @V305731 00794000 BAL R3,GRFCRD CCW STRING CLEAR INPUT AREA @V305731 00795000 BAL R7,SETCAWA GO START I/O OPERATION TO LINE @V305731 00796000 SPACE 1 00797000 SETHOLD1 DS 0H @VA13123 00798000 BAL R7,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V305731 00807000 BAL R3,CRTHOLD SET UP CCW STRING FOR HOLD STATE @V305731 00808000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 00809000 SPACE 1 00810000 CRTMOR EQU * SET CCW STRING FOR MORE STATE @V305731 00811000 BAL R7,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V305731 00812000 BAL R3,CRTMORE SET UP CCW STRING FOR MORE STATE @V305731 00813000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 00814000 SPACE 1 00815000 POSTINT EQU * POST ATTENTION INTERRUPT @V305731 00816000 BAL R7,RSWVMS SWITCH VMBLOK LOCKING & CHARGING @V4M0193 00817100 TM VMMLEVEL,VMMCPENV CP ENVIRONMENT @V305731 00820000 BO CFMBK YES, PUT IN CONSOLE FUNCTION MODE@V305731 00821000 TM VMRSTAT,VMCFWAIT IS USER SLEEPING ? @V305731 00822000 BO CFMBK YES, PUT IN CONSOLE FUNCTION MODE@V305731 00823000 CALL DMKCFMAT POST ATTENTION INTERRUPT @V305731 00824000 BZ SENDRESP IF ATTENTION INTERRUPT WAS POSTED@V305731 00825000 CFMBK EQU * PLACE USER IN CONSOLE FUNCTION @V305731 00826000 BAL R7,ROUTCFM PLACE IN CONSOLE FUNCTION MODE @V305731 00827000 SENDRESP EQU * SEND RESPONSE TO REMOTE STATION @V305731 00828000 BAL R7,RSWVMU SWITCH VMBLOK CHARGING @V4M0193 00829100 BAL R7,RVIRESP SEND RVI RESPONSE - IGNORE INPUT @V305731 00832000 SPACE 1 00833000 VIRTBUFF EQU * HANDLE VIRTUAL BUFFER @V305731 00834000 TM VMMLEVEL-VMBLOK(R1),VMMLINED VIRTUAL LINE EDIT @V305731 00835000 BO VIRTBFRT YES, EDIT INPUT DATA @VA06260 00836100 BAL R7,FRETCON NO, FRET DUMMY CONTASK @VA06260 00836200 B SAVRDEV BYPASS EDITING INPUT @VA06260 00836300 VIRTBFRT EQU * @VA06260 00836400 MVI CONPARM,EDIT EDIT INPUT DATA @V305731 00837000 BAL R7,ROUTCNS EDIT INPUT DATA & RELEASE CONTASK@V305731 00838000 BAL R7,FRETCON RELEASE CONTASK ... @V305731 00839000 LTR R3,R3 EDIT RESULT IN NULL DATA @V305731 00840000 BNP EDNULL YES, RELEASE READ BUFFER @V305731 00841000 L R7,0(R4) GET FIRST WORD OF DATA ENTERED @V305731 00842000 O R7,=X'00404040' CONVERT TO UPPER CASE & BLANK @V305731 00843000 CL R7,=X'15C3D740' IS IT CR-CP-BLANK ? @V305731 00844000 BNE SAVRDEV NO, BYPASS HANDLING #CP @V305731 00845000 CL R3,F3 IS IT JUST CR-CP ? @V305731 00846000 BNE TRDATA NO, TRANSLATE TO UPPER CASE @V305731 00847000 SR R0,R0 CLEAR REGISTER 0 @V305731 00848000 ST R0,BUFCNT-BUFFER(R4) SET DATA COUNT TO ZERO @V305731 00849000 TRDATA EQU * TRANSLATE CHARS. TO UPPER CASE @V305731 00850000 L R1,=A(DMKTBLUP) GET UPPERCASE TABLE @V305731 00851000 EX R3,TRANSLAT TRANSLATE CONSOLE FUNCTION @V305731 00852000 TESTCF EQU * RE-DISPLAY DATA ON SCREEN @V305731 00853000 L R1,NICUSER GET USER VMBLOK POINTER @V305731 00854000 TM VMOSTAT-VMBLOK(R1),VMCF CONS. FUNCT. EXECUTE @V305731 00855000 BO REJECT YES, CAN'T HANDLE DATA @V305731 00856000 CLC BUFCNT-BUFFER(4,R4),F0 #CP ENTERED ? @V305731 00857000 BE CPDISPLY YES, BYPASS SETTING CONS. FTN. @VM03133 00858000 OI VMRSTAT-VMBLOK(R1),VMCFWAIT USER IN CONS. WAIT @V305731 00859000 OI VMOSTAT-VMBLOK(R1),VMCF SET CONS. FTN. ACTIVE @V305731 00860000 CPDISPLY EQU * DISPLAY INPUT DATA @VM03133 00861000 BAL R7,RSWVMS SWITCH VMBLOK LOCKING & CHARGING @V4M0193 00861100 LR R1,R4 GET DATA ADDRESS @V305731 00862000 LR R0,R3 GET DATA COUNT @V305731 00863000 LA R2,NORET SET UP PARM FOR DATA RE-DISPLAY @V305731 00864000 BAL R7,ROUTQCN RE-DISPLAY INPUT DATA @V305731 00865000 L R1,NICUSER GET USER VMBLOK POINTER @V305731 00866000 BAL R3,GRFCRD SET UP CCWS TO CLEAR INPUT AREA @V305731 00867000 MVI CONLABEL,RTNRFCFM RETURN TO CFM PROCESSING @V305731 00868000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 00869000 SPACE 1 00870000 SAVRDEV EQU * HANDLE VIRTUAL USER INPUT DATA @V305731 00871000 L R1,NICUSER GET USER VMBLOK POINTER @V305731 00872000 LH R7,VMVTERM-VMBLOK(R1) GET VIRTUAL TERM. DISPL. @V305731 00873000 LTR R7,R7 IS VIRTUAL TERMINAL DEFINED @V305731 00874000 BM REJECT YES, REJECT INPUT DATA @V305731 00875000 AL R7,VMDVSTRT-VMBLOK(R1) GET THE VDEVBLOK ADDRESS @V305731 00876000 L R2,VDEVCON-VDEVBLOK(R7) PTR TO VIRTUAL CONTASK @V305731 00877000 USING VCONCTL,R2 ADDRESSABILITY FOR VIRTUAL BUFFER@V305731 00878000 L R1,VCONRBUF GET ADDRESS OF READ DATA BUFFER @V305731 00879000 LTR R1,R1 IS THERE A VIRTUAL BUFFER @V305731 00880000 BNZ REJECT NO, REJECT INPUT DATA @V305731 00881000 MVC VCONRBSZ,=AL2(BUFSIZE) SIZE OF VIRT BUFFER HRV101DK 00882490 STH R3,VCONRCNT SAVE NO. OF BYTES IN READ BUFFER @V305731 00883000 ST R4,VCONRBUF SAVE BUFFER ADDRESS @V305731 00884000 DROP R2 DROP REGISTER FOR VIRTUAL BUFFER @V305731 00885000 XC BSCRPTR,BSCRPTR FORGET ABOUT THE BUFFER @VA08730 00885050 BAL R7,RSWVMS SWITCH VMBLOK LOCKING & CHARGING @V4M0193 00885100 LR R1,R4 GET BUFFER ADDRESS FOR RE-DISPLAY@V305731 00886000 LR R0,R3 GET SIZE OF BUFFER DATA @V305731 00887000 LA R2,NORET+NOTIME SET UP PARM FOR DATA RE-DISPLAY @V305731 00888000 TM NICFLAG,NICDIAG IS THIS A DIAGNOSE WRITE REQUEST@V305731 00889000 BZ BYPHIBIT NO, BYPASS INHIBIT PRINTING @VM03133 00890000 LA R2,INHIBIT(R2) ADD INHIBIT TO SPOOL NOT PRINT @V305731 00891000 BYPHIBIT EQU * SETUP TO RE-DISPLAY INPUT @VM03133 00892000 LR R4,R8 SAVE RDEVBLOK ADDRESS @V305731 00893000 LR R8,R7 GET VIRTUAL DEVICE BLK (VDEVBLOK)@V305731 00894000 BAL R7,ROUTQCN GO RE-DISPLAY INPUT DATA @V305731 00895000 BAL R7,RSWVMS SWITCH VMBLOK LOCKING & CHARGING @V4M0193 00896100 CALL DMKCFMAT POST ATTN INTERRUPT TO VIRT MACH @V305731 00899000 LR R8,R4 RESTORE RDEVBLOK POINTER @V305731 00900000 BAL R3,GRFCRD CCWS TO CLEAR INPUT AREA @V305731 00901000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 00902000 SPACE 1 00903000 RDATA EQU * HERE WHEN SCREEN IN READ STATE @V305731 00904000 LTR R3,R3 ANY DATA READ ? @V305731 00905000 BNP NOEDIT NO, BYPASS EDITING INPUT DATA @V305731 00906000 CLI CONPARM,INHIBIT INHIBIT - NOEDIT CPREAD ? @V305731 00907000 BE NOEDIT1 YES, BYPASS EDITING INPUT DATA @V305731 00908000 TM NICFLAG,NICCARD DATA FROM CARD READER ? @V305731 00909000 BO ZDATA YES, DON'T ACCEPT INPUT DATA @V305731 00910000 MC MNCOERD,MNCLRESP RESPONSE CLASS, END READ @VA12636 00910100 TM CONPARM,EDIT+UCASE ANY EDITING WANTED ? @V305731 00911000 BZ NOEDIT NO, BYPASS EDITING @V305731 00912000 L R1,NICUSER USER VMBLOK ADDRESS @VA09444 00912100 TM VMOSTAT-VMBLOK(R1),VMCF IN CP READ?? @VA09444 00912200 BO RDATA2 YES, EDIT THIS LINE @VA09444 00912300 TM VMMLEVEL-VMBLOK(R1),VMMCPENV TERM MODE CP??? @VA09444 00912400 BZ RDATA2 NO, MUST BE VMREAD @VA09444 00912500 TM NICTMCD,NICAPL+NICTEXT TRANS INDICATED? @V387398 00913100 BNZ NOEDIT YES, BYPASS EDIT FUNCTION @V387398 00913200 RDATA2 DS 0H INSURE EDIT OF CP INPUT @VA09444 00913300 L R2,CONADDR GET CALLERS BUFFER ADDRESS @V305731 00915000 LH R0,CONCNT GET CALLERS BUFFER COUNT @V305731 00916000 ST R4,CONADDR ADDRESS OF BUFFER FOR EDIT @V305731 00917000 STH R3,CONCNT SAVE BUFFER COUNT @V305731 00918000 BAL R7,ROUTCNS GO EDIT THE INPUT DATA @V305731 00919000 ST R2,CONADDR RESTORE CALLERS BUFFER ADDRESS @V305731 00920000 STH R0,CONCNT RESTORE CALLERS BUFFER COUNT @V305731 00921000 SR R2,R2 SET ZERO RETURN CODE @V305731 00922000 LTR R3,R3 ANY DATA AFTER EDITING ? @V305731 00923000 BNP RDATA3 NO, RELEASE READ BUFFER @VA09444 00924100 L R7,0(R4) GET FIRST WORD OF DATA ENTERED @VA09444 00924150 O R7,=X'00404040' CONVERT TO UPPER CASE @VA09444 00924200 CL R7,=X'15C3D740' IS THIS CR CP???? (#CP) @VA09444 00924250 BNE RDRTN PASS DATA TO CALLER @VA09444 00924300 CL R3,F3 IS IT JUST CR CP?? @VA09444 00924350 BNE TRDATA1 NO TRANSLATE TO UPPER CASE @VA09444 00924400 SR R0,R0 SET DATA COUNT TO ZERO @VA09444 00924450 ST R0,BUFCNT-BUFFER(R4) *** @VA09444 00924500 TRDATA1 DS 0H TRANSLATE CHARACTERS TO UP CASE @VA09444 00924550 L R1,=A(DMKTBLUP) UPPERCASE XLATE TABLE @VA09444 00924600 EX R3,TRANSLAT TRANSLATE CONSOLE FUNCTION @VA09444 00924650 B RDRTN MOVE DATA TO USER BUFFER @VA09444 00924700 RDATA3 DS 0H CONTINUE AS BEFORE @VA09444 00924750 BAL R3,FRETRD RELEASE READ BUFFER @V305731 00925000 BAL R3,GRFCRD SET UP CCWS TO CLEAR INPUT AREA @V305731 00926000 MVI CONLABEL,RTNSRTRD SET RETURN TO READ SECTION @V305731 00927000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 00928000 SPACE 1 00929000 NOEDIT1 EQU * @V305731 00930000 TM NICFLAG,NICCARD IS DATA FROM CARD READER @V305731 00931000 BO NOEDIT YES, BYPASS CLEARING COUNT @V305731 00932000 ZDATA EQU * CLEAR INPUT DATA COUNT @V305731 00933000 SR R3,R3 CLEAR COUNT REGISTER @V305731 00934000 NOEDIT EQU * @V305731 00935000 SR R2,R2 SET RETURN CODE TO ZERO @V305731 00936000 RDRTN EQU * MOVE DATA INTO CALLERS BUFFER @V305731 00937000 LH R1,CONCNT GET CALLERS BUFFER COUNT @V305731 00938000 CLR R1,R3 IS IT LESS THAN INPUT COUNT @V305731 00939000 BNL BYPCOUNT NO, BYPASS CHANGING COUNT @VM03133 00940000 LR R3,R1 SET DATA COUNT TO MAXIMUN @V305731 00941000 BYPCOUNT EQU * SAVE ACTUAL DATA COUNT @VM03133 00942000 STH R3,CONCNT SAVE DATA COUNT @V305731 00943000 LTR R3,R3 ANY DATA RETURNED ? @V305731 00946000 BNP NODATA NO, BYPASS MOVING DATA @V305731 00947000 L R1,CONADDR GET CALLERS BUFFER ADDRESS @V305731 00948000 BCTR R3,R0 SUBTRACT ONE - EX INSTRUCTION @V305731 00949000 EX R3,MOVEDATA MOVE INPUT DATA TO CALLERS BUFFER@V305731 00950000 NODATA EQU * SET UP TO RE-DISPLAY INPUT DATA @V305731 00951000 BAL R3,SETRETN SET RETURN CODE @V305731 00952000 BAL R7,RSWVMS SWITCH VMBLOK LOCKING & CHARGING @V4M0193 00952100 LA R0,4 SIZE FOR BLANKS @V305731 00953000 LA R1,BLANKS WRITE BLANKS FOR NULL/PROTECTED @V305731 00954000 TM CONPARM,INHIBIT NON-DISPLAY INPUT DATA ? @V305731 00955000 BO BLNKDSP YES, GO RE-DISPLAY BLANKS @V305731 00956000 LH R3,CONCNT RESTORE BYTE COUNT @VA07438 00958100 LTR R3,R3 IS BYTE COUNT ZERO ? @V305731 00959000 BZ BLNKDSP YES, GO WRITE BLANKS @V305731 00960000 LR R0,R3 GET BYTE COUNT @V305731 00961000 LR R1,R4 GET BUFFER ADDRESS @V305731 00962000 BLNKDSP EQU * @V305731 00963000 LA R2,NORET SET UP PARM @V305731 00964000 TM CONPARM,VMGENIO VIRTUAL MACHINE DATA @V305731 00965000 BZ BYPPARM NO, BYPASS PARAMETERS @VM03133 00966000 LA R2,NORET+NOTIME ... @V305731 00967000 BYPPARM EQU * CHECK FOR DIAGNOSE WRITE (X'58') @VM03133 00968000 TM NICFLAG,NICDIAG SCREEN WRITTEN WITH DIAGNOSE @V305731 00969000 BZ BYPINH NO, BYPASS INHIBITING PRINT @VM03133 00970000 LA R2,INHIBIT(R2) ADD INHIBIT TO SPOOL NOT PRINT @V305731 00971000 ICM R2,B'0100',NOMC BYPASS MONITOR CALL IN QCN @VA04810 00971500 BYPINH EQU * RE-DISPLAY INPUT AREA @VM03133 00972000 BAL R7,ROUTQCN GO RE-DISPLAY INPUT DATA @V305731 00973000 OI CONPARM,INHIBIT MAKE SURE NOT SPOOLED TWICE @VA05374 00973500 OI CONSTAT,CONACTV REMEMBER TO RETURN THE READ @V305731 00975000 BAL R3,FRETRD RELEASE READ BUFFER @V305731 00976000 BAL R3,GRFCRD SET UP CCWS TO CLEAR INPUT AREA @V305731 00977000 TM NICFLAG,NICDIAG IS THE DIAGNOSE INTERFACE ACTIVE@V305731 00978000 BO DIAG IF SO, BRANCH @VA11787 00979350 B BYPWRITS SET UP SCREEN STATUS @VA11787 00979550 DIAG MVI CONLABEL,RTNCPNAT RET. TO RITE STAT SECTION @VA11787 00979750 BYPWRITS EQU * SETUP SCREEN STATUS @VM03133 00981000 MVI NICSTAT,NICRUNN+NICNTRL SET RUNNING & CONTROL @V305731 00982000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 00983000 SPACE 1 00984000 CNCLKEY EQU * HANDLE CANCEL KEY @V305731 00985000 TM NICTMCD,NICAPL APL ON ? @V305798 00986000 BZ CLRKEY NO, CONT @V305798 00987000 L R1,NICUSER GET USER VMBLOK POINTER @VM03094 00988000 TM VMQSTAT-VMBLOK(R1),VMPA2APL IS PA2 FLAG ENABLE @VM03116 00989000 BZ CLRKEY NO, CONTINUE NORMAL PROCESSING @VM03094 00990000 TM NICSTAT,NICHOLD+NICMORE IS THIS HOLD/MORE STATUS@VM03094 00991000 BNZ XINCONT YES, REFLECT EXTERNAL INTERRUPT @VM03094 00992000 TM NICSTAT,NICREAD IS READ STATUS INDICATED @VM03094 00993000 BZ CLRKEY NO, DON'T REFLECT INTERRUPT @VM03094 00994000 L R3,NICQPNT GET READ CONTASK FROM QUEUE @VM03094 00995000 TM CONPARM-CONTASK(R3),VMGENIO IS THIS VM READ @VM03094 00996000 BZ CLRKEY NO, BYPASS REFLECTING INTERRUPT @VM03094 00997000 XINCONT EQU * REFLECT EXTERNAL INTRRUPT @VM03094 00998000 SLR R3,R3 CLEAR THE INDEX @V305798 00999000 STM R5,R6,BALRSAVE SAVE BASE REGS @VA07391 01000100 L R4,=X'00400040' EXTERNAL INTERRUPT KEY @V305798 01001000 LA R2,VMPXINT-VMBLOK(R1) START OF EXT INT BLOCKS @V305798 01002000 USING XINTBLOK,R2 @V305798 01003000 XINTLOOP LR R6,R2 @V305798 01004000 L R2,XINTNEXT-XINTBLOK(,R6) NEXT ? @V305798 01005000 LTR R2,R2 TEST IT @V305798 01006000 BZ XINTADD NOPE, ADD END OF CHAIN @V305798 01007000 C R3,XINTSORT CHECK FOR COLLATING SEQ @V305798 01008000 BH XINTLOOP KEEP LOOKING... @V305798 01009000 BL XINTADD THIS EES THE PLACE @V305798 01010000 O R4,XINTCODE MUST BE INDICATED TOGETHER @V305798 01011000 ST R4,XINTCODE OR ONE AT A TIME @V305798 01012000 B XINTEXIT GET OUT @V305798 01013000 XINTADD EQU * @V305798 01014000 LA R0,XINTSIZE NO. OF DOUBLE WORDS @V305798 01015000 CALL DMKFREE @V305798 01016000 ST R1,XINTNEXT-XINTBLOK(,R6) @V305798 01017000 SLR R5,R5 PARM IS MEANINGLESS HERE @V305798 01018000 STM R2,R5,XINTNEXT-XINTBLOK(R1) BUILD NEW INTRPT BLK@V305798 01019000 XINTEXIT EQU * RESTORE REGISTERS @V305798 01020000 LM R5,R6,BALRSAVE RESTORE BASE REGS @VA07391 01021100 DROP R2 DROP BASE REGISTER @V305798 01022000 SPACE 2 01023000 CLRKEY EQU * @V305798 01024000 BAL R3,FRETRD RELEASE READ BUFFER @V305731 01025000 CNCLDE EQU * CLEAR SCREEN ON DEVICE END STATUS@V305731 01026000 BAL R7,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V305731 01027000 TM NICSTAT,NICRUNN+NICMORE IS RUNNING OR MORE ON ? @V305731 01028000 BZ CNCLREAD NO, CHECK READ STATE @V305731 01029000 GRFCLR EQU * CLEAR SCREEN SECTION @V305731 01030000 BAL R3,GRFCLRT SET UP CLEAR SCREEN CCWS @V305731 01031000 MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 01032000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01033000 SPACE 1 01034000 CNCLREAD EQU * @V305731 01035000 TM NICSTAT,NICREAD IS THIS A READ STATE @V305731 01036000 BZ CNCLHOLD NO, CANCEL FROM HOLD STATE @V305731 01037000 BAL R3,GRFCLRT SET UP CLEAR SCREEN CCWS @V305731 01038000 MVI CONLABEL,RTNSRTRD SET RETURN TO READ SECTION @V305731 01039000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01040000 SPACE 1 01041000 CNCLHOLD EQU * PROCESS HOLD STATE @V305731 01042000 LA R2,4 SINGLE ATTENTION RETURN CODE @V305731 01043000 L R1,NICUSER GET USER VMBLOK POINTER @V305731 01044000 TM VMMLEVEL-VMBLOK(R1),VMMCPENV CP ENVIRONMENT @V305731 01045000 BZ GRFCLR NO, GO CLEAR SCREEN @V305731 01046000 * CNCL(PA2) KEY WITH TERM MODE CP AND IN HOLDING STATUS 01046310 * CLEARS THE SCREEN AND GIVES RETURN CODE 8 01046320 SPACE 1 01046400 CLEARD EQU * CLEAR THE REMOTE DISPLAY SCREEN @V305731 01047000 LA R2,8 RETURN CODE FOR DOUBLE ATTENTION @VA04772 01048300 TM CONPARM,VMGENIO WAS OUTPUT FROM VIRTUAL SIO @VA04772 01048600 BO PA1CLR YES - DON'T GIVE DOUBLE ATTEN. @VA04772 01048900 * RETURN 01049200 BAL R3,SETRETN SET RETURN CODE FOR CALLER @VA04772 01049500 BAL R3,GRFCLRT CCW'S TO CLEAR THE SCREEN @VA04772 01049800 MVI CONLABEL,RTNLGTST CONTASK RETURN ADDRESS @VA04772 01050100 B SETCAWA NOW CLEAR THE SCREEN @VA04772 01050400 SPACE 1 01050700 PA1CLR BAL R3,GRFCLRT CCW'S TO CLEAR THE SCREEN @VA04772 01051000 MVI CONLABEL,RTNLGTST CONTASK RETURN ADDRESS @VA04772 01051300 OI BSCFLAG1,BSCPA1 FLAG TO PUT USER IN BREAK MODE @VA04772 01051600 B SETCAWA ISSUE SIO TO CLEAR THE SCREEN @VA04772 01051900 SPACE 1 01053000 PA1KEY EQU * HANDLE PA1 KEY @V305731 01054000 BAL R3,FRETRD RELEASE READ BUFFER @V305731 01055000 TM NICSTAT,NICRUNN IS RUNNING STATE INDICATED @V305731 01056000 BO CFMBK YES, PLACE IN CONSOLE FUNCTION @V305731 01057000 TM NICSTAT,NICMORE+NICHOLD IS MORE OR HOLD ON ? @V305731 01058000 BZ PA1READ NO, MUST BE READ STATE @V305731 01059000 BAL R7,RSTTMR RESET ACTIVE TIMER REQUEST @V305731 01060000 BAL R7,CLEARD GO CLEAR SCREEN @V305731 01061000 SPACE 1 01062000 PA1READ EQU * HANDLE READ STATE FOR PA1 KEY @V305731 01063000 LA R2,8 SET DOUBLE ATTENTION RETURN CODE @V305731 01064000 SR R3,R3 ZERO DATA COUNT @V305731 01065000 B RDRTN GO RE-DISPLAY BLANKS @V305731 01066000 SPACE 1 01067000 PA3KEY EQU * HANDLE THE FUNCTION KEYS @V305731 01068000 LA R1,PF6NDX SET TABLE INDEX @V305731 01069000 PFKEY EQU * PROCESS ALL FUNCTION KEYS @V305731 01070000 S R1,=A(PFNDX) ADJUST TO KEY INDEX NUMBER @V305731 01071000 SLL R1,2 TIMES 4 FOR INDEX @V305731 01072000 L R4,NICUSER GET USER VMBLOK POINTER @V305731 01073000 L R2,VMPFUNC-VMBLOK(,R4) GET USER FUNCTION TABLE @V305731 01074000 LTR R2,R2 ANY DEFINED ? @V305731 01075000 BZ PFREJ NO, REJECT FUNCTION @V305731 01076000 LA R2,0(R1,R2) INDEX FOR FUNCTION KEY @V305731 01077000 L R4,4(R2) GET PF DATA ADDRESS @V305731 01078000 LTR R4,R4 ANY DATA DEFINED ? @V305731 01079000 BZ PFREJ NO, REJECT FUNCTION KEY @V305731 01080000 CLC 0(4,R4),=C'TAB ' IS IT THE TAB FUNCTION ? @V305731 01081000 BE PFTAB YES, DO IT @V305731 01082000 LH R1,2(R2) GET PF DATA SIZE @V305731 01083000 CLC 0(4,R4),=C'COPY' IS IT THE COPY FUNCTION ? @V305731 01084000 BNE PFSIZ NO, MOVE DATA TO BUFFER @V305731 01085000 CLI 4(R4),X'40' IS THIS A BLANK CHARACTER @V305731 01086000 BE PFLENG YES, CHECK LENGTH OF MESSAGE @VM03133 01087000 C R1,F4 IS THIS JUST COPY ? @V305731 01088000 BNE PFSIZ NO, RE-DISPLAY DATA @V305731 01089000 PFLENG EQU * CHECK LENGTH OF MESSAGE @VM03133 01090000 C R1,F8 IS PF DATA LENGTH GREATER THAN 8 @V305731 01091000 BH PFSIZ YES, GO RE-DISPLAY PF DATA @V305731 01092000 BAL R7,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V305731 01093000 LH R1,2(R2) GET PF DATA SIZE @V305731 01094000 C R1,F5 IS JUST COPY INDICATED ? @V305731 01095000 BH RESDATA NO, GET RESOURCE ID. FROM PF DATA@V305731 01096000 LR R4,R9 SAVE USER NICBLOK POINTER @V305731 01097000 L R9,RDEVNICL GET START OF NICBLOK LIST @V305731 01098000 LA R2,NICSIZE*8 GET LENGTH OF NICBLOK @V305731 01099000 LH R3,RDEVMAX GET THE NUMBER OF NICBLOKS @V305731 01100000 MH R3,=AL2(NICSIZE*8) GET THE ENDING @V305731 01101000 ALR R3,R9 NICBLOK ADDRESS @V305731 01102000 TESTPRT EQU * DETEMINE IF A PRINTER IS OFFLINE @V305731 01103000 TM NICTYPE,NICRSPL IS THIS A REMOTE PRINTER ? @V305731 01104000 BO RESOURCE YES, COPY FROM DISPLAY TO PRINTER@V305731 01105000 BXLE R9,R2,TESTPRT GET NEXT NICBLOK ADDRESS @V305731 01106000 BAL R7,REJREQ GO RESTORE USER NICBLOK POINTER @V305731 01107000 SPACE 1 01108000 RESDATA EQU * DETERMINE IF RESOURCE IS VALID @V305731 01109000 LA R1,5(R4) GET RESOURCE ID. FROM PF DATA @V305731 01110000 LA R0,3 GET LENGTH OF DATA @V305731 01111000 CALL DMKCVTHB CONVERT RESOURCE ID. TO BINARY @V305731 01112000 BNZ REJECT INVALID RESOURCE ID. @VM03094 01113000 N R1,F4095 CLEAR THE LINE CODE @V305731 01114000 LR R4,R9 SAVE USER NICBLOK POINTER @V305731 01115000 L R9,RDEVNICL GET THE START OF NICBLOK LIST @V305731 01116000 LA R2,NICSIZE*8 GET LENGTH OF NICBLOK @V305731 01117000 LH R3,RDEVMAX GET NUMBER OF NICBLOKS @V305731 01118000 MH R3,=AL2(NICSIZE*8) GET THE ENDING @V305731 01119000 ALR R3,R9 NICBLOK ADDRESS @V305731 01120000 TESTPRT1 EQU * GET NICBLOK FOR REMOTE PRINTER @V305731 01121000 CH R1,NICNAME IS THIS THE PRINTER NICBLOK @V305731 01122000 BE PRTTEST YES, SEE IF THIS IS A PRINTER @VM03133 01123000 BXLE R9,R2,TESTPRT1 GET NEXT NICBLOK ADDRESS @V305731 01124000 B REJREQ GO RESTORE USER NICBLOK POINTER @V305731 01125000 PRTTEST EQU * CHECK FOR REMOTE PRINTER @VM03133 01126000 TM NICTYPE,NICRSPL IS THIS A REMOTE PRINTER ? @V305731 01127000 BO RESOURCE YES, GO COPY SCREEN TO PRINTER @V305731 01128000 REJREQ EQU * @V305731 01129000 LR R9,R4 GET USER NICBLOK POINTER @V305731 01130000 REJECT EQU * CCW STRING FOR NOT ACCEPTED STATE@V305731 01131000 BAL R3,FRETRD RELEASE STORAGE FOR READ BUFFER @V305731 01132000 BAL R3,NOTACPT CCW STRING FOR NOT ACCEPTED STATE@V305731 01133000 OI NICSTAT,NICCPNA+NICNTRL SET NOT ACPTED & CONTROL@V305731 01134000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01135000 SPACE 1 01136000 RESOURCE EQU * SET UP TO COPY SCREEN TO PRINTER @V305731 01137000 BAL R3,FRETRD RELEASE READ BUFFER @V305731 01138000 TM NICSTAT,NICDISA IS THIS PRINTER OFFLINE ? @V305731 01139000 BO REJREQ YES, GO REJECT REQUEST @V305731 01140000 TM NICFLAG,NICENAB IS THIS PRINTER ENABLE ? @V305731 01141000 BZ REJREQ NO, GO REJECT REQUEST @V305731 01142000 ST R9,BSCUCOPY SAVE PRINTER NICBLOK ADDRESS @V305731 01143000 LR R9,R4 GET USER NICBLOK POINTER @V305731 01144000 OI BSCFLAG,BSCOPIED SET INITIATE COPY FUNCTION FLAG@V305731 01145000 BAL R7,RVIRESP SEND RVI RESPONSE TO STATION @V305731 01146000 SPACE 1 01147000 PFSIZ EQU * MOVE DATA FROM TABLE INTO BUFFER @V305731 01148000 USING BUFFER,R3 ADDRESSABILITY FOR READ BUFFER @VA13123 01148500 XC BUFFER(BUFINLTH+6),BUFFER CLEAR BUFFER AREA @V305731 01149000 BCTR R1,R0 SUBTRACT ONE - EX INSTRUCTION @V305731 01150000 EX R1,MVCRT MOVE FUNCTION DATA TO BUFFER @V305731 01151000 LR R4,R3 MOVE BUFFER ADDRESS IN REGISTER 4@V305731 01152000 LA R1,1(R1) UPDATE DATA COUNT @V305731 01153000 LR R3,R1 SAVE DATA COUNT @V305731 01154000 TM 0(R2),X'80' IMMED EXECUTION ? @V305731 01155000 BO DATACNT YES, PROCESS DATA NOW @V305731 01156000 LR R2,R4 GET BUFFER DATA ADDRESS @V305731 01157000 L R7,=A(DMKTBLGR) GET TRANSLATE TABLE @V305731 01158000 L R1,NICUSER GET USER VMBLOK POINTER @V305731 01159000 IC R0,VMTLEND-VMBLOK(R1) GET LOGICAL LINE END @V305731 01160000 STC R0,21(,R7) SAVE LCR CHAR IN TRANSLATE DATA @V305731 01161000 BCTR R3,R0 SUBTRACT ONE - EX INSTRUCTION @V305731 01162000 EX R3,TROPUT TRANSLATE OUTPUT DATA @V305731 01163000 MVI 21(R7),X'15' STORE LCR CHAR IN TRANSLATE DATA @V305731 01164000 LA R1,1(R3,R4) POINT PAST LAST BYTE @V305731 01165000 MVI 0(R1),X'13' PUT CURSOR AT END @V305731 01166000 MVI 1(R1),ETX PUT ENDING BISYNC CHARACTER @V305731 01167000 LA R3,3(R3) COUNT WITH CURSOR & ETX @V305731 01168000 BAL R7,BLD77IDS DISPLAY IN INPUT AREA @V305731 01169000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01170000 SPACE 1 01171000 PFREJ EQU * SEND REJECT MESSAGE @V305731 01172000 XC BUFFER(BUFINLTH+6),BUFFER CLEAR READ BUFFER @V305731 01173000 MVC BUFFER(RJL),PFRJM SET UP REJECT MESSAGE @V305731 01174000 SRL R1,3 PF NUMBER BINARY @V305731 01175000 LA R1,1(R1) ... @V305731 01176000 CALL DMKCVTBD CONVERT TO DECIMAL @V305731 01177000 STH R1,BUFFER+4 SET PF NUMBER IN MESSAGE @V305731 01178000 LR R4,R3 GET BUFFER ADDRESS @V305731 01179000 LA R3,RJL SIZE OF MESSAGE FOR WRITE @V305731 01180000 BAL R7,BLD77IDS DISPLAY IN INPUT AREA @V305731 01181000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01182000 SPACE 1 01183000 PFTAB EQU * HANDLE THE TAB FUNCTION @V305731 01184000 LA R14,TAB01 TAB TABLE START @V305731 01185000 LA R0,136 TAB TABLE SIZE @V305731 01186000 CLRNXT EQU * CLEAR TAB INDICATOR @V305731 01187000 NI 0(R14),X'7F' TAB BIT OFF @V305731 01188000 LA R14,2(R14) NEXT ENTRY @V305731 01189000 BCT R0,CLRNXT LOOP FOR ALL ENTRIES @V305731 01190000 LA R4,3(R4) POSITION TO TAB DATA @V305731 01191000 LH R2,2(R2) GET TAB DATA COUNT @V305731 01192000 S R2,F3 ADJUST TO FIRST ENTRY @V305731 01193000 FNDSTRT EQU * FIND START OF DATA FIELD @V305731 01194000 CLI 0(R4),X'40' START OF FIELD ?? @V305731 01195000 BNE FNDEND YES, GO FIND END OF DATA @VM03133 01196000 LA R4,1(R4) BUMP TO NEXT POSITION @V305731 01197000 BCT R2,FNDSTRT KEEP LOOKING FOR FIELD START @V305731 01198000 B TABEND WE DIDNT FIND ONE @V305731 01199000 FNDEND EQU * SETUP COUNTER FOR SCAN @VM03133 01200000 LR R1,R4 REMEMBER START OF FIELD @V305731 01201000 SR R0,R0 CLEAR COUNTER @V305731 01202000 FNDTAB EQU * FIND END OF DATA FIELD @V305731 01203000 A R0,F1 COUNT ONE @V305731 01204000 LA R4,1(R4) BUMP TO NEXT POSITION @V305731 01205000 CLI 0(R4),X'40' IS THIS THE END OF THE FIELD ? @V305731 01206000 BE BYPTABD YES, GOOD @VM03133 01207000 BCT R2,FNDTAB KEEP LOOKING FOR THE END @V305731 01208000 BYPTABD EQU * CONVERT TO A BINARY NUMBER @VM03133 01209000 CALL DMKCVTDB CONVERT TO BINARY NUMBER @V305731 01210000 BNZ NXTAB ERROR, IGNORE IT @V305731 01211000 CH R1,=H'136' IS IT TOO BIG ? @V305731 01212000 BH NXTAB YES, IGNORE ALSO @V305731 01213000 SLL R1,1 TIMES TWO FOR INDEX @V305731 01214000 LA R14,TABTBL(R1) POINT AT TAB TABLE ENTRY @V305731 01215000 OI 0(R14),X'80' TURN ON TAB BIT @V305731 01216000 NXTAB EQU * FIND END OF DATA FIELD @V305731 01217000 LTR R2,R2 TEST COUNT REMAINING @V305731 01218000 BNP TABEND NONE, END OF TABS @V305731 01219000 BCT R2,FNDSTRT LESS ONE AND FIND NEXT TAB @V305731 01220000 SPACE 01221000 TABEND EQU * GET CURSOR BUFFER ADDRESS @V305731 01222000 LA R14,TAB01 TAB POSITION TABLE @V305731 01223000 LA R0,136 MAX COUNT FOR SCAN @V305731 01224000 SR R1,R1 CLEAR COUNTER @V305731 01225000 FNDCUR EQU * SET UP CURSOR ADDRESS @V305731 01226000 LH R15,0(R14) GET CURSOR POSN ADDRESS @V305731 01227000 N R15,=XL4'00007FFF' AND OUT TAB BIT @V305731 01228000 CLM R15,3,BUFFER+1 COMPARE TO CURSOR POSN @V305731 01229000 BE CURTAB FOUND IT @V305731 01230000 LA R1,1(R1) COUNT PLUS ONE @V305731 01231000 LA R14,2(R14) NEXT TABLE ENTRY @V305731 01232000 BCT R0,FNDCUR KEEP LOOKING TILL END @V305731 01233000 SR R1,R1 DIDNT FIND IT, FORCE TO BEGINNING@V305731 01234000 LA R14,TAB01 FIRST ENTRY IN TABLE @V305731 01235000 OI TAB01,X'80' TAB AT POSN 1 @V305731 01236000 CURTAB EQU * @V305731 01237000 MVC BUFFER(3),SYNCP HEADER FOR BISYNC PROTOCOL @V305731 01238000 MVI BUFFER+3,WCC6 SET DATA TO WRITE IN BUFFER @V305731 01239000 MVI BUFFER+4,SBA SET BUFFER ADDRESS @V305731 01240000 LH R15,0(R14) GET TAB POSITION @V305731 01241000 N R15,=XL4'00007FFF' AND OUT TAB BIT @V305731 01242000 STCM R15,3,BUFFER+5 SET TAB POSITION @V305731 01243000 MVI BUFFER+7,IC IC ORDER IF NOT NULL @V305731 01244000 LA R2,BUFFER+9(R1) POINT AT CURSOR POSITION @V305731 01245000 CLI 0(R2),X'00' IS IT NULL ?? @V305731 01246000 BNE MOVCUR NO, JUST MOVE THE CURSOR @V305731 01247000 TM NICTMCD,NICTABF IS THIS SECOND SCAN OF INPUT @V305731 01248000 BO MOVCUR YES, BYPASS INSERTING TAB CHAR @V305731 01249000 MVI BUFFER+7,X'6A' INSERT A LOGICAL TAB CHAR @V305731 01250000 MOVCUR EQU * GET TAB POSITION FROM TABLE @V305731 01251000 LA R14,2(R14) NEXT TABLE POSITION @V305731 01252000 TM 0(R14),X'80' IS IT A TAB POSITION ?? @V305731 01253000 BO SETCUR YES, SET CURSOR ADDRESS @V305731 01254000 BCT R0,MOVCUR KEEP LOOKING FOR NEXT TAB @V305731 01255000 OI NICTMCD,NICTABF SET SECOND SCAN FLAG @V305731 01256000 SETCUR EQU * @V305731 01257000 MVI BUFFER+8,SBA TAB POSITIONING @V305731 01258000 LH R15,0(R14) GET BUFFER ADDRESS @V305731 01259000 N R15,=XL4'00007FFF' AND OUT TAB BIT @V305731 01260000 STCM R15,3,BUFFER+9 SET TAB ADDRESS @V305731 01261000 MVI BUFFER+11,IC IC ORDER @V305731 01262000 MVI BUFFER+12,ETX SET ENDING CHARACTER FOR BISYNC @V305731 01263000 LR R4,R3 BUFFER ADDRESS @V305731 01264000 BAL R3,BLD77TAB CCWS TO WRITE NEW CURSOR POSITION@V305731 01265000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01266000 SPACE 2 01267000 TP08 EQU * UNIT EXECPTION FROM TIMEOUT @V305731 01268000 ICM R1,7,IOBMISC2+1 GET ADDR. OF RESTART CCW STRING @V305731 01269000 BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 01270000 SPACE 2 01271000 TP09 EQU * ALL RESET COMMANDS @V305731 01272000 CLI BSCFLAG,X'00' ARE THERE ANY FLAGS ON ? @V305731 01273000 BE NOCTL NO, GET NEXT CONTASK @V305731 01274000 TM BSCFLAG,BSCREGEN IS REGENERATION FLAG ON ? @V305731 01275000 BO REGENER YES, GO TO ERROR HANDLER @V305731 01276000 TM BSCFLAG,BSCTSTRQ IS THIS A TEST REQUEST FLAG @V305731 01277000 BO NOCTLNT YES, GO GET START I/O TO LINE @V305731 01278000 TM BSCFLAG,BSCCOPY IS THIS A COPY FUNCTION ? @V305731 01279000 BO RGFCOPY YES, GO HANDLE COPY FUNCTION @V305731 01280000 ABEND 2 SHOULD NOT OCCUR @V305731 01281000 SPACE 1 01282000 NOCTL EQU * GET NEXT CONTASK @V305731 01283000 NI NICSTAT,X'FF'-NICNTRL CLEAR CONTROL INDICATOR @V305731 01284000 L R6,NICQPNT GET NEXT CONTASK @V305731 01285000 LTR R6,R6 IS THERE A CONTASK ? @V305731 01286000 BZ NOCTLNT NO, GET RESOURCE & START I/O @V305731 01287000 TM CONSTAT,CONACTV HAS THIS CONTASK BEEN PROCESSED @V305731 01288000 BZ NOCTLNT NO, GET ACTIVE RESOURCE @V305731 01289000 BAL R3,CONRET RETURN CONTASK @V305731 01290000 BAL R7,NOCTL GET NEXT CONTASK @V305731 01291000 SPACE 1 01292000 NOCTLNT EQU * GET ACTIVE RESOURCE & START I/O @V305731 01293000 MVI BSCFLAG,X'00' CLEAR FLAG FIELD @V305731 01294000 XC BSCCNT(2),BSCCNT CLEAR RETRY COUNT FIELD @V305731 01295000 NI RDEVSTAT,X'FF'-RDEVWAII CLEAR BUSY INDICATOR @V305731 01296000 TM RDEVFTR,FTRDIAL IS DIAL FEATURE INDICATED? @V346931 01296100 BO RGSTART YES, GO SCAN FOR ACTIVE USER @V346931 01296200 SLR R9,R9 CLEAR NICBLOK REGISTER @V305731 01297000 CL R9,BSCTMRQ POLL DELAY EXPIRED ? @V305731 01298000 BNE RGSTART NO, FIND ANOTHER USER (MAYBE) @V305731 01299000 BAL R7,FRETIOB RELEASE IOBLOK @V305731 01300000 TM BSCFLAG,BSCSCAN IS THIS SECOND SCAN OF NICBLOK @V305731 01301000 BZ POLLIOB NO, GO DO POLL OPERATION @V305731 01302000 NI BSCFLAG,X'FF'-BSCSCAN CLEAR SECOND SCAN FLAG @V305731 01303000 GODSPCH EQU * EXIT TO DISPATCHER @V305731 01304000 GOTO DMKDSPCH @V305731 01305000 POLLIOB EQU * @V305731 01306000 BAL R3,BLDIOB GO GET STORAGE FOR IOBLOK @V305731 01307000 BAL R3,GPOLLCW SET UP GENERAL POLLING CCWS @V305731 01308000 BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 01309000 SPACE 2 01310000 REGENER EQU * FORCE USER OFF @V305731 01311000 NI BSCFLAG,X'FF'-BSCREGEN CLEAR REGENERATION FLAG @V305731 01312000 XC BSCCNT(2),BSCCNT CLEAR RETRY COUNT FIELD @V305731 01313000 ICM R1,3,BSCSENSE GET REMOTE STATION SENSE BYTES @V305731 01314000 BNZ CKSNS YES, GO CHECK SENSE @V346931 01315000 TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 01315100 BZ FATALER NO, GO HANDLE FATAL LINE ERROR @V346931 01315200 OI IOBSTAT,IOBFATAL SET DISABLE-REENABLE OF LINE @V346931 01315300 B FATALER GO HANDLE FATAL LINE ERROR @V346931 01315400 CKSNS EQU * ENTRY IF SENSE WAS SUCCESSFUL @V346931 01315500 TM BSCSENSE+1,INVREQ IS INTERVENTION REQUIRED ? @V305731 01316000 BO FORUSOF YES, BYPASS ERROR RECORDING @V305731 01317000 LA R0,2 GET STORAGE FOR ERROR MESSAGE @V305731 01318000 CALL DMKFREE GET STORAGE FOR MESSAGE @V305731 01319000 LR R3,R1 SAVE ADDRESS OF STORAGE @V305731 01320000 XC 0(16,R3),0(R3) CLEAR MESSAGE AREA @V305731 01321000 LH R1,NICNAME GET RESOURCE ID @V305731 01322000 CALL DMKCVTBH CONVERT TO HEX @V305731 01323000 STCM R1,7,0(R3) SAVE RESOURCE ADDRESS IN MESSAGE @V305731 01324000 SR R1,R1 CLEAR REGISTER 1 @V305731 01325000 ICM R1,3,BSCSENSE GET SENSE BYTES @V305731 01326000 CALL DMKCVTBH CONVERT TO HEX @V305731 01327000 ST R1,4(R3) SAVE SENSE BYTES IN MESSAGE @V305731 01328000 LH R1,IOBRADD GET LINE ADDRESS FROM IOBLOK @V305731 01329000 CALL DMKCVTBH CONVERT TO HEX @V305731 01330000 ST R1,9(R3) SAVE LINE ADDRESS IN MESSAGE @V305731 01331000 LR R1,R3 GET ADDRESS OF MESSAGE STORAGE @V305731 01332000 ICM R3,8,F2+3 SAVE SIZE OF MESSAGE STORAGE @V305731 01333000 LA R2,705(0) GET MESSAGE NUMBER @V305731 01334000 O R2,MSGPARM1 SET UP PARM FIELD FOR MSG WRITER @V305731 01335000 LA R0,14 GET LENGTH OF MESSAGE @V305731 01336000 ICM R0,14,MSGHEAD GET HEADER FOR MESSAGE @V305731 01337000 CALL DMKERMSG,AFFINITY GO TO MESSAGE WRITER @V407511 01338100 LA R0,CONDATA-CONCCW3+16 GET SIZE OF SHORT CONTASK @V305731 01339000 SRL R0,3(0) CONVERT TO DOUBLEWORDS @V305731 01340000 CALL DMKFREE GET STORAGE FOR CONTASK @V305731 01341000 STH R0,0(0,R1) SAVE SIZE OF SHORT CONTASK @V305731 01342000 LR R6,R1 SAVE ADDRESS OF CONTASK @V305731 01343000 DROP R6 DROP CONTASK BASE REGISTER @V305731 01344000 USING CONCCW3,R6 ADDRESSABILITY FOR SHORT CONTASK @V305731 01345000 XC CONDATA(10),CONDATA CLEAR DEPENDENT AREA FOR MDR@V305731 01346000 MVC CONDATA(2),IOBRADD GET LINE ADDRESS @V305731 01347000 MVC CONDATA+2(2),NICSELT GET CU AND DV ADDRESS @V305731 01348000 MVC CONDATA+4(2),BSCSENSE GET SENSE BYTES @V305731 01349000 MVC CONDATA+6(2),NICNAME SAVE RESOURCE ID. @V305731 01350000 LA R0,10 SIZE OF DEPENDENT DATA FOR MDR @V305731 01351000 STH R0,CONDCNT SAVE COUNT @V305731 01352000 DROP R6 DROP SHORT CONTASK BASE REGISTER @V305731 01353000 USING CONTASK,R6 SET UP ADDRESABILITY FOR CONTASK @V305731 01354000 LA R4,CALLIOER GET RETURN ADDRESS @V305731 01355000 BAL R7,STKCPEX GO STACK A CPEXBLOK @V305731 01356000 FORUSOF EQU * @V305731 01357000 BAL R3,FORCEOFF FORCE USER OFF SYSTEM @V305731 01358000 XC BSCSENSE(2),BSCSENSE CLEAR SENSE AND STATUS DATA@V305731 01359000 TM BSCFLAG,BSCCOPY IS COPY FUNCTION ACTIVE @V305731 01360000 BO COPYERR YES, SEND NOT ACPTED MSG. TO USER@V305731 01361000 MVI BSCFLAG,X'00' CLEAR BISYNC LINE FLAGS @V305731 01362000 NI RDEVSTAT,X'FF'-RDEVWAII CLEAR LINE BUSY FLAG @V305731 01363000 TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 01363200 BO TP14 YES, GO DISCONNECT THE LINE @V346931 01363400 BAL R7,RGSTART GET ACTIVE RESOURCE & START I/O @V305731 01364000 SPACE 1 01365000 CALLIOER EQU * ERROR RECORDING OF SENSE DATA @V305731 01366000 LR R1,R6 GET MDR RECORD FOR RECORDER @V305731 01367000 CALL DMKIOERN RECORD DATA FROM REMOTE STATION @V305731 01368000 GOTO DMKDSPCH EXIT TO THE DISPATCHER @V305731 01369000 SPACE 1 01370000 RGFCOPY EQU * CLEANUP AFTER COPY FUNCTION @V305731 01371000 NI BSCFLAG,X'FF'-BSCCOPY CLEAR COPY FUNCTION FLAG @V305731 01372000 L R9,BSCUCOPY GET COPY REQUESTOR NICBLOK ADDR @V305731 01373000 BAL R4,STATUS DETERMINE STATUS OF SCREEN @V305731 01374000 OI NICFLAG,NICPROCN SET PROCESS NOW FLAG @V305731 01375000 NI RDEVSTAT,X'FF'-RDEVWAII CLEAR LINE BUSY FLAG @V305731 01376000 BAL R7,RGSTART GET ACTIVE RESOURCE @V305731 01377000 SPACE 1 01378000 FATALER EQU * FATAL LINE ERROR CONDITION @V305731 01379000 CLI IOBMISC2,IBBWRITE TRYING TO DO A WRITE? @VA08732 01379010 BE LDITCH YES, GO TRY RESELECTING TUBE @VA08732 01379020 TM RDEVFTR,FTRDIAL IS DIAL UP FEATURE INDICATED?@V346931 01379040 BNO FATALER2 NO, BYPASS SWITCHED DISCONNECT @V346931 01379080 TM BSCFLAG1,BSCFORCE IS USER FORCE IN PROGRESS? @V346931 01379120 BO FATALERA YES, SEE IF CMD REJECT ON DISABLE@VA13518 01379160 OI BSCFLAG1,BSCFORCE SET USER FORCE IN PROGRESS @V346931 01379200 BAL R7,CTLTASKB GET A CONTROL CONTASK @V346931 01379240 MVC CONCCW1(TWOCCW),BKCONCCW CCW TO DISCON STATION @V346931 01379280 OI CONCCW1+4,CC CHAIN TO DISABLE CCW @V346931 01379320 MVI IOBMISC2+3,NONE CLEAR POTENTIAL CMD REJECT FLAG @VA13518 01379340 BAL R7,SETCAWA GO DISABLE LINE @V346931 01379360 SPACE 01379400 FATALERA EQU * SEE IF CMD REJECT ON DISABLE SEQ.@VA13518 01379403 TM IOBSTAT,IOBFATAL IS IOBFATAL ON? @VA13518 01379406 BZ FATALER1 NO, MUST BE CC3-HANDLE AS BEFORE @VA13518 01379409 * IOBMISC2+3 FILLED IN BY DMKBSC 01379412 TM IOBMISC2+3,COMRJ CMD REJECT INDICATED? @VA13518 01379415 BZ FATALER1 NO, HANDLE AS BEFORE @VA13518 01379418 OI RDEVSTAT,RDEVNRDY SET NOT AVAILABLE FLAG @VA13518 01379421 MVI IOBMISC2+2,COMRJ REMEMBER CMD REJECT FOR LATER @VA13518 01379424 B FATAL2A CONTINUE FATAL ERROR PROCESSING @VA13518 01379427 SPACE 01379430 FATALER0 EQU * HANDLE NETWORK SHUTDOWN @V346931 01379440 NI IOBSTAT,X'FF'-IOBFATAL CLEAR FATAL ERROR @V346931 01379480 NI BSCFLAG1,X'FF'-BSCHALT CLEAR HALT I/O INDICATOR @V346931 01379520 FATALER1 EQU * ERROR/UNKNOWN CCW @V346931 01379560 TM RDEVFTR,FTRDIAL IS DIAL-UP FEATURE INDICATED? @V346931 01379600 BZ FATALER2 NO, GO VARY DEVICE OFFLINE @V346931 01379640 NI BSCFLAG1,X'FF'-BSCFORCE RESET FORCE USER FLAG @V346931 01379680 TM IOBSTAT,IOBFATAL UNRECOVERABLE ERROR? @V346931 01379720 BO *+8 YES, FOR SWITCHED REENABLE @V346931 01379760 FATALER2 EQU * FOR VARY OFF LINE FUNCTION @V346931 01379800 OI RDEVSTAT,RDEVNRDY SET NOT AVAILABLE FLAG @V305731 01380000 MVI IOBMISC2+2,NONE CLEAR FLAG BYTE FOR LATER @VA13518 01380100 TM IOBSTAT,IOBFATAL UNRECOVERABLE ERROR? @VA13518 01380200 BO FATAL2A YES, IOBMISC2+2 CORRECT @VA13518 01380300 MVI IOBMISC2+2,DISA REMEMBER TO SET RDEVDISA @VA13518 01380400 FATAL2A EQU * @VA13518 01380500 L R9,RDEVNICL GET POINTER TO RESOURCE NICBLOKS @V305731 01381000 LH R7,RDEVMAX GET THE MAXIMUN RESOURCE ID @V305731 01382000 MH R7,=AL2(NICSIZE*8) GET THE ENDING @V305731 01383000 ALR R7,R9 ADDRESS @V305731 01384000 LA R6,NICSIZE*8 GET SIZE OF NICBLOK @V305731 01385000 CALL DMKQCNCL CANCEL ALL STACK CONTASKS @V305731 01386000 RGFNICB EQU * FORCE ALL RESOURCES OFF THIS LINE@V305731 01387000 TM RDEVFTR,FTRDIAL IS DIAL-UP FEATURE INDICATED? @V346931 01387100 BZ FATALER3 NO, GO VARY DEVICE OFFLINE @V346931 01387200 CLI IOBMISC2+2,NONE UNRECOVERABLE ERROR? @VA13518 01387300 BE *+8 YES, FOR SWITCHED REENABLE @VA13518 01387400 FATALER3 EQU * FOR VARY OFF LINE FUNCTION @V346931 01387500 OI NICFLAG,NICDISB FORCE THE STATION TO BE DISABLE @V305731 01388000 BAL R3,FORCEOFF FORCE RESOURCES OFF LINE @V305731 01389000 BXLE R9,R6,RGFNICB GET NEXT RESOURCE @V305731 01390000 L R1,BSCTMRQ GET ADDRESS OF POLL TIMER REQUEST@V305731 01393000 LTR R1,R1 IS THERE A TRQBLOK ? @V305731 01394000 BZ TRQBYP NO, BYPASS TIMER RESET @V305731 01395000 CALL DMKSCHRT RESET TIMER REQUEST FOR POLL @V305731 01396000 LA R0,TRQBSIZE+CRTEXT GET SIZE OF TRQBLOK @VA13071 01397100 BAL R7,FRETSTG RELEASE STORAGE FOR TRQBLOK @V305731 01398000 ST R0,BSCTMRQ CLEAR ADDRESS OF TIMER REQUEST @V346931 01398500 TRQBYP EQU * @V305731 01399000 XC BSCFLAG(FLAGLNS),BSCFLAG CLEAR STATUS CONDITIONS@V346931 01399100 TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 01399200 BZ FATALER4 NO, GO PROCESS ERROR @V346931 01399300 CLI IOBMISC2+2,NONE UNRECOVERABLE ERROR? @VA13518 01399400 BE TP14 YES, GO DISABLE AND REENABLE LINE@VA13518 01399500 FATALER4 EQU * NOT UNRECOVERABLE DIAL ERROR @V346931 01399600 NI RDEVSTAT,X'FF'-(RDEVWAII+RDEVRSVD) RESET BUSY @V346931 01399700 NI RDEVFLAG,X'FF'-RDEVENAB CLEAR ENABLE FLAG @V346931 01399800 LA R0,BSCSIZE GET SIZE OF BSC CONTROL BLOCK @V305731 01400000 L R1,RDEVBSC GET ADDRESS OF BSC CONTROL BLOCK @V305731 01401000 BAL R7,FRETSTG RELEASE BSC CONTROL BLOCK @V305731 01402000 ST R0,RDEVBSC CLEAR POINTER TO CONTROL BLOCK @V305731 01403000 TM IOBSTAT,IOBCC3 IS THIS A CONDITION CODE 3 @V305731 01404000 BO FATAL4A YES, SEND MESSAGE 455 @VA13518 01405000 TM IOBMISC2+2,COMRJ WAS THIS A CMD REJECT? @VA13518 01405200 BZ DISASTA NO, SKIP MESSAGE 455 @VA13518 01405400 FATAL4A EQU * @VA13518 01405600 TM RDEVSTAT,RDEVDISA IS LINE OFFLINE @V305731 01406000 BO RGIGNORE YES, IGNORE SENDING MESSAGE @V305731 01407000 LA R0,2 GET STORAGE FOR ERROR MESSAGE @VA13518 01407100 CALL DMKFREE GET STORAGE @VA13518 01407200 LR R3,R1 SAVE ADDRESS OF STORAGE @VA13518 01407300 XC 0(16,R3),0(R3) CLEAR STORAGE @VA13518 01407400 MVC 5(L'CC3,R3),CC3 INITIALIZE MESSAGE @VA13518 01407500 TM IOBSTAT,IOBCC3 WAS IT A CC3? @VA13518 01407600 BO FATAL4B YES, MESSAGE O.K. @VA13518 01407700 MVC 5(L'CMDRJ,R3),CMDRJ MUST BE CMD REJECT @VA13518 01407800 FATAL4B EQU * @VA13518 01407900 LA R2,455(0) GET MSG (NOT OPERATIONAL...) @V305731 01408000 BAL R7,ERRMSGS GO WRITE ERROR MESSAGE @V305731 01409000 DISASTA EQU * WRITE LINE DISABLED MESSAGE @V305731 01410000 OI RDEVSTAT,RDEVDISA SET OFFLINE FLAG FOR THIS LINE@V305731 01411000 NI BSCFLAG1,X'FF'-BSCSHUT TURN OFF SHUTDOWN FLAG @VA11623 01411050 LA R2,454(0) GET MSG (LINE ... DISABLED) @V305731 01412000 SLR R3,R3 CLEAR R3 FOR ERRMSGS ROUTINE @VA13518 01412500 BAL R7,ERRMSGS GO WRITE ERROR MESSAGE @V305731 01413000 BAL R7,RGIGNORE GO CLEANUP 3270 SUPPORT @V305731 01414000 SPACE 2 01415000 TP11 EQU * ADDR - READ RESPONSE TO TEXT @V305731 01416000 CLC BSCRESP(2),BSCRCVD IS THIS THE EXPECTED RESPONSE@V305731 01417000 BE CORRACK YES, GO TO RETURN TABLE @V305731 01418000 CLC BSCRESP(2),BSCSEND IS THIS THE SENDING RESPONSE @V305731 01419000 BE CORRACK YES, GO TO RETURN INDEX TABLE @V305731 01420000 CLI BSCRESP,EOT IS THIS AN EOT RESPONSE @V305731 01421000 BE ISEOT YES, GO HANDLE EOT RESPONSE @V305731 01422000 CLI BSCRESP,NAK IS THIS A NAK RESPONSE @V305731 01423000 BE ISNAK YES, GO HANDLE NAK RESPONSE @V305731 01424000 TM RDEVFTR,FTRDIAL IS DIAL UP FEATURE INDICATED? @V346931 01424100 BZ TPWACK NO, CHECK FOR WACK RESPONSE @V346931 01424200 CLC BSCRESP(DLEOTLN),RGFDLEOT DISCONNECT SIGNAL? @V346931 01424300 BE DLEEOT YES, GO FORCE USER OFF SYSTEM @V346931 01424400 TPWACK EQU * CHECK THE WACK RESP @V346931 01424500 CLC BSCRESP(2),RGFWACK IS THIS A WACK RESPONSE @V305731 01425000 BNE TPENQ NO, CHECK FOR ENQ RESPONSE @VM03133 01426000 TM NICTYPE,NICRSPL IS THIS A REMOTE PRINTER @V305731 01427000 BO CORRACK YES, GO TO PROPER SECTION @V305731 01428000 BAL R7,RESEOT RESET BISYNC TO CONTROL MODE @VA10513 01429200 TPENQ EQU * CHECK FOR ENQ RESPONSE @VM03133 01430000 CLI BSCRESP,ENQ IS THIS AN ENQ RESPONSE @V305731 01431000 BE ISNAK YES, GO HANDLE ENQ RESPONSE @V305731 01432000 TM BSCFLAG,BSCRVI POSSIBLY GARBLED EOT ON RVI? @VA13084 01433000 BO CORRACK NORMAL PROCESSING IF RVI @VA13084 01433300 * OTHERWISE, RETRANSMIT REPLY 01433600 SPACE 1 01434000 SENDENQ EQU * CCWS TO REGENERATE RESPONSE @V305731 01435000 BAL R3,RTYCOUNT CHECK RETRY FIELD FOR MAXIMUN @V305731 01436000 BAL R3,ENQSUB SET UP CCWS TO SEND ENQ RESPONSE @V305731 01437000 LA R1,BSCECCW1 GET POINTER TO CCW STRING @V305731 01438000 BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 01439000 SPACE 1 01440000 ISEOT EQU * HANDLE END OF TRANSMISSION RESP. @V305731 01441000 TM BSCFLAG,BSCRVI WAS EOT EXPECTED ? @V305731 01442000 BO CORRACK YES, GO TO RETURN TABLE SECTION @V305731 01443000 BAL R3,SPOLLCW SET UP CCWS FOR SPECIFIC POLL @V305731 01444000 BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 01445000 SPACE 1 01446000 ISNAK EQU * SET UP TO RE-SEND DATA TO STATION@V305731 01447000 BAL R3,RTYCOUNT CHECK COUNT FOR MAXIMUN VALUE @V305731 01448000 L R1,IOBCAW GET RESTART ADDRESS OF CCW STRING@V305731 01449000 BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 01450000 SPACE 1 01451000 CORRACK EQU * GO TO PROPER RETURN SECTION @V305731 01452000 L R6,NICQPNT GET POINTER TO CONTASK @V305731 01453000 LTR R6,R6 IS THERE A CONTASK ? @V305731 01454000 BZ RGFTSTRQ NO, RESET LINE TO CONTROL MODE @V305731 01455000 SR R1,R1 CLEAR INDEX REGISTER @V305731 01456000 IC R1,CONLABEL GET RETURN INDEX VALUE @V305731 01457000 B RETURN(R1) GO TO RETURN SECTION @V305731 01458000 RETURN EQU * RETURN TABLE @V305731 01459000 B NOCTL1 00 - GO GET NEXT CONTASK @V305731 01460000 B STRTRED 04 - GO PROCESS READ STATE @V305731 01461000 B LOGTST 08 - DETERMINE STATUS OF CONTASK @V305731 01462000 B GRFCFM 0C - CONSOLE FUNCTION PROCESSING @V305731 01463000 B SETMOR 10 - PROCESS MORE STATE @V305731 01464000 B SETREJ 14 - PROCESS NOT ACCEPTED MESSAGE@V305731 01465000 B CPNATMR 18 - DETERMINE STATE OF SCREEN @V305731 01466000 B CONLOGOF 1C - FORCE USER LOGOFF @V305731 01467000 B BLDVMBLK 20 - GO BUILD VMBLOK FOR RESOURCE@V305731 01468000 B FMTDONE 24 - PROCESS SCREEN FORMATS DONE @V305731 01469000 B CONRETBF 28 - REMOVE WRITE CONTASKS @V305731 01470000 B RDEXIT1 2C - RELEASE BUF & PROCESS STATUS@V305731 01471000 B RVIEND 30 - HANDLE RVI RESPONSE @V305731 01472000 SPACE 1 01473000 NOCTL1 EQU * @V305731 01474000 BAL R3,CONRET RETURN CONTASK @V305731 01475000 RGFTSTRQ EQU * RESET BISYNC LINE TO CONTROL MODE@V305731 01476000 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01477000 SPACE 1 01478000 STRTRED EQU * PROCESS READ STATE @V305731 01479000 BAL R3,CONRET RETURN CONTASK @V305731 01480000 L R6,NICQPNT GET CURRENT CONTASK POINTER @V305731 01481000 BAL R3,READSUB BUILD CCWS FOR READ STATE @V305731 01482000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01483000 SPACE 1 01484000 LOGTST EQU * DETERMINE STATUS OF CONTASK @V305731 01485000 BAL R3,CONRET RETURN CONTASK @V305731 01486000 L R6,NICQPNT GET CURRENT CONTASK POINTER @V305731 01487000 TM CONPARM,LOGDROP+LOGHOLD LOGOUT MESSAGE @V305731 01488000 BNZ CONCLR1 YES, CLEAR REMAINING @V305731 01489000 TM BSCFLAG1,BSCPA1 RETURNING FROM MORE/HOLD PA1 @VA04772 01490100 * INT. 01490200 BO RETPA1 YES - DON'T RELEASE CONTASK @VA04772 01490300 BAL R3,CONRET RETURN FINISHED CONTASK @VA04772 01490400 B RESEOT RESET BISYNC LINE TO CONTROL MODE@VA04772 01490500 SPACE 1 01490600 RETPA1 NI BSCFLAG1,X'FF'-BSCPA1 RESET BREAK INDICATOR @VA04772 01490700 CALL DMKCFMBK,AFFINITY PUT USER IN CONSOLE FUNC MODE @V407511 01490810 B RESEOT RESET BISYNC LINE TO CONTROL MODE@VA04772 01490900 SPACE 1 01491000 CONCLR1 EQU * CANCEL ALL CONTASKS FROM STACK @V305731 01492000 OI BSCFLAG,BSCLOG BYPASS MESSAGE TO OPERATOR @V305731 01493000 TM CONPARM,LOGDROP SAVE CC ON DROP REQUEST @V346931 01493100 BAL R3,FORCEOFF FORCE USER OFF - LOGOFF @V305731 01494000 NI BSCFLAG,X'FF'-BSCLOG CLEAR BYPASS MESSAGE FLAG @V305731 01495000 TM RDEVFTR,FTRDIAL DIAL UP FEATURE INDICATED? @V346931 01496100 BNO RESEOT NO, RESET BISYNC LINE @V346931 01496200 TM NICFLAG,NICENAB IS USER STILL ENABLED ? @V346931 01496300 BZ LINEDROP NO, TERMINATE SWITCHED CONNECTIO @V346931 01496400 SPM R3 RESTORE CC (CHECK FOR LOGDROP) @V346931 01496500 BO LINEDROP YES, GO TERMINATE SWITCHED LINE @V346931 01496600 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MOD @V346931 01496700 SPACE 1 01497000 GRFCFM EQU * CONSOLE FUNCTION PROCESSING @V305731 01498000 BAL R3,CONRET RETURN CONTASK @V305731 01499000 L R4,BSCRPTR GET POINTER TO READ BUFFER @VA08730 01500100 L R3,BUFCNT-BUFFER(R4) GET DATA COUNT @V305731 01501000 LTR R3,R3 IS THERE ANY DATA ? @V305731 01502000 BNP GRFBK NO, BYPASS GOING TO DMKCFM @V305731 01503000 BAL R7,RSWVMS SWITCH VMBLOK LOCKING & CHARGING @V4M0193 01503100 USING CPEXBLOK,R7 ADDRESSABILITY FOR CPEXBLOK @V305731 01504000 LA R0,CPEXSIZE GET SIZE OF CPEXBLOK @V305731 01505000 CALL DMKFREE GET STORAGE FOR CPEXBLOK @V305731 01506000 LR R7,R1 GET ADDRESS OF CPEXBLOK @V305731 01507000 LR R1,R4 GET ADDRESS OF READ BUFFER @V305731 01508000 LR R0,R3 GET DATA COUNT @V305731 01509000 STM R0,R15,CPEXR0 SAVE ALL REGISTERS @V305731 01513000 LA R15,CALLCFM GET RETURN ADDRESS @V305731 01514000 ST R15,CPEXADD SAVE RETURN ADDRESS @V305731 01515000 LR R1,R7 GET CPEXBLOK POINTER @V305731 01516000 CALL DMKSTKMP STACK CPEXBLOK @VA07391 01517100 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01518000 DROP R7 DROP CPEXBLOK BASE REGISTER @VM03094 01519000 SPACE 1 01520000 CALLCFM EQU * GO TO CONSOLE FUNCTION SUPPORT @V305731 01521000 CALL DMKCFMEN GO TO CONSOLE FUNCTION @V305731 01522000 GOTO DMKDSPCH GO TO DISPATCHER @V305731 01523000 SPACE 1 01524000 GRFBK EQU * @V305731 01525000 LA R0,BUFSIZE GET SIZE OF READ BUFFER @V305731 01526000 LR R1,R4 GET READ BUFFER ADDRESS @V305731 01527000 CALL DMKFRET RELEASE STORAGE FOR READ BUFFER @V305731 01528000 BAL R7,ROUTCFM PLACE IN CONSOLE FUNCTION MODE @V305731 01529000 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01530000 SPACE 1 01531000 SETMOR EQU * PROCESS MORE STATE @V305731 01532000 USING TRQBLOK,R4 SET UP ADDRESSABILITY FOR TRQBLOK@V305731 01533000 BAL R3,CONRET RETURN CONTASK @V305731 01534000 BAL R7,RSTTMR RESET TIMER REQUEST @V305731 01535000 BAL R7,BLDTRQ GET STORAGE FOR TRQBLOK @V305731 01536000 LA R1,TMR60VAL GET 60 SECONDS VALUE @V305731 01537000 B SETINT FINISH SETTING UP TRQBLOK @V305731 01538000 SPACE 1 01539000 SETREJ EQU * PROCESS NOT ACCEPTED STATE @V305731 01540000 BAL R3,CONRET RETURN CONTASK @V305731 01541000 BAL R7,RSTTMR RESET TIMER REQUEST @V305731 01542000 BAL R7,BLDTRQ GET STORAGE FOR TRQBLOK @V305731 01543000 LA R1,TMR03VAL GET 3 SECONDS VALUE @V305731 01544000 SETINT EQU * @V305731 01545000 LR R3,R1 SAVE TIMER VALUE @V4M0193 01546100 L R1,NICUSER GET ADDR OF VMBLOK @V4M0193 01546600 BAL R7,RSWVMU1 SWITCH VMBLOK CHARGING @V4M0193 01547100 LR R1,R3 RESTORE TIMER VALUE @V4M0193 01547600 LA R15,TMRINT RETURN ADDRESS WHEN TIME EXPIRES @V305731 01549000 OI NICSTAT,NICTRQ INDICATE TIMER REQUEST PENDING @V305731 01550000 BAL R7,SCHTIME GO SCHEDULE TIMER REQUEST @V305731 01551000 CHARGE SWITCH,ASYSVM SWITCH VMBLOK CHARGING @V407511 01552100 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01555000 SPACE 1 01556000 CPNATMR EQU * DETERMINE STATUS OF SCREEN @V305731 01557000 BAL R3,CONRET RETURN CONTASK @V305731 01558000 CPNATMR2 EQU * DETERMINE SCREEN STATUS @V305731 01559000 BAL R4,STATUS DETERMINE STATUS OF SCREEN @V305731 01560000 NI NICSTAT,X'FF'-NICCPNA CLEAR NOT ACCEPTED FLAG @V305731 01561000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01562000 SPACE 1 01563000 CONLOGOF EQU * FORCE USER OFF @V305731 01564000 BAL R3,CONRET RETURN CONTASK @V305731 01565000 DLEEOT EQU * DISCONNECT USER FROM SYSTEM @V346931 01565100 TM RDEVFTR,FTRDIAL DIAL FEATURE INDICATED? @V346931 01565200 BZ GOFORCE NO, USE THIS NICBLOK @V346931 01565300 TM NICTYPE,NICLGRP IS THIS NICBLOK FOR A CTL UNIT? @V346931 01565400 BZ GOFORCE NO, USE THIS NICBLOK @V346931 01565500 LA R9,NICSIZE*8(R9) POINT TO STATION NICBLOK @V346931 01565600 GOFORCE EQU * GO FORCE USER OF SYSTEM @V346931 01565700 BAL R3,FORCEOFF FORCE USER OFF - LOGOFF @V305731 01566000 TM RDEVFTR,FTRDIAL DIAL FEATURE INDICATED? @V346931 01566100 BO LINEDROP YES, DISCONNECT STATION @V346931 01566200 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01567000 SPACE 1 01568000 BLDVMBLK EQU * BUILD VMBLOK FOR USER @V305731 01569000 BAL R3,CONRET RETURN CONTASK @V305731 01570000 CALL DMKBLDVM,AFFINITY BUILD A VMBLOK @V407511 01571100 CALL DMKCFMBK,AFFINITY PLACE USER IN CONSOLE FUNCTION@V407511 01571600 BAL R3,GRFCRD CCWS TO CLEAR INPUT AREA @V305731 01573000 BAL R7,SETCAWA GO RESTART I/O TO LINE @V305731 01574000 SPACE 1 01575000 FMTDONE EQU * SCREEN HAS BEEN FORMATTED @V305731 01576000 BAL R3,CONRET RETURN CONTASK @V305731 01577000 OI NICFLAG,NICFMT SET FORMAT COMPLETED INDICATOR @V305731 01578000 TM NICFLAG,NICDISB DID OPERATOR ISSUE DISABLE CMD @V305731 01579000 BZ BYPCLR NO, CONTINUE @VM03133 01580000 BAL R7,CLRTLOG CLEAR SCREEN & LOGOFF USER @V305731 01581000 BYPCLR EQU * RESET BISYNC LINE @VM03133 01582000 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01583000 SPACE 1 01584000 RDEXIT1 EQU * RELEASE BUFFER & PROCESS STATUS @V305731 01585000 BAL R3,FRETRD RELEASE READ BUFFER AREA @V305731 01586000 B CPNATMR GO CHECK FOR SCREEN STATE @V305731 01587000 SPACE 1 01588000 RVIEND EQU * HANDLE RESPONSE FROM STATION @V305731 01589000 BAL R3,CONRET RETURN CONTASK @V305731 01590000 NI BSCFLAG,X'FF'-BSCRVI CLEAR EXPECTED FLAG @V305731 01591000 TM BSCFLAG,BSCOPIED IS THIS A COPY REQUEST @V305731 01592000 BZ TP09 NO, GO ANALYSE FLAG FIELD @V305731 01593000 COPYSECT EQU * SET UP TO DO COPY FUNCTION @V305731 01594000 XI BSCFLAG,BSCOPIED+BSCCOPY CLEAR INITIATE-SET COPY@V305731 01595000 LR R3,R9 SAVE USER NICBLOK POINTER @V305731 01596000 L R9,BSCUCOPY GET ADDRESS OF PRINTER NICBLOK @V305731 01597000 ST R3,BSCUCOPY SAVE COPY REQUESTOR NICBLOK ADDR @V305731 01598000 BAL R3,BLDCOPY GO SET UP CCW STRING FOR COPY @V305731 01599000 LA R1,CONCCW1 GET START OF CCW STRING @V305731 01600000 ST R1,IOBCAW SAVE POINTER TO CCW STRING @V305731 01601000 BAL R3,SELECTCW SET UP CCW TO SELECT PRINTER @V305731 01602000 BAL R7,RESTART GO RESTART I/O TO BISYNC LINE @V305731 01603000 SPACE 1 01604000 CONRETBF EQU * REMOVE WRITE CONTASKS FROM CHAIN @V305731 01605000 NI NICTMCD,X'FF'-(NICTABF+NICSIO) CLEAR FLAGS @VM03094 01606000 L R6,BSCSPTR GET PTR TO CCW STRING FOR WRITE @V305731 01607000 SH R6,=AL2(CONCCW1-CONTASK) GET PTR TO TASK CHAIN @V305731 01608000 L R0,IOBMISC GET PTR TO LAST TASK IN CHAIN @V305731 01609000 ST R0,BSCSPTR SAVE POINTER TO CONTASK CHAIN @V305731 01610000 SR R0,R0 CLEAR REGISTER 0 @V305731 01611000 ST R0,IOBMISC CLEAR POINTER FIELD @V305731 01612000 LA R7,IOBMISC-(CONPNT-CONTASK) PTR TO CHAIN ANCHOR @V305731 01613000 RGFRETBF EQU * PROCESS CONTASKS @V305731 01614000 SR R2,R2 SET RETURN CODE TO ZERO @V305731 01615000 BAL R3,SETRETN SET RETURN CODE FOR USER @V305731 01616000 L R1,CONPNT GET NEXT CONTASK @V305731 01617000 ST R1,NICQPNT MAKE CONTASK CURRENT @V305731 01618000 ST R0,CONPNT CLEAR CONTASK NEXT FIELD @V305731 01619000 ST R6,CONPNT-CONTASK(,R7) SAVE PTR TO TASK IN CHAIN@V305731 01620000 LR R7,R6 GET POINTER TO NEXT CONTASK @V305731 01621000 TM CONPARM,LOGDROP+LOGHOLD IS LOGOUT MSG INDICATED @V305731 01622000 BZ CHKLAST NO, CHECK FOR LAST CONTASK @V346931 01623100 TM CONPARM,LOGDROP TERMINATE SWITCHED CONN. ? @V346931 01623200 BAL R7,CONCLR SAVE CC, GO LOG USER OFF @V346931 01623300 CHKLAST EQU * CHECK FOR LAST CONTASK @V346931 01623400 CL R6,BSCSPTR IS THIS THE LAST CONTASK @V305731 01624000 BE RETCONK YES, GO RETURN CONTASKS @VM03133 01625000 L R6,NICQPNT GET NEXT CONTASK POINTER @V305731 01626000 B RGFRETBF GO SET RETURN CODE FOR USER @V305731 01627000 RETCONK EQU * RETURN CONTASKS TO SYSTEM @VM03133 01628000 L R6,IOBMISC GET START OF CONTASK CHAIN @V305731 01629000 CALL DMKQCNET RETURN CONTASK @V305731 01630000 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01631000 **** NOTE: RESEOT DOES NOT RETURN 01631100 SPACE 1 01632000 CONCLR EQU * PROCESS LOGOFF FUNCTION @V305731 01633000 L R6,IOBMISC GET POINTER TO CONTASK CHAIN @V305731 01634000 CALL DMKQCNET RETURN CONTASKS @V305731 01635000 OI BSCFLAG,BSCLOG BYPASS SENDING FORCE MESSAGE @V305731 01636000 BAL R3,FORCEOFF LOG USER OFF SYSTEM @V305731 01637000 NI BSCFLAG,X'FF'-BSCLOG CLEAR FORCE FLAG @V305731 01638000 TM RDEVFTR,FTRDIAL DIAL FEATURE INDICATED? @V346931 01638100 BNO RESEOT NO, GO RESET THE LINE @V346931 01638200 TM NICFLAG,NICENAB IS LINE STILL ENABLED? @V346931 01638300 BNO LINEDROP NO, GO DISCONNECT THE STATION @V346931 01638400 SPM R7 RESTORE CC (LOGDROP ?) @V346931 01638500 BO LINEDROP GO TERMINATE SWITCHED CONN. @V346931 01638600 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01639000 SPACE 2 01640000 TP12 EQU * READ REMAINING DATA FROM STATION @VM03043 01653000 L R6,NICQPNT GET POINTER TO CURRENT CONTASK @VM03043 01654000 CLI BSCRESP,NAK IS THIS A NAK RESPONSE? @VA05184 01654010 BNE ACKRESP NO, CONTINUE @VA05184 01654020 LH R1,BSCCNT CHECK RETRY HERE, THIS IS SPECIAL@VA05184 01654030 A R1,F1 UPDATE RETRY COUNT @VA05184 01654040 STH R1,BSCCNT SAVE THE COUNT @VA05184 01654050 CLC BSCCNT,F6+2 HAS COUNT REACHED MAX? @VA05184 01654060 BH REGENERR YES,SET PERMANENT STATION ERROR @VA05184 01654070 NI BSCFLAG,X'FF'-BSCENQ CLEAR ENQ IN TEXT FLAG @VA05184 01654080 B SENDNAK1 NO, RETRY THE READ @VA05184 01654090 ACKRESP XI BSCSEND+1,X'11' CHANGE TO ALTERED ACK @VA05184 01655000 XI BSCRCVD+1,X'11' CHANGE TO ALTERED ACK @VM03116 01656000 CLI BSCREAD,STX IS THIS THE START OF TEXT @VM03043 01657000 BNE SENDNAK NO, SEND NAK TO STATION @VM03043 01658000 LA R2,BSCSIZE1 GET LENGTH OF BUFFER AREA @VM03043 01659000 SH R2,IOBCSW+6 GET NUMBER OF BYTES IN BUFFER @VM03043 01660000 L R7,F2 GET COUNTER IN REG 7 @VA05897 01661100 BILLBCTR BCTR R2,0 EXCLUDE ENDING CHARACTER(S) @VA05897 01661200 LA R3,BSCREAD(R2) GET ENDING ADDRESS OF DATA @VM03043 01662000 CLI 0(R3),ETX IS ENDING CHARACTER INDICATED @VM03043 01663000 BE BLKDATA YES, HANDLE BLOCK RECORD @VM03043 01664000 CLI 0(R3),ETB IS ENDING CHARACTER INDICATED @VM03043 01665000 BE BILLGO YES, SET ETB INDICATOR @VA05897 01666400 BCT R7,BILLBCTR DECREMENT COUNT @VA05897 01666800 B SENDNAK NO ETB,ETX FOUND @VA05897 01667200 BILLGO OI BSCFLAG1,BSCETB SET ETB INDICATOR AND CONTINUE @VA06303 01667600 BLKDATA EQU * HANDLE BLOCK RECORD @VM03043 01668000 BCTR R2,R0 SUBSTRACT LENGTH OF HEADER CHARS.@VM03043 01669000 LA R3,BSCREAD+1 GET STARTING ADDRESS OF DATA @VM03043 01670000 TM BSCFLAG1,BSCIGN IS BUFFER IGNORE SWITCH ON @VM03043 01671000 BO CHECKEY YES, IGNORE DATA IN BUFFER @VM03043 01672000 BAL R7,SECOND GO HANDLE DATA IN BUFFER @VM03043 01673000 SPACE 2 01673020 TP13 EQU * STATUS BIDING ON A SWITCH LINE @V346931 01673040 CLI BSCRESP,ENQ ENQ RESPONSE ? @V346931 01673060 BE CHKENQ YES, GO RESPOND TO ENQ @V346931 01673080 CLC BSCRESP(DLEOTLN),RGFDLEOT IS THIS DISCON SIGNAL?@V346931 01673100 BE DLEEOT YES, GO FORCE USER OFF SYSTEM @V346931 01673120 NI RDEVSTAT,X'FF'-RDEVWAII RESET WAIT INDICATOR @V346931 01673140 BAL R7,RGSTART GO GET ACTIVE USER @V346931 01673160 SPACE 1 01673180 CHKENQ EQU * RESPOND TO ENQ FROM STATION @V346931 01673200 MVC BSCPCCW1(TWOCCW),SW3275RD WRITE ACK0 / READ @V346931 01673220 LA R1,BSCREAD ADDR OF RESPONSE @V346931 01673240 STCM R1,B'0111',BSCPCCW2+1 INTO CCW @V346931 01673260 BAL R7,RESTART RESTART I/O OPERATION TO LINE @V346931 01673280 SPACE 2 @V346931 01673300 TP14 EQU * DROP/DISCONNECT SWITCH LINE @V346931 01673320 BAL R7,FRETIOB RETURN IOBLOK @V346931 01673340 L R9,RDEVNICL POINT TO RESOURCE LIST @V346931 01673360 LA R9,NICSIZE*8(R9) POINT TO STATION NICBLOK @V346931 01673380 NI RDEVSTAT,X'FF'-RDEVWAII RESET BUSY @V346931 01673400 LA R0,255 PARM TO ENABLE/DISABLE LINE @V346931 01673420 LA R7,REINIT RETURN ADDRESS FROM ENABLE @V346931 01673440 TM NICFLAG,NICENAB DEVICE TO BE RE-ENABLED ? @V346931 01673460 BO REENABLE YES, ENABLE LINE @V346931 01673480 LA R7,GODSPCH RETURN ADDRESS FROM DISABLE @V346931 01673500 REENABLE EQU * ENABLE THE SWITCH LINE @V346931 01673520 CALL DMKRGBEN GO ENABLE THE SWITCHED LINE @V346931 01673540 BNZ GODSPCH EXIT TO THE DISPATCHER @V346931 01673560 BR R7 RETURN @V346931 01673580 SPACE 1 01673600 REINIT EQU * INITIALIZE THE DISPLAY (LOGO) @V346931 01673620 SR R0,R0 PARM TO INITIALIZE SCREEN @V346931 01673640 CALL DMKRGBEN GO ENABLE THE SWITCHED LINE @V346931 01673660 BAL R7,GODSPCH EXIT TO THE DISPATCHER @V346931 01673680 SPACE 2 01673700 SPACE 4 01674000 ************************************************************* 01675000 * ANALYZE THE STATUS MESSAGE FROM THE REMOTE STATION 01676000 ************************************************************* 01677000 SPACE 2 01678000 SENSTAT EQU * PROCESS THE STATUS MESSAGE @V305731 01679000 LA R4,LENADDR(,R4) ADR OF SS BYTES FOR SW 3275 @V346931 01680100 TM RDEVFTR,FTRDIAL DIAL UP FEATURE INDICATED? @V346931 01680200 BO STATSW YES, BYPASS SENSE HEADER @V346931 01680300 LA R4,2(,R4) ADDR OF SS BYTES (NON SW) @V346931 01680400 STATSW EQU * WE NOW POINT TO SENSE BYTES @V346931 01680500 MVC BSCSENSE,0(R4) MOVE SENSE BYTES INTO AREA @V346931 01680600 MVC BSCRSTRT(4),IOBCAW GET RESTART STRING ADDRESS @V305731 01681000 L R3,RDEVNICL GET POINTER TO NICBLOK LIST @V305731 01682000 TM NICTYPE-NICBLOK(R3),NIC3275 3275 DISPLAY @V305731 01683000 BZ TEST3271 NO, GO CHECK FOR PRINTER @V305731 01684000 TM BSCFLAG,BSCCOPY IS THIS A COPY FUNCTION @V305731 01685000 BO PRT3275 YES, GET REMOTE PRINTER ADDRESS @V305731 01686000 TM BSCSENSE,STATDE IS THIS DEVICE END @V305731 01687000 BZ TEST3271 NO, CHECK FOR REMOTE PRINTER @V305731 01688000 TM BSCSENSE+1,STATDC+INVREQ+STATEC PRINTER STATUS @V305731 01689000 BZ TEST3271 NO, HANDLE DISPLAY ERROR @V305731 01690000 PRT3275 EQU * GET ADDRESS OF REMOTE PRINTER @V305731 01691000 CLC RDEVMAX(2),F1+2 IS RDEVMAX=1 - NO PRINTER @VA05170 01691300 BE TEST3271 THEREFORE DO NOT BUMP REG9 @VA05170 01691700 AH R9,=AL2(NICSIZE*8) GET POINTER TO PRINTER BLOCK @V305731 01692000 TEST3271 EQU * SET UP TO SEND ACK RESPONSE @V305731 01693000 CLC BSCSENSE(2),=X'C240' STANDALONE DEVICE END @V305731 01694000 BE DEVSTAT YES, GO PROCESS DEVICE END STATUS@V305731 01695000 RVICCW MVC BSCSCCW1(8),RSRVICCW SETUP RVI CCW @VA08734 01696500 MVC BSCSCCW2(8),UNEPTCCW SET UP READ RESPONSE CCW @V305731 01697000 MVI BSCSCCW2+5,X'04' SET TP-OP CODE @V305731 01698000 LA R1,BSCRESP GET ADDRESS OF RESPONSE BUFFER @V305731 01699000 STCM R1,7,BSCSCCW2+1 SAVE ADDRESS IN CCW @V305731 01700000 LA R1,BSCSCCW1 GET START OF CCW STRING @V305731 01701000 MVC IOBMISC2+1(1),IOBMISC2 SAVE CURRENT FTN FLAGS @VA08730 01701500 BAL R7,SETCAW GO RESTART I/O TO LINE @V305731 01702000 SPACE 2 01703000 TP04 EQU * HANDLE STATION ERROR @V305731 01704000 TM BSCFLAG,BSCTSTRQ IGNORE FLAG ON ? @VA08734 01704150 BO NOCTL YES, GO GET NEXT CONTASK @VA08734 01704300 MVC IOBMISC2(1),IOBMISC2+1 RESTORE FTN FLAGS @VA08730 01704500 TM BSCSENSE+1,INVREQ IS IT INTERVENTION REQUIRED ? @VA08077 01705100 BNZ REGENERR YES, PERMANENT STATION ERROR @V305731 01706000 TM IOBMISC2,IBBSELA+IBBWRITE IS THIS A WRITE FTN. @V305731 01707000 BZ READERR NO, HANDLE READ REQUEST @V305731 01708000 BAL R3,RTYCOUNT CHECK COUNT FOR MAXIMUN VALUE @V305731 01709000 XC BSCSENSE(2),BSCSENSE CLEAR SENSE AND STATUS DATA@V305731 01710000 L R1,BSCSPTR GET ADDRESS OF WRITE CCW STRING @V305731 01711000 ST R1,IOBCAW SAVE ADDRESS OF RESTART STRING @V305731 01712000 BAL R3,SELECTCW SET UP CCWS FOR SELECTION @V305731 01713000 BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 01714000 SPACE 1 01715000 READERR EQU * HANDLE READ REQUEST @V305731 01716000 TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 01716200 BO GETDUSNS YES, GO PUT READ UP ON LINE @V346931 01716400 L R1,BSCRSTRT GET RESTART ADDRESS @V305731 01717000 BAL R7,SETCAW RESTART I/O OPERATION TO LINE @V305731 01718000 SPACE 1 01719000 REGENERR EQU * SET UP CCW TO RESET LINE @V305731 01720000 NI BSCFLAG,X'FF'-BSCOPIED CLEAR INITIATE COPY FLAG @V305731 01721000 NI BSCFLAG1,X'FF'-(BSCIGN+BSCETB) CLEAR FLAGS @VM03043 01722000 OI BSCFLAG,BSCREGEN SET PERMANENT STATION ERROR @V305731 01723000 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01724000 SPACE 2 01725000 DEVSTAT EQU * HANDLE DEVICE END STATUS @V305731 01726000 XC BSCSENSE(2),BSCSENSE CLEAR SENSE AND STATUS DATA@V305731 01727000 TM NICTYPE,NICRSPL REMOTE PRINTER ??? @VA05871 01728000 BO STATRST YES, GO SEND RVI TO RESET LINE @VA08734 01729200 L R1,ASYSVM GET SYSTEM VMBLOK POINTER @V305731 01730000 CL R1,NICUSER IS THIS USER LOGON @V305731 01731000 BNE CNCLDE YES, GO CLEAR SCREEN @V305731 01732000 NI NICFLAG,X'FF'-NICFMT CLEAR FORMAT COMPLETED FLAG@V305731 01733000 LOGUSER EQU * LOGON FUNCTION SECTION @V305731 01734000 NI BSCFLAG1,X'FF'-BSCINBID RESET INITIAL BID FLAG @V346931 01734500 TM NICTYPE,NICRSPL IS THIS A REMOTE PRINTER @V305731 01735000 BO STATRST YES, IGNORE REQUEST @VA08734 01736100 L R15,PREFIXA GET PREFIX VALUE TO ADDRESS PSA @V4M0132 01737100 * AT ABSOLUTE ZERO @V4M0132 01737200 CLI XTNDLOCK-PSA(R15),X'FF' IS SYSTEM EXTENDING? @V4M0132 01737300 BE STATRST YES, IGNORE INPUT DATA FROM USER @VA08734 01738100 TM NICFLAG,NICENAB IS THIS RESOURCE ENABLE @V305731 01739000 BZ STATRST NO, IGNORE REQUEST @VA08734 01740100 TM NICFLAG,NICDISB DID OPERATOR DISABLE RESOURCE @V305731 01741000 BZ TSTFMT NO, CHECK DISPLAY FOR FORMATTING @V305731 01742000 BAL R7,CLRTLOG CLEAR SCREEN & LOGOFF USER @V305731 01743000 SPACE 1 01744000 TSTFMT EQU * @V305731 01745000 TM NICFLAG,NICFMT IS THE SCREEN FORMATTED @V305731 01746000 BZ FMTRGF NO, GO FORMAT SCREEN @V305731 01747000 BAL R3,GRFCLRT SET UP CCWS TO CLEAR SCREEN @V305731 01748000 MVI CONLABEL,RTNBLDVM SET RETURN TO BUILD VMBLOK @V305731 01749000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01750000 SPACE 1 01751000 FMTRGF EQU * @V305731 01752000 L R7,=A(DMKRGBIC) PUT BASE ADDR OF DMKRGB IN REG. @V305731 01753000 L R15,=A(DMKRGBMT) GO TO FORMAT SECTION @V305731 01754000 BR R15 GO FORMAT DISPLAY SCREEN @V305731 01755000 SPACE 1 01756000 TESTREQ EQU * IGNORE DATA FROM REMOTE STATION @V305731 01757000 NI BSCFLAG,X'FF'-BSCENQ CLEAR ENQ FLAG @V305731 01758000 OI BSCFLAG,BSCTSTRQ SET IGNORE DATA FLAG @V305731 01759000 BAL R7,RESEOT RESET BISYNC LINE TO CONTROL MODE@V305731 01760000 SPACE 1 01760100 STATRST EQU * IGNORE DATA FROM REMOTE STATION @VA08734 01760200 OI BSCFLAG,BSCTSTRQ SET IGNORE DATA FLAG @VA08734 01760300 B RVICCW GO SEND RVI TO RESET LINE @VA08734 01760400 SPACE 1 01761000 SENDNAK EQU * SEND NAK TO REMOTE STATION @V305731 01762000 NI BSCFLAG,X'FF'-BSCENQ CLEAR ENQ IN TEXT FLAG @V305731 01763000 BAL R3,RTYCOUNT RETRY COUNT REACH MAX. VALUE @V305731 01764000 SENDNAK1 BAL R3,NAKSUB SET UP CCWS TO SEND NAK RESPONSE @VA05184 01765000 LA R1,BSCECCW1 GET START OF CCW STRING @V305731 01766000 BAL R7,SETCAW GO RESTART I/O TO LINE @V305731 01767000 EJECT 01768000 ******************************************************************* 01769000 * SUBROUTINES FOR 3270 REMOTE SUPPORT 01770000 * 01771000 * THESE SUBROUTINES ARE DUPLICATES OF SOME IN DMKRGB. 01772000 * ANY CHANGES MADE TO THESE SUBROUTINES SHOULD ALSO BE MADE 01773000 * IN DMKRGB. 01774000 ******************************************************************* 01775000 SPACE 2 01776000 SETCAWA EQU * GET START OF CCW STRING @V305731 01777000 LA R1,CONCCW1 GET BEGINNING ADDR OF CCW STRING @V305731 01778000 SETCAW EQU * I/O RESTART SECTION @V305731 01779000 ST R1,IOBCAW SET UP CAW @V305731 01780000 XC BSCRESP(L'BSCRESP),BSCRESP CLEAR RESPONSE BUFFER@V305731 01781000 RESTART EQU * RESTART I/O OPERATION TO LINE @V305731 01782000 TM IOBMISC2,IBBSPOLL DOING A SPECIFIC POLL ? @VA08730 01782100 BO RESTARTA YES,DON'T TOUCH FLAGS @VA08730 01782200 NI IOBMISC2,X'FF'-IBBWRITE TURN OFF WRITE FLAG @VA08730 01782300 L R1,IOBCAW RE-LOAD CCW ADDRESS @VA09123 01782320 CLI 5(R1),X'10' IS THIS A WRITE TEXT CCW? @VA13944 01782450 BNE RESTARTA NO, GO RESTART THE LINE @VA08730 01782500 ST R1,BSCSPTR SAVE WRITE CCW ADDRESS @VA08730 01782600 MVI IOBMISC2,IBBWRITE INDICATE THIS IS A WRITE @VA08730 01782700 RESTARTA EQU * @VA08730 01782800 XC BSCRESP(L'BSCRESP),BSCRESP CLEAR RESPONSE FIELD @VA13944 01782900 NI BSCFLAG,X'FF'-BSCSCAN CLEAR SECOND SCAN FLAG @V305731 01783000 XC IOBRCNT(2),IOBRCNT CLEAR RETRY COUNT FOR I/O @V305731 01784000 BAL R3,FRETIOER RELEASE THE IOERBLOK @V305731 01785000 LA R2,DMKRGAIN INTERRUPT RETURN ADDRESS @V305731 01786000 ST R2,IOBIRA SAVE INTERRUPT RETURN ADDRESS @V305731 01787000 MVC IOBUSER,NICUSER ASSIGN VMBLOK FOR I/O @VA07391 01788150 ST R9,BSCAUSER SAVE ADDR OF ACTIVE RESOURCE @V305731 01792000 CL R9,RDEVNICL IS THIS THE FIRST NICBLOK @V305731 01793000 BE *+8 YES, SKIP SAVING NICBLOK @V305731 01794000 ST R9,BSCRROBN SAVE ACTIVE NICBLOK @V305731 01795000 NI IOBSTAT,IOBFATAL RESET ALL BUT IOB FATAL FLAG @V349331 01796100 MVI IOBSPEC,X'00' CLEAR SPECIAL REQUEST @V305731 01797000 NI IOBFLAG,IOBCP+IOBRSTRT LEAVE ON THESE FLAGS @V305731 01798000 OI RDEVSTAT,RDEVWAII LINE IS NOW ACTIVE @V305731 01799000 BAL R7,RSWVMS SWITCH VMBLOK LOCKING & CHARGING @VA07391 01799100 CALL DMKIOSQR QUEUE REAL I/O FOR SYSTEM @V305731 01800000 BAL R7,GODSPCH GO TO DISPATCHER @V305731 01801000 SPACE 1 01802000 RGSTART EQU * GO SCAN FOR ACTIVE NICBLOK @V305731 01803000 L R7,=A(DMKRGBIC) PUT BASE ADDR OF DMKRGB IN REG. @V305731 01804000 L R15,=A(DMKRGBSN) SCAN FOR ACTIVE USER @V305731 01805000 BR R15 GO TO SCAN SECTION @V305731 01806000 SPACE 1 01807000 RGIGNORE EQU * RELEASE IOBLOK & IOERBLOK @V305731 01808000 BAL R7,FRETIOB RELEASE STORAGE FOR IOBLOK @V305731 01809000 BAL R7,GODSPCH GO TO DISPATCHER @V305731 01810000 SPACE 1 01811000 RVIRESP EQU * SEND RVI RESPONSE TO A STATION @V305731 01812000 BAL R7,CTLTASKB GET STORAGE FOR CONTROL CONTASK @V305731 01813000 MVI CONLABEL,RTNRVIRP SET RETURN TO RVI RESPONSE @V305731 01814000 OI BSCFLAG,BSCRVI SET EOT EXPECTED FLAG @V305731 01815000 LA R1,RSRVICCW GET ADDR OF CCW FOR RVI RESPONSE @V305731 01816000 BAL R7,SETUPCCW SET UP CCW FOR RVI RESPONSE @V305731 01817000 MVC CONCCW1(8),RSRVICCW GET CCW FOR RVI RESPONSE @V305731 01818000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01819000 SPACE 1 01820000 CTLTASKB EQU * SET UP BASIC SIZE FOR CONTASK @V305731 01821000 LA R0,CONTSIZE SIZE OF BASIC CONTASK @V305731 01822000 B CTLTASK1 GET STORAGE FOR CONTASK @V305731 01823000 CTLTASK EQU * ALLOCATE AND QUEUE CONTROL TASK @V305731 01824000 LA R0,CONTSIZE+6 ...SIZE OF CONTASKS @VA08129 01825100 CTLTASK1 EQU * @V305731 01826000 CALL DMKFREE GET STORAGE FOR CONTASK @V305731 01827000 XC 0(CONTSIZE*8,R1),0(R1) CLEAR THE HEADER @V305731 01828000 LR R6,R1 PUT CONTASK ADDRESS IN REGISTER 6@V305731 01829000 STH R0,CONTSKSZ SAVE THE CONTASK SIZE @V305731 01830000 L R1,NICUSER VMBLOK OF RESOURCE OWNER @V305731 01831000 ST R1,CONUSER SAVE VMBLOK PTR IN CONTASK @V305731 01832000 MVI CONSTAT,CONCNTL INDICATE CONTROL TASK @V305731 01833000 L R1,NICQPNT GET CURRENT CONTASK FROM CHAIN @V305731 01834000 ST R6,NICQPNT PUT THIS TASK FIRST ON CHAIN @V305731 01835000 ST R1,CONPNT PUT CURRENT TASK ON CHAIN @V305731 01836000 BR R7 RETURN @V305731 01837000 SPACE 1 01838000 STKCPEX EQU * @V305731 01839000 LA R0,CPEXSIZE GET SIZE OF CPEXBLOK @V305731 01840000 CALL DMKFREE GET STORAGE FOR CPEXBLOK @V305731 01841000 USING CPEXBLOK,R1 ADDRESSABILITY FOR CPEXBLOK @V305731 01842000 XC CPEXBLOK(16),CPEXBLOK CLEAR THE HEADER @V305731 01843000 LR R15,R4 GET THE EXECUTION ADDRESS @V305731 01844000 STM R15,R14,CPEXADD SAVE ALL REGISTERS @V305731 01845000 CALL DMKSTKMP STACK BLOCK FOR LATER PROCESSING @VA07391 01846100 DROP R1 DROP BASE REGISTER FOR CPEXBLOK @V305731 01847000 BR R7 RETURN @V305731 01848000 SPACE 1 01849000 DATAMOVE EQU * MOVE DATA INTO CONTASK @V305731 01850000 LA R14,CONCCW4+4 GET BEGINNING ADDRESS @V305731 01851000 AR R14,R1 UPDATE TO END OF DATA @V305731 01852000 MVI 0(R14),ETX PUT ENDING BISYNC CHAR IN BUFFER @V305731 01853000 DATMOVE EQU * MOVE DATA INTO CONTASK @V305731 01854000 MVC CONCCW4+1(3),SYNCP MOVE BISYNC HEADER INTO DATA @V305731 01855000 BCTR R1,R0 SUBTRACT - EX INSTRUCTION @V305731 01856000 EX R1,DATA MOVE DATA INTO BUFFER AREA @V305731 01857000 BR R7 RETURN @V305731 01858000 SPACE 1 01859000 GRFCLRT EQU * @V305731 01860000 BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 01861000 NI NICFLAG,X'FF'-(NICDIAG+NICALRM) CLEAR FLAGS @V305731 01862000 MVI NICCORD,X'00' SET COORDINATE Y TO ZERO @V305731 01863000 MVI NICSTAT,NICRUNN+NICNTRL SET STATUS IN NICBLOK @V305731 01864000 LA R1,WRT77CCW SET UP CCWS FOR CLEAR FUNCTION @V305731 01865000 BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 01866000 MVI CONCCW1+7,CLR77L+4 SET CCW COUNT FOR CLEAR FUNC.@V305731 01867000 LA R1,CLR77L GET THE LENGTH OF CLEAR DATA @V305731 01868000 LA R2,CLR3277 GET ADDRESS OF CLEAR DATA @V305731 01869000 BAL R7,DATAMOVE MOVE DATA INTO BUFFER AREA @V305731 01870000 BR R3 RETURN @V305731 01871000 SPACE 1 01872000 SETUPCCW EQU * SET UP CCWS FOR BISYNC RESPONSE @V305731 01873000 MVC CONCCW1(8),0(R1) MOVE CCW INTO CONTASK @V305731 01874000 MVI CONCCW1+4,SILI+CC MAKE SURE CMD CHAIN FLAG IS ON@V305731 01875000 LA R1,CONCCW4+1 GET BEGINNING ADDRESS OF DATA @V305731 01876000 STCM R1,7,CONCCW1+1 SAVE BEGINNING ADDRESS @V305731 01877000 MVC CONCCW2(8),READCCW1 GET READ RESPONSE CCW @V305731 01878000 LA R1,BSCRESP GET RESPONSE BUFFER @V305731 01879000 STCM R1,7,CONCCW2+1 SAVE RESPONSE BUFFER ADDRESS @V305731 01880000 BR R7 RETURN @V305731 01881000 SPACE 1 01882000 CLRTLOG EQU * CLEAR SCREEN & LOGOFF USER @V305731 01883000 BAL R3,GRFCLRT SET UP CCWS TO CLEAR SCREEN @V305731 01884000 MVI CONLABEL,RTNLOGOF SET RETURN TO LOGOFF PROCESS @V305731 01885000 BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 01886000 SPACE 2 @VA13123 01887000 SETRETN EQU * @V305731 01907000 TM CONSTAT,CONRESP RESPONSE EXPECTED ? @V305731 01908000 BZR R3 NO, RETURN @V305731 01909000 L R1,CONRETN GET RETURN SAVEAREA ADDRESS @V305731 01910000 ST R2,SAVER2-SAVEAREA(R1) SET RETURN CODE @V305731 01911000 BR R3 RETURN TO IN LINE CODE @V305731 01912000 SPACE 1 01913000 CONRET EQU * RETURN CONTASK TO SYSTEM @V305731 01914000 L R0,CONPNT GET NEXT CONTASK (IF ANY) @V305731 01915000 ST R0,NICQPNT SET NEXT CONTASK FOR PROCESSING @V305731 01916000 SR R0,R0 CLEAR REGISTER 0 @V305731 01917000 ST R0,CONPNT CLEAR NEXT POINTER @V305731 01918000 CALL DMKQCNET RETURN CONTASK @V305731 01919000 BR R3 RETURN TO IN LINE CODE @V305731 01920000 SPACE 1 01921000 RTYCOUNT EQU * CHECK RETRY FOR MAXIMUN VALUE @V305731 01922000 LH R1,BSCCNT GET RETRY COUNT @V305731 01923000 A R1,F1 UPDATE RETRY COUNT BY ONE @V305731 01924000 STH R1,BSCCNT SAVE RETRY COUNT @V305731 01925000 CLC BSCCNT(2),F6+2 HAS MAXIMUM COUNT BEEN REACHED ? @VA08077 01926100 BH REGENERR YES, SET PERMANENT STATION ERROR @V305731 01927000 BR R3 RETURN TO IN LINE CODE @V305731 01928000 SPACE 1 01928100 LDITCH EQU * HERE FOR LAST DITCH RETRY @VA08732 01928200 MVC IOBCAW,BSCSPTR SET CCW ADDRESS @VA08732 01928300 MVI BSCFLAG,X'00' TURN OFF ERROR FLAGS @VA08732 01928400 MVI BSCFLAG1,X'00' DITTO @VA08732 01928500 NI IOBSTAT,X'FF'-IOBFATAL DITTO @VA08732 01928600 BAL R3,SELECTCW GO RESELECT TUBE @VA09031 01928710 B RESTART GO RESTART I/O TO LINE @VA09031 01928810 SPACE 1 01929000 RSTTMR EQU * RESET TIMER VALUE @V305731 01930000 TM NICSTAT,NICTRQ IS A TIMER REQUEST QUEUED @V305731 01931000 BZR R7 NO, RETURN TO IN LINE CODE @V305731 01932000 NI NICSTAT,X'FF'-NICTRQ RESET TIMER REQUEST FLAG @V305731 01933000 L R1,NICATRB GET ADDRESS OF TRQBLOK @V305731 01934000 CALL DMKSCHRT RESET ACTIVE TIMER REQUEST @V305731 01935000 BR R7 RETURN TO IN LINE CODE @V305731 01936000 SPACE 1 01937000 ROUTCNS EQU * EDIT AND TRANSLATE INPUT DATA @V305731 01938000 ST R7,TEMPR7 SAVE REGISTER 7 @V4M0193 01938100 ST R0,TEMPR0 SAVE REG 0-DESTROYED BY RSWVMU1 @VA07580 01938200 L R1,NICUSER LOAD ADDR NEW VMBLOK @V407511 01939100 BAL R7,RSWVMU1 SWITCH VMBLOK CHARGING @V4M0193 01939600 L R7,TEMPR7 RESTORE REGISTER 7 @V4M0193 01939700 L R0,TEMPR0 RESTORE REGISTER 0 @VA07580 01939800 CALL DMKCNSED EDIT INPUT DATA @V305731 01942000 CHARGE SWITCH,ASYSVM SWITCH VMBLOK CHARGING @V407511 01943100 BR R7 RETURN @V407511 01943200 SPACE 1 01944000 FRETCON EQU * RELEASE CONTASK AFTER EDITING @V305731 01945000 LR R1,R6 GET CONTASK POINTER @V305731 01946000 LA R0,CONTSIZE GET SIZE OF CONTASK @V305731 01947000 CALL DMKFRET RELEASE CONTASK @V305731 01948000 ST R3,BUFCNT-BUFFER(,R4) SAVE INPUT DATA COUNT @V305731 01949000 BR R7 RETURN TO IN LINE CODE @V305731 01950000 SPACE 1 01951000 ROUTQCN EQU * RE-DISPLAY DATA ON SCREEN @V305731 01952000 TM VMMLVL2-VMBLOK(R15),VMMHLITE HILIGHT REQUESTED? HRV101DK 01952700 BZ CALLQCN NO, CONTINUE HRV101DK 01953400 O R2,=A(HILIGHT) SET PARM ON HRV101DK 01954100 CALLQCN EQU * HRV101DK 01954800 O R2,=A(NOTRESP) SIGNAL NOT A COMMAND RESPONSE @V60C2B8 01955500 CALL DMKQCNWT,AFFINITY RE-DISPLAY INPUT DATA @V407511 01955600 B RSWVMU GO RESTORE SYSTEM TIMER VALUE @V4M0193 01957100 SPACE 1 01958000 ROUTCFM EQU * PUT USER IN CONSOLE FUNCTION MODE@V305731 01959000 LR R3,R7 SAVE RETURN ADDRESS @V4M0193 01960100 BAL R7,RSWVMS SWITCH VMBLOK LOCKING & CHARGING @V4M0193 01960200 LR R7,R3 RESTORE RETURN ADDRESS @V4M0193 01960300 CALL DMKCFMBK,AFFINITY PLACE IN CONSOLE FUNC MODE @V407511 01960600 B RSWVMU GO RESTORE SYSTEM TIMER VALUE @V4M0193 01965100 SPACE 1 01969000 BLDTRQ EQU * GET STORAGE FOR TRQBLOK @V305731 01970000 L R4,NICATRB GET TRQBLOK POINTER @V305731 01971000 LTR R4,R4 IS THE POINTER ZERO ? @V305731 01972000 BNZR R7 NO, RETURN @V305731 01973000 BAL R3,TRQSETUP GET STORAGE AND SETUP TRQBLOK @V305731 01974000 ST R4,NICATRB SAVE POINTER TO TRQBLOK @V305731 01975000 BR R7 RETURN @V305731 01976000 SPACE 1 01977000 TRQSETUP EQU * GET STORAGE AND SET UP TRQBLOK @V305731 01978000 LA R0,TRQBSIZE+CRTEXT GET SIZE OF TRQBLOK @VA13071 01979100 CALL DMKFREE GET STORAGE FOR TRQBLOK @V305731 01980000 LR R4,R1 GET TRQBLOK ADDRESS @V305731 01981000 XC TRQBLOK(TRQBSIZE*8+CRTEXTSZ),TRQBLOK CLR TRQ+EXT@VA13071 01982100 CALL DMKSCNRD GET BISYNC LINE ADDRESS @V305731 01983000 STH R1,TRQBDEV SAVE BISYNC LINE ADDRESS @V305731 01984000 ST R9,TRQBCRT SAVE NICBLOK ADDRESS OF USER @V305731 01985000 BR R3 RETURN TO IN LINE CODE @V305731 01986000 SPACE 1 01987000 SCHTIME EQU * SCHEDULE TIMER REQUEST @V305731 01988000 ST R15,TRQBIRA SAVE RETURN ADDRESS @V305731 01989000 ST R11,TRQBUSER SAVE USER VMBLOK ADDRESS @V305731 01990000 STCK TRQBVAL GET TOD CLOCK VALUE @V305731 01991000 BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 01991250 GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 01991500 CLOCKOK EQU * @VA04301 01991750 LM R14,R15,TRQBVAL GET TOD VALUE @V305731 01992000 AL R15,4(R1) ADD TO THE TOD CLOCK THE @V305731 01993000 BC 12,BYPADJ TIME INTERVAL @VM03133 01994000 AL R14,F1 ADJUST FOR OVERFLOW @V305731 01995000 BYPADJ EQU * GET TIMER VALUE @VM03133 01996000 AL R14,0(R1) HI ODER OF CLOCK VALUE @V305731 01997000 STM R14,R15,TRQBVAL SAVE TIMER VALUE IN TRQBLOK @V305731 01998000 LR R1,R4 GET ADDRESS OF TRQBLOK @V305731 01999000 CALL DMKSCHST GO SCHEDULE TIMER REQUEST @V305731 02000000 BR R7 RETURN TO IN LINE CODE @V305731 02001000 SPACE 1 02002000 BLDIOB EQU * GET STORAGE FOR IOBLOK @V305731 02003000 LTR R10,R10 IS THERE AN IOBLOK POINTER ? @V305731 02004000 BNZR R3 YES, RETURN @V305731 02005000 LA R0,IOBSIZE GET IOBLOK SIZES @V305731 02006000 CALL DMKFREE GET STORAGE FOR IOBLOK @V305731 02007000 LR R10,R1 SET UP ADDRESSABILITY FOR IOBLOK @V305731 02008000 XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IOBLOK @V305731 02009000 BR R3 RETURN TO IN LINE CODE @V305731 02010000 SPACE 1 02011000 BLDCOPY EQU * CCWS TO COPY SCREEN TO PRINTER @V305731 02012000 LA R0,CONTSIZE+1 GET SIZE OF CONTROL CONTASK @V305731 02013000 BAL R7,CTLTASK1 GET STORAGE FOR CONTASK @V305731 02014000 MVI CONLABEL,RTNNOCTL SET INDICATOR FOR NEXT CONTASK@V305731 02015000 LA R1,WRT77CCW GET WRITE CCW ADDRESS @V305731 02016000 BAL R7,SETUPCCW SET UP CCWS FOR BISYNC OPERATION @V305731 02017000 MVI CONCCW1+7,COPY75L+4 SET LENGTH OF COPY DATA @V305731 02018000 LA R1,COPY75L GET LENGTH OF COPY DATA @V305731 02019000 LA R2,COPY3275 GET ADDRESS OF COPY DATA @V305731 02020000 BAL R7,DATAMOVE MOVE DATA INTO CONTASK @V305731 02021000 L R7,RDEVNICL GET START OF NICBLOK LIST @V305731 02022000 TM NICTYPE-NICBLOK(R7),NIC3275 A 3275 DISPLAY @V305731 02023000 BOR R3 YES, RETURN TO IN LINE CODE @V305731 02024000 MVI CONCCW1+7,COPY77L+4 SET LENGTH OF COPY DATA @V305731 02025000 LA R1,COPY77L GET LENGTH OF COPY DATA @V305731 02026000 LA R2,COPY3277 GET ADDRESS OF COPY DATA @V305731 02027000 BAL R7,DATAMOVE MOVE DATA INTO CONTASK @V305731 02028000 MVI CONCCW4+3,COPYCMD SET COPY COMMAND CODE @V305731 02029000 L R7,BSCUCOPY GET COPY REQUESTOR NICBLOK ADDR @V305731 02030000 IC R1,NICPOLL+1-NICBLOK(R7) GET DEVICE ADDRESS @V305731 02031000 STC R1,CONCCW4+5 PUT REQUESTOR DEVICE ADDR IN DATA@V305731 02032000 BR R3 RETURN @V305731 02033000 SPACE 1 02034000 ERRMSGS EQU * ERROR MESSAGE SUBROUTINE @V305731 02035000 LH R1,IOBRADD GET ADDRESS OF LINE @V305731 02036000 CALL DMKCVTBH CONVERT TO HEX. VALUE @V305731 02037000 ICM R1,8,BLANKS PUT BLANK IN HIGH ORDER BYTE @V305731 02038000 L R0,MSGHEAD GET HEADER FOR ERROR ROUTINE @V305731 02039000 O R2,MSGPARM SET UP PARM FIELD @V305731 02040000 LTR R3,R3 TEST FOR MESSAGE 455 @VA13518 02040100 BZ CALLERM IF 0, NOT 455, CALL ERM NOW @VA13518 02040200 ST R1,0(,R3) STORE LINE ADDRESS FOR MSG @VA13518 02040300 LR R1,R3 LOAD DATA ADDRESS FOR ERM @VA13518 02040400 ICM R3,8,F2+3 NO. OF DW IN REG FOR ERM @VA13518 02040500 ICM R0,1,F16+3 NO. OF BYTES IN REG FOR ERM @VA13518 02040600 CALLERM EQU * @VA13518 02040700 CALL DMKERMSG,AFFINITY WRITE ERROR MESSAGES @V407511 02041100 BR R7 RETURN TO IN LINE CODE @V305731 02042000 SPACE 1 02043000 FRETSTG EQU * RETURN STORAGE TO SYSTEM @V305731 02044000 LA R1,0(,R1) CLEAR HIGH ORDER BYTE @V305731 02045000 LTR R1,R1 IS ADDRESS ZERO ? @V305731 02046000 BZ CLREG0 YES, CLEAR REGISTER ZERO @V305731 02047000 CALL DMKFRET RELEASE STORAGE @V305731 02048000 CLREG0 EQU * @V305731 02049000 SR R0,R0 CLEAR REGISTER 0 @V305731 02050000 BR R7 RETURN TO IN LINE CODE @V305731 02051000 SPACE 1 02052000 FRETRD EQU * RELEASE READ BUFFER @V305731 02053000 LA R0,BUFSIZE GET SIZE OF READ BUFFER @V305731 02054000 L R1,BSCRPTR GET ADDRESS OF READ BUFFER @VA08730 02055100 BAL R7,FRETSTG RELEASE STORAGE FOR READ BUFFER @V305731 02056000 ST R0,BSCRPTR CLEAR POINTER FIELD @VA08730 02057100 BR R3 RETURN @V305731 02058000 SPACE 1 02059000 FRETIOB EQU * RELEASE IOBLOK & IOERBLOK @V305731 02060000 LTR R10,R10 IS THERE AN IOBLOK POINTER @V305731 02061000 BZR R7 NO, RETURN @V305731 02062000 BAL R3,FRETIOER RELEASE IOERBLOK @V305731 02063000 LR R1,R10 GET IOBLOK POINTER @V305731 02064000 LA R0,IOBSIZE GET SIZE OF IOBLOK @V305731 02065000 CALL DMKFRET RELEASE STORAGE FOR IOBLOK @V305731 02066000 SR R10,R10 CLEAR IOBLOK POINTER @V305731 02067000 BR R7 RETURN TO IN LINE CODE @V305731 02068000 SPACE 1 02069000 FRETIOER EQU * RELEASE IOERBLOK STORAGE @V305731 02070000 L R1,IOBIOER GET POINTER TO IOERBLOK @V305731 02071000 LTR R1,R1 IS POINTER ZERO ? @V305731 02072000 BZR R3 YES, RETURN @V305731 02073000 LA R0,IOERSIZE GET SIZE OF IOERBLOK @V305731 02074000 AH R0,IOEREXT-IOERBLOK(,R1) EXTENSION TO IOERBLOK @V305731 02075000 CALL DMKFRET RELEASE STORAGE FOR IOERBLOK @V305731 02076000 SR R0,R0 CLEAR REGISTER 0 @V305731 02077000 ST R0,IOBIOER CLEAR POINTER TO IOERBLOK @V305731 02078000 BR R3 RETURN @V305731 02079000 EJECT 02080100 **** NOTE: R7 MUST BE PRESERVED ACROSS THIS SUBROUTINE 02080200 FORCEOFF EQU * LOGOFF USER @V305731 02081000 LR R2,R7 SAVE R7 VALUE @V4M0193 02082100 BAL R7,RSWVMS SWITCH VMBLOK LOCKING & CHARGING @V4M0193 02082200 LR R7,R2 RESTORE R7 VALUE @V4M0193 02082300 L R4,RDEVCON GET ADDRESS OF STACK CONTASKS @V305731 02085000 L R2,NICQPNT GET POINTER TO CONTASK'S STACK @V305731 02086000 LTR R2,R2 ARE THERE ANY CONTASKS @V305731 02087000 BZ CHECKLST NO, RESTORE ADDRESS OF STACK @V305731 02088000 ST R2,RDEVCON SAVE CONTASK POINTER FOR QCN @V305731 02089000 CALL DMKQCNCL CANCEL EVERYTHING ON STACK @V305731 02090000 CHECKLST EQU * SAVE ORIGINAL CONTASK POINTER @V305731 02091000 ST R4,RDEVCON SAVE ORIGINAL CONTASK POINTER @V305731 02092000 SR R0,R0 CLEAR REGISTER 0 @V305731 02093000 ST R0,NICQPNT CLEAR POINTER TO CONTASK STACK @V305731 02094000 TM VMRSTAT,VMLOGOFF IS USER IN PROCESS OF LOGOFF @V305731 02095000 BO SIGNOFF YES, BYPASS SENDING MESSAGE @V305731 02096000 CL R11,ASYSVM IS THIS A SYSTEM VMBLOK ? @V305731 02097000 BE SIGNOFF YES, BYPASS @V305731 02098000 TM BSCFLAG,BSCLOG IS BYPASS FORCE MESSAGE SET ? @V305731 02099000 BO SIGNOFF YES, GO LOGOFF USER @V305731 02100000 TM NICTYPE,NICRSPL IS THIS A REMOTE PRINTER @V305731 02101000 BO SIGNOFF YES, BYPASS MESSAGE TO OPERATOR @V305731 02102000 TM VMRSTAT,VMLOGON STILL IN LOGON PROCESS ? @V305731 02103000 BZ BYPSLP NO, PUT USER TO SLEEP @VM03133 02104000 ST R0,VMTERM CLEAR TERMINAL RDEVBLOK PTR. @V305731 02105000 BYPSLP EQU * PUT USER TO SLEEP @VM03133 02106000 CALL DMKQCNTO,AFFINITY PUT USER TO SLEEP @V407511 02107100 SIGNOFF EQU * CLEANUP SECTION @V305731 02108000 LR R2,R7 SAVE R7 @VA07391 02109150 BAL R7,RSWVMU SWITCH VMBLOK CHARGING @V4M0193 02109200 ST R11,NICUSER THIS RESOURCE NOW AVAILABLE @V305731 02112000 BAL R7,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V305731 02114000 NI NICSTAT,X'FF'-X'DF' RESET RESOURCE STATUS @V305731 02115000 NI NICFLAG,X'FF'-X'D5' RESET RESOURCE FLAGS @V305731 02116000 NI NICTMCD,X'FF'-(NICAPL+NICSIO+NICTEXT) @V387398 02117100 L R1,NICATRB GET ADDRESS OF TRQBLOK @V305731 02118000 LA R0,TRQBSIZE+CRTEXT GET SIZE OF TRQBLOK @VA13071 02119100 BAL R7,FRETSTG RELEASE STORAGE FOR TRQBLOK @V305731 02120000 ST R0,NICATRB CLEAR TRQBLOK POINTER @V305731 02121000 LR R7,R2 RESTORE CALLERS R7 @VA07391 02122100 TM NICFLAG,NICDISB WAS RESOURCE DISABLED ? @V305731 02123000 BZR R3 NO, RETURN @V305731 02124000 NI NICFLAG,X'FF'-(NICDISB+NICENAB) @V305731 02125000 BR R3 RETURN @V305731 02126000 EJECT 02127100 RESEOT EQU * RESET SECTION @V305731 02128000 XC BSCCNT(2),BSCCNT CLEAR RETRY COUNT @V305731 02129000 LA R1,RESETEOT GET ADDRESS OF RESET CCW @V305731 02130000 BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 02131000 SPACE 1 02131100 LINEDROP EQU * DISCONNECT SWITCH LINE @V346931 02131200 XC BSCCNT,BSCCNT CLEAR RETRY COUNT @V346931 02131300 LA R1,BKCONCCW ADDR OF BREAK CONNECTION CCW @V346931 02131400 BAL R7,SETCAW GO START I/O OPERATION @V346931 02131500 SPACE 1 02132000 ENQSUB EQU * SEND ENQ TO RE-GENERATE RESPONSE @V305731 02133000 MVC BSCECCW1(8),RSENQCCW SET UP CCW TO SEND ENQ @V305731 02134000 MVC BSCECCW2(8),TICCCW GET TIC CCW @V305731 02135000 L R1,IOBCSW GET CCW ADDRESS @VA07166 02136100 LA R1,0(,R1) CLEAR HIGH-ORDER BYTE @VA07166 02136200 SH R1,F8+2 CALCULATE READ CCW ADDRESS @VA07166 02136300 STCM R1,7,BSCECCW2+1 SAVE ADDRESS IN CCW @V305731 02137000 BR R3 RETURN @V305731 02138000 SPACE 1 02139000 NAKSUB EQU * SEND RESPONSE TO RETRANSMIT TEXT @V305731 02140000 MVC BSCECCW1(8),RSNAKCCW GET CCW TO SEND NAK RESP. @V305731 02141000 MVC BSCECCW2(8),TICCCW SET UP TIC CCW @V305731 02142000 LA R1,BSCPCCW4 GET ADDRESS OF THE READ CCW @V305731 02143000 TM RDEVFTR,FTRDIAL DIAL FEATURE INDICATED? @V346931 02143200 BZ NOTDIAL2 NO, USE ESTABLISHED CCWS @V346931 02143400 LA R1,BSCPCCW2 POINT TO READ BUFFER CCWS @V346931 02143600 NOTDIAL2 EQU * PREPARE FOR I/O OPERATION @V346931 02143800 STCM R1,7,BSCECCW2+1 SAVE ADDRESS IN TIC CCW @V305731 02144000 XC BSCREAD(256),BSCREAD CLEAR READ BUFFER @V305798 02145000 XC BSCREAD+256(L'BSCREAD-256),BSCREAD+256 ... @V305798 02146000 BR R3 RETURN @V305731 02147000 SPACE 1 02148000 STATUS EQU * DETERMINE STATUS OF DISPLAY @V305731 02149000 TM NICSTAT,NICREAD IS SCREEN IN READ STATE @V305731 02150000 BO RGFREAD YES, GET CCWS FOR READ STATE @V305731 02151000 TM NICSTAT,NICRUNN IS SCREEN IN RUNNING STATE @V305731 02152000 BO RGFRUN YES, GET CCWS FOR RUNNING STATE @V305731 02153000 TM NICSTAT,NICHOLD IS SCREEN IN HOLD STATE @V305731 02154000 BO RGFHOLD YES, GET CCWS FOR HOLD STATE @V305731 02155000 BAL R7,RSTTMR GO RESET ACTIVE TIMER REQUEST @V305731 02156000 BAL R3,CRTMORE GET CCWS FOR MORE STATE @V305731 02157000 BR R4 RETURN @V305731 02158000 RGFREAD EQU * HANDLE READ STATUS @V305731 02159000 L R6,NICQPNT GET NEXT CONTASK @V305731 02160000 BAL R3,READSUB BUILD CCWS FOR READ STATE @V305731 02161000 BR R4 RETURN @V305731 02162000 RGFRUN EQU * HANDLE RUNNING STATUS @V305731 02163000 BAL R3,CRTRUN GET CCWS FOR RUNNING STATE @V305731 02164000 BR R4 RETURN @V305731 02165000 RGFHOLD EQU * HANDLE HOLD STATE @V305731 02166000 BAL R3,CRTHOLD GET CCWS FOR HOLD STATE @V305731 02167000 BR R4 RETURN @V305731 02168000 SPACE 1 02169000 CRTRUN EQU * SET UP CCWS FOR RUNNING STATE @V305731 02170000 BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 02171000 MVI NICSTAT,NICNTRL+NICRUNN SET RUNNING & CONTROL @V305731 02172000 MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 02173000 LA R1,WRT77CCW GET ADDRESS OF RUNNING CCWS @V305731 02174000 BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 02175000 MVI CONCCW1+7,RUN77L+3 SET RUNNING CCW COUNT @V305731 02176000 LA R1,RUN77L-1 GET LENGTH OF RUNNING DATA @V305731 02177000 LA R2,RUN3277 GET ADDRESS OF RUNNING DATA @V305731 02178000 BAL R7,DATAMOVE MOVE DATA INTO CONTASK BUFFER @V305731 02179000 BR R3 RETURN @V305731 02180000 SPACE 1 02181000 CRTMORE EQU * SET UP CCWS FOR MORE STATE @V305731 02182000 BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 02183000 MVI NICSTAT,NICMORE+NICNTRL INDICATE MORE & CONTROL @V305731 02184000 MVI CONLABEL,RTNSTMOR SET RETURN TO MORE SECTION @V305731 02185000 LA R1,WRT77CCW GET ADDRESS OF MORE CCWS @V305731 02186000 BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 02187000 MVI CONCCW1+7,MOR77L+4 SET MORE CCW COUNT @V305731 02188000 LA R1,MOR77L GET LENGTH OF MORE DATA @V305731 02189000 LA R2,MOR3277 GET ADDRESS OF MORE DATA @V305731 02190000 BAL R7,DATAMOVE MOVE DATA INTO CONTASK BUFFER @V305731 02191000 BR R3 RETURN @V305731 02192000 SPACE 1 02193000 CRTHOLD EQU * SET UP CCWS FOR HOLD STATE @V305731 02194000 BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 02195000 MVI NICSTAT,NICHOLD+NICNTRL INDICATE HOLD & CONTROL @V305731 02196000 MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 02197000 LA R1,WRT77CCW GET ADDRESS OF HOLD CCWS @V305731 02198000 BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 02199000 MVI CONCCW1+7,HLD77L+4 SET HOLD CCW COUNT @V305731 02200000 LA R1,HLD77L GET LENGTH OF HOLD DATA @V305731 02201000 LA R2,HLD3277 GET ADDRESS OF HOLD DATA @V305731 02202000 BAL R7,DATAMOVE MOVE DATA INTO CONTASK BUFFER @V305731 02203000 BR R3 RETURN @V305731 02204000 SPACE 1 02205000 NOTACPT EQU * CCWS FOR NOT ACCEPTED STATUS @V305731 02206000 BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 02207000 MVI CONLABEL,RTNSETRJ SET RETURN TO REJECT SECTION @V305731 02208000 LA R1,WRT77CCW GET ADDRESS OF NOT ACCEPTED CCWS @V305731 02209000 BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 02210000 MVI CONCCW1+7,NAC77L+4 SET NOT ACCEPTED CCW COUNT @V305731 02211000 LA R1,NAC77L GET LENGTH OF NOT ACCEPTED DATA @V305731 02212000 LA R2,NAC3277 GET ADDRESS OF NOT ACCEPTED DATA @V305731 02213000 BAL R7,DATAMOVE MOVE DATA INTO CONTASK'S BUFFER @V305731 02214000 BR R3 RETURN @V305731 02215000 SPACE 1 02216000 GRFCRD EQU * SET UP CCWS TO CLEAR INPUT AREA @V305731 02217000 BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 02218000 MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 02219000 LA R1,WRT77CCW GET ADDRESS OF CLEAR INPUT CCWS @V305731 02220000 BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 02221000 MVI CONCCW1+7,CRD77L+4 SET CLEAR AREA CCW COUNT @V305731 02222000 LA R1,CRD77L GET LENGTH OF CLEAR AREA DATA @V305731 02223000 TM NICSTAT,NICMORE+NICHOLD MORE OR HOLD STATUS?? @VA05100 02224210 BZ GRFCRD1 NO, RESET STATUS TO RUNNING @VA04374 02224400 S R1,F20 ADJUST LENGTH TO LEAVE STAT AS IS@VA04374 02224600 GRFCRD1 LA R2,CRD3277 GET @ OF CLEAR AREA DATA @VA04374 02224800 BAL R7,DATAMOVE MOVE DATA INTO CONTASK'S BUFFER @V305731 02225000 BR R3 RETURN @V305731 02226000 SPACE 1 02227000 READSUB EQU * SET UP CCWS FOR READ STATE @V305731 02228000 LR R2,R6 SAVE CONTASK POINTER @V305731 02229000 BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 02230000 LA R1,WRT77CCW GET CCWS FOR READ STATE @V305731 02231000 BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 02232000 LR R15,R2 GET ORIGINAL CONTASK POINTER @V305731 02233000 MVI CONCCW1+7,CPR77L+4 SET READ CCW COUNT @V305731 02234000 LA R1,CPR77L GET LENGTH OF READ DATA @V305731 02235000 LA R2,CPR3277 GET ADDRESS OF READ DATA @V305731 02236000 BAL R7,DATAMOVE MOVE DATA INTO BUFFER AREA @V305731 02237000 TM CONPARM-CONTASK(R15),INHIBIT NON-DISPLAY DATA @V305731 02238000 BZ BYPATTR NO, BYPASS SETTING ATTRIBUTE BYTE@VM03133 02239000 MVI CONDATA+1,ATTR457 SET NON-DISPLAY ATTRIBUTE BYTE@V305731 02240000 BYPATTR EQU * CHECK FOR VIRTUAL MACHINE @VM03133 02241000 TM CONPARM-CONTASK(R15),VMGENIO A VIRTUAL MACH READ@V305731 02242000 BZ VMREADBF NO, BYPASS VM READ DATA @VM03133 02243000 MVC CONDATA+7(7),VMREADS MOVE VM READ INTO BUFFER @V305731 02244000 VMREADBF EQU * SETUP CONTROL INFORMATION @VM03133 02245000 MVI NICSTAT,NICREAD+NICNTRL INDICATE READ & CONTROL @V305731 02246000 OI CONSTAT-CONTASK(R15),CONESCP CONTASK PROCESSED @V305731 02247000 MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 02248000 BR R3 RETURN @V305731 02249000 SPACE 1 02250000 SELECTCW EQU * SET UP CCWS TO SELECT A STATION @V305731 02251000 TM RDEVFTR,FTRDIAL DIAL UP FEATURE INDICATED? @V346931 02251100 BNO NONSW NO, SET UP ADDRESSING CCWS @V346931 02251200 MVC BSCSCCW1(THREECCW),BIDCCW LINE BID CCWS @VA05230 02251350 B JOINSEL SET UP BUFFER FOR RESPONSE @V346931 02251400 NONSW EQU * SET UP ADDRESSING CCSW @V346931 02251500 MVC BSCSCCW1(8*3),WRITSEL CCW STRING FOR ADDRESSING @V305731 02252000 LA R1,BSCSEL GET ADDRESS OF SELECTION ENTRY @V305731 02253000 STCM R1,7,BSCSCCW2+1 SAVE ADDRESS OF SELECT ENTRY @V305731 02254000 ICM R1,10,NICSELT GET ADDRESSING CHARACTERS @V305731 02255000 ICM R1,5,NICSELT SET UP DOUBLE ADDRESSING CHARS. @V305731 02256000 STCM R1,15,BSCSEL SAVE ADDRESS OF REMOTE STATION @V305731 02257000 MVI BSCSEL+4,ENQ SET UP ADDRESSING ENTRY @V305731 02258000 JOINSEL EQU * ENTRY POINT FOR SW LINE HANDLING @V346931 02258500 LA R1,BSCRESP GET RESPONSE BUFFER POINTER @V305731 02259000 STCM R1,7,BSCSCCW3+1 SAVE ADDRESS IN CCW @V305731 02260000 XC BSCRESP(2),BSCRESP CLEAR RESPONSE BUFFER @V305731 02261000 MVC BSCRCVD(4),RGFACK0 EXPECTED RECVD & SEND RESP. @V305731 02262000 MVC BSCSPTR(4),IOBCAW SAVE PTR. TO WRITE CCW STRING @V305731 02263000 MVI IOBMISC2,IBBSELA SET SELECTION INDICATOR @V305731 02264000 LA R1,BSCSCCW1 GET START OF SELECTION CCW STRING@V305731 02265000 ST R1,IOBCAW SET UP CAW FIELD @V305731 02266000 BR R3 RETURN @V305731 02267000 SPACE 1 02268000 SPOLLCW EQU * SET UP CCWS TO DO A SPECIFIC POLL@V305731 02269000 OI IOBMISC2,IBBSPOLL SET SPECIFIC POLL INDICATOR @V305731 02270000 B POLLBULD GO SET UP BSCBLOK FOR POLLING @V305731 02271000 SPACE 1 02272000 GPOLLCW EQU * SET UP CCWS FOR GENERAL POLLING @V305731 02273000 L R9,RDEVNICL GET ADDR OF CONTROL UNIT NICBLOK @V305731 02274000 MVI IOBMISC2,IBBREAD SET FLAG FOR GENERAL POLLING @V305731 02275000 POLLBULD EQU * SET UP THE BSCBLOK FOR POLLING @V305731 02276000 TM RDEVFTR,FTRDIAL DIAL UP FEATURE INDICATED? @V346931 02276100 BNO POLLCONT NO, SET UP POLLING CCWS @V346931 02276200 MVC BSCPCCW1(TWOCCW),S3275EOT WRITE EOT / READ @V346931 02276300 LA R1,BSCRESP ADDRESS OF RESPONSE BUFFER @V346931 02276400 STCM R1,B'0111',BSCPCCW2+1 INTO CCW @V346931 02276500 B JOINPOLL READ BUFFER @V346931 02276600 POLLCONT EQU * NON-DIAL POLL OPERATION CONTINUE @V346931 02276700 MVC BSCPCCW1(8*4),POLCCW GENERAL POLLING CCW STRING @V305731 02277000 LA R1,BSCREAD GET READ BUFFER ADDRESS @V305731 02278000 STCM R1,7,BSCPCCW4+1 SAVE ADDRESS OF READ BUFFER @V305731 02279000 LA R1,BSCSEL GET ADDRESS OF POLLING ENTRY @V305731 02280000 STCM R1,7,BSCPCCW2+1 SAVE ADDRESS OF POLL ENTRY @V305731 02281000 ICM R1,10,NICPOLL GET POLLING CHARACTERS @V305731 02282000 ICM R1,5,NICPOLL SET UP DOUBLE POLLING CHARACTERS @V305731 02283000 STCM R1,15,BSCSEL SAVE ADDRESS OF REMOTE STATION @V305731 02284000 MVC BSCSEL+4(3),RGFINDEQ SET UP ENQ, INDEX VAL & EOT@VA03474 02285100 JOINPOLL EQU * CLEAR READ BUFFER @V346931 02285150 XC BSCRESP(256),BSCRESP CLEAR READ BUFFER @V346931 02286100 XC BSCRESP+256(L'BSCREAD+L'BSCRESP-256),BSCRESP+256 X02286700 THIS SUPPORT CODE IS FOR THE ABOVE LINE @V346931 02287300 MVC BSCRCVD(4),RGFACK0 SET RECEIVING & SENDING RESP @V305731 02288000 LA R1,BSCPCCW1 GET START OF POLLING CCW STRING @V305731 02289000 BR R3 RETURN @V305731 02290000 SPACE 1 02291000 BLD77TAB EQU * SET UP CCWS FOR TAB FUNCTION @V305731 02292000 BAL R7,CTLTASKB GET STORAGE FOR CONTROL CONTASK @V305731 02293000 MVI CONLABEL,RTNRDEXT SET RETURN TO STATUS SECTION @V305731 02294000 LA R1,WRT77CCW GET ADDRESS OF TAB FUNCTION CCWS @V305731 02295000 BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 02296000 MVI CONCCW1+7,X'13' SET TAB CCW COUNT @V305731 02297000 STCM R4,7,CONCCW1+1 SAVE DATA ADDRESS @V305731 02298000 BR R3 RETURN @V305731 02299000 SPACE 1 02300000 BLD77IDS EQU * CCWS TO SEND PFNN UNDEFINED MSG. @V305731 02301000 ST R7,BALRSAVE SAVE RETURN ADDRESS @VA07391 02302100 BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 02303000 MVI CONLABEL,RTNRDEXT SET RETURN TO STATUS SECTION @V305731 02304000 MVC CONCCW1(8*2),WIN77CCW GET CCWS TO WRITE MESSAGE @V305731 02305000 MVC CONCCW3(8),READCCW1 GET READ CCW FOR RESPONSE @V305731 02306000 LA R1,BSCRESP GET RESPONSE BUFFER ADDRESS @V305731 02307000 STCM R1,7,CONCCW3+1 SAVE RESPONSE BUFFER ADDR IN CCW @V305731 02308000 STCM R4,7,CONCCW2+1 SAVE DATA ADDRESS OF MESSAGE @V305731 02309000 STH R3,CONCCW2+6 SAVE DATA COUNT @V305731 02310000 LA R3,CONCCW4+1 GET START OF DATA & MESSAGE @V305731 02311000 STCM R3,7,CONCCW1+1 SAVE START OF DATA IN CCW @V305731 02312000 LA R1,WIN77DL GET LENGTH OF DATA DATA @V305731 02313000 LA R2,WIN77D GET ADDRESS OF DATA DATA @V305731 02314000 BAL R7,DATMOVE MOVE DATA INTO BUFFER AREA @V305731 02315000 L R7,BALRSAVE RESTORE RETURN ADDRESS @VA07391 02316100 BR R7 RETURN @V305731 02317000 SPACE 2 02317100 RSWVMS DS 0H @V407511 02317110 L R1,NICUSER LOAD ADDR NEW VMBLOK @V407511 02317120 RSWVMS1 DS 0H @V407511 02317130 SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGING @V4M0193 02317140 BR R7 RETURN TO CALLER @V4M0193 02317150 SPACE 2 @V407511 02317160 RSWVMU DS 0H @V407511 02317170 L R1,ASYSVM LOAD ADDR NEW VMBLOK @V407511 02317180 RSWVMU1 DS 0H @V407511 02317190 SWTCHVM OPT=UNLOCK SWITCH VMBLOK CHARGING @V4M0193 02317200 BR R7 RETURN TO CALLER @V4M0193 02317210 EJECT 02318000 * THE EXECUTE INSTRUCTION USED THE FOLLOWING INSTRUCTIONS 02319000 TRANSLAT TR 0(*-*,R4),0(R1) TRANSLATE TO UPPER CASE FOR CF @V305731 02320000 TROPUT TR 0(*-*,R2),0(R7) EXECUTED TRANSLATE OUTPUT @V305731 02321000 MOVEDATA MVC 0(*-*,R1),0(R4) MOVE DATA INTO BUFFER @V305731 02322000 MVCRT MVC BUFFER(*-*),0(R4) EXECUTED MOVE PF DATA @V305731 02324000 DATA MVC CONCCW4+4(*-*),0(R2) MOVE DATA INTO CONTASK @V305731 02325000 SPACE 1 02327000 * MESSAGE HANDLER INFORMATION 02328000 DS 0F @V305731 02329000 MSGHEAD DC C'RGA',X'00' SET UP HEADER FOR ERROR MESSAGE @V305731 02330000 MSGPARM DC X'B8C90000' PARM FIELD FOR BISYNC LINE MSG. @V305731 02331000 MSGPARM1 DC X'F8C90000' PARM FIELD FOR STATION MSG. @V305731 02332000 PFRJM DC C'* PFNN UNDEFINED',X'03' REJECT MESSAGE @V305731 02333000 RJL EQU *-PFRJM @V305731 02334000 CC3 DC C' CC=3' DATA FOR MSG 455 @VA13518 02334300 CMDRJ DC C' CMD REJECT' DATA FOR MSG 455 @VA13518 02334600 VM370 DC CL2'VM' CONSTANT FOR WRITING 'VM READ' @VA09707 02335100 SPACE 1 02336000 * STORAGE FOR DATA LINK CONTROL CHARACTERS 02337000 RGFEOT DC AL1(EOT) END OF TRANSMISSION CHARACTER @V305731 02338000 RGFNAK DC AL1(NAK) NEGATIVE RESPONSE CHARACTER @V305731 02339000 RGFENQ DC AL1(ENQ) INQUIRY CHARACTER @V305731 02340000 RGFSONL DC AL1(SOH,X'6C') HEADER FOR NON-TEXT MSG. (SOH %) @V305731 02341000 RGFWACK DC AL2(WACK) WAIT ACKNOWLEDGE CHARACTER @V305731 02342000 RGFRVI DC AL2(RVI) REVERSE INTERRUPT CHARACTER @V305731 02343000 RGFACK0 DC AL2(ACK0) POSITIVE ACKNOWLEDGE 0 CHARACTER @V305731 02344000 RGFACK1 DC AL2(ACK1) POSITIVE ACKNOWLEDGE 1 CHARACTER @V305731 02345000 RGFDLEOT DC AL1(DLE,EOT) BREAK SWITCHED CONNECTION @V346931 02345100 DLEOTLN EQU 2 LENGTH OF DLE EOT RESPONSE @V346931 02345200 SPACE 1 02346000 * TIME OF DAY CLOCK VALUES FOR STATUS AND GENERAL POLLING 02347000 DS 0D @V305731 02348000 TMRGPOLL DC X'0000000300000000' INTERVAL IN SECS FOR GPOLL @V305731 02349000 TMR60VAL DC X'0000003A00000000' 60 SECONDS TIMER FOR MORE @V305731 02350000 TMR03VAL DC X'0000000300000000' 3 SECS. TIMER FOR NOT ACPTED@V305731 02351000 SPACE 1 02352000 * CCWS FOR POLLING AND SELECTING REMOTE STATIONS 02353000 DS 0D @V305731 02354000 WRITSEL DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V305731 02355000 DC X'01',AL3(0),AL1(SILI+CC,X'03'),AL2(5) @V305731 02356000 DC X'02',AL3(0),AL1(SILI,X'05'),AL2(2) @V305731 02357000 SPACE 02358000 POLCCW DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V305731 02359000 DC X'09',AL3(0),AL1(SILI+CC,X'03'),AL2(7) @VA03474 02360100 DC X'03',AL3(0),AL1(SILI,X'07'),AL2(1) @V305731 02361000 ETBREAD DC X'02',AL3(0),AL1(SILI,X'0A'),AL2(BSCSIZE1) @VM03043 02362000 SPACE 02363000 SPACE 2 @V346931 02363050 * INITIAL BIDDING CCWS FOR SWITCHED LINE @V346931 02363100 BIDCCW DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V346931 02363150 DC X'01',AL3(RGFENQ),AL1(SILI+CC,X'03'),AL2(1) @V346931 02363200 DC X'02',AL3(0),AL1(SILI,X'05'),AL2(2) @V346931 02363250 THREECCW EQU (8*3) LENGTH OF THREE CCWS @VA05230 02363275 SPACE 1 @V346931 02363300 * SELECTION (PSUEDO POLLING) CCWS FOR SWITCHED LINE @V346931 02363350 S3275EOT DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V346931 02363400 DC X'02',AL3(0),AL1(SILI,X'0D'),AL2(2) @V346931 02363450 TWOCCW EQU (8*2) LENGTH OF TWO CCWS @V346931 02363500 SPACE 1 02363550 * READ CONTINUE CCW FOR SWITCHED LINE @V346931 02363600 SW3275RD DC X'01',AL3(RGFACK0),AL1(SILI+CC,X'09'),AL2(2) @V346931 02363650 DC X'02',AL3(0),AL1(SILI,X'0A'),AL2(BSCSIZE1) @V346931 02363700 SPACE 1 02363750 WRT77CCW DC X'01',AL3(0),AL1(SILI+CC,X'10'),AL2(0) @VA13944 02364100 READCCW1 DC X'02',AL3(0),AL1(SILI,X'0B'),AL2(2) @V305731 02365000 UNEPTCCW DC X'02',AL3(0),AL1(SILI+SKIP,X'08'),AL2(X'100') @VA13944 02366100 RESETEOT DC X'01',AL3(RGFEOT),AL1(SILI,X'09'),AL2(1) @V305731 02367000 * DISCONNECT STATION- DISABLE LINE CCWS FOR SWITCHED LINE @V346931 02367100 BKCONCCW DC X'01',AL3(RGFDLEOT),AL1(SILI,X'0E'),AL2(2) @V346931 02367200 DISABLE DC X'2F',AL3(0),AL1(SILI,X'00'),AL2(1) @V346931 02367300 SPACE 1 02367400 RSRVICCW DC X'01',AL3(RGFRVI),AL1(SILI+CC,X'06'),AL2(2) @V305731 02368000 RSNAKCCW DC X'01',AL3(RGFNAK),AL1(SILI+CC,X'06'),AL2(1) @V305731 02369000 RSENQCCW DC X'01',AL3(RGFENQ),AL1(SILI+CC,X'06'),AL2(1) @V305731 02370000 RSACKCCW DC X'01',AL3(RGFACK1),AL1(SILI+CC,X'06'),AL2(2) @V305731 02371000 TICCCW DC X'08',AL3(0),AL1(SILI,X'00'),AL2(1) @V305731 02372000 WIN77CCW DC X'01',AL3(0),AL1(SILI+CD,X'10'),AL2(WIN77DL+3) @VA13944 02373000 DC X'00',AL3(0),AL1(SILI+CC,X'10'),AL2(0) @VA13944 02374000 SPACE 1 02375000 * 3270 REMOTE DATA AND STATUS MESSAGES 02376000 COPY3277 DC AL1(X'7B',X'40') @VA08850 02377500 COPY77L EQU *-COPY3277 @V305731 02378000 SPACE 1 02379000 COPY3275 DC AL1(WCC8,SBA,X'40',X'40',IC) @V305731 02380000 COPY75L EQU *-COPY3275 @V305731 02381000 SPACE 1 02382000 WIN77D DC AL1(WCC6,SBA,X'5B',X'5F') @V305731 02383000 DC AL1(SF,ATTR7,IC,EUA,X'5D',X'6B') @V305731 02384000 DC AL1(SBA,X'5B',X'60') @V305731 02385000 WIN77DL EQU *-WIN77D @V305731 02386000 SPACE 02387000 HLD3277 DC AL1(WCC3,SBA,X'5D',X'6B',SF,ATTR2) @VA07171 02388100 HLDSTAT DC CL20'HOLDING' @V305731 02389000 HLD77L EQU *-HLD3277 @V305731 02390000 SPACE 02391000 MOR3277 DC AL1(WCC3,SBA,X'5D',X'6B',SF,ATTR2) @VA07171 02392100 MORSTAT DC CL20'MORE...' @V305731 02393000 MOR77L EQU *-MOR3277 @V305731 02394000 SPACE 02395000 NAC3277 DC AL1(WCC4,SBA,X'5D',X'6B',SF,ATTR2) @VA07171 02396100 NACSTAT DC CL20'NOT ACCEPTED' @V305731 02397000 NAC77L EQU *-NAC3277 @V305731 02398000 SPACE 02399000 CRD3277 DC AL1(WCC6,SBA,X'5B',X'5F') @V305731 02400000 DC AL1(SF,ATTR7,IC,RA,X'5D',X'6B',X'00') @V305731 02401000 DC AL1(SF,ATTR2) @V305731 02402000 DC CL20'RUNNING' @VA04374 02402500 CRD77L EQU *-CRD3277 @V305731 02403000 SPACE 02404000 RUN3277 DC AL1(WCC6,SBA,X'5B',X'5F',SF,ATTR7) @V305731 02405000 DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 02406000 RUNSTAT DC CL20'RUNNING',AL1(ETX) @V305731 02407000 RUN77L EQU *-RUN3277 @V305731 02408000 SPACE 02409000 CPR3277 DC AL1(WCC6,SBA,X'5B',X'5F',SF,ATTR7) @V305731 02410000 DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 02411000 DC CL20'CP READ' @V305731 02412000 CPR77L EQU *-CPR3277 @V305731 02413000 SPACE 02414000 VMREADS DC CL7'VM READ' @V305731 02415000 SPACE 1 02416000 CLR3277 DC AL1(WCC6,SBA,X'40',X'40') @V305731 02417000 DC AL1(RA,X'C7',X'5F',X'00') @VA08129 02418100 DC AL1(RA,X'4E',X'7F',X'00') @VA08129 02418200 DC AL1(RA,X'D6',X'5F',X'00') @VA08129 02418300 DC AL1(RA,X'5B',X'5F',X'00') @VA08129 02418400 DC AL1(SF,ATTR7,IC) @V305731 02419000 DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 02420000 DC CL20'RUNNING' @V305731 02421000 CLR77L EQU *-CLR3277 @V305731 02422000 EJECT 02423000 SPACE 02424000 * RETURN INDEX VALUE FOR 3270 REMOTE SUPPORT 02425000 RTNNOCTL EQU X'00' RETURN TO GET NEXT CONTASK @V305731 02426000 RTNSRTRD EQU X'04' RETURN TO READ SECTION @V305731 02427000 RTNLGTST EQU X'08' RETURN TO LOGOFF USER @V305731 02428000 RTNRFCFM EQU X'0C' RETURN TO CONS. FUNCTION PROCESS @V305731 02429000 RTNSTMOR EQU X'10' RETURN TO MORE SECTION @V305731 02430000 RTNSETRJ EQU X'14' RETURN TO REJECT SECTION @V305731 02431000 RTNCPNAT EQU X'18' RETURN TO WRITE STATUS SECTION @V305731 02432000 RTNLOGOF EQU X'1C' RETURN TO LOGOFF USER SECTION @V305731 02433000 RTNBLDVM EQU X'20' RETURN TO BUILD VMBLOK SECTION @V305731 02434000 RTNFMTDN EQU X'24' RETURN TO FORMATS FINISH SECTION @V305731 02435000 RTNRETBF EQU X'28' RETURN TO WRITE COMPLETED SECTION@V305731 02436000 RTNRDEXT EQU X'2C' RETURN TO RELEASE READ BUFFER @V305731 02437000 RTNRVIRP EQU X'30' RETURN TO RVI RESPONSE SECTION @V305731 02438000 SPACE 1 02439000 * READ/WRITE OPERATION TYPES 02440000 IBBSELA EQU X'80' ADDRESSING/SELECTING A STATION @V305731 02441000 IBBWRITE EQU X'40' WRITE DATA TO A REMOTE STATION @V305731 02442000 IBBREAD EQU X'20' GENERAL POLLING OF STATIONS @V305731 02443000 IBBSPOLL EQU X'10' SPECIFIC POLLING TO A STATION @V305731 02444000 SPACE 1 02445000 * DATA-LINK CONTROL CHARACTERS FOR 3270 REMOTE SYSTEM 02446000 SOH EQU X'01' START OF HEADING @V305731 02447000 STX EQU X'02' START OF TEXT @V305731 02448000 ETX EQU X'03' END OF TEXT @V305731 02449000 DLE EQU X'10' DATA LINK ESCAPE @V346931 02449100 ETB EQU X'26' END OF BLOCK @V305731 02450000 ESC EQU X'27' ESCAPE @V305731 02451000 EOT EQU X'37' END OF TRANSMISSION @V305731 02452000 ENQ EQU X'2D' ENQUIRY @V305731 02453000 NAK EQU X'3D' NEGATIVE ACKNOWLEDGMENT @V305731 02454000 WACK EQU X'106B' WAIT BEFORE TRANSMIT @V305731 02455000 RVI EQU X'107C' REVERSE INTERRUPT @V305731 02456000 ACK0 EQU X'1070' EVEN ACKNOWLEDGE @V305731 02457000 ACK1 EQU X'1061' ODD ACKNOWLEDGE @V305731 02458000 SPACE 02459000 * 3270 REMOTE SYSTEM COMMAND CODES 02460000 WRTCMD EQU X'F1' WRITE COMMAND CODE @V305731 02461000 EWRTCMD EQU X'F5' ERASE/WRITE COMMAND CODE @V305731 02462000 COPYCMD EQU X'F7' COPY COMMAND CODE @V305731 02463000 SPACE 1 02464000 * 3270 DISPLAY STATION ORDERS 02465000 SF EQU X'1D' START OF FIELD CONTROL @V305731 02466000 SBA EQU X'11' SET BUFFER ADDRESS @V305731 02467000 IC EQU X'13' INSERT CURSOR @V305731 02468000 RA EQU X'3C' REPEAT TO ADDRESS (CHAR) @V305731 02469000 EUA EQU X'12' ERASE UNPROTECTED TO ADDRESS @V305731 02470000 SPACE 1 02471000 * 3270 WRITE CONTROL CHARACTERS 02472000 WCC3 EQU X'C2' RESTORE KEYBOARD @VA07171 02472400 WCC4 EQU X'C6' RESTORE KEYBOARD, ALARM @VA07171 02472800 WCC5 EQU X'C5' WRITE CONTROL CHAR TO SOUND ALARM@VM03116 02473000 WCC6 EQU X'C3' W.C.C. TO RESTORE KEYBOARD @VM03116 02474000 WCC56 EQU X'C7' W.C.C. TO SOUND ALARM & RES. KEY.@VM03116 02475000 WCC8 EQU X'F8' W.C.C. TO PRT FOR 80-CHAR LINE @VM03116 02476000 ATTR2 EQU X'60' PROTECTED ATTRIBUTE CHARACTER @VM03116 02477000 ATTR7 EQU X'C1' MODIFIED DATA TAG ATTRIBUTE CHAR @VM03116 02478000 ATTR457 EQU X'4D' PROTECTED, NONDISPLAY & MOD. DATA@VM03116 02479000 NOMC DC X'10' DON'T ALLOW MONITOR CALL @VA09459 02479500 SPACE 02480000 * TABLE OF 3270 FUNCTION KEYS WITH INDEX TO KEYTBLP 02481000 KEYTBL DC X'7D00' ENTER @V305731 02482000 DC X'6D04' CLEAR @V305731 02483000 DC X'6E18' PA2 (CNCL) @V305798 02484000 DC X'6C08' PA1 @V305731 02485000 DC X'6B0C' PA3 @V305731 02486000 DC X'E610' CARD READER @V305731 02487000 PFNDX DC X'F114' PF01 @V305731 02488000 DC X'F214' PF02 @V305731 02489000 DC X'F314' PF03 @V305731 02490000 DC X'F414' PF04 @V305731 02491000 DC X'F514' PF05 @V305731 02492000 PF6NDX DC X'F614' PF06 @V305731 02493000 DC X'F714' PF07 @V305731 02494000 DC X'F814' PF08 @V305731 02495000 DC X'F914' PF09 @V305731 02496000 DC X'7A14' PF10 @V305731 02497000 DC X'7B14' PF11 @V305731 02498000 DC X'7C14' PF12 @V305731 02499000 DC X'C114' PF13 HRC101DK 02499070 DC X'C214' PF14 HRC101DK 02499140 DC X'C314' PF15 HRC101DK 02499210 DC X'C414' PF16 HRC101DK 02499280 DC X'C514' PF17 HRC101DK 02499350 DC X'C614' PF18 HRC101DK 02499420 DC X'C714' PF19 HRC101DK 02499490 DC X'C814' PF20 HRC101DK 02499560 DC X'C914' PF21 HRC101DK 02499630 DC X'4A14' PF22 HRC101DK 02499700 DC X'4B14' PF23 HRC101DK 02499770 DC X'4C14' PF24 HRC101DK 02499840 KEYLENG EQU (*-KEYTBL)/2 @V305731 02500000 SPACE 02501000 KEYTBLP DC A(RGA3) 00 INPUT DATA INVALID @VA13123 02502000 DC A(CLRKEY) 04 @V305798 02503000 DC A(PA1KEY) 08 @V305731 02504000 DC A(PA3KEY) 0C @V305731 02505000 DC A(RGA3) 10 CARD READER INVALID @VA13123 02506000 DC A(PFKEY) 14 @V305731 02507000 DC A(CNCLKEY) 18 @V305798 02508000 DC A(TESTREQ) 1C @VA09168 02508500 SPACE 02509000 NDXRGFFN EQU X'00' PROCESS INPUT DATA @VA13123 02509100 NDXRGF02 EQU X'04' PROCESS DATA IN BUFFER @VA13123 02509200 NDXRGFCC EQU X'08' GO DETERMINE ENTRY KEY @VA13123 02509300 NDXRGFDC EQU X'0C' GO PROCESS INPUT DATA @VA13123 02509400 SPACE 1 @VA13123 02509500 * TABLE OF TAB POSITIONS FOR 3270 PF TAB CAPABILITY 02510000 SPACE 02511000 TABTBL DC X'5B5F' @V305731 02512000 TAB01 DC X'5B605B615BE25BE35BE45BE55BE65BE75BE8' @V305731 02513000 TAB10 DC X'5BE95B6A5B6B5B6C5B6D5B6E5B6F5BF05BF15BF2' @V305731 02514000 TAB20 DC X'5BF35BF45BF55BF65BF75BF85BF95B7A5B7B5B7C' @V305731 02515000 TAB30 DC X'5B7D5B7E5B7F5C405CC15CC25CC35CC45CC55CC6' @V305731 02516000 TAB40 DC X'5CC75CC85CC95C4A5C4B5C4C5C4D5C4E5C4F5C50' @V305731 02517000 TAB50 DC X'5CD15CD25CD35CD45CD55CD65CD75CD85CD95C5A' @V305731 02518000 TAB60 DC X'5C5B5C5C5C5D5C5E5C5F5C605C615CE25CE35CE4' @V305731 02519000 TAB70 DC X'5CE55CE65CE75CE85CE95C6A5C6B5C6C5C6D5C6E' @V305731 02520000 TAB80 DC X'5C6F5CF05CF15CF25CF35CF45CF55CF65CF75CF8' @V305731 02521000 TAB90 DC X'5CF95C7A5C7B5C7C5C7D5C7E5C7F5D405DC15DC2' @V305731 02522000 TAB100 DC X'5DC35DC45DC55DC65DC75DC85DC95D4A5D4B5D4C' @V305731 02523000 TAB110 DC X'5D4D5D4E5D4F5D505DD15DD25DD35DD45DD55DD6' @V305731 02524000 TAB120 DC X'5DD75DD85DD95D5A5D5B5D5C5D5D5D5E5D5F5D60' @V305731 02525000 TAB130 DC X'5D615DE25DE35DE45DE55DE65DE7' @V305731 02526000 TABLST DC X'5B60' END WRAPS TO BEGINNING @V305731 02527000 SPACE 1 02528000 * SENSE STATUS FOR THE 3270 REMOTE STATION 02529000 STATDC EQU X'04' DATA CHECK @V305731 02530000 STATCC EQU X'02' CONTROL CHECK (TIMEOUT) @V305731 02531000 STATOC EQU X'01' OPERATION CHECK @V305731 02532000 STATEC EQU X'08' EQUIPMENT CHECK @V305731 02533000 INVREQ EQU X'10' INTERVENTION REQUIRED FLAG @V305731 02534000 STATCR EQU X'20' COMMAND REJECT @V305731 02535000 STATDE EQU X'02' DEVICE END @V305731 02536000 STATTC EQU X'01' TRANSMISSION CHECK (ONLY 3275) @V305731 02537000 SPACE 02537100 * SETTINGS FOR IOBMISC2+2 @VA13518 02537200 SPACE 02537300 COMRJ EQU X'80' COMMAND REJECT IN SENSE DATA @VA13518 02537400 DISA EQU X'20' INDICATOR TO SET RDEVDISA @VA13518 02537500 NONE EQU X'00' @VA13518 02537600 SPACE 1 02538000 RGFINDEQ DC AL1(ENQ,X'05',EOT) ENQ, INDEX & EOT - POLL ENTRY@VA03474 02539100 SYNCP DC AL1(STX,ESC,WRTCMD) BISYNC HEADER @V305731 02540000 LENADDR EQU 4 LENGTH OF TERM ADDR CHARS @V346931 02540100 RESPLEN EQU 6 LENGTH OF REPLY TO ADDRESSING @V346931 02540200 HDRSW EQU 1 LENGTH OF SWITCHED HEADER @V346931 02540300 HDRNSW EQU 3 LENGTH OF NON-SWITCHED HEADER @V346931 02540400 FLAGLNS EQU 2 LENGTH OF FLAG AREA @V346931 02540500 EJECT 02544000 LTORG @V305731 02545000 EJECT 02546000 COPY NETWORK @V305731 02547000 EJECT 02548000 COPY BSCBLOKS @V305731 02549000 EJECT 02550000 COPY TIMER @V305731 02551000 SPACE 2 02552000 EJECT 02558000 COPY DEVTYPES @V305731 02559000 EJECT 02560000 COPY EQU @V305731 02561000 EJECT 02562000 COPY VBLOKS @V305731 02563000 EJECT 02564000 COPY RBLOKS @V305731 02565000 EJECT 02566000 COPY CONBUF @V305731 02567000 EJECT 02568000 COPY IOBLOKS @V305731 02569000 EJECT 02570000 COPY IOER @V305731 02571000 EJECT 02572000 COPY VMBLOK @V305731 02573000 EJECT 02574000 COPY SAVE @V305731 02575000 EJECT 02576000 PSA @V305731 02577000 EJECT 02578000 COPY XINTBLOK @V305798 02579000 EJECT 02580000 END 02581000