10 ' SAVE"B:SIKI",A 20 ' SAVE"B:SIKI.CPY",A 30 '******************************************************** 40 '**** 四季における地軸の傾きと昼の長さ夜の長さの変化 **** 50 '**** 1990年 1月 山田 洋 **** 60 '******************************************************** 70 SCREEN 3:CONSOLE 0,25,0,1:WIDTH 80,20:CLS 3 80 DEFINT I-M 90 'DEFDBL A-H,O-Z 100 DIME=(((199+7)/8)*199*3+4)/4+1 110 DIM FUYU%(DIME),NATU%(DIME),HARU%(DIME),AKI%(DIME) 120 DIM XDD(200),YDD(200),CH(256) 130 GOSUB *FKEYNUL 140 ON STOP GOSUB *MENU:STOP ON 150 ON KEY GOSUB *F1,*F2,*F3,*F4,*F5,*F6,*F7,*F8,*F9,*F10 160 FOR I=1 TO 10:KEY(I) ON:NEXT I 170 HTILE$=CHR$(&H55)+CHR$(&HFF)+CHR$(&HFF) '薄黄色 180 'YTILE$=CHR$(&H55)+CHR$(&H55)+CHR$(&H55) '灰色 190 YTILE$=CHR$(&HAA)+CHR$(&H0)+CHR$(&H0) '暗青色 200 GOSUB *SETFKEY 210 GOSUB *CH 220 PAY=3.141592653589794# 230 X0SUN=320:Y0SUN=172 '太陽の中心 240 RSUN=30 '太陽の半径 250 RKOUTE=220 '惑星の公転半径 260 RHIRIT=.4 '公転軌道半径のY軸のX軸に対する比率 270 TR=40 '地球半径 280 TL=1.3*TR '地軸の長さ 290 IFLAG=1 '初めて描くかどうかの判断のため 300 LOCATE 5,0:COLOR 6 310 PRINT" ***** 四季における地軸の傾きと昼の長さ夜の長さの変化 *****":COLOR 7 320 IFLAG1=1:IFLAG2=1:IFLAG3=1 '始めはすべて入力をさせる 330 IFLAG6=-1:IFLAG7=-1:IFLAG8=-1:IFLAG9=-1 '始めは数表を書かない 340 GOSUB *NYUURYOKU 350 IF IFLAG=1 THEN GOSUB *MESSEAGE 360 ' 370 '======== 冬至の地球 ======== 380 ' 390 KISETU$="FUYU" 400 X0=X0SUN-RKOUTE:Y0=Y0SUN '画面の中心位置 410 WX1=-X0:WY1=-Y0:WX2=639-X0:WY2=399-Y0 'ワ-ルド座標 420 'WINDOW(WX1,WY1/.899)-(WX2,WY2/.899) 'FM-BASIC98用 430 WINDOW(WX1,WY1)-(WX2,WY2) 'N88BASIC用 440 IF IFLAG<>1 THEN LINE(-TL-8 ,-TL-8 )-(TL+8 ,TL+8 ),0,BF '地球を消す 450 GOSUB *KEISAN:HH1=HIRUHI:YH1=YORUHI:H1=HIRU:Y1=YORU 460 GOSUB *TIKYUU 470 IF IFLAG6=-1 THEN 530 480 '計算表示枠の左隅(ワード単位) 490 NXW=(X0SUN-RKOUTE)/16-6:NYW=INT(Y0SUN+TL)\20+1 500 XHYOU=NXW*16:YHYOU=NYW*20 '計算表示枠の左隅(ドット単位) 510 IF IFLAG=1 THEN GOSUB *KEISANHYOUJI ELSE GOSUB *SUUHYOUJI 520 ' 530 '======== 夏至の地球 ======== 540 ' 550 KISETU$="NATU" 560 X0=X0SUN+RKOUTE:Y0=Y0SUN '画面の中心位置 570 WX1=-X0:WY1=-Y0:WX2=639-X0:WY2=399-Y0 'ワ-ルド座標 580 'WINDOW(WX1,WY1/.899)-(WX2,WY2/.899) 'FM-BASIC98用 590 WINDOW(WX1,WY1)-(WX2,WY2) 'N88BASIC用 600 IF IFLAG<>1 THEN LINE(-TL-8 ,-TL-8 )-(TL+8 ,TL+8 ),0,BF '地球を消す 610 GOSUB *TIKYUU 620 IF IFLAG7=-1 THEN 690 630 '計算表示枠の左隅(ワード単位) 640 NXW=(X0SUN+RKOUTE)/16-6:NYW=INT(Y0SUN+TL)\20+1 650 XHYOU=NXW*16:YHYOU=NYW*20 '計算表示枠の左隅(ドット単位) 660 HIRUHI=YH1:YORUHI=HH1:HIRU=Y1:YORU=H1 670 IF IFLAG=1 THEN GOSUB *KEISANHYOUJI ELSE GOSUB *SUUHYOUJI 680 ' 690 '======== 春分の地球 ======== 700 ' 710 KISETU$="HARU" 720 X0=X0SUN:Y0=Y0SUN+RKOUTE*RHIRIT '画面の中心位置 730 WX1=-X0:WY1=-Y0:WX2=639-X0:WY2=399-Y0 'ワ-ルド座標 740 'WINDOW(WX1,WY1/.899)-(WX2,WY2/.899) 'FM-BASIC98用 750 WINDOW(WX1,WY1)-(WX2,WY2) 'N88BASIC用 760 IF IFLAG<>1 THEN LINE(-TL-8 ,-TL-8 )-(TL+8 ,TL+8 ),0,BF '地球を消す 770 GOSUB *TIKYUU 780 IF IFLAG8=-1 GOTO 850 790 '計算表示枠の左隅(ワード単位) 800 NXW=(X0SUN )/16-6:NYW=INT(Y0SUN+TL+RKOUTE*RHIRIT)\20+1 810 XHYOU=NXW*16:YHYOU=NYW*20 '計算表示枠の左隅(ドット単位) 820 HIRUHI=.5:YORUHI=.5:HIRU=12:YORU=12 830 IF IFLAG=1 THEN GOSUB *KEISANHYOUJI ELSE GOSUB *SUUHYOUJI 840 ' 850 '======== 秋分の地球 ======== 860 ' 870 KISETU$="AKI" 880 X0=X0SUN:Y0=Y0SUN-RKOUTE*RHIRIT '画面の中心位置 890 WX1=-X0:WY1=-Y0:WX2=639-X0:WY2=399-Y0 'ワ-ルド座標 900 'WINDOW(WX1,WY1/.899)-(WX2,WY2/.899) 'FM-BASIC98用 910 WINDOW(WX1,WY1)-(WX2,WY2) 'N88BASIC用 920 IF IFLAG<>1 THEN LINE(-TL-8 ,-TL-8 )-(TL+8 ,TL+8 ),0,BF '地球を消す 930 GOSUB *TIKYUU 940 IF IFLAG9=-1 THEN 1000 950 '計算表示枠の左隅(ワード単位) 960 NXW=(X0SUN+TL)/16+1:NYW=INT(Y0SUN-TL)\20-5 970 XHYOU=NXW*16:YHYOU=NYW*20 '計算表示枠の左隅(ドット単位) 980 HIRUHI=.5:YORUHI=.5:HIRU=12:YORU=12 990 IF IFLAG=1 THEN GOSUB *KEISANHYOUJI ELSE GOSUB *SUUHYOUJI 1000 'IFLAG=1 ' ゲット、プットを使わずに再び描く(遅いけど見た目に良い) 1010 IFLAG=2 ' ゲット、プットを使う (早いけどちらつく ) 1020 GOTO 340 1030 END 1040 ' 1050 '******** メニューヘ戻る ************ 1060 ' 1070 *MENU 1080 STOP OFF 1090 FOR I=1 TO 10:KEY(I) OFF:NEXT I 1100 GOSUB *FKEY0 1110 RUN"MENU" 1120 RETURN 1130 ' 1140 ' 1150 '******** メッセージ文 ******************* 1160 *MESSEAGE 1170 CIRCLE (X0SUN,Y0SUN),RSUN,7 '太陽 1180 TAIYO$=HTILE$ '太陽の色(薄黄色) 1190 PAINT(X0SUN,Y0SUN),TAIYO$,7 1200 LOCATE X0SUN\8-2,Y0SUN\20 :COLOR 0:PRINT"太陽":COLOR 7 1210 CIRCLE(X0SUN,Y0SUN),RKOUTE,7,,,RHIRIT 1220 LOCATE INT(X0SUN-RKOUTE-TL)\8-5,INT(Y0SUN)\20:PRINT "冬至" 1230 LOCATE INT(X0SUN+RKOUTE+TL)\8+1,INT(Y0SUN)\20:PRINT "夏至" 1240 LOCATE INT(X0SUN+TL)\8+1,INT(Y0SUN+RKOUTE*RHIRIT)\20-2:PRINT "春分" 1250 LOCATE INT(X0SUN+TL)\8+1,INT(Y0SUN-RKOUTE*RHIRIT)\20+2:PRINT "秋分" 1260 RETURN 1270 ' 1280 ' 1290 '******** 地球を描く ************** 1300 *TIKYUU 1310 IF IFLAG=1 THEN GOSUB *TIKYUUSHOKI :GOTO 1360 1320 IF KISETU$="FUYU" THEN PUT@(MAP(-TL-8 ,0),MAP(-TL-8 ,1)),FUYU% 1330 IF KISETU$="HARU" THEN PUT@(MAP(-TL-8 ,0),MAP(-TL-8 ,1)),HARU% 1340 IF KISETU$="NATU" THEN PUT@(MAP(-TL-8 ,0),MAP(-TL-8 ,1)),NATU% 1350 IF KISETU$="AKI" THEN PUT@(MAP(-TL-8 ,0),MAP(-TL-8 ,1)),AKI% 1360 IF IFLAG<>1 THEN 1410 1370 IF KISETU$="FUYU" THEN GET@(MAP(-TL-8 ,0),MAP(-TL-8 ,1))-STEP(2*TL+16,2*TL+16),FUYU% 1380 IF KISETU$="HARU" THEN GET@(MAP(-TL-8 ,0),MAP(-TL-8 ,1))-STEP(2*TL+16,2*TL+16),HARU% 1390 IF KISETU$="NATU" THEN GET@(MAP(-TL-8 ,0),MAP(-TL-8 ,1))-STEP(2*TL+16,2*TL+16),NATU% 1400 IF KISETU$="AKI" THEN GET@(MAP(-TL-8 ,0),MAP(-TL-8 ,1))-STEP(2*TL+16,2*TL+16),AKI% 1410 GOSUB *TIJIKU 1420 GOSUB *SEKIDOU 1430 GOSUB *JITENITI 1440 RETURN 1450 ' 1460 ' 1470 '******** 入力 ************ 1480 *NYUURYOKU 1490 IF IFLAG<>1 THEN 1590 1500 NYUUX0=0:NYUUY0=2 '入力領域の左隅(ワード単位) 1510 NYUUXL=10:NYUUYL=3 '入力領域の枠の長さ(ワード単位) 1520 CLNYUU=7 '入力領域の枠の色 1530 LINE(MAP(16*NYUUX0,2),MAP(20*NYUUY0,3))-STEP(16*NYUUXL,20*NYUUYL),CLNYUU,B 1540 LINE(MAP(16*NYUUX0,2),MAP(20*NYUUY0+ 20*NYUUYL/3,3))-STEP(16*NYUUXL,0),CLNYUU, 1550 LINE(MAP(16*NYUUX0,2),MAP(20*NYUUY0+2*20*NYUUYL/3,3))-STEP(16*NYUUXL,0),CLNYUU, 1560 LOCATE NYUUX0,NYUUY0: PRINT " 地軸の傾き = " 1570 LOCATE NYUUX0,NYUUY0+1:PRINT " 緯度 = " 1580 LOCATE NYUUX0,NYUUY0+2:PRINT " 経度 = " 1590 XINP0=2*(NYUUX0+7):YINP0=NYUUY0 1600 IF IFLAG1=-1 AND IFLAG2=-1 AND IFLAG3=-1 THEN GOSUB *F1 '入力が選ばれなかった時の処理 1610 '------- 地軸の傾き入力 ------- 1620 *INPTIJIKU 1630 INPFLG=1 1640 IF IFLAG1=-1 THEN GOTO *INPIDO 1650 X=XINP0:Y=YINP0 1660 GOSUB *INPUTT:IF N$<>"" THEN TH=VAL(N$) ELSE *THRETURN 1670 LOCATE X,Y:PRINT " " 1680 TH$=N$ 1690 *THRETURN 1700 TH=VAL(TH$):IF TH$="" THEN TH$="0" 1710 LOCATE X,Y:PRINT TH$ 1720 IF TH=90 THEN TH=89.9999 1730 IF TH=-90 THEN TH=-89.9999 1740 THR=TH*PAY/180 1750 '-------- 緯度の入力 ------- 1760 *INPIDO 1770 INPFLG=2 1780 IF IFLAG2=-1 THEN GOTO *INPKEIDO 1790 X=XINP0:Y=YINP0+1 1800 GOSUB *INPUTT:IF N$<>"" THEN PH=VAL(N$) ELSE *PHRETURN 1810 LOCATE X,Y:PRINT " " 1820 IF ABS(PH)>90 THEN GOTO 1800 1830 PH$=N$ 1840 *PHRETURN 1850 PH=VAL(PH$):IF PH$="" THEN PH$="0" 1860 LOCATE X,Y:PRINT PH$ 1870 IF PH=90 THEN PH=89.9999 1880 IF PH=-90 THEN PH=-89.9999 1890 PHR=PH*PAY/180 1900 '-------- 経度の入力 ------- 1910 *INPKEIDO 1920 INPFLG=3 1930 IF IFLAG3=-1 THEN 2030 1940 X=XINP0:Y=YINP0+2 1950 GOSUB *INPUTT:IF N$<>"" THEN PK=VAL(N$) ELSE *PKRETURN 1960 LOCATE X,Y:PRINT " " 1970 IF ABS(PK)>180 THEN GOTO 1950 1980 PK$=N$ 1990 *PKRETURN 2000 PK=VAL(PK$):IF PK$="" THEN PK$="0" 2010 LOCATE X,Y:PRINT PK$ 2020 PKR=PK*PAY/180 2030 RETURN 350 2040 ' 2050 ' 2060 '*********** 地球初期画図 ************* 2070 *TIKYUUSHOKI 2080 CIRCLE(0,0),TR,7,,,,F,0 '地球の外枠 2090 IF KISETU$="HARU" OR KISETU$="AKI" THEN 2120 2100 'CIRCLE(2,0),TR,7,.5*PAY,1.5*PAY,100000! '日向と日影の堺目 2110 LINE(0,-TR)-(0,TR),7 '日向と日影の堺目 2120 IF KISETU$="FUYU" THEN PAINT(2,0),HTILE$,7:PAINT(-2,0),YTILE$,7 '冬至 2130 IF KISETU$="HARU" THEN PAINT(0,0),YTILE$,7 '春分 2140 IF KISETU$="NATU" THEN PAINT(2,0),YTILE$,7:PAINT(-2,0),HTILE$,7 '夏至 2150 IF KISETU$="AKI" THEN PAINT(0,0),HTILE$,7 '秋分 2160 'PAINT(2,0),6,7 '昼のペイント 2170 'PAINT(-2,0),1,7 '夜のペイント 2180 RETURN 2190 ' 2200 ' 2210 '******* 地軸を描く ******** 2220 *TIJIKU 2230 TLX1=TL*SIN(THR):TLY1=TL*COS(THR) 2240 TLX2=TR*SIN(THR):TLY2=TR*COS(THR) 2250 LINE(-TLX1,-TLY1)-(-TLX2,-TLY2),7 2260 LINE(TLX1,TLY1)-(TLX2,TLY2),7 2270 'KANJIN=&H4E '半角N 2280 KANJIN=&H14E '1/4角N 2290 'KANJIN=&H234E '全角N 2300 PUT@ (MAP(-TLX1,0),MAP(-TLY1-8,1)),KANJI(KANJIN),PSET,2,0 'N極表示 2310 'KANJIS=&H53 '半角S 2320 KANJIS=&H153 '1/4角S 2330 'KANJIS=&H2353 '全角S 2340 PUT@ (MAP(TLX1,0),MAP(TLY1-8,1)),KANJI(KANJIS),PSET,7,0 'S極表示 2350 RETURN 2360 ' 2370 ' 2380 '************ 赤道を描く **************** 2390 *SEKIDOU 2400 R=TR '楕円の長径 2410 GYOUKA=0 '仰角 2420 XX0=0:YY0=0 '傾いていない時の楕円の中心 2430 CLD=2 '楕円の色 2440 'GOSUB *DAEN 2450 XL=TR*COS(THR):YL=TR*SIN(THR):LINE(-XL,YL)-(XL,-YL),CLD 2460 RETURN 2470 ' 2480 ' 2490 '********** 自転位置を描く ************** 2500 *JITENITI 2510 IF KISETU$<>"FUYU" THEN CLD=4:GOSUB *DAEN2:RETURN 2520 R=TR*COS(PHR) '楕円の長径 2530 L=5*TR 'みる位置から楕円の中心までの距離 2540 'GYOUKA=ATN(R/L*SIN(PHR)*ABS(COS(THR))/(1-R/L*COS(PHR))) '仰角 2550 GYOUKA=ATN(R/L*SIN(PHR) /(1-R/L*COS(PHR))) '仰角 2560 'GYOUKA=0 2570 XX0=0:YY0=TR*SIN(PHR) '傾いていない時の楕円の中心 2580 CLD=4 '楕円の色 2590 GOSUB *DAEN 2600 RETURN 2610 *DAEN 2620 NS=20 ' 描くドット数 2630 TRDD=R*SIN(GYOUKA) 2640 FOR IS=0 TO NS 2650 HR=PAY*IS/NS 2660 X=R*COS(HR)+XX0:Y=TRDD*SIN(HR)+YY0 2670 '--------(地軸の傾きによる回転変換)-------- 2680 XX=X*COS(THR)-Y*SIN(THR) 2690 YY=X*SIN(THR)+Y*COS(THR) 2700 XDD(IS)=XX:YDD(IS)=YY 2710 NEXT IS 2720 *DAEN2 2730 FOR IS=1 TO NS 2740 LINE(XDD(IS-1),-YDD(IS-1))-(XDD(IS),-YDD(IS)),CLD 2750 LINE(XDD(IS-1),-YDD(IS-1)+1)-(XDD(IS),-YDD(IS)+1),CLD 2760 NEXT IS 2770 RETURN 2780 *KEISAN 2790 '**** 昼だけ,夜だけの判断 **** 2800 COSP=TAN(THR)*TAN(PHR) 2810 IF THR>=.5*PAY AND THR<1.5*PAY THEN COSP=-COSP 2820 IF COSP=0 THEN P=PAY:GOTO 2870 2830 IF COSP>=1 THEN P=0:GOTO 2870 2840 IF COSP<=-1 THEN P=2*PAY:GOTO 2870 2850 P=2*ATN(SQR(1/(COSP*COSP)-1)) 2860 IF COSP<0 THEN P=2*PAY-P 2870 HIRUHI=.5*P/PAY 2880 YORUHI=1-HIRUHI 2890 HIRU=24*HIRUHI 2900 YORU=24-HIRU 2910 RETURN 2920 *KEISANHYOUJI 2930 NXL=10.5:NYL=1.9 '計算表示枠の長さ(ワード単位) 2940 XWAKU=NXL*16:YWAKU=NYL*20 '計算表示枠の長さ 2950 CLWAKU=5 '計算表示枠の色 2960 '------ 計算表示枠を描く -------- 2970 GL=3.5 '棒グラフの長さ(ワード単位) 2980 GH=.2 '棒グラフの巾(ワード単位) 2990 LINE (MAP(XHYOU,2),MAP(YHYOU+20,3))-STEP(XWAKU,YWAKU),CLWAKU,B 3000 LINE (MAP(XHYOU,2),MAP(YHYOU+20+.5*YWAKU,3))-STEP(XWAKU,0),CLWAKU,B 3010 LINE (MAP(XHYOU+XWAKU-16*GL,2),MAP(YHYOU+YWAKU-20,3))-STEP(0,40),CLWAKU,B 3020 LOCATE 2*NXW,NYW+1:PRINT" 昼 時間" 3030 LOCATE 2*NXW,NYW+2:PRINT" 夜 時間" 3040 '**** グラフの目盛り **** 3050 LINE (MAP(XHYOU+XWAKU-8*GL+1,2),MAP(YHYOU+20,3))-STEP(0,-3),CLWAKU,B 3060 PUT@ (XHYOU+XWAKU-8*GL-8,YHYOU+ 5),KANJI(&H131),PSET,7,0 '1/4角 1 3070 PUT@ (XHYOU+XWAKU-8*GL ,YHYOU+ 5),KANJI(&H132),PSET,7,0 '1/4角 2 3080 LINE (MAP(XHYOU+XWAKU,2),MAP(YHYOU+20,3))-STEP(0,-3),CLWAKU,B 3090 PUT@ (XHYOU+XWAKU-8,YHYOU+ 5),KANJI(&H132),PSET,7,0 '1/4角 2 3100 PUT@ (XHYOU+XWAKU ,YHYOU+ 5),KANJI(&H134),PSET,7,0 '1/4角 4 3110 *SUUHYOUJI 3120 '----- 計算数値を書く ------ 3130 COLOR 6:LOCATE 2*NXW+ 4,NYW+1:PRINT USING "##.##";HIRU 3140 LOCATE 2*NXW+ 4,NYW+2:PRINT USING "##.##";YORU:COLOR 7 3150 '----- 棒グラフを描く ---- 3160 ' 昼の棒グラフ 3170 LINE (MAP(XHYOU+XWAKU-16*GL+1,2),MAP(YHYOU+30-.5*20*GH,3))-STEP(GL*16-2,20*GH),0,BF 3180 GGL=(16*GL-2)*HIRUHI 3190 IF GGL<1 THEN 3230 3200 LINE (MAP(XHYOU+XWAKU-16*GL+1,2),MAP(YHYOU+30-.5*20*GH,3))-STEP(GGL,20*GH),7,B 3210 PAINT STEP(-1,-1),HTILE$,7 3220 ' 夜の棒グラフ 3230 LINE (MAP(XHYOU+XWAKU-16*GL+1,2),MAP(YHYOU+50-.5*20*GH,3))-STEP(GL*16-2,20*GH),0,BF 3240 GGL=(16*GL-2)*YORUHI 3250 IF GGL<1 THEN 3280 3260 LINE (MAP(XHYOU+XWAKU-16*GL+1,2),MAP(YHYOU+50-.5*20*GH,3))-STEP(GGL,20*GH),1,B 3270 PAINT STEP(-1,-1),YTILE$,1 3280 RETURN 3290 ' 3300 ' 3310 '********** 数値のインプット *********** 3320 *INPUTT 3330 N$="":DX=0 3340 AA$=INKEY$:IF AA$<>"" THEN 3340 'キーバッファクリア 3350 V$="" 3360 LOCATE X+DX,Y:V$=INPUT$(1) 3370 IF V$="" THEN 3360 3380 CHV=CH(ASC(V$)) 3390 ON CHV GOSUB *SUU,*KETTEI,*SAKUJYO 3400 GOTO 3350 3410 *INPUTTRETURN 3420 RETURN 3430 *CH 3440 FOR I=48 TO 57:CH(I)=1:NEXT I '1,2,3,・・・・,9 キー 3450 CH(43)=1 '+ キー 3460 CH(45)=1 '- キー 3470 CH(46)=1 '. キー 3480 CH(13)=2 'RETURN キー 3490 CH(127)=3 'DEL キー 3500 CH(8)=3 'BS キー 3510 CH(27)=4 'ESC キー 3520 RETURN 3530 *SUU 3540 N$=N$+V$ 3550 LOCATE X+DX,Y:PRINT V$;:DX=DX+1 3560 RETURN 3570 *KETTEI 3580 RETURN 3420 3590 *SAKUJYO 3600 IF N$="" THEN RETURN 3610 DX=DX-1 3620 N$=LEFT$(N$,DX) 3630 LOCATE X,Y:PRINT " "; 3640 LOCATE X,Y:PRINT N$; 3650 RETURN 3660 ' 3670 '******** ファンクションキーによる割り込みサブルーチン ********* 3680 *F1 3690 IFLAG1=-IFLAG1 3700 CLF=(1+IFLAG1)/2 3710 PUT@ (FAST1 +2,401-FWAKUY),KANJI(&H434F),PSET,7,CLF '地 3720 PUT@ (FAST1 +16+2,401-FWAKUY),KANJI(&H3C34),PSET,7,CLF '軸 3730 IF IFLAG1=-1 AND INPFLG=1 THEN RETURN *INPUTTRETURN 3740 RETURN 3750 *F2 3760 IFLAG2=-IFLAG2 3770 CLF=(1+IFLAG2)/2 3780 PUT@ (FAST1+(FKAN+FWAKUX) +2,401-FWAKUY),KANJI(&H305E),PSET,7,CLF '緯 3790 PUT@ (FAST1+(FKAN+FWAKUX) +16+2,401-FWAKUY),KANJI(&H4559),PSET,7,CLF '度 3800 IF IFLAG2=-1 AND INPFLG=2 THEN RETURN *INPUTTRETURN 3810 RETURN 3820 *F3 3830 IFLAG3=-IFLAG3 3840 CLF=(1+IFLAG3)/2 3850 PUT@ (FAST1+(FKAN+FWAKUX)*2+ 2,401-FWAKUY),KANJI(&H3750),PSET,7,CLF '経 3860 PUT@ (FAST1+(FKAN+FWAKUX)*2+16+2,401-FWAKUY),KANJI(&H4559),PSET,7,CLF '度 3870 IF IFLAG3=-1 AND INPFLG=3 THEN RETURN *INPUTTRETURN 3880 RETURN 3890 *F4 3900 RETURN 3910 *F5 3920 RETURN 3930 *F6 3940 IFLAG6=-IFLAG6 3950 CLF=(1+IFLAG6)/2 3960 PUT@ (FAST2+(FKAN+FWAKUX)*5+2,401-FWAKUY),KANJI(&H455F),PSET,7,CLF '冬 3970 PUT@ (FAST2+(FKAN+FWAKUX)*5+16+2,401-FWAKUY),KANJI(&H493D),PSET,7,CLF'表 3980 '計算表示枠の左隅(ワード単位) 3990 NXW=(X0SUN-RKOUTE)/16-6:NYW=INT(Y0SUN+TL)\20+1 4000 XHYOU=NXW*16:YHYOU=NYW*20 '計算表示枠の左隅(ドット単位) 4010 HIRUHI=HH1:YORUHI=YH1:HIRU=H1:YORU=Y1 4020 IF IFLAG6=1 THEN GOSUB *KEISANHYOUJI ELSE *SUUHYOUKESI 4030 RETURN 4040 *F7 4050 IFLAG7=-IFLAG7 4060 CLF=(1+IFLAG7)/2 4070 PUT@ (FAST2+(FKAN+FWAKUX)*6+2,401-FWAKUY),KANJI(&H3246),PSET,7,CLF '夏 4080 PUT@ (FAST2+(FKAN+FWAKUX)*6+16+2,401-FWAKUY),KANJI(&H493D),PSET,7,CLF'表 4090 '計算表示枠の左隅(ワード単位) 4100 NXW=(X0SUN+RKOUTE)/16-6:NYW=INT(Y0SUN+TL)\20+1 4110 XHYOU=NXW*16:YHYOU=NYW*20 '計算表示枠の左隅(ドット単位) 4120 HIRUHI=YH1:YORUHI=HH1:HIRU=Y1:YORU=H1 4130 IF IFLAG7=1 THEN GOSUB *KEISANHYOUJI ELSE *SUUHYOUKESI 4140 RETURN 4150 *F8 4160 IFLAG8=-IFLAG8 4170 CLF=(1+IFLAG8)/2 4180 PUT@ (FAST2+(FKAN+FWAKUX)*7+2,401-FWAKUY),KANJI(&H3D55),PSET,7,CLF '春 4190 PUT@ (FAST2+(FKAN+FWAKUX)*7+16+2,401-FWAKUY),KANJI(&H493D),PSET,7,CLF'表 4200 '計算表示枠の左隅(ワード単位) 4210 NXW=(X0SUN )/16-6:NYW=INT(Y0SUN+TL+RKOUTE*RHIRIT)\20+1 4220 XHYOU=NXW*16:YHYOU=NYW*20 '計算表示枠の左隅(ドット単位) 4230 HIRUHI=.5:YORUHI=.5:HIRU=12:YORU=12 4240 IF IFLAG8=1 THEN GOSUB *KEISANHYOUJI ELSE *SUUHYOUKESI 4250 RETURN 4260 *F9 4270 IFLAG9=-IFLAG9 4280 CLF=(1+IFLAG9)/2 4290 PUT@ (FAST2+(FKAN+FWAKUX)*8+2,401-FWAKUY),KANJI(&H3D29),PSET,7,CLF '秋 4300 PUT@ (FAST2+(FKAN+FWAKUX)*8+16+2,401-FWAKUY),KANJI(&H493D),PSET,7,CLF'表 4310 '計算表示枠の左隅(ワード単位) 4320 NXW=(X0SUN+TL )/16+1:NYW=INT(Y0SUN-TL)\20-5 4330 XHYOU=NXW*16:YHYOU=NYW*20 '計算表示枠の左隅(ドット単位) 4340 HIRUHI=.5:YORUHI=.5:HIRU=12:YORU=12 4350 IF IFLAG9=1 THEN GOSUB *KEISANHYOUJI ELSE *SUUHYOUKESI 4360 RETURN 4370 *F10 4380 PUT@ (FAST2+(FKAN+FWAKUX)*9+ 2,401-FWAKUY),KANJI(&H3D2A),PSET,7,2 '終 4390 PUT@ (FAST2+(FKAN+FWAKUX)*9+16+2,401-FWAKUY),KANJI(&H246A),PSET,7,2 'り 4400 GOSUB *MENU 4410 RETURN 4420 *SUUHYOUKESI 4430 '****** 計算表示枠を描く ******** 4440 NXL=10.5:NYL=1.9 '計算表示枠の長さ(ワード単位) 4450 XWAKU=NXL*16:YWAKU=NYL*20 '計算表示枠の長さ 4460 LINE (MAP(XHYOU,2),MAP(YHYOU+20,3))-STEP(XWAKU,YWAKU),0,BF '数表枠消し 4470 LINE (MAP(XHYOU+16,2),MAP(YHYOU+20-16,3))-STEP(XWAKU ,16),0,BF '目盛消し 4480 LOCATE 2*NXW,NYW+1:PRINT" " '数値消し 4490 LOCATE 2*NXW,NYW+2:PRINT" " '数値消し 4500 RETURN 4510 ' 4520 ' 4530 '******************** ファンクションキーの設定 *************************** 4540 *SETFKEY 4550 FAST1=9 'ファンクションキ-枠の始め(F1-F5 ) 4560 FAST2=9+48 'ファンクションキ-枠の始め(F6-F10) 4570 FWAKUX=16*2+3 'ファンクションキ-枠の横の長さ 4580 FWAKUY=20 'ファンクションキ-枠の縦の長さ 4590 FKAN=22 'ファンクションキー枠間の長さ 4600 FOR I=1 TO 5 4610 LINE(MAP(FAST1+(FKAN+FWAKUX)*(I-1),2),MAP(399-FWAKUY,3))-STEP(FWAKUX,FWAKUY),7,B 4620 NEXT I 4630 FFAST=FAST+16 4640 FOR I=6 TO 10 4650 LINE(MAP(FAST2+(FKAN+FWAKUX)*(I-1),2),MAP(399-FWAKUY,3))-STEP(FWAKUX,FWAKUY),7,B 4660 NEXT I 4670 FFAST=FAST1 4680 PUT@ (FFAST +2,401-FWAKUY),KANJI(&H434F),PSET,7,1 '地 4690 PUT@ (FFAST +16+2,401-FWAKUY),KANJI(&H3C34),PSET,7,1 '軸 4700 PUT@ (FFAST+(FKAN+FWAKUX) +2,401-FWAKUY),KANJI(&H305E),PSET,7,1 '緯 4710 PUT@ (FFAST+(FKAN+FWAKUX) +16+2,401-FWAKUY),KANJI(&H4559),PSET,7,1 '度 4720 PUT@ (FFAST+(FKAN+FWAKUX)*2+ 2,401-FWAKUY),KANJI(&H3750),PSET,7,1 '経 4730 PUT@ (FFAST+(FKAN+FWAKUX)*2+16+2,401-FWAKUY),KANJI(&H4559),PSET,7,1 '度 4740 FFAST=FAST2 4750 PUT@ (FFAST+(FKAN+FWAKUX)*5 +2,401-FWAKUY),KANJI(&H455F),PSET,7,0 '冬 4760 PUT@ (FFAST+(FKAN+FWAKUX)*5+16+2,401-FWAKUY),KANJI(&H493D),PSET,7,0 '表 4770 PUT@ (FFAST+(FKAN+FWAKUX)*6 +2,401-FWAKUY),KANJI(&H3246),PSET,7,0 '夏 4780 PUT@ (FFAST+(FKAN+FWAKUX)*6+16+2,401-FWAKUY),KANJI(&H493D),PSET,7,0 '表 4790 PUT@ (FFAST+(FKAN+FWAKUX)*7 +2,401-FWAKUY),KANJI(&H3D55),PSET,7,0 '春 4800 PUT@ (FFAST+(FKAN+FWAKUX)*7+16+2,401-FWAKUY),KANJI(&H493D),PSET,7,0 '表 4810 PUT@ (FFAST+(FKAN+FWAKUX)*8 +2,401-FWAKUY),KANJI(&H3D29),PSET,7,0 '秋 4820 PUT@ (FFAST+(FKAN+FWAKUX)*8+16+2,401-FWAKUY),KANJI(&H493D),PSET,7,0 '表 4830 PUT@ (FFAST+(FKAN+FWAKUX)*9 +2,401-FWAKUY),KANJI(&H3D2A),PSET,7,0 '終 4840 PUT@ (FFAST+(FKAN+FWAKUX)*9+16+2,401-FWAKUY),KANJI(&H246A),PSET,7,0 'り 4850 RETURN 4860 ' 4870 ' 4880 '********* ファンクションキーのセット *********** 4890 *FKEY0 4900 KEY 1,"load "+CHR$(&H22):KEY 2,"auto":KEY 3,"go to":KEY 4,"list ":KEY 5,"run"+CHR$(13):KEY 6,"save "+CHR$(&H22):KEY 7,"key":KEY 8,"print ":KEY 9,"edit ."+CHR$(13):KEY 10,"cont"+CHR$(13) 4910 RETURN 4920 *FKEYNUL 4930 KEY 1,"":KEY 2,"":KEY 3,"":KEY 4,"":KEY 5,"":KEY 6,"":KEY 7,"":KEY 8,"":KEY 9,"":KEY 10,"" 4940 RETURN