dX; SNAIL 1.0n!X; ATARI DISK DRIVE TACHOMETERxX; (C)1983 ANALOG COMPUTINGX;X; SYNTAX: X=USR(ML,B1,B2)X; ML=addr of this routine"X; B1=addr of dummy disk buffer$X; B2=addr of 32-byte work bufferX;X; Program equatesX; BASIC;; BASIC return addr&POINTER;; pointer to workbuffer TEMP;; temporary variable"SYSTIM;; system jiffy timer$CONSOLE;; console key status#DISKIOS;; disk handler entryDBUF;; disk buffer addrX;"7;; # arguments,7;; msb of disk buffer addr6 PDBUF@ 7;; lsbJ PDBUFT7;; msb of work buffer addr^PPOINTERh 7;; lsbr PPOINTER|-;; clear decimal modeQ> PBASIC"PBASIC;; clear BASIC return& DISKIO;; bring drive up to speed!X;X; Read sector #1 32 timesX;Q>PTEMP;; initialize index AGAINQ>PSYSTIM;; reset timer DISKIO;; read sector QSYSTIM;; obtain access time%TEMP;; and indexP@POINTER7;; save in buffer&10GSUM;; exit if buffer full:"'TEMP;; otherwise update indexD QCONSOLENR>;; START key pressed?X#HAGAIN;; no; get another sectorb:;; otherwise exitlX;vX; Add up the timer readingsX;*X; BASIC return addr serves double dutyX; as a temporary sum bufferX;SUM%>;; initialize index NEXTADD,Q@POINTER7 OBASIC PBASIC DOKAY #BASICOKAY 1INEXTADD;; keep adding :;; give sum to BASIC