10 時半起床.
倦怠感が強く, 起きられなかった.
このだるさは鬱というよりも暑さによるものかもしれない.
水を飲んで楽になるまで横になってからら起き上がる.
洗濯をして買い物に行く.
昼前で暑さはひどいが, 天気予報では午後から猛暑になると言っていたので, この時間にスーパーに行った.
帰宅してから少し鬱と無気力が苦しくなる.
鬱はまだ軽いが無気力が辛い.
頓服を飲んだら, 効き目が気分ではなく眠気として出てしまったようで小一時間寝る.
何もする気にならないが, 読書と数学をやった.
無気力が苦しいのは, 考える力が衰えるからで, 本の文章がスムーズに読めない.
何度も同じところを読み返す.
しかしそのうちに多少頭が働くようになった.
少しでも本を読むことを行って良かった.
数学では, これまで少しづつ考えてきたことをまとめられば証明の核になるところを完成させられそうな気がしたので, ノートに整理をした.
とりあえず大雑把な議論のまま進めた部分何箇所かに, ちゃんとした証明を付ける.
一箇所引っ掛かるところが残ってしまう. 大切な部分なのだが頭が疲れてしまって考え抜くことができなかった.
また考える.
2018年07月21日
HP-42S: END 命令
HP-42S のプログラムはメモリー空間 (全体で 8 MB) の中に取られたプログラムメモリー空間に保存される.
保存されたプログラムは互いに END 命令 "$\mathrm{END}$" によって区切られている.
プログラムメモリー空間の最後に置かれたプログラムだけは, 永久 END (permanent END) と呼ばれる命令で終了している. 永久 END はプログラム上では $\mathrm{.END.}$ と記述される.
プログラムの作成の説明で, 最初に
\begin{equation*}
\newcommand{\Ar}[1]{\mathrm{Ar}(#1)}
\newcommand{\ar}{\mathrm{ar}}
\newcommand{\arop}{\Opp{\mathrm{ar}}}
\newcommand{\Colim}{\mathrm{colim}}
\newcommand{\CommaCat}[2]{(#1 \downarrow #2)}
\newcommand{\Func}[2]{\mathrm{Func}(#1,#2)}
\newcommand{\Hom}{\mathrm{Hom}}
\newcommand{\Id}[1]{\mathrm{id}_{#1}}
\newcommand{\Mb}[1]{\mathbf{#1}}
\newcommand{\Mr}[1]{\mathrm{#1}}
\newcommand{\Ms}[1]{\mathscr{#1}}
\newcommand{\Nat}{\mathrm{Nat}}
\newcommand{\Ob}[1]{\mathrm{Ob}(#1)}
\newcommand{\Opp}[1]{{#1}^{\mathrm{op}}}
\newcommand{\Pos}{\mathbf{Pos}}
\newcommand{\q}{\hspace{1em}}
\newcommand{\qq}{\hspace{0.5em}}
\newcommand{\Rest}[2]{{#1}|{#2}}
\newcommand{\Sub}{\mathrm{Sub}}
\newcommand{\Src}{d^{0,\mathrm{op}}}
\newcommand{\Tgt}{d^{1,\mathrm{op}}}
\Mr{GTO} \bullet \bullet
\end{equation*} を実行して「新規のプログラム空間に移る」という操作を行う必要があった.
この操作は内部では次のような処理を行っている.
(1) プログラムメモリーの最後にあるプログラムの後ろに $\Mr{END}$ を付ける.
マニュアルに明記はしていないが, 最後にあるプログラムの最終行には永久 END: $\mathrm{.END.}$ が置かれている筈なので, これを普通の $\Mr{END}$ によって置き換えているということだろうか.
(2) プログラムポインターがプログラムメモリーの最下部にある新規プログラム空間に移る.
(3) プログラムポインターの指し示す先にはヌルプログラム
\begin{align*}
& 00 \blacktriangleright \left\{\, 0\text{-Byte Prgm} \,\right\} \\
& 01 \q .\Mr{END}.
\end{align*} が置かれる (ヌルプログラムは永久 END で終了している).
マニュアルにはプログラムメモリーの図が載っている.
実際には, プログラムメモリーに保存したプログラムを削除するということも行う.
この図には現れていないが, 削除したプログラムの部分がメモリー上の空き領域となって残る筈である.
メモリー管理の仕組みはどのようになっているのだろう.
なお, 永久 END はユーザー操作では削除することができない.
保存されたプログラムは互いに END 命令 "$\mathrm{END}$" によって区切られている.
プログラムメモリー空間の最後に置かれたプログラムだけは, 永久 END (permanent END) と呼ばれる命令で終了している. 永久 END はプログラム上では $\mathrm{.END.}$ と記述される.
プログラムの作成の説明で, 最初に
\begin{equation*}
\newcommand{\Ar}[1]{\mathrm{Ar}(#1)}
\newcommand{\ar}{\mathrm{ar}}
\newcommand{\arop}{\Opp{\mathrm{ar}}}
\newcommand{\Colim}{\mathrm{colim}}
\newcommand{\CommaCat}[2]{(#1 \downarrow #2)}
\newcommand{\Func}[2]{\mathrm{Func}(#1,#2)}
\newcommand{\Hom}{\mathrm{Hom}}
\newcommand{\Id}[1]{\mathrm{id}_{#1}}
\newcommand{\Mb}[1]{\mathbf{#1}}
\newcommand{\Mr}[1]{\mathrm{#1}}
\newcommand{\Ms}[1]{\mathscr{#1}}
\newcommand{\Nat}{\mathrm{Nat}}
\newcommand{\Ob}[1]{\mathrm{Ob}(#1)}
\newcommand{\Opp}[1]{{#1}^{\mathrm{op}}}
\newcommand{\Pos}{\mathbf{Pos}}
\newcommand{\q}{\hspace{1em}}
\newcommand{\qq}{\hspace{0.5em}}
\newcommand{\Rest}[2]{{#1}|{#2}}
\newcommand{\Sub}{\mathrm{Sub}}
\newcommand{\Src}{d^{0,\mathrm{op}}}
\newcommand{\Tgt}{d^{1,\mathrm{op}}}
\Mr{GTO} \bullet \bullet
\end{equation*} を実行して「新規のプログラム空間に移る」という操作を行う必要があった.
この操作は内部では次のような処理を行っている.
(1) プログラムメモリーの最後にあるプログラムの後ろに $\Mr{END}$ を付ける.
マニュアルに明記はしていないが, 最後にあるプログラムの最終行には永久 END: $\mathrm{.END.}$ が置かれている筈なので, これを普通の $\Mr{END}$ によって置き換えているということだろうか.
(2) プログラムポインターがプログラムメモリーの最下部にある新規プログラム空間に移る.
(3) プログラムポインターの指し示す先にはヌルプログラム
\begin{align*}
& 00 \blacktriangleright \left\{\, 0\text{-Byte Prgm} \,\right\} \\
& 01 \q .\Mr{END}.
\end{align*} が置かれる (ヌルプログラムは永久 END で終了している).
マニュアルにはプログラムメモリーの図が載っている.
実際には, プログラムメモリーに保存したプログラムを削除するということも行う.
この図には現れていないが, 削除したプログラムの部分がメモリー上の空き領域となって残る筈である.
メモリー管理の仕組みはどのようになっているのだろう.
なお, 永久 END はユーザー操作では削除することができない.