mirror of
https://github.com/moshix/mvs.git
synced 2026-05-05 15:53:52 +00:00
954 lines
28 KiB
Plaintext
954 lines
28 KiB
Plaintext
TITLE 'T370 - CONVERT A370 OBJ FILE TO 370 OBJECT FORMAT'
|
||
*
|
||
* PGM-ID. T370.ALC
|
||
* AUTHOR. DON HIGGINS.
|
||
* DATE. 08/13/87.
|
||
* REMARKS. THIS PROGRAM READS OBJ FILE CREATED BY A370 AND
|
||
* CREATES 370 RELOCATABLE OBJECT DECK FILE.
|
||
* MAINTENANCE.
|
||
*
|
||
* 08/16/87 COMPLETE INITIAL CODING.
|
||
* 08/19/87 COMPLETE INITAL DEBUGGING AND DOCUMENTATION REL 1.0
|
||
* 01/03/88 USE STD. OS PARM REL 1.1
|
||
*
|
||
*
|
||
*
|
||
* PARMS. T370 FILE/LCP
|
||
*
|
||
* FILE IS NAME OF FILE OF THE TYPE FILE.OBJ.
|
||
* OUTPUT OF T370 IS FILE OF THE TYPE FILE.370.
|
||
* THE OPTIONAL PARMS ARE AS FOLLOWS:
|
||
*
|
||
* L - LIST FORMATTED HEX OBJECT RECORDS IN FILE.HEX (DEFAULT OFF).
|
||
* C - LIST FORMATTED HEX OBJECT RECORDS ON CONSOLE (DEFAULT OFF).
|
||
* P - OUTPUT 370 EBCDIC OBJECT RECORDS TO FILE.370. (DEFAULT ON).
|
||
*
|
||
* CODING P ON PARM, TURNS 370 OUTPUT FILE OFF.
|
||
*
|
||
* THE FORMAT OF THE OBJECT RECORDS IS AS FOLLOWS:
|
||
*
|
||
* TYPE COLUMN DESCRIPTION
|
||
*
|
||
* ESD 01-01 X'02' EXTERNAL SYMBOL DICTIONARY ID
|
||
* 02-04 C'ESD'
|
||
* 05-10 BLANK
|
||
* 11-12 NUMBER OF BYTES OF ESD DATA
|
||
* 13-14 BLANK
|
||
* 15-16 ESD IDENTIFIER OF FIRST ITEM OR BLANK FOR LD
|
||
* 17-72 ESD ENTRIES (UP TO 3) AS FOLLOWS:
|
||
* 01-08 NAME OF SD, LD, ER
|
||
* 09-09 TYPE (HEX)
|
||
* 00 - SD
|
||
* 01 - LD
|
||
* 02 - ER
|
||
* 10-12 23 BIT ADDRESS (SD,PC,LD)
|
||
* 13-13 ALIGNMENT FACTOR (HEX)
|
||
* 07 - DOUBLEWORD
|
||
* 03 - WORD ALIGNMENT
|
||
* 01 - HALF WORD
|
||
* 00 - BYTE ALIGNMENT
|
||
* 14-16 ZERO IF LENGTH ON END RECORD
|
||
* LENGTH OF CONTROL SECTION
|
||
* IDENTIFIER OF SD CONTAINING NAME
|
||
* BLANK IF ER
|
||
* 73-80 RECORD SEQUENCE FIELD NOT USED BY LINKERS
|
||
*
|
||
* TXT 01-01 X'02'
|
||
* 02-04 C'TXT'
|
||
* 05-05 BLANK
|
||
* 06-08 24 BIT ADDRESS OF FIRST BYTE OF TEXT
|
||
* 09-10 BLANK
|
||
* 11-12 NUMBER OF BYTES OF TEXT
|
||
* 13-14 BLANK
|
||
* 15-16 ESD IDENTIFIER OF SD CONTAINING THIS TEXT
|
||
* 17-72 TEXT DATA
|
||
* 73-80 RECORD SEQUENCE FIELD NOT USED BY LINKERS
|
||
*
|
||
* RLD 01-01 X'02'
|
||
* 02-04 C'RLD'
|
||
* 05-10 BLANK
|
||
* 11-12 NUMBER OF BYTES OF RLD DATA
|
||
* 13-16 BLANK
|
||
* 17-72 RLD DATA ENTRIES AS FOLLOWS:
|
||
* 01-02 ESDID OF CESD ENTRY FOR SYMBOL BEING DEFINED
|
||
* 03-04 ESDID OF SD CONTAINING ADDRESS CONSTANT
|
||
* 05-05 FLAG FIELD (TTTTLLST)
|
||
*
|
||
* TTTT - 0000 NONBRANCH
|
||
* 0001 BRANCH
|
||
* 0011 PSEUDO REGISTER
|
||
* LL - 01 TWO BYTES
|
||
* 10 THREE BYTES
|
||
* 11 FOUR BYTES
|
||
* S - 0 POSITIVE RELOCATION
|
||
* 1 NEGATIVE RELOCATION
|
||
* T - 0 NEXT RLD ENTRY HAS POINTERS
|
||
* 1 NEXT RLD HAS SAME POINTERS
|
||
* (BYTES 01-04 OMITTED FOR NEXT)
|
||
*
|
||
* 73-80 RECORD SEQUENCE FIELD NOT USED BY LINKERS
|
||
*
|
||
* END 01-01 X'02'
|
||
* 02-04 C'END'
|
||
* 05-05 BLANK
|
||
* 06-08 24 BIT ADDRESS OF ENTRY POINT (OPTIONAL)
|
||
* 09-14 BLANK
|
||
* 15-16 ESDID OF SD CONTAINING ENTRY
|
||
* 17-28 BLANK
|
||
* 29-32 CONTROL SECTION LENGTH IF NOT IN SD
|
||
* (29=X'00' IF PRESENT)
|
||
* 33-72 BLANK
|
||
* 73-80 RECORD SEQUENCE FIELD NOT USED
|
||
*
|
||
* THE INPUT FILE FORMAT IS AN EXTENSION OF MICROSOFT
|
||
* M80 MACRO ASSEMBLER RELOCATABLE BIT STREAM FILE.
|
||
*
|
||
* FOR EXAMPLE, RUN BAT\RUNUTIL.BAT.
|
||
*
|
||
T370 CSECT
|
||
LR R12,R15
|
||
LA R13,2048(R12)
|
||
LA R13,2048(R13)
|
||
USING T370,R12
|
||
USING T370+4096,R13
|
||
LA R2,=C'T370.COM R1.1 - CONVERT PC/370 OBJ FILE TO 370 FILE$'
|
||
SVC WTO
|
||
BAL R14,INIT GET PARMS AND INITIALIZE FILES
|
||
BNZ EOJ
|
||
SR R6,R6 NO BITS
|
||
LA R7,UT1RCD+L'UT1RCD FORCE BUFFER RELOAD
|
||
LA R8,4
|
||
LA R9,UT1RCD+L'UT1RCD END OF BUFFER FOR BXH
|
||
LOOP EQU *
|
||
BAL R14,GBIT IF NEXT BIT 0, NEXT BYTE IS ABS TEXT
|
||
BNZ NOTTXT
|
||
TXTTYPE EQU * GET NEXT ABS BYTE AND STORE IN TXT RECORD
|
||
BAL R14,GBYTE
|
||
LM R1,R3,TXTREGS
|
||
STC R4,0(R1) SAVE BYTE IN TEXT TABLE
|
||
LA R1,1(R1) INC TABLE POINTER
|
||
LA R3,1(R3) INC BYTE COUNT
|
||
STM R1,R3,TXTREGS
|
||
CLR R1,R2
|
||
BL LOOP IF TXT RECORD NOT FULL, CONTINUE
|
||
BAL R14,PUTTXT
|
||
B LOOP
|
||
NOTTXT EQU * GET NEXT TWO BITS TO FORM 3 BIT TYPE OF ENTRY
|
||
LR R3,R4
|
||
SLL R3,1
|
||
BAL R14,GBIT
|
||
OR R3,R4
|
||
SLL R3,1
|
||
BAL R14,GBIT
|
||
OR R3,R4 R3 = THREE BIT TYPE
|
||
CLM R3,1,=AL1(LNKTYP)
|
||
BE LNKTYPE IF LINK TYPE, GO PROCESS ESD, RLD, ETC.
|
||
RELTYPE EQU * ELSE 16 BIT RELOCATED WORD
|
||
LA R2,=C'RELATIVE 16 BIT WORDS NOT ALLOWED IN 370 OBJ$'
|
||
SVC WTO
|
||
B EOJ
|
||
LNKTYPE EQU * BRANCH TO TYPE OF SPECIAL LINKAGE ENTRY
|
||
BAL R14,GBIT BASED ON NEXT 4 BIT TYPE CODE
|
||
LR R3,R4
|
||
SLL R3,1
|
||
BAL R14,GBIT
|
||
OR R3,R4
|
||
SLL R3,1
|
||
BAL R14,GBIT
|
||
OR R3,R4
|
||
SLL R3,1
|
||
BAL R14,GBIT
|
||
OR R3,R4 R3 = LINK TYPE
|
||
AR R3,R3
|
||
AR R3,R3
|
||
L R4,LNKRTN(R3) R4 = ADDRESS OF LINK ROUTINE LT0-LTF
|
||
BAL R14,PUTTXT FLUSH TXT BEFORE PROCESSING LINK TYPE
|
||
BR R4 JUMP
|
||
EOJ EQU * END OF FILE AT PHYSICAL EOF OR ERROR
|
||
LA R2,SYSUT1
|
||
SVC CLOSE CLOSE INPUT
|
||
CLI OPTIONP,TRUE
|
||
BNE SKPCLSP
|
||
LA R2,SYSUT2
|
||
SVC CLOSE CLOSE 370 IF OPEN
|
||
SKPCLSP EQU *
|
||
CLI OPTIONL,TRUE
|
||
BNE SKPCLSL
|
||
LA R2,SYSPRINT
|
||
SVC CLOSE CLOSE HEX IF OPEN
|
||
SKPCLSL EQU *
|
||
LA R2,=C'T370 COMPLETE$'
|
||
SVC WTO
|
||
SVC EXIT
|
||
INIT EQU * GET FILE NAMES FROM PARM AND SET OPTIONS
|
||
L R1,0(R1)
|
||
LH R0,0(R1)
|
||
SH R0,=H'1'
|
||
BNP INITERR NO FILE SPECIFIED
|
||
LA R2,3(R1) SKIP BLANK CHAR LEADING FILENAME
|
||
LR R1,R0
|
||
LR R3,R0 SAVE FOR INITFILE
|
||
FINDSLSH EQU *
|
||
CLI 0(R2),C'/'
|
||
BE SETOPT
|
||
LA R2,1(R2)
|
||
BCT R1,FINDSLSH
|
||
NOTFOUND EQU * NO OPTIONS SPECIFIED
|
||
LR R1,R3
|
||
INITFILE EQU * BUILD FILE NAMES WITH SUFFIXES
|
||
EX R1,MVCUT1
|
||
EX R1,MVCUT2
|
||
EX R1,MVCPRT
|
||
LA R2,UT1DSN(R1)
|
||
MVC 0(5,R2),UT1SFX
|
||
LA R2,UT2DSN(R1)
|
||
MVC 0(5,R2),UT2SFX
|
||
LA R2,PRTDSN(R1)
|
||
MVC 0(5,R2),PRTSFX
|
||
LA R2,=C' $'
|
||
SVC WTO
|
||
LA R2,OPTLINE DISPLAY OPTIONS SET
|
||
SVC WTO
|
||
LA R2,=C' $'
|
||
SVC WTO
|
||
LA R2,SYSUT1
|
||
SVC SEARCH ISSUE ERROR IF OBJ FILE NOT FOUND
|
||
CLM R0,1,=X'00'
|
||
BNE INITERR
|
||
LA R2,SYSUT1
|
||
SVC OPEN OPEN OBJ INPUT
|
||
CLI OPTIONP,TRUE
|
||
BNE SKPOPNP
|
||
LA R2,SYSUT2
|
||
SVC OPEN OPEN 370 OUTPUT
|
||
SKPOPNP EQU *
|
||
CLI OPTIONL,TRUE
|
||
BNE SKPOPNL
|
||
LA R2,SYSPRINT
|
||
SVC OPEN OPEN HEX OUTPUT
|
||
SKPOPNL EQU *
|
||
SR R0,R0
|
||
BR R14
|
||
INITERR EQU *
|
||
LA R2,=C'INVALID FILE NAME$'
|
||
SVC WTO
|
||
SVC EXIT
|
||
MVCUT1 MVC UT1DSN(0),TBUFF+7
|
||
MVCUT2 MVC UT2DSN(0),TBUFF+7
|
||
MVCPRT MVC PRTDSN(0),TBUFF+7
|
||
SETOPT EQU *
|
||
LR R0,R2
|
||
S R0,=A(TBUFF+7) CALC LENGTH OF DSN
|
||
BZ OPTERR NO FILE SINCE / IS FIRST CHAR
|
||
LA R2,1(R2)
|
||
BCT R1,OPTLOOP
|
||
B OPTERR
|
||
OPTLOOP EQU *
|
||
CLI 0(R2),C'P'
|
||
BE SETOPTP
|
||
CLI 0(R2),C'L'
|
||
BE SETOPTL
|
||
CLI 0(R2),C'C'
|
||
BE SETOPTC
|
||
OPTERR EQU *
|
||
LA R2,=C'INVALID PARM$'
|
||
SVC WTO
|
||
SVC EXIT
|
||
SETOPTP EQU *
|
||
MVI OPTIONP,FALSE TURN OFF OUTPUT OF 370 OBJECT FILE (.370)
|
||
MVI DOPTP,C' '
|
||
NEXTOP EQU *
|
||
LA R2,1(R2)
|
||
BCT R1,OPTLOOP
|
||
LR R1,R0 PUT LENGTH OF DSN UP TO SLASH IN R1
|
||
MVC OPTHEX,OPTIONL
|
||
OC OPTHEX,OPTIONC SET HEX TRUE IF ANY HEX OUTPUT REQ'D
|
||
B INITFILE
|
||
SETOPTL EQU *
|
||
MVI OPTIONL,TRUE TURN ON HEX LISTING FILE (.HEX)
|
||
MVI DOPTL,C'L'
|
||
B NEXTOP
|
||
SETOPTC EQU *
|
||
MVI OPTIONC,TRUE TURN ON OUTPUT OF HEX CONSOLE LISTING
|
||
MVI DOPTC,C'C'
|
||
B NEXTOP
|
||
GBIT EQU * GET NEXT BIT IN R4
|
||
SR R4,R4
|
||
LTR R6,R6
|
||
BNZ GBITNOW
|
||
BAL R10,GWORD GET NEXT WORD IF NO BITS AVAIL.
|
||
GBITNOW EQU *
|
||
SLDL R4,1 MOVE NEXT BIT FROM R5 TO R4
|
||
BCTR R6,0 DEC BIT COUNT IN R6
|
||
LTR R4,R4 SET CC
|
||
BR R14 EXIT
|
||
GWORD EQU * GET NEXT 32 BITS IN R5 AND RESET R6 BIT COUNT
|
||
L R5,0(R7) LOAD NEXT WORD
|
||
BXH R7,R8,GREAD INCR R7 BY 4 AND CHECK IF WORD IN BLOCK
|
||
LA R6,32 RELOAD BIT COUNTER
|
||
BR R10 EXIT WITH NEXT WORD
|
||
GREAD EQU * GET NEXT 128 BYTE OBJ RECORD AND LOAD WORD
|
||
LA R1,UT1RCD
|
||
LA R2,SYSUT1
|
||
SVC GET READ NEXT BLOCK OR EXIT TO EOJ
|
||
LA R7,UT1RCD RESET RECORD PTR FOR GWORD BXH
|
||
B GWORD
|
||
GBYTE EQU * GET NEXT BYTE IN R4
|
||
SR R4,R4
|
||
LR R1,R6 SAVE BIT COUNT
|
||
SH R6,=H'8' ARE THERE 8 BITS LEFT
|
||
BM GSPLIT NO, GET MISSING BITS FROM NEXT WORD
|
||
SLDL R4,8 YES, SHIFT ALL 8
|
||
BR R14 EXIT
|
||
GSPLIT EQU *
|
||
SLDL R4,0(R1) SHIFT REMAINING BITS IN CURRENT WORD
|
||
LA R11,8
|
||
SR R11,R1 CALC REMAINING BITS TO SHIFT IN R11
|
||
BAL R10,GWORD GET NEXT WORD
|
||
SLDL R4,0(R11) SHIFT REST OF BYTE FROM NEW WORD
|
||
SR R6,R11 DEC BIT COUNTER BY REMAINING BITS SHIFTED
|
||
BR R14 EXIT
|
||
LT0 EQU *
|
||
LT1 EQU *
|
||
LT2 EQU *
|
||
LT3 EQU *
|
||
LA R2,=C'INVALID LT0-LT3 RECORD TYPE$'
|
||
SVC WTO
|
||
SVC TRACE
|
||
DC C'BUG '
|
||
B *
|
||
LT4 EQU * PROCESS EXTENDED TYPE 4 LINK ENTRY
|
||
BAL R14,GBIT
|
||
BAL R14,GBIT
|
||
BAL R14,GBYTE
|
||
STC R4,LT4TYP ESD TYPE
|
||
BAL R14,GBYTE
|
||
STC R4,LT4EID ESD EID
|
||
CLI LT4TYP,ESDER
|
||
BE LT4B GO GET SYMBOL FOR ER
|
||
BAL R14,GBYTE
|
||
STC R4,ADDR+3
|
||
BAL R14,GBYTE
|
||
STC R4,ADDR+2
|
||
BAL R14,GBYTE
|
||
STC R4,ADDR+1
|
||
BAL R14,GBYTE
|
||
STC R4,ADDR+0 ESD ADDRESS
|
||
CLI LT4TYP,ESDSD
|
||
BNE CHKTYP
|
||
BAL R14,GBYTE
|
||
STC R4,SDLNG+3
|
||
BAL R14,GBYTE
|
||
STC R4,SDLNG+2
|
||
BAL R14,GBYTE
|
||
STC R4,SDLNG+1
|
||
BAL R14,GBYTE
|
||
STC R4,SDLNG+0 ESD LENGTH
|
||
B LT4B GO GET SYMBOL FOR SD
|
||
CHKTYP EQU *
|
||
CLI LT4TYP,ESDLD
|
||
BE LT4B GO GET SYMBOL FOR LD
|
||
CLI LT4TYP,ESDORG
|
||
BE LT4ORG
|
||
CLI LT4TYP,ESDEND
|
||
BE LT4END
|
||
SR R0,R0
|
||
IC R0,LT4TYP
|
||
N R0,=X'0000000F'
|
||
CLM R0,1,=AL1(ESDRLD)
|
||
BE LT4RLD
|
||
LT4ERR EQU *
|
||
LA R2,=C'INVALID TYPE 4 LINK RECORD$'
|
||
SVC WTO
|
||
SVC TRACE
|
||
DC C'BUG '
|
||
B *
|
||
LT4B EQU * GET SYMBOL FOR SD, LD, OR ER
|
||
BAL R14,GBIT
|
||
LR R3,R4
|
||
BAL R14,GBIT
|
||
SLL R3,1
|
||
OR R3,R4
|
||
BAL R14,GBIT
|
||
SLL R3,1
|
||
OR R3,R4 R3 = LENGTH OF SYMBOL
|
||
MVC SYMBOL,=8AL1(ASCBLK)
|
||
MVC ASYMBOL,=A(SYMBOL)
|
||
CH R3,=H'7'
|
||
BH GBERR
|
||
LTR R3,R3
|
||
BP LT4LP
|
||
LA R3,8 ZERO LENGTH MEANS 8 BYTE SYMBOL
|
||
LT4LP EQU *
|
||
BAL R14,GBYTE
|
||
L R1,ASYMBOL
|
||
STC R4,0(R1)
|
||
LA R1,1(R1)
|
||
ST R1,ASYMBOL
|
||
BCT R3,LT4LP
|
||
LA R1,SYMBOL
|
||
LA R2,8
|
||
SVC ASCEBC CONVERT SYMBOL TO EBCDIC
|
||
CLI LT4TYP,ESDSD
|
||
BE LT4SD
|
||
CLI LT4TYP,ESDER
|
||
BE LT4ER
|
||
CLI LT4TYP,ESDLD
|
||
BE LT4LD
|
||
B LT4ERR
|
||
GBERR EQU *
|
||
LA R2,=C'INVALID SYMBOL LENGTH FOR LT4$'
|
||
SVC WTO
|
||
SVC TRACE
|
||
DC C'BUG '
|
||
B *
|
||
LT4SD EQU * PROCESS SD ENTRY
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
STCM R0,3,ESDEID
|
||
MVC ESDCNT,=H'16'
|
||
MVC ESDBUF(8),SYMBOL
|
||
MVI ESDBUF+8,X'00' SD TYPE
|
||
MVC ESDBUF+9(3),ADDR+1
|
||
MVI ESDBUF+12,X'03' AMODE=ANY (01=24 BIT, 00=31 BIT)
|
||
MVC ESDBUF+13(3),SDLNG+1
|
||
LA R1,ESDRCD
|
||
BAL R10,PUTOBJ OUTPUT 370 RECORD
|
||
CLI OPTHEX,TRUE CHECK IF ANY HEX OUTPUT REQ'D
|
||
BNE SKPSDL NO, SKIP FORMATTING
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
BAL R14,CVTHEX
|
||
MVC ESDDEID,HEX+6
|
||
MVC ESDDSYM,SYMBOL
|
||
L R0,ADDR
|
||
BAL R14,CVTHEX
|
||
MVC ESDDADDR,HEX+2
|
||
L R0,SDLNG
|
||
BAL R14,CVTHEX
|
||
MVC ESDDLNG,HEX+2
|
||
MVC ESDDTYP,=C'SD'
|
||
LA R1,ESDLINE
|
||
BAL R10,PUTPRT
|
||
SKPSDL EQU *
|
||
B LOOP
|
||
LT4ER EQU * PROCESS ER ENTRY
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
STCM R0,3,ESDEID
|
||
MVC ESDCNT,=H'16'
|
||
MVC ESDBUF(8),SYMBOL
|
||
MVI ESDBUF+8,X'02' ER TYPE
|
||
MVC ESDBUF+9(7),=7C' '
|
||
LA R1,ESDRCD
|
||
BAL R10,PUTOBJ
|
||
CLI OPTHEX,TRUE
|
||
BNE SKPERL
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
BAL R14,CVTHEX
|
||
MVC ESDDEID,HEX+6
|
||
MVC ESDDSYM,SYMBOL
|
||
MVC ESDDADDR,=6C' '
|
||
MVC ESDDLNG,=6C' '
|
||
MVC ESDDTYP,=C'ER'
|
||
LA R1,ESDLINE
|
||
BAL R10,PUTPRT
|
||
SKPERL EQU *
|
||
B LOOP
|
||
LT4LD EQU * PROCESS LD ENTRY
|
||
MVC ESDEID,=2C' ' BLANK ESD EID FOR LD
|
||
MVC ESDCNT,=H'16'
|
||
MVC ESDBUF(8),SYMBOL
|
||
MVI ESDBUF+8,X'01' LD TYPE
|
||
MVC ESDBUF+9(3),ADDR+1
|
||
MVI ESDBUF+12,C' '
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
STCM R0,7,ESDBUF+13 EID FOR LD
|
||
LA R1,ESDRCD
|
||
BAL R10,PUTOBJ
|
||
CLI OPTHEX,TRUE
|
||
BNE SKPLDL
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
BAL R14,CVTHEX
|
||
MVC ESDDEID,HEX+6
|
||
MVC ESDDSYM,SYMBOL
|
||
L R0,ADDR
|
||
BAL R14,CVTHEX
|
||
MVC ESDDADDR,HEX+2
|
||
MVC ESDDLNG,=6C' '
|
||
MVC ESDDTYP,=C'LD'
|
||
LA R1,ESDLINE
|
||
BAL R10,PUTPRT
|
||
SKPLDL EQU *
|
||
B LOOP
|
||
LT4RLD EQU * PROCESS RLD ENTRY
|
||
BAL R14,GBYTE
|
||
STC R4,RLDEID RLD EID
|
||
MVC RLDCNT,=H'8'
|
||
SR R0,R0
|
||
IC R0,RLDEID
|
||
STCM R0,3,RLDBUF+2 EID FOR SD WITH RLD
|
||
IC R0,LT4EID
|
||
STCM R0,3,RLDBUF+0 EID FOR SYMBOL
|
||
IC R0,LT4TYP R0 = SLLLTTTT (SIGN, RLD LNG, RLD TYPE)
|
||
LR R1,R0 SAVE SIGN BIT IN R1
|
||
N R0,=X'00000070' R0 = 0LLL0000 WHERE LLL = 2-4
|
||
SH R0,=H'16' R0 = 00NN0000 WHERE NNN = 1-3
|
||
SRL R0,2 R0 = 0000NN00
|
||
N R1,=X'00000080' R1 = S0000000
|
||
SRL R1,6 R1 = 000000S0
|
||
OR R0,R1 R0 = 0000NNS0
|
||
STC R0,RLDBUF+4 RLD LNG (01=2, 02=3, 3=4) PLUS SIGN
|
||
MVC RLDBUF+5(3),ADDR+1
|
||
LA R1,RLDRCD
|
||
BAL R10,PUTOBJ
|
||
CLI OPTHEX,TRUE
|
||
BNE SKPRLDL
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
BAL R14,CVTHEX
|
||
MVC RLDDEID,HEX+6 EID OF SYMBOL REFERENCED
|
||
SR R0,R0
|
||
IC R0,RLDEID
|
||
BAL R14,CVTHEX
|
||
MVC RLDDSID,HEX+6 EID OF CONTROL SECTION WITH RLD
|
||
SR R0,R0
|
||
IC R0,RLDBUF+4 USE FORMATTED TTTTLLS0 TO GET LNG AND SIGN
|
||
SRL R0,2
|
||
AH R0,=H'1'
|
||
BAL R14,CVTHEX
|
||
MVC RLDDLNG,HEX+6
|
||
IC R0,RLDBUF+4
|
||
N R0,=X'00000002'
|
||
BZ LT4RSP
|
||
MVI RLDDSGN,C'-'
|
||
B LT4RSC
|
||
LT4RSP EQU *
|
||
MVI RLDDSGN,C'+'
|
||
LT4RSC EQU *
|
||
L R0,ADDR
|
||
BAL R14,CVTHEX
|
||
MVC RLDDADDR,HEX+2
|
||
LA R1,RLDLINE
|
||
BAL R10,PUTPRT
|
||
SKPRLDL EQU *
|
||
B LOOP
|
||
LT4ORG EQU * PROCESS ORG ENTRY WHICH RESETS TXT EID AND ADDRESS
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
STCM R0,3,TXTEID SET TXT EID
|
||
MVC TXTADDR,ADDR+1 SET TXT ADDR
|
||
B LOOP
|
||
LT4END EQU * PROCESS END ENTRY
|
||
LR R7,R9 FORCE END OF RECORD
|
||
SR R6,R6 FORCE NO BITS
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
STCM R0,3,ENDEID EID FOR ENTRY ADDRESS
|
||
MVC ENDADDR,ADDR+1
|
||
LA R1,ENDRCD
|
||
BAL R10,PUTOBJ
|
||
CLI OPTHEX,TRUE
|
||
BNE SKPENDL
|
||
SR R0,R0
|
||
IC R0,LT4EID
|
||
BAL R14,CVTHEX
|
||
MVC ENDDEID,HEX+6
|
||
L R0,ADDR
|
||
BAL R14,CVTHEX
|
||
MVC ENDDADDR,HEX+2
|
||
LA R1,ENDLINE
|
||
BAL R10,PUTPRT
|
||
SKPENDL EQU *
|
||
B LOOP
|
||
LT5 EQU *
|
||
LT6 EQU *
|
||
LT7 EQU *
|
||
LT8 EQU *
|
||
LT9 EQU *
|
||
LTA EQU *
|
||
LTB EQU *
|
||
LTC EQU *
|
||
LTD EQU *
|
||
LTE EQU *
|
||
LTF EQU *
|
||
LA R2,=C'INVALID LT5-LTF RECORD TYPE$'
|
||
SVC WTO
|
||
SVC TRACE
|
||
DC C'BUG '
|
||
B *
|
||
PUTTXT EQU * FLUSH CURRENT TXT RCD IF ANY
|
||
LM R1,R3,TXTREGS
|
||
LTR R3,R3
|
||
BZ 0(R14) EXIT IF NO TEXT
|
||
ST R14,TXTSAV
|
||
L R1,ADDR FORMAT ADDRESS
|
||
STCM R1,7,TXTADDR
|
||
SR R1,R1
|
||
IC R1,LT4EID FORMAT EID
|
||
STCM R1,3,TXTEID
|
||
IC R1,TXTREGS+11 FORMAT BYTE COUNT
|
||
STCM R1,3,TXTCNT
|
||
LA R0,55
|
||
SR R0,R1 R0 = PAD BLKS - 1
|
||
BM SKPTPAD
|
||
LA R2,TXTBUF(R1)
|
||
LR R1,R0
|
||
EX R1,MVCTPAD
|
||
SKPTPAD EQU *
|
||
LA R1,TXTRCD
|
||
BAL R10,PUTOBJ
|
||
CLI OPTHEX,TRUE
|
||
BNE TXTEXT
|
||
L R0,ADDR FORMAT TEXT ADDRESS
|
||
BAL R14,CVTHEX
|
||
MVC TXTDADDR,HEX+2
|
||
IC R0,LT4EID FORMAT CNT AND EID
|
||
ICM R0,2,TXTREGS+11
|
||
BAL R14,CVTHEX
|
||
MVC TXTDCNT,HEX+4
|
||
MVC TXTDEID,HEX+6
|
||
L R11,TXTREGS+8 REMAINING BYTE COUNT 1-56
|
||
LA R1,TXTBUF TEXT POINTER
|
||
BAL R14,FMTTXT PRINT FIRST LINE WITH 16 BYTES
|
||
SH R11,=H'16'
|
||
BNP TXTEXT
|
||
MVC TXTDBLK,=CL13' ' BLANK TXT ADDR,CNT,EID FOR MULT. LINES
|
||
LA R1,TXTBUF+16
|
||
BAL R14,FMTTXT 2ND
|
||
SH R11,=H'16'
|
||
BNP TXTEXT
|
||
MVC TXTDBLK,=CL13' ' BLANK TXT ADDR,CNT,EID FOR MULT. LINES
|
||
LA R1,TXTBUF+32
|
||
BAL R14,FMTTXT 3RD
|
||
SH R11,=H'16'
|
||
BNP TXTEXT
|
||
MVC TXTDBLK,=CL13' ' BLANK TXT ADDR,CNT,EID FOR MULT. LINES
|
||
LA R1,TXTBUF+48
|
||
BAL R14,FMTTXT 4TH
|
||
TXTEXT EQU *
|
||
L R0,ADDR
|
||
A R0,TXTREGS+8 INCR TXT ADDR BY LENGTH
|
||
ST R0,ADDR
|
||
MVC TXTREGS(12),=A(TXTBUF,TXTBUF+L'TXTBUF,0) RESET REGS
|
||
L R14,TXTSAV
|
||
BR R14
|
||
FMTTXT EQU * FORMAT TEXT AT R1 FOR LENGTH (R3)
|
||
ST R14,FMTSAV
|
||
MVC TXTDASC,0(R1)
|
||
TR TXTDASC,PRTASC
|
||
LA R2,TXTDHEX
|
||
LA R3,4
|
||
FMTL1 EQU *
|
||
L R0,0(R1)
|
||
BAL R14,CVTHEX
|
||
MVC 0(8,R2),HEX
|
||
LA R1,4(R1)
|
||
LA R2,8(R2)
|
||
BCT R3,FMTL1
|
||
CL R11,=F'16'
|
||
BNL FMTSKP
|
||
LR R1,R11
|
||
AR R1,R1
|
||
LA R2,TXTDHEX(R1)
|
||
LA R0,31
|
||
SR R0,R1
|
||
LR R1,R0
|
||
EX R1,MVCTPAD PAD HEX WITH BLANKS
|
||
LA R1,15
|
||
SR R1,R11
|
||
LA R2,TXTDASC(R11)
|
||
EX R1,MVCTPAD PAD ASC WITH BLANKS
|
||
FMTSKP EQU *
|
||
LA R1,TXTLINE
|
||
BAL R10,PUTPRT
|
||
L R14,FMTSAV
|
||
BR R14
|
||
MVCTPAD MVC 0(0,R2),=56C' '
|
||
CVTHEX EQU * CONVERT R0 TO H8 BYTE EBCDIC HEX
|
||
ST R0,WORK
|
||
UNPK HEX(9),WORK(5)
|
||
TR HEX(8),HEXTAB-240
|
||
BR R14
|
||
PUTOBJ EQU * OUTPUT SEQUENCED 370 OBJECT DECK FILE
|
||
AP PSEQ,=P'1'
|
||
UNPK 72(8,R1),PSEQ
|
||
OI 79(R1),X'F0'
|
||
CLI OPTIONP,TRUE
|
||
BNER R10
|
||
LA R2,SYSUT2
|
||
SVC PUT OUTPUT 370 OBJECT FILE FOR OPTION P
|
||
BR R10
|
||
PUTPRT EQU * OUTPUT SEQUENCED ASCII HEX LISTING FILE
|
||
MVC 0(6,R1),=X'402020202020' MASK FOR ZZZZZ
|
||
ED 0(6,R1),PSEQ+1
|
||
CLI OPTIONC,TRUE
|
||
BNE SKPOPTC
|
||
LR R2,R1
|
||
SVC WTO LIST HEX ON CONSOLE FOR OPTION C
|
||
SKPOPTC EQU *
|
||
CLI OPTIONL,TRUE
|
||
BNER R10
|
||
LA R2,SYSPRINT
|
||
SVC PUT OUTPUT HEX FILE FOR OPTION L
|
||
BR R10
|
||
*
|
||
* REGISTER USAGE
|
||
*
|
||
R0 EQU 0 WORK
|
||
R1 EQU 1 WORK
|
||
R2 EQU 2 WORK
|
||
R3 EQU 3 WORK (NOT USED BY LOW LEVEL BAL RTNS)
|
||
R4 EQU 4 BIT OR BYTE RETURNED BY GBIT OR GBYTE (R4-R5 SLDL)
|
||
R5 EQU 5 CURRENT WORD
|
||
R6 EQU 6 BITS LEFT IN CURRENT WORD
|
||
R7 EQU 7 ADDRESS OF NEXT WORD PTR IN UT1RCD (R7-R9 BXLE)
|
||
R8 EQU 8 INCREMENT 4
|
||
R9 EQU 9 ADDRESS OF END OF UT1RCD
|
||
R10 EQU 10 LINK FOR LEVEL 2 ROUTINES
|
||
R11 EQU 11 WORK (NOT USED BY LOW LEVEL BAL RTNS)
|
||
R12 EQU 12 BASE
|
||
R13 EQU 13 BASE
|
||
R14 EQU 14 LINK FOR LEVEL 1 ROUTINES
|
||
R15 EQU 15 WORK
|
||
*
|
||
* PC/370 SVC'S
|
||
*
|
||
EXIT EQU 0
|
||
OPEN EQU 1
|
||
CLOSE EQU 2
|
||
GET EQU 5
|
||
PUT EQU 6
|
||
SEARCH EQU 8
|
||
TRACE EQU 9
|
||
GMAIN EQU 10
|
||
FMAIN EQU 11
|
||
ASCEBC EQU 12
|
||
EBCASC EQU 13
|
||
WTO EQU 200+9 MS-DOS SVC 9 PRINT STRING WITH ENDING $ ON CON.
|
||
*
|
||
* DATA AREAS
|
||
*
|
||
PSEQ DC PL4'0'
|
||
WORK DC F'0',X'0'
|
||
HEX DC XL8'0',X'0'
|
||
HEXTAB DC C'0123456789ABCDEF'
|
||
TBUFF EQU X'80' BUFFER FOR DIRECTORY SEARCH
|
||
UT1RCD DC XL128'00' LOGICAL RECORD AREA
|
||
UT2RCD DC CL80' '
|
||
PRTLINE DC CL133' '
|
||
DS CL2 PAD FOR ENDING CR,LF
|
||
ASCBLK EQU X'20' ASCII BLANK
|
||
ASCLF EQU X'0A' ASCII LINE FEED
|
||
ASCCR EQU X'0D' ASCII CARRIAGE RETURN
|
||
CR EQU X'0D' EBCDIC CARRIAGE RETURN
|
||
LF EQU X'25' EBCDIC LINE FEED
|
||
LNKTYP EQU X'04' EXTENDED TYPE 4 LINK RECORD USED BY A370
|
||
LNKRTN DC A(LT0,LT1,LT2,LT3,LT4,LT5,LT6,LT7,LT8) LINK TYPE RTNS
|
||
DC A(LT9,LTA,LTB,LTC,LTD,LTE,LTF)
|
||
OPTIONP DC AL1(TRUE) DEFAULT P ON
|
||
OPTIONC DC AL1(FALSE) DEFAULT C OFF
|
||
OPTIONL DC AL1(FALSE) DEFAULT L OFF
|
||
OPTHEX DC AL1(FALSE) SUM OF C AND L TO DETERMINE IF HEX NEEDED
|
||
TRUE EQU 1
|
||
FALSE EQU 0
|
||
OPTLINE DC C'T370 OPTIONS = '
|
||
DOPTP DC C'P' DEFAULT P ON FOR 370 OBJECT FILE
|
||
DOPTC DC C' ' DEFAULT C OFF FOR NO CONSOLE HEX LISTING
|
||
DOPTL DC C' ',C'$' DEFAULT L OFF FOR NO HEX LISTING FILE
|
||
LT4TYP DC X'00' TYPE OF ESD RECORD GENERATED BY A370.EXE
|
||
ESDSD EQU 1
|
||
ESDLD EQU 2
|
||
ESDER EQU 3
|
||
ESDORG EQU 4
|
||
ESDEND EQU 5
|
||
ESDRLD EQU 6 (SIGN AND LENGTH IN BITS 0-3)
|
||
LT4EID DC X'00' ESD NUMBER (1-255) FOR SD, LD, RLD, ORG
|
||
ASYMBOL DC A(0) POINTER TO SYMBOL DURING LT4B LOOP
|
||
SYMBOL DC CL8' ' ESD SYMBOL (SD, LD, AND ER)
|
||
SDLNG DC A(0) LENGTH OF SD (SD ONLY)
|
||
ADDR DC A(0) RELATIVE ADDRESS (LD, RLD, ORG)
|
||
RLDEID DC X'00' EID NUMBER FOR RLD VALUE
|
||
RLDLNG DC X'00' RLD LENGTH IN HIGH 4 BITS
|
||
TXTREGS DC A(TXTBUF,TXTBUF+L'TXTBUF,0)
|
||
TXTSAV DC A(0)
|
||
FMTSAV DC A(0)
|
||
ENDRCD DS 0XL80
|
||
DC X'02',C'END',CL1' '
|
||
ENDADDR DC XL3'00',CL6' '
|
||
ENDEID DC XL2'00',CL56' '
|
||
ENDSEQ DC ZL8'0'
|
||
RLDRCD DS 0XL80
|
||
DC X'02',C'RLD',CL6' '
|
||
RLDCNT DC XL2'00',CL4' '
|
||
RLDBUF DC CL56' '
|
||
RLDSEQ DC ZL8'0'
|
||
ESDRCD DS 0XL80
|
||
DC X'02',C'ESD',CL6' '
|
||
ESDCNT DC XL2'00',CL2' '
|
||
ESDEID DC XL2'00' EID OF FIRST ESD OR BLANK FOR LD
|
||
ESDBUF DC CL56' '
|
||
ESDSEQ DC ZL8'0'
|
||
TXTRCD DS 0XL80
|
||
DC X'02',C'TXT',C' '
|
||
TXTADDR DC XL3'00',CL2' '
|
||
TXTCNT DC XL2'00',CL2' '
|
||
TXTEID DC XL2'00'
|
||
TXTBUF DC CL56' '
|
||
TXTSEQ DC ZL8'0'
|
||
ENDLINE DS 0CL78
|
||
DC CL6' ZZZZZ'
|
||
DC C' END '
|
||
ENDDEID DC CL2' ',C' ' HEX EID OF CONTROL SECTION WITH RLD
|
||
ENDDADDR DC CL6' ',C' ' HEX ADDRESS
|
||
DC AL1(CR,LF),C'$'
|
||
DC (ENDLINE+L'ENDLINE-*)C' '
|
||
RLDLINE DS 0CL78
|
||
DC CL6' ZZZZZ'
|
||
DC C' RLD '
|
||
RLDDSID DC CL2' ',C' ' HEX EID OF CONTROL SECTION WITH RLD
|
||
RLDDADDR DC CL6' ',C' ' HEX ADDRESS
|
||
RLDDLNG DC CL2' ',C' ' HEX LENGTH
|
||
RLDDSGN DC CL1' ',C' ' C'+' OR C'-' SIGN
|
||
RLDDEID DC CL2' ' HEX EID OF SYMBOL
|
||
DC AL1(CR,LF),C'$'
|
||
DC (RLDLINE+L'RLDLINE-*)C' '
|
||
ESDLINE DS 0CL78
|
||
DC CL6' ZZZZZ'
|
||
DC C' ESD '
|
||
ESDDEID DC CL2' ',C' ' DECIMAL EID
|
||
ESDDADDR DC CL6' ',C' ' HEX ADDRESS
|
||
ESDDLNG DC CL6' ',C' ' HEX SD LENGTH
|
||
ESDDTYP DC CL2' ',C' '
|
||
ESDDSYM DC CL8' '
|
||
DC AL1(CR,LF),C'$'
|
||
DC (ESDLINE+L'ESDLINE-*)C' '
|
||
TXTLINE DS 0CL78
|
||
DC CL6' ZZZZZ'
|
||
DC C' TXT '
|
||
TXTDBLK DS 0CL13 BLANK FOR MULT. LINES
|
||
TXTDEID DC CL2' ',C' ' DECIMAL EID
|
||
TXTDADDR DC CL6' ',C' ' HEX ADDRESS
|
||
TXTDCNT DC CL2' ',C' ' HEX COUNT
|
||
TXTDHEX DC CL32' ',C' *'
|
||
TXTDASC DC CL16' ',C'*'
|
||
DC AL1(CR,LF),C'$'
|
||
DC (TXTLINE+L'TXTLINE-*)C' '
|
||
PRTASC DC 256C'.'
|
||
ORG PRTASC+C' '
|
||
DC C' '
|
||
DC C'ABCDEFGHI'
|
||
ORG PRTASC+C'A'
|
||
DC C'ABCDEFGHI'
|
||
ORG PRTASC+C'J'
|
||
DC C'JKLMNOPQR'
|
||
ORG PRTASC+C'S'
|
||
DC C'STUVWXYZ'
|
||
ORG PRTASC+C'0'
|
||
DC C'0123456789'
|
||
ORG PRTASC+256
|
||
****************************************************************************
|
||
*
|
||
* IHADCB - I HAD A DCB DSECT FOR PC/370 RELEASE 2.0+ FILE DATA CONTROL BLOCK
|
||
*
|
||
* FOR MORE INFORMATION SEE SVC.DOC AND DEMO PROGRAM TESTIO.ALC.
|
||
*
|
||
****************************************************************************
|
||
IHADCB DSECT
|
||
DCBDCB DS CL4 CONSTANT EBCDIC C'ADCB' DCB IDENTIFIER
|
||
DCBDSN DS A ADDRESS OF UP TO 64 BYTE PATH/FILE SPEC FOLLOWED BY ZERO
|
||
DCBFID DS H FILE HANDLE ASSIGNED BY MS-DOS AT OPEN (X'FFFF'DEFAULT)
|
||
DCBFLG DS X DATA CONTROL BLOCK FLAGS (ONLY DFTRAN MAY BE SET BY USER)
|
||
DFOPEN EQU X'80' FILE OPEN
|
||
DFUBUF EQU X'40' USER DEFINED BLOCK AREA (NO DYNAMIC ALLOC/DEALLOC)
|
||
DFOUT EQU X'20' OPEN FOR OUTPUT
|
||
DFGEOF EQU X'10' END OF FILE PENDING ON SHORT BLOCK
|
||
DFTRAN EQU X'08' TRANSLATE GET/PUT RECORDS FOR ASCII FILE
|
||
DFADCB EQU X'01' ASSIST DCB - DO NOT TRANSLATE 370 ADDRESSES
|
||
DSORG DS C DATA SET ORGANIZATION (R=RANDOM, S=SEQUENTIAL)
|
||
MACRF DS C DATA SET ACCESS MODE (R=READ, W=WRITE, G=GET, P=PUT)
|
||
RECFM DS C DATA SET RECORD FORMAT (F=FIXED, V=VAR, T=TEXT)
|
||
EOR DS X END OF RECORD CODE (DEFAULT IS LINE FEED X'0A')
|
||
EOF DS X END OF FILE CODE (DEFAULT IS CTL-Z X'1A')
|
||
LRECL DS H RECORD LENGTH (2<LRECL<64K-16)
|
||
BLKSZ DS H BLOCK LENGTH (2<BLKSZ<64K-16)
|
||
EODAD DS A END OF DATA EXIT ADDRESS
|
||
SYNAD DS A SYCHRONOUS ERROR EXIT ADDRESS
|
||
RCD DS A RECORD AREA ADDRESS FOR GET/PUT
|
||
BLK DS A BLOCK AREA ADDRESS (0 FOR DYNAMICALLY ALLOCATED)
|
||
RBA DS A RELATIVE BYTE ADDRESS FOR RANDOM READ/WRITE
|
||
REN DS A RENAME ASCIIZ FILE (ONLY USED BY RENAME SVC)
|
||
IOCNT DS F BLOCK I/O COUNT SINCE OPEN
|
||
PRECL DS H PHYSICAL BLOCK SIZE OF LAST READ/WRITE
|
||
*
|
||
* RESERVED AREA FOR USE BY PC/370 IOS SUPERVISOR WHILE FILE OPEN
|
||
*
|
||
DSNSG DS XL4 SEGMENT:OFFSET OF DCBDSN PATH/FILE NAME
|
||
EODSG DS XL4 SEGMENT:OFFSET OF EODAD EXIT
|
||
SYNSG DS XL4 SEGMENT:OFFSET OF SYNAD EXIT
|
||
RCDSG DS XL4 SEGMENT:OFFSET OF RECORD AREA FOR GET/PUT
|
||
RENSG DS XL4 SEGMENT:OFFSET OF RENAME FILE NAME
|
||
BLKSG DS XL4 SEGMENT:OFFSET OF BLOCK AREA
|
||
BLKPTR DS XL4 SEGMENT:OFFSET OF CURRENT RECORD IN BLOCK AREA
|
||
BLKEOD DS XL2 OFFSET OF CURRENT END OF DATA IN BLOCK AREA
|
||
BLKEND DS XL2 OFFSET OF END OF ALLOCATED BLOCK AREA
|
||
WLRECL DS H REVERSED LRECL
|
||
WBLKSZ DS H REVERSED BLKSZ
|
||
LDCB EQU *-IHADCB
|
||
*
|
||
* END OF DSECT
|
||
*
|
||
T370 CSECT
|
||
UT1DSN DC XL64'00'
|
||
UT1SFX DC C'.OBJ',X'00'
|
||
SYSUT1 DC 0F'0',C'ADCB'
|
||
DC A(UT1DSN) PATH/FILE NAME IN PARM
|
||
DC X'FFFF'
|
||
DC X'00'
|
||
DC C'SGF' SEQ. GET FIXED
|
||
DC X'0A1A'
|
||
DC H'128' LRECL
|
||
DC H'8192' BLKSZ
|
||
DC A(EOJ) EODAD
|
||
DC A(SYNRTN) SYNAD
|
||
DC A(UT1RCD) RECORD AREA
|
||
DC XL(SYSUT1+LDCB-*)'00'
|
||
UT2DSN DC XL64'00'
|
||
UT2SFX DC C'.370',X'00'
|
||
SYSUT2 DC 0F'0',C'ADCB'
|
||
DC A(UT2DSN) PATH/FILE NAME IN PARM
|
||
DC X'FFFF'
|
||
DC X'00'
|
||
DC C'SPF' SEQ. PUT FIXED
|
||
DC X'0A1A'
|
||
DC H'80' LRECL
|
||
DC H'8192' BLKSZ
|
||
DC A(SYNRTN) EODAD
|
||
DC A(SYNRTN) SYNAD
|
||
DC A(UT2RCD) RECORD AREA
|
||
DC XL(SYSUT2+LDCB-*)'00'
|
||
PRTDSN DC XL64'00'
|
||
PRTSFX DC C'.HEX',X'00'
|
||
SYSPRINT DC 0F'0',C'ADCB'
|
||
DC A(PRTDSN) PATH/FILE NAME IN PARM
|
||
DC X'FFFF'
|
||
DC AL1(DFTRAN)
|
||
DC C'SPT' SEQ. PUT TEXT
|
||
DC X'0A1A'
|
||
DC H'133' LRECL
|
||
DC H'8192' BLKSZ
|
||
DC A(SYNRTN) EODAD
|
||
DC A(SYNRTN) SYNAD
|
||
DC A(PRTLINE) RECORD AREA
|
||
DC XL(SYSPRINT+LDCB-*)'00'
|
||
SYNRTN EQU *
|
||
LA R2,=C'I/O ERROR$'
|
||
SVC WTO
|
||
SVC TRACE
|
||
DC C'BUG '
|
||
B SYNRTN
|
||
END T370
|
||
|