
        .LIBRARY        /SYS$LIBRARY:LIB/
        $DVIDEF
        $FIBDEF
        $FATDEF
        $FCHDEF
        $ATRDEF

        .PSECT        DATA, NOEXE, WRT, RD, PIC

FAOI:   .ASCID   /The largest contiguous space is !UL blocks./
FAOO:   .ASCID   /                                                 /
NAME_OF_FILE:.ASCID /                                                       /
DISK:   .ASCID   /                    / ;Default disk

CHANNEL:
        .WORD   0                       ; Channel store
IOSB:   .QUAD   0

ITMLST:                                 ; Getdvi Item list
        .WORD   4                       ; 4 bytes of data
        .WORD   DVI$_MAXBLOCK           ; Maximum number of blocks
        .ADDRESS MAXBLOCK               ; Fill in the largest
                                        ; Space on disk
        .LONG   0                       ; No need for return length
        .LONG   0                       ; End of list

MAXBLOCK:
        .LONG   0                       ; Hold Maxblocks here
FIBDESC:
       .LONG    FIB$C_LENGTH
       .ADDRESS FIB

FIB:
       .BLKB    FIB$C_LENGTH

FILEATTR:
       .WORD    ATR$S_RECATTR           ; File Attributes list
       .WORD    ATR$C_RECATTR
       .ADDRESS ATTRIBUTES
UCHAR:                                  ; Characteristics of the file
       .WORD    ATR$S_UCHAR
       .WORD    ATR$C_UCHAR
       .ADDRESS CHARACTERISTICS
       .LONG    0                       ; End of list

ATTRIBUTES:
       .BYTE    0                       ; Fill by bit pushing
       .BYTE    FAT$M_NOSPAN
       .WORD    0                       ; Variable length records
       .QUAD    0                       ; Fill area
       .LONG    0                       ; Fill area No relation to Fixed
                                        ;  records
       .WORD    512                     ; Maximum record size
       .WORD    0                       ; Default Extent quantity
       .WORD    0                       ; Global Buffer Count
       .BLKB    6                       ; 6 spare bytes
       .WORD    0                       ; Version limit (directory only)
CHARACTERISTICS:
       .LONG    0                       ; A contiguous file

PROMPT:
       .ASCID   /DISK: /
FILENAME:
       .ASCID   /CONTIG.TST;1/
;
       .PSECT   CODE, EXE, NOWRT
       .ENTRY   ACP, ^M<>

       PUSHAB   DISK
       PUSHAB   PROMPT
       PUSHAB   DISK
       CALLS    #3, G^LIB$GET_INPUT     ; Get the name of the disk
       BLBS     R0, 10$                 ; Check for error
       RET                              ; And return it
10$:
       $ASSIGN_S  DEVNAM=DISK, -        ; Get the channel to the disk
                  CHAN=CHANNEL
       BLBS     R0, 12$
       RET

12$:
       $GETDVI_S  CHAN=CHANNEL, -       ; Get the device info
                  ITMLST=ITMLST
       BLBS     R0, 13$
       RET
13$:
       MOVL     #^X40004, -
       FIB+FIB$W_DID                    ; Fill the Directory ID
       MOVL     #FIB$M_WRITETHRU, -     ; Write File Header to disk
                FIB+FIB$L_ACCTL

       INSV     #FAT$C_VARIABLE, -      ; Set the Record type
                #FAT$V_RTYPE, -
                #FAT$S_RTYPE, -
                ATTRIBUTES
       INSV     #FAT$C_SEQUENTIAL, -    ; Sequential records
                #FAT$V_FILEORG, -
                #FAT$S_FILEORG, -
                ATTRIBUTES
                                        ; Specify a contiguous file
       MOVL     #FCH$M_CONTIG!FCH$M_NOBACKUP!FCH$M_MARKDEL, -
                CHARACTERISTICS
       MOVL     MAXBLOCK, FIB+FIB$L_EXSZ
       MOVW     -
         #FIB$M_EXTEND!FIB$M_ALCON!FIB$M_ALCONB!FIB$M_FILCON!FIB$M_ALDEF, -
         FIB+FIB$W_EXCTL
       MOVL     #FIB$M_WRITETHRU, FIB+FIB$L_ACCTL

       $QIOW_S  CHAN=CHANNEL, -         ; Access the file/Create
                FUNC=#IO$_CREATE!IO$M_CREATE!IO$M_EXTEND, -
                IOSB=IOSB, -            ; Check Create status
                P1=FIBDESC, -           ; Address of FIB
                P2=#FILENAME, -         ; Address of Filename
                P3=#NAME_OF_FILE,-
                P4=#NAME_OF_FILE,-
                P5=#FILEATTR            ; File Attributes

       BLBS     R0, 15$
       RET
15$:
       BLBS     IOSB, 16$
       CMPW     #SS$_DEVICEFULL, IOSB
       BEQL     16$
       MOVZWL   IOSB, R0
       RET
16$:
       $FAO_S   CTRSTR=FAOI, -
                OUTBUF=FAOO, -
                P1=<IOSB+4>
       PUSHAB   FAOO
       CALLS    #1, G^LIB$PUT_OUTPUT
       $QIOW_S  CHAN=CHANNEL, -
                FUNC=#IO$_DELETE!IO$M_DELETE, -
                IOSB=IOSB,-
                P1=FIBDESC,-
                P2=#NAME_OF_FILE
       MOVZWL   IOSB, -(SP)
       $DASSGN_S  CHAN=CHANNEL
       POPR     #^M<R0>
       RET
      .END      ACP
