~aleteoryx/pb1000

718a70d5186a1c94e4a96d2ff68fc9310f2e1267 — Aleteoryx 11 days ago master
init
5 files changed, 153 insertions(+), 0 deletions(-)

A README.md
A clock.b
A hello.b
A keycodes.b
A primes.b
A  => README.md +1 -0
@@ 1,1 @@
some programs I've written for my CASIO PB-1000. type them in and enjoy!!!!!!

A  => clock.b +120 -0
@@ 1,120 @@
  9 'setup screen
 10 CLS
 11 PRINT"The date is           ."
 12 PRINT"The time is         ."
 14 LOCATE 0,3
 15 PRINT"[exit  ][change][redraw]        ";

 29 'test buttons. the touch buttons are mapped to keycodes 240-255
 30 GOSUB 500
 35 K=ASC(INKEY$)
 40 ON K-251 GOTO 60,100,10
 45 GOTO 30

 59 'exit
 60 CLS
 65 PRINT"Bye!"
 70 END


 99 'date set menu
100 LOCATE 0,3
105 PRINT"change? [date  ][time  ][cancel]"
110 GOSUB 500
114 'debounce keypress, in theory
115 K=ASC(INKEY$)
116 IF ASC(INKEY$)<>0 GOTO 116 ELSE 120
120 ON K-252 GOTO 200,300,30
125 GOTO 110


195 'set date
200 PMAX=9999
205 PSTR$="year"
210 PVAL$=RIGHT$(DATE$,4)
215 GOSUB 600
220 NY$=PVAL$
225 NY=VAL(NY$)

230 PMAX=12
235 PSTR$="month"
240 PVAL$=LEFT$(DATE$,2)
245 GOSUB 600
250 NM$=PVAL$
255 NM=VAL(NM$)

260 IF NM=2 AND NY MOD 4=0 AND NY MOD 100<>0 THEN PMAX=29 ELSE 400
265 PSTR$="day"
270 PVAL$=MID$(DATE$,4,2)
275 GOSUB 600

280 DATE$=NM$+"-"+PVAL$+"-"+NY$
285 GOTO 10


299 'set time
300 PMAX=23
305 PSTR$="hour"
310 PVAL$=LEFT$(TIME$,2)
315 GOSUB 600
320 NH$=PVAL$

325 PMAX=59
330 PSTR$="minute"
335 PVAL$=MID$(TIME$,4,2)
340 GOSUB 600

345 NT$=NH$+":"+PVAL$
350 LOCATE 0,3
355 PRINT "[set time to ";NT$;"    ][cancel]";

360 GOSUB 500
365 K=ASC(INKEY$)
370 IF K<252 GOTO 360 ELSE IF K<>255 GOTO 375 ELSE 100

375 TIME$=NT$
380 GOTO 10


399 'days in month
400 RESTORE 430
405 FOR I=1 TO NM
410 READ PMAX
415 NEXT
420 GOTO 265

430 DATA 31,28,31,30,31,30,31,31,30,31,30,31


499 'print time
500 LOCATE 12,0
510 PRINT DATE$
515 LOCATE 12,1
520 PRINT TIME$
525 RETURN


598 'prompting routine
599 PMAX=max val, PSTR$=prompt, PVAL$=result
600 LOCATE 0,3:PRINT"                                ";:LOCATE 0,0
605 LOCATE 0,3:PRINT"set ";PSTR$;" ( 1 -";PMAX;")> ";PVAL$;"_";

610 GOSUB 500
615 K=ASC(INKEY$)
620 IF K=13 AND VAL(PVAL$)<>0 GOTO 660 ELSE IF K=8 GOTO 625 ELSE IF K>=48 AND K<58 GOTO 640 ELSE 610

624 'backspace
625 PVAL$=LEFT$(PVAL$,LEN(PVAL$)-1)
630 GOTO 600

639 'digits. allow leading 0s, don't allow value >PMAX
640 NPV$=PVAL$+CHR$(K)
645 NPV=VAL(NPV$)
650 IF (NPV=0 AND K<>48) OR NPV>PMAX GOTO 610 ELSE PVAL$=NPV$:GOTO 600

659 'EXE=submit
660 PLEN=LEN(STR$(PMAX))-1
664 'truncate or add leading 0s
665 IF LEN(PVAL$)<PLEN THEN PVAL$=LEFT$("0000",PLEN-LEN(PVAL$)) ELSE PVAL$=RIGHT$(PVAL$,PLEN)
669 'debounce
670 IF ASC(INKEY$)<>0 GOTO 670 ELSE RETURN

A  => hello.b +2 -0
@@ 1,2 @@
10 PRINT "Hello, World!"
20 GOTO 10

A  => keycodes.b +23 -0
@@ 1,23 @@
10 PRINT"Keycodes..."

15 K$=INKEY$
16 K=ASC(K$)

20 N=K¥16
21 GOSUB 50
25 N2$=N$

30 N=K MOD 16
31 GOSUB 50

35 PRINT "Pressed 0x";N2$;N$;" (";K;")"
40 GOTO 15

49 'hex codes, didn't realize this was a builtin :P
50 RESTORE 100
55 FOR I=0 TO N
60 READ N$
65 NEXT
70 RETURN

100 DATA 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

A  => primes.b +7 -0
@@ 1,7 @@
10 X=1

20 Y=1
21 X=X+2

30 Y=Y+2
35 IF X<Y*Y THEN PRINT X:GOTO 20 ELSE IF X MOD Y=0 GOTO 20 ELSE GOTO 30