image of READY prompt

Wang2200.org

Listing of file='CPUDEMO1' on disk='vmedia/benchmark_tests.wvd.zip'

# Sector 26, program filename = 'CPUDEMO1'
0000 DEFFN'0"PRINTHEX(03);:LIST 10,";HEX(0D)
0001 DEFFN'16"X$=";HEX(22);"CPUDEMO";HEX(22);":SCRATCH T X$:SAVE T()X$";HEX(0D
     )
0010 REM CPUPERF 2FEB84
0020 REM PROGRAM NAME - CPU PERFORMANCE BENCHMARK
0030 REM DATE OF FIRST CODE- 2 FEBRUARY 1984
0040 REM DATE OF LATEST UPDATE -
0050 REM
0060 REM FUNCTION -
0070 REM
0080 REM THIS PROGRAM IS DESIGNED TO EXERCISE A SUBSET OF BASIC-2
0090 REM CPU INTENSIVE INSTRUCTIONS.IT IS BEING BUILD TO KEEP TRACK OF
0100 REM CPU PERFORMANCE DURING DEVELOPMENT OF PC/BASIC-2 AND TO GIVE A
0110 REM MEASUREMENT OF THE DIFFERENCE BETWEEN MVP AND PC PERFORMANCE.
0120 REM % SCREEN INITIALIZATION
   : PRINT HEX(0603);"CPU Performance Benchmark"
0130 PRINT AT(2,0);
   : T3$,T1$=TIME
   : PRINTUSING "Start Time: ## Hrs ## Mins  ## Seconds ## 1/100S";STR(T1$,1,2
     ),STR(T1$,3,2),STR(T1$,5,2),STR(T1$,7,2)
   : PRINT
0140 REM % VARIABLE SET-UP
   : T,T1=.5
   : T2=2
0150 REM
0160 REM IF L0 = 10 THEN THIS CORRESPONDS TO THE EXECUTION OF 10 TIMES
0170 REM 1,000,000 WHETSTONE INSTRUCTIONS
0180 REM
0190 L0=1
0200 REM
0210 REM I=10 CORRESPONDS TO 1,000,000 WHETSTONE INSTRUCTIONS FOR MAJOR LOOP
0220 REM
0230 I=10
0240 REM
0250 REM MODULE EXECUTION TIME PARAMETERS
0260 REM
0269 %N1=0: N2=12*I: N3=14*I: N4=345*I: N5=0: N6=210*I: N7=0: REM N7=32*I: N8=
     899*I: N9=616*I: M0=0: M1=93*I: M2=0
0270 N1=1000
   : N2=1000
   : N3=500
   : N4=3000
   : N5=0
   : N6=1000
   : N7=500
   : N8=2000
   : N9=2000
   : M0=3000
   : M1=500
0280 REM % MAJOR LOOP
   : FOR J1=1TO L0
0290 GOSUB '53(1,"Expressions",N1)
   : X1=1
   : X2,X3,X4=-1
   : IF N1<=0THEN 300
   : FOR I=1TO N1
   : X1=(X1+X2+X3-X4)*T
   : X2=(X1+X2-X3+X4)*T
   : X3=(X1-X2+X3+X4)*T
   : X4=(-X1+X2+X3+X4)*T
   : NEXT I
0300 GOSUB '52
0310 GOSUB '53(2,"Array Elements",N2)
   : DIM E1(4)
   : E1(1)=1
   : E1(2),E1(3),E1(4)=-1
   : IF N2<=0THEN 330
   : FOR I=1TO N2
0320 E1(1)=(E1(1)+E1(2)+E1(3)-E1(4))*T
   : E1(2)=(E1(1)+E1(2)-E1(3)+E1(4))*T
   : E1(3)=(E1(1)-E1(2)+E1(3)+E1(4))*T
   : E1(4)=(-E1(1)+E1(2)+E1(3)+E1(4))*T
   : NEXT I
0330 GOSUB '52
0340 GOSUB '53(3,"Array As Parameter",N3)
   : IF N3<=0THEN 350
   : FOR I=1TO N3
   : GOSUB 690
   : NEXT I
0350 GOSUB '52
0360 GOSUB '53(4,"Conditional Jumps",N4)
   : J=1
   : IF N4<=0THEN 430
   : FOR I=1TO N4
   : IF (J-1)<>0THEN 370
   : J=2
   : GOTO 380
0370 J=3
0380 IF (J-2)<=0THEN 390
   : J=0
   : GOTO 400
0390 J=1
0400 IF (J-1)>=0THEN 410
   : J=1
   : GOTO 420
0410 J=0
0420 NEXT I
0430 GOSUB '52
0440 GOSUB '53(6,"Integer Arithmetic",N6)
   : J=1
   : K=2
   : L=3
   : IF N6<=0THEN 450
   : FOR I=1TO N6
   : J=J*(K-J)*(L-K)
   : K=L*K-(L-J)*K
   : L=(L-K)*(K+J)
   : E1(L-1)=J+K+L
   : E1(K-1)=J*K*L
   : NEXT I
