Compucolor.org – Virtual Media

Listing of file='CALCOR.BAS;01' on disk='vmedia/games-sector.ccvf'

0 PLOT 12
10 DS= 28510:DE= 28522
12 PLOT 3,27,5:PRINT "CALCULATOR   V0.0 HENGST"
14 PLOT 3,6,10:PRINT "FUNCTION KEYS"
15 PLOT 3,6,11:PRINT "============="
16 PLOT 3,4,13:PRINT "A - ALL CLEAR"
17 PLOT 3,4,14:PRINT "C - CLEAR"
18 PLOT 3,4,15:PRINT "M - MEMORY IN"
19 PLOT 3,4,16:PRINT "P - MEMORY PLUS"
20 PLOT 3,4,17:PRINT "R - MEMORY RECALL"
21 PLOT 3,59,28:PRINT "M"
25 GOSUB 60000
70 HO= 61:HR= 0:D$= "0":GOSUB 400:N1= 0
100 GOSUB 60100
105 IF PT= 1AND C= 46GOTO 100
110 IF C= 46OR C> 47AND C< 58THEN GOSUB 200
120 IF C= 67THEN GOSUB 300
130 IF C= 43OR C= 45OR C= 42OR C= 47THEN GOSUB 600
140 IF C= 61THEN GOSUB 600
150 IF C= 65GOTO 70
160 IF C= 80THEN GOSUB 600
162 IF C= 77THEN M$= D$:GOSUB 700:N1= 0:PT= 0
164 IF C= 82THEN D$= M$:GOSUB 400
199 GOTO 100
200 REM  UPDATE DISPLAY
202 IF N1= 0THEN D$= "":N1= 1
205 IF LEN (D$)= 7THEN RETURN
207 IF C= 46THEN PT= 1
210 D$= D$+ CHR$ (C)
230 GOSUB 500
240 GOSUB 400
299 RETURN
300 REM  CLEAR DISPLAY
310 D$= "0"
315 PT= 0
320 GOSUB 400
330 RETURN
400 REM  PUT D$ ON SCREEN4
410 D= LEN (D$):FOR I= - 4TO 7- D:POKE DS+ TW* I,32:NEXT I
420 FOR I= 1TO D:POKE DS+ (7- D+ I)* 2,ASC (MID$ (D$,I,1)):NEXT I
430 RETURN
500 REM  SUPRESS LEADING 0S
505 IF LEN (D$)< 2THEN  RETURN
510 IF LEFT$ (D$,1)= "0"THEN D$= RIGHT$ (D$,LEN (D$)- OE)
530 RETURN
600 REM  OPERATIONS
610 N1= 0
620 IF HO= 43THEN HR= HR+ VAL (D$)
630 IF HO= 42THEN HR= HR* VAL (D$)
640 IF HO= 45THEN HR= HR- VAL (D$)
650 IF HO= 47THEN IF VAL (D$)< > 0THEN HR= HR/ VAL (D$)
655 IF HO= 61THEN HR= VAL (D$)
660 D$= STR$ (HR):GOSUB 400
662 IF C= 80THEN M$= STR$ (VAL (M$)+ VAL (D$)):GOSUB 700:HO= 61:GOTO 680
670 HO= C
680 PT= 0
699 RETURN
700 REM  PUT M$ ON SCREEN
710 D= LEN (M$):FOR I= - 4TO 7- D:POKE DS+ TW* I- 256,32:NEXT I
720 IF D< > 0THEN FOR I= 1TO D:POKE DS+ (7- D+ I)* 2- 256,ASC (MID$ (M$,I,1)):NEXT I
730 RETURN
59999 END
60000 REM  INI ROUTINE
60010 SS= 24576:TW= 2:ZE= 0:OT= 127:TR= 3:OE= 1
60020 PLOT 3,0,0:FOR I= 0TO 63:POKE SS+ 2* I+ 1,ZE:POKE SS+ 2* I,ZE:NEXT I:PLOT 3,0,0
60030 PLOT 3,64,0
60040 PLOT 3,120,0,0,0
60100 REM  GET ROUTINE
60110 IF B1> 63THEN B2= 1
60190 X= PEEK (SS+ B1)
60195 IF B2= OEAND X= ZETHEN PLOT TR,120,ZE,ZE,ZE:B1= 0:B2= 2
60200 IF X= ZETHEN C= ZE:RETURN
60210 C= X:POKE SS+ B1+ OE,ZE:POKE SS+ B1,ZE:B1= B1+ TW
60220 RETURN