MACRO 00010000 &NAME @PRINT &DATA,&LEN=132,&DEV=X'00E',&GEN=NO 00020000 LCLC &NM 00030000 LCLC &NDX 00040000 LCLA &K 00050000 &NDX SETC '&SYSNDX' 00060000 AIF ('&GEN' EQ 'YES').GEN 00070000 AIF ('&DATA'(1,1) EQ '''').STRING 00080000 &NAME @RGCK &DATA,REG=R1 00090000 @RGCK &LEN,REG=R0 00100000 LA R15,@PRINT 00110000 BALR R14,R15 00120000 MEXIT , 00130000 .* 00140000 .* 00150000 .STRING ANOP , 00160000 &NAME LA R1,=C&DATA 00170000 &K SETA K'&DATA 00180000 &K SETA &K-2 00190000 LA R0,&K 00200000 LA R15,@PRINT 00210000 BALR R14,R15 00220000 MEXIT , 00230000 .* 00240000 .* 00250000 .GEN ANOP , 00260000 @PRINT STM R14,R12,12(R13) SAVE CALLERS REGISTERS 00270000 LR R2,R1 POINT TO DATA TO PRINT 00280000 LR R3,R0 LENGTH OF DATA TO PRINT 00290000 LA R1,132 MAX LENGTH WE CAN PRINT 00300000 CR R3,R1 TOO BIG 00310000 BNH @&NDX.01 NO - BRANCH 00320000 LR R3,R1 SET TO MAX 00330000 @&NDX.01 DS 0H 00340000 ST R2,@&NDX.90 SAVE DATA ADDR INTO CCW 00350000 MVI @&NDX.90,X'09' PRINT: SINGLE SPACE 00360000 ST R3,@&NDX.90+4 SAVE LENGTH INTO CCW 00370000 LA R1,@&NDX.90 POINT TO CCW 00380000 ST R1,72 SAVE INTO CAW 00390000 LA R2,&DEV GET PRINT DEVICE ADDRESS 00400000 SIO 0(R2) 00410000 BNZ @&NDX.81 BRANCH IF ERROR 00420000 @&NDX.02 DS 0H 00430000 TIO 0(R2) WAIT FOR I/O TO COMPLETE 00440000 BZ @&NDX.03 COMPLETE 00450000 BC 1,@&NDX.82 BRANCH IF ERROR 00460000 B @&NDX.02 LOOP BACK AND WAIT 00470000 * 00480000 @&NDX.03 DS 0H 00490000 LM R14,R12,12(R13) RESTORE REGISTERS 00500000 BR R14 00510000 * 00520000 @&NDX.81 LPSW @ERRPRT1 LOAD WAIT PSW 00530000 @&NDX.82 LPSW @ERRPRT2 LOAD WAIT PSW 00540000 DS 0D 00550000 @&NDX.90 DC X'00',AL3(0),X'00',X'00',AL2(0) CCW 00560000 MEND , 00570000