;       CONT.SBR
;               SUBROUTINE TO CONVERT SEQUENTIAL FILES TO RANDOM
;                       05/15/85 - D. EICHBAUER
;
;
;                       PROPRIETARY PROGRAM MATERIAL
;
;       THIS MATERIAL IS THE PROPERTY OF DALE A. EICHBAUER,
;       692 E. FREELAND ROAD, MERRILL, MICHIGAN, 48637.  PERMISSION
;       TO COPY & USE IS GRANTED FOR NON-PROFIT USES ONLY.
;
;
;
;
;
       SEARCH  SYS
       SEARCH  SYSSYM
       SEARCH  TRM

       AUTOEXTERN

       OBJNAM  CONT.SBR

       VMAJOR=1.
       VMINOR=0.
       VSUB=0.
       VEDIT=100.
       VWHO=1.

       DDB1.L= 0
       DDB2.L= 4

       PHDR    -1,PV$RPD,PH$REE!PH$REU

       BR      START
       ASCII   / COPYRIGHT (C) 1985 DALE A. EICHBAUER /
       EVEN

START:
       MOV     #1,D1                   ; THE FILE CHANNEL # FOR RANDOM
       CALL    $FLSET                  ; FIND ITS DDB
       JNE     BASIC                   ; IF NOT FOUND, THEN ERROR
       MOV     A2,DDB1.L(A4)           ; SAVE THE DDB ADDRESS
       MOV     #2,D1                   ; NOW THE SEQUENTIAL FILE
       CALL    $FLSET                  ; FIND ITS DDB
       JNE     BASIC                   ; AGAIN, ERROR IF NOT FOUND
       MOV     A2,DDB2.L(A4)           ; SAVE THIS DDB ADDRESS
       MOV     DDB1.L(A4),A1           ; GET THE CONTIGUOUS DDB ADDRESS
       CLR     D.REC(A1)               ; CLEAR THE RECORD COUNTER
L1:     MOV     #512.,D0                ; OUR BLOCKS ARE 512 BYTES LONG
       MOV     DDB1.L(A4),A1           ; GET ADDRESS AGAIN IN CASE LOST
       CLR     D.IDX(A1)               ; WE'RE AT BEGINNING OF BUFFER
LOOP:
       MOV     DDB2.L(A4),A1           ; POINT TO SEQUENTIAL
       FILINB  @A1                     ; GET ONE BYTE
       TST     D.SIZ(A1)               ; SEE IF AT END OF FILE
       BEQ     BASIC                   ; IF SO, CLOSE UP SHOP
       MOV     DDB1.L(A4),A1           ; NOW POINT TO CONTIGUOUS
       MOV     D.BUF(A1),A2            ; POINT TO ITS BUFFER
       ADD     D.IDX(A1),A2            ; AND CURRENT LOCATION IN BUFFER
       MOVB    D1,@A2                  ; PUT THE DATA INTO CONTIGUOUS
       INC     D.IDX(A1)               ; AND BUMP THE POINTER
       SOB     D0,LOOP                 ; LOOP TILL BUFFER FULL
       MOV     DDB1.L(A4),A1           ; GET DDB ADDRESS FOR CONTIGUOUS
TRAP:   OUTPUT  @A1                     ; OUTPUT THE BLOCK
       INC     D.REC(A1)               ; AND POINT TO NEXT RECORD
       BR      L1                      ; NOW LOOP BACK TILL DONE

BASIC:  RTN                             ; BACK TO BASIC



       ASCII   / COPYRIGHT (C) 1985 DALE A. EICHBAUER /

       END