MACRO ICD00010 ICDATA &GEN=FAKE ICD00020 AIF ('&GEN' EQ 'REAL').REALA ICD00030 ICDATA DSECT ICD00040 AGO .CONTA ICD00050 .REALA ANOP ICD00060 ICDATA DS 0D ICD00070 .CONTA ANOP ICD00080 *********************************************************************** ICD00090 * START OF ICATS COMMON DATA AREA * ICD00100 *********************************************************************** ICD00110 * ICD00120 *********************************************************************** ICD00130 * BALR ADDRESSES OF COMMON SUBROUTINES * ICD00140 *********************************************************************** ICD00150 LCLC &ICA ICD00160 AIF ('&GEN' EQ 'REAL').REALB ICD00170 &ICA SETC 'V' ICD00180 AGO .CONTB ICD00190 .REALB ANOP ICD00200 &ICA SETC 'A' ICD00210 .CONTB ANOP ICD00220 .* ICD00230 *********************************************************************** ICD00240 * COMMON SERVICE SUBROUTINES AVAILABLE TO ALL ROUTINES * ICD00250 *********************************************************************** ICD00260 AREADRCB DC V(READRCB) READ REQUEST CONTROL BLOCK FROM UTS ICD00270 AREADUTS DC V(READUTS) READ DATA FROM THE UTS ICD00280 AWRITUTS DC V(WRITEUTS) WRITE DATA TO THE UTS ICD00290 AINTUTS DC V(INTERUTS) PROVIDE AN ASYNCHRONOUS INTERRUPT TO A UTS ICD00300 ATERMIO DC V(DOTERMIO) DO AN I/O OPERATION TO A DIALED TERMINAL ICD00310 AMESSAGE DC V(MESSAGE) GIVE A MESSAGE TO A VM USER ID OR CONSOLE ICD00320 AACCESS DC V(ACCESS) FIND AND ACCESS A DISK ICD00330 AETTE DC V(ETTE) ENTER A TRACE TABLE ENTRY ICD00340 APARSE DC V(PARSE) PARSE A CHARACTER STRING INTO PARM0-PARM15 ICD00350 ACONHEX DC V(CONHEX) CONVERT A HEX EBCDIC PARM TO HEX ICD00360 ACONEHEX DC V(CONEHEX) CONVERT A NUMBER TO EBCDIC HEX CHARACTERS ICD00370 ACONDEC DC V(CONDEC) CONVERT A DECIMAL EBCDIC PARM TO HEX ICD00380 AREJECT DC V(REJECT) SEND A COMMAND REJECTION NOTICE ICD00390 DC F'0' EXTRA ICD00400 SPACE 3 ICD00410 DS 0D PSW'S MUST BE DOUBLEWORD ALIGNED ICD00420 WAITPSW DC X'FFE600000F' ENABLED WAIT STATE PSW POINTING ICD00430 DC &ICA.L3(DISPATCH) TO THE TOP OF THE DISPATCHER ICD00440 UTSCCW DS D CCW FOR ICATS I/O ICD00450 SMSGVMID DC CL8' ' VM USER ID OF THIS SMSG I'M SERVICING ICD00460 ABUFFER DC X'00030000' ADDRESS OF READ/WRITE BUFFER ICD00470 LBUFFER DC X'00030088' LENGTH OF READ/WRITE BUFFER ICD00480 * BIG ENOUGH TO READ 3 65535-BYTE RECORDS IN VARIABLE ICD00490 * LENGTH OUTPUT FORMAT (3 * ((65535+1) + 2)) + 2 + 128) ICD00500 REALBUFL DC X'00040087' MORE LENGTH FOR EXCESS RECORDS ICD00510 MYNODEID DS CL8 NODE ID OF THE VM SYSTEM I'M ON ICD00520 MYVMUID DS CL8 MY USER ID (ICATS) ICD00530 NETVMUID DS CL8 USER ID OF THE NET VIRTUAL MACHINE ICD00540 DS 10D RESERVED FOR FUTURE EXPANSION ICD00550 DS 0D THE SMSG BUFFER MUST BE DOUBLEWORD ALIGNED ICD00560 SMSGBUFF DS CL169 SMSG BUFFER AREA. CMS WILL PUT ICD00570 * ALL INCOMING SMSG'S HERE. ICD00580 SENSE0 DS X'00' SENSE BYTE FOR UTS ICD00590 CBSTART DC &ICA.(CBCHAIN) BEGINNING OF CONTROL BLOCKS ICD00600 TERM1ST DC F'0' FIRST TERMINAL CONTROL BLOCK ICD00610 CBFIRST DC F'0' FIRST UTS CONTROL BLOCK ICD00620 CBNEXT DC &ICA.(CBCHAIN) NEXT AVAILABLE BYTE IN CBCHAIN ICD00630 AIF ('&GEN' EQ 'REAL').REALC ICD00640 CBEND DS F USED TO CHECK FOR OUT OF MEMORY ICD00650 AGO .CONTC ICD00660 .REALC ANOP ICD00670 CBEND DC A(CBCHAIN+(1000*8)) USED TO CHECK FOR OUT OF MEMORY ICD00680 .CONTC ANOP ICD00690 SPACE 2 ICD00700 CURRSMSG DC &ICA.(SMSGBUFR) CURRENT (OR NEXT) SMSG TO PROCESS ICD00710 NEXTSMSG DC &ICA.(SMSGBUFR) SPOT FOR NEXT SMSG THAT COMES IN ICD00720 FRSTSMSG DC &ICA.(SMSGBUFR) ADDRESS OF FIRST SMSG BUFFER ICD00730 AIF ('&GEN' EQ 'REAL').REALD ICD00740 LASTSMSG DS F ADDRESS OF LAST SMSG BUFFER ICD00750 AGO .CONTD ICD00760 .REALD ANOP ICD00770 LASTSMSG DC A(SMSGBUFR+10*139-139) ADDRESS OF LAST SMSG BUFFER ICD00780 .CONTD ANOP ICD00790 SPACE 2 ICD00800 FIRSTTTE DC &ICA.(TRACETBL) ICD00810 AIF ('&GEN' EQ 'REAL').REALE ICD00820 LASTTTE DS F FIRST BYTE PAST END OF TRACE TABLE ICD00830 AGO .CONTE ICD00840 .REALE ANOP ICD00850 LASTTTE DC A(TRACETBL+512*16) FIRST BYTE PAST END OF TRACE TABLE ICD00860 .CONTE ANOP ICD00870 NEXTTTE DC &ICA.(TRACETBL) ALWAYS POINTING TO THE NEXT ICD00880 * AVAILABLE BYTE IN TRACE TABLE ICD00890 DS 0F ICD00900 CURRLEN DC CL2' ' CURRENT SMSG OR CONSOLE COMMAND LENGTH ICD00910 CURRTEXT DC CL130' ' CURRENT SMSG OR CONSOLE COMMAND TEXT ICD00920 SPACE 3 ICD00930 * ICD00940 ALL EQU X'FF' USED TO TURN OFF BITS ICD00950 * LIKE THIS --> NI FLAGA,ALL-TRACE ICD00960 DISPTTE DC AL1(DISPTTEE-*-1) START OF DISPATCHER TRACE TABLE ENTRY ICD00970 DISPTYPE DS CL7 TYPE OF DISPATCH CALL (CONSOLE, UTS, OR SMSG) ICD00980 FLAGA DC X'00' ICATS PROGRAM FLAG ICD00990 UTSINT EQU X'80' A UTS MACHINE HAS REQUESTED SERVICE ICD01000 ENDPGM EQU X'40' TIME TO QUIT AFTER THIS COMMAND ICD01010 TERMINT EQU X'08' WE'VE GOTTEN A TERMINAL INTERRUPT ICD01020 * ICD01030 FLAGB DC X'00' ANOTHER ICATS PROGRAM FLAG ICD01040 CONSCMD EQU X'80' I'M SERVICING A CONSOLE COMMAND ICD01050 SMSGCMD EQU X'40' I'M SERVICING AN SMSG COMMAND ICD01060 UTSCMD EQU X'20' I'M SERVICING A UTS COMMAND ICD01070 * ICD01080 FLAGC DC X'00' YET ANOTHER ICATS PROGRAM FLAG ICD01090 TRACEMOD EQU X'80' TRACE MODE - ENTER TRACE TABLE ICD01100 * ENTRIES IF THIS BIT IS ON ICD01110 INETTE EQU X'40' WE ARE IN THE ETTE ROUTINE ICD01120 NORESCMD EQU X'20' THIS IS A NON-RESIDENT COMMAND ICD01130 * (I.E. YOU MUST RESTORE LOADER COUNT) ICD01140 FAKEINT EQU X'10' THIS IS A FAKE UTS INTERRUPT ICD01150 * ICD01160 TEST0108 DC X'00' ICATS TEST FLAGS 1 - 8 ICD01170 TEST1 EQU X'80' ICD01180 TEST2 EQU X'40' ICD01190 TEST3 EQU X'20' ICD01200 TEST4 EQU X'10' ICD01210 TEST5 EQU X'08' ICD01220 TEST6 EQU X'04' ICD01230 TEST7 EQU X'02' ICD01240 TEST8 EQU X'01' ICD01250 * ICD01260 TEST0916 DC X'00' ICATS TEST FLAGS 9 - 16 ICD01270 TEST9 EQU X'80' ICD01280 TEST10 EQU X'40' ICD01290 TEST11 EQU X'20' ICD01300 TEST12 EQU X'10' ICD01310 TEST13 EQU X'08' ICD01320 TEST14 EQU X'04' ICD01330 TEST15 EQU X'02' ICD01340 TEST16 EQU X'01' ICD01350 * ICD01360 TEST1724 DC X'00' ICATS TEST FLAGS 17 - 24 ICD01370 TEST17 EQU X'80' ICD01380 TEST18 EQU X'40' ICD01390 TEST19 EQU X'20' ICD01400 TEST20 EQU X'10' ICD01410 TEST21 EQU X'08' ICD01420 TEST22 EQU X'04' ICD01430 TEST23 EQU X'02' ICD01440 TEST24 EQU X'01' ICD01450 * ICD01460 TEST2532 DC X'00' ICATS TEST FLAGS 25 - 32 ICD01470 TEST25 EQU X'80' ICD01480 TEST26 EQU X'40' ICD01490 TEST27 EQU X'20' ICD01500 TEST28 EQU X'10' ICD01510 TEST29 EQU X'08' ICD01520 TEST30 EQU X'04' ICD01530 TEST31 EQU X'02' ICD01540 TEST32 EQU X'01' ICD01550 * ICD01560 TEST3340 DC X'00' ICATS TEST FLAGS 33 - 40 ICD01570 TEST33 EQU X'80' ICD01580 TEST34 EQU X'40' ICD01590 TEST35 EQU X'20' ICD01600 TEST36 EQU X'10' ICD01610 TEST37 EQU X'08' ICD01620 TEST38 EQU X'04' ICD01630 TEST39 EQU X'02' ICD01640 TEST40 EQU X'01' ICD01650 * ICD01660 TEST4148 DC X'00' ICATS TEST FLAGS 41 - 48 ICD01670 TEST41 EQU X'80' ICD01680 TEST42 EQU X'40' ICD01690 TEST43 EQU X'20' ICD01700 TEST44 EQU X'10' ICD01710 TEST45 EQU X'08' ICD01720 TEST46 EQU X'04' ICD01730 TEST47 EQU X'02' ICD01740 TEST48 EQU X'01' ICD01750 * ICD01760 TEST4956 DC X'00' ICATS TEST FLAGS 49 - 56 ICD01770 TEST49 EQU X'80' ICD01780 TEST50 EQU X'40' ICD01790 TEST51 EQU X'20' ICD01800 TEST52 EQU X'10' ICD01810 TEST53 EQU X'08' ICD01820 TEST54 EQU X'04' ICD01830 TEST55 EQU X'02' ICD01840 TEST56 EQU X'01' ICD01850 * ICD01860 TEST5764 DC X'00' ICATS TEST FLAGS 57 - 64 ICD01870 TEST57 EQU X'80' ICD01880 TEST58 EQU X'40' ICD01890 TEST59 EQU X'20' ICD01900 TEST60 EQU X'10' ICD01910 TEST61 EQU X'08' ICD01920 TEST62 EQU X'04' ICD01930 TEST63 EQU X'02' ICD01940 TEST64 EQU X'01' ICD01950 * ICD01960 TEST6572 DC X'00' ICATS TEST FLAGS 65 - 72 ICD01970 TEST65 EQU X'80' ICD01980 TEST66 EQU X'40' ICD01990 TEST67 EQU X'20' ICD02000 TEST68 EQU X'10' ICD02010 TEST69 EQU X'08' ICD02020 TEST70 EQU X'04' ICD02030 TEST71 EQU X'02' ICD02040 TEST72 EQU X'01' ICD02050 * ICD02060 TEST7380 DC X'00' ICATS TEST FLAGS 73 - 80 ICD02070 TEST73 EQU X'80' ICD02080 TEST74 EQU X'40' ICD02090 TEST75 EQU X'20' ICD02100 TEST76 EQU X'10' ICD02110 TEST77 EQU X'08' ICD02120 TEST78 EQU X'04' ICD02130 TEST79 EQU X'02' ICD02140 TEST80 EQU X'01' ICD02150 * ICD02160 TEST8188 DC X'00' ICATS TEST FLAGS 81 - 88 ICD02170 TEST81 EQU X'80' ICD02180 TEST82 EQU X'40' ICD02190 TEST83 EQU X'20' ICD02200 TEST84 EQU X'10' ICD02210 TEST85 EQU X'08' ICD02220 TEST86 EQU X'04' ICD02230 TEST87 EQU X'02' ICD02240 TEST88 EQU X'01' ICD02250 * ICD02260 TEST8996 DC X'00' ICATS TEST FLAGS 88 - 96 ICD02270 TEST89 EQU X'80' ICD02280 TEST90 EQU X'40' ICD02290 TEST91 EQU X'20' ICD02300 TEST92 EQU X'10' ICD02310 TEST93 EQU X'08' ICD02320 TEST94 EQU X'04' ICD02330 TEST95 EQU X'02' ICD02340 TEST96 EQU X'01' ICD02350 * ICD02360 DS 0F ICD02370 THISUSER DS CL8 UTS USER ID I'M CURRENTLY SERVICING ICD02380 THISUTS DS F UTSCB ADDRESS OF THE UTS I'M NOW SERVICING ICD02390 THISDISK DS CL1 USER'S DISK ACCESS MODE I'M CURRENTLY DOING ICD02400 * ICD02410 CNOP 6,8 MAKE PARM0-PARM15 DOUBLEWORD ALIGNED ICD02420 DC X'00' ICD02430 PARMMSG DC X'80' PARM0-PARM15 LENGTH FOR MESSAGES ICD02440 PARM0 DC CL8' ' ICD02450 PARM1 DC CL8' ' ICD02460 PARM2 DC CL8' ' ICD02470 PARM3 DC CL8' ' ICD02480 PARM4 DC CL8' ' ICD02490 PARM5 DC CL8' ' ICD02500 PARM6 DC CL8' ' ICD02510 PARM7 DC CL8' ' ICD02520 PARM8 DC CL8' ' ICD02530 PARM9 DC CL8' ' ICD02540 PARM10 DC CL8' ' ICD02550 PARM11 DC CL8' ' ICD02560 PARM12 DC CL8' ' ICD02570 PARM13 DC CL8' ' ICD02580 PARM14 DC CL8' ' ICD02590 PARM15 DC CL8' ' ICD02600 DISPTTEE EQU * END OF DISPATCHER TRACE TABLE ENTRY ICD02610 * ICD02620 SMSGNTRY DSECT USED TO ADDRESS THE SMSG QUEUE (SMSGBUFR) ICD02630 SMSGUID DS CL8 SMSG VM USER ID (I.E. C'JASPER') ICD02640 SMSGLEN DS CL2 SMSG LENGTH (I.E. X'0004') ICD02650 SMSGTEXT DS CL129 SMSG TEXT (I.E. C'TRACE ON') ICD02660 * ICD02670 CBUTS DSECT LIST OF UTS MACHINES I'M SERVICING ICD02680 CBUTSUID DS CL8 UTS UNIQUE ID (EBCDIC) ICD02690 CBUTSFP DS F FORWARD POINTER TO NEXT CBUTS ICD02700 CBUTSUP DS F POINTER TO USER CB CHAIN ICD02710 CBUTSRAD DS H THIS UTS'S REAL ADDRESS ICD02720 CBUTSVAD DS H MY VIRTUAL ADDRESS FOR THIS UTS ICD02730 CBUTSFGA DS X'00' UTS FLAG A ICD02740 ONLINE EQU X'80' I'M VARIED ONLINE AND ATTACHED ICD02750 INTISIN EQU X'40' INTERRUPT IS IN ICD02760 IGOTIT EQU X'20' I'M GETTING SERVICED ICD02770 CBUTSFGB DS X'00' UTS FLAG B ICD02780 CBUTSCSW DS H LAST CSW STATUS FOR THIS UTS ICD02790 CBUTSRQS DS H NUMBER OF REQUESTS FROM THIS UTS ICD02800 CBUTSRD DS H NUMBER OF DATA READS FROM THIS UTS ICD02810 CBUTSWRT DS H NUMBER OF DATA WRITES TO THIS UTS ICD02820 CBUTSERR DS H NUMBER OF ERRORS ASSOCIATED WITH THIS UTS ICD02830 CBUTSDAT DS D DATE OF LAST INTERRUPT FROM THIS UTS ICD02840 CBUTSTIM DS D TIME OF LAST INTERRUPT FROM THIS UTS ICD02850 CBUTXTRA DS D EXTRA DOUBLEWORD FOR FUTURE EXPANSION ICD02860 * ICD02870 CBUSER DSECT USER LIST FOR THIS UTS ICD02880 CBUSRUID DS CL8 UTS USER ID (EBCDIC) ICD02890 CBUSRFP DS F FORWARD POINTER TO NEXT CBUSER ICD02900 CBUSRDP DS F POINTER TO USER DISK CB CHAIN ICD02910 CBUSRFGA DS X'00' USER FLAG A ICD02920 CBUSRFGB DS X'00' USER FLAG B ICD02930 CBUSRFGC DS X'00' USER FLAG C ICD02940 CBUSRFGD DS X'00' USER FLAG D ICD02950 CBUSRRQS DS H NUMBER OF REQUESTS FROM THIS USER ICD02960 CBUSRRD DS H NUMBER OF DATA READS FROM THIS USER ICD02970 CBUSRWRT DS H NUMBER OF DATA WRITES TO THIS USER ICD02980 CBUSRERR DS H NUMBER OF ERRORS ASSOCIATED WITH THIS USER ICD02990 CBUSRFID DS X'00' USER FILE ID FOR READING IN SOURCE FORMAT ICD03000 CBUSXTRA DS CL7 EXTRA 6 BYTES FOR FUTURE EXPANSION ICD03010 * ICD03020 CBDISK DSECT DISK DEFINITION FOR THIS UTS USER ICD03030 CBDSKMOD DS CL1 USER'S ACCESS MODE (EBCDIC) ICD03040 CBDSKDAD DS CL3 MY REAL MINIDISK ADDRESS (EBCDIC) ICD03050 CBDSKFP DS F POINTER TO NEXT CBDISK IN THIS CHAIN ICD03060 CBDSKRPW DS CL8 USER'S READ PASSWORD FOR THIS DISK ICD03070 CBDSKWPW DS CL8 USER'S WRITE PASSWORD FOR THIS DISK ICD03080 CBDSKFGA DS X'00' DISK FLAG A ICD03090 CBDSKFGB DS X'00' DISK FLAG B ICD03100 CBDSKFGC DS X'00' DISK FLAG C ICD03110 CBDSKFGD DS X'00' DISK FLAG D ICD03120 CBDSKRQS DS H NUMBER OF REQUESTS FROM THIS DISK ICD03130 CBDSKRD DS H NUMBER OF DATA READS FROM UTS FOR THIS DISK ICD03140 CBDSKWRT DS H NUMBER OF DATA WRITES FROM UTS FOR THIS DISK ICD03150 CBDSKERR DS H NUMBER OF ERRORS ASSOCIATED WITH THIS DISK ICD03160 CBDSXTRA DS D EXTRA DOUBLEWORD FOR FUTURE EXPANSION ICD03170 * ICD03180 CBTERM DSECT DIAL-ABLE TERMINAL CONTROL BLOCK ICD03190 CBTERMFP DS F POINTER TO NEXT CBTERM IN THIS CHAIN ICD03200 CBTERMST DS CL4 SESSION TERMINATE STRING FOR THIS TERMINAL ICD03210 CBTERMCS DS D CHANNEL STATUS WORD OF LAST INTERRUPT ICD03220 CBTERMHA DS X'0000' THIS TERMINAL'S VIRTUAL ADDRESS (HEX) ICD03230 CBTERMEA DS CL3 SAME THING IN EBCDIC ICD03240 CBTERMFA DS X'00' TERMINAL FLAG A ICD03250 MENUUP EQU X'80' MENU SCREEN IS NOW UP ICD03260 * INTISIN EQU X'40' INTERRUPT IS IN ICD03270 * IGOTIT EQU X'20' I'M GETTING SERVICED ICD03280 PLUGGED EQU X'10' HE'S LOGICALLY PLUGGED IN TO A UTS ICD03290 *AIDVALID EQU X'08' THE FIRST BYTE IN THE READ MODIFIED ICD03300 * BUFFER (THE AID BYTE) HAS NOT BEEN ICD03310 * PASSED ALONG TO THE UTS YET. ICD03320 DATAVALD EQU X'04' DATA IN READ MODIFIED BUFFER IS VALID ICD03330 TTLVALID EQU X'02' TERMINAL LINE LENGTH VALUE IS VALID ICD03340 CBTERMDC DS H NUMBER OF VALID BYTES IN READ MODIFIED BUFFER ICD03350 CBTERMUP DS F ADDRESS OF UTSCB THIS TERMINAL IS PLUGGED TO ICD03360 CBTERMSN DS X'00' SENSE BYTE DATA FROM LAST SENSE COMMAND ICD03370 DS X'00' EXTRA BYTE ICD03380 CBTERMLL DS H PHYSICAL LINE LENGTH FOR THIS TERMINAL ICD03390 CBTERMDA DS D DATE OF LAST INTERRUPT (IF ANY) ICD03400 CBTERMTI DS D TIME OF LAST INTERRUPT (IF ANY) ICD03410 CBTERMRQ DS H NUMBER OF REQUESTS FROM THIS TERMINAL ICD03420 CBTERMRD DS H NUMBER OF DATA READS FROM UTS FOR THIS TERMINAL ICD03430 CBTERMWR DS H NUMBER OF DATA WRITES FROM UTS FOR THIS TERMINAL ICD03440 CBTERMER DS H NUMBER OF ERRORS ASSOCIATED WITH THIS TERMINAL ICD03450 CBTERMEX DS F EXTRA FULLWORD FOR FUTURE EXPANSION ICD03460 CBTERMRM DS CL100 READ MODIFIED BUFFER FOR THIS TERMINAL ICD03470 * ICD03480 &SYSECT CSECT ICD03490 PUSH PRINT ICD03500 * DON'T GET EXCITED. YOU'RE ONLY MISSING THE REGEQU MACRO EXPANSION ICD03510 PRINT NOGEN ICD03520 REGEQU ICD03530 POP PRINT ICD03540 &SYSECT CSECT ICD03550 MEND ICD03560