Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
122
Task/Variables/Commodore-BASIC/variables-1.basic
Normal file
122
Task/Variables/Commodore-BASIC/variables-1.basic
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
1 rem rosetta code
|
||||
5 rem commodore basic variable demonstration
|
||||
10 print chr$(147);chr$(14);:ti$="000000":rem see lines 420-460
|
||||
15 rem numeric variables default to 0; strings default to empty
|
||||
20 print a:print b%:print c$:print
|
||||
25 :
|
||||
30 rem no symbol after variable defaults to float.
|
||||
35 let a=1.7
|
||||
40 rem "let" is not required and rarely used.
|
||||
45 b=2.42
|
||||
50 print a:print b
|
||||
55 rem % means integer type; digits after decimal are truncated
|
||||
60 b%=1.7
|
||||
65 print b%
|
||||
70 rem $ means string type
|
||||
75 c$="Commodore"
|
||||
80 print c$:print
|
||||
85 :
|
||||
90 rem each type is unique, even when name is "same"
|
||||
95 a=5.0
|
||||
100 a%=9
|
||||
105 a$="twenty-five"
|
||||
110 print a:print a%:print a$:print
|
||||
115 :
|
||||
120 rem names unique only to two characters; extra ignored
|
||||
125 li=10:lives=8:lights=64
|
||||
130 print li:print lives:print lights:print
|
||||
135 rem second character can be alphanumeric, but is not array
|
||||
140 s1=100 : s2=200 : s3=300
|
||||
145 print s1:print s2:print s3:print
|
||||
150 gosub 5000
|
||||
155 :
|
||||
160 rem strings preserve all literal characters
|
||||
165 rem numerics drop leading zeros and trailing zeros after decimal
|
||||
170 n$="01276":print n$:rem 01276
|
||||
175 o%=01276:print n%: rem 1276
|
||||
180 p=4.900:print p: print: rem 4.9
|
||||
185 :
|
||||
190 rem string-numeric conversion functions
|
||||
195 c$="05034"
|
||||
200 c%=val(c$) : rem converts to the numeric value of 5034 (first zero dropped)
|
||||
205 d=123.45600 : rem define a float
|
||||
210 d$=str$(d) : rem converts above into a string
|
||||
215 print c$:print c%:print d:print d$:print
|
||||
218 :
|
||||
220 rem strings can be ordered/compared > or < like numbers
|
||||
225 input "Enter a string";x$:print
|
||||
230 input "Enter another string";y$:print
|
||||
235 if x$>y$ then print x$;" comes after ";y$
|
||||
240 if x$<y$ then print x$;" comes before ";y$
|
||||
245 if x$=y$ then print "You entered the same string twice!"
|
||||
250 gosub 5000
|
||||
255 :
|
||||
260 rem numbers have a leading character for pos/neg sign
|
||||
265 rem " " means positive
|
||||
270 a=-52:b=124
|
||||
275 print a:print b:print
|
||||
280 :
|
||||
285 rem variable operations
|
||||
290 e$="endothermic":print e$
|
||||
295 print left$(e$,3) : rem "end"
|
||||
300 print right$(e$,3) : rem "mic"
|
||||
305 print mid$(e$,4,5) : rem "other"
|
||||
310 print
|
||||
315 a=5:b=20:c=a+b:print a;"+";b;"=";c : rem addition
|
||||
320 q=90:r=60:s=q-r:print s : rem subtraction
|
||||
325 x=3:y=4:z=x*y:print x;"*";y;"=";z : rem 12 multiplication
|
||||
330 l=12:m=16:n=l/m:print l;"/";m;"=";n :rem division
|
||||
335 rem string concatenation
|
||||
340 print
|
||||
345 f$="John":l$="Jones":n$=l$+", "+f$:print f$:print l$:print n$
|
||||
350 gosub 5000
|
||||
355 :
|
||||
360 rem arrays can be single or multidimensional
|
||||
365 rem array index starts at 0
|
||||
370 rem single dimenstion arrays of 11 elements or less
|
||||
375 rem do not need to be DIMensioned
|
||||
380 a$(0)="first":a$(1)="second":a$(3)="third":rem we skipped index 2
|
||||
385 for i=0 to 3:print a$(i):next
|
||||
390 gosub 5000
|
||||
395 dim b(1,20) : rem 42 elements
|
||||
400 for i=0 to 1:for j=0 to 20:b(i,j)=(i+1)*j:next j,i
|
||||
405 for i=0 to 1:print chr$(19):for j=0 to 20:print tab(i*6);b(i,j):next j,i
|
||||
410 gosub 5000
|
||||
415 :
|
||||
420 rem special variables - ti and st are technically functions,
|
||||
425 rem but ti$ can be assigned a value similar to a string variable
|
||||
430 t$=left$(ti$,2)+":"+mid$(ti$,3,2)+":"+right$(ti$,2)
|
||||
435 print "Ticks since program started:":print ti
|
||||
440 print "Elapsed time since program started:":print t$
|
||||
445 print "I/O Status:";st : rem i/o status
|
||||
450 print:print "Enter new time (HHMMSS): ";:gosub 5200
|
||||
455 ti$=t$:gosub 5500
|
||||
460 print
|
||||
465 :
|
||||
470 rem all variables can be cleared with the "clr" statement
|
||||
475 rem however, this also clears the return address stack for subroutines
|
||||
480 rem making "return" not possible.
|
||||
485 print "Before CLR:":print a:print a$:print a$(0):print b:print c
|
||||
490 clr:print:print "After CLR:"
|
||||
495 print a:print a$:print a$(0):print b:print c
|
||||
500 print
|
||||
505 end
|
||||
600 :
|
||||
700 rem supporting subroutines
|
||||
800 :
|
||||
5000 rem screen pause routine
|
||||
5005 print:print "press a key to continue"
|
||||
5010 get k$:if k$="" then 5010
|
||||
5015 print chr$(147):return
|
||||
5020 :
|
||||
5200 rem custom time input routine
|
||||
5205 t$="":for d=1 to 6
|
||||
5210 get k$:if k$<"0" or k$>"9" then 5210
|
||||
5215 t$=t$+k$:print k$;:next
|
||||
5220 return
|
||||
5230 :
|
||||
5500 rem display live clock
|
||||
5505 print chr$(147):print:print "Press a key to continue."
|
||||
5510 print chr$(19);"Time: "left$(ti$,2)":"mid$(ti$,3,2)":"right$(ti$,2);
|
||||
5515 get k$:if k$="" then 5510
|
||||
5520 print chr$(147);:return
|
||||
Loading…
Add table
Add a link
Reference in a new issue