/IXSET NEW INDEX SET UP .. HIGHEST PER BLOCK START, PRINT 21;TEXT '_INDEX SET-UP_DEVICE=' TYPTEX ;DEV ;4 GOWDZO ;END ;DEV PRINT 6;TEXT '_FILE=' TYPTEX ;FIL ;6 PRINT 5;TEXT '_EXT=' TYPTEX ;EXT ;2 OPEN DEV, 0;0 FIL, 0;0;0 EXT, 0 XFILES GONEG ;OPENER MOVE-1 ;XFILES ;AIW ;9 FILL ;-1;IB;512 LOAD1 ;AIW+3 GONZRO ;ST3 PRINT 18;TEXT ' NO INDEX REQUIRED' EXIT ST3, LOAD1 ;AIW+1 ADD1 ;AIW+3 STORE1 ;FDB /FIRST DATA BLOCK NO LOAD1 ;AIW+8 NEGATE /LEN.OF FILE SUBT1 ;AIW+3 STORE1 ;LOF /LENGTH OF DATA BLOCKS LOADIM ;256 DIVID1 ;AIW+6 /REC.LEN SUBTIM ;1 MULT1 ;AIW+6 STORE1 ;LRP /LAST REC. POSN LOADIM ;3 SUBT1 ;AIW+7 /KEY LEN STORE1 ;KP1 /0,1,2 LOAD1 ;LOF DIVIM ;84 STORE1 ;TEMP REMAIN GOZERO ;.+3 INCREM ;TEMP LOAD1 ;TEMP SUBT1 ;AIW+3 /NO.IX/BLKS GOZERO ;ST8 GONEG ;ST8 ERR, PRINT 24;TEXT ' NOT ENOUGH INDEX BLOCKS' EXIT ST8, MOVE2 ;AIW ;DWORK MOVE1 ;FDB ;DWORK+1 MOVIM ;256-3 ;HPTR STLP, LOAD2 ;DWORK READAB GONEG ;RERR CLEAR GETREC ;DB CLRWDS ;3;KEY LOADX3 ;AIW+7 /KEY L LOADX2 ;KP1 LOADX1 ;LRP MOVE ;DB+1 ;KEY ;0 LOADX2 ;DPTR MULTX2 3 MOVE3 ;KEY ;IB INCREM ;DWORK+1 /NEXT BLOCK TO READ DECGOZ ;E1 ;LOF /LAST BLOCK DO ;STLP ;DPTR ;1;84 STEN, CLEAR PUTREC ;IB LOAD2 ;AIW ADD1 ;CNTIXB /WRITE INDEX BLOCK WRITAB INCREM ;CNTIXB LOADX2 ;HPTR MOVE3 ;IB+255-3 ;HB GOIFZO ;E2 ;ENDSW LOADIM ;-3 ADDTO1 ;HPTR FILL ;-1;IB;256 CLEARW ;DPTR GOTO ;STLP /END OF DATA E1, CLEARW ;ENDSW GOTO ;STEN E2, LOAD2 ;AIW ADD1 ;AIW+3 SUBTIM ;1 STORE2 ;TEMP READAB CLEAR GETREC ;DB LOADX2 ;HPTR LOADX1 ;HPTR MOVE ;HB ;DB ;256 CLEAR PUTREC ;DB LOAD2 ;TEMP WRITAB /PUT BACK PRINT 8;TEXT '_INDEXED EXIT DB, ZBLOCK 256 IB, ZBLOCK 256 HB, ZBLOCK 256 CNTIXB, 0 FDB, 0 LOF, 0 LRP, 0 KEY, 0;0;0 KP1, 0 DWORK, 0;0 TEMP, 0;0;0 DPTR, 0 IPTR, 0 HPTR, 0 AIW, ZBLOCK 9 ENDSW, 1 OPENER, EXIT RERR, PRINT 11;TEXT ' READ ERROR' END, EXIT