]> j8takagi.net git repositories - casl2lib.git/commitdiff
docディレクトリの除外ファイルを設定 main
authorj8takagi <j8takagi@nifty.com>
Thu, 16 Jul 2026 08:51:49 +0000 (17:51 +0900)
committerj8takagi <j8takagi@nifty.com>
Thu, 16 Jul 2026 08:51:49 +0000 (17:51 +0900)
.gitignore
doc/manual.d [deleted file]
doc/manual.html [deleted file]

index 5761abcfdf0c26a75374c945dfe366eaeee04285..0be961008479211c4c40695a601f6c3183a7a2a3 100644 (file)
@@ -1 +1,4 @@
 *.o
 *.o
+doc/*.d
+doc/*.html
+doc/*.pdf
diff --git a/doc/manual.d b/doc/manual.d
deleted file mode 100644 (file)
index 33e32d6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-manual.html manual_html manual.pdf manual.xml manual.info manual.txt manual.d: manual.texi
diff --git a/doc/manual.html b/doc/manual.html
deleted file mode 100644 (file)
index 779fbb1..0000000
+++ /dev/null
@@ -1,972 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!-- Created by GNU Texinfo 7.3, https://www.gnu.org/software/texinfo/ -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<!-- Copyright © 2010-2026 j8takagi -->
-<title>CASL2LIB - CASL II サブルーチンライブラリ</title>
-
-<meta name="description" content="CASL2LIB - CASL II サブルーチンライブラリ">
-<meta name="keywords" content="CASL2LIB - CASL II サブルーチンライブラリ">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
-<meta name="Generator" content="makeinfo">
-<meta name="viewport" content="width=device-width,initial-scale=1">
-
-<link href="#Top" rel="start" title="Top">
-<link href="#SEC_Contents" rel="contents" title="Table of Contents">
-<link href="#Overview" rel="next" title="Overview">
-<style type="text/css">
-a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
-div.example {margin-left: 3.2em}
-span:hover a.copiable-link {visibility: visible}
-ul.toc-numbered-mark {list-style: none}
-body {
-    margin-left: 7.5%;
-    margin-right: 15%;
-    color: black;
-    background-color: #EEE;
-    font-family: sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6 {
-    color: navy;
-    background-color: inherit;
-}
-
-h1, h2 {
-    margin-left: -5%;
-}
-
-.breadcrumbs {
-    padding-bottom: 1%;
-    margin-bottom: 2%;
-    border-bottom: 1px solid #ccc;
-    font-size: 90%;
-}
-
-.node{
-    margin-left: -7.5%;
-    color: inherit;
-    background-color: #DDF;
-}
-
-.menu, .node {
-    color: inherit;
-    background-color: #DDF;
-}
-
-table.menu, table.menu th, table.menu td {
-    border-style: none;
-}
-
-h2 {
-    padding: 0.5%;
-    border: 2px solid navy;
-}
-
-.contents, .mini-toc {
-    border: 4px double #DDF;
-    padding: 0.25% 0.5% 0.5% 2%;
-}
-
-.contents h2 {
-    margin-left: 0;
-    color: black;
-    background-color: #DDF;
-}
-
-.contents li {
-    list-style-type: none;
-}
-
-.shortcontents {
-    background-color: #DDF;
-    border: 4px double #000;
- }
-
-.shortcontents h2{
-    display: none;
-}
-
-h1.node-heading {
-    display: none;
-}
-
-h2.contents-heading{
-    display: none;
-}
-
-h2.shortcontents-heading{
-    display: none;
-}
-
-.shortcontents a {
-   margin-right: 0.25%;
-}
-
-h3, h4, h5 {
-    margin-left: -0.25%;
-}
-
-h5 {
-    font-size: 100%;
-}
-
-p {
-    line-height: 125%;
-    margin-top: 0;
-    margin-bottom: 0.5%;
-}
-
-a:hover {
-    color: red;
-    text-decoration: underline;
-}
-
-.example, pre.verbatim {
-    margin: 0.25% 0 0.25% 0;
-    padding: 0 0 0 2.5%;
-    border: 1px solid #CCC;
-}
-
-a {
-    text-decoration: none;
-}
-
-blockquote {
-    border: 1px solid #00F;
-}
-
-kbd, code, .file, var, kbd.kbd {
-    font-style: normal;
-    font-weight: normal;
-    font-family: monospace;
-    font-size: 110%;
-    margin-left:0.5%;
-}
-
-kbd.kbd {
-    font-style: normal;
-    font-weight: bold;
-    font-family: monospace;
-    font-size: 110%;
-    margin-left:0.25em;
-    margin-right: 0.25em;
-}
-
-table, th, td {
-    border: 1px solid black;
-    border-collapse: collapse; /* 枠線の表示方法 */
-    margin-bottom: 2.5%;
-}
-
-table.cartouche, table.cartouche th, table.cartouche td  {
-    border: none;
-}
-
-pre.example .command, pre.example .option, pre.example {
-    font-weight: bold;
-    font-family: monospace;
-    font-size: 110%;
-    background-color: inherit;
-    font-style: normal;
-    margin-left:0;
-    margin-right: 0;
-}
-
-pre.example strong {
-    font: inherit;
-    border: 2px solid green;
-}
-
-pre.example em {
-    font-size: 100%;
-    font-style: normal;
-    font-weight: bold;
-}
-
-th {
-    font-style: normal;
-    font-weight: bold;
-    font-family: sans-serif;
-    text-align: center;
-}
-
-dfn {
-    font-style: normal;
-}
-
-.header, .menu {
-    display: none;
-}
-
-em {
-    font-style: normal;
-    font-weight: bold;
-}
-
-hr {
-    display: none;
-}
-
-p.nav-panel {
-    border-top: 1px solid #ccc;
-    border-bottom: 1px solid #ccc;
-    margin-top: 2%;
-}
-
-</style>
-
-
-</head>
-
-<body>
-
-
-
-
-<div class="top-level-extent" id="Top">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Overview" rel="next">CASL2LIBの概要</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h1 class="top" id="CASL2LIB-_002d-CASL-II-_30b5_30d6_30eb_30fc_30c1_30f3_30e9_30a4_30d6_30e9_30ea"><span>CASL2LIB - CASL II サブルーチンライブラリ<a class="copiable-link" href="#CASL2LIB-_002d-CASL-II-_30b5_30d6_30eb_30fc_30c1_30f3_30e9_30a4_30d6_30e9_30ea"> &para;</a></span></h1>
-
-
-
-<div class="region-contents" id="SEC_Contents">
-<h2 class="contents-heading">Table of Contents</h2>
-
-<div class="contents">
-
-<ul class="toc-numbered-mark">
-  <li><a id="toc-CASL2LIB_306e_6982_8981" href="#Overview">1 CASL2LIBの概要</a></li>
-  <li><a id="toc-_547c_3073_51fa_3057_898f_7d04" href="#Calling-convention">2 呼び出し規約</a></li>
-  <li><a id="toc-_7b97_8853_6f14_7b97" href="#Arithmetic-subroutines">3 算術演算</a>
-  <ul class="toc-numbered-mark">
-    <li><a id="toc-ABS" href="#ABS">3.1 ABS</a></li>
-    <li><a id="toc-ADDL32" href="#ADDL32">3.2 ADDL32</a></li>
-    <li><a id="toc-MULA" href="#MULA">3.3 MULA</a></li>
-    <li><a id="toc-MULL" href="#MULL">3.4 MULL</a></li>
-    <li><a id="toc-DIVA" href="#DIVA">3.5 DIVA</a></li>
-    <li><a id="toc-DIVL" href="#DIVL">3.6 DIVL</a></li>
-  </ul></li>
-  <li><a id="toc-_6700_5927_5024_30fb_6700_5c0f_5024" href="#Comparison-subroutines">4 最大値・最小値</a>
-  <ul class="toc-numbered-mark">
-    <li><a id="toc-MAX" href="#MAX">4.1 MAX</a></li>
-    <li><a id="toc-MINIM" href="#MINIM">4.2 MINIM</a></li>
-  </ul></li>
-  <li><a id="toc-_6570_5024_3068_6587_5b57_5217_306e_5909_63db" href="#Conversion-subroutines">5 数値と文字列の変換</a>
-  <ul class="toc-numbered-mark">
-    <li><a id="toc-L2STR" href="#L2STR">5.1 L2STR</a></li>
-    <li><a id="toc-STR2L" href="#STR2L">5.2 STR2L</a></li>
-    <li><a id="toc-REV" href="#REV">5.3 REV</a></li>
-  </ul></li>
-  <li><a id="toc-_51fa_529b" href="#Output-subroutines">6 出力</a>
-  <ul class="toc-numbered-mark">
-    <li><a id="toc-OUTL" href="#OUTL">6.1 OUTL</a></li>
-    <li><a id="toc-OUTA" href="#OUTA">6.2 OUTA</a></li>
-    <li><a id="toc-OUTAQ15" href="#OUTAQ15">6.3 OUTAQ15</a></li>
-    <li><a id="toc-OUTLQ15" href="#OUTLQ15">6.4 OUTLQ15</a></li>
-    <li><a id="toc-OUTB" href="#OUTB">6.5 OUTB</a></li>
-    <li><a id="toc-OUTBW" href="#OUTBW">6.6 OUTBW</a></li>
-  </ul></li>
-  <li><a id="toc-_5165_529b" href="#Input-subroutines">7 入力</a>
-  <ul class="toc-numbered-mark">
-    <li><a id="toc-INL" href="#INL">7.1 INL</a></li>
-  </ul></li>
-  <li><a id="toc-_753b_50cf_51fa_529b_ff08PBM_ff09" href="#Image-subroutines">8 画像出力(PBM)</a>
-  <ul class="toc-numbered-mark">
-    <li><a id="toc-OUTPBM" href="#OUTPBM">8.1 OUTPBM</a></li>
-    <li><a id="toc-PBM16" href="#PBM16">8.2 PBM16</a></li>
-  </ul></li>
-  <li><a id="toc-_65e2_77e5_306e_554f_984c_30fb_8981_78ba_8a8d_4e8b_9805" href="#Known-issues">9 既知の問題・要確認事項</a></li>
-  <li><a id="toc-_8ffd_52a0_5019_88dc_ff08_8a2d_8a08_6b04_ff09" href="#Proposed-additions">10 追加候補(設計欄)</a>
-  <ul class="toc-numbered-mark">
-    <li><a id="toc-SUBL32" href="#SUBL32">10.1 SUBL32</a></li>
-    <li><a id="toc-CMPL" href="#CMPL">10.2 CMPL</a></li>
-    <li><a id="toc-NEGL" href="#NEGL">10.3 NEGL</a></li>
-    <li><a id="toc-STRLEN" href="#STRLEN">10.4 STRLEN</a></li>
-    <li><a id="toc-STRCPY" href="#STRCPY">10.5 STRCPY</a></li>
-    <li><a id="toc-STRCMP" href="#STRCMP">10.6 STRCMP</a></li>
-    <li><a id="toc-SQRT" href="#SQRT">10.7 SQRT</a></li>
-    <li><a id="toc-GCD" href="#GCD">10.8 GCD</a></li>
-  </ul></li>
-</ul>
-</div>
-</div>
-<hr>
-<div class="chapter-level-extent" id="Overview">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Calling-convention" rel="next">呼び出し規約</a></span></span>, <span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Top" rel="prev">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="CASL2LIB_306e_6982_8981"><span>1 CASL2LIBの概要<a class="copiable-link" href="#CASL2LIB_306e_6982_8981"> &para;</a></span></h2>
-
-<p>CASL2LIBは、CASL IIアセンブラ言語で記述されたサブルーチン
-(副プログラム)のライブラリです。
-YACASL2の<code class="command">casl2</code>に、呼び出し元のCASLファイルと
-あわせて指定することで、副プログラムとして呼び出せます。
-</p>
-<div class="example">
-<pre class="example-preformatted">$ casl2 addl_outl.casl casl2lib/outl.casl
-</pre></div>
-
-<p>このドキュメントは、<samp class="file">casl2lib.git</samp>リポジトリの<samp class="file">as/src</samp>
-ディレクトリにあるソースファイルのヘッダコメントをもとに、
-各サブルーチンの入出力仕様をまとめたものです。
-掲載内容はソースコードから直接確認したものですが、
-ソース側のコメントに誤りや実装との食い違いがある場合は、
-<a class="ref" href="#Known-issues">既知の問題・要確認事項</a>に記載しています。
-</p>
-<hr>
-</div>
-<div class="chapter-level-extent" id="Calling-convention">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Arithmetic-subroutines" rel="next">算術演算</a></span></span>, <span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Overview" rel="prev">CASL2LIBの概要</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="g_t_547c_3073_51fa_3057_898f_7d04"><span>2 呼び出し規約<a class="copiable-link" href="#g_t_547c_3073_51fa_3057_898f_7d04"> &para;</a></span></h2>
-
-<p>CASL2LIBのサブルーチンは、CASL IIの<code class="code">CALL</code>命令で呼び出します。
-多くのサブルーチンは、入力に使うレジスタ以外のレジスタを
-<code class="code">RPUSH</code>/<code class="code">RPOP</code>または個別の<code class="code">PUSH</code>/<code class="code">POP</code>で
-退避・復元しており、呼び出し元のレジスタの値を破壊しません。
-ただし、出力用のレジスタ(GR0やGR3など)は、退避・復元の対象外です。
-</p>
-<p>このドキュメントでは、各サブルーチンについて次の項目を記載します。
-</p>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>サブルーチンが行う処理
-</p>
-</dd>
-<dt>入力</dt>
-<dd><p>呼び出し前に設定するレジスタとその意味
-</p>
-</dd>
-<dt>出力</dt>
-<dd><p>呼び出し後に参照できるレジスタとその意味
-</p>
-</dd>
-<dt>依存サブルーチン</dt>
-<dd><p>内部で<code class="code">CALL</code>している、CASL2LIB内の他のサブルーチン
-</p>
-</dd>
-<dt>注意</dt>
-<dd><p>オーバーフローの条件や、値の範囲などの制約
-</p></dd>
-</dl>
-
-<hr>
-</div>
-<div class="chapter-level-extent" id="Arithmetic-subroutines">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Comparison-subroutines" rel="next">最大値・最小値</a></span></span>, <span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Calling-convention" rel="prev">呼び出し規約</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="g_t_7b97_8853_6f14_7b97"><span>3 算術演算<a class="copiable-link" href="#g_t_7b97_8853_6f14_7b97"> &para;</a></span></h2>
-
-<div class="section-level-extent" id="ABS">
-<h3 class="section"><span>3.1 ABS<a class="copiable-link" href="#ABS"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>GR1を符号付き整数とみなし、絶対値に変換する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: -32768から32767の整数
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR1: 入力された整数の絶対値
-</p></dd>
-<dt>注意</dt>
-<dd><p>入力が-32768の場合、絶対値は表現できないためOF(オーバーフロー)フラグが1になる。
-入力が負数(-32767〜-1)の場合、SFフラグが1になる。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="ADDL32">
-<h3 class="section"><span>3.2 ADDL32<a class="copiable-link" href="#ADDL32"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>連続する2語(32ビット)で表現された2つの値を加算する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 数値1の先頭アドレス <br>
-GR2: 数値2の先頭アドレス
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR0: 和を格納した領域(内部変数A、2語)の先頭アドレス
-</p></dd>
-<dt>注意</dt>
-<dd><p>最上位語で桁あふれが発生した場合、強制的にオーバーフローを発生させる。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="MULA">
-<h3 class="section"><span>3.3 MULA<a class="copiable-link" href="#MULA"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>-32767から32767の範囲にある符号付き整数どうしの乗算を、筆算方式で行う。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 被乗数 <br>
-GR2: 乗数
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR0: 積
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>ABS, MULL
-</p></dd>
-<dt>注意</dt>
-<dd><p>被乗数または乗数が-32768の場合はオーバーフロー。
-積が-32767未満または32767より大きい場合、GR0には積の下位16ビットが入り、オーバーフロー。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="MULL">
-<h3 class="section"><span>3.4 MULL<a class="copiable-link" href="#MULL"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>0から65535の範囲にある符号なし整数どうしの乗算を、筆算方式で行う。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 被乗数 <br>
-GR2: 乗数
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR3: 積
-</p></dd>
-<dt>注意</dt>
-<dd><p>積が65535より大きい場合はオーバーフロー。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="DIVA">
-<h3 class="section"><span>3.5 DIVA<a class="copiable-link" href="#DIVA"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>符号付き整数の除算を筆算方式で行う。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 被除数 <br>
-GR2: 除数
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR0: 商 <br>
-GR3: 剰余
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>ABS, DIVL
-</p></dd>
-<dt>注意</dt>
-<dd><p>GR1が-32768、GR2が-32768、またはGR2が0の場合はオーバーフロー。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="DIVL">
-<h3 class="section"><span>3.6 DIVL<a class="copiable-link" href="#DIVL"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>0から65535の範囲にある符号なし整数の除算を筆算方式で行う。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 被除数 <br>
-GR2: 除数
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR0: 商 <br>
-GR3: 剰余
-</p></dd>
-<dt>注意</dt>
-<dd><p>GR2が0の場合、GR0・GR3ともに0になり、オーバーフロー。
-</p></dd>
-</dl>
-
-<hr>
-</div>
-</div>
-<div class="chapter-level-extent" id="Comparison-subroutines">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Conversion-subroutines" rel="next">数値と文字列の変換</a></span></span>, <span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Arithmetic-subroutines" rel="prev">算術演算</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="g_t_6700_5927_5024_30fb_6700_5c0f_5024"><span>4 最大値・最小値<a class="copiable-link" href="#g_t_6700_5927_5024_30fb_6700_5c0f_5024"> &para;</a></span></h2>
-
-<div class="section-level-extent" id="MAX">
-<h3 class="section"><span>4.1 MAX<a class="copiable-link" href="#MAX"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>連続する複数のWORDを符号付き整数とみなし、最大値を返す。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: WORD値を格納したアドレス <br>
-GR2: 値の個数
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR0: 最大値
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="MINIM">
-<h3 class="section"><span>4.2 MINIM<a class="copiable-link" href="#MINIM"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>連続する複数のWORDを符号付き整数とみなし、最小値を返す。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: WORD値を格納したアドレス <br>
-GR2: 値の個数
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR0: 最小値
-</p></dd>
-</dl>
-
-<hr>
-</div>
-</div>
-<div class="chapter-level-extent" id="Conversion-subroutines">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Output-subroutines" rel="next">出力</a></span></span>, <span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Comparison-subroutines" rel="prev">最大値・最小値</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="g_t_6570_5024_3068_6587_5b57_5217_306e_5909_63db"><span>5 数値と文字列の変換<a class="copiable-link" href="#g_t_6570_5024_3068_6587_5b57_5217_306e_5909_63db"> &para;</a></span></h2>
-
-<div class="section-level-extent" id="L2STR">
-<h3 class="section"><span>5.1 L2STR<a class="copiable-link" href="#L2STR"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>符号なし整数を10進数の文字列に変換する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 符号なし整数 <br>
-GR2: 変換した文字列を格納するメモリーの先頭アドレス
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR0: 文字列の長さ <br>
-GR2の指すメモリー領域: 変換された文字列
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>DIVL, REV
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="STR2L">
-<h3 class="section"><span>5.2 STR2L<a class="copiable-link" href="#STR2L"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>10進数の整数を表す文字列を数値に変換する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 文字列を格納するメモリーの先頭アドレス <br>
-GR2: 文字列の長さ(最大5けた)
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR3: 数値(範囲は0から65535)
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>MULL
-</p></dd>
-<dt>注意</dt>
-<dd><p>文字列が最大長(5けた)より大きい場合、または数字以外の文字を含む場合は、
-GR3は<code class="code">#FFFF</code>、OFフラグが1になる。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="REV">
-<h3 class="section"><span>5.3 REV<a class="copiable-link" href="#REV"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>メモリー上の指定されたアドレス・長さの文字列を、逆順に並べ替える。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 文字列のアドレス <br>
-GR2: 文字列の長さ
-</p></dd>
-<dt>出力</dt>
-<dd><p>(入力と同一のアドレスに、逆順の文字列を上書き)
-</p></dd>
-</dl>
-
-<hr>
-</div>
-</div>
-<div class="chapter-level-extent" id="Output-subroutines">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Input-subroutines" rel="next">入力</a></span></span>, <span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Conversion-subroutines" rel="prev">数値と文字列の変換</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="g_t_51fa_529b"><span>6 出力<a class="copiable-link" href="#g_t_51fa_529b"> &para;</a></span></h2>
-
-<div class="section-level-extent" id="OUTL">
-<h3 class="section"><span>6.1 OUTL<a class="copiable-link" href="#OUTL"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>GR1に格納された値を、10進数の整数値(0〜65535)として画面に出力する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 出力する値
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>DIVL, REV
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="OUTA">
-<h3 class="section"><span>6.2 OUTA<a class="copiable-link" href="#OUTA"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>GR1に格納された値を、10進数の符号付き整数値(-32768〜32767)として画面に出力する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 出力する値
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>ABS, DIVL, REV
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="OUTAQ15">
-<h3 class="section"><span>6.3 OUTAQ15<a class="copiable-link" href="#OUTAQ15"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>GR1に格納された値をQ15形式(符号付き固定小数点)とみなし、10進数の小数値として画面に出力する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: Q15形式の値
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>ABS, MULL
-</p></dd>
-<dt>注意</dt>
-<dd><p>GR1が<code class="code">#8000</code>(-1.0に相当)の場合は特別に「-1」を出力する。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="OUTLQ15">
-<h3 class="section"><span>6.4 OUTLQ15<a class="copiable-link" href="#OUTLQ15"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>GR1に格納された値をQ15形式(符号なし固定小数点)とみなし、10進数の小数値として画面に出力する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: Q15形式の値
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>MULL
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="OUTB">
-<h3 class="section"><span>6.5 OUTB<a class="copiable-link" href="#OUTB"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>GR1に格納された値を、2進数値として画面に出力する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 出力する値
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>DIVL, REV
-</p></dd>
-<dt>注意</dt>
-<dd><p>16けたに満たない上位けたは「0」で埋める。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="OUTBW">
-<h3 class="section"><span>6.6 OUTBW<a class="copiable-link" href="#OUTBW"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>GR1に格納された値を、4ビットごとに空白区切りをつけた2進数値として画面に出力する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 出力する値
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>DIVL, REV
-</p></dd>
-</dl>
-
-<hr>
-</div>
-</div>
-<div class="chapter-level-extent" id="Input-subroutines">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Image-subroutines" rel="next">画像出力(PBM)</a></span></span>, <span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Output-subroutines" rel="prev">出力</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="g_t_5165_529b"><span>7 入力<a class="copiable-link" href="#g_t_5165_529b"> &para;</a></span></h2>
-
-<div class="section-level-extent" id="INL">
-<h3 class="section"><span>7.1 INL<a class="copiable-link" href="#INL"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>0から65535の範囲にある整数の入力を、キーボードなどから受け付ける。
-</p></dd>
-<dt>入力</dt>
-<dd><p>(<code class="code">IN</code>命令による標準入力)
-</p></dd>
-<dt>出力</dt>
-<dd><p>GR1: 入力された数値 <br>
-GR2: 入力された文字列の長さ
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>STR2L
-</p></dd>
-<dt>注意</dt>
-<dd><p>入力が数字以外の場合はSFフラグが1になる。
-65535を超える数値の場合はOFフラグが1になる。
-最大5けたまでの入力に対応。
-</p></dd>
-</dl>
-
-<hr>
-</div>
-</div>
-<div class="chapter-level-extent" id="Image-subroutines">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Known-issues" rel="next">既知の問題・要確認事項</a></span></span>, <span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Input-subroutines" rel="prev">入力</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="g_t_753b_50cf_51fa_529b_ff08PBM_ff09"><span>8 画像出力(PBM)<a class="copiable-link" href="#g_t_753b_50cf_51fa_529b_ff08PBM_ff09"> &para;</a></span></h2>
-
-<div class="section-level-extent" id="OUTPBM">
-<h3 class="section"><span>8.1 OUTPBM<a class="copiable-link" href="#OUTPBM"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>PBM形式(モノクロ画像、P1形式)の画像ファイルのヘッダーを出力する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 画像ビット列の先頭アドレス <br>
-GR2: 画像の幅 <br>
-GR3: 画像の高さ
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>L2STR
-</p></dd>
-<dt>注意</dt>
-<dd><p><a class="ref" href="#Known-issues">既知の問題・要確認事項</a>を参照。画素データを出力する部分がソース上で
-確認できておらず、ヘッダー(幅・高さ)の出力のみを行っている可能性があります。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="PBM16">
-<h3 class="section"><span>8.2 PBM16<a class="copiable-link" href="#PBM16"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要</dt>
-<dd><p>GR1で指定されたアドレス以降のメモリーを16×16の白黒ビットマップ画像データ
-(白:0 黒:1)とみなし、PBM画像ファイルとして出力する。
-</p></dd>
-<dt>入力</dt>
-<dd><p>GR1: 画像データの先頭アドレス(1語につき1画素、下位1ビットで白黒を判定)
-</p></dd>
-<dt>依存サブルーチン</dt>
-<dd><p>OUTB
-</p></dd>
-</dl>
-
-<hr>
-</div>
-</div>
-<div class="chapter-level-extent" id="Known-issues">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Next: </span><span class="nav-link"><a href="#Proposed-additions" rel="next">追加候補(設計欄)</a></span></span>, <span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Image-subroutines" rel="prev">画像出力(PBM)</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="g_t_65e2_77e5_306e_554f_984c_30fb_8981_78ba_8a8d_4e8b_9805"><span>9 既知の問題・要確認事項<a class="copiable-link" href="#g_t_65e2_77e5_306e_554f_984c_30fb_8981_78ba_8a8d_4e8b_9805"> &para;</a></span></h2>
-
-<p>このドキュメントを作成するにあたりソースを確認したところ、
-既存のYACASL2マニュアル(<code class="code">yacasl2.info</code>)の記載や、
-ソース内のコメントと実装の間に、次のような食い違いが見つかりました。
-独立ドキュメント化の際にあわせて修正するかどうか、確認をお願いします。
-</p>
-<dl class="table">
-<dt>DIVLの出力レジスタ</dt>
-<dd><p>現行のYACASL2マニュアル 2.8節には「商をGR3、剰余をGR0に格納」とありますが、
-実際のソース(<samp class="file">divl.casl</samp>)のヘッダコメントおよび実装は逆で、
-<strong class="strong">商がGR0、剰余がGR3</strong>です。OUTL/OUTA/OUTB/OUTBWなど、
-DIVLを呼び出す他のサブルーチンはいずれも「商をGR0、剰余をGR3」という
-前提で実装されているため、マニュアル側の記載ミスの可能性が高いです。
-</p>
-</dd>
-<dt>mull0.caslの内容</dt>
-<dd><p><samp class="file">mull0.casl</samp>のヘッダコメントには「入力 GR0:被乗数 GR1:乗数」
-とありますが、実装本体はGR0を一切使用せず、GR1(被乗数)とGR2(乗数)
-を使っています。<samp class="file">mull.casl</samp>と機能・アルゴリズムがほぼ同じであり、
-開発中の実験版が残っているか、削除漏れの可能性があります。
-</p>
-</dd>
-<dt>outpbm.caslの完全性</dt>
-<dd><p><samp class="file">outpbm.casl</samp>は、ヘッダー(<code class="code">P1</code>、幅、高さ)を出力する
-部分までは確認できましたが、END文が見当たらず、画素データ本体を
-出力する処理が見当たりませんでした。ファイルが不完全か、
-画素データの出力は呼び出し側プログラムの責務としている可能性があります。
-</p></dd>
-</dl>
-
-<hr>
-</div>
-<div class="chapter-level-extent" id="Proposed-additions">
-<p class="nav-panel">
-<span class="nav-button"><span class="nav-label">Previous: </span><span class="nav-link"><a href="#Known-issues" rel="prev">既知の問題・要確認事項</a></span></span>, <span class="nav-button"><span class="nav-label">Up: </span><span class="nav-link"><a href="#Top" rel="up">CASL2LIB - CASL II サブルーチンライブラリ</a></span></span><span class="nav-button"> &nbsp; </span><span class="nav-button">[<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</span></p>
-<h2 class="chapter" id="g_t_8ffd_52a0_5019_88dc_ff08_8a2d_8a08_6b04_ff09"><span>10 追加候補(設計欄)<a class="copiable-link" href="#g_t_8ffd_52a0_5019_88dc_ff08_8a2d_8a08_6b04_ff09"> &para;</a></span></h2>
-
-<p>以下は、既存のサブルーチンとの対称性や、CASL II教材としての
-利用実績をもとに提案する追加候補です。まだ実装されていません。
-入出力レジスタの案は、既存の命名規則・呼び出し規約に合わせています。
-</p>
-<div class="section-level-extent" id="SUBL32">
-<h3 class="section"><span>10.1 SUBL32<a class="copiable-link" href="#SUBL32"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要(案)</dt>
-<dd><p>連続する2語(32ビット)で表現された2つの値を減算する。ADDL32との対称。
-</p></dd>
-<dt>入力(案)</dt>
-<dd><p>GR1: 被減数の先頭アドレス <br>
-GR2: 減数の先頭アドレス
-</p></dd>
-<dt>出力(案)</dt>
-<dd><p>GR0: 差を格納した領域の先頭アドレス
-</p></dd>
-<dt>実装方針</dt>
-<dd><p>ADDL32と同様に、下位語から借り(ボロー)を伝搬しながら2語分を処理する。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="CMPL">
-<h3 class="section"><span>10.2 CMPL<a class="copiable-link" href="#CMPL"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要(案)</dt>
-<dd><p>連続する2語(32ビット)で表現された2つの値を、符号なし整数として比較する。
-</p></dd>
-<dt>入力(案)</dt>
-<dd><p>GR1: 値1の先頭アドレス <br>
-GR2: 値2の先頭アドレス
-</p></dd>
-<dt>出力(案)</dt>
-<dd><p>FR(フラグレジスタ): 上位語→下位語の順に比較し、CPL相当の結果を設定
-</p></dd>
-<dt>実装方針</dt>
-<dd><p>上位語をCPLで比較し、等しい場合のみ下位語をCPLで比較する。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="NEGL">
-<h3 class="section"><span>10.3 NEGL<a class="copiable-link" href="#NEGL"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要(案)</dt>
-<dd><p>連続する2語(32ビット)の値を、2の補数で符号反転する。
-</p></dd>
-<dt>入力(案)</dt>
-<dd><p>GR1: 値の先頭アドレス
-</p></dd>
-<dt>出力(案)</dt>
-<dd><p>GR0: 符号反転した値を格納した領域の先頭アドレス
-</p></dd>
-<dt>実装方針</dt>
-<dd><p>全ビット反転後、下位語に1を加算し、桁上がりを上位語に伝搬する
-(SUBL32を実装後は、0からのSUBL32として実現することも可能)。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="STRLEN">
-<h3 class="section"><span>10.4 STRLEN<a class="copiable-link" href="#STRLEN"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要(案)</dt>
-<dd><p>文字列の長さを取得する。
-</p></dd>
-<dt>入力(案)</dt>
-<dd><p>GR1: 文字列の先頭アドレス <br>
-GR2: 終端文字(省略時は呼び出し側で長さを明示する方式との整理が必要)
-</p></dd>
-<dt>出力(案)</dt>
-<dd><p>GR0: 文字列の長さ
-</p></dd>
-<dt>検討事項</dt>
-<dd><p>CASL IIには終端文字による可変長文字列の慣習がないため、
-「終端文字方式」と「長さ明示方式」のどちらに合わせるか、
-既存のREV/L2STR/STR2Lとの一貫性を踏まえて設計する必要があります。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="STRCPY">
-<h3 class="section"><span>10.5 STRCPY<a class="copiable-link" href="#STRCPY"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要(案)</dt>
-<dd><p>文字列をコピーする。
-</p></dd>
-<dt>入力(案)</dt>
-<dd><p>GR1: コピー元の先頭アドレス <br>
-GR2: コピー先の先頭アドレス <br>
-GR3: 文字列の長さ
-</p></dd>
-<dt>出力(案)</dt>
-<dd><p>(GR2の指す領域にコピー結果)
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="STRCMP">
-<h3 class="section"><span>10.6 STRCMP<a class="copiable-link" href="#STRCMP"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要(案)</dt>
-<dd><p>2つの文字列を比較する。
-</p></dd>
-<dt>入力(案)</dt>
-<dd><p>GR1: 文字列1の先頭アドレス <br>
-GR2: 文字列2の先頭アドレス <br>
-GR3: 比較する長さ
-</p></dd>
-<dt>出力(案)</dt>
-<dd><p>GR0: 一致した場合0、不一致の場合、最初に異なった文字の位置(1から)
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="SQRT">
-<h3 class="section"><span>10.7 SQRT<a class="copiable-link" href="#SQRT"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要(案)</dt>
-<dd><p>0から65535の範囲にある整数の平方根(整数部)を求める。
-</p></dd>
-<dt>入力(案)</dt>
-<dd><p>GR1: 値
-</p></dd>
-<dt>出力(案)</dt>
-<dd><p>GR0: 平方根の整数部
-</p></dd>
-<dt>実装方針</dt>
-<dd><p>二分探索、またはニュートン法で実装する。教材としては二分探索の方が
-CASL II向けの説明がしやすい。
-</p></dd>
-</dl>
-
-</div>
-<div class="section-level-extent" id="GCD">
-<h3 class="section"><span>10.8 GCD<a class="copiable-link" href="#GCD"> &para;</a></span></h3>
-<dl class="table">
-<dt>概要(案)</dt>
-<dd><p>2つの整数の最大公約数を求める(ユークリッドの互除法)。
-</p></dd>
-<dt>入力(案)</dt>
-<dd><p>GR1: 値1 <br>
-GR2: 値2
-</p></dd>
-<dt>出力(案)</dt>
-<dd><p>GR0: 最大公約数
-</p></dd>
-<dt>依存サブルーチン(案)</dt>
-<dd><p>DIVL
-</p></dd>
-</dl>
-
-</div>
-</div>
-</div>
-
-
-
-</body>
-</html>