最終更新:ID:M1gAWu1HuA 2021年03月05日(金) 18:56:40履歴
1 | 2 | 3 | 4 | 5 | 6 | 7 | ... | F | 0 | |
---|---|---|---|---|---|---|---|---|---|---|
0000 | 窓2 (主に変数・文字) | グラフィックRAM | テキスト領域 44KB | 単純変数 MAX 8KB | ↑ 文字列 44KB | ↑ 文字列 44KB | 窓1 | マシン語領域 52KB | - | |
1000 | 配列 ↓ 44KB | |||||||||
2000 | 窓1 (主にテキスト) | 窓2 | ||||||||
3000 | ||||||||||
4000 | テキストVRAM (窓3としても使用) | テキストVRAM | 窓3 | |||||||
5000 | ROMBASIC (窓3としても使用) | IG/CG | 未使用 | |||||||
6000 | ROMBASIC | グラフィック 追加機能 | RAMDISK 参照窓 | |||||||
7000 | DISK BASIC システムコール 拡張用 | |||||||||
8000 | DISK BASIC 基本処理 | システム イニシャライズ 割り込み処理(2) | ||||||||
9000 | グラフィック 追加機能 (窓4としても使用) | |||||||||
A000 | ||||||||||
B000 | - | エディタ | ROM BASIC | ROM BASIC | フィールド・バッファ ↓ ↑ DSB.FCB | DSB.FCB FIELD BUFFER ↓ 最大8KB | 拡張ワーク・エリア | |||
C000 | 拡張ワーク・エリア | ↑ スタック | ↑ スタック | |||||||
D000 | ↑ スタック | ↑ スタック | ↑ スタック | ↑ スタック | ↑ スタック | ↑ スタック | ↑ スタック | |||
E000 | システム・ワーク | システム・ワーク | システム・ワーク | システム・ワーク | システム・ワーク | システム・ワーク | システム・ワーク | システム・ワーク | システム・ワーク | |
F000 | 割り込み処理(1) メモリ管理 | 割り込み処理(1) メモリ管理 | 割り込み処理(1) メモリ管理 | 割り込み処理(1) メモリ管理 | 割り込み処理(1) メモリ管理 | 割り込み処理(1) メモリ管理 | 割り込み処理(1) メモリ管理 | 割り込み処理(1) メモリ管理 | 割り込み処理(1) メモリ管理 |
S1のメモリ空間は、1MBです。しかし68B09Eは8ビットなので、直接アクセスできるメモリ空間は64KBで、1MBのメモリ空間をダイレクトにアクセスする事はできません。
S1は、ハードウェア上では1MBのメモリ・マップを構成し、ソフトウェア上では論理的な操作により64KBのロジカル・メモリ・マップ上でメモリを管理することにより、1MBのメモリ空間をアクセスできるようにします。
また、メモリ空間は、空間0のメモリ管理、システム・コールによって行います。上部にハードウェア・メモリ・マップ(以下実メモリ・マップと称します)、下部にロジカル・メモリ・マップを示します。
S1は、ハードウェア上では1MBのメモリ・マップを構成し、ソフトウェア上では論理的な操作により64KBのロジカル・メモリ・マップ上でメモリを管理することにより、1MBのメモリ空間をアクセスできるようにします。
また、メモリ空間は、空間0のメモリ管理、システム・コールによって行います。上部にハードウェア・メモリ・マップ(以下実メモリ・マップと称します)、下部にロジカル・メモリ・マップを示します。
メモリ管理を理解するには、まず空間を理解しなければなりません。メモリ管理の諸機能は、すべてこの空間を操作するものです。
空間とは、CPUがアクセス可能な64KBのメモリ空間の構成内容を定義するもので、下部に示すように、空間0〜$Fの最大16種類が定義できます。
そして空間は、CPUがアクセスできる空間(64KB)と実メモリの対応付けを行うマップ・イメージと、メモリの種類を識別するためのメモリ識別情報により定義されます。
実メモリを4KB単位に0〜$FFの256ページに分割し、任意の16ページ(64KB)を集めてCPUのアドレスを構成したものがマップ・イメージです。
実際にアクセスされる実メモリのアドレス1MB(0〜$FFFFF)は、空間のマップ・イメージとCPUのアクセスする64KB(0〜$FFFF)によって一義的に定まります。
図3で、空間mの$1000〜$1FFF番地の4KBに実メモリの$70ページが対応してる場合、空間mの$1000〜$1FFF番地をアクセスする事は、実際には実メモリの$70000〜$70FFF番地をアクセスする事になります。
同じように、空間nの$2000〜$2FFF番地の$KBに実メモリの$B2ページが対応してる場合、空間nの$2000〜$2FFF番地をアクセスすると、実メモリの$B2000〜$B2FFF番地をアクセスする事になります。
マップ・イメージは空間を定義した後にメモリ割り当て、窓ロケートなどのメモリ管理機能を使用して変更することができます。
空間とは、CPUがアクセス可能な64KBのメモリ空間の構成内容を定義するもので、下部に示すように、空間0〜$Fの最大16種類が定義できます。
そして空間は、CPUがアクセスできる空間(64KB)と実メモリの対応付けを行うマップ・イメージと、メモリの種類を識別するためのメモリ識別情報により定義されます。
実メモリを4KB単位に0〜$FFの256ページに分割し、任意の16ページ(64KB)を集めてCPUのアドレスを構成したものがマップ・イメージです。
実際にアクセスされる実メモリのアドレス1MB(0〜$FFFFF)は、空間のマップ・イメージとCPUのアクセスする64KB(0〜$FFFF)によって一義的に定まります。
図3で、空間mの$1000〜$1FFF番地の4KBに実メモリの$70ページが対応してる場合、空間mの$1000〜$1FFF番地をアクセスする事は、実際には実メモリの$70000〜$70FFF番地をアクセスする事になります。
同じように、空間nの$2000〜$2FFF番地の$KBに実メモリの$B2ページが対応してる場合、空間nの$2000〜$2FFF番地をアクセスすると、実メモリの$B2000〜$B2FFF番地をアクセスする事になります。
マップ・イメージは空間を定義した後にメモリ割り当て、窓ロケートなどのメモリ管理機能を使用して変更することができます。
物理アドレス
00000 | (1)メモリ拡張領域 |
---|---|
80000 | (12)予約領域 |
84000 | (2)システムRAM |
90000 | (12)予約領域 |
A0000 | |
B0000 | (3)グラフィックRAM(赤) |
B4000 | (3)グラフィックRAM(緑) |
B8000 | (3)グラフィックRAM(青) |
BC000 | (4)文字表示用RAM 文字表示用カラーRAM |
BC800 | (5)イメージジェネレータ用RAM(赤)(緑)(青) |
BD000 | (5)文字フォント格納RAM |
BE000 | |
C0000 | (12)予約領域 |
D0000 | 漢字辞書用ROM モデル20,40のみ |
D8000 | (12)予約領域 |
E0000 | (6)S1 ROM BASIC |
EFE00 | (7)システムI/O-2 |
EFFF0 | (8)割り込みベクタ(システムモードA) |
F0000 | (システムRAMのイメージ) |
FA000 | (9)LEVEL-3 ROM BASIC |
FFF00 | (10)システムI/O-1 |
FFFF0 | (11)割り込みベクタ(システムモードB) |
値 | 内容 | 備考 | |
---|---|---|---|
00 | 共通領域 | 拡張ワーク | システムがメモリ(RAM)の割り当て/解放を行う。 ユーザーは定義のみ可能。 |
01 | テキスト境域 | ||
02 | 変数/配列境域 | ||
03 | 文字境域 | ||
04 | ユーザーマシン語境域 | ||
05 | フィールド・バッファ | ||
06 | DISK BASIC | ||
07〜08 | 漢字DISK BASIC | ||
09〜0F | システムで予約 | ||
10〜8F | ユーザー使用可 | ユーザーが自由に定義し、メモリの割り当て/解放ができる。 | |
FF | 固定領域 | メモリの割り当て/解放は不可。 |
$0000 | ||
---|---|---|
: | ||
$D000 | $85 | $D〜$Fページには特定の実メモリに対応する固定領域 |
$E000 | $84 | |
$F000 | $EF |
マップイメージ
$BFはメモリが未割り当て状態を示す。
空間 | x | y | z | → 空間x の0〜5 ページに メモリ割当 | x | y | z | → 空間y の9〜$B ページの メモリ解放 | x | y | z |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | BF | BF | 76 | 7B | 7B | 76 | 7B | 7B | 76 | ||
1 | BF | BF | 77 | 7C | 7C | 77 | 7C | 7C | 77 | ||
2 | BF | BF | 78 | 7D | 7D | 78 | 7D | 7D | 78 | ||
3 | BF | BF | 79 | 7E | 7E | 79 | 7E | 7E | 79 | ||
4 | BF | BF | 7A | 7F | 7F | 7A | 7F | 7F | 7A | ||
5 | BF | BF | BF | 87 | 87 | BF | 87 | 87 | BF | ||
6 | BF | BF | BF | BF | BF | BF | BF | BF | BF | ||
7 | BF | BF | BF | BF | BF | BF | BF | BF | BF | ||
8 | BF | BF | BF | BF | BF | BF | BF | BF | BF | ||
9 | 70 | 75 | 75 | 70 | 75 | 75 | 70 | BF | BF | ||
A | 71 | BF | BF | 71 | BF | BF | 71 | BF | BF | ||
B | 72 | BF | BF | 72 | BF | BF | 72 | BF | BF | ||
C | 73 | 74 | 74 | 73 | 74 | 74 | 73 | 74 | 74 | ||
D | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | 85 | ||
E | 84 | 84 | 84 | 84 | 84 | 84 | 84 | 84 | 84 | ||
F | EF | EF | EF | EF | EF | EF | EF | EF | EF |
空間 | x | y | z | ← | x | y | z |
---|---|---|---|---|---|---|---|
0 | 10 | 10 | 12 | ワーク1 | ワーク1 | ワーク2 | |
1 | 10 | 10 | 12 | ||||
2 | 10 | 10 | 12 | ||||
3 | 10 | 10 | 12 | ||||
4 | 10 | 10 | 12 | ||||
5 | 10 | 10 | 12 | ||||
6 | 10 | 10 | 12 | ||||
7 | 10 | 10 | 12 | ||||
8 | 10 | 10 | 12 | ||||
9 | FF | 11 | 11 | P1 | ワーク3 | ワーク3 | |
A | FF | 11 | 11 | ||||
B | FF | 11 | 11 | ||||
C | FF | FF | FF | P2 | P2 |
メモリ識別情報は複数空間の間で同一メモリを管理するための情報で、共通領域コードと固定領域コードに大別されます。
共通領域は複数の空間で共用するメモリで、ワークRAMを割り当てて使用します。
メモリ管理ルーチンでは、空間ページの位置とメモリ識別情報(共通領域コード)が一致するものを同一メモリとみなし、メモリの割り当て/解放操作時に同じマップ・イメージを作成します。
固定領域は、あらかじめマップ・イメージが定められている領域で、メモリの割り当て/解放操作を行ってもマップ・イメージは変化しません(割り当て/解放は不可)。
メモリ識別情報は、空間の定義時に作成され、その後は変化しません。メモリ意識別情報の分類を参照してください。
また、全空間において$D〜$Fページは共通領域になっていて($D〜$Fページのマップ・イメージ参照)、マップ・イメージではすべて同一に、特定の実メモリと対応しており、空間の定義(マップ・イメージ、メモリ識別)は、0〜$Cページについてのみ可能です。
メモリ割り当ての実例)は3つの空間x,y,zのマップ・イメージ、メモリ識別の定義状態、メモリ割り当て、および解放によるマップ・イメージの変化を示したものです。
左の状態ではワーク1は、空間xとyの共通領域、ワーク3は空間yとzの共通領域、ワーク2は空間zでのワーク領域として定義してあります。
例えばここで、ワーク1に情報を書くために6ページのメモリが必要となり、左のマップ・イメージに対して、空間xの0〜5ページにメモリ割り当てシステム・コールにより、RAMメモリを割り当てたとします。
システム・コールは実メモリの未割り当てRAMより6ページ分を確保し、空間xの0〜5ページに割り当てを行いますが、この時空間yにも同一のメモリ識別情報($10)が定義されているため、空間yの0〜5ページにも同一のRAMを割り当てる事になります。
同様に空間yのワーク3(9〜$Bページ)のメモリを解放した場合、空間zにも同一のメモリ識別情報($11)が定義されているため空間zの9〜$Bページも同時にメモリ解放を行う事になります。
ここで$BFはメモリは割り当てがない事を示します。
コメントをかく