start tok64 d64-SjVR1J 10 REM c-64 calculator 12 PRINT"{clear}":GOSUB206:GOSUB152:GOSUB220 14 IFPEEK(53247)<>88THEN290 16 GOSUB228 18 z=0 20 IFba<>10THENs$(z)=h$:z=z+3:GOTO24 22 s$(z)=d$:z=z+3 24 GETa$:IFa$=""THEN24:REM scan keys 26 IFf6=0THENPOKEs+1,80+4*f7*VAL(a$):POKEs,177:POKEs+4,33:FORt=1TO20:NEXT:POKEs+4,32 28 IFba<>10THEN258 30 FORi=1TO15:IFa$=MID$(n$,i,1)THEN36 32 NEXT 34 GOTO62:REM a$ not numeric 36 REM add to d$ 38 IF(a$="-"ORa$="+")THEN42 40 GOTO44 42 IF(f3<>0ANDRIGHT$(d$,1)<>"e")ORf5=1THEN62 44 IFd$=" 0"ORf4=1THENd$=" ":f1=0:f2=0:f3=0:f4=0:m=0 46 f3=1 48 IFa$="{arrow left}"THENd$=LEFT$(d$,LEN(d$)-1):f1=0:f2=0:GOSUB228:GOTO24 50 IFa$="."ANDf1=1THEN24 52 IFa$="e"ANDf2=1THEN24 54 IFa$="."THENf1=1 56 IFa$="e"THENf2=1:f1=1 58 IFLEN(d$)<15THENd$=d$+a$ 60 GOSUB228:GOTO24 62 m=0:f1=0:IF ba<>10THENs$(z)=h$:z=z+1:GOTO66 64 s$(z)=d$:z=z+1 66 dd=0:FORi=1TOLEN(op$):IFa$=MID$(op$,i,1)THEN76 68 NEXTi:IFa$="{f1}"THENz=z-1:GOTO270 70 IFa$="h"THENz=z-1:GOTO302 72 IFa$="{f5}"THENf6=-(f6=0):IFf6=1THENf7=-(f7=0) 74 GOTO24 76 f4=1:f5=1:d=VAL(d$):d$=STR$(d) 78 ONiGOTO102,100,100,100,100,100,100,114,80,82,84,84,116,118,134,136,138 80 d$=" 0":f3=0:f5=0:op=o:a=0:GOSUB228:s$(z)="clear display":z=z+1:GOTO24 82 FORi=1TO8:r(i)=0:NEXT:GOSUB220:FORi=1TOz:s$(i)="":NEXT:z=1:GOTO24 84 IFa$="s"THENPRINT"{home}{down*5}{right*2}{space*15}{left*15}save register?":GOTO88 86 PRINT"{home}{down*5}{right*2}{space*15}{left*15}recall?" 88 GETb$:IFb$=""THEN88 90 IFb$=CHR$(13)THEN80 92 j=VAL(b$):IFj>=1ANDj<=8THEN96 94 GOTO84 96 IFa$="r"THENs$(z)="recall #"+b$:z=z+1:d$=STR$(r(j)):GOSUB228:GOTO24 98 r(j)=VAL(d$):s$(z)="save to #"+b$:z=z+1:GOSUB228:GOSUB220:GOTO24 100 GOSUB120:op=i:a=VAL(d$):s$(z)=a$:z=z+1:GOSUB228:GOTO24 102 s$(z)="= ":z=z+1:ONopGOTO24,104,106,108,108,110,112 104 d$=STR$(a+VAL(d$)):GOSUB228:a=0:op=0:GOTO20 106 d$=STR$(a-VAL(d$)):GOSUB228:a=0:op=0:GOTO20 108 d$=STR$(a*VAL(d$)):GOSUB228:a=0:op=0:GOTO20 110 d$=STR$(a/VAL(d$)):GOSUB228:a=0:op=0:GOTO20 112 d$=STR$(a^VAL(d$)):GOSUB228:a=0:op=0:GOTO20 114 d$=STR$(ABS(d)^.5):s$(z)="square root ":z=z+1:GOSUB228:GOTO20 116 d$=STR$(LOG(ABS(d))):s$(z)="ln ":z=z+1:GOSUB228:GOTO20 118 d$=STR$(LOG(ABS(d))/LOG(10)):s$(z)="log ":z=z+1:GOSUB228:GOTO20 120 ONopGOTO24,122,124,126,126,128,130,132,132,132,132,132,132,132 122 d$=STR$(a+VAL(d$)):f3=0:f5=0:RETURN 124 d$=STR$(a-VAL(d$)):f3=0:f5=0:RETURN 126 d$=STR$(a*VAL(d$)):f3=0:f5=0:RETURN 128 d$=STR$(a/VAL(d$)):f3=0:f5=0:RETURN 130 d$=STR$(a^VAL(d$)):f3=0:f5=0:RETURN 132 d$=STR$(VAL(d$)):f3=0:f5=0:RETURN 134 ba=16:ba$="{space*4}":GOTO146 136 ba=10:ba$="{space*4}":GOTO146 138 PRINT"{home}{down*5}{right*2}{space*15}{left*15}base"; 140 INPUTba$:ba=VAL(MID$(ba$,49,2)):IFba<2ORba>73THEN138 142 ba$="{space*4}":IFba=10ORba=16ORba=8ORba=2THEN146 144 ba$="<"+RIGHT$(STR$(ba),LEN(STR$(ba))-1)+">":IFba<10THENba$=ba$+" " 146 PRINT"{home}{down*7}B{space*6}"ba$ 148 s$(z)="base"+STR$(ba):z=z+1 150 GOSUB228:GOSUB220:a$="=":GOTO102 152 PRINT"{blue}{clear}";:REM print screen 154 PRINT"{space*23}U{C*15}I"; 156 PRINT"U{C*17}I [1]B{space*15}B"; 158 PRINT"B c-64 calculator B{space*4}J{C*15}K"; 160 PRINT"B{space*17}B{space*4}U{C*15}I"; 162 PRINT"BU{C*15}IB [2]B{space*15}B"; 164 PRINT"BB{space*15}BB{space*4}J{C*15}K"; 166 PRINT"BJ{C*15}KB{space*4}U{C*15}I"; 168 PRINT"B{space*17}B [3]B{space*15}B"; 170 PRINT"B{space*17}B{space*4}J{C*15}K"; 172 PRINT"B{space*2}UCIUCIUCIUCI{space*3}B{space*4}U{C*15}I"; 174 PRINT"B{space*2}BsBBrBBcBBNB{space*3}B [4]B{space*15}B"; 176 PRINT"B{space*2}JCKJCKJCKJCK{space*3}B{space*4}J{C*15}K"; 178 PRINT"B{space*2}UCIUCIUCIUCI{space*3}B{space*4}U{C*15}I"; 180 PRINT"B{space*2}B7BB8BB9BBVB{space*3}B [5]B{space*15}B"; 182 PRINT"B{space*2}JCKJCKJCKJCK{space*3}B{space*4}J{C*15}K"; 184 PRINT"B{space*2}UCIUCIUCIUCI{space*3}B{space*4}U{C*15}I"; 186 PRINT"B{space*2}B4BB5BB6BBCB{space*3}B [6]B{space*15}B"; 188 PRINT"B{space*2}JCKJCKJCKJCK{space*3}B{space*4}J{C*15}K"; 190 PRINT"B{space*2}UCIUCIUCIUCI{space*3}B{space*4}U{C*15}I"; 192 PRINT"B{space*2}B1BB2BB3BB{sh +}B{space*3}B [7]B{space*15}B"; 194 PRINT"B{space*2}JCKJCKJCKJCK{space*3}B{space*4}J{C*15}K"; 196 PRINT"B{space*2}U{C*3}I UCIUCI{space*3}B{space*4}U{C*15}I"; 198 PRINT"B{space*2}B 0 B BQBB=B{space*3}B [8]B{space*15}B"; 200 PRINT"B{space*2}J{C*3}K JCKJCK{space*3}B{space*4}J{C*15}K"; 202 PRINT"J{C*17}K"; 204 RETURN 206 REM initialize 208 e$="{right*24}{space*15}{left*15}":DIMs$(1000) 210 n$="0123456789.e+-{arrow left}":op$="=+-x*/^@"+CHR$(13)+"CsrLlHDB":d$=" 0":a$="":ba=10 212 nn$=".":FORi=0TO72:nn$=nn$+CHR$(48+i-(i>9)*7):NEXT 214 s=54272:FORl=sTOs+24:POKEl,0:NEXT:POKEs+5,9:POKEs+6,0:POKEs+24,15 216 POKE53280,15:POKE53281,15 218 RETURN 220 IFba<>10THEN224:REM print memory registers 222 PRINT"{home}";:FORi=1TO8:PRINT"{down}"e$;r(i);"{down}";SPC(15-LEN(STR$(r(i)))):NEXT:RETURN 224 PRINT"{home}";:FORi=1TO8:d=r(i):GOSUB234 226 PRINT"{down}"e$;h$;"{down}";SPC(16-LEN(h$)):NEXT:PRINT"{home}";:RETURN 228 REM print display 230 IFba=10THENPRINT"{home}{down*5}{right*2}{space*15}{left*15}"d$;:RETURN 232 d=VAL(d$):GOSUB234:PRINT"{home}{down*5}{right*2}{space*15}{left*15}"h$;:RETURN 234 REM convert d$ to base ba (h$) 236 b=1:FORk=1TO13:b=b*ba:IFb>dTHEN240 238 NEXT:h$="***************":RETURN 240 h$=" ":IFk>1THENFORl=1TOk-1:d=d/ba:NEXT 242 IFba=16THENh$="$" 244 IFba=2THENh$="%" 246 IFba=8THENh$="@" 248 IFd<0THENh$=h$+"-":d=ABS(d) 250 FORl=1TO13*(-(ba<11)-(ba>10)*2/LOG(ba)):d%=d:h$=h$+CHR$(48+d%-(d%>9)*(7)) 252 d=ba*(d-d%):IFd=0ANDl>k-1THENRETURN 254 IFl=kTHENh$=h$+"." 256 NEXT:RETURN 258 REM input routine for ba<>10 260 FORi=1TOba+1:IFa$=MID$(nn$,i,1)THEN264 262 NEXT:GOTO62 264 IFi=1THENf1=1:GOTO24 266 IFf1=0THENdd=ba*dd+i-2:d$=STR$(dd):GOSUB228:GOTO24 268 m=m+1:dd=dd+(i-2)/ba^m:d$=STR$(dd):GOSUB228:GOTO24 270 j=22:PRINT"{clear}"TAB(12)"press to quit" 272 PRINTTAB(18)" to scan" 274 PRINTTAB(18)" to print{home}"; 276 FORi=1TO22:PRINTs$(i) 278 NEXT 280 GETa$:IFa$=""THEN280 282 IFa$="{down}"THENj=j+1:PRINTs$(j):FORt=1TO50:NEXT:GOTO280 284 IFa$="{f7}"THENOPEN4,4:FORi=1TOz:PRINT#4,s$(i):NEXT:PRINT#4,:CLOSE4:GOTO280 286 IFa$="h"THEN302 288 GOSUB152:GOSUB228:GOSUB220:GOTO24 290 t$="c-64 calculator{space*6}by{space*2}dick weisiger{space*5}hit h for help":POKE53247,88 292 d$="{space*15}" 294 FORi=1TOLEN(t$):d$=RIGHT$(d$+MID$(t$,i,1),15) 296 PRINT"{home}{down*5}{right*2}"d$;:FORt=1TO50:NEXTt,i 298 GETa$:IFa$=""THEN298 300 IFa$<>"h"THENd$=" 0":GOSUB228:GOTO26 302 PRINT"{clear}{space*7}c-64 calculator commands{down*2}" 304 PRINT"+ - * / ^ ={space*5}legal operators" 306 PRINT"{space*8}{space*3}clears display" 308 PRINT" {space*5}clears registers" 310 PRINT"{space*8}<{arrow left}>{space*5}clears last char" 312 PRINT"{space*8}{space*5}saves to register" 314 PRINT"{space*8}{space*5}recalls from register" 316 PRINT"{space*8}<@>{space*5}square root" 318 PRINT"{space*8}{space*5}log base 10" 320 PRINT" {space*5}natural log" 322 PRINT"{space*8}{space*5}displays help screen" 324 PRINT" {space*5}sets calculator to hex" 326 PRINT" {space*5}sets calculator to dec" 328 PRINT" {space*5}sets to any other base" 330 PRINT"{space*8}{space*4}reviews calculation" 332 PRINTTAB(16)"(includes print option){down}" 334 PRINT"{up}{space*8}{space*4}disables/enables sound{down}" 336 PRINT"note: bases > 35 utilize graphic chars" 338 PRINT"{space*6}hit for list of chars used{down}" 340 PRINT"{space*10}" 342 GETa$:IFa$=""THEN342 344 IFa$="{f8}"THEN348 346 d$=" 0":GOSUB152:GOSUB228:GOSUB220:GOTO24 348 PRINT"{clear}";:FORi=1TO24 350 PRINTi;MID$(nn$,i+2,1)TAB(15)i+24;MID$(nn$,i+26,1)TAB(30)i+48;MID$(nn$,i+50,1) 352 NEXT:GOTO342 stop tok64 (bastext 1.0)