  
  
  ;Program to maximize the potential of IBM and compatables' floppy
  ;disc drives....also makes them quieter.
  ;
  ;DOS sets floppy seek time at 8ms.. most drives will run at 3ms
  ;Drive parameter table works in multiples of 2. "Turbo" boards are
  ;faster, so experiment 'til you get errors and increment by next higher
  ;value.
  ;
  ;Accepts command line number and inserts in the appropriate memory 
  ;location - if none,displays help screen and accepts keyboard input.
  ;
  ;The one glitch is that if you won't listen to reason and keep putting
  ;in invalid numbers, the thing won't exit. Of course, it seems pretty
  ;farfetched for someone to invoke a program and then refuse to use
  ;it. 
               JMP MAIN
  CR           equ 0d
  LF           equ 0a
  data_table   db 0ff,0ff,0ef,0ef,0df,0df,0cf ;can only use 2,4,6,8ms
  Help_mess    db'Usage:fseek {value}',CR,LF,'$'
  _Action      db'Now Changing Head Seek Time to '
  SEEK         db'?'
               db' ms',CR,LF,'$'
  _Error       db'Incorrect Value; Valid entry:2-8',CR,LF,'$'
  
  MAIN:        mov si,081                ; check for command line entry
               mov cx,4
  COMMAND:     lodsb                     
  KEYB:        cmp al,031                ; valid figure? =>2
               ja _PARSE                 ; ok,process
               loopnz COMMAND
               jmp ERROR                 ; otherwise, cockpit error
           
  _PARSE:      xor ah,ah
               cmp al,038                ; valid figure? =<8
               ja ERROR                  ; somebody goofed!!
               mov SEEK,al               ; finally we can go to work
               sub al,032                ; change to binary
               mov si,offset data_table  ; appropriate that sucker
               add si,ax                 ;
               lodsb                     ;
               xor dx,dx
               push dx
               pop es
               es mov [0522],ax          ; Put new value into
               mov dx,offset _Action     ; DOS drive parameter table
               mov ah,09                 ;
               int 021
               int 020                   ; we're done..simple,huh?

  ERROR:       mov dx,offset Help_mess
               mov ah,09
               int 021
               mov dx,offset _Error
               mov ah,09
               int 021
               mov ah,00
               int 016
               jmp KEYB
                             


