CP/Mプログラミング三昧2018年09月22日 09:20

自作CP/MマシンTRN-8が快調に動くようになり、この所TRN-8にどっぷりとはまっている。 過去に作成したファイルを収めたディスケットを調べてみると、保管状態が良くダメージを受けずに ファイルを取り出せた。その中にはトランジスタ技術 1984年8月から1985年7月に連載された 藤井敦氏の「CP/Mを使いこなすために 初心者のためのアセンブラ入門」に掲載されたプログラム集が あった。当時の記事の切り抜きも見つかった。

この連載では、

  • プログラムの開始、終了関連モジュール
  • コンソール入出力関連モジュール
  • 16ビット演算モジュール
  • ファイル入出力関連モジュール
  • 応用プログラム
などが紹介されている。

これらのモジュールを眺めてみると、結構よく使う機能を網羅しているが、 コマンドライン引数取得関連のモジュールがない。コマンドライン引数でオプションを プログラムに引き渡すことは日常上茶飯事に行うことなので、このモジュール"GETARG"を作成する事にした。

  • 引数は、ブランク、タブ、コンマで区切る。
  • ダブルクォート又はシングルクォートで始まる引数は、次に同一の文字が現れるまで一塊として取り扱う。
  • "\"に続く文字列はエスケーブシーケンスとして解釈する。現在のところ、\\(エスケーブ文字自身)、\t(タブ)、 \xHH(16進数)をサポートしている。
      例えば、echoコマンド。
                c>echo     one   "two  and three" and\tmore
      
      とすると
                ONE TWO  AND THREE AND  MORE
      
      と表示する。文字はCP/Mが大文字に変換してしまう。ターミナルプログラムがVT-100やANSIターミナルを サポートしていれば、画面のコントロールもできる。
                c>echo \x1b[2J
      
      とすれば、画面が消去される。また、
                c>echo \x1b[1;1H     (<===すみません。"H"が抜けていました。)
      
      とすれば、カーソルが1行目の1カラムに移動する。echoは、改行するため2行目にコマンドプロンプとが表示される。

      関連ファイルは、これです。ご興味のあるかたはご覧ください。

      getarg.zip (8,254Byte)
      
      使用したツールは、以下のとおり。
      • アセンブラ Z80ASM(SLR Systems)
      • ライブラリアン SLRIB(SLR Systems)
      • リンケージエディタ SLRNK(SLR Systems)
      それに、エディタはCP/M標準のEDである。

      プログラミングは面白い。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://kida.asablo.jp/blog/2018/09/22/8963495/tb