Compucolor.org – Virtual Media

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

100 REM                THE ALAN CORPORATION
200 REM                       PRESENTS
300 REM                            THE TIME MACHINE
400 REM   THIS CLEARS THE SCREEN AND DISPLAYS THE HEADING.
500 CLEAR 250:DIM V$(60):PLOT 12,14,6,3,27,24
600 PRINT :PRINT :PRINT
700 PRINT "THE ALAN CORPORATION
800 PRINT "PRESENTS
900 PRINT "THE TIME MACHINE
1000 PRINT :PRINT
1100 REM   THIS DISPLAYS INSTRUCTIONS AND SETS THE TIME.
1200 PLOT  15,6,2
1300 PRINT "IF THE COMPUTER HAS BEEN DE-ENERGIZED
1400 PRINT "SINCE THE TIME WAS INSERTED INTO THE
1500 PRINT "UNIT, THEN YOU MUST ENTER THE TIME
1600 PRINT "IN ORDER FOR THE CLOCK TO OPERATE PROPERLY.
1700 PRINT
1800 INPUT "SET TIME?(YES/NO)";A$
1900 IF A$= "N"OR A$= "NO"OR A$= "0"THEN 3000
2000 INPUT "ENTER CORRECT TIME; HOUR,MIN,SEC (EG;9,25,40)";H,M,S
2100 POKE 33211,H+ 1
2200 POKE 33210,M
2300 POKE 33209,S
2400 REM
2500 REM
3000 REM   THIS PLOTS THE NUMBERS FOR THE CLOCK DISPLAY.
3100 PLOT   12,14,6,1
3200 PLOT 3,45,3:PRINT "I
3300 PLOT 3,54,8:PRINT "II
3400 PLOT 3,56,16:PRINT "III
3500 PLOT 3,53,25:PRINT "IV
3600 PLOT 3,45,28:PRINT "V
3700 PLOT 3,31,31:PRINT "VI
3800 PLOT 3,17,28:PRINT "VII
3900 PLOT 3,8,25:PRINT "VIII
4000 PLOT 3,6,16:PRINT "IX
4100 PLOT 3,10,8:PRINT "X
4200 PLOT 3,18,3:PRINT "XI
4300 PLOT 3,30,0:PRINT "XII
4400 REM
5000 REM   THIS GETS THE PLOT CO-ORDINATES.
5100 FOR X= 0TO 59
5200 READ V$(X)
5300 NEXT X
5400 V$(60)= V$(0)
5500 PLOT 3,64,0:REM  MOVE THE CURSOR OFF THE SCREEN
10000 REM   THESE ARE THE PLOT CO-ORDINATES.
10100 DATA  "063118","067120","072119","077117","081115"
10200 DATA "085113","089110","092106","096102","099097"
10300 DATA "101092","103087","105081","106076","107069"
10400 DATA "107063","107059","106053","105046","103041"
10500 DATA "102036","099031","096027","093022","089018"
10600 DATA "085015","081013","077010","073008","068007"
10700 DATA "063009","059007","054008","049010","045012"
10800 DATA "041014","037017","034021","030025","027030"
10900 DATA "025036","023040","021046","020051","019058"
11000 DATA "019064","019068","020075","021081","023086"
11100 DATA "025091","027096","030101","033105","037109"
11200 DATA "041112","045115","049117","053119","058120"
20000 REM   THIS PLOTS THE SECOND HAND.
20100 GOSUB  60000:IF SS> < STHEN 20600
20200 S1= VAL (LEFT$ (V$(S),3))
20300 S2= VAL (RIGHT$ (V$(S),3))
20400 PLOT 6,7
20500 PLOT 2,63,63,242,S1,S2,255:GOTO 20700
20600 PLOT 6,0,30,2,63,63,242,S1,S2,255,29
20700 SS= S
30000 REM   THIS PLOTS THE MINUTE HAND.
30050 GOSUB 60000:IF MM< > MTHEN 30500
30100 M1= VAL (LEFT$ (V$(M),3))
30200 M2= VAL (RIGHT$ (V$(M),3))
30300 PLOT 6,2
30400 PLOT 2,63,63,242,M1,M2,255:GOTO 30600
30500 PLOT 6,0,30,2,63,63,242,M1,M2,255,29
30600 MM= M
30700 REM
40000 REM  THIS PLOTS THE HOUR HAND.
40050 GOSUB 60000:IF HH> < HTHEN 40450
40100 H1= VAL (LEFT$ (V$(H),3))
40200 H2= VAL (RIGHT$ (V$(H),3))
40300 PLOT 6,4
40400 PLOT 2,63,63,242,H1,H2,255:GOTO 40500
40450 PLOT 6,0,30,2,63,63,242,H1,H2,255,29
40500 HH= H:GOTO 20000
60000 REM   THIS IS WHERE THE TIME COMES FROM.
60100 H= PEEK (33211)- 1
60200 M= PEEK (33210)
60300 S= PEEK (33209)
60400 IF H> 11THEN H= H- 12
60500 IF H= 12THEN H= 0
60550 H= H* 5+ M/ 12
60600 RETURN
65000 PLOT 30,16,29:PRINT "LISTING TO PRINTER":GOSUB 65080:PRINT "ENTER THE ";:PLOT 34
65010 PRINT "VOLUME:FILE NAME";:PLOT 34:INPUT " IN QUOTES: ";N$
65020 IF VAL (N$)= 0THEN N$= "R VICK 013:ANALOG.BAS;01"
65030 SS= PEEK (33209):MI= PEEK (33210):HR= PEEK (33211)- 1
65040 PLOT 15,27,18,6:POKE 33289,95:OUT 8,255:OUT 8,4:PLOT 27,13,27,117,20
65050 PRINT N$;" ";YR* 100+ MO;".";RIGHT$ (STR$ (DY+ 100),2);"  ";
65060 PRINT RIGHT$ (STR$ (HR* 100+ MI+ 10000),4);":";RIGHT$ (STR$ (SS+ 100),2):PRINT
65070 POKE 33265,14:LIST :PLOT 12:OUT 8,255:POKE 33265,0:POKE 33289,64:END
65080 ADR= 65532:YR= PEEK (ADR+ 1):MO= PEEK (ADR+ 2):DY= PEEK (ADR+ 3):IF YR> = 80THEN 65170
65090 INPUT "DATE/TIME (YRMO.DY [HHMM])? ";D$
65100 GOSUB 65190:YR= D:GOSUB 65190:MO= D:D$= RIGHT$ (D$,LEN (D$)- 1):GOSUB 65190:DY= D
65110 POKE ADR+ 1,YR:POKE ADR+ 2,MO:POKE ADR+ 3,DY
65120 ADR= 256* PEEK (32941)+ PEEK (32940):IF ADR< = 65532THEN 65140
65130 ADR= 65532:ZZ= INT (ADR/ 256):POKE 32940,ADR- 256* ZZ:POKE 32941,ZZ
65140 IF LEN (D$)= 0THEN 65170
65150 D$= RIGHT$ (D$,LEN (D$)- 1):GOSUB 65190:HR= D:GOSUB 65190:MI= D
65160 POKE 33209,0:POKE 33210,MI:POKE 33211,HR+ 1
65170 SS= PEEK (33209):MI= PEEK (33210):HR= PEEK (33211)- 1
65180 PRINT YR* 100+ MO;".";RIGHT$ (STR$ (DY+ 100),2);"  ";RIGHT$ (STR$ (HR* 100+ MI+ 10000),4);":";RIGHT$ (STR$ (SS+ 100),2):RETURN
65190 D= VAL (LEFT$ (D$,2)):IF LEN (D$)= 2THEN D$= "":RETURN
65200 D$= RIGHT$ (D$,LEN (D$)- 2):RETURN