TITLE 'IEAVAD11 - SNAP OUTPUT, OUTPUT5 AND PRINT ROUTINES' 00050002 * /* START OF SPECIFICATIONS **** 00150000 * 00200000 *01* MODULE-NAME = IEAVAD11 ( VS2 ) WITH SU33 G33SPHW 00250033 * 00300000 *01* DESCRIPTIVE-NAME = SNAP OUTPUT ROUTINES 00400002 * 00450000 *01* COPYRIGHT = NONE 00500000 * 00550000 *01* STATUS = VERSION 1 00600000 * 00650000 *02* LOAD MODULE = IGC0005A 00680033 * 00710033 *02* SYSGEN MACRO = SGEIA401 00740033 * 00770033 *02* SYSTEM LIBRARY = SYS1.LPALIB 00800033 * 00850000 *01* FUNCTION = WRITE LINES OF THE DUMP ON OUTPUT DEVICE 01250000 * 01300000 *01* OPERATION = THIS MODULE RECEIVES CONTROL FROM OTHER SNAP 01305040 * MODULES TO WRITE THE DUMP LINES. THE RECORD THAT WAS 01310040 * BUILT IN THE CALLING MODULE IS MOVED INTO THE NEXT 01315040 * AVAILABLE SLOT IN THE OUTPUT BUFFER. WHEN THE BUFFER 01320040 * IS FULL, A SYNCH IS ISSUED TO THE WRITE ROUTINE 01325040 * (IEAVAD12 IN THIS MODULE) TO WRITE THE BUFFERED RECORDS 01327033 * TO OUTPUT. THIS MODULE DETERMINES WHEN THE PAGE IS FULL 01335040 * AND CREATES A HEADER RECORD WITH A PAGE NUMBER TO BE THE 01340040 * FIRST RECORD WRITTEN FOR THE NEXT PAGE. ALL OF THE 01345040 * REQUIRED INFORMATION IS CONTAINED IN ABDAREA. 01350040 * RECORDS ARE WRITTEN VIA BSAM WRITE AND CHECK MACROS 01360040 * THIS MODULE IS USED BY SDUMP WHEN PROCESSING A SYSMDUMP 01362033 * REQUEST. SDUMP SYNCHES TO IEAVAD12 TO WRITE A BLOCK OF 01364033 * STORAGE. G33SPHW 01366033 * 01370040 *01* NOTES 01380040 * 01400000 *02* CHARACTER-CODE-DEPENDENCIES = THIS MODULE IS EBCDIC CHARACTER 01450000 * CODE DEPENDENT. 01500000 * 01510000 *02* DEPENDENCIES = NONE 01550000 * 01600000 *02* PERFORMANCE = IEAVAD11 PRINTS LINE ABDLINEA FOR THE MODULES OF 01650000 * ABDUMP. ADDITIONAL CODE IS PROVIDED TO OUTPUT A PARTIAL PRINT 01660000 * BUFFER WHEN THE DUMP IS COMPLETE, AND ALSO TO INTERFACE WITH 01662000 * MODULES USING THE ABDUMP STANDARD COMPONENT INTERFACE. 01664000 * 01666000 *02* RESTRICTIONS = MUST NOT CROSS PAGE BOUNDARY 01670000 * 01680000 *02* REGISTER-CONVENTIONS = THE REGISTER CONVENTIONS ARE DESCRIBED 01690000 * UNDER REGISTER EQUATES. 01692000 * 01692400 *02* PATCH-LABEL = NONE 01694000 * 01696000 *01* MODULE-TYPE = MODULE 01698000 * 01704800 *02* PROCESSOR = ASSEMBLER-370R 01711800 * 01713800 *02* MODULE-SIZE = X'200' BYTES APPROX. 01715833 * 01720600 *02* ATTRIBUTES = REENTERABLE,KEY0,SUPVERVISOR STATE,PLPA 01722433 * 01724400 *01* ENTRY = IEAVAD11 01725200 * 01725600 *02* PURPOSE = OUTPUT A LINE OF THE DUMP 01725700 * 01725800 *02* LINKAGE = BALR 01725900 * 01727900 *02* INPUT = REGISTER 1 CONTAINS ADDRESS OF SNAP WORK AREA 01731702 * 01732100 *02* OUTPUT = A LINE OF THE DUMP IS WRITTEN AND THE IMAGE LINE IS 01732500 * BLANKED 01732600 * 01732700 *02* EXIT-NORMAL = BACK TO CALLER 01732800 * 01734800 *02* EXIT-ERROR = NONE 01738200 * 01738600 *01* ENTRY = IEAVAD21 01739100 * 01739200 *02* PURPOSE = OUTPUT PARTIAL BLOCK IF ANY AFTER DUMP IS COMPLETE 01739300 * 01739700 *02* LINKAGE = BALR 01740000 * 01740400 *02* INPUT = REGISTER 1 CONTAINS ADDRESS OF SNAP WORK AREA 01741202 * 01741600 *02* OUTPUT = ANY PARTIAL BLOCK IS WRITTEN TO OUTPUT DEVICE 01742100 * 01744100 *02* EXIT-NORMAL = BACK TO CALLER 01744900 * 01745300 *02* EXIT-ERROR = NONE 01746100 * 01746500 *01* ENTRY = IEAVAD81 01746700 * 01747100 *02* PURPOSE = OUTPUT A LINE OF THE DUMP WRITTEN BY A STANDARD 01747600 * INTERFACE ROUTINE 01747700 * 01747800 *02* LINKAGE = BALR 01748100 * 01748500 *02* INPUT = NONE BUT ABDLINEA MUST CONTAIN DATA TO BE WRITTEN 01749400 * 01751400 *02* OUTPUT = SAME AS FOR IEAVAD11 01751800 * 01752200 *02* EXIT-NORMAL = BACK TO CALLER 01753000 * 01755000 *02* EXIT-ERROR = NONE 01755300 * 01755400 *01* ENTRY = IEAVAD12 (OLD NAME WRITCHEK) G33SPHW 01755533 * 01755633 *02* PURPOSE = WRITE A BLOCK OF OUTPUT 01755733 * 01755833 *02* LINKAGE = SYNCH 01755933 * 01756633 *02* INPUT = REGISTER 1 CONTAINS ADDRESS OF DECB 01756833 * 01757033 *02* OUTPUT = BLOCK OF STORAGE 01757233 * 01757433 *02* EXIT-NORMAL = BACK TO CALLER 01757633 * 01757833 *02* EXIT-ERROR = NONE 01758533 * 01758633 *01* EXTERNAL-REFERENCES 01758733 * 01758833 *02* ROUTINES = SYNCH,BSAM WRITE ROUTINES 01758933 * 01759633 *02* DATA-SETS = DUMP DATA SET 01759700 * 01761700 *02* DATA-AREA = ABDAREA,CVT,TCB.RB,DECB 01763200 * 01765200 *01* TABLES = NONE 01766000 * 01766400 *01* MACROS = IHAABDA,CVT,IKJTCB,IKJRB,WRITE,CHECK 01766500 * 01767040 *01* CHANGE-ACTIVITY = YM2513,Z40MPX, SU33- WRITCHEK TO IEAVAD12 01767233 * USED BY SNAP AND SDUMP. G33SPHW 01767533 * ZA16374 1/28/77 01767733 * 01768500 * 01768900 **** END OF SPECIFICATIONS ***/ 01770000 IEAVAD11 CSECT 01780000 ENTRY IEAVAD21,IEAVAD81,IEAVAD12 G33SPHW 01790033 * REGISTER EQUATES 01800000 PARM EQU 1 INPUT PARAMETER LIST 01850000 DECB EQU 1 ADDR OF DECB 01900000 NEXTEND EQU 1 END ADDR NEXT RCD IN BUFFER 01910000 WORK EQU 2 GENERAL WORK REGISTER 01950000 CVTADDR EQU 2 ADDRESS OF THE CVT 02000000 NEWOLD EQU 2 ADDRESS OF NEW/OLD TCB POINTERS 02050000 TCBADR EQU 2 ADDRESS OF CURRENT TASKS TCB 02100000 SVRBAD EQU 2 ADDRESS OF SNAP SVRB 02150002 * BECAUSE OF THE USAGE OF REGISTERS START, NEXT AND END, THEY MUST 02200000 * REMAIN DESIGNATED BY REGISTERS N, N+1, AND N+2 IN THE ORDER SPECIFIED 02250000 START EQU 3 FIRST AVAILABLE SLOT IN BUFFER 02300000 NEXT EQU 4 NEXT BUFFER SLOT 02350000 END EQU 5 ONE BEYOND LAST BUFFER SLOT 02400000 LINCTR EQU 6 NUMBER OF LINES ON PAGE 02450000 ABDARPTR EQU 7 POINTER TO ABDAREA 02500000 PAGCNT EQU 8 PAGE NUMBER 02550000 * CARE SHOULD BE EXERCISED IN USING REGISTERS 9 OR 10 IN THIS ROUTINE 02600000 * SINCE THEIR CONTENTS WILL BE VOLATILE OVER IEAVAD12 02650033 DECBSAVE EQU 9 SAVE ADDR OF DECB IN IEAVAD12 02680033 EXITSAVE EQU 10 SAVE ADDR OF DECB IN IEAVAD12 02710033 PCAPREG EQU 11 SAVE PAGE CAPACITY Z40MPXG 02770040 BASE EQU 12 BASE REGISTER FOR ROUTINE 02800000 SAVEAREA EQU 13 SAVE AREA POINTER 02850000 RETREG EQU 14 RETURN ADDR REGISTER 02900000 BASEIN EQU 15 BASE REGISTER FOR ID 02950000 RETCODE EQU 15 RETURN CODE REGISTER 03000000 INADDR EQU 15 ADDR OF ROUTINE TO BE SYNCHED 03050000 * MISCELLANEOUS EQUATES 03100000 ZERO EQU 0 CONSTANT 03150000 ONE EQU 1 CONSTANT 03200000 TWO EQU 2 CONSTANT 03250000 THREE EQU 3 CONSTANT 03300000 FOUR EQU 4 CONSTANT 03350000 FIVE EQU 5 CONSTANT 03400000 SIX EQU 6 CONSTANT 03450000 SEVEN EQU 7 CONSTANT 03500000 EIGHT EQU 8 CONSTANT 03550000 NINE EQU 9 CONSTANT 03600000 FORWPTR EQU 8 OFFSET TO FORWARD CHAINING FIELD 03650000 BACKPTR EQU 4 OFFSET TO BACK CHAINING FIELD 03700000 R14SLOT EQU 12 OFFSET TO FIRST REGISTER SLOT 03750000 OLDTCB EQU 4 OFFSET TO OLD TCB IN NEW/OLD 03800000 RECLNG EQU 125 LOGICAL RECORD LENGTH 03850000 HEADDISP EQU 108 DISPLACEMENT TO HEADING 03900000 PAGNODSP EQU 113 DISPLACEMENT TO PAGE NUMBER 03950000 K204 EQU 204 LONG LINE LENGTH Z40MPXG 03958040 RECLNG2 EQU 209 REC LNGH FOR LONG LINE Z40MPXG 03966040 HD2DISP EQU 192 OFFSET TO PAGE HEADER Z40MPXG 03974040 PG2NODSP EQU 197 OFFSET TO PAGE NUMBER Z40MPXG 03982040 SGN2DISP EQU 200 OFFSET TO FIX SIGN ON PG Z40MPXG 03990040 * IN HEADING 04000000 SIGNDISP EQU 116 DISPLACEMENT TO BYTE WITH 04050000 * SIGN FIELD AFTER UNPACK 04100000 CLEARSGN EQU C'0' IMMEDIATE BYTE FOR CLEARING SIGN 04150000 SINGLE EQU X'40' SINGLE SPACE CARRIAGE CTRL CHAR 04200000 DOUBLE EQU C'0' DOUBLE SPACE CARRIAGE CTRL CHAR 04250000 TRIPLE EQU X'60' TRIPLE SPACE CARRIAGE CTRL CHAR 04300000 HEADON EQU X'04' HEADER ON CONSTANT G33SPHW 04310033 HEADOFF EQU X'FB' HEADER RESET CONSTANT G33SPHW 04320033 EJECT EQU C'1' EJECT CARRIAGE CTRL CHAR 04350000 BLANK EQU C' ' BLANK CHARACTER 04400000 LNGDECB EQU 20 LENGTH OF DECB 04450000 SYNCH EQU 12 SVC NUMBER 04500000 USING *,BASEIN 04550000 MODID BR=YES BRANCH AROUND CONSTANT 04600002 DROP BASEIN 04800000 STM RETREG,BASE,R14SLOT(SAVEAREA) SAVE CALLERS REGS 04850000 BALR BASE,ZERO ESTABLISH ADDRESSIBLILITY 04900000 USING *,BASE 04950000 BASE1 EQU * 05000000 LR ABDARPTR,PARM SET ADDR OF ABDAREA 05050000 USING ABDAREA,ABDARPTR DSECT ADDRESSIBILITY 05100000 COMMCODE L WORK,ABDSAVE1 ADDRESS MY SAVE AREA ZA16374 05150033 ST SAVEAREA,BACKPTR(WORK) BACK CHAIN SAVE AREAS 05200000 ST WORK,FORWPTR(SAVEAREA) FORWARD CHAIN SAVE AREAS 05250000 L WORK,ABDSAVE1 GET PROTECTED SAVEAREA ZA16374 05260033 ST WORK,FORWPTR(SAVEAREA) SAVE CALLERS SAVEAREA ZA16374 05270033 LR SAVEAREA,WORK ADDRESS MY SAVE IN R13 05300000 RECLOOP LM START,END,ABDPTRS GET ABDPTRS TO OUTPUT BUFFER 05350000 CLI ABDLLNGH,K204 CHECK FOR LONG LINE Z40MPXG 05370040 BNE SHORTREC NO, BACK TO NORMAL CODE Z40MPXG 05390040 MVC ZERO(RECLNG2,NEXT),ABDLOG MOVE RECORD TO BUFFER Z40MPXG 05410040 LA NEXT,RECLNG2(NEXT) UPDATE TO NEXT SLOT Z40MPXG 05430040 LA NEXTEND,RECLNG2(NEXT) FIND END OF SLOT Z40MPXG 05450040 B AFTERREC CONTINUE WITH NORMAL Z40MPXG 05470040 SHORTREC MVC ZERO(RECLNG,NEXT),ABDLOG MOVE RECORD TO BUFFER Z40MPXG 05500040 LA NEXT,RECLNG(NEXT) BUMP TO NEXT AVAILABLE SLOT 05550000 LA NEXTEND,RECLNG(NEXT) GET END ADDR OF NEXT RECORD 05560000 AFTERREC CR NEXTEND,END WILL NEXT RECORD FIT IN BUFFER 05600040 BNL BUFFULL NO, BRANCH 05650000 ST NEXT,ABDPTRS2 SAVE ADDR OF NEXT SLOT 05700000 BUMPLINE LH LINCTR,ABDLCTR GET LINE COUNTER 05750000 CLI ABDCC,SINGLE SINGLE SPACING REQUESTED 05800000 BE ONEONLY YES, BRANCH 05850000 CLI ABDCC,DOUBLE DOUBLE SPACING REQUESTED 05900000 BE TWOSKIP YES, BRANCH 05950000 LA LINCTR,ONE(LINCTR) ADD ONE TO LINE COUNT 06000000 TWOSKIP LA LINCTR,ONE(LINCTR) ADD ONE TO LINE COUNT 06050000 ONEONLY LA LINCTR,ONE(LINCTR) ADD ONE TO LINE COUNT 06100000 MVI ABDCC,BLANK SET ABDCC TO BLANK 06150000 MVC ABDLINE(L'ABDLINE),ABDCC BLANK ABDLINE 06200000 TM ABDRES1,HEADON PAGE HEADING PRINTED G33SPHW 06201033 BNO AROUND NO SKIP BLANK LINE G33SPHW 06202033 NI ABDRES1,HEADOFF RESET HEADER PRINTED G33SPHW 06203033 B RECLOOP PRINT BLANK LINE G33SPHW 06204033 AROUND SR PCAPREG,PCAPREG CLEAR PAGE CAPACITY REG Z40MPXG 06205033 IC PCAPREG,ABDPCAP GET PAGE CAPACITY Z40MPXG 06220040 CR LINCTR,PCAPREG ARE MAX LINES ON PAGE Z40MPXG 06250040 BNL PAGEFULL YES, BRANCH 06300000 STH LINCTR,ABDLCTR SAVE UPDATED LINE COUNT 06350000 EXIT L SAVEAREA,ABDSAVE1 GET PROTECTED SAVEAREA ADDRESS 06360033 * ZA16374 06370033 L SAVEAREA,BACKPTR(SAVEAREA) GET ADDR OF CALLERS SAVE AREA 06400033 LM RETREG,BASE,R14SLOT(SAVEAREA) RESTORE CALLERS REGS 06450000 LA RETCODE,ZERO SET RETURN CODE TO ZERO 06500000 BR RETREG RETURN TO CALLER 06550000 BUFFULL SR NEXT,START DIFFERENCE IS PHYS RECORD SIZE 06600000 STH NEXT,ABDPHY STORE SIZE IN BUFFER DESCRIPTOR 06650000 MVC ZERO(FOUR,START),ABDPHY MOVE BDW TO OUTPUT RECORD 06700000 LA NEXT,FOUR(START) SET NEXT AVAILABLE BYTE TO 06750000 ST NEXT,ABDPTRS2 FIRST AVAILABLE IN BUFFER 06800000 L DECB,ABDDECB GET ADDR OF UNPROTECTED DECB 06850000 MVC ZERO(LNGDECB,DECB),ABDECB REFRESH DECB IN USER CORE 07000000 LA INADDR,IEAVAD12 PUT ADDR OF ROUTINE IN REG 15 07050033 L 13,ABDSAVE1 GET SAVEAREA ADDRESS ZA16374 07060033 STM RETREG,BASE,R14SLOT(SAVEAREA) SAVE REGISTERS ZA16374 07070033 L SAVEAREA,ABDSAVE POINT R13 AT WRITE SAVEAREA 07080033 * ZA16374 07090033 SVC SYNCH SYNC ENTRY IN USERS KEY 07100000 L CVTADDR,CVTPTR GET ADDR OF CVT ZA16374 07102033 USING CVT,CVTADDR ZA16374 07104033 L NEWOLD,CVTTCBP GET ADDR OF NEW/OLD TCB ZA16374 07106033 DROP CVTADDR ZA16374 07108033 L TCBADR,OLDTCB(NEWOLD) GET ADDR OF CURRENT TCB ZA16374 07110033 USING TCB,TCBADR ZA16374 07112033 L SVRBAD,TCBRBP GET ADDR OF ABDUMP SVRB ZA16374 07114033 DROP TCBADR ZA16374 07116033 USING RBSECT,SVRBAD 07118033 L ABDARPTR,RBEXSAVE+FOUR ADDR OF ABDAREA IS FOUND 07120033 * IN SECOND WORD OF EXTENDED SAVE 07122033 * AREA ZA16374 07124033 DROP SVRBAD ZA16374 07126033 L SAVEAREA,ABDSAVE1 GET SAVEAREA ADDRESS FROM 07128033 * WORKAREA ZA16374 07130033 LM RETREG,BASE,R14SLOT(SAVEAREA) RESTORE REGISTERS ZA16374 07132033 L SAVEAREA,ABDSAVE RESTORE SAVEAREA ADDRESS ZA16374 07134033 B BUMPLINE AFTER WRITING OUTPUT 07150000 PAGEFULL LH PAGCNT,ABDPCTR GET PAGE COUNT 07350000 LA PAGCNT,ONE(PAGCNT) ADD ONE 07400000 STH PAGCNT,ABDPCTR SAVE UPDATED COUNT 07450000 MVI ABDCC,EJECT SET CC TO EJECT PAGE 07500000 CLI ABDLLNGH,K204 CHECK FOR LONG LINE Z40MPXG 07505040 BNE OLDHEAD NO, RESUME NORMAL CODE Z40MPXG 07510040 MVC ABDLINE(80),ABDSAVHD MOVE HEADER TO PAGE TOP G33SPHW 07512033 MVC ABDLINE+HD2DISP(FOUR),PAGE MOVE IN HEADER Z40MPXG 07515040 CVD PAGCNT,ABDWORK1 CONVERT PAGE NUMBER Z40MPXG 07520040 UNPK ABDLINE+PG2NODSP(FOUR),ABDWORK1+FOUR(FOUR) Z40MPXG 07525040 OI ABDLINE+SGN2DISP,CLEARSGN FIX ZONE ON LAST DIGIT Z40MPXG 07530040 MVC ABDLCTR(TWO),MINUSONE RESET LINE COUNT Z40MPXG 07535040 OI ABDRES1,HEADON SET HEADER PRINTED ON G33SPHW 07537033 B RECLOOP GO PROCESS NEW RECORD Z40MPXG 07540040 OLDHEAD MVC ABDLINE+HEADDISP(FOUR),PAGE MOVE HEADING TO LINE 07550040 MVC ABDLINE(80),ABDSAVHD MOVE HEADER TO PAGE TOP G33SPHW 07570033 CVD PAGCNT,ABDWORK1 CONVERT PAGE NUMBER TO DECIMAL 07600000 UNPK ABDLINE+PAGNODSP(FOUR),ABDWORK1+FOUR(FOUR) 07650000 * UNPACK RESULT INTO OUTPUT LINE 07700000 OI ABDLINE+SIGNDISP,CLEARSGN CLEAR SIGN BYTE 07750000 MVC ABDLCTR(TWO),MINUSONE RESET LINE COUNT 07800000 OI ABDRES1,HEADON SET HEADER PRINTED ON G33SPHW 07820033 B RECLOOP WRITE THE PAGE HEADING 07850000 * THIS PORTION OF THE ROUTINE IS ENTERED VIA SYNCH IN ORDER TO PREVENT 07900000 * THE USER FROM GETTING CONTROL IN KEY 0 STATE. THE SYNCH INSURES THAT 07950000 * REGARDLESS OF WHAT IS SPECIFIED IN THE DCB, THE ROUTINE WILL BE 08000000 * ENTERED WITH THE USERS KEY. 08050000 IEAVAD12 LR DECBSAVE,DECB SAVE DECB ADDRESS 08100033 LR EXITSAVE,RETREG SAVE EXIT ADDR OVER WRITE 08150000 * AND CHECK 08200000 WRITE (1),SF,MF=E ISSUE WRITE REQUEST 08250000 LR DECB,DECBSAVE RESTORE DECB ADDRESS 08300000 CHECK (1) CHECK THE WRITE OPERATION 08350000 BR EXITSAVE RETURN TO CALLER 08400000 * IEAVAD21 IS ENTERED BY MAINLINE TO FORCE THE OUTPUTTING OF ANY 08450000 * RECORDS REMAINING IN THE BUFFER 08500000 IEAVAD21 STM RETREG,BASE,R14SLOT(SAVEAREA) SAVE REGISTERS 08550000 BALR BASE,ZERO ESTABLISH ADDRESSIBILITY 08600000 USING *,BASE 08650000 BASE2 EQU * 08700000 LA WORK,BASE2-BASE1 GET DIFFERENCE 08750000 SR BASE,WORK CALC ORIGINAL BASE 08800000 USING BASE1,BASE ADDRESSIBILITY AS IEAVAD11 08850000 LR ABDARPTR,PARM SET ADDR OF ABDAREA 08900000 L WORK,ABDSAVE ADDR MY SAVE AREA 08950000 ST SAVEAREA,BACKPTR(WORK) BACK CHAIN AREAS 09000000 ST WORK,FORWPTR(SAVEAREA) FORWARD CHAIN AREAS 09050000 LR SAVEAREA,WORK SET ADDR MY SAVE IN REG 13 09100000 LM START,END,ABDPTRS GET BUFFER POINTERS 09150000 LA WORK,FOUR(START) CALC INIT ADDR IN BUFFER 09300000 CR WORK,NEXT IF AT BEGINNING OF BUFFER 09350000 * NOTHING TO WRITE 09400000 BE EXIT RETURN 09450000 MVC ABDLCTR(TWO),MINUSONE INSURE THAT NEW PAGE HEADING 09500000 * WILL NOT BE WRITTEN 09550000 B BUFFULL GO WRITE REMAINING DATA 09600000 * 09650000 * IEAVAD81 IS AN ENTRY POINT USED BY SUBSYSTEM MODULES TO PRINT 09700000 * A LINE OF DATA. THE ROUTINE ESTABLISHES THE TYPE OF INTERFACE 09750000 * REQUIRED BY IEAVAD11 AND BRANCHES TO THAT PORTION OF THE CODE. 09800000 * 09850000 IEAVAD81 STM RETREG,BASE,R14SLOT(SAVEAREA) SAVE CALLERS REGISTERS 09900000 BALR BASE,ZERO ESTABLISH ADDRESSIBILITY 09950000 USING *,BASE 10000000 BASE3 EQU * 10050000 LA WORK,BASE3-BASE1 GET DIFFERENCE IN BASE VALUES 10100000 * VAD81 AND VAD11 10150000 SR BASE,WORK SET BASE REG TO VAD11 VALUE 10200000 USING BASE1,BASE 10250000 L CVTADDR,CVTPTR GET ADDR OF CVT 10300000 USING CVT,CVTADDR 10350000 L NEWOLD,CVTTCBP GET ADDR OF NEW/OLD TCB POINTERS 10400000 DROP CVTADDR 10450000 L TCBADR,OLDTCB(NEWOLD) GET ADDR OF CURRENT TCB 10500000 USING TCB,TCBADR 10550000 L SVRBAD,TCBRBP GET ADDR OF ABDUMP SVRB 10600000 DROP TCBADR 10650000 USING RBSECT,SVRBAD 10700000 L ABDARPTR,RBEXSAVE+FOUR ADDR OF ABDAREA IS FOUND 10750000 * IN SECOND WORD OF EXTENDED SAVE 10800000 * AREA 10850000 DROP SVRBAD 10900000 XC ABDUPRXT(FOUR),ABDUPRXT ZERO UPR EXIT ROUTINE ADDR TO 10950000 * PREVENT TROUBLE DUE TO CARELESS 11000000 * USE OF FIELD BY SUBSYSTEM 11050000 B COMMCODE ENTER VAD11 CODE 11100000 * CONSTANTS 11150000 MINUSONE DC H'-1' VALUE TO RESET LINE COUNT 11250000 PAGE DC C'PAGE' HEADING FOR NEW PAGE 11300000 * DSECT MAP OF ABDAREA 11350000 IHAABDA 11400000 * DSECT MAP OF THE CVT 11450000 CVT DSECT=YES 11500000 * DSECT MAP OF THE TCB 11550000 IKJTCB 11600000 * DSECT MAP OF THE RB 11650000 IKJRB 11700000 */*IEAVAD11: CHART */ 11705040 */* HEADER 11710040 */* PAGE AND HEADER FORMATTING ROUTINE, LINE WRITER 11715040 */* FEBRUARY 14, 1975 C. KEN WRIGHT PAGE# */ 11718040 */* E IEAVAD11 MAINLINE */ 11725040 */* P SAVE CALLERS REGISTERS */ 11730040 */* P ESTABLISH ADDRESSABILITY - REG 12 */ 11735040 */* P GET ADDRESS OF ABDAREA */ 11740040 */*%L11: P CHAIN SAVEAREA AND SAVE REG 13 */ 11745040 */*%L8: P GET POINTER TO OUTPUT BUFFER */ 11750040 */* D (YES,,NO,SHORTREC) 204 CHARACTER LINE ? */ 11800040 */* P MOVE RECORD TO BUFFER */ 11850040 */* P BUMP TO NEXT SLOT IN BUFFER */ 11900040 */* P (,AFTERREC) GET ADDRESS OF NEXT RECORD SLOT */ 11950040 */*SHORTREC: P MOVE RECORD TO BUFFER */ 12750040 */* P BUMP TO NEXT SLOT IN BUFFER */ 13750040 */* P GET ADDRESS OF NEXT RECORD SLOT */ 14750040 */*AFTERREC: D (YES,,NO,BUFFULL) WILL RECORD FIT IN BUFFER ? */ 14800040 */* P SAVE POINTER TO NEXT SLOT */ 16750040 */*%L5: P GET THE LINE COUNTER */ 17750040 */* D (YES,%L2,NO,) SINGLE SPACING ? */ 18750040 */* D (YES,%L3,NO,) DOUBLE SPACING ? */ 19750040 */* P ADD ONE TO LINE COUNT */ 20750040 */*%L3: P ADD ONE TO LINE COUNTER */ 21750040 */*%L2: P ADD ONE TO LINE COUNTER */ 22750040 */* P BLANK OUT ABDCC */ 23750040 */* P BLANK OUTPUT LINE - ABDLINE */ 24750040 */* P CLEAR OUT PAGE CAPACITY REGISTER */ 24800040 */* P PICK UP PAGE CAPACITY - ABDPCAP */ 24850040 */* D (YES,PAGEFULL,NO,) MAXIMUM LINES ON PAGE ? */ 25750040 */* P SAVE THE LINE COUNTER */ 26750040 */*EXIT: P RESTORE REGISTERS */ 27750040 */* P SET RETURN CODE OF ZERO */ 28750040 */* R RETURN TO CALLER */ 29750040 */*BUFFULL: P GET DIFFERENCE IN RECORD SIZE */ 30750040 */* P STORE IN BUFFER DESCRIPTOR */ 31750040 */* P MOVE 4-BYTE HEADER TO BEGINNING OF BUFFER */ 32750040 */* P POINT TO NEXT CHARACTER POSITION */ 33750040 */* P SAVE CURRENT POINTER */ 34750040 */* P GET DECB ADDRESS */ 35750040 */* P COPY ABDECB TO USER DECB */ 36750040 */* P SET ADDR OF WRITECHK IN REG 15 */ 37750040 */* L (,WRITECHK) SYNCH TO WRITE ROUTINE */ 38750040 */*PAGEFULL: P GET PAGE COUNT */ 39750040 */* P INCREMENT BY ONE */ 40750040 */* P SAVE PAGE COUNT */ 41750040 */* P SET ABDCC TO EJECT */ 42750040 */* D (YES,,NO,OLDHEAD) 204 CHARACTER LINE ? */ 42800040 */* P MOVE PAGE HEADER INTO ABDLINE */ 42850040 */* P CONVERT PAGE NUMBER TO PACKED DECIMAL */ 42900040 */* P UNPACK IT INTO ABDLINE */ 42950040 */* P FIX SIGN BIT ON PAGE NUMBER FROM UNPACK */ 43000040 */* P (,%L8) RESET THE LINE COUNT */ 43050040 */*OLDHEAD: P MOVE HEADER INTO LINE */ 43750040 */* P CONVERT PAGE NUMBER AND PUT INTO LINE */ 44750040 */* P (,%L8) RESET LINE COUNT */ 45750040 */*WRITECHK: P SAVE DECB ADDRESS */ 46750040 */* P SAVE REG 14 OVER WRITE OPERATION */ 47750040 */* I WRITE BUFFER - BSAM */ 48750040 */* L CHECK - FOR THE WRITE */ 49750040 */* R RETURN TO CALLER */ 50750040 */*IEAVAD21: E IEAVAD21 MAINLINE */ 51750040 */* P SAVE REGISTERS */ 52750040 */* P SET ADDRESSABILITY TO BEGINNING OF MODULE */ 53750040 */* P GET POINTER TO ABDAREA */ 54750040 */* P CALCULATE BEGINNING ADDRESS OF BUFFER */ 55750040 */* D (YES,EXIT,NO,) NOTHING TO WRITE ? */ 56750040 */* P (,BUFFULL) INSURE NO NEW PAGE HEADER WILL BE WRITTEN */ 57750040 */*IEAVAD81: E IEAVAD81 MAINLINE */ 58750040 */* P SAVE CALLERS REGISTERS */ 59750040 */* P ESTABLISH ADDRESSABILITY TO BEGINNING OF MODULE */ 60750040 */* P GET CVT POINTER */ 61750040 */* P GET POINTER TO NEW/OLD TCB POINTERS */ 62750040 */* P GET CURRENT TCB ADDRESS */ 63750040 */* P GET ADDR OF ABDUMP SVRB FROM CURRENT TCB */ 64750040 */* P GET ABDAREA POINTER FROM EXTENDED SAVEAREA */ 65750040 */* P (,%L11) CLEAR UPR FLAGS JUST IN CASE */ 66750040 END IEAVAD11 67750040