annotate poster/os9/os9.html @ 8:7fd82a802a66

add os9
author anatofuz
date Fri, 19 Apr 2019 18:23:10 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
1 <html>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
2 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
5
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
6 <html xmlns="http://www.w3.org/1999/xhtml">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
7
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
8 <head>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
9 <title>OS9</title>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
10 <!-- metadata -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
11 <meta name="generator" content="o2s5" />
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
12 <meta name="version" content="0.1" />
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
13 <meta name="author" content="Shinji KONO" />
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
14 <meta name="company" content="" />
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
15 <!-- configuration parameters -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
16 <meta name="defaultView" content="slideshow" />
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
17 <meta name="controlVis" content="hidden" />
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
18 <!-- style sheet links -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
19
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
20 <!-- S6 style sheet links -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
21 <link rel="stylesheet" href="os9.css" media="projection" id="styleProjection">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
22 <link rel="stylesheet" href="ui/s6/screen.css" media="screen" id="styleScreen">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
23 <link rel="stylesheet" href="ui/s6/print.css" media="print">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
24
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
25 <!-- S6 JS -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
26 <script src="ui/s6/jquery.js"></script>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
27 <script src="ui/s6/jquery.event.move.js"></script>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
28 <script src="ui/s6/jquery.event.swipe.js"></script>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
29 <script src="ui/s6/jquery.slideshow.js"></script>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
30 <script>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
31 $(document).ready( function() {
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
32 Slideshow.init();
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
33 } );
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
34
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
35
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
36 </script>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
37
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
38 <!-- Better Browser Banner for Microsoft Internet Explorer (IE) -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
39 <!--[if IE]>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
40 <script src="s6/jquery.microsoft.js"></script>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
41 <![endif]-->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
42
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
43
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
44 </head>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
45 <body>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
46
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
47 <div class="layout">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
48 <div id="header"></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
49 <div id="footer">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
50 <!-- <h1>Your Footer Here</h1> -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
51 <!-- <h2>Your Subfooter Here</h2> -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
52 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
53 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
54
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
55 <div class="presentation">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
56 <!-- _S9SLIDE_ -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
57 <!-- globle element -->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
58 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
59
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
60 <!-- Title --->
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
61 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
62 <h1>OS9</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
63 <h1></h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
64 <h1> 河野真治 </h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
65 <h1></h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
66 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
67
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
68
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
69 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
70 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
71 <h1>OS-9 の特徴</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
72 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
73 <p>Microware 社によりMotorola のMC6809用に作られた 8bit OS。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
74 <p><pre> Module と言う単位をメモリ上にどこに配置しても良い<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
75 Time sharing を採用した並列実行(concurrent) (平行(parallel)ではない)<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
76 Unix like なshell とpipe<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
77 Unified file system ( Device descriptor, Device driver)<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
78 Floppy disk 128k 階層型ファイルシステム<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
79 Basic09 というPascal likeな言語を持つ。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
80 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
81 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
82 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
83 <h1>MC6809</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
84 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
85 <p><center><img src="6809.gig"></center><br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
86 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
87 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
88 <h1>Level 1/2</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
89 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
90 level 1 ROM上のOS9 p1 kernel で動作する。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
91 level 1 MMUで2Mbyteのメモリを使える<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
92 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
93 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
94 <h1> Module</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
95 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
96 <pre> 87CD から始まり、CRC24 で検証されたコードとデータの固まり<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
97 Relocatable<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
98 entry point とモードフラグ<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
99 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
100 ROMに常駐できる<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
101 <p>8bitなのでメモリ空間は64k(16bit addressing)<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
102 <p>8080/6809 は 8bit CPUというよりは、8bit busな16bit CPU<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
103 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
104 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
105 <h1>何をするか</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
106 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
107 Emulator 上で OS-9 を動かそう。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
108 <p><pre> できれば Level 2<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
109 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
110 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
111 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
112 <h1>なんで?</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
113 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
114 <p>昔、自作のに乗っけれなかった。せっかく5万円も出して買ったのに。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
115 <p>残念ながらハードはもうないけど、Emulator なら?<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
116 <p>20年前に「年取ったらやろう」と思っていたが、そろそろやるべき。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
117 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
118 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
119 <h1>level 2</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
120 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
121 <pre> アドレス変換に対応し、512kメモリを使用できる。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
122 ユーザ空間とシステム空間を別にできる<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
123 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
124 8k単位で16task*64k分を512kから自由に割り振れる<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
125 <p>TLB base ではなく、変換機構をメモリで実装する方式<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
126 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
127 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
128 <h1>kernel構成</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
129 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
130 OS9p1<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
131 <pre> system callと割り込み処理<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
132 Module 発見と管理<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
133 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
134 OS9p2<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
135 <pre> メモリ管理<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
136 Task管理<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
137 Signal<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
138 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
139 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
140 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
141 <h1>kernel構成2</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
142 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
143 <p>IOMan<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
144 <pre> SCF/RBFと device driver とdescriptor の登録<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
145 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
146 SCF<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
147 <pre> sequencial file io manager<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
148 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
149 RBF<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
150 <pre> randome block file io manager<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
151 file system管理<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
152 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
153 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
154 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
155 <h1>Runtime module</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
156 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
157 <p>init<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
158 <pre> boot用初期データ<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
159 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
160 sysgo<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
161 <pre> clockとShellの起動<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
162 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
163 Clock<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
164 <pre> timer 割り込み<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
165 日付計算<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
166 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
167 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
168 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
169 <h1>Runtime module 2</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
170 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
171 <p>Shell<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
172 <p>Device descriptor<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
173 <pre> D0<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
174 Term<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
175 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
176 Device driver<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
177 <pre> PTY<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
178 PDisk<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
179 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
180 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
181 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
182 <h1>nitros9</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
183 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
184 <p>OS9 をdisassemble したものらしい<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
185 <p>Tandy Coco 上で動いていたらしい<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
186 <p>ライセンス的にはだめかも<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
187 <p>大目に見られてる?<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
188 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
189 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
190 <h1>Emulator</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
191 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
192 sbc09というアセンブラEmulator上に実装して動作させた<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
193 <p>Java版を作った人がいるらしい<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
194 <p>Unix上のOS9 emulator があるが動作せず<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
195 <p>osnineという途中まで作られたものがあった<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
196 <p>level 2 まで動かす?<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
197 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
198 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
199 <h1>利点と欠点</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
200 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
201 初期の8bit用のUnix like OS<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
202 <p>8bitのOSでMMUを持つものとしては唯一 (M/PMもあったが)<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
203 <p>comapct で信頼できるmodule構成<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
204 <p>CRCの意味は不明<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
205 <p>メモリ領域はmodule構成ではない<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
206 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
207 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
208 <h1>利点と欠点 2</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
209 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
210 PICのせいもあり、比較的低速<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
211 <p>real-time scheduling を持ってない<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
212 <p>プロセス間通信は貧弱 (signal のみ)<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
213 <p>68K用などは現在も生きてる製品<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
214 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
215 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
216 <h1>level 2</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
217 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
218 sbc09 を mmu 対応にして level 2 まで動かした。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
219 <p>nitros9 という「まだメンテされている(〜2014)」ソースに対応した。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
220 <p>Coco (tandy color computer) <br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
221 <p><pre> 0xfe00-0xffff は MMU による影響を受けない<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
222 ROM切り替えで、2MBのfull ramとして使える<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
223 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
224 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
225 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
226 <h1>vrbf</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
227 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
228 <p>仮想RBF (random block filer manager )<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
229 <p><pre> Unix 上のファイルを Emulator 側からos9のファイルシステムとして見せる<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
230 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
231 os9はopen されたファイルを path descriptor というioman が管理するデータ構造で実装する。それに対応する<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
232 構造体を vrbf 内で用意する。256個と決まっているので固定配列で良い。そこに FILE *を置けばよい。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
233 <p>os9はディレクトリを普通のファイルとして開いてしまうので、os9のディレクトリ構造を作って返す。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
234 <p><pre> fmemopen というメモリ上のバッファを FILE* として開く機能を使う<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
235 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
236 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
237 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
238 <h1>vrbf 続き</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
239 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
240 <p>dir -e はファイルの属性を持つ特別なsector (file descriptor)を getstat のundocumented commandを<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
241 使ってアクセスするので、それを返す必要がある。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
242 <p>os9は current directory をLSN( 24bit logical sector number)で持つが、面倒なので、current directory 名を256個のFIFOっで管理。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
243 同じ名前は再利用。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
244 <p>path descriptor でcurrent directoryを管理してくれれば良いのだが、そうでなくて、LSN。しかも、path descriptor と別。なので、<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
245 別に管理する必要がある。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
246 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
247 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
248 <h1>level2 での割り込み</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
249 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
250 時分割処理に必要な clock module は割り込みを行う。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
251 <p>割り込み時には、どのmmuにいるかわからない。なので、<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
252 <p><pre> os9にentry割り込みルーチンを登録する<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
253 os9 が割り込み後mmuを設定してentry割り込みルーチンを呼び出す<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
254 engry割り込みルーチンで、serviceタスクを SSvcIRQに登録して jmp [D.XIRQ] <br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
255 すると iret してくれる<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
256 os9 側が暇な時に、serviceタスクをsystem mode で呼び出す<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
257 service は処理の後、task 切り替えをする用に jmp [>D.Clock] する<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
258 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
259 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
260 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
261 <h1>level2 のoverhead</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
262 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
263 <p>vrbf はサービスするprocessとは別なシステムメモリ空間にいるので、データは copy sysetm callを使う必要がある。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
264 <p>vrbf のC側からはos9のsystem callを呼べないので、mmu を一時的に作って、それを使ってアクセス。mmuの情報はprocess descriptor 上にある。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
265 <p>call するプロセスのレジスタはsystem spaceにコピーされていて、そこに値を書き込むと返される。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
266 <p>hook がたくさんあり、indirect jump ばっかりが増える。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
267 <p>Coco ではIOは全部のプロセスに見えてしまってる。特に保護されてない。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
268 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
269 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
270 <h1>module 間のlink</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
271 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
272 os9 のlinkは、system に登録されるだけ。同じメモリ空間に登録されるとは限らない。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
273 <p>同じ空間に登録されれば、module にアクセスできる。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
274 <p>module に付属している固定メモリはある<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
275 <p>malloc されたものは自由に取り扱えるが、どこにあるかはprocess毎に異なる<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
276 <p></div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
277 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
278 <h1>OS-9 上のソフト</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
279 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
280 <pre> BASIC09<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
281 FORTH<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
282 BASIC<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
283 GAME09<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
284 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
285 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
286 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
287 <h1>Micro C</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
288 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
289 <p>mohta氏と手塚氏の作った 6809 用の整数Cコンパイラ。構造体がある。<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
290 <p><pre> かなり動いているんですが...<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
291 </pre>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
292 </div>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
293 <div class="slide">
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
294 <h1>さらに</h1>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
295 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
296 <p>qemu で TLB base で動かす<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
297 <p>interpreter base の Emualtor ではなく、compile base にする<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
298 <p>nitros-9 のソースコードのコメントを増やす<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
299 <p>  まぁ、あんまりやりすぎないように<br>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
300 <p>
7fd82a802a66 add os9
anatofuz
parents:
diff changeset
301 </body></html>