home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 3 / FREEWARE.BIN / ms_dos / dsort / dstdata.asm < prev    next >
Assembly Source File  |  1980-01-02  |  6KB  |  125 lines

  1.     page    96,132
  2. ;§∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞§
  3. ;§                                                                          §
  4. ;§              ディレクトリエントリ  ソート  ユーティリティ                §
  5. ;§                                                                          §
  6. ;§                                     DSORT.EXE  Ver1.11    §
  7. ;§                                                                          §
  8. ;§                   Copyright (C) by 福地 邦雄 1991. All rights reserved.  §
  9. ;§∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞§
  10.     .MODEL  SMALL,C
  11. ;
  12.     DPB struc
  13. drivenumber     db      ?       ;ドライブ番号
  14. unitnumber      db      ?       ;ユニット番号
  15. sectorlength    dw      ?       ;セクタ長
  16. sectorperalloc  db      ?       ;1クラスタ当たりのセクタ数-1
  17. shiftcount      db      ?       ;1クラスタ当たりのセクタ数の2のべき乗
  18. reservedsector  dw      ?       ;先頭のリザーブセクタ数
  19. numberoffat     db      ?       ;FAT数
  20. directoryentry  dw      ?       ;ルートディレクトリのエントリ数
  21. datastartsector dw      ?       ;データ領域開始セクタ番号
  22. datasector      dw      ?       ;最大クラスタ数(全クラスタ数+1)
  23. fatsector       db      ?       ;1FAT当たりのセクタ数
  24. directorystart  dw      ?       ;ディレクトリ領域開始セクタ番号
  25. todeviceheader  dd      ?       ;デバイスヘッダへのポインタ
  26. mediadescriptor db      ?       ;メディアディスクリプタ
  27. diskchange      db      ?       ;ディスクの交換可能属性
  28. tonextdpb       dd      ?       ;次のDPBへのポインタ
  29. currentcluster  dw      ?       ;カレントクラスタ
  30. reserved        dw      ?       ;リザーブ
  31.     DPB ends
  32. ;
  33. YES     equ 1
  34. NO      equ 0
  35. HEAD    equ 0
  36. BS      equ 8
  37. TAB     equ 9
  38. CR      equ 0dh
  39. LF      equ 0ah
  40. ;
  41.     .data
  42. ;
  43.     public  sweep,  sortexec,recursive,dirgather,subsearch
  44.     public  dta,    srchname,namebuff,namebuffsiz
  45.     public  dirtype,fattype,attribute,clustcount,clustsect,entrycount
  46.     public  fatdrive,driveno,clustsize,fatsize,dirsize,sectcount
  47.     public  fatbuff,dirbuff,sortbuff,sortcount,drvinf,movecount,adjustroot
  48.     public  sortfuncs,subchain,wildcard,pathbuff
  49.     public  usagemsg,msgsize,veralarm,vermsgsz
  50.     public  procs,dirover,fatover,bothmsg,sortmsg,movemsg,nothmsg
  51. ;
  52. sweep       dw  YES     ; ソート対象外のエントリを先頭に集める
  53. sortexec    dw  YES     ; ソートを行う
  54. recursive   dw  NO      ; サブディレクトリを再帰的に処理する
  55. dirgather   dw  HEAD    ; サブディレクトリを集める方向
  56. subsearch   dw  NO      ; 再帰処理内で '.','..'を含まないように判断
  57. attribute   dw  ?       ; ソート対象とするファイル属性を反転したもの
  58. ;
  59. dta         dd  ?       ; ディレクトリサーチ用Disk Transfer Address
  60. srchname    dd  ?       ; ディレクトリサーチ名
  61. namebuff    dd  ?       ; ディレクトリ名バッファ
  62. namebuffsiz dw  4096    ; ディレクトリ名バッファサイズ
  63. ;
  64. dirtype     dw  ?       ; ディレクトリタイプ  ルート:サブ
  65. fattype     dw  ?       ; FATタイプ  12bit:16bit
  66. clustsect   dw  ?       ; 1クラスタのセクタ数
  67. sectcount   label   word    ; ルートディレクトリのセクタ数
  68. clustcount  dw  ?       ; サブディレクトリのクラスタ数
  69. clustsize   dw  ?       ; 1クラスタのバイトサイズ
  70. entrycount  dw  ?       ; ディレクトリの最大エントリ数
  71. ;
  72. fatdrive    dw  -1      ; FATドライブ番号
  73. driveno     dw  -1      ; DPBドライブ番号
  74. fatsize     dw  ?       ; FATサイズ
  75. dirsize     dw  ?       ; ディレクトリサイズ
  76. fatbuff     dw  ?       ; FATバッファのセグメント
  77. dirbuff     dw  ?       ; ディレクトリバッファのセグメント
  78. sortbuff    dw  ?       ; ソートバッファのセグメント
  79. sortcount   dw  ?       ; ソート対象エントリ数
  80. movecount   dw  ?       ; 先頭詰め対象エントリ数
  81. ;
  82. drvinf      DPB <>      ; DPBのコピー
  83. ;
  84. adjustroot  dw  ?       ; ルートエントリ数を実エントリ数でチェックする
  85. ;
  86. sortfuncs   dw  33 dup(?)   ; ソート用比較関数のリスト
  87. subchain    dw  129 dup(?)  ; サブディレクトリのFATチェイン
  88. ;
  89. wildcard    db  '\*.*',0    ; ワイルドカード
  90. pathbuff    db  96 dup(?)   ; ディレクトリサーチ用パス名バッファ
  91. ;
  92. procs   db  '処理中',TAB,TAB,'    $'
  93. dirover db  'ディレクトリが64KB以上',CR,LF,'$'
  94. fatover db  'FATが64KB以上',CR,LF,'$'
  95. ;
  96. bothmsg db  'エントリをソート/移動',CR,LF,'$'
  97. sortmsg db  'エントリをソート',CR,LF,'$'
  98. movemsg db  'エントリを移動',CR,LF,'$'
  99. nothmsg db  '対象エントリなし',CR,LF,'$'
  100. ;
  101. veralarm    db  'このバージョンのMS-DOSはサポートしていません',CR,LF
  102. vermsgsz    =   $-offset veralarm
  103. ;
  104. usagemsg    label   byte    ; ヘルプメッセージ
  105. db  TAB,"  ディレクトリ エントリ ソート ユーティリティ 1991/01/01 Ver1.11",CR,LF
  106. db "                          Copyright (C) by 福地 邦雄 1991. All rights reserved.",CR,LF
  107. db  "使い方:DSORT  <オプション>  ディレクトリーパス名・・・",CR,LF
  108. db  TAB,"-?  -->ソート条件指定        +?  -->ソート対象選択",CR,LF
  109. db  "   -f -F  フルネーム   11文字",TAB,"+g +G  サブディレクトリを先頭(小文字)又は末尾(大文字)",CR,LF
  110. db  "   -n -N  ファイルネーム  8文字",TAB,"       に寄せる(無指定時はファイルと同格に扱う)",CR,LF
  111. db  "   -e -E  拡張子   3文字",TAB,"+t     ツリー構造の下部まで再帰的にソート",CR,LF
  112. db  "   -s -S  ファイルサイズ",TAB,TAB,"+a +d +v +s +h +r   各属性エントリを対象に加える",CR,LF
  113. db  "   -d -D  最終更新日付",TAB,TAB,"    a=アーカイブ d=ディレクトリ v=ボリュームラベル s=システムファイル",CR,LF
  114. db  "   -t -T  最終更新時刻",TAB,TAB,"    h=隠しファイル r=リードオンリー     初期指定値= +adr",CR,LF
  115. db  "デフォルト= -f (フルネーム・昇順)     +n     ソートを行わない 削除エントリ分を詰めるだけ",CR,LF
  116. db  TAB,TAB,TAB,TAB,"+f     ソート対象でないエントリを先頭に詰めない",CR,LF
  117. db  "小文字=昇順  大文字=降順      複数指定可能で、指定した順番に比較する。",CR,LF
  118. db  "+a~+rの指定は トグルスイッチ になっていて、2回指定するとソート対象から外れる。",CR,LF
  119. db  "ディレクトリーパス名は必ず指定すること。  カレントの場合は'.'を、ルートの場合は'\'を使用する。",CR,LF
  120. msgsize     =   $-offset usagemsg
  121. ;
  122.     .stack
  123. ;
  124.     end
  125.