home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 June / PCWorld_1999-06_cd.bin / software / temacd / awin110 / SPEEDTST.DSK / SPEEDTEST.bas < prev   
BASIC Source File  |  1996-07-06  |  9KB  |  208 lines

  1. 10  LOMEM: 24576
  2. 20  HOME : TEXT 
  3. 30 D$ =  CHR$(4)
  4. 40  PRINT D$"NOMON C,I,O"
  5. 50 VER$ = "2.2.2": REM  VERSION NUMBER     
  6. 200  REM  READ INDEX HEADINGS
  7. 210  READ INDEX
  8. 220  DIM IN$(INDEX)
  9. 230  FOR A = 1 TO INDEX
  10. 240  READ IN$(A)
  11. 250  NEXT 
  12. 300  REM  READ TEST DATA
  13. 310  READ TESTS
  14. 320  DIM TN$(TESTS),TF$(TESTS),TM(TESTS),TT(TESTS),TR(TESTS),TX(TESTS),TI(TESTS)
  15. 330  FOR A = 1 TO TESTS
  16. 340  READ TN$(A),TF$(A),TM(A),TX(A),TT(A)
  17. 350  NEXT 
  18. 400  REM  DIMENSION OTHER NEEDED ARRAYS
  19. 410 A = TESTS *2
  20. 420  DIM F$(A)
  21. 600  REM  INTRO
  22. 610  VTAB 9: PRINT "           SPEED TEST ";VER$
  23. 620  PRINT : PRINT : PRINT "     PROGRAMMED BY CLAYTEN HAMACHER"
  24. 630  PRINT : PRINT "            WNIGHT@CAFE.NET"
  25. 640  VTAB 22: PRINT : PRINT "PRESS ANY KEY TO CONTINUE";: GET A$
  26. 1000  HOME 
  27. 1010  PRINT "          SPEED TEST"
  28. 1020  VTAB 10: PRINT "B)EGIN TESTING"
  29. 1030  PRINT : PRINT "R)EAD INSTRUCTIONS"
  30. 1040  PRINT : PRINT "V)IEW RESULTS"
  31. 1050  PRINT : PRINT "W)RITE RESULTS TO A FILE"
  32. 1060  PRINT : PRINT "Q)UIT"
  33. 1070  PRINT : PRINT "PLEASE ENTER SELECTION: ";
  34. 1080  GET A$: PRINT A$: IF A$ < >"B"  AND A$ < >"b"  AND A$ < >"R"  AND A$ < >"r"  AND A$ < >"Q"  AND A$ < >"q"  AND A$ < >"V"  AND A$ < >"v"  AND A$ < >"W"  AND A$ < >"w"  THEN  PRINT  CHR$(7): GOTO 1000
  35. 1090  IF A$ = "Q"  OR A$ = "q"  THEN  END : REM  QUIT... WHAT DID YOU THINK IT DID?
  36. 1100  IF A$ = "R"  OR A$ = "r"  THEN  GOSUB 7000:A$ = "": REM  PRINT OUT THE INSTRUCTIONS
  37. 1110  IF A$ = "B"  OR A$ = "b"  THEN  GOSUB 2000:A$ = "": REM  BEGIN TESTING
  38. 1120  IF A$ = "V"  OR A$ = "v"  THEN  GOSUB 6000:A$ = "": REM  DISPLAY RESULTS
  39. 1130  IF A$ = "W"  OR A$ = "w"  THEN  GOSUB 5000:A$ = "": REM   WRITE RESULTS TO A FILE
  40. 1140  GOTO 1000
  41. 2000  REM  TESTING MENU
  42. 2010  HOME : PRINT "#   NAME                    INDEX TIME"
  43. 2020  PRINT 
  44. 2030  FOR A = 1 TO TESTS: PRINT A;: HTAB 3: PRINT ") ";TN$(A);: HTAB 29: PRINT IN$(TX(A));
  45. 2040 A$ =  LEFT$( STR$(TT(A)),5): IF TT(A) <100  THEN A$ = " " + LEFT$(A$,4)
  46. 2050  HTAB 35: PRINT A$: NEXT 
  47. 2060  PRINT 
  48. 2070  PRINT "A)LL TESTS"
  49. 2080  PRINT "E)NTER RESULTS DIRECTLY"
  50. 2090  PRINT "Q)UIT BACK TO MAIN MENU"
  51. 2100  VTAB 23: PRINT "PLEASE ENTER YOUR SELECTION: ";: INPUT A$
  52. 2110  IF ( VAL(A$) = 0  OR  VAL(A$) >TESTS)  AND A$ < >"A"  AND A$ < >"a"  AND A$ < >"Q"  AND A$ < >"q"  AND A$ < >"E"  AND A$ < >"e"  THEN  PRINT  CHR$(7): GOTO 2000
  53. 2120 TV = 0
  54. 2130  IF A$ = "Q"  OR A$ = "q"  THEN  RETURN 
  55. 2140  IF A$ = "A"  OR A$ = "a"  THEN TV = 0: GOSUB 3000:A$ = ""
  56. 2150  IF A$ = "E"  OR A$ = "e"  THEN  GOSUB 3180:A$ = ""
  57. 2160  IF A$ < >""  THEN TV =  VAL(A$): GOSUB 3000:A$ = ""
  58. 2170  GOTO 2000
  59. 2180  END 
  60. 3000  REM  PASS TEST INFO ONE AT A TIME TO NEXT ROUTINE
  61. 3010  IF TV < >0  THEN  GOTO 3140
  62. 3020  FOR AA = 1 TO TESTS
  63. 3030  GOSUB 4000
  64. 3040  HOME : VTAB 12: PRINT "N)EXT TEST"
  65. 3050  PRINT : PRINT "R)EDO TEST"
  66. 3060  PRINT : PRINT "Q)UIT TO TESTING MENU"
  67. 3070  VTAB 23: PRINT "PLESE ENTER YOUR SELECTION: ";: PRINT "N"; CHR$(8);: GET A$: IF A$ =  CHR$(13)  THEN A$ = "N"
  68. 3080  IF A$ < >"N"  AND A$ < >"n"  AND A$ < >"R"  AND A$ < >"r"  AND A$ < >"Q"  AND A$ < >"q"  THEN  PRINT  CHR$(7): GOTO 3040
  69. 3090  IF A$ = "R"  OR A$ = "r"  THEN  GOTO 3030
  70. 3100  IF A$ = "Q"  OR A$ = "q"  THEN AA = 9999: REM  BREAK OUT OF THE LOOP
  71. 3110  REM  A$ MUST BE "N"
  72. 3120  NEXT 
  73. 3130  RETURN 
  74. 3140  REM  EXECUTE JUST ONE TEST
  75. 3150 AA = TV
  76. 3160  GOSUB 4000
  77. 3170  RETURN 
  78. 3180  VTAB 23: PRINT "CHANGE RESULTS FOR WHICH TEST  "; CHR$(8); CHR$(8);: INPUT A$
  79. 3190 A =  VAL(A$)
  80. 3200  HOME : PRINT "PLEASE ENTER THE RESULTS";: INPUT A$
  81. 3210 TR(A) =  VAL(A$)
  82. 3220  PRINT : PRINT : PRINT "YOU ENTERED ";TR(A);" IS THIS CORRECT? Y"; CHR$(8);: GET A$
  83. 3230  IF A$ =  CHR$(13)  THEN A$ = "Y"
  84. 3240  IF A$ < >"Y"  AND A$ < >"y"  THEN 3200
  85. 3250 TI(A) = TT(A)/(TR(A) +0.00001)
  86. 3260  RETURN 
  87. 4000  REM  PERFORM TESTS
  88. 4010  PRINT D$: PRINT D$"BLOAD ";TF$(AA)
  89. 4020  HOME : PRINT TN$(AA);" TEST!": PRINT : PRINT "THIS TEST TOOK ";TT(AA);" SECONDS ON A //E"
  90. 4030  PRINT : PRINT "PRESS ANY KEY TO START": GET A$
  91. 4035  IF TM(AA) = 1  THEN  HOME 
  92. 4040  IF TM(AA) = 2  THEN  GR 
  93. 4050  IF TM(AA) = 3  THEN  HGR2 
  94. 4060  PRINT : PRINT "STARTING TEST!"
  95. 4070  CALL 768: REM  ALL ROUTINES MUST HAVE AN ENTRY POINT AT $300
  96. 4080  IF TM(AA) = 1  OR TM(AA) = 2  THEN  HOME : TEXT 
  97. 4090  PRINT : PRINT "FINISHED TEST!"; CHR$(7)
  98. 4100  PRINT : PRINT : PRINT "PRESS ANY KEY TO CONTINUE": GET A$
  99. 4110  HOME : PRINT "HOW LONG DID THE TEST TAKE";: INPUT A$
  100. 4120 TR(AA) =  VAL(A$)
  101. 4130  PRINT : PRINT : PRINT "YOU ENTERED ";TR(AA);" IS THIS CORRECT? Y"; CHR$(8);: GET A$
  102. 4140  IF A$ =  CHR$(13)  THEN A$ = "Y"
  103. 4150  IF A$ < >"Y"  AND A$ < >"y"  THEN 4110
  104. 4160 TI(AA) = TT(AA)/TR(AA)
  105. 4170  HOME 
  106. 4180  RETURN 
  107. 5000  REM  WRITE THE TEST RESULTS TO A FILE
  108. 5010  GOSUB 6000: REM  DISPLAY RESULTS BEFORE WRITING TO A FILE
  109. 5020  PRINT : VTAB 23: PRINT "DO YOU WISH TO PRINT THESE RESULTS?";: GET A$: PRINT A$
  110. 5030  IF A$ < >"Y"  AND A$ < >"y"  THEN  RETURN 
  111. 5040 S$ = "                         "
  112. 5050  FOR A = 1 TO INDEX:D = 0:C = 0
  113. 5060  FOR B = 1 TO TESTS
  114. 5070  IF TX(B) = (A)  AND TI(B) < >0  THEN C = C +TI(B):D = D +1
  115. 5080  NEXT 
  116. 5090 F$(A +2) =  LEFT$((IN$(A) +" INDEX" +S$),30) + LEFT$( STR$(C/(D +0.00001)),6)
  117. 5100  NEXT 
  118. 5110  FOR A = 1 TO TESTS
  119. 5120 A$ = TN$(A) +S$
  120. 5130 B$ =  STR$(TR(A)) +S$
  121. 5140 C$ =  STR$(TI(A)) +S$
  122. 5150 F$(A +2 +INDEX) =  LEFT$(A$,23) +"  " + LEFT$(B$,4) +"/" + LEFT$(C$,4)
  123. 5160  NEXT 
  124. 5170  HOME 
  125. 5180  PRINT "PLEASE DESCRIBE THE MACHINE THESE": PRINT "TESTS WERE PERFORMED ON"
  126. 5190  INPUT F$(1):F$(1) = "SPEED TEST " +VER$ +" PERFORMED ON " +F$(1)
  127. 5200  PRINT : PRINT : PRINT "PLEASE ENTER A FILE-NAME": PRINT "TO SAVE THE RESULTS TO"
  128. 5210  INPUT F$
  129. 5220 F = TESTS +2
  130. 5230 F$(2) = "TEST NAME                TIME RELATIVE"
  131. 5240  GOSUB 9000: REM   WRITE RESULTS TO THE FILE    
  132. 5250  RETURN 
  133. 6000  HOME : REM  DISPLAY RESULTS
  134. 6010  PRINT "TEST NAME";: HTAB 25: PRINT "TIME";: HTAB 31: PRINT "RELATIVE"
  135. 6020  PRINT 
  136. 6030  FOR A = 1 TO INDEX:D = 0:C = 0: FOR B = 1 TO TESTS
  137. 6040  IF TX(B) = (A)  AND TI(B) < >0  THEN C = C +TI(B):D = D +1
  138. 6050  NEXT : PRINT IN$(A);" INDEX";: HTAB 31: PRINT  LEFT$( STR$(C/(D +0.00001)),5): REM  AVERAGE OF PERFORMANCE INDEXES
  139. 6060  NEXT 
  140. 6070  FOR A = 1 TO TESTS
  141. 6080 A$ =  STR$(TR(A)) +"     ":B$ =  STR$(TI(A)) +"     ":A$ =  LEFT$(A$,5):B$ =  LEFT$(B$,5)
  142. 6090  PRINT TN$(A);: HTAB 25: PRINT A$;: HTAB 31: PRINT B$
  143. 6100  NEXT 
  144. 6110  VTAB 23: PRINT "PRESS ANY KEY TO CONTINUE";: GET A$
  145. 6120  RETURN 
  146. 6130  END 
  147. 7000  REM  PRINT OUT THE INSTRUCTIONS
  148. 7010 F$ = "INSTRUC1.TXT"
  149. 7020  GOSUB 8000: REM  READ A TEXT FILE
  150. 7030  GOSUB 7100: REM  DISPLAY THE TEXT FILE   
  151. 7040  VTAB 23: PRINT "PRESS ANY KEY TO CONTINUE";: GET A$
  152. 7050 F$ = "INSTRUC2.TXT"
  153. 7060  GOSUB 8000: REM  READ FROM A TEXT FILE
  154. 7070  GOSUB 7100: REM  DISPLAY THE TEXT FILE
  155. 7080  VTAB 23: PRINT "PRESS ANY KEY TO CONTINUE";: GET A$
  156. 7090  RETURN 
  157. 7100  HOME 
  158. 7110 A$ = ""
  159. 7120  FOR A = 1 TO F
  160. 7130  FOR B = 1 TO  LEN(F$(A))
  161. 7140 B$ =  MID$ (F$(A),B,1)
  162. 7150  IF B$ = "\"  THEN  PRINT A$:A$ = ""
  163. 7160  IF B$ < >"\"  THEN A$ = A$ +B$
  164. 7170 B$ = ""
  165. 7180  NEXT 
  166. 7190  NEXT 
  167. 7200  RETURN 
  168. 8000  REM  READ DATA FROM TEXT FILE F$
  169. 8010  PRINT D$: PRINT D$"OPEN ";F$
  170. 8020  PRINT D$"READ ";F$
  171. 8030  INPUT F
  172. 8040  FOR A = 1 TO F
  173. 8050  INPUT F$(A)
  174. 8060  NEXT 
  175. 8070  PRINT D$"CLOSE ";F$
  176. 8080  RETURN 
  177. 9000  REM  WRITE DATA TO A TEXT FILE BY THE NAME OF F$
  178. 9010  PRINT D$"OPEN ";F$
  179. 9020  PRINT D$"CLOSE ";F$
  180. 9030  PRINT D$"DELETE ";F$
  181. 9040  PRINT D$"OPEN ";F$
  182. 9050  PRINT D$"WRITE ";F$
  183. 9060  PRINT F
  184. 9070  FOR A = 1 TO F
  185. 9080  PRINT F$(A)
  186. 9090  NEXT 
  187. 9100  PRINT D$"CLOSE ";F$
  188. 9110  RETURN 
  189. 48999  END 
  190. 49000  DATA  4: REM  NUMBER OF INDEXES IN TEST        
  191. 49010  DATA  "CPU","TEXT","VIDEO","DISK"
  192. 49020  DATA  15: REM  NUMBER OF TESTS IN GROUP      
  193. 49030  REM  DATA "TEST NAME","FILE NAME",(0|1|2|3)=NONE|TEXT|GR|HGR,INDEX#,TIME ON A //E
  194. 49040  DATA  "MEMORY READ","MEM-READ",0,1,119.2
  195. 49050  DATA  "MEMORY WRITE","MEM-WRITE",0,1,119.2
  196. 49060  DATA  "MEMORY READ (ZERO PAGE)","MEM-READ-ZP",0,1,119.6
  197. 49070  DATA  "MEMORY WRITE (ZERO PAGE)","MEM-WRITE-ZP",0,1,119.6
  198. 49080  DATA  "INDIRECT REFERENCES","INDIRECT",0,1,119.7
  199. 49090  DATA  "BRANCH CALCULATION","BRANCH-TEST",0,1,119.3
  200. 49100  DATA  "REGISTER VARIABLES","REGISTER-VARS",0,1,83.3
  201. 49110  DATA  "INSTRUCTION FETCH","INSTR-FETCH",0,1,119.9
  202. 49120  DATA  "CPU INSTRUCTION MIX","CPU-SAMPLER",0,1,116.2
  203. 49130  DATA  "DIRECT TEXT WRITES","DIRECT-TEXT",1,2,120.1 
  204. 49140  DATA  "DIRECT TEXT WRITES #2","DIRECT-TEXT2",1,2,120.4 
  205. 49150  DATA  "BIOS TEXT WRITES","BIOS-TEXT",1,2,119.3
  206. 49160  DATA  "DIRECT LORES WRITES","DIRECT-LORES",2,3,117.1
  207. 49170  DATA  "HIGH-RES MEMORY WRITES","HGR-FILL",3,3,114.5
  208. 49180  DATA  "RWTS FULL DISK READ","RWTS-TEST",0,4,97.7