Program to measure 810 disk speed#

General Information

Author: Carl D. Howe
Language: BASIC
Compiler/Interpreter: Atari Basic
Published: 28 Oct 1981 19:35:38 EST (Wednesday)

How to use#

The following is my DSKRPM program that I described in a previous message. It is not entirely deterministic; I assume that this is because of heterodyning between BASIC execution and the disk rotation. However, I have not really verified this fact; if anyone has any ideas any ideas, please let me know.

Carl cdh@BBN-UNIX

P.S. The proper number to get is about 292 RPM.

01 LET READS=25
05 DIM BUF$(256),PROG$(20)
10 GOSUB 2000:GOSUB 1000
15 P1=PEEK(18):P2=PEEK(19):P3=PEEK(20)
20 FOR I=1 TO READS
30 GOSUB 1000
40 NEXT I
43 Q1=PEEK(18):Q2=PEEK(19):Q3=PEEK(20)
45 BGTIME=P1*65536+P2*256+P3
50 DNTIME=Q1*65536+Q2*256+Q3
60 PRINT 3600*READS/(DNTIME-BGTIME);" RPM"
70 GOTO 10
1000 REM THIS IS THE READ SECTOR ROUTINE
1010 DCB=3*256
1030 POKE DCB+1,1
1040 POKE DCB+2,5*16+2
1050 HIADDR=INT(ADR(BUF$)/256)
1060 LOWADDR=ADR(BUF$)-HIADDR*256
1070 POKE DCB+4,LOWADDR
1080 POKE DCB+5,HIADDR
1090 POKE DCB+10,1
1100 POKE DCB+11,0
1110 A=USR(B):RETURN 
1900 REM THIS ROUTINE GENERATES A
1902 REM SMALL MACHINE LANGUAGE
1904 REM ROUTINE AS FOLLOWS:
1906 REM PLA
1908 REM JSR DSKINV
1910 REM RTS
2000 B=ADR(PROG$)+1
2010 POKE B,6*16+8
2020 POKE B+1,2*16
2030 POKE B+2,5*16+3
2040 POKE B+3,14*16+4
2050 POKE B+4,6*16
2060 RETURN