0450 GOSUB '52
0460 GOSUB '53(7,"Trigonometric Functions",N7)
   : X,Y=.5
   : IF N7<=0THEN 480
0470 FOR I=1TO N7
   : X=T*ARCTAN(T2*SIN(X)*COS(X)/(COS(X+Y)+COS(X-Y)-1))
   : Y=T*ARCTAN(T2*SIN(Y)*COS(Y)/(COS(X+Y)+COS(X-Y)-1))
   : NEXT I
0480 GOSUB '52
0490 GOSUB '53(8,"Subroutine Calls",N8)
   : X,Y,Z=1
   : IF N8<=0THEN 510
0500 FOR I=1TO N8
   : GOSUB 720
   : NEXT I
0510 GOSUB '52
0520 GOSUB '53(9,"Array References",N9)
   : J,E1(1)=1
   : K,E1(2)=2
   : L,E1(3)=3
   : IF N9<=0THEN 540
0530 FOR I=1TO N9
   : GOSUB 740
   : NEXT I
0540 GOSUB '52
0550 GOSUB '53(10,"Integer Arithmetic",M0)
   : J=2
   : K=3
   : IF M0<=0THEN 570
0560 FOR I=1TO M0
   : J=J+K
   : K=J+K
   : J=K-J
   : K=K-J-J
   : NEXT I
0570 GOSUB '52
0580 GOSUB '53(11,"Standard Functions",M1)
   : X=.75
   : IF M1<=0THEN 600
0590 FOR I=1TO M1
   : X=SQR(EXP(LOG(X)/T1))
   : NEXT I
0600 GOSUB '52
0610 REM % END OF MAJOR LOOP
   : NEXT J1
0620 REM %END
   : T2$=TIME
   : PRINT
   : PRINTUSING "End   Time: ## Hrs ## Mins  ## Seconds ## 1/100S";STR(T2$,1,2
     ),STR(T2$,3,2),STR(T2$,5,2),STR(T2$,7,2)
0630 GOSUB '50(T1$)
   : T4=T9
   : GOSUB '50(T2$)
   : PRINT HEX(07);"Total Elapsed Time =";(T9-T4)/100;"Seconds"
   : PRINT "Press any key to terminate"
   : GOSUB '51(5)
   : GOTO 130
0660 REM TIME CALC
0670 DEFFN'50(T$)
   : CONVERT STR(T$,1,2)TO H
   : CONVERT STR(T$,3,2)TO M
   : CONVERT STR(T$,5,2)TO S
   : CONVERT STR(T$,7,2)TO H1
   : T9=100*(60*(60*H+M)+S)+H1
   : RETURN
0680 REM % SUBROUTINE CALLED BY MODULE 3
0690 DIM E(4)
   : FOR I0=1TO 4
   : E(I0)=E1(I0)
   : NEXT I0
   : J=0
0700 E(1)=(E(1)+E(2)+E(3)-E(4))*T
   : E(2)=(E(1)+E(2)-E(3)+E(4))*T
   : E(3)=(E(1)-E(2)+E(3)+E(4))*T
   : E(4)=(-E(1)+E(2)+E(3)+E(4))*T
   : J=J+1
   : IF (J-6)<0THEN 700
   : RETURN
0710 REM % SUBROUTINE CALLED BY MODULE 8
0720 X1=X
   : Y1=Y
   : X1=T*(X1+Y1)
   : Y1=T*(X1+Y1)
   : Z=(X1+Y1)/T2
   : RETURN
0730 REM % SUBROUTINE CALLED BY MODULE 9
0740 E1(J)=E1(K)
   : E1(K)=E1(L)
   : E1(L)=E1(J)
   : RETURN
1000 DEFFN'51(X)
   : REM %Wait X Seconds
   : T1$=TIME
   : GOSUB '50(T1$)
   : T1=T9+X*100
1010 T2$=TIME
   : KEYIN T1$,9999,9999
   : GOSUB '50(T2$)
   : IF T9<T1THEN 1010
   : RETURN
1020 DEFFN'52
   : T4$=TIME
   : GOSUB '50(T4$)
   : T4=T9
   : GOSUB '50(T3$)
   : PRINT AT(M9+3,40);
   : PRINTUSING "####.## Seconds",(T4-T9)/100
   : T3$=TIME
   : KEYIN T2$,9999,9999
   : RETURN
1029 DIM M9$40
1030 DEFFN'53(M9,M9$,R9)
   : PRINT AT(M9+3,0);
   : PRINTUSING "Module ## - ############################# <---- Testing   ###
     ## Repetitions",M9,M9$,R9;
   : RETURN
9998 DEFFN'15
   : LOAD RUN
9999 DEFFN'127
   : LOAD RUN