Radio Shack TRS-80 Model 100 Basic Manual page 192

Basic language lab
Hide thumbs Also See for TRS-80 Model 100:
Table of Contents

Advertisement

If
you make a mistake while entering data in the calculator mode, you can press
~
to cancel and start over. You cannot back up to correct an error.
You can use parentheses to make the order of computation unambiguous. The program
allows nesting parentheses up to ten deep.
Here is the listing of the Calculator Program:
100 R(L)=0 : S$(L)="+"
110 GOSUB 500
120 IF C$="." THEN GOSUB 600 : GOSUB 800
130 IF ASC(C$»47 AND ASC(C$)(58 THEN GDSUB 600
GoSUB 800
140 IF C$=")" THEN NU=R(L)
: L=L-l
GoSUB 800 : GO TO 110
150 IF C$="+" THEN S$(l)=C$
GoTo 110
160 IF C$="-" THEN S$(l)=C$
GoTo 110
170 IF C$="*" THEN S$(l)=C$
GoTD 110
180 IF C$="j" THEN S$(l)=C$
GoTo 110
185 IF C$="A" THEN S$(l)=C$
GoTo 110
180 IF C$="(" THEN L=L+1 : R(L)=0 : S$(L)="+"
GOTO 110
200 IF C$="=" THEN PRINT R(l)
: L=0 : GoTo 100
205 IF ASC(C$)=13 THEN PRINT
II
CANCELLED" : L=0
GO TO 100
210 GoTo 110
500 REM SUBROUTINE GET CHARACTER
510 C$=INKEY$ : IF C$="" GoTo 510
520 PRINT C$;
530 RETURN
600 REM SUBROUTINE GET NUMBER
630 NU = 0
635 IF C$="." THEN DF=-l : GoTo 675
640 NU = 10 * NU + VAL(C$)
650 GoSUB 500
855 IF C$="." THEN DF=-l : GoTo 875
860 IF ASC(C$)<48 OR ASC(C$»57 THEN RETURN
670 GO TO 635
675 GoSUB 500
677 IF ASC(C$)<48 DR ASC(C$»57 THEN RETURN
680 NU = NU + VAL(C$) * 10 h DF
680 OF = DF-1
720 GO TO 675
800 REM THIS SUBROUTINE COMPUTES THE
810 REM RESULT AT THE CURRENT LEVEL
820 IF S$(l)="+" THEN R(l) = R(l) + NU
RETURN
830 IF S$(L)="-" THEN R(L) = R(L)
NU
RETURN
840 IF S$(L)="*" THEN R(L) = R(L) * NU
RETURN
850 IF S$(L)="j" THEN R(L) = R(L)
j
NU
RETURN
860 IF S$(L)="h" THEN R(L) = R(L)
h
NU
RETURN
186

Advertisement

Table of Contents
loading

Table of Contents