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