71 lines
2 KiB
Text
71 lines
2 KiB
Text
1000 rem display the chinese zodiac for a given year
|
|
1010 poke 53281,7: rem yellow background
|
|
1020 poke 53280,2: rem red border
|
|
1030 poke 646,2: rem red text
|
|
1040 h1$="chinese zodiac":gosub 2000 set-heading
|
|
1050 gosub 3000 initialize-data
|
|
1060 print
|
|
1070 print "enter year (return to quit):";
|
|
1080 get k$:if k$="" then 1080
|
|
1090 if k$=chr$(13) then end
|
|
1100 poke 631,asc(k$):poke 198,1:rem ungetc(k$)
|
|
1110 open 1,0: input#1, y$: close 1:print
|
|
1120 if val(y$)=0 and y$<>"0" then print chr$(145):goto 1060
|
|
1130 y=val(y$)-4
|
|
1140 sy=fnym(60): rem year of the sexagesimal cycle
|
|
1150 cs=fnym(10): rem celestial stem
|
|
1160 tb=fnym(12): rem terrestrial branch
|
|
1170 el=int(cs/2): rem element
|
|
1180 za=tb: rem zodiac animal
|
|
1190 as=fnym(2): rem aspect
|
|
1200 print
|
|
1210 print "the chinese year beginning in ce "y$
|
|
1220 print "is "cs$(cs)"-"tb$(tb)", year"(sy+1)"of 60,"
|
|
1230 print "the year of the "el$(el)" "za$(za)" ("as$(as)")."
|
|
1260 goto 1060
|
|
1270 end
|
|
2000 print chr$(147);chr$(18);"****";
|
|
2010 sp=32-len(h1$)
|
|
2020 for i=1 to int(sp/2)
|
|
2030 : print " ";
|
|
2040 next i
|
|
2050 print h1$;
|
|
2060 for i=i to sp
|
|
2070 : print " ";
|
|
2080 next i
|
|
2090 print "****";
|
|
2100 return
|
|
3000 dim cs$(9): rem ten celestial stems
|
|
3010 dim tb$(11): rem twelve terrestrial branches
|
|
3020 dim za$(11): rem twelve "zodiac" animals
|
|
3030 dim el$(4): rem five elements
|
|
3040 dim as$(1): rem two aspects
|
|
3050 for i=0 to 9
|
|
3060 : read cs$(i)
|
|
3070 next i
|
|
3080 data jia3, yi3, bing3, ding1, wu4
|
|
3090 data ji3, geng1, xin1, ren2, gui3
|
|
3100 for i=0 to 11
|
|
3110 : read tb$(i)
|
|
3120 next i
|
|
3130 data zi3, chou3, yin2, mao3
|
|
3140 data chen2, si4, wu3, wei4
|
|
3150 data shen2, you3, xu1, hai4
|
|
3160 for i=0 to 11
|
|
3170 : read za$(i)
|
|
3180 next i
|
|
3190 data rat, ox, tiger, rabbit
|
|
3200 data dragon, snake, horse, goat
|
|
3210 data monkey, rooster, dog, pig
|
|
3220 for i=0 to 4
|
|
3230 : read el$(i)
|
|
3240 next i
|
|
3250 data wood, fire, earth
|
|
3260 data metal, water
|
|
3270 for i=0 to 1
|
|
3280 : read as$(i)
|
|
3290 next i
|
|
3300 data yang, yin
|
|
3310 rem year-mod function
|
|
3320 def fnym(d) = y - int(y/d)*d
|
|
3330 return
|