I've rewritten QBREAK, leaving out extraneous code and adding a couple things. Latest change is to put the instruction label, not the LABEL= string on the break command.
AGO .START PROFILE OPTIONS WTOR ROUTCDE 11
C:\USERS\LIN\DOCUMENTS\Z390CODE\QBREAK
SET G=C:\USERS\LIN\DOCUMENTS\Z390CODE\QBREAK
SET SYSPRINT=%G%.SYSPRINT
SET SYSIN=%G%.SYSIN
SET PRN=%G%.INPUT
SET BREAK=%G%.BREAK
SET BREAK=%G%.BRAKE.BRAKE.TXT
BAT\ASMLG %G%.MLC TEST(BREAK)
COMMAND=C:\USERS\LIN\DOCUMENTS\Z390CODE\QBREAK
COMMAND=
LOADLOC=
LABEL=GET*,PUT*,OPENI,OPENI+12,OPENO-6,DW 16,LINE 80,WTO*
LABEL=Z,CLOSE
VER 02.01 STARTED ABOUT 4/5/26, FINISHED 4/10/26
VER 02.02 MOVE FINDCHAR,FINDEND TABLES UP TO GET UNDER 4K 4/10/26
VER 02.03 MOVE FINDCHAR,FINDEND TABLES BACK TO END 4/10/26
VER 02.04 PUT INST LABEL ON BREAK CMD, NOT LABEL= STRING 4/24/26
VER 02.05 PUT INST LABEL ON DATA CMD 5/5
.START ANOP
MACRO
M &TXT
LCLA &N
&N SETA K'&TXT-3
DC AL1(&N),C&TXT
MEND
* ---------------------------------
MACRO
&LBL ERR &BC,&MSG
LCLA &N
&L SETC 'SYS&SYSNDX'
&LBL REVB &BC,&L.Z
BAL R14,BADSYSIN
DC AL1(L'&L.M-1)
&L.M DC C&MSG
&L.Z DS 0H
MEND
* ---------------------------------
MACRO
&LBL $$LA ®,&FLD $$LA REVB ????
AIF ('&FLD(1,1)' NE '(').A
&LBL LA ®,0&FLD
MEXIT
.A ANOP
&LBL LA ®,&FLD
MEND
* ------------------------------------
MACRO
&LABEL REVB &COND,&TO
LCLC &C,&B
LCLA &LEN
AIF ('&COND' NE 'B').ADDREM
&LABEL NOP &TO
MEXIT
.ADDREM ANOP
&LEN SETA K'&COND
AIF ('&COND'(2,1) NE 'N').ADD
&B SETC '&COND'(3,&LEN-2)
AGO .DOIT
.ADD ANOP
&B SETC '&COND'(2,&LEN-1)
&B SETC 'N&B'
.DOIT ANOP
&LABEL B&B &TO
MEND
* ---------------------------------
QBREAK START 0
USING *,13,12
YREGS
DC 18F'0'
ORG QBREAK
STM 14,12,12(13)
ST 15,8(13)
ST 13,4(15)
LR 13,15
LA 12,4095
LA 12,1(12,13)
L 4,0(1)
CLI 1(4),0
BE GETMAIN
*
LH 5,0(4)
BCTR 5,0
MVC CARD(0),2(R4)
EX 5,*-6
*
* THE DEFAULT LABEL TABLE ALLOWS FOR 100 LABELS TO BE SPECIFIED.
* BUT IF YOU WANT MORE, THEN #LABELS=240 OR ?? CAN BE SPEDIFIED
* IN THE PARM FIELD. THIS IS DONE BEFORE ANYTHING ELSE.
*
CLC =C'#LABELS='(7),CARD #LABELS=??
BNE NOT#L
LA R1,CARD+7
LA R1,1(R1)
CLI 0(R1),C'0'
BNL *-8
LR R2,R1
S R2,=A(CARD+9)
B PASTIDM
DC AL1(L'IDMSG)
IDMSG DC C'QBREAK V02.04 ASM &SYSDATE &SYSTIME GETMAIN=??? LABELS, COMME
ENTS, LINLYONS AT YAHOO'
*
#LABPACK PACK DW,CARD+8(0)
#LABERR ERR B,'BAD #LABELS=###'
*
PASTIDM EX R2,#LABPACK
CVB R3,DW
LA R4,11(R3)
MH R4,=AL2(LTABLE)
ST R4,LGETMAIN
MVC CARD,1(R1)
* B NOT#L
*
* DONE WITH 'NORMAL' INIT. THERE IS A TEST FUNCTION THAT ALLOWS ONE
* OF 2 DIFFERENT PARM FIELDS THAT CONTAIN COMPLETE INSTRUCTIONS FOR
* CREATING BREAK POINTS USING THE QBREAK LISTING.
*
* NEXT IS SOME 'TEST' CODE THAT APPLIES TO THE QBREAK LISTING.
* TEST=1 APPLIES TO ANALYZING THE LABELS.
* TEST=2 APPLIES TO READING THE LISTING, LOOKING FOR SPECIFIED LABELS
* (TEST?1 AND TEST?2 ARE ALSO USED BECAUSE OF Z390 PARM RESTRICTIONS)
* THE SYSPRINT FILE WILL SHOW SAMPLE LABEL= OPERANDS.
*
NOT#L L R1,LGETMAIN
SR R0,R0
D R0,=A(LTABLE)
CVD R1,DW
OI DW+7,X'0F'
UNPK IDMSG+41(3),DW+6(2)
*
CLC =C'TEST=',CARD
BE CALCLOAD
CLC =C'TEST?',CARD
BNE GETMAIN
CALCLOAD ST 13,12(13)
UNPK 20(7,13),13(4,13)
TR 20(6,13),HEX-240
MVC ATLINEI+2(5),21(13)
MVC FLAGTEST,CARD+5
MVC CARD,CARD+6
*
GETMAIN L R0,LGETMAIN GETMAIN OF 4K ALLOWS FOR
GETMAIN R,LV=(0) 100 LABEL NAMES
ST R1,AGETMAIN
LR R0,R1
STM R0,R1,ATABLE
L R2,LGETMAIN
AR R2,R1
SH R2,=AL2(LDSECT)
ST R2,ETABLE
* ====================== START OF FILE OPEN ROUTINE ============
LA R2,SYSPRINT
BAL R9,OPENO
LA R2,PRN THESE ARE THE FILE OPEN ROUTINES.
BAL R9,OPENI ONCE DONE, WE COULD USE THIS AREA
LA R2,BREAK FOR WORK AREAS.
BAL R9,OPENO
*
LA R2,SYSIN
CLI FLAGTEST,C' '
BNE *+8
BAL R9,OPENI
CLI CARD,C' '
BNE GOTSYSIN
B GETSYSIN
*
PUSH PRINT
PRINT NOGEN
USING IHADCB,2
OPENMSG DC C' OPENED FOR OUTPUT, RECFM= LRECL=..... '
OPENO MVC DW,DCBDDNAM
MVC OPENMSG+12(3),=C'OUT'
OPEN ((2),OUTPUT)
CLC =C'SYSP',DW
BNE OPENM
MVC LINE(L'IDMSG),IDMSG
TR LINE+L'IDMSG-26(26),MAKELOW
PUT SYSPRINT,LINE-1
MVC LINE,LINE-1
B OPENM
OPENI MVC DW,DCBDDNAM
MVC OPENMSG+12(3),=C' IN'
OPEN ((2),INPUT)
OPENM UNPK OPENMSG+26(3),DCBRECFM(2)
TR OPENMSG+26(2),HEX-240
MVI OPENMSG+28,C' '
LH R0,DCBLRECL
CVD R0,16(13)
OI 23(13),X'0F'
UNPK OPENMSG+35(5),21(3,13)
CLC DW,=C'SYSP'
BNE NOTSYSP
MVC LINE(L'IDMSG),IDMSG
PUT SYSPRINT,LINE-1
MVC LINE,LINE-1
NOTSYSP MVC LINE(8),DW
MVC LINE+9(L'OPENMSG),OPENMSG
B PUTLINE
DROP 2
POP PRINT
* ========================= END OF FILE OPEN ROUTINE ============
* ========================= COMMON WRITE ROUTINES ===============
PUTBADDR DC CL14' ' THIS PREVENTS DUPLICATE BREAK
PUTBREAK CLC PUTBADDR,LINE POINT LOCATIONS, WHEN A LABEL
BER R9 IS FOUND ON A LABEL + CODE.
MVC PUTBADDR,LINE
PUT BREAK,LINE
WTOLINE WTO MF=(E,LINE-5)
PUTLINE PUT SYSPRINT,LINE-1
MVC LINE,LINE-1
BR R9
* -------------------------------------------------
* ERROR ROUTINE CAN BE USED FROM SEVERAL TESTS.
* IT LISTS THE PROGRAM LOCATION, ALONG WITH THE ERROR MSG.
* -------------------------------------------------
BADSYSIN LA R1,0(R14)
SR R1,R13
ST R1,12(R13)
UNPK BADMSG+13(5),14(3,R13)
TR BADMSG+13(4),HEX-240
MVI BADMSG+17,C' '
MVC LINE(L'BADMSG),BADMSG
SR R1,R1
IC R1,0(R14)
MVC LINE+L'BADMSG(0),1(R14)
EX R1,*-6
TM DCBOFLGS-IHADCB+SYSPRINT,DCBOFOPN
BO BADSYW
OPEN (SYSPRINT,OUTPUT)
BADSYW BAL R9,WTOLINE
OI RC,12
B GETSYSIN
BADMSG DC C'SYSIN ERR AT .... '
*
* SKIP MVC LINE+4(4),=C'SKIP' LIST RECORDS NOT USED, VOL-1 BLANK
* MVC LINE+6(80),CARD NOT USED ANY MORE.
* BAL R9,PUTLINE
*
GETSYSIN CLI FLAGTEST,C' ' FOR TEST=1/2 WE DON'T READ SYSIN
BNE ZZ
GET SYSIN
MVC CARD(80),0(R1)
GOTSYSIN CLI CARD,C' '
BE GETSYSIN SKIP
MVC LINE(100),CARD
BAL R9,PUTLINE
CLC =C'COMMAND=',CARD
BNE NOTCOMM
MVC LINE(80),CARD+8
BAL R9,WTOLINE
B GETSYSIN
*
NOTCOMM CLC =C'LABEL=',CARD
BE QQLABEL
CLC =C'LOADLOC=',CARD
ERR BNE,'BAD SYSIN KEYWORD, COMMAND=,LOADLOC=,LABEL='
* ---------------------------------------------------------
* ORIGINALLY LOADLOC COULD BE EITHER ADDRESS OR REGISTER.
* HOWEVER, SINCE BREAK POINTS ARE CREATED BEFORE EXECUTION,
* THE STARTING LOC CANNOT BE A REGISTER.
* MUST BE 5 HEX DIGITS. LIKE LOADLOC=80000
* 80000 IS THE DEFAULT, AND DOES NOT NEED TO BE SPECIFIED.
* ---------------------------------------------------------
MVC ATLINEI+2(5),CARD+8
MVC CARD,CARD+14 LOADLOC=80000.,LABEL=
CLI CARD,C' '
BE GETSYSIN WE CAN HAVE LOADLOC=80000,LABEL=...
B NEXTLBL SO THE ENTIRE CONTROL CAN BE IN PARM.
*
DSECT DSECT 0
LEN DS H
STRING DS CL30
ADDLOC DS CL4
DCLENG DS CL4
LDSECT EQU *-DSECT
QBREAK CSECT
*
* OKAY, HERE WE SAVE A LABEL= PARAMETER.
* SAVE THE LENGTH FIRST, THEN THE LABEL.
* WE COULD HAVE LABEL=GET,GET*,GET 96,GET+12,GET-14.
*
QQLABEL MVC CARD,CARD+6 LABEL=GET*,
USING DSECT,7
NEXTLBL L R7,ATABLE+4
MVC LINE(60),CARD
BAL R9,PUTLINE
MVC 0(LDSECT,R7),SPACES
LA R0,LTABLE(R7)
ST R0,ATABLE+4
C R0,ETABLE
ERR BNL,'TOO MANY LABEL= ENTRIES'
TRT CARD(L'STRING),FINDEND
ERR BZ,'LABEL= STRING TOO LONG'
LR R3,R1
S R3,=A(CARD+1) LABEL=GET LENGTH=4 (WELL 3 AND 2)
LA R0,1(R3)
CLI 0(R1),C'*' LABEL=GET* LENGTH=3
BNE *+6
BCTR R0,0
STH R0,LEN
MVC STRING(0),CARD
EX R3,*-6
CLI 0(R1),C'*'
BNE *+8
LA R1,1(R1)
*
CLC =C' ',0(R1) Q. END OF LABEL=
BE GETSYSIN YES, GO READ.
*
CLI 0(R1),C',' Q. SPECIAL CONTINUATION?
BNE SPECIAL YES, GO DO THAT.
MVC CARD,1(R1) MOVE LEBEL TO FRONT OF CARD
* MVC LINE(80),CARD SET UP TO PRINT IT.
* BAL R9,PUTLINE PRINT IT
B NEXTLBL AND LOOP.
*
* HERE WE SAVE THE +12. OR -14.
* NOBODY WILL EVER USE IT, BUT WE PROMISED.
*
MVC ADDLOC(0),CARD
SAVELOC MVC CARD,0(R1)
TRT CARD+1(4),FINDEND
ERR BZ,'ERR IN +/- LOCATION OFFSET'
LR R3,R1
S R3,=A(CARD+1)
CH R3,=H'32'
ERR BNL,'+/- LOCATION VALUE EXCESSIVE, 31 MAX'
EX R3,SAVELOC-6
QNEXT CLI 0(R1),C' '
BE GETSYSIN
CLI 0(R1),C','
ERR BNE,'UNKNOWN SYSIN ELENMENT'
MVC CARD,1(R1)
B NEXTLBL
*
SPECIAL CLI 0(R1),C'+'
BE SAVELOC
CLI 0(R1),C'-'
BE SAVELOC
CLI 0(R1),C' '
ERR BNE,'BAD DC LABEL LENGTH'
CLI 1(R1),C'0'
ERR BL,'BAD DC LABEL LENGTH'
*
MVC CARD,1(R1)
TRT CARD+1(4),FINDEND
ERR BZ,'INVALID DC LABEL LENGTH'
LR R3,R1
S R3,=A(CARD+1)
CH R3,=H'5'
ERR BNL,'DC LABEL LENGTH TOO LONG'
MVC DCLENG(0),CARD
EX R3,*-6
B QNEXT
* ---------------------------------------
ZZ CLI RC,0 Q. ERROR
BNE Z YES, EXIT
LA R2,DOC
SR R3,R3
MVC LINE+2(0),1(R2)
DOCIC IC R3,0(R2)
EX R3,DOCIC-6
PUT SYSPRINT,LINE-1
MVC LINE,LINE-1
LA R2,2(R2,R3)
CLI 0(R2),X'99'
BL DOCIC
* ---------------------------------------
LISTABLE LM R7,R8,ATABLE
LH R1,LEN
CVD R1,DW
OI DW+7,X'0F'
UNPK LINE(3),DW+6(2)
MVC LINE+4(LDSECT-2),2(R7)
BAL R9,PUTLINE
LA R7,LTABLE(R7)
CR R7,R8
BL LISTABLE+4
MVI LINE,C'-'
MVC LINE+1(40),LINE
BAL R9,PUTLINE
* ---------------------------------------
*
* HERE WE'RE GOING TO SET UP A TABLE OF ONLY THE
* FIRST CHARACTERS OF EACH OF THE LABELS.
* THAT ALLOWS US TO NOT TEST IF THE LABEL CANNOT BE IN THE LIST.
*
* IN PROCESSING, FIRST WE LOOK FOR END OF PRN, AND EXIT
* THEN WE LOOK FOR A REASONABLE LOCATION, AND SKIP IF NOT.
* THEN WE LOOK FOR A LABEL, AND SKIP IF BLANK.
* THEN WE TEST THE FIRST CHAR OF THE LABEL, AND SKIP IF NOT =
*
* FIRST SET UP THE TABLE OF FIRST CHARACTERS OF ALL THE LABELS.
*
LM R7,R8,ATABLE LOAD BEG/END OF LABEL TABLE
SR R3,R3
ZZLOOP IC R3,STRING
LA R4,LBLTBL(R3)
MVI 0(R4),4
LA R7,LTABLE(R7)
CR R7,R8
BL ZZLOOP
SLR R10,R10
LR R11,R10
* -----------------------------------------
* READ A REC. EXIT IF SYM= IS FOUND (END OF ACTIVE LISTING)
* SKIP RECORD IF:
* FIRST CHAR NOT 0 (NOT AN ADDRESS)
* ADDRESS = 000000 (JUNK AT START OF PGM)
* LOC-3 = : (TIME STAMP HEADER)
* LABEL FIELD = BLANK (DUH)
* FIRST CHAR OF LABEL NOT IN LIST OF LABELS.
* -----------------------------------------
GETPRN GET PRN
LA R11,1(R11) ==== COUNT RECORDS, USED TO FIND ERROR WHEN TESTING
CLC =C'SYM=',1(R1) Q. IN CASE WE MISSED END?
BE Z YES, EOF OF //PRN
CLI 0(R1),C'0' Q. LOCATION?
BNE GETPRN NO.
CLC =C'000000',0(R1) Q. DUMB FIRST RECORDS?
BE GETPRN YES, SKIP
CLI 2(R1),C':'
BE GETPRN
CLI 53(R1),C' '
BE GETPRN
*
LR R3,R1 POINT TO RECORD
LA R4,53(R1)
TRT 0(1,R4),LBLTBL A. VALID FIRST CHAR
BZ GETPRN NO.
SAVLABEL MVC LABEL(LLABELS),SPACES YES, SET UP TO SAVE VALUES
*
* HERE WE'RE GOING TO SAVE THE LABEL, OPCODE, AND 2 BYTES OF OPERAND
* JUST MAKES PROCESSING EASIER.
*
LA R5,LABEL
LA R1,31
BAL R14,GETSTR GET THE LABEL, MAX LENG=31
LA R5,OPCODE
LA R1,8
BAL R14,GETSTR GET THE OPCODE, MAX LENG=8
MVC OPERAND(3),0(R4) SAVE 3 BYTES OF OPERAND (FOR DS 0H)
B TESTLBL
* -------------------------------------------
MVC 0(0,R5),0(R4)
TRT 0(0,R4),FINDEND
GETSTR EX R1,GETSTR-6 THIS ROUTINE SAVES A STRING,
BZ GETPRN AND POINTS TO THE NEXT ONE.
LR R2,R1 LABEL, THEN OPCODE,
SR R2,R4 AND SAVE ADDR OF OPERAND
EX R2,GETSTR-12
TRT 0(15,R1),FINDCHAR
BZ GETPRN
LR R4,R1
BR R14
* -------------------------------------------
* OKAY, GOT THE LABEL, SEE IF IT'S IN THE TABLE.
* IF NOT, GO READ
* IF YES, SET UP THE COMMAND,
* AND DETERMINE IF IT'S DATA OR INSTRUCTION.
* -------------------------------------------
CLC LABEL(0),STRING
TESTLBL LM R7,R8,ATABLE
LA R10,1(R10)
TESTLBLL LH R1,LEN
EX R1,TESTLBL-6
BE FOUND
LA R7,LTABLE(R7)
CR R7,R8
BNL GETPRN
B TESTLBLL
FOUND MVC ATLINE,ATLINEI AH HAH, FOUND ONE
MVC ATLINE+9(5),1(R3) INIT THE INSTRUCTION
CLC =C'DC',OPCODE Q. DATA OR INST.
BE DATA GO TO EITHER DATA OR INST
CLC =C'DS',OPCODE ROUTINE.
BNE INST CONSIDER DS 0H TO BE INST.
CLC =C'0H',OPERAND
BE INST
DATA MVI ATLINE,C'D'
MVC ATLINE+16(4),DCLENG
CLC ATLINE+16(4),SPACES
BNE *+10
MVC ATLINE+17(2),=C'96' DEFAULT DATA LENGTH=96
MVC ATLINE+24(12),LABEL WE WRITE DATA DISPLAY TO THE
MVC LINE(L'ATLINE),ATLINE CONSOLE, BUT NOT THE //BREAK FILE
BAL R9,WTOLINE
B GETPRN
INST MVC ATLINE+15(4),ADDLOC
*** MVC ATLINE+24(12),STRING
MVC ATLINE+24(12),LABEL
MVC LINE(L'ATLINE),ATLINE
BAL R9,PUTBREAK
B GETPRN
* -------------------------------------------------
ATLINEI DC CL80'A 80000.+12345.'
ATLINE DC CL80'A 80000.+00000.'
*
LABEL DC CL32' '
OPCODE DC CL8' '
OPERAND DC CL4' '
LLABELS EQU *-LABEL
* -------------------------------------------------
Z MVC LINE(11),=C'INTERACTIVE'
BAL R9,PUTBREAK
CLOSE (PRN,,SYSPRINT,,BREAK)
CLI FLAGTEST,C' ' Q. IS THIS A TEST RUN?
BNE FREEMAIN YES, //SYSIN NOT USED.
CLOSE SYSIN IF NOT, CLOSE //SYSIN
FREEMAIN LM R0,R1,LGETMAIN
FREEMAIN R,LV=(0),A=(1)
SR 15,15
IC 15,RC
L 13,4(13)
L 14,12(13)
LM 0,12,20(13)
BR 14
* -------------------------------------------------
LTORG
LTABLE EQU LDSECT
ATABLE DC 2A(0)
ETABLE DC A(0)
*
LGETMAIN DC F'4040'
AGETMAIN DC F'0'
FLAGTEST DC C' '
RC DC X'00'
P0 DC X'0C'
P1 DC X'1C'
DW DC D'0'
HEX DC C'0123456789ABCDEF '
TEST1 DC C'LOADLOC=FE000,GETMAIN,GET*,OPEN*,BADSYSIN,GOTSYSIN,NOTC
COMM,XTLBL+A.,SAVELOC,QNEXT-4,SPECIAL,LISTABLE,ZZ,Z,P1 8*
,DW,LINE,PARM'
TEST2 DC C'LOADLOC=FE000.,GETPRN,SAVLABEL,GETSTR,TESTLBL,FOUND+C.,
,DATA,INST,WTOLINE,DW,LINE,PARM'
* ---------------------------------
DC H'80,0',C' '
LINE DC CL133' '
CARD DC CL80' ',CL21' '
PUSH PRINT
PRINT NOGEN
DS 0D
PRN DCB DDNAME=LISTING,DSORG=PS,MACRF=GL,RECFM=FT,LRECL=366,EODAD=Z
BREAK DCB DDNAME=BREAK,DSORG=PS,MACRF=PM,RECFM=FT,LRECL=80
SYSIN DCB DDNAME=SYSIN,DSORG=PS,MACRF=GL,RECFM=FT,LRECL=80,EODAD=ZZ
SYSPRINT DCB DDNAME=SYSPRINT,DSORG=PS,MACRF=PM,RECFM=FT,LRECL=133
POP PRINT
* -------------------------------------------------
MAKELOW DC 256AL1(*-MAKELOW)
ORG MAKELOW+C'A'
DC 48AL1(*-MAKELOW-64)
ORG
*
* DC C'ABCDEFGHI',7C' ',CJKOMNOPQR',7C' ',STUVWXYZ',6C' '
* DC C'0123456789',6C' '
*
FINDCHAR DC CL256' '
ORG FINDCHAR+C' '
DC X'00'
SPACES EQU *
ORG
*
FINDEND DC XL256'00'
ORG FINDEND+C' '
DC C' '
ORG FINDEND+C','
DC C','
ORG FINDEND+C'+'
DC C'+'
ORG FINDEND+C'-'
DC C'-'
ORG FINDEND+C'*'
DC C'*'
ORG
*
LBLTBL DC XL256'00' THE FIRST CHAR OF EACH LABEL IS KEPT,
* SO WHEN WE FIND A LABEL, A TRT WILL TELL
* US IF THE FIRST CHAR OF THE LISTING LABEL
* MATCHES ANY FIRST CHAR IN A LOADED LABEL.
* YEAH, I'M OLD. AND REMEMBER WHEN IT MATTERED.
*
DOC EQU *
M 'BREAK POINTS ARE CREATED IN THE ORDER FOUND IN THE LISTING, NOT THE*
ORDER CODED'
M 'LENGTHS ARE COMPARE LENGTH-1. EG GET* SHOWS LENGTH 2. GET SHOWS 3'
M 'GET COMPARES "GET " WITH BLANK AFTER. GET* COMPARES ONLY "GET"'
M 'IGNORING ANYTHING AFTER THE GET, AS IN GETMAIN',X'FF'
* -------------------------------------
* UNFORTUNATELY, GONE OVER 4K. THAT'S THE WAY IT GOES.
* -------------------------------------
@@PAD#0 EQU *-QBREAK+4095
@@PAD#1 EQU @@PAD#0/(4097)
@@PAD#2 EQU (@@PAD#1*4096)
ORG QBREAK+@@PAD#2
*
* DCBD DEVD=DA
END QBREAK