Implement 386 instruction table, improve 8086/186/286 instruction table
[multi_emu.git] / basic_6800_test.txt
1 J0000
2 80
3 Y
4 10 PRINT "HELLO"
5 20 REM P9=X9^Y9 === GOSUB 60030
6 30 X9=.3:Y9=.7:GOSUB 60030:PRINT .3^.7,P9
7 40 REM L9=LOG(X9) === GOSUB 60090
8 50 X9=.4:GOSUB 60090:PRINT LOG(.4),L9
9 60 REM E9=EXP(X9) === GOSUB 60160
10 70 X9=.5:GOSUB 60160:PRINT EXP(.5),E9
11 80 REM C9=COS(X9) === GOSUB 60240
12 90 X9=.6:GOSUB 60240:PRINT COS(.6),C9
13 100 REM T9=TAN(X9) === GOSUB 60280
14 110 X9=.7:GOSUB 60280:PRINT TAN(.7),T9
15 120 REM A9=ATN(X9) === GOSUB 60310
16 130 X9=.8:GOSUB 60310:PRINT ATN(.8),A9
17 140 END
18 60000 REM EXPONENTIATION: P9=X9^Y9
19 60010 REM NEED: EXP, LOG
20 60020 REM VARIABLES USED: A9,B9,C9,E9,L9,P9,X9,Y9
21 60030 P9=1 : E9=0 : IF Y9=0 THEN RETURN
22 60040 IF X9<0 THEN IF INT(Y9)=Y9 THEN P9=1-2*Y9+4*INT(Y9/2) : X9=-X9
23 60050 IF X9<>0 THEN GOSUB 60090 : X9=Y9*L9 : GOSUB 60160
24 60060 P9=P9*E9 : RETURN
25 60070 REM NATURAL LOGARITHM: L9=LOG(X9)
26 60080 REM VARIABLES USED: A9,B9,C9,E9,L9,X9
27 60090 E9=0 : IF X9<=0 THEN PRINT "LOG FC ERROR"; : STOP
28 60095 A9=1 : B9=2 : C9=.5 : REM THIS WILL SPEED UP THE FOLLOWING
29 60100 IF X9>=A9 THEN X9=C9*X9 : E9=E9+A9 : GOTO 60100
30 60110 IF X9<C9 THEN X9=B9*X9 : E9=E9-A9 : GOTO 60110
31 60120 X9=(X9-.707107)/(X9+.707107) : L9=X9*X9
32 60130 L9=(((.598979*L9+.961471)*L9+2.88539)*X9+E9-.5)*.693147
33 60135 RETURN
34 60140 REM EXPONENTIAL: E9=EXP(X9)
35 60150 REM VARIABLES USED: A9,E9,L9,X9
36 60160 L9=INT(1.4427*X9)+1 : IF L9<1E7 THEN 60180
37 60170 IF X9>0 THEN PRINT "EXP OV ERROR"; : STOP
38 60175 E9=0 : RETURN
39 60180 E9=.693147*L9-X9 : A9=1.32988E-3-1.41316E-4*E9
40 60190 A9=((A9*E9-8.30136E-3)*E9+4.16574E-2)*E9
41 60195 E9=(((A9-.166665)*E9+.5)*E9-1)*E9+1 : A9=2
42 60197 IF L9<=0 THEN A9=.5 : L9=-L9 : IF L9=0 THEN RETURN
43 60200 FOR X9=1 TO L9 : E9=A9*E9 : NEXT X9 : RETURN
44 60210 REM COSINE: C9=COS(X9)
45 60220 REM N.B. SIN MUST BE RETAINED AT LOAD-TIME
46 60230 REM VARIABLES USED: C9,X9
47 60240 C9=SIN(X9+1.5708) : RETURN
48 60250 REM TANGENT: T9=TAN(X9)
49 60260 REM NEEDS COS. (SIN NUST BE RETAINED AT LOAD-TIME)
50 60270 REM VARIABLES USED: C9,T9,X9
51 60280 GOSUB 60240 : T9=SIN(X9)/C9 : RETURN
52 60290 REM ARCTANGENT: A9=ATN(X9)
53 60300 REM VARIABLES USED: A9,B9,C9,T9,X9
54 60310 T9=SGN(X9): X9=ABS(X9): C9=0 : IF X9>1 THEN C9=1 : X9=1/X9
55 60320 A9=X9*X9 : B9=((2.86623E-3*A9-1.61657E-2)*A9+4.29096E-2)*A9
56 60330 B9=((((B9-7.5289E-2)*A9+.106563)*A9-.142089)*A9+.199936)*A9
57 60340 A9=((B9-.333332)*A9+1)*X9 : IF C9=1 THEN A9=1.5708-A9
58 60350 A9=T9*A9 : RETURN
59 RUN
60                                                                                                                                                                                                 
61 PRINT "DONE"