// DATE 270915
// NOHALT
*
*** RUN MAINT.
*
// LOAD $MAINT,F1
// RUN
// COPY FROM-READER,TO-F1,RETAIN-R,LIBRARY-S,NAME-$DPL
       MACRO
&LABEL $DPL  &FUNC-,&DADDR-,&CNT-,&CADDR-
.**********************************************************************
.*                                                                    *
.*TITLE: DPL - DISK PARAMETER LIST.                                   *
.*                                                                    *
.*STATUS: RELEASE 1                                                   *
.*                                                                    *
.*FUNCTION/OPERATION:                                                 *
.*   THIS MACRO WILL CREATE AN DISK PARAMETER LIST.                   *
.*                                                                    *
.*INPUT: MACRO USES THE KEYWORD PARAMETERS AS FOLLOWS:                *
.*   FUNC  - DISK FUNCTION (GET, PUT, POS, ETC).                      *
.*   CADDR - CORE ADDRESS.                                            *
.*   DADDR - DISK ADDRESS (CYL/SCTR).                                 *
.*   CNT   - SECTOR COUNT (OPTIONAL).                                 *
.*                                                                    *
.*OUTPUT:                                                             *
.*   THE GENERATED INSTRUCTIONS CREATE A DPL FOR DISK IOCS.           *
.*                                                                    *
.*NOTES: THIS MACRO IS PART OF 5703-XM1.                              *
.*                                                                    *
.*HISTORY: 09/10/15 INITIAL VERSION.                                  *
.*         17/06/20 UPDATED VERSION.                                  *
.*         24/11/21 EXIT LOGIC CORRECTION                             *
.*                                                                    *
.**********************************************************************
       TEXT
       AIF   (T'&LABEL EQ 'O').NOLBL   . ADVANCE IF NO LABEL.
&LABEL EQU   *                         DISK PARAMETER LIST
.*
.NOLBL ANOP
       AIF   (T'&FUNC NE 'O').FNCOK    . FUNC PARM SPECIFIED ?
       DS    CL1                       CONTROL CODE
       AGO   .A
.FNCOK ANOP
       DC    AL1(&FUNC)                REQUESTED FUNCTION
.*
.A     AIF   (T'&DADDR NE 'O').DADOK   . DADDR PARM SPECIFIED ?
       DC    AL2(*-*)                  DISK ADDRESS
       AGO   .B
.DADOK ANOP
       DC    AL2(&DADDR)               DISK ADDRESS
.*
.B     AIF   (T'&CNT EQ 'O').C         . JUMP IF CNT NOT SPECIFIED ?
       DC    AL1(&CNT)                 SECTOR COUNT
       AGO   .CNT00                    . CONTINUE
.C     ANOP
       DC    AL1(*-*)                  SECTOR COUNT
.*
.CNT00 AIF   (T'&CADDR NE 'O').CADOK   . CADDR PARM SPECIFIED ?
       DC    AL2(*-*)                  BUFFER ADDRESS
       AGO   .MEND
.CADOK ANOP
       DC    AL2(&CADDR)               BUFFER ADDRESS
.MEND  ANOP
*** END OF EXPANSION ***
       MEND
// CEND
// END
*
// READER CONSOLE
