愛知工業大学研究報告 第
1
9
号B
昭和5
9
年5
1
FM
幽7
用 プ ロ ッ タ ー ル ー チ ン の 作 製
秦 野 和 郎 ・ 葉
建 助 ・ 竹 松 英 夫
I
m
p
r
e
m
e
n
t
a
t
i
o
n
o
f
a
P
l
o
t
t
e
r
R
o
u
t
i
n
e
f
o
r
FM
・
7
Kazuo HATANO
,
J
i
a
n
xun YE
and Hideo TAKEMATSU
A p
l
o
t
t
e
r
r
o
u
t
i
n
e
f
o
r
p
e
r
s
o
n
a
l
computer FM-7 i
s
d
e
v
e
l
o
p
e
d
and i
m
p
l
e
m
e
n
t
e
d
.
I
t
d
r
i
v
e
s
MIPLOT J
o
u
n
i
o
r
(XY p
l
o
t
t
e
r
)
and CRT d
i
s
p
l
a
y
.
The program i
s
c
o
m
p
a
t
i
b
l
e
t
o
t
h
a
t
o
f
main
frame c
o
m
p
u
t
e
r
.
S
m
a
l
l
s
c
a
l
e
g
r
a
p
h
i
c
programs u
s
e
d
on main from computer c
a
n
r
u
n
on p
e
r
s
o
n
a
l
c
o
m
p
u
t
e
r
.
1
.
まえカずき 計算結果を「図」の形で出力すると直観的な資料がコ ンパクトな形で得られ,従って結果を整理しやすくなる 事が多い。この目的に従来からXY
プロッターとか蓄積 管表示装置などが使われている。 大 型 計 算 機 の 利 用 者 の 多 く はFORTRAN
を使ってプ ロ グ ラ ム を 作 製 す る 。 従 っ て 大 抵 の 計 算 セ ン タ ー に はXY
プロッターや蓄積管表示装置に出力するための標準 的なサブノレーチンライブラリが用意されている。これは 通称カノレコンプ仕様のプロッタールーチンと呼ばれてお り計算機によって若干の相違はあるとしてもこのプロッ タールーチンを使ってプログラムを書いておけばどの計 算 機 に も そ の ま ま か 或 い は わ ず か の 変 更 でXY
プロッ ター,蓄積管表示装置などに作図することができる。 最近パーソナノレコンビュータが急速に普及しハード, ソフトともに充実してきている。安価な8
ピットパソコ ンにすらCP!M-80
な る モ ニ タ ー が 提 供 さ れ そ の 制 御 の もとでFORTRAN
コンパイラが動く。その性質上,主記 憶が少なく計算速度は遅いが応用によっては従来大型計 算機を使っていた計算をパソコンで行うことができるよ うになっている。 ほ と ん ど の パ ソ コ ン で はCRT
ディスプレーはキャラ クタ ディスプレーとしての機能だけでなくグラフイツ クディスプレーとしての機能をも併せ持っている。しか しその機能はメーカ 提 供 のBASIC
イ ン タ ー プ リ タ を 使ってプログラムを作製するときにのみ便利に使うこと ができる。FORTRAN
プ ロ グ ラ ム で そ の 機 能 を 活 用 す るためには特別のプログラムを作らなければならない。 同 じ こ と はXY
プロッターについても言える。高度の機 能 を 持 っ たXY
プ ロ ッ タ ー を 現 在 安 価 に 入 手 で き る が それをFORTRAN
プログラムで活用するためには適当 なプログラムを作製しなければならない。 大型計算機で使われているプログラムをパソコンで動 かすために,又その逆にパソコンで大型計算機用のプロ グラムを準備するためにパソコン用のプロッタールーチ ンを作製した。その際,手近かに使えるという利点を生 かすためにいくつかの工夫を試みた。本稿ではその概要 を述べる。2
.
使 用 す る 装 置 と そ の 機 能 本章ではここで使用したパソコンシステムの概要を述 べる(図2
.
1
)
。 一 J ジ タ ト ツ ツ 一 一 ロ ロ 一 フ 一 ププアカ一Y
イニ色一X
マュ3
一
図2
.
1
システムの概略図2
.
1
FM-7 C
F
u
j
i
t
s
u
Micro 7
)
このパソコンのCPU
はMBL68B09
であるが,Z80
カ ー ド を 装 着 す る こ と に よ っ てCP!M-80
を 使 う こ と が で きる。CPT
ディスプレーへの表示のためにD
i
s
p
l
a
ySub
System
を持っている。これにより640X2
0
0
ドットの分 解 能 を 持 つ グ ラ フ ィ ッ ク 表 示 が 可 能 で あ る 。D
i
s
p
l
a
y
Sub System
は独立した専用のCPU
(サブCPU)
と6
4
5
2
秦 野 和 郎 ・ 葉KB
の メ モ リ を 有 し て い る 。 そ の メ モ リ は 主 と し て8
色 の カ ラ ー 表 示 の た め のVideoRAM
と し て 使 わ れ て い る。主CPU
とサブCPU
とは1
2
8
パ イ 卜 の 共 有RAM
領 域を介してデータのやりとりをする。 主CPU
の ア ト レ ス 空 間 内 にVideoRAM
を有するパ ソコンではVideoRAM
への読み書きが容易であるが,FM-7
の よ う に 主CPU
の ア ド レ ス 空 間 と は 全 く 別 にVideo RAM
を 有 す る パ ソ コ ン で は ユ ー ザ プログラム からVideoRAM
へ の ア ク セ ス は 容 易 で な い 。 こ の 難 点 を 解 決 す る た め にFM-7
で は 基 本 入 出 力 シ ス テ ム ,FBIOS
の 中 にD
i
s
p
l
a
ySub System
と 通 信 す る 機 能 を 持 た せ て い る 。 こ のFBIOS
の 使 用 法 は 利 用 者 に 公 開 さ れているのみでなくCP/M-80
のBDOSc
a
l
l
で使用する こ と が で き る 。 具 体 的 に はRCB(
R
e
q
u
e
s
t
C
o
n
t
r
o
l
B
l
o
c
k
)
なる8
バ イ ト の 領 域 を 確 保 し て そ の 先 頭 ア ド レ スをDE
レジスタに乗せ,C
レ ジ ス タ に2
5
5
を ロ ー ト し て5
番 地 をc
a
l
l
すればよい。CP/M-80
の も と でFORTRAN-
8
0
なるFORTRAN
コ ン パ イ ラ が 動 く 。 こ れ に 関 連 す る ソ フ ト ウ ェ ア にMACRO-80
なるマクロアセンブラ,LINK-80
な る リ ン ケ シローダLIB-80
な る ラ イ ブ ラ り マ ネ ゾヤカミあり 便 利 に 使 う こ と が で き る 。 特 に こ れ ら の 処 理 系 は コ マ ン ド体系がよくできており非常に使い易い。FORTRAN-8
0
はANSI-FORTRAN66
と い う 一 時 代 前 の 規 格 を も と に し て 作 製 さ れ て お り 幾 分 古 め か し い 感 じ が す る が 実 用 上はこれで十分である。2
.
2
XY
プロッタ(グラフテック社製マイプロットシ ュニア,DA6100)
このXY
プ ロ ッ タ は 高 度 の イ ン テ リ ジ ェ ン ス を 持 っ て い る の で 比 較 的 容 易 に 使 う こ と が で き る 。 豊 富 な 機 能 を 持 っ て い る が , こ こ で は そ の 部しか使わない。 有効{乍図範囲は2
4
.5cm
X18cm
, 最 大 作 図 速 度 は2
0
cm/sec
, ス テ ッ プ サ イ ス はO.lmm
で3
種 類 の ベ ン を 使 用することができる。 パ ソ コ ン 本 体 と は セ ン ト ロ ニ ク ス イ ン タ ー フ ェ ー ス を 介 し て 接 続 す る 。 プ リ ン タ も こ の イ ン タ ー フ ェ ー ス を 介 し て 接 続 さ れ る の で プ リ ン タ とXY
プ ロ ッ タ の 両 方 を 同時に使用することはできない。 パ ソ コ ン か らXY
プ ロ ッ タ へ の 出 力 は プ リ ン タ へ の 出 力 と 同 じ 形 式 で 行 え ば よ い 。 す な わ ち , プ ロ ッ タ コ マ ン ド を ア ス キ ー コ ー ド で1つづっ送出すればよい。 1つ の コ マ ン ド の 最 後 に は(CR
互主)
(復帰改行コード)をつ ける。従ってXY
プロッタ用のプロツタノレ チ ン は 全 部FORTRAN
で 書 く こ と が で き る 。 た と え ば 点 (1
,2)
か ら 点 (4, 3)へ 線 を 引 く に は2つのコマンドM100
,2
0
0
(CR/LF)
建 員 力 ・ 竹 松 英 夫D400
,3
0
0
(じ支/
L
F
)
をXY
プ ロ ッ タ へ 送 出 す れ ば よ い 。 但 し こ こ で 点(a,β〉 (土左下隅を原点としその点からx方 向 へacm
,y
方 向 へβcm
移 動 し た 点 と す る 。 こ の 働 作 をFORTRAN80
で 実 現 す る に はIX=lOO
1Y =200
WRIIE~(2 , 10)~1X ,1Y
10~FORMAT (l H ~・ 1HM,1
4
,1H
, ,1
4
)
1X=400
1Y
ニ3
0
0
WRITE~(2 , 20)~1X ,1Y
20~FORMAT (l Hu1HD
,1
4
, lH, ,1
4
)
とすればよい 以下にここで使用したプロッタコマントを列挙する。l
i
)
MOVE
コマンドM
文y
(CR/LF)
主 ,y
はO.lmm
を 単 位 と す る 原 点 か ら の そ れ ぞ れx
方 向, y方 向 へ の 距 離 で あ る 。 共 に4桁 以 内 の 整 数 でO壬 孟三五2
4
5
0
,。三三Y
五三1
8
0
0
でなければならない。 ベンを上げて(主, '1)へ移動する。l
i
i
)
DRAW
コマントD
主Y(CR/LF)
主 , '1はMOVE
コ マ ン ド と 同 じ で あ る 。 ベ ン を 下 げ て 現在位置から(主, '1)へ線をヲ│く。 ~ii)P
c
j
c
,
.
.
.
.
.
.
c
n (百πF)
CIC2・E・"Cnで指定されるn個の文字をプロットする。Cj はアスキ一文字である。 ( iv
)
MARK
コマンドN
長(CR/LF)
百で指定された特殊文字〔記号)をプロットする。百は 記号の番号である。(
v
)
ALPHA SCALE
コマンドS
白(
C
頁疋F
)
プ ロ ッ ト さ れ る 文 字 , マ ク の 大 き さ を 指 定 す る 。 こ のコマントを送出した後,PR1NT
コ マ ン ド で プ ロ ッ ト される文字の大きさは, O. 7X (百十1)mm
となる。ス,MARK
コ マ ン ド で プ ロ ッ ト さ れ る マ ー ク の 大 き さ は O. 4X(ロ+
1)mm
となる。I
v
i)ALPHA ROT
A
TE
コマンド Qfi (百疋F) 百は0
,1,2
,3
のいずれかである。PR1NT
コマン ド で プ ロ ッ ト さ れ る 文 字 の 回 転 角 度 を 指 定 す る 。 文 字 の 回 転 角 度 が90'X主になる。(
v
i
v
AX1S
コマンドFM.7用プロッタールーチンの作製
5
3
X,]5q
, r C CR/LF) 座標軸を描く。]5=0
でY
軸,1
でX
軸が描かれる。 司で指定された長さ CO.lmmを単位とする)毎に目盛線 を入れて Fで指定された回数だけ軸を延長す7る。軸の全 長は司xrxO.lmmとなる。 州 HOMEコマンド H CCR/LF) プロッタを初期化するo (jx) SPEEDコマンド Tfi CCR/LF) ベンダウン時のベンの速度を指定する。百はo
~lO の 整数である。ベンの速度がfiX 20/10cm!secになる。使用 する用紙の紙質に応じて百を変える。 (x) NEW PENコマンド Jfi (CR/LF) 百は0,1, 2, 3のいずれかである。百=0とすると 現在持っているベンをベンストックへ収納する。 1~3 のときは E番目のベンを選択する。 マ イ プ ロ ッ ト ジ ュ ニ ア に ほ こ の 他 に も 円 孤 を 描 い た り,片カナをプロットしたり破線,鎖線などをプロット する機能があるが,ここて‘はそれらを使わない。 ここで作製したXYプ ロ ッ タ ー ル ー チ ン で は 上 に 列 挙したコマンドのみを使用する。3
.
作製したプロッタールーチン 前章で述べたような環境では,いくつかの使用形態を 持つプロッタールーチンを作製することができる。 図3
.
1
に示すようにいくつかのプログラムを作製した。CG
が一つのプログラムになっている)l
図3
.
1
データの流れ(プロッタールーチン のモード〉 (i) FM-7で計算した結果を直ちにプロッタに出力す るモード。 (u) 計算結果を一旦フロッピーディスFにファイノレと して出力し計算終了後uv)又 は(v)のルーチンを使ってXY プロッタ又はCRTディスプレーに出力するモード。フ ロッピーディスクへの出力はX Yプロッタコマンドの 形とする。 凶 計 算 結 果 を 直 ち にCRT.ディスプレーに出力する モード。 制 フロッピーディスク に出力されたX Yプロッタ ーコマンドを読み出し, XYプロッタに出力するノレーチ ン。実際にはこのノレーチンを作製する必要はない。ファ イノレからX Yプ ロ ッ タ へ の 単 純 な 転 送 で あ る か らCP/ M-80の標準的なコマンドPIP(Peripheral Interchange Program)を使用することができる。 (ii)で、出力されたフ ァイノレのファイノレ名をABC.OUTとするとB
>
A : PIP L-' LST: = ABC. OUTにより XYプロッタへ出力で、きる。
(
v
)
フ ロ ッ ピ ー デ ィ ス ク へ 出 力 さ れ たXYプロッタ ーコマンドを解読してCRTディスプレーに出力するノレ ーチン。 通 常 は(i)のモードを使うのがよい。しかし長時間の計 算 後 にXYプ ロ ッ タ へ 出 力 す る と き は(
i
)
の モ ー ド で は 不都合が生ずる。 XYプロッタを長時間待機させておくとベン先が乾い てしまう。従ってXYプロッタを使うときは連続的に動 作させるようにするのが望ましし、。そのために(ii)と(iv)の モードを使うと具合がよい。すなわち結果をまづフロッ ピーディスクに出力して計算が終了した後, XYプロッ ターに出力する(ほとんどの計算センターではこの形態 で の みXYプ ロ ッ タ ー を 使 用 で き る ) 。 計 算 実 行 中 は XYプロッタの電源を入れておく必要はない。当然ベン にはキャップをかぶせて乾燥を防ぐことができる。 ファイルからXYプロッタに出力する前にまづ,CRT ディスプレーに出力し結果が妥当なものであるかどうか を手軽に確認することができる。すなわち(
v
)
のルーチン に よ り フ ァ イ ル か らXYプ ロ ッ タ コ マ ン ド を 読 ん で CRTディスプレーに表示する。このプログラムはコンプ リートプログラムの形になっている。 プログラムのデパックの段階で、は(jiDのモードが有用で ある。この段階ではノ、ードコピーを必要としない事が多 いのでCRTディスプレーへの表示だけで十分である。 (i), (ii), uiDは利用者プログラムから呼ぶことができる サブルーチンパッケージの形になっている。 (i),(ii), uiD のいずれを使うときも利用者プログラムは全く同じでよ (i), (ii)は同一のプログラムて‘(i)か(ii)の 選 択 は 後 出 の PLOTSの引数によってきめる。 uiDはサフソレーチン名が(i),(ii)と同じになっている。(i), (ii)かむ)iの選択はリンク時に指定する。 次に図3
.1
の(
i
)
,(ii),u
iDに含まれるサァソレーチンの仕様5
4
秦 野 和 郎 ・ 葉を簡単に述べる。
まづこれらのサフソレーチン名と引数を列挙する。
PLOTS (ND
,NFILE
,NU)
PLOT (X
,Y
,I
P
)
SYMBOL (X
,Y
,HEIGHT
,IASC
,THETA
,N)
NUMBER(X
,Y
,HEIGHT
,FN
,THETA
,N)
SCALE
(DA
T
A
,SIZE
,N
,K)
AXIS(X
,Y
,LABEL
,N
,SIZE
,THETA
,DMIN
,DDEL)
LINE (XDAT
,YDAT
,N
噌K
,J
,L
)
LINMRK (HMRK)
AXSPRM(AXSTP
,HEG1
,HEG2
,AIN1
,AIN2)
FACTOR (FAC)
WHERE (X
,Y
,FAC)
NEWPEN
(IP
)
SPEED
(ISDEG)
日
DCOPY(IBUF
,ICTB
,ICTG)
引数は I~N で始まる変数は 2 パイト型整数,それ以
外 の 文 字 で 始 ま る 変 数 は4バイト実数である。但し,
IASC
はN>O
のときは文字列,NFILE
,LABEL
は文 字列である。以上
1
4
種のサブールーチンは使用するモードにより使 用法に若干の相違がある。PLOTS (ND
,NFILE
,NU)
は 図 形 出 力 の 初 期 設 定 を 行 う 。 こ れ と 対 に な る の が
PLOT (X
,Y
, 999)である。PLOTS(ND
,NFILE
,NU)
が呼ばれてPLOT(X
,Y
, 999) が呼ばれるまで がl
枚の図になる。従って図1
枚について1
回づっこれら のサフツレーチンを呼ばなければならない。モード(i)の と き に は
PLOTS
の引数NU
に2
を与え る。ND
,NFILE
には何を書いてもよし、(無視される)。 モード(ii
i)のときはPLOTS
の引数はすべて無視される。PLOTS
が呼ばれると画面を消去する。(i),(ii)il、ずれのモ ードでもPLOT(X
,Y
, 999)を呼ぶと計算を一時中断 しRETURN
キーを押すと再開する。モード(
i
)
のときは この聞に紙を取り換える。NU
に6
以 上 の 整 数 を 与 え てPLOTS
を呼ぶとモー ド(ii)になる。このモードではファイノレを聞く。どのフロ ッピーディスクにファイノレを作るかをND
で指示する。ND=
1
ならドライブA
,ND=
2
ならドライブB
にファ イノレが作られる。作るべきファイノレのファイノレ名をNFILE
に1
1
文字で与える。たとえばB:ABC. XYP
を 出力ファイノレとするならCALL PLOTS (2
,'ABCC_"
.
.
.
.
H.-'~~XYP' ,S)
と呼ぶ。サフソレーチン
PLOTS
の内部では, 建 助 ・ 竹 松 英 夫CALLOPEN
(ふ,ABC~~~~~XYP' ,2)
を呼んでB:ABC. XYP
を聞く。 以降呼ばれるプロッタールーチンにより生成されるXY
プロッターコマンドはファイノレB:AB
C
.
XYP
に出 力されてし、く。最後にCALL PLOT (X
,Y
, 999) を呼ぶとサブルーチンPLOT
の内部でENDFILE
,--,S
を実行しファイノレを閉じる。1
つの計算で、複数個の図を書くのが普通であるがこの ようなときはたとえば次のようにするとよい。IMPLICIT INTEGER
*
2
(I-N)
DIMENSION NFILE
(6)ND= 2
NU=
S
MAI=500
ENCODE (NFILE
,1
0
)
MAI
1
0
FORMAT (3HABC
,I
3
,2X
,3HXYP)
CALL PLOTS (ND
,NFILE
,NU)
{(l枚目の図)
CALL PLOT (X
,Y
, 999)MAI=MA!+ 1
ENCODE (NFILE
,1
0
)
MAI
CALL PLOTS (ND
,NFILE
,NU)
{
(
2
枚目の図)CALL PLOT (X
,Y
, 999) これによりl
枚目がファイノレB:
ABC500. XYP
に,2
枚目がファイノレB:
ABC501
.
XYP
に出力される。 図形出力でもっとも頻繁に使うのがPLOT (X
,Y
,I
P
)
である。ほとんどの場合PLOTS
とPLOT
の2
つで十分 である。 このサフルーチンを呼ぶとプロッタのベンが現在位置 から点(X,Y)へ移動する。単位はcmである。IP
によ りベンの状態を指示する。I
I
P
I
= 1
ならベンの状態は変わらない。I
I
P
I
= 2
ならベンを下げて指定された点へ移動 する。従って直線が引かれる。I
I
P
I
= 3
ならベンを上げて指定された点へ移動 する。IP< 0
な ら 指 定 さ れ た 点 を 新 た な 原 点 と す る。PLOTS
を呼んだ時点では左下隅が 原点になっている。IP
=
0
ならなにもしない。FM-7
用プロッターノレーチンの作製5
5
I
P
= 9
9
9
とするとl枚の図の終了処理を行う。 どのような働作をするかは(
i
l
,(
i
i
l
, (ii
i)の モートによって異なる(前出入 次にSYMBOL (X
,Y
,HEIGHT
,IASC
,THETA
, N) は指定された点に(又は指定された点から)記号(又は 文字列)を描く。X
,Y
で点を指定し,HEIGHT
で文字,記号の高さ,THETA
で文字の回転角を指定する(X
軸正の方向から 反時計まわりで単位は度)。但し,THETA
は0
.
0
,9
0
0
,1
8
0
.
0
,2
7
0
.
0
のいずれかt
こ限る。 角度の制限はマイプロットシュニア及び,FM-7
のD
i
s
p
l
a
y
Sub System
の制限に由来する。大型計算機で使 われる大型のプロッタールーチンはその中に文字フォン トを持っている。しかしパソコンではメモりの制約が大 きいのでここて、はノレーチン内に文字フォントは持たず, プロッタ やD
i
s
p
l
a
ySub System
の機能をそのまま使 った。N
の値により動作が大きく異なる。N>O
のとき,現在位置からベンを上げて点(X
,Y)
へ移動しIASCI
こ与えられたN
個の文字を プロッ卜する。但しX
,Y
が共に9
9
9
.
0
ならベン の移動は行なわず現在位置から文字をプロット する。N<O
のときには点(X
,Y)
を中心として記号を プ ロ ッ ト す る 。 記 号 の 番 号 をIASC
で 指 定 す る。又X
,Y
が共に9
9
9
.
0
な ら ベ ン は 移 動 し な し、ON
二1
のときベンを上げて移動する。N
豆2
のときベンを下げて移動する。 記 号 を プ ロ ッ ト し な が ら グ ラ フ を 書 く と き に は N=~2 とするとよい。NUMBER(X
,Y
,HEIGHT
,FN
,THETA
,N)
は数値をプロットする。HEIGHT
,THET
A
はSYM-BOL
の場合と同じである。 ヘンを上げて点 (X,Y)へ移動してFN
で与えられる 数字列をプロットする。但しX
,Y
が共に9
9
9
.
0
のときは ベンは移動しない。 。三五N
孟9
のときFN
の 小 数 点 以 下N
位 ま で を プロットする。N
ニO
の と き 整 数 部 と 小 数 点 の み を プ ロ ッ ト す る。 N =~ 1 のとき整数部のみをプロットする。9
~五 N 三五一 I のとき整数部の1
0
"
1
位までをプロ ツ卜する。SCALE
,AXIS
,LINE
,LINMRK
,AXSPRM
はこ れだけを一組にして使用する。グラフを描くのに用いる。LINE
が主たる働きをする。これらのサフソレーチンの機 能は複雑であるからここでは説明を省略する。FACTOR (FAC)
はプロット尺度を変える。現在の原点位置からの距離がFAC
倍される。WHERE (X
,Y
,FAC)
はベンの現在位置,プロット尺度を与える。NE
羽rpEN
(IP
)
はベンの種類を変更する。I
P
によりベンの種類を指定す る。SPEED
(ISDEG)
はベンの速度を変える。マイプロットジュニアではベン の 速 度 を1
0
段 階 に 変 え る こ と が で き る 。 ベ ン の 速 度 がISDEG x 2
c
m
/
s
e
c
になる。使用する紙の種類によって 変えるとよい。このサブルーチンはモード(ii
i
l
では無視さ れる。HDCOPY
(IBSF
,ICTB
,ICTG)
はモード(iii)でのみ意味がある。画面に表示された図をプ リンタヘハードコピーする。
XY
プロッタに比較すると 非常に雑な図になる。IBSF
は作業領域で2
0
9
パイト以上 の長さでなければならない。ICTB
,ICTG
は そ れ ぞ れ1
2
8
,1
2
6
とする。 さてモード(
i
l
,(
i
i
l
のサブルーチンは全部FORTRAN
8
0
で書かれており, コンパイノレしてA :
PLOTSO. REL
というファイノレに入っている。モード(ii
i
l
のサフノレーチン はほとんとがFORTRAN80
で 書 か れ て い る が1
0
行 程 度 はMACR080
で書いた。これらはコンパイノレされアセン ブノレされてLIB80
に よ り 結 合 さ れ てA
マGRAFM7
.
REL
というファイノレに入っている。モード(
v
l
のプログラ ムはFORTRAN80
とMACR080
て、書かれておりコンパ イノレ,アセンブノレ,リンクされてA :
GRPL 7
.
COM
と いうファイノレに入っている。 プロッタ←ノレ←チンを呼び出す利用者プログラムがB: SAMP. FOR
というファイノレに入っているとすると(
i
l
,l
i
i
l
のモードの操作手順は次のようになる。B>A :
F80
,--,二SAMP
B>A :
L80~↓ SAMP,A: PLO
T8
o/S
,A: FOR
LIB/S
,SAMP
/N
/E
B>SAMP
ス, (jii)のモ ドでの操作手順は次のようになる。
B>A
:
F80~=SAMPB>A
:
L80~SAMP ,A: GRAFM 7/S
,A
FORLIB/S
,SAMP
/N
/E
A:PIF' C口N,~B , F:LTE81El. FOF,CNl 1: C~戸 2, C半半¥¥挙半半半半 F'LTESl ¥¥ F'LTE81El 半¥挙半半半半半半半半¥¥~挙挙キ挙半己評¥¥キ¥¥ 3, C半 》 斗, C¥ PLOTTEFi: TEST (1) 半 5: C¥ 半 らミ E苦手¥¥¥¥¥¥¥¥ ¥¥ ¥¥半導¥¥¥¥¥¥¥¥羊¥¥¥¥¥¥¥¥¥¥¥¥ 7, F'RロGF:A刊F'LTESl
日, I門PLICIT INTEGER本2C:I-N)
9: INTEGEF:*l NFILE1
1(;': F~EAL :t4F'I, STEF', XF', YF', FACT, SCAしX,SCALY,SHIY
11: 1 , XF'し, YF'L, XDAT, YDA了
12: DIMENSION NFILE1(11)
,
XDATC103),
YDATC1Co3)13: DATA F'I / 3.14159 26535 I
14: MAI=l,n
15: ENCODE (NFILE1
,
110日 )MAI1ι: 110(;' FORMAγ(3HRL口, I3,2X,3HOU丁、
17, CAしし口F'EN(5,'RLTES1I1DAT' ,2)
18: READ (5,1110) NU1, ND1, FACT
19: 1110 FORMAT(2I5,Flの.5)
20
,
C 一一-SIN,
COS21: CALL F'L口TSCND1
,
NFILE1,
NU1)22: CALL FACT口F:(FACT)
23: CALL F'LOTCO.O
,
u.O,
3)24: CALL PLOT(18綱O,':).f.), 2)
25: CALL PL口T(1包.c'
,
18.(),
2)26: CALL PLOT((~ 圃 0 , 18. (:0, 2)
27: CALL PL口 T(O.r) ,~?":), 2)
28
,
CALL NEωF'EN(2)29: CALL SY門B口L(4.(), 16.0, 1.(),' SIN(X)', O. (), 6) 3~?: CALL SY門日口LC11.0,2.0,1贋(), 'C口S(X)',180.り, 5) 31
,
CALL NEωPEN(3) 32: CAしL SYM80LC9.0,8.0,凸 .5,'SIN(X)' ,90.0,6) 33: CALL SY門旬口L(15.0,17司り, 0.5,'C口S(X)' , 27'~' 圃(), 6) 34: CALL PLOT(2.':),2.f.), -3) 35: NINT=lC :..) 36: STEP=2. 0本F'I/FL口AT(NINT) 37: SCALX巴14.0/(2開。*F'D 38: SHIY =7.0 39: SCALY=7.(:l 40: NINT1=NIN丁+1 41,
CALL NEωPEN(1) 42: CALL PLOT(O.(),).C',3) ,43: CALL F'LOT(C.. 0
,
2. 0本8CAしY,
2)44, CALし PL口T((o:.0,SCALY,3)
45: CALL F'LOT(14.0
,
SCALY,
2)46: CALL PLOT(14.(;' ,(~.(), 3) 47' CALL PL口T(14.()
,
2.()本SCALY,
2) 48,
D口 1120 11=1,
NINT1 4ヲ, XP~8TEP 本 FLOATCll-l) 50: YP=SIN(xP) 51,
XPL~XP本 8CALX52: YPL=YP本8CAしY+SHIY
53: IPEN=2
54: IF(I1.EQ.1) IPEN=3
55, CALL F'L口T(XPL,YPL, IPEN)
56: 112':) CロNTINUE 57: D口 1130 11=1
,
NINT1 58, XP~STE F'本 FLOAT01- 1) 59: YP=C口S(XF') 60,
X F' L~XP*8CALX 61: YPL=YP*SCALY+SHIY 62: IF'EN=2 63: IF(I1.EQ.1) IF'EN=364, CALL F'L口γ(XPL,YPL, IPEN)
65: 1130 C口NTINUE 56, CALL F'LOTι ,:). ( (,)).c"99'3) 67
,
C --- C口S:tSIN+巳08一一一 68,
D口 1140 11=1,
NINT1 69: XP認8TEP本FLOAT(I1-1) 70= YP=COS(xP)本SIN(XP)+CQS(XP) 71,
XDA T( II)~XP 72: YDAT正II) ~yp 73,
1140 C口NTINUE 74,
MAI~刊 AI+1 75: ENCODE (NFILE1,
11l?0)門AI76' CAしL PLOTS CND1
,
NFIしE1,
NU1)ア7, CALL PL口T(2司0,2.0,-3)
78: CALL SCALE(XDAT,20.(),NINT1, 1)
79: CALL SCALE(YDAT, 14.0,NINT1, 1)
80: CALL NE凶PEN(2)
81, CAしL 8YMB口L(().5, (). 5, ':). 8, 'COS(X、本SIN(X)+COS(X),
82: 1 ,O.(),2())
83
,
CALL NE凶PEN(3)84: CALL AXIS((). 0, O. 0, , X-AXIS' ,6,16. (),の .0
85: 1
,
XDAT(NINT1+1),
XDAT(NINT1+2))86: CALL AXSPRM(1.C), ().21,(), 28,().6, 1.1)
87, CAしし AXIS(('司':), O. ., 'Y-AXIS' r ); -6,14. (), 9(). ,:)
88: 1
,
YDAT(NINT1+1),
YDAT(NINT1+2))89
,
CAしL NEωPEN(l)9f.): CALL LIN門RfUO.5)
91, CAししし INE(XDAT, YDAT, NINT1, 1, 1'~' , 0)
92: CALL AXSPRMC2.o,().42,0.56,0.4,1.r.))
93: CALL AXIS((). (), 14刷。, , CQS (X) * ( 1 • ':)+S 1 N (X) ) , , -19
94: 1 ,16.0, O. 0, XDAT(NINT1+1), XDAT(NINT1+2))
95: CALL AXSPR門(2.(),0.42,O闘56,()‘ 6,1.2)
ヲ6: CALL AXIS (1 6.Ç."~, .ç,, 'y',0, 1斗 .(),9r.>.C. 97: 1
,
YDAT(NINT1+1),
YDAT(NINT1+2)) 98, CALL PL口T(().(), (). c., 999) 99: ST口P 100: END 夫 このようにXY
プロッターに出すかCRT
デ ィ ス プ レ ー に 出 す か は リ ン ク 時 に ど の ラ イ フ ラ リ を 指 定 す る か に よ りきめることができる。 モード(jj)により作製したプロッターファイノレをCRT
デ ィ ス プ レ ー に 表 示 す る に はA>GRPL 7
とタイプし,プロンプトに従ってファイノレ名をタイプイ ンすればよい。 以上のように, こ こ で 作 製 し た プ ロ ッ タ ー ル ー チ ン は 非常に使用しやすいものであると思われる。4
.
使 用 例 英 松 動・竹 建 郎・葉 和 野 秦5
6
図4
.
1
に簡単なプログラム例を挙げる。このプログラム を動かすとモード(
i
)
で は 図4.2, 図4.3が,モートi
ゅでは 6.4日 ¥sl ¥sl 巴a ._,. ‘ '.4園Fー唱 日 N . 日 自由.日 I(Xl+COS(Xl
円 。
x 5_60COS(Xl
本(1.回
+SIN(Xll
1.6日 3.2日 4.8日。
.a困 4.00O
J
3.20 X-AX l 5 図4.3 図4.2(
X
)
'
.
4
固 fl.目白 血iCOS(Xl*
":.1 -j,'目 o_ao 図4
.
1
5
7
FM-7用プロツタ レノ チンの作製J
つ
¥
λ
r
"
/
1〉
f¥
[/¥¥i
図5.16
,4
日
一
→
E
B
H 同 川 山 川 川 げ a m 川 川 a m M U ﹂ 山 川 町 I R 山 首 l l i 同町同凶 v ・ 1,
l H M n γ l i a 川 崎 f4
.
:
:
:
1
3
図4.4 h l 円 円 旨 ム 引 っ ﹄ ト υ i i Jf
y l - - E+
日
1
1
1 H H R L J h -E 山 h﹁ ム- L
-1 E 門 山 刊 い国 -川 円 川 ・日
川 雄 d y 聞は円吊明品川UE 由 旬 判 的 w ,傾川皆川川目川温創出, m 閉 曜 日 w1ER 閉 園 田 W 1・
m
明 寸 ! E t 明 l l 的 W 同 V A F U W ﹄ lJRJ 図5.3 図4.5 図4
.
4
.
図4
.5
が得られる。 図4
.1
で2
1
行目から6
6
行目までが図4
.
2
をサ7
6
行はから9
8
行H
までが図4
.
3
を描く。1
8
行自で読むデータをここで はNU 1に8. ND 1に2. FACTに1.0を与えた。5
.
応 用 パソコンヒで動くプロツタ ノレーチンができたので試 みに名古屋大学大型計算機センタ でライブラリ プロ グラムとして使用されている等高線を書くプログラムと 立体図を書くプログラムとをFM-7上で動かしてみた。 プログラムにわずかの修正が必要であったが大型計算機 で 使 わ れ て い る プ ロ グ ラ ム が ほ と ん ど そ の ま ま の 形 で FM-71::で動く。58 秦 野 和 郎 ・ 葉 建 員 泊 ・ 竹 松 英 夫
図5.4 図5.7
図5帽5 図5.8
FM.7用プロッターノレーチンの作製 59 図5.10 図 5.1~ 図 5.5は f(x, y)= (X2_1)2+ (y2_1)2_1 Ixl孟1.5, Iyl壬1.5 の等高線と立体図である。図5.2には更に等高線と直交す る線が書き加えてある。(場が電界をあらわすならこれは 電気力線をあらわす) 図 5.6~ 図 5.7はモード(iiiJでの図 である。 図5.8~ 図 5.10 は