Modula-2でプログラミング -- FileSearch ファイルを探すモジュールの制作
2024-10-19


ファイルを探すことは、結構よくあることです。CP/Mでプログラムを作る場合でも同じこと。 今回は、Modula-2からBDOSの機能を呼び出し、ファイルを探す"FileSearch"モジュールを紹介します。

"FileSearch"モジュールは、処理系が提供するモジュールをいくつか使用しています。

このほかに自作モジュール"BdosStruct"があります。これは、BDOSを呼び出すBdos手続きがちょっと使いにくかったので、 処理系を騙す仕組みを作り込みました。

"FileSearch"モジュールのDefinition Moduleです。

DEFINITION MODULE FileSearch;

FROM InOut IMPORT Write,WriteString,WriteLn;
FROM OpSys IMPORT FCB,CPMStringBuffer,BdosFunctions,Bdos;
FROM SYSTEM IMPORT ALLOCATE,SIZE,ADR,WORD;
FROM FileNames IMPORT StrToFCB,NameState;
FROM BdosStruct IMPORT BdosCommand,BdosReturn;

EXPORT QUALIFIED pFileList,FileList,FileStruct,DMA,
        LoginDisk,MakeFileList,DumpFileList;

CONST
        DMABufferSize = 128;

TYPE
        FileStruct = RECORD
                CASE BOOLEAN OF
                        TRUE:   Disk: CHAR;
                                Fill1: CHAR;
                                Name: ARRAY [0..7] OF CHAR;
                                Fill2: CHAR;
                                Extention: ARRAY [0..2] OF CHAR;
                |       FALSE:  Text: ARRAY [0..13] OF CHAR;
                END;
        END;
        pFileList = POINTER TO FileList;
        FileList = RECORD
                File: FileStruct;
                Next: pFileList;
        END;
        DMA = ARRAY [0..DMABufferSize-1] OF CHAR;

PROCEDURE LoginDisk(FCBBuf: FCB): CHAR;
PROCEDURE MakeFileList(FileMatch: ARRAY OF CHAR): pFileList;
PROCEDURE DumpFileList(pList: pFileList);
END FileSearch.

Imprementation Moduleは、このとおり。



続きを読む

[コンピューター]
[CP/M]
[Modula-2]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット