home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-02-23 | 43.2 KB | 1,096 lines |
-
- îÄäôï£ SYSTEM
- ==============
-
- î«ñπ½∞ SYSTEM ¿úαáÑΓ «ß«íπε α«½∞ ó ¬«¼»¿½∩Γ«αÑ JPI Modula-2, Γ.¬. ß«ñÑαª¿Γ ºáó¿ß∩Θ¿Ñ
- «Γ ¬«¼»¿½∩Γ«αá σáαá¬ΓÑα¿ßΓ¿¬¿ (á ¿¼Ñ¡¡« Ofs ¿ Seg). äÑ⌐ßΓó¿Γѽ∞¡«, ¡Ñ¬«Γ«αδÑ »α«µÑñπαδ ∩ó-
- ½∩εΓß∩ óßΓα«Ñ¡¡δ¼¿ ó ¬«¼»¿½∩Γ«α, »«φΓ«¼π ¼«ñπ½∞ Γá¬ªÑ ¡áºδóáÑΓß∩ pseudo module (»ßÑóñ« ¼«-
- ñπ½∞).
- SYSTEM Γá¬ªÑ ß«ñÑαª¿Γ Γ¿»δ ñá¡¡δσ, ¬«Γ«αδÑ »αÑñßΓáó½∩εΓ ¿¡ΓÑαÑß ó φΓ«¼ ¬«¡¬αÑΓ¡«¼ »α¿-
- ¼Ñ¡Ñ¡¿¿.
-
- TYPE
- PROCESS = ADDRESS;
- Registers = RECORD
- CASE : BOOLEAN OF
- | TRUE : AX,BX,CX,DX,BP,SI,DI,DS,ES: CARDINAL;
- Flags : BITSET;
- | FALSE : AL,AH,BL,BH,CL,CH,DL,DH : SHORTCARD;
- END;
- END;
- CONST
- CarryFlag = 0;
- ZeroFlag = 6;
- VAR
- HeapBase : CARDINAL ;
- (* üẫóδ⌐ ßÑú¼Ñ¡Γ ñ¿¡á¼¿τÑ߬«⌐ «í½áßΓ¿ *)
-
- Æ¿» Registers ¿ß»«½∞ºπÑΓß∩ »α¿ óδñáτÑ ºá»α«ß«ó äÄæá ¿ ó »αÑαδóá¡¿∩σ, Γ.¬. ñ«ßΓπ» ¬
- ó¡πΓαÑ¡¡¿¼ αÑú¿ßΓαá¼ »α«µÑßß«αá ¡Ñ«íσ«ñ¿¼ »α¿ «ßπΘÑßΓó½Ñ¡¿¿ φΓ¿σ ñÑ⌐ßΓó¿⌐.
- Æ¿» PROCESS «íΩ∩ß¡∩ÑΓß∩ ¡¿ªÑ.
-
- 쿺¬«πα«ó¡ÑóδÑ »α«µÑßßδ
- -----------------------
-
- Æ.¬. IBM PC/AT (¿ ßαáó¡¿¼δÑ ß ¡¿¼) ∩ó½∩εΓß∩ ¬«¼»¿½∩Γ«α«¼ ß Ññ¿¡ßΓóÑ¡¡δ¼ »α«µÑßß«α«¼,
- ñÑ⌐ßΓó¿Γѽ∞¡« «ñ¡«óαѼѡ¡δÑ »α«µÑßßδ ¡Ñ ¼«úπΓ íδΓ∞ αÑ὿º«óá¡δ »«ßαÑñßΓó«¼ ß«»α«úαá¼¼.
- æ«»α«úαá¼¼á - φΓ« »«ß½Ññ«óáΓѽ∞¡á∩ »α«úαá¼¼á, ¬«Γ«αá∩ ¼«ªÑΓ íδΓ∞ »α¿«ßΓá¡«ó½Ñ¡á »πΓѼ
- »ÑαÑñáτ¿ óδ»«½¡Ñ¡¿∩ ñαπú«⌐ ß«»α«úαá¼¼Ñ (¬«Γ«αá∩ íπñÑΓ ó«º«í¡«ó½Ñ¡á ß Γ«ú« ¼ÑßΓá, ó ¬«Γ«α«¼
- «¡á íδ½á αá¡∞ΦÑ »α¿«ßΓá¡«ó½Ñ¡á). è«úñá ß«»α«úαá¼¼á »α¿«ßΓá¡áó½¿óáÑΓß∩, ÑÑ ΓѬπΘÑÑ ß«ßΓ«∩¡¿Ñ
- ß«σαá¡∩ÑΓß∩; Γᬿ¼ «íαẫ¼, τΓ« «¡á ¼«ªÑΓ ó«º«í¡«ó¿Γ∞ ßó«Ñ óδ»«½¡Ñ¡¿Ñ »«ºªÑ, ¬«úñá ñαπúá∩
- ß«»α«úαá¼¼á »ÑαÑñáßΓ óδ»«½¡Ñ¡¿Ñ «íαáΓ¡« ñá¡¡«⌐ ß«»α«úαá¼¼Ñ.
- é ñá½∞¡Ñ⌐ΦѼ ¼δ íπñѼ ¿ß»«½∞º«óáΓ∞ ΓÑନ¡ »α«µÑßß ó¼ÑßΓ« ß«»α«úαá¼¼δ.
-
-
- æ¿ßΓÑ¼á »α¿«α¿ΓÑΓ«ó ¼«ñπ½Ñ⌐ ó JPI îodula-2
- ------------------------------------------
-
- æ¿ßΓÑ¼á »α¿«α¿ΓÑΓ«ó ¼«ñπ½Ñ⌐ π»αáó½∩ÑΓ «íαáí«Γ¬«⌐ á»»áαáΓ¡δσ »αÑαδóá¡¿⌐. æ¿ßΓÑ¼á »α¿«-
- α¿ΓÑΓ«ó «ß¡«óá¡á ¡á ¬«¡Γα«½½ÑαÑ á»»áαáΓ¡δσ »αÑαδóá¡¿⌐ ó ¬«¼»∞εΓÑαÑ Éæ/ÇÆ. Åα¿«α¿ΓÑΓ ¿¡ΓÑα»-
- αÑΓ¿απÑΓß∩ ¬á¬ ¼á߬á (BITSET-πßΓá¡«ó¬á í¿Γá), ¬«Γ«αδ⌐ αáºαÑΦáÑΓ/ºá»αÑΘáÑΓ «Γñѽ∞¡δÑ »αÑαδ-
- óá¡¿∩. ÅαÑαδóá¡¿Ñ ºá»αÑΘÑ¡«, Ñß½¿ Ñú« ß««ΓóÑΓßΓóπεΘ¿⌐ í¿Γ ó ¼á᪥ πßΓá¡«ó½Ñ¡ ó 1. ùΓ«íδ
- ¿ß»«½∞º«óáΓ∞ ß¿ßΓѼπ »α¿«α¿ΓÑΓ«ó, ΓαÑíπεΓß∩ ¡Ñ¬«Γ«αδÑ º¡á¡¿∩ « ¬«¡Γα«½½ÑαÑ »αÑαδóá¡¿⌐ (ß¼.
- "ÆÑσ¡¿τÑ߬¿Ñ ßß佬¿"). ìá óσ«ñÑ í½«¬á (Γѽ« PROCEDURE ¿½¿ Γѽ« MODULE), ¬«Γ«αδ⌐ ¿¼ÑÑΓ »α¿«-
- α¿ΓÑΓ ¼á߬¿ ó ¬«¡Γα«½½ÑαÑ »αÑαδóá¡¿⌐ ¿ »α¿«α¿ΓÑΓ ñ½∩ í½«¬á, ¬«Γ«αδÑ ½«ú¿τÑ߬¿ «íΩÑñ¿¡∩εΓß∩
- ó¼ÑßΓÑ; ¡á óδσ«ñÑ ¿º í½«¬á ¼á߬á ó ¬«¡Γα«½½ÑαÑ »αÑαδóá¡¿⌐ ó«ßßΓá¡áó½¿óáÑΓß∩ ó Γ« ß«ßΓ«∩¡¿Ñ,
- ¬«Γ«α«Ñ «¡á ¿¼Ñ½á ¡á óσ«ñÑ í½«¬á.
- ÇÆ ¿ Éæ «Γ½¿τáεΓß∩ ΓѼ, τΓ« ÇÆ ¿¼ÑÑΓ 2 ¬«¡Γα«½½Ñαá »αÑαδóá¡¿⌐, á Éæ - Γ«½∞¬« 1, Γ.¬.
- ÇÆ ¿ß»«½∞ºπÑΓ óßÑ 16 í¿Γ ¼á߬¿ »α¿«α¿ΓÑΓá; 8 ¼½áñΦ¿σ í¿Γ ¿ß»«½∞ºπεΓß∩ ñ½∩ πßΓá¡«ó¬¿ ¼á߬¿ ó
- »Ñαó¿τ¡«¼ ¬«¡Γα«½½ÑαÑ »αÑαδóá¡¿⌐, ßΓáαΦ¿Ñ 8 í¿Γ ¿ß»«½∞ºπεΓß∩ ñ½∩ πßΓá¡«ó¬¿ ú½áó¡«ú« ¬«¡Γ-
- α«½½Ñαá. é ß½πτáÑ Éæ Γ«½∞¬« ¼½áñΦ¿Ñ 8 í¿Γ ¿ß»«½∞ºπεΓß∩ ñ½∩ πßΓá¡«ó¬¿ ¼á߬¿ ó ¬«¡Γα«½½ÑαÑ
- »αÑαδóá¡¿⌐.
- îá߬á ó ¬«¡Γα«½½ÑαÑ »αÑαδóá¡¿⌐ ßτ¿ΓáÑΓß∩ τáßΓ∞ε ß«ßΓ«∩¡¿∩ »α«µÑßßá; Γᬿ¼ «íαẫ¼, «¡á
- ß«σαá¡∩ÑΓß∩ ¿ ó«ßßΓá¡áó½¿óáÑΓß∩ «»Ñαᵿ∩¼¿ TRANSFER ¿ IOTRANSFER (ß¼. »α«µÑñπαδ ¡¿ªÑ).
- àß½¿ IOTRANSFER ßó∩ºá¡á ß á»»áαáΓ¡δ¼ »αÑαδó᡿Ѽ, «íαáíáΓδóáÑ¼δ¼ ¬«¡Γα«½½Ñα«¼ »αÑαδóá-
- ¡¿⌐, óδñáÑΓß∩ ¡Ñ«»αÑñѽѡ¡δ⌐ End-Of-Interrupt (¬«¡Ñµ »αÑαδóá¡¿∩).
- çá»α«ßδ »αÑαδóá¡¿⌐ (IRQs), «íαáíáΓδóáѼδÑ á»»áαáΓπα«⌐, ¬½áßß¿Σ¿µ¿α«óá¡δ τÑαѺ óÑ¬Γ«αá
- »αÑαδóá¡¿⌐ «Γ 08ì ñ« 0FH ñ½∩ »Ñαó¿τ¡«ú« ¬«¡Γα«½½Ñαá ¿ «Γ 70ì ñ« 77ì ñ½∩ ú½áó¡«ú« ¬«¡Γα«½½Ñ-
- αá. ¥Γ« ß««ΓóÑΓßΓóπÑΓ ºá»α«ßá¼ »αÑαδóá¡¿⌐ «Γ IRQ 0 - IRQ 15.
-
- Åα¿¼Ñα «íαáí«Γ¬¿ »αÑαδóá¡¿∩:
-
- MODULE T;
- FROM SYSTEM IMPORT NEWPROCESS, IOTRANSFER, TRANSFER,
- CurrentPriority, NewPriority,
- ADRESS;
- VAR IntProc : ADDRESS;
- MODULE Int[CARDINAL{3}]; (* IRQ 3 ó䬽ετÑ¡« *)
- IMPORT IOTRANSFER;
- EXPORT IntHandler;
-
- PROCEDURE IntHandler;
- BEGIN
- ...
- IOTRANSFER( ..., 0BH);
- (* IOTRANSFER ¡á IRQ 3 (ÅαÑαδóá¡¿Ñ 0BH) *)
-
- END IntHandler;
- END Int;
- BEGIN
- ...
- NEWPROCESS( ...,IntProc );
- TRANSFER( ...,IntProc );
- NewPriority(CARDINAL(BITSET(CurrentPriority())-{3}));
- (* ó¬½ετÑ¡« IRQ 3 *)
- END T.
-
-
- NEWPROCESS
- ----------
-
- PROCEDURE NEWPROCESS ( P : PROC;
- A : ADDRESS;
- S : CARDINAL;
- VAR P1: ADDRESS);
-
- 櫺ñáÑΓ ¡«óδ⌐ »α«µÑßß. É - φΓ« ½¿ΦÑ¡¡á∩ »áαá¼ÑΓα«ó »α«µÑñπαá, ¬«Γ«αá∩ «íαáºπÑΓ ¡«óδ⌐
- »α«µÑßß. Ç - φΓ« π¬áºáΓѽ∞ ¡á αáí«τπε «í½áßΓ∞ ñ½∩ »α«µÑßßá. Éáí«τá∩ «í½áßΓ∞ ¡Ñ«íσ«ñ¿¼á ñ½∩
- ½«¬á½∞¡δσ »ÑαѼѡ¡δσ ¿ ñ½∩ σαá¡Ñ¡¿∩ ß«ßΓ«∩¡¿∩ »α«µÑßßá »α¿ Ñú« »α¿«ßΓá¡«ó¬Ñ. S - φΓ« αẼÑα
- ó íá⌐Γáσ φΓ«⌐ αáí«τÑ⌐ «í½áßΓ¿. NEWPROCESS ó«ºóαáΘáÑΓ ßß佬π ¡á ºá¡«ó« ß«ºñá¡¡δ⌐ »α«µÑßß ó
- É1. çá¼ÑΓ¿¼, τΓ« NEWPROCESS Γ«½∞¬« »α¿ú«Γáó½¿óáÑΓ »α«µÑßß ñ½∩ óδ»«½¡Ñ¡¿∩, «¡ ¡Ñ óδºδóáÑΓ
- ¡áτὫ Ñú« óδ»«½¡Ñ¡¿∩.
-
- TRANSFER
- --------
-
- PROCEDURE TRANSFER(VAR P1,P2 : ADDRESS);
-
- ÅÑαÑñáÑΓ óδ»«½¡Ñ¡¿Ñ «Γ «ñ¡«ú« »α«µÑßßá ñαπú«¼π. ÆÑ¬πΘ¿⌐ »α«µÑßß »α¿«ßΓá¡áó½¿óáÑΓß∩ ¿
- ¡áº¡áτáÑΓß∩ É1, ¿ »α«µÑßß É2 ó«º«í¡«ó½∩ÑΓß∩ (ó Ñú« ΓѬπΘÑ⌐ Γ«τ¬Ñ »α¿«ßΓá¡«ó¬¿). É2 ñ«½ªÑ¡
- íδΓ∞ αѺπ½∞ΓáΓ«¼ »αÑñδñπΘÑú« ºá»α«ßá ¬ NEWPROCESS ¿½¿ TRANSFER. Åα«µÑßß É1 íπñÑΓ ó«º«í¡«ó-
- ½Ñ¡ »«ºªÑ, ¬«úñá ñαπú«⌐ »α«µÑßß »ÑαÑñáÑΓ óδ»«½¡Ñ¡¿Ñ «íαáΓ¡« Ѽπ.
- çá¼ÑΓ¿¼, τΓ« ¡áº¡áτÑ¡¿Ñ É1 »α«¿ßσ«ñ¿Γ »«ß½Ñ ¿ñÑ¡Γ¿Σ¿¬áµ¿¿ ¡«ó«ú« »α«µÑßßá É2. ¥Γ« º¡á-
- τ¿Γ, τΓ« ñÑ⌐ßΓó¿Γѽ∞¡δÑ »áαá¼ÑΓαδ ¼«úπΓ íδΓ∞ ¿ñÑ¡Γ¿τ¡δ¼¿.
- ¥Γ«Γ Γ¿» »ÑαÑñáτ¿ ¡áºδóáÑΓß∩ ß¿¡σα«¡¡«⌐ »ÑαÑñáτÑ⌐, τΓ« »α«Γ¿ó«»«½«ª¡« áß¿¡σα«¡¡«⌐ »Ñ-
- αÑñáτÑ, ¬«Γ«αá∩ óδ»«½¡∩ÑΓß∩ »α«µÑñπα«⌐ IOTRANSFER.
-
- IOTRANSFER
- ----------
-
- PROCEDURE IOTRANSFER(VAR P1,P2: ADDRESS; I: CARDINAL);
-
- IOTRANSFER - φΓ« π»αáó½∩εΘá∩ »αÑαδó᡿Ѽ (¿½¿ áß¿¡σα«¡¡á∩) »ÑαÑñáτá. Ä¡á ßó∩ºδóáÑΓ ΓÑ-
- ¬πΘ¿⌐ »α«µÑßß ß ¡«¼Ñα«¼ »αÑαδóá¡¿∩, ñá¡¡δ¼ ó I. çáΓѼ «¡á »α¿«ßΓá¡áó½¿óáÑΓ ΓѬπΘ¿⌐ »α«µÑßß
- ¿ ¡áº¡áτáÑΓ Ñú« É1 ¿ á¬Γ¿ó¿º¿απÑΓ »α«µÑßß, ñá¡¡δ⌐ É2. è«úñá »α«µÑßß«α »«½πτáÑΓ »αÑαδóá¡¿Ñ,
- «¡ »α«óÑα∩ÑΓ, ßó∩ºá¡« ½¿ φΓ« »αÑαδóá¡¿Ñ ß »α«µÑßß«¼. àß½¿ φΓ« »α«¿ßσ«ñ¿Γ, ΓѬπΘ¿⌐ »α«µÑßß
- »α¿«ßΓá¡áó½¿óáÑΓß∩ ¿ ¡áº¡áτáÑΓß∩ É2, ¿ (»α¿«ßΓá¡«ó½Ñ¡¡δ⌐) »α«µÑßß É1 ó«º«í¡«ó½∩ÑΓß∩.
- ÉẠ»αÑαδóá¡¿Ñ ¿ αѺπ½∞Γ¿απεΘá∩ IOTRANSFEER »α«¿º«Φ½¿ ó¼ÑßΓÑ, Γ« »αÑαδóá¡¿Ñ ¡Ñ íπñÑΓ
- í«½∞ΦÑ ßó∩ºá¡« ß φΓ¿¼ »α«µÑßß«¼.
- àß½¿ í«½∞ΦÑÑ ¬«½¿τÑßΓó« »α«µÑßß«ó ßó∩ºá¡« ß »αÑαδó᡿Ѽ I, «¡¿ íπñπΓ «íαáí«Γá¡δ ó ßΓÑ-
- ¬Ñ »«σ«ª¿¼ «íαẫ¼, Γ.Ñ. »«ß½Ññ¡¿⌐ »α«µÑßß, ßó∩ºá¡¡δ⌐ ß I íπñÑΓ á¬Γ¿ó¿º¿α«óá¡, ¬«úñá »α«¿-
- º«⌐ñÑΓ »Ñαó«Ñ »αÑαδóá¡¿Ñ I, óΓ«α«⌐ «Γ ¬«¡µá »α«µÑßß íπñÑΓ á¬Γ¿ó¿º¿α«óá¡, ¬«úñá »α«¿º«⌐ñÑΓ
- ß½ÑñπεΘÑÑ »αÑαδóá¡¿Ñ I, ¿ Γ. ñ.
-
- InterruptRegisters
- ------------------
-
- PROCEDURE InterruptRegisters(P: ADDRESS) : ADDRESS;
-
- InterruptRegister ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡ ñ½∩ ñ«ßΓπ»á ¬ ß«ñÑন¼«¼π αÑú¿ßΓα«ó, ¬«úñá
- »α«¿ßσ«ñ¿Γ »αÑαδóá¡¿Ñ. éδºδóáΓ∞ ÑÑ ¿¼ÑÑΓ ß¼δß½ Γ«½∞¬« Γ«úñá, ¬«úñá ¿¼ÑÑΓ ¼ÑßΓ« IOTRANSFER ¬
- »α«µÑßßπ É. Ä¡á ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ºá»¿ß∞ (¡á ßΓѬ) ß« ß½ÑñπεΘ¿¼ αáß»«½«ªÑ¡¿Ñ¼:
-
- TYPE
- ExtendedRegisters = RECORD
- r : Registers;
- (* ¬á¬ «»αÑñѽѡ« óδΦÑ *)
- IP : CARDINAL;
- (* π¬áºáΓѽ∞ ¬«¼á¡ñδ *)
- CS : CARDINAL;
- (* ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ *)
- RetFlags : CARDINAL;
- END;
-
-
- CurrentProcess
- --------------
-
- PROCEDURE CurrentProcess() : ADDRESS;
-
- 髺óαáΘáÑΓ ßß佬π ¡á ΓѬπΘ¿⌐ »α«µÑßß.
-
- CurrentPriority
- ---------------
-
- PROCEDURE CurrentPriority() : CARDINAL;
-
- 髺óαáΘáÑΓ (MODULE) »α¿«α¿ΓÑΓ ΓѬπΘÑú« »α«µÑßßá.
-
-
- NewPriority
- -----------
-
- PROCEDURE NewPriority(PR : CARDINAL;
-
- äáÑΓ ΓѬπΘѼπ »α«µÑßßπ ¡«óδ⌐ (MODULE) »α¿«α¿ΓÑΓ, «»αÑñѽ∩Ѽδ⌐ PR, ß¼. «»¿ßá¡¿Ñ ß¿ßΓѼδ
- »α¿«α¿ΓÑΓ«ó óδΦÑ.
-
-
- Listen
- ------
-
- PROCEDURE Listen(Mask: BITSET);
-
- Listen óαѼѡ¡« αáºαÑΦáÑΓ »αÑαδóá¡¿∩, «»αÑñѽѡ¡δÑ ß »«¼«Θ∞ε Mask (¼á߬¿), τΓ« αáºαÑ-
- ΦáÑΓ »α¿¡¿¼áΓ∞ «ª¿ñáεΘ¿Ñ »αÑαδóá¡¿∩. çáΓѼ φΓá »α«µÑñπαá ó«ßßΓá¡áó½¿óáÑΓ ¼á߬π »αÑαδóá¡¿⌐ ó
- ÑÑ »Ñαó«¡áτá½∞¡«Ñ ß«ßΓ«∩¡¿Ñ.
-
-
- ÅÉÄùêà ÅÉÄûàäôÉ¢
- ================
-
- 諼»¿½∩Γ«α úÑ¡Ñα¿απÑΓ ó¡πΓαÑ¡¡¿⌐ ¬«ñ ñ½∩ óßÑσ »α«µÑñπα ó φΓ«¼ αáºñѽÑ.
-
-
- DI
- --
-
- PROCEDURE DI();
-
- çá»αÑΘáÑΓ á»»áαáΓ¡δÑ »αÑαδóá¡¿∩. Ä¡á »«½Ñº¡á, ¬«úñá ¿¼ÑÑΓß∩ ñ«ßΓπ» ¬ ñá¡¡δ¼, ¬«Γ«αδÑ
- ∩ó½∩εΓß∩ «íΘ¿¼¿ ñ½∩ ¡Ñ߬«½∞¬¿σ »α«µÑßß«ó.
-
-
- EI
- --
-
- PROCEDURE EI();
-
- ÉáºαÑΦáÑΓ á»»áαáΓ¡δÑ »αÑαδóá¡¿∩.
-
-
- Ofs
- ---
-
- PROCEDURE Ofs(VAR A: WORD) : CARDINAL;
-
- 髺óαáΘáÑΓ ß¼ÑΘÑ¡¿Ñ áñαÑßá Ç. çá¼ÑΓ¿¼, τΓ« áñαÑßá ß«ßΓ«∩Γ ¿º ß¼ÑΘÑ¡¿∩ (Ofs) ¿ áñαÑßá
- ßÑú¼Ñ¡Γá; Σ¿º¿τÑ߬¿⌐ áñαÑß óδτ¿ß½∩ÑΓß∩ ¬á¬ seg * 16 + ofs.
-
-
- Seg
- ---
-
- PROCEDURE Seg(VAR A: WORD) : CARDINAL;
-
- 髺óαáΘáÑΓ áñαÑß ßÑú¼Ñ¡Γá áñαÑßá Ç.
-
-
- Out
- ---
-
- PROCEDURE Out(P: CARDINAL; V: SHORTCARD);
-
- éδó«ñ¿Γ º¡áτÑ¡¿Ñ V ó á»»áαáΓ¡δ⌐ »«αΓ É.
-
- In
- --
-
- PROCEDURE In(P: CARDINAL) : SHORTCARD;
-
- 髺óαáΘáÑΓ º¡áτÑ¡¿Ñ ¿º á»»áαáΓ¡«ú« »«αΓá É.
-
-
- GetFlags
- --------
-
- PROCEDURE GetFlags() : CARDINAL;
-
- 髺óαáΘáÑΓ αÑú¿ßΓα Σ½áú«ó »α«µÑßß«αá.
-
-
- SetFlags
- --------
-
- PROCEDURE SetFlags(F: CARDINAL);
-
- ôßΓá¡áó½¿óáÑΓ αÑú¿ßΓα Σ½áú«ó »α«µÑßß«αá ó º¡áτÑ¡¿Ñ, «»αÑñѽѡ¡«Ñ ß »«¼«Θ∞ε F. Åα«µÑñπ-
- αδ SetFlags ¿ GetFlags «ß«íÑ¡¡« »«½Ñº¡δ »α¿ ºá»αÑΘÑ¡¿∩σ ¿ αáºαÑΦÑ¡¿∩σ »αÑαδóá¡¿⌐, ñ½∩ ß«σ-
- αá¡Ñ¡¿∩ ¿ ó«ßßΓá¡«ó½Ñ¡¿∩ »αÑñóáα¿Γѽ∞¡δσ º¡áτÑ¡¿⌐ Σ½áú«ó.
-
-
- îÄäôï£ Process
- ==============
-
- Åα«µÑñπαδ ó φΓ«¼ ¼«ñπ½Ñ «íαáíáΓδóáεΓ «ñ¡«óαѼѡ¡δÑ »α«µÑßßδ. Æ.¬. JPI îodula-2 αÑ὿-
- ºπÑΓß∩ ¡á «ñ¡«»α«µÑßß«α¡«¼ ¬«¼»∞εΓÑαÑ, »α«µÑßßδ ñѽ∩Γ ¼Ñªñπ ß«í«⌐ »α«µÑßß«α¡«Ñ óαѼ∩ »«ß-
- αÑñßΓó«¼ time-slicinq (αáºñѽѡ¿Ñ óαѼѡ¿). äαπú¿Ñ (í«½ÑÑ ¡¿º¬«ú« πα«ó¡∩) »α«µÑñπαδ »α«µÑß-
- ßá ¼«úπΓ íδΓ∞ ¡á⌐ñÑ¡δ ó ¼«ñπ½Ñ SYSTEM.
-
-
- ÅïÇìêÉÄéÖêè ÅÉÄûàææÄé
- =====================
-
- StartScheduler
- --------------
-
- PROCEDURE StartScheduler;
-
- çá»π߬áÑΓ »α«µÑñπαπ αáºñѽѡ¿∩ óαѼѡ¿. àß½¿ «¡á πªÑ á¬Γ¿ó¡á, φëà ºá»α«ß ñÑ⌐ßΓó¿∩ ¡Ñ
- ¿¼ÑÑΓ.
-
- StopScheduler
- -------------
-
- PROCEDURE StopScheduler:
-
- ÄßΓá¡áó½¿óáÑΓ »α«µÑñπαπ αáºñѽѡ¿∩ óαѼѡ¿. çá¼ÑΓ¿¼, τΓ« «»Ñαᵿ¿ SEND ¿ WAIT Σπ¡¬µ¿«-
- ¡¿απεΓ ñ« ΓÑσ »«α, »«¬á »α«µÑñπαá ¡Ñ «ßΓá¡«ó¿Γß∩ (ß¼. "æêâìÇï¢" ).
-
- StartProcess
- ------------
-
- PROCEDURE StartProcess(P: PROC; N: CARDINAL;
- Pr: CARDINAL);
-
- C«ºñáÑΓ ¡«óδ⌐ »α«µÑßß, ¬«Γ«αδ⌐ óδαáªáÑΓß∩ »α«µÑñπα«⌐ É. Åα«µÑßß íπñÑΓ αáß»αÑñѽ∩Γ∞ αá-
- í«τπε «í½áßΓ∞ αẼÑα«¼ N íá⌐Γ (N ñ«½ªÑ¡ íδΓ∞ ¡Ñ í«½ÑÑ 1èü). èáªñδ⌐ »α«µÑßß ¿¼ÑÑΓ »α¿«α¿ΓÑΓ,
- ¬«Γ«αδ⌐ ¡Ñ ñ«½ªÑ¡ íδΓ∞ »ÑαÑ»πΓá¡ ß »α¿«α¿ΓÑΓ«¼ MODULE. Pr - φΓ« »α¿«α¿ΓÑΓ »α«µÑßßá ¿ ñ«½ªÑ¡
- íδΓ∞ í«½∞ΦÑ ¡π½∩. àß½¿ Pr í«½∞ΦÑ ¿½¿ αáóÑ¡ »α¿«α¿ΓÑΓπ ΓѬπΘÑú« »α«µÑßßá, Γ« ºá¡«ó« ß«ºñá¡-
- ¡δ⌐ »α«µÑßß ßΓá¡ÑΓ á¬Γ¿ó¡δ¼.
-
-
- æêâìÇï¢
- =======
-
- Åα«µÑßßδ ¼«úπΓ óºá¿¼«ñÑ⌐ßΓó«óáΓ∞ ñóπ¼∩ αẽ¿τ¡δ¼¿ »πΓ∩¼¿: ¿½¿ í½áú«ñáα∩ ú½«íá½∞¡δ¼
- αáºñѽ∩Ñ¼δ¼ »ÑαѼѡ¡δ¼, ¿½¿ í½áú«ñáα∩ ß¿ú¡á½á¼. æ¿ú¡á½δ ¿ß»«½∞ºπεΓß∩ ñ½∩ ß¿¡σα«¡¿ºáµ¿¿ »α«-
- µÑßß«ó. èα«¼Ñ ¿¡¿µ¿á½¿ºáµ¿¿, ß½ÑñπεΘ¿Ñ «»Ñαᵿ¿ ¼«úπΓ íδΓ∞ óδ»«½¡Ñ¡δ ¡á ß¿ú¡á½áσ: SEND,
- WAIT, Notify, ¿ Awaited. æ¿ú¡á½ ß«ßΓ«¿Γ ¿º ñóπσ ¬áΓÑú«α¿⌐: ßτÑΓτ¿¬ ¿ «τÑαÑñ∞.
-
-
- Init
- ----
- TYPE SIGNAL;
- PROCEDURE Init (VAR s: SIGNAL );
-
- ê¡¿µ¿á½¿º¿απÑΓ ß¿ú¡á½ s ( Γ.Ñ. Ñú« ßτÑΓτ¿¬ πßΓá¡«ó½Ñ¡ ó 0, ¿ «τÑαÑñ∞ »πßΓá).
-
- SEND
- ----
-
- PROCEDURE SEND (s: SIGNAL );
-
- çá»α«ß SEND ßñѽáÑΓ á¬Γ¿ó¡δ¼ 1-δ⌐ »α«µÑßß, ªñπΘ¿⌐ s. àß½¿ ¡¿¬á¬¿σ »α«µÑßß«ó ¡Ñ «ª¿ñá-
- ÑΓß∩, ºá»α«ß íπñÑΓ »«ßΓáó½Ñ¡ ó «τÑαÑñ∞.
- Ä»Ñαᵿ∩ SEND αáí«ΓáÑΓ »«ßαÑñßΓó«¼ ó«ºαáßΓá¡¿∩ ßτÑΓτ¿¬á, ßó∩ºá¡¡δ¼ ß s. àß½¿ ßτÑΓτ¿¬
- < = 0, Γ«, »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ, 1 »α«µÑßß ªñÑΓ s ¿ 1-δ⌐ »α«µÑßß ó «τÑαÑñ¿ íπñÑΓ ú«Γ«ó ¬ óδ»«½-
- ¡Ñ¡¿ε. ¥Γ«Γ »α«µÑßß Γá¬ªÑ ¡áτ¡ÑΓ óδ»«½¡∩Γ∞ß∩, Ñß½¿ Ñú« »α¿«α¿ΓÑΓ > = »α¿«α¿ΓÑΓá ΓѬπΘÑú«
- »α«µÑßßá.
-
- Wait
- ----
-
- PROCEDURE WAIT ( s: SIGNAL);
-
- çá»α«ß WAIT ºáßΓáó½∩ÑΓ ºá»αáΦ¿óáѼδ⌐ »α«µÑßß ªñáΓ∞ ß««ΓóÑΓßΓóÑ¡¡« SEND, Ñß½¿ ß¿ú¡á½ s
- ¡Ñ ¿¼ÑÑΓ »αÑñóáα¿Γѽ∞¡« »«ßΓáó½Ñ¡¡δσ ó «τÑαÑñ∞ «»Ñαᵿ⌐ SEND.
- Åα«µÑñπαá WAIT π¼Ñ¡∞ΦáÑΓ ßτÑΓτ¿¬, có∩ºá¡¡δ⌐ ß s. àß½¿ ßτÑΓτ¿¬ ¼Ñ¡∞ΦÑ 0, φΓ« º¡áτ¿Γ,
- τΓ« ºá»αáΦ¿óáѼδ⌐ »α«µÑßß ñ«½ªÑ¡ ªñáΓ∞ ß««ΓóÑΓßΓóπεΘ¿⌐ SEND ó s, ¿ ñαπú«⌐ »α«µÑßß íπñÑΓ á¬-
- Γ¿ó¿º¿α«óá¡. àß½¿ ßτÑΓτ¿¬ í«½∞ΦÑ ¿½¿ αáóÑ¡ 0, Γ« ºá»αáΦ¿óáѼδ⌐ »α«µÑßß íπñÑΓ »α«ñ«½ªáΓ∞ß∩.
-
- Notify
- ------
-
- PROCEDURE Notify (s: SIGNAL);
-
-
- çáßΓáó½∩ÑΓ ºáñáτπ, ªñπΘπε ß¿ú¡á½ s, αÑú¿ßΓα¿α«óáΓ∞ß∩, ¬«úñá 󫺼«ª¡«, Γ.Ñ ó ß½ÑñπεΘ¿⌐
- ¼«¼Ñ¡Γ óαѼѡ¿. àß½¿ ¡¿¬á¬«⌐ »α«µÑßß ¡Ñ ªñÑΓ s, Γ« ºá»α«ß ¡Ñ ñÑ⌐ßΓóπÑΓ. ¥Γ«Γ ºá»α«ß ¡Ñ óδ-
- ºδóáÑΓ »ÑαÑαÑú¿ßΓαᵿε, Γᬿ¼ «íαẫ¼, «¡ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ πßΓα«⌐ßΓó«¼ π»αáó½Ñ¡¿∩ »αÑ-
- αδó᡿Ѽ (ß¼.âïÇéô 7), τΓ«íδ íѺ«»áß¡« «í«º¡áτ¿Γ∞ ñαπú«⌐ »α«µÑßß ó ¼«¼Ñ¡Γ, ¬«úñá »α«¿ßσ«ñ¿Γ
- ß«íδΓ¿Ñ.
-
- Awaited
- -------
-
- PROCEDURE Awaited (s: SIGNAL): BOOLEAN;
-
- 髺óαáΘáÑΓ TRUE (¿ßΓ¿¡á), Ñß½¿ ½εí«⌐ »α«µÑßß ªñÑΓ ß¿ú¡á½ s (Γ.Ñ., Ñß½¿ ßτÑΓτ¿¬, ßó∩-
- ºá¡¡δ⌐ ß s, «Γα¿µáΓѽѡ).
-
-
- ÅÉÄùêà ÅÉÄûàäôÉ¢
- ================
-
- Delay
- -----
-
- PROCEDURE Delay (t : CARDINAL);
-
- çáñÑনóáÑΓ ΓѬπΘ¿⌐ »α«µÑßß »« ¼Ñ¡∞ΦÑ⌐ ¼ÑαÑ ¡á t ¿¡ΓÑαóὫó óαѼѡ¿. ê¡ΓÑαóá½ óαѼѡ¿
- »α¿í½¿º¿Γѽ∞¡« 1/18 ß. àß½¿ t=0, »ÑαÑαÑú¿ßΓαᵿ∩ ¿¼ÑÑΓ ¼ÑßΓ« íѺ ºáñÑ᪬¿, αáºαÑΦá∩ ñαπú«¼π
- »α«µÑßßπ ß Γᬿ¼ ªÑ ¿½¿ í«½∞Φ¿¼ »α¿«α¿ΓÑΓ«¼ ßΓáΓ∞ á¬Γ¿ó¡δ¼.
-
-
- Lock
- ----
-
- PROCEDURE Lock;
-
- Lock »αÑñ«ΓóαáΘáÑΓ ΓѬπΘ¿⌐ »α«µÑßß «Γ »ÑαÑαÑú¿ßΓαᵿ¿ ß »«¼«Θ∞ε ¿¡ΓÑαóá½á óαѼѡ¿ ñ«
- ΓÑσ »«α, »«¬á ¡Ñ íπñÑΓ ºá»α«ΦÑ¡ Unlock. ¥Γ« »«½Ñº¡«, ¬«úñá »α«µÑßß ¿ß»«½∞ºπÑΓ ñá¡¡δÑ, ¬«Γ«-
- αδÑ αáºñѽ∩εΓß∩ ¼Ñªñπ ¡Ñ߬«½∞¬¿¼¿ »α«µÑßßἿ. çá»α«ßδ ¿σ ¬ Lock ¼«úπΓ íδΓ∞ 󽫪ѡδ, ¡«
- ñ«½ª¡δ íδΓ∞ óßÑúñá ß»áαÑ¡δ ß ºá»α«ßἿ UnLock.
-
- Unlock
- ------
-
- PROCEDURE Unlock;
-
- Unlock αáºαÑΦáÑΓ »ÑαÑαÑú¿ßΓαᵿε ó ¿¡ΓÑαóá½ óαѼѡ¿, ¿ ñ«½ªÑ¡ íδΓ∞ óßÑúñá ß»áαÑ¡ ß
- ºá»α«ß«¼ Lock. ÆÑ¬πΘ¿⌐ »α«µÑßß íπñÑΓ »ÑαÑαÑú¿ßΓα¿α«óá¡, Ñß½¿ ó ú«Γ«ó¡«ßΓ¿ ¡áσ«ñ¿Γß∩ »α«µÑßß
- Γᬫú« ªÑ ¿½¿ í«½∞ΦÑú« »α¿«α¿ΓÑΓá.
-
- Åα¿¼Ñα:
-
- Åα«µÑßß αáí«Γδ ß ¬½áó¿áΓπα«⌐:
-
- MODULE KBP;
- IMPORT Process,IO;
- VAR
- (*$W+*)
- KBbuff : ARRAY[0..1023] OF CHAR;
- (* µ¿¬½¿τÑ߬¿⌐ íπΣÑα *)
- KBhead : CARDINAL;
- KBtail : CARDINAL;
- KeyReady: Process.SIGNAL;
- (*$W=*)
- PROCEDURE KBProcess;
- VAR
- k : CHAR;
- p : CARDINAL;
- BEGIN
- LOOP
- Process.Lock; (* ÄíΘ¿Ñ ¿ äÄæ-»ÑαѼѡ¡δÑ ¿ß»«½∞º«óá¡δ *)
- IF IO.KeyPressed() THEN
- k := IO.RdCharDirect();
- p := (KBhead+1)MOD SIZE(KBbuff);
- IF p <> KBtail THEN
- KBbuff[KBhead] := k; KBhead := p;
- END;
- Process.Unlock;
- IF Process.Awaited(KeyReady) THEN
- Process.SEND(KeyReady)
- END;
- ELSE
- Process.Unlock;
- END;
- END;
- END KBProcess;
-
- PROCEDURE GetKey() : CHAR;
- VAR k : CHAR;
- BEGIN
- LOOP
- Process.Lock; (* ⽫íá½∞¡δÑ «íΘ¿Ñ »ÑαѼѡ¡δÑ
- ¿ß»«½∞º«óá¡δ *)
- IF KBtail<>KBhead THEN
- k := KBbuff[KBtail];
- KBtail := (KBtail+1)MOD SIZE(KBbuff);
- Process.Unlock;
- RETURN k;
- END;
- Process.Unlock;
- Process.WAIT(KeyReady);
- END;
- END GetKey;
-
- PROCEDURE InitKBProcess;
- BEGIN
- KBhead := 0;
- KBtail := 0;
- Process.Init(KeyReady);
- Process.StartProcess(KBProcess,1000,1);
- Process.StartScheduler;
- END InitKBProcess;
-
- VAR c : CHAR;
- BEGIN
- InitKBProcess;
- LOOP
- c :=GetKey();
- Process.Lock; (* »«ß¬«½∞¬π »α«µÑñπαá IO.WrChar
- óδºδóáÑΓ äÄæ *)
- IO.WrChar(c);
- Process.Unlock;
- IF c=CHR(27) THEN EXIT END;
- END;
- END KBP.
-
-
- îÄäôï£ MATHLIB
- ==============
-
- Åα«µÑñπαδ ¿º φΓ«ú« ¼«ñπ½∩ óδ»«½¡∩εΓ «íΘ¿Ñ ¼áΓѼáΓ¿τÑ߬¿Ñ óδτ¿ß½Ñ¡¿∩. èα«¼Ñ Γ«ú«, ¼«-
- ñπ½∞ ß«ñÑαª¿Γ ¡Ñ¬«Γ«αδÑ »α«µÑñπαδ, ߻ѵ¿Σ¿τ¡δÑ ñ½∩ ¼¿¬α«»α«µÑßß«αá Intel 8087.
-
-
- ÄüÉÇüÄÆèÇ ÄÿêüÄè
- ================
-
- é ß½πτáÑ «Φ¿í«τ¡δσ áαúπ¼Ñ¡Γ«ó ¡Ñ¬«Γ«αδÑ »α«µÑñπαδ óδºδóáεΓ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ «Φ¿í«¬,
- «»αÑñѽѡ¡δÑ ¡¿ªÑ:
-
- MODULE MATHLIB
-
- VAR
- MathError : PROCEDURE (LONGREAL, ARRAY OF CHAR);
- MathError2 : PROCEDURE (LONGREAL, LONGREAL,
- ARRAY OF CHAR);
-
- ÄΓ¼ÑτáѼ, τΓ« »α«µÑñπαδ «íαáí«Γ¬¿ «Φ¿í«¬ ∩ó½∩εΓß∩ »ÑαѼѡ¡δ¼¿ Γ¿»á "Åα«µÑñπαá", ¬«Γ«-
- αδÑ ¼«úπΓ íδΓ∞ ºá¼Ñ¡Ñ¡δ »α«µÑñπαἿ, «»αÑñѽѡ¡δ¼¿ »«½∞º«óáΓѽѼ. Å« π¼«½τá¡¿ε «¡¿ »α¿ßó«Ñ-
- ¡δ »α«µÑñπαá¼ MathError ¿ MathError2 ó ¼«ñπ½Ñ Lib.
- Åα«µÑñπαδ «íαáí«Γ¬¿ «Φ¿í«¬ óδºδóáεΓß∩:
-
- MathError Sin, Cos, Tan, Asin, Acos, Log,
- Log10, Sqrt.
- MathError2 ATan2.
-
- Æα¿ú«¡«¼ÑΓα¿τÑ߬¿Ñ Σπ¡¬µ¿¿
- --------------------------
-
- PROCEDURE Sin(A : LONGREAL) : LONGREAL;
- PROCEDURE Cos(A : LONGREAL) : LONGREAL;
- PROCEDURE Tan(A : LONGREAL) : LONGREAL;
- PROCEDURE ASin(A : LONGREAL) : LONGREAL;
- PROCEDURE ACos(A : LONGREAL) : LONGREAL;
- PROCEDURE ATan(A : LONGREAL) : LONGREAL;
- PROCEDURE ATan2(X,Y : LONGREAL) : LONGREAL;
-
- Sin, Cos ¿ Tan «ßπΘÑßΓó½∩εΓ ß««ΓóÑΓßΓóπεΘ¿Ñ ¼áΓѼáΓ¿τÑ߬¿Ñ Σπ¡¬µ¿¿. Çαúπ¼Ñ¡Γ Ç φΓ¿σ
- »α«µÑñπα «»αÑñѽѡ ó αáñ¿á¡áσ. Sin ¿ Cos ó«ºóαáΘáεΓ º¡áτÑ¡¿∩ ó ñ¿á»áº«¡Ñ «Γ -1 ñ« 1.
- ASin, ACos ¿ ATan ó«ºóαáΘáεΓ áα¬ß¿¡πß, áᬬ«ß¿¡πß ¿ áα¬Γá¡úÑ¡ß ß««ΓóÑΓßΓóÑ¡¡«. Çαúπ-
- ¼Ñ¡Γ Ç π ASin ¿ ACos ñ«½ªÑ¡ íδΓ∞ ó ñ¿á»áº«¡Ñ «Γ -1 ñ« 1. ASin ó«ºóαáΘáÑΓ º¡áτÑ¡¿∩ ó ñ¿á»á-
- º«¡Ñ «Γ -pi/2 ñ« pi/2. ACos ó«ºóαáΘáÑΓ º¡áτÑ¡¿∩ ó ñ¿á»áº«¡Ñ «Γ 0 ñ« pi. ATan ó«ºóαáΘáÑΓ
- º¡áτÑ¡¿∩ ó ñ¿á»áº«¡Ñ «Γ -pi/2 ñ« pi/2.
- ATan2 ó«ºóαáΘáÑΓ áα¬Γá¡úÑ¡ß «Γ X/Y. ÉѺπ½∞ΓáΓ - ó ñ¿á»áº«¡Ñ «Γ -pi ñ« pi.
-
- â¿»Ñαí«½¿τÑ߬¿Ñ Σπ¡¬µ¿¿
- -----------------------
-
- PROCEDURE SinH(A : LONGREAL) : LONGREAL;
- PROCEDURE CosH(A : LONGREAL) : LONGREAL;
- PROCEDURE TanH(A : LONGREAL) : LONGREAL;
-
- ¥Γ¿ »α«µÑñπαδ ó«ºóαáΘáεΓ ú¿»Ñαí«½¿τÑ߬¿⌐ ß¿¡πß, ú¿»Ñαí«½¿τÑ߬¿⌐ ¬«ß¿¡πß ¿ ú¿»Ñαí«½¿-
- τÑ߬¿⌐ Γá¡úÑ¡ß ß««ΓóÑΓßΓóÑ¡¡« »ÑαÑñá¡¡«ú« áαúπ¼Ñ¡Γá Ç.
-
-
- ìáΓπαá½∞¡δ⌐ ½«úáα¿Σ¼
- --------------------
-
- PROCEDURE Log(A: LONGREAL) : LONGREAL;
-
- 髺óαáΘáÑΓ ¡áΓπαá½∞¡δ⌐ ½«úáα¿Σ¼ (»« «ß¡«óá¡¿ε Ñ) áαúπ¼Ñ¡Γá Ç.
-
- äÑß∩Γ¿τ¡δ⌐ ½«úáα¿Σ¼
- -------------------
-
- PROCEDURE Log10(A : LONGREAL) : LONGREAL;
-
- 髺óαáΘáÑΓ ½«úáα¿Σ¼ (»« «ß¡«óá¡¿ε 10) áαúπ¼Ñ¡Γá Ç.
-
- æΓѻѡ∞ τ¿ß½á
- -------------
-
- PROCEDURE Pow(X,Y : LONGREAL) : LONGREAL;
-
- 髺óαáΘáÑΓ X, ó«ºóÑñÑ¡¡δ⌐ ó ßΓѻѡ∞ Y.
-
- ¥¬ß»«¡Ñ¡Γá
- ----------
-
- PROCEDURE Exp(A : LONGREAL) : LONGREAL;
-
- 髺óαáΘáÑΓ αѺπ½∞ΓáΓ ó«ºóÑñÑ¡¿∩ Ñ ó ßΓѻѡ∞ Ç (φΓá
- Σπ¡¬µ¿∩ «íαáΓ¡á Log).
-
- î«ñπ½∞
- ------
-
- PROCEDURE Mod(X,Y : LONGREAL) : LONGREAL;
-
- 髺óαáΘáÑΓ X, ∩ó½∩εΘ¿⌐ß∩ áíß«½εΓ¡«⌐ óѽ¿τ¿¡«⌐ Y.
-
- Rexp
- ----
-
- PROCEDURE Rexp(VAR I: INTEGER; A: LONGREAL) : LONGREAL;
-
- Éáºí¿óáÑΓ º¡áτÑ¡¿Ñ Ç ¡á Ñú« φ¬ß»«¡Ñ¡Γπ ¿ ¼á¡Γ¿ßßπ ß »«¼ÑΘÑ¡¿Ñ¼ φ¬ß»«¡Ñ¡Γδ ó I, á ¼á¡-
- Γ¿ßßá - º¡áτÑ¡¿Ñ, ó«ºóαáΘáѼ«Ñ Σπ¡¬µ¿Ñ⌐.
-
- èóáñαáΓ¡δ⌐ ¬«αÑ¡∞
- -----------------
-
- PROCEDURE Sqrt(A: LONGREAL) : LONGREAL;
-
- 髺óαáΘáÑΓ ¬óáñαáΓ¡δ⌐ ¬«αÑ¡∞ áαúπ¼Ñ¡Γá Ç.
-
-
- ÅÉÄûàäôÉ¢ ÅÉàÄüÉÇçÄéÇìêƒ
- ========================
-
- äóÑ »α«µÑñπαδ, »α¿óÑñÑ¡¡δÑ ¡¿ªÑ, »αÑ«íαáºπεΓ µÑ½πε τáßΓ∞ óÑΘÑßΓóÑ¡¡«ú« º¡áτÑ¡¿∩ ó ñó«-
- ¿τ¡«-ñÑß∩Γ¿τ¡«Ñ τ¿ß½« ¿ ¡á«í«α«Γ. äó«¿τ¡«-ñÑß∩Γ¿τ¡«Ñ τ¿ß½« »αÑñßΓáó½Ñ¡« Γ¿»«¼ PackedBcd:
-
- TYPE PackedBcd = ARRAY [0..9] OF SHORTCARD;
-
- äóÑ ñÑß∩Γ¿τ¡δÑ µ¿Σαδ π»á¬«óá¡δ ó ¬áªñδ⌐ φ½Ñ¼Ñ¡Γ ¼áßß¿óá. ¥½Ñ¼Ñ¡Γ ¡«¼Ñα 9 ∩ó½∩ÑΓß∩ º¡á-
- ¬«¼.
-
-
- LongToBcd
- ---------
-
- PROCEDURE LongToBcd(A: LONGREAL) : PackedBcd;
-
- 髺óαáΘáÑΓ º¡áτÑ¡¿Ñ Ç ó ó¿ñÑ PackedBcd. Ç «¬απú½∩ÑΓß∩ ¬ í½¿ªá⌐ΦѼπ µÑ½«¼π. ìá»α¿¼Ñα,
-
- a := LongToBcd(-12345.67);
-
- Å«ß½Ñ φΓ«ú« ó맮óá íπñѼ ¿¼ÑΓ∞ º¡áτÑ¡¿Ñ:
-
- φ½Ñ¼Ñ¡Γ: 9 8 7 6 5 4 3 2 1 0
- ΦÑßΓ¡áñµáΓÑα¿τ¡«Ñ
- º¡áτÑ¡¿Ñ: 80 0 0 0 0 0 0 1 23 46
-
-
- BcdToLong
- ---------
-
- PROCEDURE BcdToLong(A: PackedBcd) : LONGREAL;
-
- 髺óαáΘáÑΓ LONGREAL »αÑñßΓáó½Ñ¡¡δÑ º¡áτÑ¡¿∩ PackedBcd, ºáñá¡¡«ú« »«ßαÑñßΓó«¼ Ç.
-
-
- ÅÉÄûàäôÉ¢ æÄÅÉÄûàææÄÉÇ 8087
- ===========================
-
- çá «»¿ß᡿Ѽ π»αáó½∩εΘÑú« ß½«óá ¿ ßαÑñδ ¼¿¬α«»α«µÑßß«αá 8087 «íαáΓ¿ΓÑß∞ ¬ óáΦÑ⌐ ñ«¬π-
- ¼Ñ¡Γᵿ¿ »« 8087.
-
- LoadControlWord
- ---------------
-
- PROCEDURE LoadControlWord(C: BITSET);
-
- çáúαπªáÑΓ ß«»α«µÑßß«α 8087 ß π»αáó½∩εΘ¿¼ ß½«ó«¼, ºáñá¡¡δ¼ »«ßαÑñßΓó«¼ æ.
-
- StoreControlWord
- ----------------
-
- PROCEDURE StoreControlWord() : BITSET;
-
- 髺óαáΘáÑΓ π»αáó½∩εΘÑÑ ß½«ó« ¼¿¬α«»α«µÑßß«αá 8087.
-
- ClearExceptions
- ---------------
-
- PROCEDURE ClearExceptions();
-
- æΓ¿αáÑΓ Σ½áú¿ ¿ß¬½ετÑ¡¿∩, Σ½áú ºá»α«ßá »αÑαδóá¡¿∩ ¿ Σ½áú ºá¡∩Γ«ßΓ¿ ó ß½«óÑ ß«ßΓ«∩¡¿∩
- ¼¿¬α«»α«µÑßß«αá 8087.
-
-
- StoreEnvironment
- ----------------
-
- TYPE
- Environment = RECORD
- ControlWord : BITSET;
- StatusWord : BITSET;
- TagWord : BITSET;
- IP : CARDINAL;
- Opcode : CARDINAL;
- DataPointer : CARDINAL;
- R80287 : CARDINAL;
- END;
-
- PROCEDURE StoreEnvironment() : Environment;
-
- 髺óαáΘáÑΓ ßαÑñπ »α«µÑßß«αá 8087, «»¿ßá¡¡πε »«ßαÑñßΓó«¼ Γ¿»á Environment. 漫Γα¿ ΓᬪÑ
- ñ«¬π¼Ñ¡Γáµ¿ε »« ß«»α«µÑßß«απ 8087.
-
- îÄäôï£ FIO
- ==========
-
- Åα«µÑñπαδ φΓ«ú« ¼«ñπ½∩ ¿ß»«½∞ºπεΓß∩ ñ½∩ «íαáí«Γ¬¿ Σá⌐½«ó ¿ Σá⌐½«ó«ú« óó«ñá/óδó«ñá. FIO
- Γá¬ªÑ ß«ñÑαª¿Γ »α«µÑñπαδ ñ½∩ «íαáí«Γ¬¿ ñ¿αÑ¬Γ«α¿⌐.
- öá⌐½π ßΓáó¿Γß∩ ó ß««ΓóÑΓßΓó¿Ñ Σá⌐½«óá∩ »«º¿µ¿∩, ¬«Γ«αá∩ ¿º¼Ñ¡∩ÑΓß∩ »α¿ «»Ñαᵿ∩σ ºá»¿-
- ß¿ ¿ τΓÑ¡¿∩. ÅÑαóá∩ »«º¿µ¿∩ ó Σá⌐½Ñ - 0.
- öá⌐½δ ∩ó½∩εΓß∩ »«ß½Ññ«óáΓѽ∞¡δ¼¿, ¡« »α∩¼«⌐ ñ«ßΓπ» ¬ ¬«¡¬αÑΓ¡δ¼ φ½Ñ¼Ñ¡Γá¼ ó Σá⌐½Ñ ¼«-
- ªÑΓ íδΓ∞ ñ«ßΓ¿ú¡πΓ »«ßαÑñßΓó«¼ »α«µÑñπαδ Seek.
- ÅÑαÑñ ΓѼ, ¬á¬ Σá⌐½ ¼«ªÑΓ íδΓ∞ »α«τ¿Γá¡ ¿½¿ ºá»¿ßá¡, «¡ ñ«½ªÑ¡ íδΓ∞ «Γ¬αδΓ ¿ß»«½∞º«óá-
- ¡¿Ñ¼ «ñ¡«⌐ ¿º »α«µÑñπα Open, Create ¿½¿ Append. ¥Γ¿ »α«µÑñπαδ óßÑ ó«ºóαáΘáεΓ π»αáó½∩εΘπε
- »ÑαѼѡ¡πε Σá⌐½á, ¬«Γ«αá∩ ¿ß»«½∞ºπÑΓß∩ ó« óßÑσ »«ß½ÑñπεΘ¿σ «íαáΘÑ¡¿∩σ ¬ φΓ«¼π Σá⌐½π. ÄΓ¬αδ-
- ΓδÑ Σá⌐½δ ñ«½ª¡δ íδΓ∞ ºá¬αδΓδ »α«µÑñπα«⌐ Close »ÑαÑñ «¬«¡τ᡿Ѽ αáí«Γδ »α«úαá¼¼δ ¿½¿ ¬«úñá
- «¡¿ ¡Ñ íπñπΓ í«½ÑÑ ¿ß»«½∞º«óáΓ∞ß∩.
-
-
- âïÄüÇï£ì¢à ÅàÉàîàìì¢à é FIO
- ===========================
-
- ¥Γ¿ »ÑαѼѡ¡δÑ ¿ß»«½∞ºπεΓß∩ ñ½∩ π»αáó½Ñ¡¿∩ »«óÑñÑ¡¿Ñ¼ ¿ »α«óÑન αѺπ½∞ΓáΓ«ó »α«µÑñπα
- «íαáí«Γ¬¿ Σá⌐½á ¿ »α«µÑñπα óó«ñá/óδó«ñá.
-
- CONST
- MaxOpenFiles = 15;
- DiskFull = 0F0H; (* ÄΦ¿í¬á, Ñß½¿ »α¿ ºá»¿ß¿ Σá⌐½«ó
- ñ¿ß¬ »ÑαÑ»«½¡Ñ¡. *)
- StandardInput = 0; (* MS-DOS-ßΓá¡ñáαΓ¡δÑ ¡«¼Ñαá
- Σá⌐½«ó. *)
- StandardOutput = 1;
- ErrorOutput = 2;
- AuxDevice = 3;
- PrinterDevice = 4;
- TYPE
- File = CARDINAL; (* Æ¿» Σá⌐½«ó«ú« ¡«¼Ñαá. *)
- VAR
- EOF : BOOLEAN;
- IOcheck : BOOLEAN; (* àß½¿ TRUE - «Φ¿í«τ¡«Ñ
- ºáóÑαΦÑ¡¿Ñ »α«úαá¼¼δ ß ß««íΘÑ¡¿Ñ¼. *)
- Separators : Str.CHARSET;
- OK : BOOLEAN;
- ChopOff : BOOLEAN;
- Eng : BOOLEAN; (* ꡪѡÑα¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ. *)
-
- ÅαÑñ«»αÑñѽѡ¡δÑ MS-DOS-«ó߬¿Ñ ßΓá¡ñáαΓ¡δÑ ¡«¼Ñαá Σá⌐½«ó ¿¼Ñ¡πεΓß∩ «Γ 0 ñ« 4 ¬á¬ φΓ«
- «»αÑñѽѡ« óδΦÑ »«ßαÑñßΓó«¼ ¬«¡ßΓá¡Γ. Å«½∞º«óáΓѽ∞߬¿Ñ Σá⌐½δ ¡π¼ÑαπεΓß∩ «Γ 5 ñ« º¡áτÑ¡¿∩
- MaxOpenFiles. öá⌐½δ, «Γ¼ÑτÑ¡¡δÑ ßΓá¡ñáαΓ¡δ¼¿ ¡«¼ÑαἿ, «»αÑñѽѡδ, ¬«úñá »α«úαá¼¼á ¡áτ¿¡áÑΓ
- óδ»«½¡Ñ¡¿Ñ, ¿ ¡Ñ ΓαÑíπεΓ «Γ¬αδΓ¿∩ »ÑαÑñ ¿ß»«½∞º«ó᡿Ѽ.
- üπ½Ñó߬á∩ »ÑαѼѡ¡á∩ Äè πßΓá¡áó½¿óáÑΓß∩ óßѼ¿ »α«µÑñπαἿ Σ«α¼áΓ¿α«óá¡¡«ú« óó«ñá/óδó«-
- ñá: WrBin ¿ RdBin. Ä¡á π¬áºδóáÑΓ, íδ½á ½¿ πß»ÑΦ¡«⌐ »αÑñ»α¿¡∩Γá∩ «»Ñαᵿ∩.
- àß½¿ ßñѽá¡á »«»δΓ¬á ºá»¿ß¿ Σ«α¼áΓ¿α«óá¡¡δσ ñá¡¡δσ ó ¼Ñ¡∞Φπε «í½áßΓ∞, τѼ ߻ѵ¿Σ¿µ¿α«-
- óá¡«, Γ« ºá»¿ßδóáÑΓß∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ '?', Ñß½¿ ChopOff - TRUE; ó »α«Γ¿ó¡«¼ ß½πτáÑ «»¿-
- ßá¡¡δ⌐ αẼÑα »«½∩ »αÑóδΦáÑΓß∩. ChopOff »« π¼«½τá¡¿ε - FALSE.
- EOF πßΓá¡áó½¿óáÑΓß∩, Ñß½¿ ¬«¡Ñµ Σá⌐½á íδ½ ñ«ßΓ¿ú¡πΓ ó« óαѼ∩ »«ß½Ññ¡Ñ⌐ «»Ñαᵿ¿ τΓÑ-
- ¡¿∩.
- Separators - ¼¡«ªÑßΓó« αáºñѽ¿ΓѽÑ⌐ ñá¡¡δσ, ¿ß»«½∞ºπεΘ¿σß∩ ó »α«µÑñπαÑ RdItem. ç¡áτÑ-
- ¡¿Ñ »« π¼«½τá¡¿ε:
-
- CHARSET{CHR(9), CHR(13), CHR(26), ' '}.
-
- Eng πßΓá¡áó½¿óáÑΓß∩, Ñß½¿ óÑΘÑßΓóÑ¡¡δÑ τ¿ß½á ßΣ«α¼áΓ¿α«óá¡δ ó ¿¡ªÑ¡Ñα¡«¼ »αÑñßΓáó½Ñ¡¿¿
- (ß¼. RealToStr). Å« π¼«½τá¡¿ε Eng - FALSE.
- àß½¿ IOcheck - TRUE, Γ« «Φ¿í¬¿, ¬«Γ«αδÑ ß½πτáΓß∩ ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ »α«µÑñπα, »ÑαÑ-
- τ¿ß½Ñ¡¡δσ ¡¿ªÑ, íπñπΓ ºáóÑαΦáΓ∞ »α«úαá¼¼π ß óδñáτÑ⌐ ß««íΘÑ¡¿∩ «í «Φ¿í¬Ñ. àß½¿ IOcheck -
- FALSE, «Φ¿í¬¿ ó¼ÑßΓ« φΓ«ú« ¼«úπΓ íδΓ∞ »α«óÑαÑ¡δ »«ßαÑñßΓó«¼ ó맮óá »α«µÑñπαδ IOresult.
- IOcheck »« π¼«½τá¡¿ε TRUE. æ½ÑñπεΘ¿Ñ »α«µÑñπαδ ó맮óπΓ ß««íΘÑ¡¿∩ «í «Φ¿í¬áσ, Ñß½¿ IOcheck -
- TRUE: Open, Append, Create, Close, Truncate, GetPos, Seek, Size, Erase, Rename,
- ReadFirstEntry, ReadNextEntry, ChDir, MkDir, RmDir, GetDir.
-
-
- ÄüÉÇüÄÆèÇ öÇëïÄé
- ================
-
- öá⌐½δ ∩ó½∩εΓß∩ »« π¼«½τá¡¿ε ¡ÑíπΣÑਧ«óá¡¡δ¼¿, Γ.Ñ. äÄæ ñ«ßΓπ»¡á ñ½∩ óδ»«½¡Ñ¡¿∩ ó ½ε-
- í«Ñ óαѼ∩ «»Ñαᵿ∩ τΓÑ¡¿∩ ¿½¿ ºá»¿ß¿. ä½∩ ñ«ßΓ¿ªÑ¡¿∩ í«½∞ΦÑ⌐ φΣΣÑ¬Γ¿ó¡«ßΓ¿ óó«ñá/óδó«ñá ß
- Σá⌐½«¼ ¡πª¡« ßó∩ºáΓ∞ íπΣÑα »α¿ »«¼«Θ¿ »α«µÑñπαδ AssignBuffer ß ΓѼ, τΓ«íδ »α«»π߬áΓ∞ ¬ äÄæ-
- π í«½∞Φ¿Ñ »«αµ¿¿ ñá¡¡δσ.
-
- Open
- ----
-
- PROCEDURE Open(Name: ARRAY OF CHAR) : File;
-
-
- ÄΓ¬αδóáÑΓ Σá⌐½ Name ñ½∩ τΓÑ¡¿∩ ¿½¿ ºá»¿ß¿ ¿ ó«ºóαáΘáÑΓ «ß¡«óπ ¼¡«ªÑßΓóá «»Ñαᵿ⌐ ¡áñ
- Σá⌐½«¼. Å«º¿µ¿∩ Σá⌐½á πßΓá¡áó½¿óáÑΓß∩ ¡á ¡áτὫ Σá⌐½á. àß½¿ IOcheck - FALSE ¿ ߻ѵ¿Σ¿µ¿α«-
- óá¡¡δ⌐ Σá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ «Γ¬αδΓ, ó«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ MAX(CARDINAL).
-
- Append
- ------
-
- PROCEDURE Append(Name: ARRAY OF CHAR) : File;
-
-
- ÄΓ¬αδóáÑΓ Σá⌐½ Name, πßΓá¡áó½¿óáÑΓ »«º¿µ¿ε Σá⌐½á ¡á ¬«¡Ñµ Σá⌐½á, ¿ ó«ºóαáΘáÑΓ ¡«¼Ñα
- «Γ¬αδΓ«ú« Σá⌐½á (¿½¿ MAX(CARDINAL), Ñß½¿ Σá⌐½ ¡Ñ íδ½ πß»ÑΦ¡« «Γ¬αδΓ). éδ»«½¡Ñ¡¿Ñ «»Ñαᵿ⌐
- ºá»¿ß¿ ó ¡Ñ»πßΓ«⌐ Σá⌐½, «Γ¬αδΓδ⌐ »«ßαÑñßΓó«¼ Append, íπñÑΓ ñ«íáó½∩Γ∞ ñá¡¡δÑ ó Σá⌐½ ó¼ÑßΓ«
- Γ«ú«, τΓ«íδ »ÑαѺỿßδóáΓ∞ ¿σ.
-
- Create
- ------
-
- PROCEDURE Create(Name: ARRAY OF CHAR) : File;
-
- 櫺ñáÑΓ Σá⌐½, ߻ѵ¿Σ¿µ¿α«óá¡¡δ⌐ »«ßαÑñßΓó«¼ Name, ¿ ó«ºóαáΘáÑΓ ¡«¼Ñα φΓ«ú« Σá⌐½á (¿½¿
- MAX(CARDINAL), Ñß½¿ Σá⌐½ ¡Ñ íδ½ πß»ÑΦ¡« ß«ºñá¡). àß½¿ Σá⌐½ πªÑ ßπΘÑßΓóπÑΓ, Γ« »αÑñΦÑßΓóπε-
- ΘÑÑ ß«ñÑন¼«Ñ Ñú« ΓÑα∩ÑΓß∩. 櫺ñá¡¡δ⌐ Σá⌐½ «Γ¬αδóáÑΓß∩ ñ½∩ «»Ñαᵿ⌐ τΓÑ¡¿∩ ¿½¿ ºá»¿ß¿.
-
- Close
- -----
-
- PROCEDURE Close(F: File);
-
- æΓ¿αáÑΓ íπΣÑα, ß««ΓóÑΓßΓóπεΘ¿⌐ Σá⌐½π F (Ñß½¿ «¡ ßπΘÑßΓóπÑΓ) ¿ ºáΓѼ ºá¬αδóáÑΓ Σá⌐½.
-
- AssignBuffer
- ------------
-
- PROCEDURE AssignBuffer(F : File; VAR Buf: ARRAY OF BYTE);
-
- ìạáτáÑΓ íπΣÑα Buf Σá⌐½π F. ä½∩ í«½∞Φ«⌐ φΣΣÑ¬Γ¿ó¡«ßΓ¿ ¿ß»«½∞ºπѼδ⌐ αẼÑα íπΣÑαá íπ-
- ñÑΓ: N*512+BufferOverHead, úñÑ N ¡Ñ ¼Ñ¡∞ΦÑ 2.
-
-
- Exists
- ------
-
- PROCEDURE Exists(Name: ARRAY OF CHAR) : BOOLEAN;
-
- 髺óαáΘáÑΓ TRUE, Ñß½¿ ߻ѵ¿Σ¿µ¿α«óá¡¡δ⌐ Σá⌐½ ßπΘÑßΓóπÑΓ. Exists ¿ß»«½∞ºπÑΓ »α«µÑñπαπ
- ReadFirstEntry ñ½∩ «»αÑñѽѡ¿∩ αѺπ½∞ΓáΓá.
-
- Erase
- -----
-
- PROCEDURE Erase(Name: ARRAY OF CHAR);
-
- ôñá½∩ÑΓ Σá⌐½, ºáñá¡¡δ⌐ »«ßαÑñßΓó«¼ Name.
-
- Rename
- ------
-
- PROCEDURE Rename(Name,NewName : ARRAY OF CHAR);
-
- ÅÑαÑ¿¼Ñ¡«óδóáÑΓ Σá⌐½ Name ¡á NewName.
-
- Truncate
- --------
-
- PROCEDURE Truncate(F: File);
-
- ÄΓßѬáÑΓ Σá⌐½ F »« Ñú« ΓѬπΘπε Σá⌐½«óπε »«º¿µ¿ε.
-
- GetPos
- ------
-
- PROCEDURE GetPos(F: File) : LONGCARD;
-
- 髺óαáΘáÑΓ ΓѬπΘπε Σá⌐½«óπε »«º¿µ¿ε Σá⌐½á F.
-
- Seek
- ----
-
- PROCEDURE Seek(F : File; Pos: LONGCARD);
-
- ôßΓá¡áó½¿óáÑΓ Σá⌐½«óπε »«º¿µ¿ε Σá⌐½á F ¿ »«¼ÑΘáÑΓ º¡áτÑ¡¿Ñ ó Pos.
-
- Size
- ----
-
- PROCEDURE Size(F: File) : LONGCARD;
-
- 髺óαáΘáÑΓ αẼÑα Σá⌐½á F ó íá⌐Γáσ.
-
- IOresult
- --------
-
- PROCEDURE IOresult() : CARDINAL;
-
- IOresult ¼«ªÑΓ íδΓ∞ óδºóá¡á »«ß½Ñ í«½∞Φ¿¡ßΓóá «»Ñαᵿ⌐ ñ½∩ ΓÑßΓ¿α«óá¡¿∩ πß»ÑΦ¡«ßΓ¿
- «»Ñαᵿ¿. ìπ½∞ «º¡áτáÑΓ, τΓ« «»Ñαᵿ∩ πß»ÑΦ¡á, ó »α«Γ¿ó¡«¼ ß½πτáÑ IOresult ó«ºóαáΘáÑΓ ¬«ñ
- «Φ¿í¬¿, «»αÑñѽѡ¡δ⌐ ó äÄæ. çá¼ÑΓ∞ΓÑ, τΓ« ú½«íá½∞¡á∩ »ÑαѼѡ¡á∩ IOcheck ñ«½ª¡á íδΓ∞ FALSE
- ñ½∩ ¿ß»«½∞º«óá¡¿∩ φΓ«⌐ Σπ¡¬µ¿¿.
-
- öÄÉîÇÆêÉÄéÇìì¢ë é¢éÄä
- =====================
-
- Åα«µÑñπαδ, «»¿ßá¡¡δÑ ¡¿ªÑ, óδ»«½¡∩εΓ Σ«α¼áΓ¿α«óá¡¡δ⌐ óδó«ñ ó Σá⌐½. Åα«µÑñπαá ºá»¿ß¿
- 󫺼«ª¡á ñ½∩ ¬áªñ«ú« »α«ßΓ«ú« Γ¿»á JPI Modula-2. éßÑ Wr'»α«ßΓ«⌐-Γ¿»' »α«µÑñπαδ ( ¿ß¬½ετá∩
- WrChar) óδºδóáεΓ WrStrAdj.
-
- Wr'»α«ßΓ«⌐-Γ¿»'
- ---------------
-
- PROCEDURE WrChar(F : File; V : CHAR);
- PROCEDURE WrBool(F : File; V : BOOLEAN; Length:INTEGER);
- PROCEDURE WrShtInt(F:File; V:SHORTINT; Length:INTEGER);
- PROCEDURE WrInt(F : File; V : INTEGER; Length:INTEGER);
- PROCEDURE WrLngInt(F:File; V:LONGINT; Length:INTEGER);
- PROCEDURE WrShtCard(F:File; V:SHORTCARD;
- Length:INTEGER);
- PROCEDURE WrCard(F:File; V:CARDINAL; Length:INTEGER);
- PROCEDURE WrLngCard(F:File; V:LONGCARD; Length:INTEGER);
- PROCEDURE WrShtHex(F:File; V:SHORTCARD; Length:INTEGER);
- PROCEDURE WrHex(F:File; V:CARDINAL; Length:INTEGER);
- PROCEDURE WrLngHex(F:File; V:LONGCARD; Length:INTEGER);
-
- PROCEDURE WrReal(F:File; V:REAL; Precision:CARDINAL;
- Length:INTEGER);
- PROCEDURE WrLngReal(F:File; V:LONGREAL;
- Precision:CARDINAL; Length:INTEGER);
-
- Åα«µÑñπαδ Wr'»α«ßΓ«⌐-Γ¿»' »α¿¡¿¼áεΓ ß½ÑñπεΘ¿Ñ »áαá¼ÑΓαδ: ¡«¼Ñα Σá⌐½á F, º¡áτÑ¡¿Ñ ñ½∩
- ºá»¿ß¿ V ¿ αẼÑα »«½∩ Σ«α¼áΓ¿α«óá¡¡δσ ñá¡¡δσ Length (¡Ñ »α¿¼Ñ¡∩ÑΓß∩ ñ½∩ WrChar). àß½¿
- Length «Γα¿µáΓѽ∞¡«, Σ«α¼áΓ¿α«óá¡¡δÑ ñá¡¡δÑ íπñπΓ óδα«ó¡Ñ¡δ »« ½Ñó«¼π ¬αáε, ó »α«Γ¿ó¡«¼
- ß½πτáÑ - »« »αáó«¼π ¬αáε.
- éßÑ »α«µÑñπαδ (¿ß¬½ετá∩ WrChar ¿ WrBool) óδºδóáεΓ ß««ΓóÑΓßΓóπεΘπε »α«µÑñπαπ »αÑ«íαẫ-
- óá¡¿∩ ¿º ¼«ñπ½∩ Str ñ½∩ »«½πτÑ¡¿∩ ßΓ᫬«ó«ú« »αÑñßΓáó½Ñ¡¿∩ º¡áτÑ¡¿∩ V (ß¼. «»¿ßá¡¿Ñ ¼«ñπ½∩
- Str); φΓá ßΓ᫬á ñá½ÑÑ óδó«ñ¿Γß∩ ß ¿ß»«½∞º«ó᡿Ѽ WrStrAdj.
- ç¡áτÑ¡¿Ñ Γ¿»á CARDINAL ¼«ªÑΓ íδΓ∞ ºá»¿ßá¡« ó ΦÑßΓ¡áñµáΓÑα¿τ¡«¼ Σ«α¼áΓÑ »«ßαÑñßΓó«¼
- »α«µÑñπα WrShtHex, WrHex ¿ WrLngHex.
- WrReal ¿ WrLngReal »α¿¡¿¼áεΓ ñ«»«½¡¿Γѽ∞¡δ⌐ »áαá¼ÑΓα Precision, ¬«Γ«αδ⌐ ¿¼ÑÑΓ Γ« ªÑ
- º¡áτÑ¡¿Ñ, τΓ« ¿ ó »α«µÑñπαÑ RealToStr (ß¼. «»¿ßá¡¿Ñ ¼«ñπ½∩ Str). ⽫íá½∞¡á∩ »ÑαѼѡ¡á∩ Eng
- π¬áºδóáÑΓ, ßΣ«α¼áΓ¿α«óá¡« ½¿ óÑΘÑßΓóÑ¡¡«Ñ º¡áτÑ¡¿Ñ ó ¿¡ªÑ¡Ñα¡«⌐ ¡«Γᵿ¿.
-
- WrStr
- -----
-
- PROCEDURE WrStr(F:File; V: ARRAY OF CHAR);
-
- çỿßδóáÑΓ ßΓ᫬π V ó Σá⌐½ F.
-
- WrStrAdj
- --------
-
- PROCEDURE WrStrAdj(F:File; S:ARRAY OF CHAR;
- Length: INTEGER);
-
- çỿßδóáÑΓ ßΓ᫬π S ó Σá⌐½ F, ¿ß»«½∞ºπ∩ ABS(Length) ¬á¬ ñ½¿¡π »«½∩. àß½¿ ABS(Length)
- ¼Ñ¡∞ΦÑ, τѼ Str.Length(S) ¿ ú½«íá½∞¡á∩ »ÑαѼѡ¡á∩ ChopOff - TRUE, Γ« »«ß½Ññ«óáΓѽ∞¡«ßΓ∞
- '?' ºá»¿ßδóáÑΓß∩ ó¼ÑßΓ« S. àß½¿ Length «Γα¿µáΓѽ∞¡á, Γ« Σ«α¼áΓ¿α«óá¡¡δÑ ñá¡¡δÑ íπñπΓ óδα«ó-
- ¡Ñ¡δ »« ½Ñó«¼π ¬αáε, ó »α«Γ¿ó¡«¼ ß½πτáÑ - »« »αáó«¼π ¬αáε.
-
- Åα¿¼Ñα:
-
- WrStrAdj(StandardOutput,'Hello',10);
- WrLn(StandardOutput);
- WrStrAdj(StandardOutput,'Hello',-10);
-
- ñáÑΓ ß½ÑñπεΘ¿⌐ óδó«ñ:
- Hello
- Hello
-
- WrCharRep
- ---------
-
- PROCEDURE WrCharRep(F:File; V:CHAR; Count:CARDINAL);
-
- çỿßδóáÑΓ ß¿¼ó«½ V ó Σá⌐½ F Count τ¿ß½« αáº.
-
- WrLn
- ----
-
- PROCEDURE WrLn(F:File);
-
- çỿßδóáÑΓ ¡«óπε ßΓ᫬π (CHR(13) (ó«ºóαáΓ ¬áαÑΓ¬¿), CHR (10) (»ÑαÑó«ñ ßΓ᫬¿)) ó Σá⌐½
- F.
-
- WrBin
- -----
-
- PROCEDURE WrBin(F:File; Buf:ARRAY OF BYTE;
- Count:CARDINAL);
-
- çỿßδóáÑΓ í½«¬ "¡Ñ«íαáí«Γá¡¡δσ" ¡ÑΣ«α¼áΓ¿α«óá¡¡δσ ñá¡¡δσ, ºáñá¡¡δσ »«ßαÑñßΓó«¼ Buf ó
- Σá⌐½ F. Count - αẼÑα í½«¬á ó íá⌐Γáσ.
-
-
-
- öÄÉîÇÆêÉÄéÇìì¢ë ééÄä
- ====================
-
- ⽫íá½∞¡á∩ »ÑαѼѡ¡á∩ EOF πßΓá¡áó½¿óáÑΓß∩ ó TRUE, Ñß½¿ τ¿ΓáÑΓß∩ ß¿¼ó«½ "¬«¡Ñµ-Σá⌐½á"
- (CHR(26)) ¿½¿ ¡ÑΓ í«½ÑÑ óσ«ñ¡«⌐ ¿¡Σ«α¼áµ¿¿, ¬«Γ«απε ¼«ª¡« í佫 íδ »α«τ¿ΓáΓ∞ ¿º ºáñá¡¡«ú«
- Σá⌐½á.
-
- Rd'»α«ßΓ«⌐-Γ¿»'
- ---------------
-
- PROCEDURE RdChar (F : File) : CHAR;
- PROCEDURE RdBool (F : File) : BOOLEAN;
- PROCEDURE RdShtInt (F : File) : SHORTINT;
- PROCEDURE RdInt (F : File) : INTEGER;
- PROCEDURE RdLngInt (F : File) : LONGINT;
- PROCEDURE RdShtCard (F : File) : SHORTCARD;
- PROCEDURE RdCard (F : File) : CARDINAL;
- PROCEDURE RdLngCard (F : File) : LONGCARD;
- PROCEDURE RdShtHex (F : File) : SHORTCARD;
- PROCEDURE RdHex (F : File) : CARDINAL;
- PROCEDURE RdLngHex (F : File) : LONGCARD;
- PROCEDURE RdReal (F : File) : REAL;
- PROCEDURE RdLngReal (F : File) : LONGREAL;
-
- éßÑ »α«µÑñπαδ Rd'»α«ßΓ«⌐-Γ¿»' »«½πτáεΓ Σá⌐½«óπε π»αáó½∩εΘπε F, ߻ѵ¿Σ¿µ¿απεΘπε Σá⌐½,
- ¿º ¬«Γ«α«ú« íπñÑΓ »α«¿ºó«ñ¿Γ∞ß∩ τΓÑ¡¿Ñ, ¿ ó«ºóαáΘáεΓ º¡áτÑ¡¿∩ '»α«ßΓ«ú« Γ¿»á', ¬á¬ π¬áºá¡«
- ó »α¿óÑñÑ¡¡«¼ óδΦÑ «»¿ßá¡¿¿.
- éßÑ »α«µÑñπαδ (¿ß¬½ετá∩ RdChar) óδºδóáεΓ RdItem ñ½∩ »«½πτÑ¡¿∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿ ß¿¼-
- 󫽫ó, ¬«Γ«αá∩ «úαá¡¿τÑ¡á ß¿¼ó«½«¼ ¿º ú½«íá½∞¡«⌐ »ÑαѼѡ¡«⌐ Γ¿»á ¼¡«ªÑßΓó« Separators. ¥Γá
- ßΓα«¬á »αÑ«íαáºπÑΓß∩ ¬ º¡áτÑ¡¿ε, ¿ß»«½∞ºπ∩ «ñ¡π ¿º »α«µÑñπα »αÑ«íαẫóá¡¿∩ ¿º ¼«ñπ½∩ Str.
- Åα«µÑñπαδ RdShtHex, RdHex ¿ RdLngHex τ¿ΓáεΓ º¡áτÑ¡¿∩ Γ¿»á CARDINAL ó ΦÑßΓ¡áñµáΓÑα¿τ¡«¼
- Σ«α¼áΓÑ.
- Åα«µÑñπαá RdBool ó«ºóαáΘáÑΓ TRUE, Ñß½¿ τ¿ΓáÑΓ ßΓ᫬π 'TRUE', ñ½∩ óßÑσ ñαπú¿σ óδσ«ñ¡δσ
- ñá¡¡δσ «¡á ó«ºóαáΘáÑΓ FALSE.
- æ¿¡Γá¬ß¿ß ñ½∩ ¿¼ÑεΘ¿σ ß¿½π º¡áτÑ¡¿⌐ Γ¿»á REAL ¼«ª¡« ¡á⌐Γ¿ ó âïÇéà 6.
- ⽫íá½∞¡á∩ »ÑαѼѡ¡á∩ Äè πßΓá¡áó½¿óáÑΓß∩ ó FALSE, Ñß½¿ º¡áτÑ¡¿Ñ ΓαÑíπѼ«ú« Γ¿»á ¡Ñ ¼«-
- ªÑΓ íδΓ∞ »α«τ¿Γá¡«, Γ.Ñ., Ñß½¿ º¡áτÑ¡¿Ñ ¿¼ÑÑΓ ¡Ññ«»πßΓ¿¼δ⌐ Σ«α¼áΓ ¿½¿ º¡áτÑ¡¿Ñ.
-
- RdStr
- -----
-
- PROCEDURE RdStr(F:File; VAR V:ARRAY OF CHAR);
-
- ù¿ΓáÑΓ ßΓα«¬π ¿º Σá⌐½á F ¿ ó«ºóαáΘáÑΓ ÑÑ ó V. 濼ó«½δ τ¿ΓáεΓß∩ ñ« ΓÑσ »«α, »«¬á ¡Ñ óδ-
- »«½¡¿Γß∩ «ñ¡« ¿º ß½ÑñπεΘ¿σ πß½«ó¿⌐:
- - »α«τ¿Γá¡ ß¿¼ó«½ "¬«¡Ñµ Σá⌐½á" (CHR(26)), EOF πßΓá¡«ó½Ñ¡ ó TRUE, ¿ V ºáóÑαΦáÑΓß∩ ¡π-
- ½Ñ¼;
- - »α«τ¿Γá¡ ß¿¼ó«½ "ó«ºóαáΓ ¬áαÑΓ¬¿" (CHR(13)). V ºáóÑαΦáÑΓß∩ ¡π½Ñ¼;
- - ßΓα«¬á ºá»«½¡Ñ¡á, Γ.¬. HIGH(V)+1 ß¿¼ó«½«ó »α«τ¿Γá¡«. V ºáóÑαΦáÑΓß∩ ¡Ñ ¡π½Ñ¼.
-
- RdItem
- ------
-
- PROCEDURE RdItem(F:File; VAR V: ARRAY OF CHAR);
-
- RdItem τ¿ΓáÑΓ ßΓ᫬π (¿º Σá⌐½á F), ¬«Γ«αá∩ «ΓñÑ½Ñ¡á »«ßαÑñßΓó«¼ ß¿¼ó«½«ó ¿º ú½«íá½∞¡«⌐
- »ÑαѼѡ¡«⌐ Separators. æΓ᫬á ó«ºóαáΘáÑΓß∩ ó V.
-
- RdBin
- -----
-
- PROCEDURE RdBin(F : File;
- VAR Buf : ARRAY OF BYTE;
- Count : CARDINAL) : CARDINAL;
-
- ù¿ΓáÑΓ í½«¬ αẼÑα«¼ Count "¡Ñ«íαáí«Γá¡¡δσ" íá⌐Γ«ó ¿º Σá⌐½á F ¿ ó«ºóαáΘáÑΓ Ñú« ó Buf.
-
-
- ÄüÉÇüÄÆèÇ èÇÆÇïÄâÄé
- ===================
-
- ChDir
- -----
-
- PROCEDURE ChDir(Name : ARRAY OF CHAR);
-
- 꺼ѡ∩ÑΓ ΓѬπΘπε ñ¿αÑ¬Γ«α¿ε. Name ߻ѵ¿Σ¿µ¿απÑΓ ¡«óδ⌐ »πΓ∞ ñ½∩ ñ¿αÑ¬Γ«α¿¿ ¿ ¼«ªÑΓ
- ó¬½ετáΓ∞ ¿¼∩ πßΓα«⌐ßΓóá.
-
- MkDir
- -----
-
- PROCEDURE MkDir(Name : ARRAY OF CHAR);
-
- 櫺ñáÑΓ ¡«óπε »«ññ¿αÑ¬Γ«α¿ε ¡á »πΓ¿, «»αÑñѽѡ¡«¼ »«ßαÑñßΓó«¼ Name.
- RmDir
- -----
-
- PROCEDURE RmDir(Name : ARRAY OF CHAR);
-
- ä¿αÑ¬Γ«α¿∩, ߻ѵ¿Σ¿µ¿α«óá¡¡á∩ τÑαѺ NamÑ (¬«Γ«αá∩ ñ«½ª¡á íδΓ∞ »πßΓ«⌐), ¿ß¬½ετáÑΓß∩ ¿º
- ßΓαπ¬Γπαδ ñ¿αÑ¬Γ«α¿⌐. çá¼ÑΓ¿¼, τΓ« ΓѬπΘá∩ ñ¿αÑ¬Γ«α¿∩ ¡Ñ ¼«ªÑΓ íδΓ∞ ¿ß¬½ετÑ¡á.
-
- GetDir
- ------
-
- PROCEDURE GetDir( Drive : SHORTCARD;
- VAR Name : ARRAY OF CHAR);
-
- GetDir ó«ºóαáΘáÑΓ »«½¡«Ñ ¿¼∩ »πΓ¿ ó Name ñ½∩ ΓѬπΘÑ⌐ ñ¿αÑ¬Γ«α¿¿ ¡á πßΓα«⌐ßΓóÑ, ߻ѵ¿-
- Σ¿µ¿α«óá¡¡á∩ τÑαѺ Drive (0=»« π¼«½τá¡¿ε, 1=πßΓα«⌐ßΓó« Ç ¿ Γ.ñ.).
-
- ReadFirstEntry
- --------------
-
- TYPE
- PathTail = ARRAY[0..12] OF CHAR;
- FileAttr = SET OF (readonly,hidden,system,
- volume,directory,archive);
- DirEntry = RECORD
- rsvd : ARRAY[0..20] OF SHORTCARD;
- (* ºáαѺÑαó¿α«óá¡« *)
- attr : FileAttr;
- time : CARDINAL;
- date : CARDINAL;
- size : LONGCARD;
- name : PathTail;
- END;
- PROCEDURE ReadFirstEntry( DirName : ARRAY OF CHAR;
- Attr : FileAttr;
- VAR D : DirEntry) : BOOLEAN;
-
- êΘÑΓ ñ¿αÑ¬Γ«α¿ε DirName, ß«ñÑαªáΘπε ¿¼∩ πßΓα«⌐ßΓóá, »πΓ∞ ¿ ¿¼∩ Σá⌐½á ñ½∩ Σá⌐½á, ¬«Γ«-
- αδ⌐ ñ«½ªÑ¡ íδΓ∞ ¡á⌐ñÑ¡. ê¼∩ Σá⌐½á ¼«ªÑΓ ß«ñÑαªáΓ∞ ß¿¼ó«½δ Φáí½«¡á '*' ¿ '?'. Åáαá¼ÑΓα Attr
- ΓαÑíπÑΓ ¡Ñ¬«Γ«α«ú« «íΩ∩ߡѡ¿∩: Ñß½¿ «¡ - »πßΓ«Ñ ¼¡«ªÑßΓó«, Γ« ¿ΘÑΓß∩ Γ«½∞¬« óσ«ªñÑ¡¿Ñ ¡«α-
- ¼á½∞¡δσ Σá⌐½«ó (Γ« ªÑ »α¿¼Ñ¡∩ÑΓß∩, Ñß½¿ πßΓá¡«ó½Ñ¡δ áΓα¿íπΓδ readonly ¿ archive); Ñß½¿
- ñ«½ª¡« íδΓ∞ óº∩Γ« ó αáßτÑΓ óσ«ªñÑ¡¿Ñ ߬αδΓδσ Σá⌐½«ó, ß¿ßΓѼ¡δσ Σá⌐½«ó ¿½¿ ñ¿αÑ¬Γ«α¿⌐, Γ«
- ß««ΓóÑΓßΓóπεΘ¿⌐ áΓα¿íπΓ ñ«½ªÑ¡ íδΓ∞ πßΓá¡«ó½Ñ¡; ¡á¬«¡Ñµ, Ñß½¿ πßΓá¡«ó½Ñ¡ áΓα¿íπΓ volume, Γ«
- ó«ºóαáΘáÑΓß∩ Γ«½∞¬« ¿¼∩ Γ«¼á.
- àß½¿ »«ñσ«ñ∩ΘÑÑ óσ«ªñÑ¡¿Ñ ¡á⌐ñÑ¡«, ReadFirstEntry ó«ºóαáΘáÑΓ TRUE, ¿ D íπñÑΓ ß«ñÑαªáΓ∞
- ñ¿αÑ¬Γ«α¿ε óσ«ªñÑ¡¿∩.
- 漫Γα¿ Γá¬ªÑ »α«µÑñπαπ ReadNextEntry.
- Åα¿¼Ñα:
-
- ReadFirstEntry("c:\com\*.*",FileAttr{hidden,system,
- directory},e)
-
- Å«ñσ«ñ∩Θ¿¼¿ íπñπΓ óßÑ Σá⌐½δ ñ¿αÑ¬Γ«α¿¿ "c:\com", ¿ e íπñÑΓ ß«ñÑαªáΓ∞ »Ñαó«Ñ óσ«ªñÑ¡¿Ñ
- (Ñß½¿ αѺπ½∞ΓáΓ Σπ¡¬µ¿¿ - TRUE).
-
-
-