home *** CD-ROM | disk | FTP | other *** search
- âïÇéÇ 19.
-
- ééÄä ê é¢éÄä.
-
- äαá⌐óÑαδ πßΓα«⌐ßΓó ΓѬßΓ«ó«ú« Σá⌐½á.
-
- èᬠ߬áºá¡« ó ú½áóÑ 10 "î«ñπ½∞ System", Turbo Pascal »«ºó«½∩ÑΓ
- éá¼ «»αÑñѽ¿Γ∞ éáΦ ß«íßΓóÑ¡¡δ⌐ ñαá⌐óÑα ΓѬßΓ«ó«ú« Σá⌐½á. äαá⌐óÑα
- ΓѬßΓ«ó«ú« Σá⌐½á - φΓ« 4 Σπ¡¬µ¿¿, ¬«Γ«αδÑ »«½¡«ßΓ∞ε αÑ὿ºπεΓ
- ¿¡ΓÑαΣÑ⌐ß ¼Ñªñπ Σá⌐½«ó«⌐ ß¿ßΓѼ«⌐ Turbo Pascal ¿ ¬á¬¿¼-½¿í«
- πßΓα«⌐ßΓó«¼.
- äαá⌐óÑα ¡á ½εí«Ñ πßΓα«⌐ßΓó« «»αÑñѽ∩ÑΓß∩ 4 Σπ¡¬µ¿∩¼¿: Open,
- InOut, Flush ¿ Close. èáªñá∩ Σπ¡¬µ¿∩ ¿¼ÑÑΓ ºáú«½«ó«¬:
-
- function DeviceFunc(var F : TextRec) : Integer;
-
- úñÑ TextRec - φΓ« Γ¿» ºá»¿ß¿ ΓѬßΓ«ó«ú« Σá⌐½á, «»αÑñѽѡ¡δ⌐
- αá¡ÑÑ ó αáºñÑ½Ñ "öá⌐½«óδÑ Γ¿»δ" ó ú½áóÑ 3. èáªñá∩ Σπ¡¬µ¿∩ ñ«½ª¡á
- íδΓ∞ «Γ¬«¼»¿½¿α«óá¡á ó ß«ßΓ«∩¡¿¿ {$F+}, ñ½∩ ¿ß»«½∞º«óá¡¿∩ ñá½∞¡Ñ⌐
- ¼«ñѽ¿ ó맮óá. ç¡áτÑ¡¿Ñ, ó«ºóαáΘáѼ«Ñ Σπ¡¬µ¿Ñ⌐, ßΓá¡«ó¿Γß∩
- αѺπ½∞ΓáΓ«¼, ¬«Γ«αδ⌐ ó«ºóαáΘáÑΓ IOResult. ç¡áτÑ¡¿Ñ 0 ú«ó«α¿Γ «í
- πß»ÑΦ¡«⌐ «»Ñαᵿ¿.
- ä½∩ ßó∩º¿ Σπ¡¬µ¿⌐ ¿¡ΓÑαΣÑ⌐ßá ß πßΓα«⌐ßΓó«¼ ß ºáñá¡¡δ¼ Σá⌐½«¼,
- éδ ñ«½ª¡δ ¡á»¿ßáΓ∞ ßó«ε »α«µÑñπαπ Assign (¬á¬ »α«µÑñπαá AssignCrt ó
- ¼«ñπ½Ñ Crt). Åα«µÑñπαá Assign ñ«½ª¡á »α¿ßóá¿óáΓ∞ áñαÑßá 4-σ Σπ¡¬µ¿⌐
- ¿¡ΓÑαΣÑ⌐ßá ß πßΓα«⌐ßΓó«¼ 4-¼ π¬áºáΓѽ∩¼ ¡á Σπ¡¬µ¿¿ ó »ÑαѼѡ¡«⌐
- ΓѬßΓ«ó«ú« Σá⌐½á. ä«»«½¡¿Γѽ∞¡« «¡á ñ«½ª¡á ºá»«¼¿¡áΓ∞ ¬«¡ßΓá¡Γπ
- fmClosed ó »«½Ñ Mode, αẼÑα íπΣÑαá ΓѬßΓ«ó«ú« Σá⌐½á ó BufSize,
- π¬áºáΓѽ∞ ¡á íπΣÑα ΓѬßΓ«ó«ú« Σá⌐½á ó BufPtr ¿ «τ¿ΘáΓ∞ ßΓ᫬π Name.
- ìá»α¿¼Ñα, »αÑñ»«½«ª¿¼, τΓ« 4 Σπ¡¬µ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß πßΓα«⌐ßΓó«¼
- ¡áºδóáεΓß∩ DevOpen, DevInOut, DevFlush, DevClose, »α«µÑñπαá Assign
- íπñÑΓ:
-
- procedure AssignDev(var F: Text);
- begin
- with TextRec(F) do
- begin
- Mode := fmClosed;
- BufSize := SizeOf(Buffer);
- BufPtr := @Buffer;
- OpenFunc := @DevOpen;
- InOutFunc := @DevInOut;
- FlushFunc := @DevFlush;
- CloseFunc := @DevClose;
- Name[0] := #0;
- end;
- end;
-
- öπ¡¬µ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß πßΓα«⌐ßΓó«¼ ¼«úπΓ ¿ß»«½∞º«óáΓ∞ »«½Ñ
- UserData ó Σá⌐½«ó«⌐ ºá»¿ß¿ ñ½∩ σαá¡Ñ¡¿∩ ßó«Ñ⌐ ¿¡Σ«α¼áµ¿¿. ¥Γ« »«½Ñ
- ¡¿¬«úñá ¡Ñ ¼«ñ¿Σ¿µ¿απÑΓß∩ Σá⌐½«ó«⌐ ß¿ßΓѼ«⌐ Turbo Pascal.
-
-
- öπ¡¬µ¿∩ Open.
-
- öπ¡¬µ¿∩ Open óδºδóáÑΓß∩ ßΓá¡ñáαΓ¡δ¼¿ »α«µÑñπαἿ Reset,
- Rewrite ¿ Append ñ½∩ «Γ¬αδΓ¿∩ ΓѬßΓ«ó«ú« Σá⌐½á, ßó∩ºá¡¡«ú« ß
- πßΓα«⌐ßΓó«¼. Åα¿ óσ«ñÑ »«½Ñ Mode ß«ñÑαª¿Γ ¬«¡ßΓá¡Γπ fmInput,
- fmOutput ¿½¿ fmInOut, »«¬áºδóáεΘπε τΓ« Σπ¡¬µ¿∩ Open íδ½á óδºóá¡á ¿º
- Reset, Rewrite ¿½¿ Append.
- öπ¡¬µ¿∩ Open ú«Γ«ó¿Γ Σá⌐½ ñ½∩ óó«ñá ¿½¿ óδó«ñá, ß«ú½áß¡«
- º¡áτÑ¡¿ε Mode. àß½¿ Mode ºáñáÑΓ fmInOut (Open íδ½á óδºóá¡á ¿º
- Append), Γ« «¡á ñ«½ª¡á íδΓ∞ ¿º¼Ñ¡Ñ¡á ¡á fmOutput ñ« ó«ºóαáΓá ¿º
- Open.
- Open óßÑúñá óδºδóáÑΓß∩ ñ« ½εí«⌐ ñαπú«⌐ Σπ¡¬µ¿¿ ¿¡ΓÑαΣÑ⌐ßá ß
- πßΓα«⌐ßΓó«¼. Å« φΓ«⌐ »α¿τ¿¡Ñ Assign ¿¡¿µ¿á½¿º¿απÑΓ Γ«½∞¬« »«½Ñ
- OpenFunc, »αÑñ«ßΓáó½∩∩ ¿¡¿µ¿á½¿ºáµ¿ε «ßΓá½∞¡δσ óÑ¬Γ«α«ó Σπ¡¬µ¿¿
- Open. Äß¡«óδóá∩ß∞ ¡á º¡áτÑ¡¿¿ Mode, Open ¼«ªÑΓ ºáΓѼ πßΓá¡«ó¿Γ∞
- π¬áºáΓѽ¿ ½¿í« ¡á Σπ¡¬µ¿¿ óó«ñá, ½¿í« ¡á Σπ¡¬µ¿¿ óδó«ñá. ¥Γ«
- ß«σαá¡∩ÑΓ Σπ¡¬µ¿¿ InOut, Flush ¿ Close «Γ «»αÑñѽѡ¿∩ ΓѬπΘÑú«
- αѪ¿¼á.
-
-
- öπ¡¬µ¿∩ InOut.
-
- öπ¡¬µ¿∩ Inout óδºδóáÑΓß∩ ßΓá¡ñáαΓ¡δ¼¿ »α«µÑñπαἿ ¿ Σπ¡¬µ¿∩¼¿
- Read, Readln, Write, Writeln, Eof, Eoln, SeekEof, SeekEoln ¿ Close,
- ¬«úñá ¡Ñ«íσ«ñ¿¼ óó«ñ ¿½¿ óδó«ñ ß φΓ«ú« πßΓα«⌐ßΓóá.
- è«úñá αѪ¿¼ - fmInput, Σπ¡¬µ¿∩ InOut τ¿ΓáÑΓ ñ« BufSize
- ß¿¼ó«½«ó ó BufPtr^ ¿ ó«ºóαáΘáÑΓ τ¿ß½« »α«τ¿Γá¡¡δσ ß¿¼ó«½«ó ó
- BufEnd. ä«»«½¡¿Γѽ∞¡« «¡á πßΓá¡áó½¿óáÑΓ BufPos ó 0. àß½¿ Σπ¡¬µ¿∩
- InOut ó«ºóαáΘáÑΓ 0 ó BufEnd ó αѺπ½∞ΓáΓÑ ºá»α«ßá ¡á óó«ñ, Eof ñ½∩
- φΓ«ú« Σá⌐½á ßΓá¡«ó¿Γß∩ True.
- è«úñá Mode - fmOutput, Σπ¡¬µ¿∩ InOut ºá»¿ßδóáÑΓ BufPos
- ß¿¼ó«½«ó ¿º BufPtr^ ¿ ó«ºóαáΘáÑΓ 0 ó BufPos.
-
-
- öπ¡¬µ¿∩ Flush.
-
- öπ¡¬µ¿∩ Flush óδºδóáÑΓß∩ ó ¬«¡µÑ ¬áªñ«⌐ Read, Readln, Write,
- Writeln. Ä¡á ¼«ªÑΓ, ¬α«¼Ñ Γ«ú«, óδΓÑß¡∩Γ∞ íπΣÑα ΓѬßΓ«ó«ú« Σá⌐½á.
- àß½¿ Mode αáó¡« fmInput, Σπ¡¬µ¿∩ Flush ¼«ªÑΓ πßΓá¡áó½¿óáΓ∞
- BufPos, BufEnd ó 0 ñ½∩ óδΓὬ¿óá¡¿∩ «ßΓáóΦ¿σß∩ (¡Ñßτ¿Γá¡¡δσ)
- ß¿¼ó«½«ó ó íπΣÑα. ¥Γá 󫺼«ª¡«ßΓ∞ ¿ß»«½∞ºπÑΓß∩ αÑñ¬«.
- àß½¿ Mode - fmOutPut, Σπ¡¬µ¿∩ Flush ¼«ªÑΓ ºá»¿ßδóáΓ∞
- ß«ñÑন¼«Ñ íπΣÑαá, Γ«τ¡« ΓᬠªÑ, ¬á¬ Σπ¡¬µ¿∩ InOut, τΓ«
- úáαá¡Γ¿απÑΓ, τΓ« ΓѬßΓ ºá»¿ßá¡¡δ⌐ ó πßΓα«⌐ßΓó«, »«∩ó¿Γß∩ ¡á
- πßΓα«⌐ßΓóÑ ¡Ñ¼Ññ½Ñ¡¡«. àß½¿ Flush ¡¿τÑú« ¡Ñ ñѽáÑΓ, ΓѬßΓ ¡Ñ íπñÑΓ
- »ÑαÑñáóáΓ∞ß∩ ¡á πßΓα«⌐ßΓó« ñ« ΓÑσ »«α, »«¬á íπΣÑα ¡Ñ ºá»«½¡¿Γß∩ ¿½¿
- »«¬á ¡Ñ ºá¬α«ÑΓß∩ Σá⌐½.
-
-
- öπ¡¬µ¿∩ Close.
-
- öπ¡¬µ¿∩ Close óδºδóáÑΓß∩ ßΓá¡ñáαΓ¡«⌐ Σπ¡¬µ¿Ñ⌐ Close ñ½∩
- ºá¬αδΓ¿∩ ΓѬßΓ«ó«ú« Σá⌐½á, ßó∩ºá¡¡«ú« ß πßΓα«⌐ßΓó«¼. (Åα«µÑñπαδ
- Reset, Rewrite ¿ Append Γá¬ªÑ óδºδóáεΓ Close, Ñß½¿ Σá⌐½, ¬«Γ«αδ⌐
- «¡¿ «Γ¬αδóáεΓ πªÑ «Γ¬αδΓ). àß½¿ Mode - fmOutPut, Γ« - Σá⌐½«óá∩
- ß¿ßΓѼá Turbo Pascal, ñ« ó맮óá Σπ¡¬µ¿¿ Close, óδºδóáÑΓ InOut,
- τΓ«íδ úáαá¡Γ¿α«óáΓ∞, τΓ« óßÑ ß¿¼ó«½δ í뫨 ºá»¿ßá¡δ ¡á πßΓα«⌐ßΓó«.
-
-
- Åα∩¼«⌐ ñ«ßΓπ» ¬ »«αΓá¼.
-
- ä½∩ ñ«ßΓπ»á ¬ »«αΓá¼ »α«µÑßß«αá 80σ86, Turbo Pascal αÑ὿ºπÑΓ
- ñóá »αÑñ«»αÑñѽѡ¡δσ ¼áßß¿óá Port ¿ PortW. Äíá - «ñ¡«¼Ñα¡δÑ
- ¼áßß¿óδ, ¬áªñδ⌐ φ½Ñ¼Ñ¡Γ ¬«Γ«αδσ »αÑñßΓáó½∩ÑΓ »«αΓ, »α¿τѼ áñαÑß
- »«αΓá ß««ΓóÑΓßΓóπÑΓ Ñú« ¿¡ñѬßπ. Æ¿» ¿¡ñѬßá - ß½«ó«. ¥½Ñ¼Ñ¡Γδ
- ¼áßß¿óá Port - Γ¿»á íá⌐Γ ¿ φ½Ñ¼Ñ¡Γδ ¼áßß¿óá PortW - Γ¿»á ß½«ó«.
- è«úñá φ½Ñ¼Ñ¡Γπ Port ¿½¿ PortW »α¿ßóá¿óáÑΓß∩ º¡áτÑ¡¿Ñ, φΓ«
- º¡áτÑ¡¿Ñ ºá»¿ßδóáÑΓß∩ ó π¬áºá¡¡δ⌐ »«αΓ. è«úñá φ½Ñ¼Ñ¡Γ Port ¿½¿
- PortW ¿ß»«½∞ºπÑΓß∩ ó óδαáªÑ¡¿¿ - º¡áτÑ¡¿Ñ τ¿ΓáÑΓß∩ ¿º π¬áºá¡¡«ú«
- »«αΓá. Åα¿¼Ñαδ:
-
- Port[$20] := $20;
- Port[Base] := Port[Base] xor Mask;
- while Port[$B2] and $80 = 0 do {«ª¿ñá¡¿Ñ};
-
- îáßß¿óδ Port ¿ PortW ¼«ª¡« ¿ß»«½∞º«óáΓ∞ Γ«½∞¬« ó »α¿ßóá¿óá¡¿¿
- ¿ ó óδαáªÑ¡¿∩σ, Γᬿ¼ «íαẫ¼, φ½Ñ¼Ñ¡Γδ Port ¿ PortW ¡Ñ½∞º∩
- ¿ß»«½∞º«óáΓ∞ ¬á¬ ¿º¼Ñ¡∩ѼδÑ »áαá¼ÑΓαδ. ü«½ÑÑ Γ«ú«, ¡Ñ½∞º∩
- «íαáΘáΓ∞ß∩ ¬« óßѼπ ¼áßß¿óπ Port ¿½¿ PortW.
-