SSブログ
English Version

レトロマイコン86ボードの構想(その14)untarの製作 [8086]

 今日(2019/10/12 土曜日)の夕方から明日にかけて関東を直撃するおそれがある過去最強クラスとも言われている台風19号のため、JRは全面運休を予定していて、昨日夕方に近くのスーパーマーケットに行ったらレジが長蛇の行列でパンやカップ麺類が殆ど無い状態でした。
 危険なので緊急以外の外出をしないように政府見解もでているので今日はパソコンの前に座っています(いつものことだけどw)

 「レトロマイコン86ボードの構想(その11)xmodemの移植」の記事で書いたように自作のV20ボードで動くCP/M-86上でxmodemが動くようになり、パソコンとのファイル送受信が簡単にできるようになりました。

 kuninetさんが書かれた「KZ80シリーズ、SBC8080 8085でCP M」の最後の方で拙作のxmodemを紹介して頂いていて、ここでは同時にCP/M-80用のunzipも紹介されています。パソコン側のGUI操作で複数ファイルのアーカイブを作り、xmodemでCP/Mへ転送する環境は確かに便利です。

 そこでCP/M-86用のunzipを探してみましたが見つかりませんでした・・・
 パソコンで使用している圧縮/解凍ソフトである7-zipの圧縮ファイル作成時の設定ウィンドを見ていたらなんとtarに対応していました^^

7-zipの圧縮ファイル作成時の設定ウィンド

★追記 2020/12/23
 Windows10自体もtarに対応していました。

コマンドラインでtarコマンド


 そこでCP/M-86用のtarファイルを解凍するuntarを作ってみました。
 tarは古くからあるツールで、tarファイルの構造は単純なので解凍ツールの作成は割合簡単です。

 tarファイルのフォーマットについてはネット上に豊富に情報があり「tar の構造」等を参考にさせて頂きました。

 制作したuntarの操作ログのサンプルを貼っておきます。

untar操作ログ
J>a:xmodem aztec.tar /r /p aztec.tar (PUN/RDR) received 60 block(s). J>a:stat *.* Drive J: User : 0 Recs Bytes FCBs Attributes Name 60 8k 1 Dir RW J:AZTEC .TAR ---------------------------------------------- Total: 8k 1 J: RW, Free Space: 1,936k J>a:untar usage : untar [/l /e] FileName /l : display file list /e : extract all files Ver 0.01 2019/10/11 by skyriver J>a:untar /l aztec aztec.tar CTYPE.H 638 bytes FCNTL.H 211 bytes LIBC.H 1222 bytes STDIO.H 1306 bytes J>a:untar /e aztec aztec.tar CTYPE.H 638 bytes created FCNTL.H 211 bytes created LIBC.H 1222 bytes created STDIO.H 1306 bytes created J>a:stat *.* Drive J: User : 0 Recs Bytes FCBs Attributes Name 60 8k 1 Dir RW J:AZTEC .TAR 5 2k 1 Dir RW J:CTYPE .H 2 2k 1 Dir RW J:FCNTL .H 10 2k 1 Dir RW J:LIBC .H 11 2k 1 Dir RW J:STDIO .H ---------------------------------------------- Total: 16k 5 J: RW, Free Space: 1,928k J>


 コンパイル時のログも貼っておきます。"-a"オプションで自動的にリンクまで行うようにしています。

B>drc -a untar
--------------------------------------------------
Digital Research C       04/17/84     Version 1.11
Serial No. 3073-0000-001282    All Rights Reserved
Copyright (c) 1983,1984     Digital Research, Inc.
--------------------------------------------------

Digital Research C  Version 1.11 -- Preprocessor

Digital Research C  Version 1.11 -- Code Gen
untar.c:         code:  1541 static:   235 extern:   694

--------------------------------------------------
LINK-86 Linkage Editor  19 March 1984  Version 1.4
Serial No. 3073-0000-001282    All Rights Reserved
Copyright (C) 1982-1984     Digital Research, Inc.
--------------------------------------------------

CODE    06186
DATA    011A1

USE FACTOR:  18%

B>


 最後に、今回作成したuntarプログラムは下記のリンクからダウンロードできます。
 ※商用目的以外であれば自由に使用可能

UNTAR_CPM86_V005.zip

・2021/01/04 Ver 0.05
 Win10のtarコマンド等のヘッダ内サイズデータのデリミタが20Hの場合に対応
・2019/10/24 Ver0.04
 ファイルエンドの処理を修正
・2019/10/18 Ver0.03a
 Aztec C 8086 Ver3.20d でコンパイル(File size was turned to 10KB from 30KB)
・2019/10/16 Ver0.03
 ファイルリスト表示を高速化
・2019/10/13 Ver0.02
 "/l"オプションを廃止し、リスト表示をディフォルトとした
・2019/10/12 Ver0.01a
 ファイルサイズが128の倍数の場合の処理を改善


[TOP] [ 前へ ] 連載記事 [ 次へ ]

nice!(0)  コメント(1) 

nice! 0

コメント 1

skyriver

 untarでファイルリスト表示時にfseekを使用し、表示速度を高速化しました(ver0.03)
 fseekはヘッダファイル内では宣言されていない(低レベルファイルI/O用のlseek()はstdio.hで宣言されていた)のですが、使ってみたらリンクできました。
 その後、DRC-PGM.TXTを確認して見たらちゃんと載っていた。

by skyriver (2019-10-16 19:35) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。