SEP TITLE 'DMKSEP (CP) VM/370 - RELEASE 6' 00001000
ISEQ 73,80 VALIDATE INPUT SERIALIZATION 00002000
*. 00003000
* 00004000
* MODULE NAME - 00005000
* 00006000
* DMKSEP 00007000
* 00008000
* FUNCTION - 00009000
* 00010000
* TO PRINT OUTPUT SEPARATOR PAGES ON THE REAL SPOOLING PRINTERS 00011000
* IN BETWEEN THE OUTPUT OF DIFFERENT SYSTEM USERS 00012000
* 00013000
* TO PUNCH OUTPUT SEPARATOR CARDS ON THE REAL SPOOLING PUNCHES 00014000
* IN BETWEEN THE OUTPUT OF DIFFERENT SYSTEM USERS 00015000
* 00016000
* ATTRIBUTES - 00017000
* 00018000
* REENTRANT, PAGEABLE, CALLED VIA SVC 00019000
* 00020000
* ENTRY POINTS - 00021000
* 00022000
* DMKSEPSP - SEPARATOR ROUTINE 00023000
* 00024000
* ENTRY POINTS - DATA 00025000
SPACE 00026000
* DMKSEPHR - CLASS X DEFAULT HEADER LINE 00027000
* 00028000
* ENTRY CONDITIONS - 00029000
* 00030000
* GPR2 = ADDRESS OF LOCKED PAGE BUFFER 00031000
* GPR7 = ADDRESS OF SFBLOK FOR FILE BEING PRINTED 00032000
* GPR8 = ADDRESS OF RDEVBLOK FOR PRINTER 00033000
* GPR9 = ADDRESS OF RSPLCTL WORKAREA 00034000
* GPR10 = ADDRESS OF IOBLOK FOR PRINTER IO 00035000
* GPR12 = ADDRESS OF DMKSEP 00036000
* GPR13 = ADDRESS OF STANDARD SAVEAREA 00037000
* 00038000
* EXIT CONDITIONS - 00039000
* 00040000
* NONE 00041000
* 00042000
* CALLS TO OTHER ROUTINES - 00043000
* 00044000
* DMKIOSQR - TO START THE REAL PRINTER 00045000
* DMKCVTDT - TO OBTAIN THE DATE AND TIME OF OUTPUT 00046000
* DMKDSPCH - TO AWAIT PRINTER INTERRUPTS 00047000
* DMKPGTVG - TO GET A VIRTUAL BUFFER 00048000
* DMKPGTVR - TO RELEASE A VIRTUAL BUFFER 00049000
* DMKPTRUL - TO UNLOCK A LOCK BUFFER PAGE 00050000
* DMKCVTBH - TO CONVERT DEVICE ADDRESS 00051000
* DMKCVTBD - TO CONVERT SPOOLID AND RECORD COUNT 00052000
* DMKTCSSP - TO LOAD A 3800 PRINTER WITH FCB AND CHAR ARR 00052100
* TABLE PRIOR TO PRINTING SEP PAGE 00052200
* 00053000
* EXTERNAL REFERENCES - 00054000
* 00055000
* DMKBOXBX - ADDRESS OF SEPARATOR PAGE BOX 00056000
* DMKCPEID - ADDRESS OF VERSION LEVEL ID 00057000
* DMKSYSID - Address of SYSID HRC108DK 00057100
* 00058000
* TABLES / WORKAREAS - 00059000
* 00060000
* NONE 00061000
* 00062000
* 00063000
* REGISTER USAGE - 00064000
* 00065000
* THE FOLLOWING USAGE APPLIES TO ALL DMKSEP CODE EXCEPT FOR THE 00066000
* BLOCK LETTER GENERATOR SUBROUTINE. REGISTER USAGE AND OPER- 00067000
* ATION OF THIS ROUTINE ARE EXPLAINED SEPARATELY 00068000
* 00069000
* GPR0 - NOT USED 00070000
* GPR1 - SCRATCH 00071000
* GPR2 = ADDRESS OF LOCATION TO STORE CCWS AND DATA 00072000
* GPR3-5 CONTAIN MODEL CCWS TO BE STORED IN BUFFER 00073000
* GPR6 = INTERNAL SUBROUTINE LINKAGE AND LOOP CONTROL 00074000
* GPR7 = ADDRESS OF SFBLOK 00075000
* GPR8 = ADDRESS OF RDEVBLOK FOR PRINTER, AND POINTER TO OUTPUT 00076000
* AREA FOR THE BLOCK LETTER GENERATOR 00077000
* GPR9 - NOT USED 00078000
* GPR10 = ADDRESS OF IOBLOK FOR PRINTER 00079000
* GPR12 = MODULE BASE ADDRESS 00080000
* GPR13 = ADDRESS OF SAVEAREA 00081000
* GPR14,15 - EXTERNAL SUBROUTINE LINKAGE 00082000
* 00083000
* NOTES - 00084000
* 00085000
* NONE 00086000
* 00087000
EJECT 00088000
* OPERATION - 00089000
* 00090000
* 1. THE OUTPUT SEPARATOR PRODUCED BY THIS ROUTINE ASSUMES THAT 00091000
* THE PRINTER HAS MOUNTED ON IT A CARRAIGE CONTROL TAPE WITH 00092000
* A CHANNEL ONE PUNCH AT LINE 3 OF A 66 LINE PAGE 00093000
* PROVIDING THE PRINTER IS NOT A 3800. 00093100
* IF THE PRINTER IS A 3800, THE ASSUMPTION IS THAT 00093200
* CHANNEL 1 SKIPS TO THE FIRST PRINTABLE LINE ON THE PAGE 00093300
* AND THAT THE PAGE IS CAPABLE OF HOLDING AT LEAST 55 LINES 00093400
* OF PRINT AT THE FCB SPECIFIED FOR SEPARATOR PAGES. 00093500
* IF THIS IS A SYSTEM RESTART AND THE DEVICE IS 00094000
* A PRINTER: A'SYSTEM RESTARTED' 00095000
* MESSAGE WITH A LINE OF ASTERISKS BEFORE AND 00096000
* AFTER IS PRINTED ON THE PRINTER, AND EXIT 00097000
* OTHERWISE, CONT: 00098000
* 00099000
* 2. A CHANNEL PROGRAM IS CONSTRUCTED TO PERFORM THE FOLLOWING 00100000
* SEQUENCE OF EVENTS - 00101000
* A. SKIP TO CHANNEL 1 AND SPACE DOWN TO LINE 60 00102000
* AND GO TO STEP B. 00102100
* EXCEPT FOR A 3800 PRINTER WHEN WE JUST 00102200
* SKIP TO CHANNEL 1 AND GO TO STEP D. 00102300
* B. PRINT 5 LINES OF ASTERISKS 00103000
* C. PRINT ONE LINE OF UNDERSCORES ALONG THE PERFORATION 00104000
* BETWEEN PAPER SHEETS 00105000
* D. PRINT 5 LINES OF ASTERISKS, THE 5TH LINE CONTAINS 00106000
* VERSION AND LEVEL, OUTPUT DEVVICE ADDRESS AND 00107000
* CLASS, DATE AND TIME PRINTED. FOLLOWED 00108000
* BY 3 BLANK LINES 00109000
* IN THIS STEP, IF THE DEVICE IS A 3800 PRINTER, 00109100
* ONLY TWO LINES OF ASTERISKS ARE PRINTED WITH 00109200
* THE SECOND LINE CONTAINING THE DESIRED INFO. 00109300
* E. THE NEXT 16 LINES CONTAINS USERID, DISTRIBUTION 00110000
* CODE, SPOOL FILE NAME AND TYPE, CREATION DATE AND 00111000
* TIME, SPOOLID AND RECORD COUNT. 00112000
* ALSO INCLUDED IN THESE 16 LINES IS A 16 LINE BY 00113000
* 46 CHARACTER AREA. THE INFORMATION FOR THIS AREA 00114000
* IS LOADED FROM DMKBOX AT LABEL DMKBOXBX. IF 00115000
* MODULE IS NOT AVAILABLE, THE DEFAULT 00116000
* INFORMATION LOCATE AT LABEL 'CONSTANT' IN 00117000
* THIS MODULE IS USED. 00118000
* CODE, SPOOL FILE NAME AND TYPE, CREATION DATE, 00119000
* SPOOL FILE ID AND RECORD COUNT. 00120000
* INCLUDED IN THESE 15 LINES IS A 15 BY 46 DC 00121000
* CONSTANT BOX IN WHICH DC 00122000
* INFORMATION CAN BE PLACED FOR PRINTING OF 00123000
* F. PRINT THE USERID OF THE FILE'S OWNER IN A SERIES OF 00124000
* 12 X 12 MATRIX BLOCK LETTERS, FOLLOWED BY 4 BLANK 00125000
* LINES. THE DISTRIBUTION CODE IS PRINTED IN A 00126000
* SERIES OF 12 X 12 MATRIX BLOCK LETTERS, 00127000
* FOLLOWED BY 5 BLANK LINES. 00128000
* 00129000
* 3. AFTER THE CHANNEL PROGRAM HAS BEEN EXECUTED ONCE FROM THE 00130000
* BEGINNING, IT IS RE-EXECUTED STARTING AT STEP B. ABOVE, 00131000
* THEREBY CREATING A SECOND SEPARATOR PAGE 00132000
* FOR A 3800 START FROM STEP A. ABOVE, AND REPEAT. 00132100
* 00133000
* 4. AFTER THE PAGES ARE COMPLETE, DMKSEP RETURNS TO DMKRSPEX 00134000
* 00135000
* 5. FOR PUNCH OUTPUT PUNCH 4 CARDS CONTAINING USER I.D., 00136000
* DISTRIBUTION CODE AND 12-4-9 PUNCHES IN THE LAST 00137000
* 10 COLUMNS. EACH LETTER OF THE DISTRIBUTION CODE IS 00138000
* RIPPLED PUNCHED IN GROUPS OF FOUR STARTING IN 00139000
* COLUMN 19. 00140000
* 00141000
* EXAMPLE OF SEPARATOR CARD FOR USERID OF OPERATOR AND 00142000
* DISTRIBUTION CODE OF 12345678 00143000
* 00144000
*OPERATOR 12345678 1111 2222 3333 4444 5555 6666 7777 8888 (12-4-9) 00145000
* 00146000
* RESPONSE - 00147000
* 00148000
* NONE 00149000
* 00150000
* ERROR MESSAGES - 00151000
* 00152000
* NONE 00153000
*. 00154000
EJECT 00155000
COPY OPTIONS 00156000
COPY LOCAL OPTIONS 00157000
EJECT 00158000
DMKSEP CSECT LOADER CONTROL ONLY 00159000
SPACE 3 00160000
ENTRY DMKSEPHR 00161000
EXTRN DMKIOSQR 00162000
EXTRN DMKCPEID 00163000
EXTRN DMKCVTDT,DMKPGTVG,DMKPGTVR,DMKPTRUL 00164000
EXTRN DMKCVTBH,DMKCVTBD 00165000
EXTRN DMKBOXBX 00166000
EXTRN DMKSCNRD @VA01236 00167000
EXTRN DMKTCSSP @V60B9BA 00167100
EXTRN DMKSYSID HRC108DK 00167200
SPACE 3 00168000
USING PSA,R0 00169000
USING SFBLOK,R7 00170000
USING RDEVBLOK,R8 00171000
USING IOBLOK,R10 00172000
USING VMBLOK,R11 00173000
USING SAVEAREA,R13 00174000
SPACE 3 00175000
DC CL8'DMKSEPSP' MODULE NAME 00176000
SPACE 3 00177000
DMKSEPSP RELOC 00178000
SPACE 2 00179000
XC SAVEWRK1(4),SAVEWRK1 CLEAR SAVEWRK AREA 00180000
XC SAVEWRK2(32),SAVEWRK2 00181000
ST R2,IOBCAW SAVE CAW FOR 1ST AND 2ND PAGES 00182000
TM RDEVTYPE,TYPPUN PUNCH ?? 00183000
BO TSTSEP YES - CHECK FOR SEP 00184000
LA R1,RSTRIRA GET NEW IRA FOR RESTART 00185000
ST R1,IOBIRA AND STORE IT 00186000
ST R13,IOBMISC SAVE GPR13 00187000
LR R1,R2 GET BUFFER ADDRESS 00188000
LM R3,R4,LOADCK GET VERIFY UCS/BLK DATA CHK CCW @VA14226 00189000
ALR R3,R1 UPDATE DATA ADDRESS @VA14226 00189300
STM R3,R4,0(R1) AND STORE IN BUFFER @VA14226 00189600
MVC 8(8,R1),LOADSNS MOVE IN DUMMY SENSE CCW 00192000
LM R3,R6,RSTRCCW1 LOAD 1ST CCW 00193000
ALR R5,R1 UPDATE DATA ADDRESS 00194000
STM R3,R6,16(R1) STORE CCW IN BUFFER 00195000
TM SFBFLAG2,SFBRSTRT SYSTEM RESTARTED ?? 00196000
BZ SEP001 NO --CHECK FOR UCS VERIFIED @V60B9BA 00197000
OI 12(R1),CC COMMAND CHAIN TO RESTART MESSAGE 00198000
B SEP002 .. @V60B9BA 00199000
SEP001 TM RDEVFLAG,RDEVLOAD UCS VERIFIED ?? @V60B9BA 00200000
BO TSTSEP YES -- 00201000
CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 00201600
BE TSTSEP XFER IF SO - NO UCS VER @V60B9BA 00201800
SEP002 LM R3,R6,RSTRCCW2 GET NEXT TWO CCWS 00202000
ALR R3,R1 UPDATE ADDRESSES 00203000
ALR R5,R1 .. 00204000
STM R3,R6,32(R1) AND STORE IN BUFFER 00205000
MVC 48(8,R1),RSTRCCW3 MOVE IN SENSE CCW 00206000
MVI 56(R1),C'*' FILE THE BUFFER WITH * 00207000
MVC 57(238,R1),56(R1) .. 00208000
MVI 188(R1),C' ' BLANK AREA 00209000
MVC 189(81,R1),188(R1) .. 00210000
MVC 217(22,R1),=C'** SYSTEM RESTARTED **' .. 00211000
B SEPSIO 00212000
SPACE 00213000
RSTRIRA EQU * HERE ON INTERRUPT FOR RESTART MSG 00214000
USING *,R12 TEMPORARY ADDRESSABILITY 00215000
S R12,=A(RSTRIRA-DMKSEP) 00216000
USING DMKSEP,R12 00217000
L R13,IOBMISC RESTORE ADDRESS OF SAVEAREA 00218000
LM R0,R11,SAVEREGS RESTORE REGISTERS 00219000
ST R1,IOBMISC2 CLEAR OUT 'SEP' 00220000
TM IOBSTAT,IOBFATAL FATAL IO ERROR 00221000
BO EXIT YES -- RETURN TO CALLER. @VA05923 00222100
SPACE 00223000
TM IOBCSW+4,UE UNIT EXCEPTION ?? 00224000
BO SEPUE YES -- 00225000
SWITCH MAKE SURE WE ARE ON THE IO PROCESSOR @V4075A0 00225100
OI RDEVFLAG,RDEVLOAD INDICATE UCS VERIFIED OK 00226000
TM SFBFLAG2,SFBRSTRT SYSTEM RESTARTED ?? 00227000
BZ TSTSEP NO -- 00228000
B EXIT YES EXIT -- NO SEPARATOR NEEDED 00229000
SEPUE L R1,IOBCSW ADDRESS OF NEXT CCW 00230000
LA R1,0(R1) CLEAR HIGH ORDER BYTE 00231000
ST R1,IOBCAW SET CAW 00232000
B SEPSIO FINISH IT 00233000
SPACE 00234000
TSTSEP ST R1,IOBMISC2 CLEAR OUT 'SEP ' 00235000
TM RDEVFLAG,RDEVSEP PUNCH OR PRINT SEPARATOR 00236000
BZ EXIT NO -- 'NOSEP' 00237000
TM RDEVTYPE,TYPPUN PUNCH ?? 00238000
BO PUNTYPE YES 00239000
CLI BOXFLAG,X'FF' BOX ALL SET UP? @VA05226 00240750
BE DOSEP1 YES - - - @VA05204 00241500
L R9,=A(DMKCPEID) ADDRESS OF VERSION LEVEL ID 00242000
MVC VERID(2),0(R9) GET VERSION ID 00243000
MVC LEVELID(2),2(R9) GET LEVEL ID 00244000
MVC PLCID(4),4(R9) AND PLC ID @VA03492 00245000
L R9,=A(DMKBOXBX) ADDRESS OF INSTALLATION BOX 00246000
LTR R9,R9 ONE PRESENT ?? 00247000
BZ DOSEP NO - USE IN HOUSE 00248000
LR R1,R9 ADDRESS OF BOX 00249000
TRANS 2,1,OPT=(BRING,DEFER,SYSTEM) 00250000
LA R3,782 LENGTH OF BOX 00251000
LR R5,R3 SET LENGTH 00252000
LR R4,R2 SET UP FROM ADDRESS 00253000
LA R2,CONSTANT SET TO ADDRESS 00254000
MVCL R2,R4 MOVE USERS BOX AND OVERLAY IN HOUSE 00255000
DOSEP MVI BOXFLAG,X'FF' SET BOX COMPLETE FLAG @VA05226 00256750
DOSEP1 LM R0,R11,SAVEREGS RESTORE ENTRY REGS @VA05204 00257500
CLI RDEVTYPE,TYP3800 IS IT A 3800 ? @V60B9BA 00257700
BNE DOSEP2 XFER IF NOT @V60B9BA 00257750
CALL DMKTCSSP SET UP THE PRINTER @V60B9BA 00257800
BZ DOSEP2 XFER IF ALL OK @V60B9BA 00257850
OI IOBSTAT,IOBFATAL FATAL ERROR IN SETUP @V60B9BA 00257900
B SEPEXIT EXIT @V60B9BA 00257950
DOSEP2 ST R2,IOBCAW SET CAW ADDRESS 00258000
LM R3,R4,SKIPTO1 LOAD MODEL CCW - SKIP TO CHANNEL ONE 00259000
STM R3,R4,0(R2) PLACE IN BUFFER 00260000
ST R2,SAVEWRK7 SAVE CAW FOR POSSIBLE 3800 @V60B9BAX00260100
SECOND SEP PAGE 00260200
LA R2,8(,R2) POINT TO NEXT SLOT 00261000
CLI RDEVTYPE,TYP3800 IS IT A 3800 ? @V60B9BA 00261100
BE DOSEP3 DON'T SPACE OUT FOR A 3800 @V60B9BA 00261200
LA R14,8 GET INDEX VALUE 00262000
LA R15,18*8(,R2) POINT TO LAST CCW SLOT 00263000
LM R3,R4,SPACE3 LOAD MODEL CCW - SPACE 3 LINES 00264000
STM R3,R4,0(R2) STORE IN BUFFER 00265000
BXLE R2,R14,*-4 INSERT CCWS TO SPACE 57 LINES 00266000
ST R2,SAVEWRK7 SAVE CAW FOR THIRD PAGE 00267000
SPACE 3 00268000
DOSEP3 LA R14,144 GET INDEX VALUE @V60B9BA 00269000
BALR R6,0 SET TO LOOP ONCE 00270000
LM R3,R5,PRINTIC LOAD MODEL CCWS - PRINT AND SPACE 00271000
* 1, TIC 00272000
ALR R3,R2 ADJUST DATA ADDRESS IN PRINT 00273000
ALR R5,R2 AND TRANSFER ADDRESS IN TIC 00274000
LA R15,4*144(,R2) POINT TO SLOT FOR 5TH PRINT LINE 00275000
CLI RDEVTYPE,TYP3800 IS IT A 3800 ? @V60B9BA 00275100
BNE SEPLOOP1 XFER IF NOT @V60B9BA 00275200
LA R15,144(,R2) ONLY PRINT 2 LINES OF * @V60B9BA 00275300
LA R6,SKIP2 AND DON'T REPEAT THEM @V60B9BA 00275400
SEPLOOP1 STM R3,R5,0(R2) STORE CCWS IN BUFFER 00276000
MVI 12(R2),C'*' INSERT SEPARATOR CHARACTER 00277000
MVC 13(131,R2),12(R2) AND RIPPLE IT THRU THE LINE 00278000
ALR R3,R14 ADJUST DATA ADDRESS IN PRINT 00279000
ALR R5,R14 AND TRANSFER ADDRESS IN TIC 00280000
BXLE R2,R14,SEPLOOP1 AND REPEAT FOR 4 MORE LINES 00281000
AL R3,=A(18) ADJUST ADDRESS TO DATA 00282000
STM R3,R4,0(R2) INSERT PRINT AND TIC 00283000
MVI 0(R2),X'01' WRITE NO SPACE CCW OP-CODE 00284000
BCTR R3,0 -1 BUFFER ADDRESS 00285000
STM R3,R4,8(R2) STORE NEXT CCW 00286000
MVI 8(R2),X'01' WRITE NO SPACE CCW OP-CODE 00287000
AL R5,=A(24) ADJUST TIC ADDRESS TO NEXT CCW 00288000
BCTR R3,0 -1 DATA ADDRESS 00289000
STM R3,R5,16(R2) STORE WRITE AND TIC CCW 00290000
MVC 28(3,R2),=C' _ ' RIPPLE PATTERN THRU DATA AREA 00291000
MVC 31(136,R2),28(R2) 00292000
LA R2,168(R2) UPDATE TO NEXT BUFFER SLOT 00293000
BALR R6,R6 AND REPEAT FOR NEXT 5 LINES 00294000
SPACE 00295000
SKIP2 S R2,=A(168) GO BACK TWO LINES @V60B9BA 00296000
SR R2,R14 00297000
MVC 14(MSGSIZE,R2),VERSION MOVE IN VER, LEV & PLC @VA03492 00298000
MVC 67(9,R2),=C' CLASS ' @VA04376 00299500
MVC 74(1,R2),SFBCLAS MOVE CLASS TYPE 00300000
MVC 79(9,R2),=C' DEV ' 00301000
CALL DMKSCNRD GET AND CONVERT DEVICE ADDRESS @VA01236 00302000
CALL DMKCVTBH 00303000
STCM R1,7,84(R2) STORE ADDRESS 00304000
SPACE 00305000
MVI 119(R2),C' ' CLEAR SPACE FOR DATE AND TIME 00306000
MVI 128(R2),C' ' .. 00307000
MVI 132(R2),C' ' .. 00308000
MVI 141(R2),C' ' .. 00309000
SPACE 00310000
LA R1,120(R2) ADDRESS FOR DATE AREA 00311000
LA R2,13(R1) ADDRESS OF TIME AREA 00312000
CALL DMKCVTDT GET DATE AND TIME 00313000
LA R2,11(R2) UPDATE TO NEXT SLOT 00314000
BAL R6,NEXT3A SET UP CCW FOR NEXT 3 LINES 00315000
BAL R6,NEXT1 GET PRINT AND TIC CCW 00316000
LA R9,CONSTANT ADDRESS OF DATA CONTANTS 00317000
MVC 23(8,R2),=C'LOCATION' Move in 'LOCATION' HRC108DK 00318100
L R3,=A(DMKSYSID) Get address of SYSID HRC108DK 00318200
MVC 45(8,R2),0(R3) Move in SYSID HRC108DK 00318300
MVC 33(6,R2),=C'USERID' Move in 'USERID' HRC108DK 00318400
MVC 57(8,R2),SFBUSER Move in USERID HRC108DK 00318500
BAL R6,MVCLINE2 Set next two lines HRC108DK 00318600
MVC 23(8,R2),=C'LOCATION' Move in 'LOCATION' HRC108DK 00318700
L R3,=A(DMKSYSID) Get address of SYSID HRC108DK 00318800
MVC 45(8,R2),0(R3) Move in SYSID HRC108DK 00318900
MVC 33(6,R2),=C'ORIGIN' Move in 'ORIGIN' HRC108DK 00319000
MVC 57(8,R2),SFBORIG Move in origin USERID HRC108DK 00319100
BAL R6,MVCLINE2 SET NEXT TWO LINES 00322000
MVC 23(17,R2),=C'DISTRIBUTION CODE' 00323000
MVC 45(8,R2),SFBDIST MOVE DISTRIBUTION CODE 00324000
CLI SFBDIST,X'40' VALID DIST- CODE ?? 00325000
BH *+10 YES - 00326000
MVC 45(8,R2),SFBUSER NO - USE USER ID- 00327000
BAL R6,MVCLINE2 SET NEXT 2 LINES 00328000
MVC 23(20,R2),=C'SPOOL FILE NAME TYPE' 00329000
MVC 45(24,R2),SFBFNAME MOVE FILE NAME TYPE 00330000
BAL R6,MVCLINE2 00331000
MVC 23(13,R2),=C'CREATION DATE' 00332000
MVC 45(8,R2),SFBDATE MOVE DATE AND 00333000
MVC 54(8,R2),SFBTIME TIME 00334000
BAL R6,MVCLINE2 SET NEXT 2 LINES 00335000
MVC 23(13,R2),=C'SPOOL FILE ID' 00336000
LH R1,SFBFILID CONVERT SPOOL ID 00337000
CALL DMKCVTBD 00338000
STCM R1,15,45(R2) MOVE SPOOL ID 00339000
BAL R6,MVCLINE2 SET NEXT 2 LINES 00340000
MVC 23(12,R2),=C'RECORD COUNT' 00341000
L R1,SFBRECNO GET RECORD COUNT AND CONVERT 00342000
CALL DMKCVTBD 00343000
STCM R1,15,45(R2) STORE COUNT 00344000
C R0,=X'F0F0F0F0' COUNT OVER 4 DIGETS 00345000
BE DIGET4 4 DIGETS ONLY 00346000
STM R0,R1,45(R2) STORE 8 DIGETS 00347000
DIGET4 EQU * 00348000
BAL R6,MVCLINE 00350000
SPACE 00351000
CLI SFBCLAS,C'X' PRINT USER SUPPLIED MSG ? @VA05908 00352100
BNE NOTCONS NO - 00353000
MVC 23(46,R2),DMKSEPHR MOVE IN DEADER MESSAGE 00354000
NOTCONS EQU * 00355000
MVC 87(46,R2),0(R9) MOVE IN NEXT CONSTANT 00356000
LA R9,46(R9) UPDATE CONSTANT ADDRESS 00357000
LR R3,R2 SAVE ADDRESS 00358000
SPACE 00359000
CALL DMKPGTVG OBTAIN VITUAL ADDRESS 00360000
SPACE 00361000
TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM) GET PAGE 00362000
STM R1,R2,SAVEWRK5 SAVE VIRTUAL AND REAL ADDRESS 00363000
STCM R2,15,8(R3) SET UP TIC 00364000
MVI 8(R3),X'08' 00365000
SPACE 00366000
BAL R6,NEXT1 GET PRT AND TIC CCW FOR ONE LINE 00367000
BAL R6,MVCLINE SET NEXT LINE 00368000
MVC 87(46,R2),0(R9) MOVE IN LAST CONSTANT LINE 00369000
BAL R6,NEXT3 SPACE 3 00370000
BAL R6,SPACE1 OVERLAY PRT AND TIC CCW 00371000
SPACE 00372000
SPACE 00373000
MVC SAVEWRK8(8),SFBUSER MOVE USERID TO WORK AREA 00374000
SETBLOCK LA R4,8 MAX CHARACTER LENGTH 00375000
LA R3,SAVEWRK9+4 ADDRESS OF USER ID END + 1 00376000
* CAL THE LENGTH OF THE USER ID AND DISTRIBUTION CODE 00377000
* AND CENTER IT ON THE SEPARATOR PAGE 00378000
SPACE 00379000
LENGTH BCTR R3,0 -1 FROM ADDRESS 00380000
CLI 0(R3),C' ' IS THIS A BLANK 00381000
BNE *+8 NO - END OF SCAN 00382000
BCT R4,LENGTH KEEPING LOOKING FOR BLANK 00383000
SPACE 00384000
LR R3,R4 USER ID LENGTH 00385000
SLL R3,4 TIMES 16 00386000
SR R3,R4 - 2 TIME NUMBER OF CHARACTERS 00387000
SR R3,R4 00388000
BCTR R3,0 00389000
BCTR R3,0 - TWO 00390000
* 00391000
* RESULT EQUALS (NUMBER OF CHARACTERS TIMES 12) PLUS 00392000
* (THE NUMBER OF CHARCTERS MINUS 1 TIMES 2) 00393000
SPACE 00394000
SRL R3,1 DIVIDE BY TWO 00395000
LA R5,66 ONE HALF A PRINT LINE 00396000
SR R5,R3 DISPLACEMENT TO START OUTPUT 00397000
STH R5,SAVEWRK1 SAVE DISPLACEMENT TO START OF OUTPUT 00398000
STC R4,SAVEWRK1+2 SAVE CHARACTER COUNT 00399000
SPACE 00400000
LA R14,144 LENGTH OF A PRINTER RECORD 00401000
LA R15,11*144(,R2) POINT TO 12TH LINE 00402000
SR R1,R1 SET LINE COUNTER TO 0 00403000
SEPLOOP2 LM R3,R5,PRINTIC GET MODEL CCWS - PRINT AND SPACE 00404000
* 1, TIC 00405000
ALR R3,R2 ADJUST DATA ADDRESS IN PRINT 00406000
ALR R5,R2 AND TRANSFER ADDRESS IN TIC 00407000
STM R3,R5,0(R2) AND STORE IN BUFFER 00408000
LA R3,SAVEWRK8 ADDRESS OF CHARACTER STRING 00409000
LA R8,12(R2) START OF OUTPUT AREA 00410000
AH R8,SAVEWRK1 ADJUST TO START OF OUTPUT 00411000
SR R4,R4 SET UP CHARACTER COUNT 00412000
IC R4,SAVEWRK1+2 -- 00413000
MVI 12(R2),C' ' BLANK OUT 00414000
MVC 13(131,R2),12(R2) THE PRINT LINE 00415000
BAL R6,BLOKLETR GO CREATE THE NEXT LINE OF BLOK 00416000
* LETTERS 00417000
LA R1,1(,R1) GET NEXT LINE NUMBER 00418000
BXLE R2,R14,SEPLOOP2 REPEAT FOR 12 LINES OF BLOK LETTERS 00419000
SPACE 3 00420000
BAL R6,NEXT3A SPACE 3 00421000
BAL R6,SPACE1 SPACE 1 00422000
TM SAVEWRK1+3,X'80' DISTRIBUTION CODE DONE ?? 00423000
BO CLEANUP YES 00424000
OI SAVEWRK1+3,X'80' SET SWITCH ON 00425000
CLI SFBDIST,X'40' VALID DIST CODE ?? 00426000
BNH SETBLOCK NO - USE USERID 00427000
MVC SAVEWRK8(8),SFBDIST MOVE DISTRIBUTION TO WORK 00428000
B SETBLOCK GO BLOCK THESE CHARACTERS 00429000
SPACE 00430000
CLEANUP L R8,SAVER8 RESTORE ADDRESS OF RDEVBLOK 00431000
L R10,SAVER10 RESTORE ADDRESS OF IOBLOK 00432000
OI SAVEWRK1+3,X'40' INDICATE FIRST TIME THRU 00433000
LM R3,R4,SENSECCW COMPLETE THE CHANNEL PROGRAN WITH 00434000
STM R3,R4,0(R2) SENSE TO FORCE CONCURRENT CE+DE 00435000
ST R2,SAVEWRK8 POINT TO CCW TO BE CHANGE LATER @VA03492 00436000
STM R3,R4,8(R2) SECOND SENSE TO BE USED PRINTING @VA03492*00437000
LAST PAGE WHEN FIRST SENSE IS CHANGED TO A SKIP TO 1. 00438000
PUNSIO LA R1,SEPIRA GET IRA 00439000
ST R1,IOBIRA AND SAVE IN IOB 00440000
ST R13,IOBMISC SAVE R13 IN IOBLOK 00441000
SEPSIO MVC IOBMISC2(4),=C'SEP ' INDICATE SEPARATOR PAGE 00442000
NI IOBFLAG,X'FF'-IOBRSTRT CLEAR RESTART FLAG 00443000
CALL DMKIOSQR GO WRITE THE BUFFER 00444000
SEPDSP GOTO DMKDSPCH WAIT FOR INTERRUPT @VA01772 00445000
SPACE 3 00446000
SEPIRA EQU * 00447000
USING *,R12 TEMPORARY ADDRESSABILITY 00448000
S R12,=A(SEPIRA-DMKSEP) 00449000
USING DMKSEP,R12 00450000
LR R1,R10 CHECK FOR COPY IOBLOCK @VA01772 00451000
L R10,IOBLINK LOAD ADDRESS OF ORIGINAL @VA01772 00452000
CR R1,R10 COPY IOBLOK PRESENT ? @VA01772 00453000
BE CHK NO--CHECK FOR ERRORS @VA01772 00454000
OI IOBSTAT,IOBFATAL INDICATE FATAL ERROR @VA01772 00455000
LA R0,IOBSIZE LOAD IOBSIZE @VA01772 00456000
CALL DMKFRET RETURN STORAGE @VA01772 00457000
B SEPDSP WAIT FOR DEVICE END @VA01772 00458000
CHK L R13,IOBMISC RESTORE CALLER'S R13 @VA01772 00459000
ST R13,IOBMISC2 CLEAR OUT 'SEP ' 00460000
TM IOBSTAT,IOBFATAL WAS THERE A FATAL IOERROR? 00461000
BO SEPEXIT YES -- LEAVE NOW 00462000
TM SAVEWRK1+3,X'80' PRINTER ?? 00463000
BZ SEPEXIT NO - GET OUT 00464000
TM IOBCSW+4,UE UNIT EXCEPTION ?? 00465000
BZ NOUE NO - 00466000
L R1,IOBCSW GET NEXT CCW ADDRESS 00467000
CLI 0(R1),X'08' IS IT A TIC ?? 00468000
BNE *+8 NO - 00469000
L R1,0(R1) GET ADDRESS OF TIC TO CCW 00470000
LA R1,0(R1) CLEAR HIGH BYTE 00471000
ST R1,IOBCAW STORE IN IOBCAW 00472000
B SEPLP GO CONTINUE PRINTING 00473000
SPACE 00474000
NOUE TM SAVEWRK1+3,X'40' LAST TIME ?? 00475000
BZ SEPEXIT YES - LEAVE 00476000
L R1,SAVEWRK8 POINT TO FIRST OF TWO SENSE CCW'S@VA03492 00477000
MVC 0(8,R1),SKIPTO1 AND REPLACE WITH SKIP TO 1 @VA03492 00478000
L R1,SAVEWRK7 GET IOBCAW FOR THIRD PAGE 00479000
ST R1,IOBCAW AND STORE IN IOB 00480000
NI SAVEWRK1+3,X'BF' RESET FIRST PAGE SWITCH 00481000
SEPLP L R8,SAVER8 RESTORE ADDRESS OF RDEVBLOK 00482000
B SEPSIO AND REPEAT THE THE SEPARATOR PAGE 00483000
SPACE 3 00484000
PUNTYPE EQU * HERE TO SET UP FOR PUNCHING SEP CARDS 00485000
* 00486000
LR R6,R2 ADDRESS OF LOCK PAGE 00487000
LA R14,4 NUMBER OF CCWS 00488000
PUNLOOP LM R3,R4,PUNCCW GET MODEL CCW FOR PUNCH 00489000
ALR R3,R2 UPDATE DATA ADDRESS TO REAL ADDRESS 00490000
STM R3,R4,0(R6) STORE CCWS IN LOCK BUFFER 00491000
LA R6,8(R6) UPDATE TO NEXT SPACE 00492000
BCT R14,PUNLOOP NEXT CCW 00493000
MVC 0(8,R6),PUNSNSE MOVE DUMMY SENSE CCW TO BUFFER 00494000
LA R3,0(R3) POINT DATA BUFFER 00495000
MVI 0(R3),C' ' CLEAR BUFFER 00496000
MVC 1(79,R3),0(R3) TO BLANKS 00497000
SPACE 00498000
MVC 0(8,R3),SFBUSER MOVE IN USER'S I.D. COL 1-8 00499000
MVC 9(8,R3),SFBORIG ORIGINATING USERID @V200930 00500000
MVC 18(8,R3),SFBDIST DIST CODE @V200930 00501000
CLI 18(R3),C' ' IS IT BLANK ?? @V200930 00502000
BH *+10 YES - 00503000
MVC 18(8,R3),SFBUSER SET DIST CODE TO USERID @V200930 00504000
LA R14,4 CHARACTER COUNTER 00505000
LA R4,8 NUMBER OF CHARACTER IN MAX ID 00506000
LA R1,25(R3) END OF DIST CODE @V200930 00507000
LA R2,72(R3) END OF EXPANDED DIST CODE @V200930 00508000
MVCNAME MVC 0(1,R2),0(R1) MOVE ONE CHARACTER 00509000
BCTR R2,0 -1 OUTPUT ADDRESS 00510000
BCT R14,MVCNAME LOOP 4 TIMES 00511000
BCTR R2,0 OUTPUT AREA - 2 00512000
BCTR R2,0 00513000
BCTR R1,0 -1 INPUT ADDRESS 00514000
LA R14,4 SET UP COUNTER 00515000
BCT R4,MVCNAME LOOP FOR 8 CHARACTERS 00516000
MVC 73(7,R3),=X'04040404040404' COL 73-80, FLAG @V200930 00517000
* BYTES 00518000
B PUNSIO 00519000
SPACE 3 00520000
MVCLINE2 LR R1,R6 SAVE RETURN ADDRESS 00521000
BAL R6,MVCLINE MOVE CONSTANT AND CCW FOR 1 LENE 00522000
LR R6,R1 RESTORE RETURN ADDRESS 00523000
SPACE 00524000
MVCLINE MVC 87(46,R2),0(R9) MOVE CONTANT TO BUFFER 00525000
LA R9,46(R9) UPDATE TO NEXT CONSTANT 00526000
NEXTLINE LA R2,144(R2) SET BUFFER ADDRESS TO NEXT SLOT 00527000
NEXT1 LM R3,R5,PRINTIC PRINT AND TIC CCW 00528000
ALR R3,R2 00529000
ALR R5,R2 UPDATE ADDRESSES 00530000
STM R3,R5,0(R2) STORE IN OUTPUT BUFFER 00531000
MVI 12(R2),C' ' CLEAR DATA AREA 00532000
MVC 13(131,R2),12(R2) 00533000
BR R6 RETURN TO CALLER 00534000
SPACE 00535000
SPACE1 LM R3,R4,SPACE3 GET CCW AND 00536000
STM R3,R4,0(R2) AND STORE 00537000
MVI 0(R2),X'0B' CHANGE TO 1 SPACE CCW OP-CODE 00538000
LA R2,8(R2) UPDATE DATA ADDRESS 00539000
BR R6 RETURN TO CALLER 00540000
SPACE 00541000
NEXT3 LA R2,144(R2) UPDATE TO NEXT SLOT 00542000
NEXT3A LM R3,R4,SPACE3 CCW 00543000
STM R3,R4,0(R2) STORE SPACE3 CCW 00544000
LA R2,8(R2) UPDATE TO DATA AREA 00545000
BR R6 RETURN TO CALLER 00546000
SPACE 00547000
SEPEXIT EQU * 00548000
TM SAVEWRK1+3,X'80' PRINTER ?? 00549000
BZ EXIT NO - 00550000
LM R1,R2,SAVEWRK5 RELOAD VIRUAL AND REAL ADDRESS 00551000
CALL DMKPTRUL 00552000
SPACE 00553000
CALL DMKPGTVR 00554000
SPACE 00555000
EXIT NI IOBFLAG,X'FF'-IOBRSTRT RESET RESTART FLAG 00556000
EXIT 00557000
EJECT 00558000
*. 00559000
* 00560000
* OPERATION OF THE BLOCK LETTER GENERATION SUBROUTINE - 00561000
* 00562000
* ENTRY CONDITIONS - 00563000
* 00564000
* GPR1 = RELATIVE LINE NUMBER OF THE 12 LINE MATRIX (0-11) 00565000
* GPR3 = ADDRESS OF THE CHARACTER STRING TO BE TRANSLATED 00566000
* GPR4 = NUMBER OF CHARACTERS TO BE TRANSLATED 00567000
* GPR6 = RETURN ADDRESS 00568000
* GPR8 = ADDRESS OF OUTPUT AREA FOR TRANSLATION 00569000
* 00570000
* UPON ENTRY, THE OUTPUT AREA POINTED TO BY GPR8 SHOULD HAVE 00571000
* BEEN CLEARED TO BLANKS BY THE CALLER. THE OUTPUT AREA MUST BE 00572000
* LONG ENOUGH TO HOLD 12 CHARACTERS FOR EACH CHARACTER 00573000
* TRANSLATED, PLUS 2 SPACES BETWEEN EACH BLOK LETTER. FOR 00574000
* EXAMPLE, IF 5 CHARACTERS ARE TO BE TRANSLATED, THE OUTPUT AREA 00575000
* FOR THE TRANSLATOR MUST BE AT LEAST (5*12)+(4*2)= 68 BYTES 00576000
* LONG. IT IS THE RESPONSIBILITY OF THE CALLER TO INSURE THAT 00577000
* THE OUTPUT AREAS FOR THE 12 LINES ARE VERTICALLY ALIGNED ON 00578000
* THE PAGE WHEN THEY ARE FINALLY PRINTED 00579000
* 00580000
* EXIT CONDITIONS - 00581000
* 00582000
* NORMAL - 00583000
* THE OUTPUT AREA IS FILLED WITH A LINE OF CHARACTERS, ONE 00584000
* GROUP OF 12 FOR EACH OF THE LETTERS TRANSLATED 00585000
* 00586000
* ERROR - 00587000
* NONE 00588000
* 00589000
* REGISTER USAGE - 00590000
* 00591000
* GPR0 = CHARACTER REGISTER - HOLDS THE CHARACTER TO BE TRANS- 00592000
* LATED 00593000
* GPR1 = RELATIVE LINE NUMBER (0-11) IN MATRIX 00594000
* GPR2 - NOT USED 00595000
* GPR3 = ADDRESS OF NEXT LETTER TO TRANSLATE 00596000
* GPR4 = NUMBER OF LETTERS REMAINING TO BE TRANSLATED 00597000
* GPR5 = SHIFT REGISTER FOR PATTERN DETERMINATION 00598000
* GPR6 = RETURN ADDRESS 00599000
* GPR7 - NOT USED 00600000
* GPR8 = ADDRESS OF LOCATION FOR NEXT 12 BYTE PATTERN 00601000
* GPR9 = INDEX REGISTER FOR LINE AND PATTERN TABLES 00602000
* GPR10 = INDEX FOR NEXT BYTE STORE ADDRESS 00603000
* GPR11-13 - NOT USED 00604000
* GPR14,15 - BXLE LOOP CONTROL 00605000
* 00606000
* NOTE THAT GPR14-0 ARE SAVED AND RESTORED, REGISTERS 3-5 AND 00607000
* 8-10 WILL BE DESTROYED, AND THE OTHERS WILL BE UNCHANGED 00608000
* 00609000
EJECT 00610000
* 00611000
* NOTES - 00612000
* 00613000
* THIS ROUTINE IS AN ADAPTATION OF THE OS/360 MODULE 'IEFSD095 00614000
* BLOCK LETTER AND NUMBER ROUTINE' 00615000
* 00616000
* OPERATION - 00617000
* 00618000
* 1. THE PATTERN TO BE STORED FOR A GIVEN LETTER 00619000
* OR NUMBER IS DETERMINED BY INDEXING INTO A PATTERN TABLE 00620000
* BASED ON THE HEXADECIMAL VALUE OF THE CHARACTER. WHEN 00621000
* THE PROPER ENTRY IS FOUND, IT IS FURTHER INDEXED BY THE 00622000
* RELATIVE LINE NUMBER THAT IS BEING PRODUCED. THE RESULTING 00623000
* NUMBER IS USED TO INDEX INTO A BIT TABLE WHERE EACH ENTRY 00624000
* IS TWELVE BITS LONG AND INDICATES VIA A ONE OR ZERO BIT 00625000
* WHETHER OR NOT A CHARACTER IS TO BE STORED IN A COLUMN OF 00626000
* OF THAT ROW OF THE MATRIX 00627000
* 00628000
* 2. THE BIT MAP IS INSERTED INTO THE HIGH ORDER HALFWORD 00629000
* OF A REGISTER, WHICH IS THEN SHIFTED AND TESTED VIA A BXH 00630000
* LOOP. IF A ONE BIT IS SHIFTED INTO THE HIGH ORDER (0) 00631000
* POSITION OF THE REGISTER, A CHARACTER IS STORED IN THE 00632000
* CORRESPONDING COLUMN OF THE MATRIX; IF NO BIT IS SHIFTED, 00633000
* NO CHARACTER IS STORED 00634000
* 00635000
* 3. AS THE REGISTER IS SHIFTED AND TESTED, THE COLUMN INDEX IS 00636000
* INCREMENTED AND ALWAYS POINTS TO THE NEXT POSITION TO BE 00637000
* FILLED; THEREFOR, IF NO CHARACTER IS STORED, THE COLUMN 00638000
* REMAINS BLANK 00639000
* 00640000
* 4. AFTER THE 12TH COLUMN HAS BEEN PROCESSED, THE TRANSLATION 00641000
* COUNT IS DECREMENTED AND TESTED AND ANY FURTHER LETTERS ARE 00642000
* TRANSLATED IN THE SAME MANNER 00643000
* 00644000
*. 00645000
EJECT 00646000
BLOKLETR EQU * HERE TO GENERATE BLOCK LETTERS FOR THE PAGE SEPARATOR 00647000
SPACE 2 00648000
STM R14,R0,SAVEWRK2 SAVE REGS 14, 15, AND 0 00649000
SR R0,R0 CLEAR CHARACTER REGISTER 00650000
LA R14,1 GENERAL INCREMENT REGISTER 00651000
LA R15,11 OFFSET OF LAST MATRIX CHARACTER 00652000
GETCHAR SR R10,R10 OFFSET OF 1ST MATRIX CHARACTER 00653000
IC R0,0(,R3) PICK UP NEXT CHARACTER 00654000
LR R9,R0 AND SAVE IT 00655000
O R9,=XL4'C0' FORCE INTO THE RANGE OF UPPER CASE 00656000
IC R9,CHARTABL-X'C0'(R9) GET OFFSET FOR CHARACTER PATTERN 00657000
LTR R5,R9 WAS CHARACTER A BLANK? 00658000
BZ NEXTCHAR YES -- SKIP TO NEXT CHARACTER 00659000
AR R5,R5 MULTIPLY OFFSET BY 2 00660000
LA R5,CHARPATN-12(R5) AND POINT TO CHARACTER PATTERN 00661000
IC R9,0(R1,R5) GET OFFSET INTO LINE PATTERN TABLE 00662000
LH R5,LINEPATN(R9) AND GET LINE PATTERN IN R5 00663000
SLL R5,19 SHIFT LINE PATTERN INTO BITS 1-12 00664000
AR R5,R14 AND INSERT LOW ORDER 1 00665000
SPACE 3 00666000
BLOKLOOP BXH R5,R5,*+8 TEST FOR A ONE BIT SHIFTED INTO HIGH 00667000
* ORDER POSITION -- IF BIT WAS SHIFTED, BRANCH WILL NOT 00668000
* BE TAKEN, SINCE RESULTING SUM IS NEGATIVE, AND A CHAR- 00669000
* ACTER WILL BE STORED. IF BIT WAS NOT SHIFTED, SUM WILL BE POS- 00670000
* ITIVE, AND ONE GREATER THAN LAST VALUE IN R5 00671000
STC R0,0(R10,R8) STORE MATRIX CHARACTER 00672000
BXLE R10,R14,BLOKLOOP POINT TO SLOT FOR NEXT CHAR 00673000
* ACTER, AND LOOP 11 MORE TIMES 00674000
NEXTCHAR AR R3,R14 POINT TO NEXT CHARACTER TO TRANSLATE 00675000
LA R8,14(,R8) POINT TO NEXT SLOT IN WORKAREA 00676000
BCT R4,GETCHAR GET NEXT CHARACTER, IF THERE IS ONE 00677000
SPACE 2 00678000
LM R14,R0,SAVEWRK2 RESTOR REGS 14, 15, AND 0 @VA11473 00679100
BR R6 AND RETURN TO CALLER 00680000
EJECT 00681000
CHARTABL EQU * TABLE OF OFFSETS INTO CHARPATN TABLE -- 00682000
* SINCE EACH ENTRY IN THE CHARPATN TABLE IS 12 BYTES, 00683000
* THESE INDICES ARE REALLY ONLY HALF AS BIG AS THE ACTUAL 00684000
* OFFSET. AFTER THE INDEX IS FOUND, IT IS MULTIPLIED BY 2 00685000
SPACE 3 00686000
SPACE 3 00687000
DC X'00' BLANK 00688000
DC AL1(((A-XX)/2),((B-XX)/2),((C-XX)/2),((D-XX)/2)) 00689000
DC AL1(((E-XX)/2),((F-XX)/2),((G-XX)/2),((H-XX)/2)) 00690000
DC AL1((I-XX)/2) 00691000
DC 7X'00' UNDEFINED GRAPHICS - FORCED TO 00692000
* BLANKS 00693000
DC AL1(((J-XX)/2),((K-XX)/2),((L-XX)/2),((M-XX)/2)) 00694000
DC AL1(((N-XX)/2),((O-XX)/2),((P-XX)/2),((Q-XX)/2)) 00695000
DC AL1((R-XX)/2) 00696000
DC 8X'00' UNDEFINED GRAPHICS - FORCED TO 00697000
* BLANKS 00698000
DC AL1(((S-XX)/2),((T-XX)/2),((U-XX)/2),((V-XX)/2)) 00699000
DC AL1(((W-XX)/2),((X-XX)/2),((Y-XX)/2),((Z-XX)/2)) 00700000
DC 6X'00' UNDEFINED GRAPHICS - FORCED TO 00701000
* BLANKS 00702000
DC AL1(((ZERO-XX)/2),((ONE-XX)/2),((TWO-XX)/2)) 00703000
DC AL1(((THREE-XX)/2),((FOUR-XX)/2),((FIVE-XX)/2)) 00704000
DC AL1(((SIX-XX)/2),((SEVEN-XX)/2),((EIGHT-XX)/2)) 00705000
DC AL1((NINE-XX)/2) 00706000
DC 6X'00' UNDEFINED GRAPHICS - FORCED TO 00707000
* BLANKS 00708000
SPACE 3 00709000
*********************************************************************** 00710000
* * 00711000
* FOLLOWING IS THE CHARACTER PARM LIST CONTAINING 444 BYTES * 00712000
* WHERE EACH BYTE IS THE OFF SET FROM L1 IN THE LINE PARAMETER * 00713000
* LIST WHERE ONE LINE PATTERN OF A PARTICULAL CHARACTER IS * 00714000
* STORED . A CHARACTER IS REPRESENTED BY 12 ORDERED LINE * 00715000
* PATTERNS .FOR EXAMPLE A IS REPRESENTED BY THE FOLLOWING * 00716000
* ORDERED LINE PATTERNS L2,L1,L5,L5,L5,L1,L1,L5,L5,L5,L5,L5 * 00717000
* AND WILL APPEAR ON THE PRINTER AS FOLLOWS * 00718000
* * 00719000
* AAAAAAAAAA * 00720000
* AAAAAAAAAAAA * 00721000
* AA AA * 00722000
* AA AA * 00723000
* AA AA * 00724000
* AAAAAAAAAAAA * 00725000
* AAAAAAAAAAAA * 00726000
* AA AA * 00727000
* AA AA * 00728000
* AA AA * 00729000
* AA AA * 00730000
* AA AA * 00731000
* * 00732000
*********************************************************************** 00733000
CHARPATN EQU * 00734000
XX EQU *-12 JUST FOR EASE OF TYPING 00735000
A DC X'020008080800000808080808' 00736000
B DC X'2C000808322A2A320808002C' 00737000
C DC X'020008262626262626080002' 00738000
D DC X'282A32080808080808322A28' 00739000
E DC X'000026262668682626260000' 00740000
F DC X'000026262668682626262626' 00741000
G DC X'020008262626343408080002' 00742000
H DC X'080808080800000808080808' 00743000
I DC X'020214141414141414140202' 00744000
J DC X'66660A0A0A0A0A0A3A3A686A' 00745000
K DC X'08322E3C3A36363A3C2E3208' 00746000
L DC X'262626262626262626260000' 00747000
M DC X'083E40424446080808080808' 00748000
N DC X'086C6E484A464E5052540876' 00749000
O DC X'000008080808080808080000' 00750000
P DC X'2C00080808002C2626262626' 00751000
Q DC X'020008080808084E50522C56' 00752000
R DC X'2C00080808002C3A3C2E3208' 00753000
S DC X'02000826585A5C5E64080002' 00754000
T DC X'000014141414141414141414' 00755000
U DC X'080808080808080808080002' 00756000
V DC X'080808080808083062206014' 00757000
W DC X'080808080808464442403E08' 00758000
X DC X'080830622060602062300808' 00759000
Y DC X'080830622060141414141414' 00760000
Z DC X'00001070120A147216742400' 00761000
ZERO DC X'040208080808080808080204' 00762000
ONE DC X'140C0E141414141414140202' 00763000
TWO DC X'020008646410121416180000' 00764000
THREE DC X'02000864641A1A6464080002' 00765000
FOUR DC X'061C1E202224001212121212' 00766000
FIVE DC X'0000262626282A106464002C' 00767000
SIX DC X'02000826262C000808080002' 00768000
SEVEN DC X'002C2E120A14141414141414' 00769000
EIGHT DC X'020008083004043008080002' 00770000
NINE DC X'020008080800006464080002' 00771000
SPACE 3 00772000
*********************************************************************** 00773000
* * 00774000
* FOLLOWING IS THE LINE PARAMETER LIST CONTAINING 60 * 00775000
* DISTINCT LINE PATTERNS . IF THE BIT IS ON THE CHARACTER * 00776000
* WILL BE PRINTED, AND IF THE BIT IS OFF THE PRINTING OF 00777000
* THE CHARACTER IS SUPPRESSED . A COMBINATION OF 12 LINE * 00778000
* PATTERNS ( AS SPECIFIED IN THE CHARACTER REPRESENTATION * 00779000
* LIST ) REPRESENTS EITHER A BLANK , A LETTER FROM A TO Z, * 00780000
* OR A NUMBER FROM 0 TO 9 . * 00781000
* * 00782000
*********************************************************************** 00783000
LINEPATN DS 0F 00784000
L1 DC BL2'111111111111' 00785000
L2 DC BL2'011111111110' 00786000
L3 DC BL2'001111111100' 00787000
L4 DC BL2'000000111000' 00788000
L5 DC BL2'110000000011' 00789000
L6 DC BL2'000000110000' 00790000
L7 DC BL2'000011100000' 00791000
L8 DC BL2'000111100000' 00792000
L9 DC BL2'000000000110' 00793000
L10 DC BL2'000000011000' 00794000
L11 DC BL2'000001100000' 00795000
L12 DC BL2'000110000000' 00796000
L13 DC BL2'011000000000' 00797000
L14 DC BL2'000000011110' 00798000
L15 DC BL2'000001111000' 00799000
L16 DC BL2'000011011000' 00800000
L17 DC BL2'000110011000' 00801000
L18 DC BL2'001100011000' 00802000
L19 DC BL2'011111111111' 00803000
L20 DC BL2'110000000000' 00804000
L21 DC BL2'111111111000' 00805000
L22 DC BL2'111111111100' 00806000
L23 DC BL2'111111111110' 00807000
L24 DC BL2'110000001100' 00808000
L25 DC BL2'011000000110' 00809000
L26 DC BL2'110000000110' 00810000
L27 DC BL2'110000011111' 00811000
L28 DC BL2'111111100000' 00812000
L29 DC BL2'110001100000' 00813000
L30 DC BL2'110000110000' 00814000
L31 DC BL2'110000011000' 00815000
L32 DC BL2'111000000111' 00816000
L33 DC BL2'111100001111' 00817000
L34 DC BL2'110110011011' 00818000
L35 DC BL2'110011110011' 00819000
L36 DC BL2'110001100011' 00820000
L37 DC BL2'110110000011' 00821000
L38 DC BL2'110011000011' 00822000
L39 DC BL2'000000000000' 00823000
L40 DC BL2'110000110011' 00824000
L41 DC BL2'110000011011' 00825000
L42 DC BL2'110000001111' 00826000
L43 DC BL2'110000000111' 00827000
L44 DC BL2'011111111011' 00828000
L45 DC BL2'111000000000' 00829000
L46 DC BL2'011111111100' 00830000
L47 DC BL2'001111111110' 00831000
L48 DC BL2'000000000111' 00832000
L49 DC BL2'000011110000' 00833000
L50 DC BL2'001100001100' 00834000
L51 DC BL2'000000000011' 00835000
L52 DC BL2'001111111111' 00836000
L53 DC BL2'111111110000' 00837000
L54 DC BL2'011111100000' 00838000
L55 DC BL2'111000000011' 00839000
L56 DC BL2'111100000011' 00840000
L57 DC BL2'000000001100' 00841000
L58 DC BL2'000011000000' 00842000
L59 DC BL2'001100000000' 00843000
L60 DC BL2'110000000001' 00844000
SPACE 3 00845000
BOXFLAG DC X'00' BOX COMPLETE FLAG @VA05226 00845500
VERSION DC C' VM/370 VERSION ' 00847000
VERID DC C'00' 00848000
DC C' LEVEL ' 00849000
LEVELID DC C'00 ' 00850000
DC C'PLC ' @VA03492 00851000
PLCID DC C'0000 ' TARGET FOR PLC ID @VA03492 00852000
MSGSIZE EQU *-VERSION LENGTH OF LEVEL ID MSG @VA03492 00853000
SPACE 00854000
SKIPTO1 CCW X'8B',*-*,CC+SILI,1 MODEL CCW - IMMEDIATE SKIP TO 1 00855000
SPACE3 CCW X'1B',*-*,CC+SILI,1 MODEL CCW - SPACE 3 LINES IMMEDIATE 00856000
SENSECCW CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE CCW 00857000
PRINTIC CCW X'09',12,CC+SILI,132 MODEL CCWS - PRINT AND SPACE 1 00858000
DC AL1(8) AND TIC 00859000
DC AL3(144) 00860000
SPACE 3 00861000
PUNCCW CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 1ST CARD 00862000
CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 2ND CARD 00863000
CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 3RD CARD 00864000
CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 4TH CARD 00865000
CCW X'41',PUNEND-PUNCCW,CC+SILI,80 PUNCH CCW 5TH CARD 00866000
PUNSNSE CCW 4,0,SILI+SKIP,1 DUMMY SENSE CCW 00867000
PUNEND EQU * 00868000
SPACE 00869000
LOADCK CCW X'01',23,SILI+CC,1 VER UCS LOAD/BLK DATA LATCH @VA14226 00870000
LOADSNS CCW X'04',*-*,SILI+SKIP,1 DUMMY SENSE CCW 00871000
RSTRCCW1 CCW X'1B',*-*,CC+SILI,255 SPACE 3 @V60A6B6 00872000
CCW X'09',56,CC+SILI,132 PRINT AND SPACE 1 00873000
RSTRCCW2 CCW X'09',163,CC+SILI,132 PRINT AND SPACE 1 00874000
CCW X'09',56,SILI+CC,132 PRINT AND SPACE 1 00875000
RSTRCCW3 CCW X'04',*-*,SILI+SKIP,1 PHONY SENSE 00876000
SPACE 00877000
SPACE 2 00878000
LTORG 00879000
EJECT 00880000
CONSTANT EQU * 00881000
DC CL46'**********************************************' 00882000
DC CL46'* *' 00883000
DC CL46'* IIIIIIIIIIII BBBBBBBBBBB MM MM *' 00884000
DC CL46'* IIIIIIIIIIII BBBBBBBBBBBB MMM MMM *' 00885000
DC CL46'* II BB BB MMMM MMMM *' 00886000
DC CL46'* II BB BB MM MM MM MM *' 00887000
DC CL46'* II BB BB MM MMMM MM *' 00888000
DC CL46'* II BBBBBBBBBB MM MM MM *' 00889000
DC CL46'* II BBBBBBBBBB MM MM *' 00890000
DC CL46'* II BB BB MM MM *' 00891000
DC CL46'* II BB BB MM MM *' 00892000
DC CL46'* II BB BB MM MM *' 00893000
DC CL46'* IIIIIIIIIIII BBBBBBBBBBBB MM MM *' 00894000
DC CL46'* IIIIIIIIIIII BBBBBBBBBBB MM MM *' 00895000
DC CL46'* *' 00896000
DC CL46'**********************************************' 00897000
DMKSEPHR DC CL46' ' SPACE FOR CLASS X PAGE HEADER 00898000
EJECT 00899000
COPY VMBLOK 00900000
COPY SAVE 00901000
COPY SPOOL 00902000
COPY RBLOKS 00903000
COPY IOBLOKS 00904000
COPY EQU 00905000
COPY DEVTYPES 00906000
PSA 00907000
END 00908000