Compucolor.org – Virtual Media

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

10 REM  THIS PROGRAM ILLUSTRATES THE USE OF THE CALL JUMP
20 REM  TO REPEATEDLY LOAD A SCREEN DISPLAY WITHOUT CALLING
30 REM  THE DISC DRIVE EACH TIME.  THE DISPLAY IS LOADED
40 REM  IN HIGH MEMORY AT THE START OF THE PROGRAM AND THEN
50 REM  IS RELOADED INSTANTLY INTO THE SCREEN MEMORY BY THE
60 REM  CALL(0) JUMP AT LINES 180 AND 1600.
70 REM
80 REM  CLOCK TIME IS KEPT IN UTC (GMT).
90 REM  Z$ CORRECTS FOR YOUR TIME ZONE.
95 REM  J IS THE HOUR OFFSET FROM UTC FOR THAT LOCALITY.
96 REM
97 REM  *******************************************************
98 REM
100 GOSUB 2000:REM  LOAD MAP AND CALL ROUTINE IN HIGH MEMORY
110 CLEAR 300:PLOT 12,14,17
120 PRINT TAB( 12)"LOCAL STANDARD TIME FOR VARIOUS CITIES"
130 PLOT 15,22:PRINT TAB( 24)"OF THE WORLD"
140 PRINT
150 REM  BY MYRON STEFFY, SUN CITY, ARIZONA.  1/25/81
160 REM  MAP FROM NCCUG CATALOG.
170 GOSUB 3000:REM  SET CLOCK
180 X= CALL (0):REM  LOAD SCREEN DISPLAY FROM HIGH MEMORY
300 C$= "ALGIERS":X= 35:Y= 17:J= 0:GOSUB 1510
320 C$= "ANCHORAGE":X= 5:Y= 11:J= - 9:GOSUB 1510
340 C$= "BERLIN":X= 37:Y= 14:J= 1:GOSUB 1510
360 C$= "BUENOS AIRES":X= 25:Y= 27:J= - 3:GOSUB 1510
380 C$= "CALCUTTA":X= 50:Y= 20:J= 5:GOSUB 1510
400 C$= "CANBERRA":X= 61:Y= 28:J= 10:GOSUB 1510
420 C$= "CAPETOWN":X= 38:Y= 27:J= 2:GOSUB 1510
440 C$= "CHICAGO":X= 17:Y= 15:J= - 6:GOSUB 1510
460 C$= "HONG KONG":X= 55:Y= 20:J= 8:GOSUB 1510
480 C$= "HONOLULU":X= 0:Y= 20:J= - 10:GOSUB 1510
500 C$= "LONDON":X= 33:Y= 13:J= 0:GOSUB 1510
520 C$= "MOSCOW":X= 41:Y= 12:J= 3:GOSUB 1510
540 C$= "NAIROBI":X= 41:Y= 22:J= 3:GOSUB 1510
560 C$= "NEW YORK":X= 22:Y= 15:J= - 5:GOSUB 1510
580 C$= "PHOENIX":X= 13:Y= 17:J= - 7:GOSUB 1510
600 C$= "SAN FRANCISCO":X= 10:Y= 16:J= - 8:GOSUB 1510
620 C$= "THULE":X= 26:Y= 10:J= - 4:GOSUB 1510
640 C$= "TOKYO":X= 62:Y= 18:J= 9:GOSUB 1510
660 C$= "ULAN BATOR":X= 53:Y= 15:J= 7:GOSUB 1510
680 PLOT 14,3,0,0
700 PRINT "END"
720 PLOT 15
740 END
1500 REM  *** PRINT CITY AND DAY OF WEEK ***
1510 PLOT 14,3,1,2,6,3:REM  YELLOW ON BLACK
1520 PRINT C$:REM  NAME OF CITY
1530 PLOT 15,3,X,Y,6,67,42:REM  LOCATE STAR ON MAP
1540 HL= PEEK (33211)+ J:DL= DU:IF  HL> 23THEN DL= DU+ 1
1550 IF  HL < 0 THEN DL= DU- 1
1560 IF DL> 7THEN DL= 1
1565 IF DL< 1THEN DL= 7
1570 PLOT 15,3,54,4,6,3:REM  YELLOW ON BLACK
1580 PRINT D$(DL):REM  DAY OF WEEK
1590 GOSUB 4000:REM  PRINT LOCAL TIME
1600 X= CALL (0):REM  RESTORE MAP PICTURE
1620 RETURN
2000 REM  *** SUBROUTINE TO LOAD PICTURE  ***
2010 IF PEEK (45609)+ PEEK (45610)+ PEEK (45611)= 558THEN 2040
2020 PLOT 27,4:PRINT "LOAD SCREEN.DSP;02 AFFF":PLOT 27,27
2030 REM  LOAD MACHINE LANGUAGE SUBROUTINE TO BRING UP DISPLAY
2040 DATA 245,229,33,255,175,17,0,112,1,255,191,126,18,124
2050 DATA 184,194,56,175,125,185,202,61,175,35,19,195,44,175
2060 DATA 225,241,201,0,0,0
2070 FOR AD= 44833TO 44865:READ VL:POKE AD,VL:NEXT AD
2080 POKE 33283,33:POKE 33284,175:REM  CALL JUMP ADDRESS
2090 POKE 32940,254:POKE 32941,174:REM  PROTECT MACHINE LANGUAGE
2120 PLOT 27,24
2130 RETURN
3000 REM  *** TIME CLOCK ***:PLOT 6,3,15
3010 REM  *** SET TIME ***
3020 INPUT "ENTER DAY OF THE WEEK ( FIRST THREE LETTERS ) ";N$
3030 PRINT
3040 REM  D$(D) = DAY OF THE WEEK
3050 D$(1)= "SUNDAY":D$(2)= "MONDAY":D$(3)= "TUESDAY"
3060 D$(4)= "WEDNESDAY":D$(5)= "THURSDAY":D$(6)= "FRIDAY"
3070 D$(7)= "SATURDAY"
3080 FOR I= 1TO 7
3090 IF LEFT$ (N$,3)= LEFT$ (D$(I),3)THEN D= I
3100 NEXT I
3110 INPUT "WHAT TIME ZONE ARE YOU IN ?( E,C,M,P ) ";Z$
3120 IF Z$= "E"THEN Z= 5
3130 IF Z$= "C"THEN Z= 6
3140 IF Z$= "M"THEN Z= 7
3150 IF Z$= "P"THEN Z= 8
3160 PRINT
3170 PRINT "ENTER YOUR LOCAL STANDARD TIME IN 12 HOUR FORMAT:"
3180 PRINT
3190 INPUT "A.M OR P.M. ? (A OR P) ";Q$
3200 IF LEFT$ (Q$,1)= "A"THEN Q= 0:GOTO 3220
3210 IF LEFT$ (Q$,1)= "P"THEN Q= 12:GOTO 3220
3220 PRINT
3230 INPUT "SET TIME ( HOURS, MINUTES, SECONDS ) ";H,M,S
3240 REM  *** PUT CORRECT TIME INTO MEMORY ***
3250 IF Q= 0AND H= 12THEN H= 24
3260 IF Q= 12AND H= 12THEN Q= 0
3270 HZ= H+ Z+ Q:IF HZ> 23THEN HZ= HZ- 24:REM  CONVERT TO UTC
3280 POKE 33211,HZ
3290 POKE 33210,M
3300 POKE 33209,S
3310 DU= D:IF Z> PEEK (33211)THEN DU= DU+ 1:REM  UTC DAY
3320 IF DU> 7THEN DU= 1
3330 RETURN
4000 REM  *** PRINT TIME AND DAY ***
4010 PLOT  14:T= 0:REM  COUNTS DURATION OF PAUSE IN SECONDS
4020 S= PEEK (33209)
4030 M= PEEK (33210)
4040 H= PEEK (33211)
4050 IF H> 23THEN H= 0:POKE 33211,H
4060 H= PEEK (33211):HL= H+ J:REM   LOCAL TIME
4070 IF HL> 23THEN HL= HL- 24
4080 IF HL< 0THEN HL= 24+ HL
4090 Q$= " AM":IF HL> 11THEN Q$= " PM":IF HL> 12THEN HL= HL- 12
4100 REM  ***  PUT 0 IN FRONT OF SINGLE DIGIT NUMBERS ***
4110 S$= RIGHT$ (STR$ (S+ 100),2)
4120 M$= RIGHT$ (STR$ (M+ 100),2)
4130 HL$= STR$ (HL):IF  HL= 0THEN HL$= "12":Q$= " AM"
4140 PLOT  14,6,3:REM  YELLOW ON BLACK
4150 PLOT 3,52,2:PRINT HL$;":";M$;":";S$;Q$
4160 REM  ** WAIT UNTIL SECONDS HAVE CHANGED **
4170 IF PEEK (33209)= STHEN 4170
4180 T= T+ 1:IF T> 5THEN RETURN
4190 GOTO 4020