PortInfo - みる会図書館


検索対象: 月刊 C MAGAZINE 1993年3月号
5件見つかりました。

1. 月刊 C MAGAZINE 1993年3月号

三田典玄のランタムアクセス 537: CLI; 5 : in . 比曲 = I 訂・ : i 叩 r 昭上 al = ( u ー 6 恤 in 250 [ 「謝 0 ] : 5 : #if 0 : 3 費ーれ ) ( ( 1 ) ( p 低 tl 。 [ 「 0 ]. lnte 「 rupt Ⅳ i ー t 沁 ) 〉〉 16 ) : 5 ・ 7 : u—short) 弸 : 0x L & ( 1 ) ( れ I 。 [ % 「。 ]. 1 Ⅱ「鼬 pt rvi 。北 i ) ; : 相 I : “ i 岫 ( r 0 ) 551 : 552 : “ 0 : 5 : ( Ⅱー s 「 t ) ( 0 ) int 「一の〉〉 16 ) : 555 : Ⅱーを「 t ) 5 . 0x 网 0 F れ & ( lcmg ) ( rsin なーの ) ; 557 : 5 認 . bræk; 83e 1 ・ 559. 0 : s 昭 r %. 面 聞 1 : 2 : u -32 れ ) 0x00 P れ & (long)(rsintr-l)); 5 : bræk; 聞 7 : 面 f 則 lt : return 570 : #erdif 571 : 572 : int x ( I 訂ー . & i 叩「 %. & 側 t 「昭 . 「 % ) : 573 : 574 : 575 : CLI : 576 : 577 : ( ・ ( % れ I れ fo [ % r 0 ]. InitiaIize-Clcx:k)) 578 : ((PortInfo[PortNo). / ・ CNT り 5 : 0 : 0 「 d = 0x & 1 : 5 : if(l ト ( rtl 0 [ 「 0 ]. Sio 「 - ter ) - > Si 加 2i3 ) 。「 d ト時 5 : 弸 : 0 「 d ト ( ( れ I 0 [ 「 0 ]. Si0P - te 「ト〉 Si0 「 iti & 0x ) くく 3 : / 本 USART り 弸 : (•(PortInfo[PortNo]. lnitial ize 0 ) ) / 事蹴 0S ・ / (HeWord); / 事 CI 健「 lnte 「 pts り 1 : CLI; : (事(%れI矼。[%「圏。]. Initialize-Systæ-Port)) (FAISE); 5 : 0000 ~ 000. 、 000 「 00 ー 000 ・ PortInfo % r 0 . lnitialize—lnterrupt Controller)) & PortInfo PO 「 0 . v I ste 「 . I 町 S 冊 ) &(PortInfo 601 : 602 : (void)W-inp(RbR[PortNo]) : 603 : : (*(PortInfo[PortNo]. Initialize-Syst•-Port)) 605 : 607 : %「tInf0[%「盟0]. FloüntroIBithp 0 : 6 囲 : STI; 610 : 「 tInfO [ 「 0 ]. SioIn 四 e = MJE; 611 : return(TRUE); 612 : } 613 : 614 : / 本 Pinish 凹 6 SIO-syst.æ 615 : 616 : 617 : 618 : void SioFinish(int r 0 1 InitPlag) 619. if ( t( % れ 1 。 [ 「 0 ]. Si 。 ln 四 e ) ) 620 : 621 : return; 6 : CLI; 625 : ( 事 ( れ lnf 。 [ 「。 ]. ⅲ ish ー ste•ーんれ ) ) 0 : 6 : ・ (事(%れInf0[齏「t節]. Pinish—lnterrupt—Controller)) 627. 6 囲 : (PortInfo PortNO . I 町 & ら れ I 0 「 0 . v I S 冊 ) : 6 四 : 0 : 1 : PortInfo % r 0 . I 町 33r = 0 : 2 : れ朝 fo 「 0 . 町 S ね冊 = 0 : 4 : CLI; 5 : 3 r d ( 第「 ) : 6 : inpreg. = I 府・ 7 : in al = ( u ー「 tl 。 [ por 。 ]. ln r 創 ) : 6 : s 銘 r . = PortInfo ん「謝 0 . lnte 「創・「一 : 9 : i 叩 r . x. = PortInfo 「 0 . v ln 「創和 ff 記い ; 640 2 : if(InitPlag) 5 : な PortInfo r 0 . ffe 「 ) ・ 6 郷 : fræ % 「 tl 0 % 「 0 . ffe : 6 : STI; 6 : 「 tl 0 [ po 「 t ]. SioI 皿 e = PAISE; 652 : / 事 6 : lnterrupt ble 1 6 : void &Lbl&dInterrupt—O(int sv) 6 認 : if(sv) 659 : 聞 0 : Sint0 = 飛 側 tp ( I 駅 [ 0 ]. 3 ) : 1 : 聞 2 : 3 : 聞 5 : Sint0 = E outp(IeR[0], 1 670 671 : lnterrupt &Lble 2 674 : void &nbl&dlnterrupt—l(int sv) 675 676 : if(sv) 6 行 : 678 : Sint1 = outp(IeR[1], 3 ) : 679 : 1 : 2 : 3 : Sint1 = 財 IS 区 皿 p ( I [ 1 ] , 15 : 5 : 7 : 6 圏 : / 事 ⅵ l-character %rd-SIO-Buffer 690: 6 : 1 Si&d(int 「 0 , int c) 6 圏 : ( 6 : u—int 15 : 6 % : 1 印 = 697 : (PortInfo % r 謝 0 . & 】 ffe dil % in 「 > : PortInfo % r 銀 0 . ? (PortInfo r 0 . PortInfo 「 0 . (PortInfo % r 0 . & fe ⅱ in 「 + 701 : PortInfo % r 0 . PortInfo r 0 . , 705 : if(len > = % 「 tlnfo [ ん「 0 ]. ff Si ) Buffer is Pull tm. actim ・ / 加 rn ( 貅 IS の ; 7 : 「 tl 0 [ % 「 0 ]. ff [ % 「 tlnfo [ 「 0 ]. B fe a ⅱ % in 日 : (char)c; / ・ Add 面 Buffer 710 : 711 : : + + ( rtlnfo [ 「。 ]. ffe dil inte 「 ) ; / ・ lncrænt inte 「り 712 713 : ・ if(PortInfoCPortNoJ. 〉 = 714. 715 : % れ lnfo [ れ No ]. ffe 「 Si ) PortInfo[PortNo]. = 0 : 716 : 717 : 718 : 719 : (*(PortInfoCPortNo]. lnterr 叩 川 : 加 rn ( を ) : 724 : / ・ 725 : 7 囲 : int Si ff k ( int r 0 ) 730 : 加 rn ( ( んれ I 0 PortNo . R ff ⅱ % inte 「〉 = PortInfo r 0 . ? 7 : (PortInfo PortNo . PortInfo r 0 . ・ 735 : (PortInfo % r 0 . RdufferTailPoint.er + PortInfo % r 0 . RdufferSize PortInfo % 「 0 . Rduffer}ÄdPointer) 737 : 741 : / 事 7 : Ctmk 745 : int Si&xiBufferQmk(int ん r 謝 0 ) ・ return( 747. 7 朝 : ( % れ I 0 「 0 . %rdBufferTailPointer 〉 = PortInfo r 謝 0 . ? 7 : ( んれ I 0 「 0 . fe äil % inte 「 PortInfo % 「 0 . %rdBufferf•ÄdPointer) 752 : (PortInfo 「謝 0 . + PortInfo % 「盟 0 . PortInfo 「 0 . %rd.Buffer+ÄdPointer) 7 : 755 : 簡 7 : 759 : Cont 「 01 TS/M'R fo 「 1 760 : 762 : void Cm い 0 比 i ー 0 ( int 「 , int dtr) 7 : int cline; : cline : 町 i 叩 ( 翫 R [ 0 ] ) ; 767 : : if(dtr) 769 : 01i2 ト 01 ; : if(rts) 3 : cline ト 02 川 : 記 cline ト「 ( 0 2 ) ) : 行 6 : 町側 tp ( R [ 0 ]. cli : 事 / for i8 1 り / 事 N— interrupt Adjust ねⅱ X)in 「り / 事 PIC り / ・ st 優れ事 / / ・ R&t Syst—れ・ / / ・ lnterrupt & t 日・ / / 事蹴朝 e Plag ・ / 事 / / ・ If cl SIO 事 / / ・ CI 「 i れ「 pts ・ / / ・ Pinish PIC ・ / / 本 SIO-Buffer ・ / / ・貯興 SIO-Tx り 651 : 三田典玄のランダムアクセス 111

2. 月刊 C MAGAZINE 1993年3月号

三田典玄のランダムアクセス 1017 : 1018 : 1019 : void far int.c ー 0 ( ) 1020 1021 : 「 i を「 int 1022 : 「 iste 「 int 10 : int PO 「 tNO ・ 1024 : 1025 : % 「 0 = 0 : 1026 : 1027 : if ( 0X0 4 = ( 。 = ( 0x 07 & inp(IiR[0])))) 10 囲 : 1029 : 1030 : ((%れI羸。f%。盟。]. SioParueter)->SioSendXONJOFP)) 1031 : 1032 : 10 : %れI社0[P0「t恥]. ト S 駅 D - 進一環ー : 10 : 1035 : return; 10 : 1037 : 1039 : ((%:tI羅。そ所。住。]. SioParaæter)->SioSendXONJOPF)) 1040 : PortInfo[PortNo]. & = C ( S 駅 P ー一環ー佩 ) ) : 1041 ・ 10 : return ・ 1043 : 1g4 : % rtl 0 [ PO 「 0 ]. ffe 「 [ 「 tl 0 [ 「 t ]. R 師 ff TaiI ん in 「 ] = 1g5 : 1 : (char)ct; 1g7 : PortInfo[PortNo]. + + : 10 : 1g9 : if(PortInfo[PortNo]. Ra:BufferTailPointer > : 10 : 部「tInf0[新r謝0]. RæBufferSiz.e) 1051 : %「tInf0[新「盟0]. RdufferTailPointer = 0 : 1052 : 10 : 1054 : if((PortInfo[PortNo]. SioParaæter)->SioRw.'XON-XOPF) 1055 : 10 : 1057 : %れInf0[%「盟0]. RæBufferOffSize) 10 認 : 1059 : SioSend(PortNo,X_0PF); 1 0 : PortInfo[PortNo]. FIoüntrolBitMap ト R V ー町環 - : 1 1 : 1 2 : return ・ 1 3 : 1 4 : 1 5 : 1 6 : 1 7 : 1 % 8 : 1 9 : 1070 : 1071 : 1072 : 1073 : 1074 : 1075 : 1076 : 10 : el if ( 0X0 2 = 0 ) 1078. if(新れInf0[新「圏0]. 1079 : PortInfo[PortNo]. 1 0 : 1 1 : 本(%れInf。[%「謝。]. Interrupt0smation))(PAISE); 1 囲 2 : 10 : return; 1 4 : 1085 : iff(PortInfo[PortNo]. Si。ね。。,断)->Si。地ⅵX開」0Fの 10 : 1 7 : {(*(PortInfo[PortNo]. lnterr 叩 tOperation))(PAISE); 10 圏 : 10 圏 . / ・ If X 本 / 1 0 : return; 1091 : 1092 : if({(PortInfo[PortNo]. SioParatter)->SioSendC'lS (S) 1 3 : 1 4 : 1 5 : *(PortInfo[PortNo]. Interrupt0rm•ation))(PALSE): 10 : 1 7 : 10 : 10 : vhi le( I(0x40 & inp(IsR[0]))) : 11 : 側 tp ( 沢の , 1101 : PortInfo Por 0 ]. 面 ff [ rtl 0 [ % 「 0 ]. fferl 題 dPo ⅲ「 ] ) ; 1102 : 1103 : / ・ & incrænt ・ / 11 : 1105 : if ( rtl 0 [ PO 「謝 0 ]. > = 11 : PortInfoCPortNo]. 1107 : PO れ I 社 0 [ 「 0 ]. ⅵ BufferI 題 dPOin 「 : 0 : 11 : 11g : 1110 : if((u-int)0 く Si ー & 】 ff k ( % 「 0 ) ) 1111 : 1112 : 1113 : else (*(PortInfo[PortNo]. Interrupt0smation))(PAISE); 1114 : 1115 : 1116. 1117 : 1118 : / 事 1119 : lnterrupt psn 「 t Routines 2 1120 : ll I 訂 . A . I 、 Routines 1121 : 11 : 11 : void far in 一 10 1124 : ( 1125 : 「 i33 「 int 11 % : register int 1127 : int % r 0 ・ 11 四 : 11 四 : 「 0 = 1 : 1130 : : if ( 0X0 4 = ( 。 = ( 0x 网 7 & inp(IiR[I])))) 1131 1132 : 11 : ct = 0x & i 叩 ( R 駅 [ 1 ] ) : 1134 : if((ct = 0 ) 紐 1135 : ((PortInfo %「謝。]. SioParazter)->SioSendXÜOFP)) 11 : 1137 : 11 : 1139 : 1140 : 11 れ : if((ct = X-ON) 11 : ( ( % れ I 。 [ % 「圏。 ]. Sio r t ) - 〉 Si ー X ー X 健の ) 11 . 11M : % れ I 社。 [ 「 0 ]. FI ー IBit p & = 「 ( S 駅 D - 匯一 - 巫 ) ) : 1145. 11 郷 . return; 1147 : 11 . れ I 0 [ % 「 t ]. ff [ れ I 0 [ po れ ]. ffe れ iil % inter ] = 11 相 : 11 : / 事 S32 ・ / 1151 : れ I 社 0 [ r 0 ]. R«$uffe れ dil int.e 「 + + ; 1152 : 11 : if(PortInfo[PortNo]. 〉 = 11 : PortInfo[PortNo]. 1155 : れ lnfo [ 「 0 ]. R ffe れⅱ % ⅲ「 = 0 : 11 : 1157 : / 事 Mjust ß)intar 本 / 11 . if ( ( 「 tlnf 。 [ % 「。 ]. Siop - t ト〉 Si W.'X - 刈 ) 11 : 1160 : if ( Si ff k ( 「 0 ) > 1161 : PortInfo[PortNo]. 1162 : 11N. Si&nd(PortNo,LOPP); 11 : れ I 。 [ % 「盟。 ]. れ一 t 「。 IBit 0 ト V ー町一 : 1165 : 11 : return ・ 1167 : 11 : 1169 : 1170 : 1171 : 1172 : 1173 : 1174 : 1175 : Ⅱ 76 : 11 : 1178 : 1179 : 1180 : 1181 : el if ( 0X0 2 = 0 ) 1182 : if(PortInfo[PortNo]. %1ü1fferTai lPointer = 11 : PortInfo[PortNo]. 1184 : 1185 : ・ ( % れ I 。 [ 「。 ]. lnte な叩 t 曜 ration ) ) ( 財い E ) : 11 : 1187 : 11 圏 : 1189 : if( (PortInfo[PortNo]. 11 : SEND-XFIÆ佩 & % れ I 社 0 [ % 「 0 ]. FI bntrolBit p ) ) 1191 : ( , tl 。 f 。 [ , 。 ]. I 。 te , , 叩 t080ti0 ) ) ( PA 区 ) : 1192 : 11 : 11 : return; 1195 : 11 %. 1197 : 11 圏 : 11 : *(PortInfo[PortNo]. InterruptOrzration))(FAISE); 1200 : 1201 : return; 1202 : 1203 : i 地 ( KOX40 & inp(IsR[1]))); 12g : outp(ThR 1 ] , 1205 : PortInfo PO 「圏 0 ]. 面 ffe 「 [ ん rtl 0 [ 「 0 ]. f ・司 ) : 12 : + + (P0「tInf0[P0「盟0]. 1207 : 12 : 12 : if(PortInfo[PortNo]. 〉 = 1210 : PortInfo[PortNo]. 1211 : PO 「 tlnfo [ PO 「贐 0 ]. 面 fferl dPointe 「 = 0 ; 1212 : 1213 : 1214 : if(( int)0 く 1215 : ( れ。 [ p 。「 ]. Interrupt(hzration))(TRUE); 1216 : 1217 : else 1218 : 1219 : 1220 1221 : 1222 : / ・ 12 四 : 1 dlwk X - / 0 1 4 : 1225 : 12 : void % 「謝 0 ) 1 7 12 囲 : SioPinish ( % 「 0. 財 IS め・ : SioInit(PortNo. %「tInf0[%「謝0]. SioParazter); 1 9 1 剛 : ) 1 1 : 1 2 : / ・ 料 h SIO-REC 1 3 : 1 4 : 1 四 5 : 12 聞 : void % 「 0 ) 1 7 1 : vhile((u-int)0 ト Si ff k ( po 「 0 ) ) 1 : 1240 : ) 1241 : 12 : / ・ 12 : Strings 加 SIO 1244 : 1245 : 12 : void Si&ndStrings(int 「 t , c r 物 int ー ) 1247 int i; 12 : 1249 : 1250 : for(i = 0 : i く 1 印 : + + i ) SioSend(PortNo. (int)(•(str + i))); 1251 : 1252 12 : PortInfo[PortNo]. FlovCmtrolBit&p ト S D. ー一環ー佩 ; / ・「時 , it a 0 ⅳ 31Y.. character 事 / if((PortInfo[PortNo]. Si。極「“t6「ト>Si硬8(ー訂S) PortInfo[PortNo]. RdufferOffSize) Si 比 i 聞 ( % r 0.0.1 ) : % 「 tl 社 0 [ % 「 0 ]. :mt 「 olBi p ト RWV_ma,• return; / ・ Adjust ⅲ「り / ・ SAD ー事 / / ・ If s り if( ( % れ I Ⅱ f 。 [ 闍 ]. 、 crs-rrs) % れ lnfo [ Po 「 0 ]. Si 8t21Li2 ( % r 0 , 0.1 ) : % 「 tlnfo [ 「 0 ]. 財 p ト RWVMSÄ return; / 事 If X-OPF り / 本 SEND ー事 / / 事建 ffS ・ / If No 面 3 ・ / / ・ Mjust 「り / 事建 ffS 事 / 事 / / 事 Adjust 「・ / / ・ r i. 「 cni り / ・「時 , it 01 ly... り / 本山「 act “・ / 三田典玄のランダムアクセス 113

3. 月刊 C MAGAZINE 1993年3月号

8 師 : 3 = i 叩 ( レ R [ 0 ] ) & : : if(b) 側 tp ( [ 0 ]. (s ー 4 の ) : 部 1 : else 側 tp ( レ R [ 0 ] & C ( 0X4 の ) ) : 部 2 : 5 : Kake Bræk 2 907: : void keB 「 k ー 1 ( 1 b) 910 : int 3 : 911 : 912 : 3 = i 叩 ( [ 1 ] ) & 0x : 913 : 914 : if(b) 915 : 916 : 引記 outp ( レ R [ 1 ] 調 & C ( ) ) ) : 917 : 918 919 : 920. 921 : Line Status 1 922 : 924 : int far t い neSta 加 & ー 0 ( ) 9 : int 新島 lsr; 927 : 9 : 1 = Ox & inp R 0 9 四 : 「 = & inp 0 1 : return ((lsr くく 8 ) ー gr); 9 : 5 : ()t Line Status 2 9 : int far 0 : int 島 lsr; 9 : 13 「 = & inp IßR 1 9 郷 : 「 = & i 叩 1 催 5 : 加 rn ( ( 1 ”くく 8 ) ー nsr); 9 : 駅 K Sigml SIO 9 : 951 : 952 : void Si&ndBreak(int % 「 0 ) 957 : / 事 9 : 圏圏 K ー Si 1 SIO 1 : void 「謝 0 , 1 b) 5 : ローæk SI い s い t . 部 8 : Return-vaIue definai SIO. H 970 : 971 : 18g 師 3 : 18g PP; 974 : int p; 975 : u—int 9 : 1 = 978 : ( % 「 tlnfo [ % 「 0 ]. ffe ⅱ in 「〉 : 9 : %rtI社0[新「謝0]. ? 0 : (%rtI矼0[新「謝0]. PortInfo[PortNo]. RecBufferEWPointer) 2 : (PortInfoCPortNo]. + PortInfo 「 tNo . RecBufferSi 4 : PortInfo 「 0 . 6 : p = ( 0 = ( S 圏 D - 一 - & % れ lnfo [ r 0 ]. it p ) ) ? 7 : 0 : 圏 8 : 9 : : p ト ( 0 = ( R V ー X 町ー佩 & % 「 tlnf 。 [ % 「謝。 ]. 料い。 lBit p ) ) ? 1 : 0 : 2 : 咫 AB , 圏 4 : p ト = PortInfo[PortNo]. RdufferSize) ? 5 : R 一聞駅一阯 圏 8 : p ト 0 > PortInfo[PortNo]. (d)Buffer0fßize) ? R 暖 - 測駅ー N R - 和阯 1 0 : 0 : 1001 : ・ p ト (Si&rn1fferCheck(PortNo) > PortInfo[PortNo]. 1002. 10 : ? S D - 国駅ー N & 駅 - 阯・ 0 : 1 4 : 1 : = ( ( ( 1 ) p & 0x 00 町 . ) くく 16 ) ; 10 : 1 7 1 8 : 1 : ”ト ( ( 1 ) p & 0X00 F れ ) : 1010 : 1011 : return pp; 1012 1013 : 1014 : / ・ 1015 : lnterrupt Sumrt 1 1016 : 11M I 訂 . A : RSINTR Routinæ 7 : Cmt 「 01 RS/DN for 2 7 : void CmtrolLine—1(int 「 , int dtr) 785 : int Cl ine; 7 : 01i8 = R [ 1 ] : : if(dtr) ト 0 1 ・ 兜 1 : “ cline & = い ( 0 1 ) ) : : if(rts) 7 : 01i2 ト 0 2 情 : ” cline & = C ( 0 2 ) ) : : W-outp(McR[1].cline); 801 : C 81 rrs & 802 : 804: void SiüntroILirE(int r 0 , ー Rts . ー「 ) 805 : 807 8 : 809: / ・ 810 : l-crnracter frcn RW-SIO-Buffer 811 : 812 : 813 : int 「圏 0 ) 814 815 : int RædByte; 816 : 817 : if(PortInfO[PortNo]. = 818 : % れ I 矼 0 [ 「謝 0 ]. ffe 「 Tail inter ) 「 e 加 rn ( の : 819 : 820 : 821 : RædByte 8 : 00 & : (int)PortInfo[PortNo]. R8師ffe「[%れIれf。[%「謝。]. 8 : れ lnfo [ 「 0 ]. fferl dPO ⅲ「 + + ; / 事 Readout い 827 : if ( れ I 0 「 0 . 〉 : 8 囲 . PortInfo 「 0 . RæBufferSize) / 事 Adjust り 8 四 : 2 : if((RWV_XPIÆ-(X & % れ I 0 [ % 「 0 ]. 財 bntroIBit p ) 組 ( Si ffe ~ k ( 「。 ) く PortInfo[PortNoJ. RecBuffeüSize)) Si&nd(PortNo.O); れ I 0 [ % 「 0 ]. 町い OIBit p & = if((RWV 佩 & れ lnfo [ 「 0 ]. PI bntroIBit 地 p ) (SioRæüfeaæk(PortNo) く tlnf 。 [ 。 ]. ff 礙 i ) Si t 「 0 比 i ( % 「 0.1.1 ) : % れ lnfo [ % r 0 ]. p & = C(RECV-TS. 巫)); 851 : : return(RædByte); Br•k 加 1 : void k ー 00 1 : int 町 : outp(LcR[01(s ー 40 ) ) : : Activat&mter(SYSTM 訂駅ー 1 , OL ) : 7 : vhile(WAIT -- Ⅶ間「 > R d 側 t m 断 ( SY 訂明ー観訂駅ー 1 ) ) ; : st 。 ount ( SY ー駅ー 1 ) : 870 : outp ( [ 013 ) : 871 : ) 873 : / ・ Bræk 加 2 874 : 875 : 876 : void B 「ー 1 ( ) 878 : int 町 8 : 圏 1 : 側 tp ( [ 1 ]. ( 3 ー 4 の ) : 2 : 3 : 記 ti 冊 t m 「 ( SY 訂額訂駅 2. OL ) ; 4 : ile ( IT -3 ~. - Ⅷ切「 > Radout 師田断訂謝ー訂駅ー 2 ) ) : 5 : St 。 mte 「 ( 訂ー観訂駅 2 ) : 圏 7 : outp(I.cRC1], 3 ) : Bræk 加 1 1 : 3 : void keB 「 k ー 0 ( 1 b) 5 : int 3 : 事 / / ・ If No 面 t り C MAGAZIN E 1 3 3 112

4. 月刊 C MAGAZINE 1993年3月号

四 7 : WAIT; : 「 6 加 m 面 : 1 : void W—outp(int 店 int ) SIO-Buffer : #pragn 叩 ti 第 i ( ”” . 5 : WAIT; : (void)outp(p,data); 303. NAIT, 417 : ( 5 : INIT lnterrupt Cmt 「 011 2 1 : 加 rn in 2 [ 0 ] : 0 : 知ー i ー sla 冊 : 0 : れ 9 : 町 tp ( 円 C ー保 . ( 知ー i 町一 ) & ) , 8 : 知 iur 盟 33r = W—inp(PlC-O): / 事 i82 sk り 事 / 8 : int far コ延ー ste 「 , int ー i ー 31a ) 452 : ) - 454: / ・ 478 : / ・ 527 : CLI; 310 : / ・ 311 : 312 : 313 : 315 317 : 318 ・ 319 : 320 : 1 : 3 四 : 327 : 3 四 : 3 四 : 0 : 1 : 351 : 352 : / ・ 355 : 357 : ( 1 : 聞 2 : / ・ 聞 8 370 371 : 372 : / 事 373 : 377 : ( 3 : ) 2 : 1 : 3 . 397 : 401 : / 事 402 : 4 : 410 : } 411 : 412 : / ・ 413 : 414 : 415 : 416 : / ・ i82 nsk 事 / 314 : clnr &tBuffer(int ・ 1 . int nin) if(nin 〉可 ) 可 / = 2 : 325 : return p; 「 e 加 rn ( ( c 恤「の ) : 5 : W-outP DIL 0 .31 一 t C«mterVa11.E ) ; 4 : W-outp ICR 0 . ) : 2 : void far 川 te ) Counter fO 「 i 「 Y SIO Of t01 3 : W—outp DIM 1 .31 ー tbl 師川 terV 引 > 〉 8 ) : 7 : W—outp DIL 1 .31 ー tbl ) : 3 : W—outp I.CR 1 . 0X8 の ; 3 : void far CounterVaIue) 田「 fO 「 prinry SIO Of -01 -2 7 : W—outP LCR 0 . ) ; 3 聞 : DIM 0 .31 ー tbl 川 terV 引 > 〉 8 ) : lnitialize 0 ま 4 府 2 : 側 tp ( 翫 R [ 1 ]. ) ; 5 : void far R 部 etU 訂」 ( ) 0 就 2 378 : ー側 tp ( 翫 R [ 010X ) : 376 : void far 0 ( ) 0 訂 Reset 1 9 : W—outp MCR 1 , 0 B ) ; = W—outp レ R ト 1 , 0 = 3P & 0 節 ) : : void far tU 訂ー 1 ( int kxidord) 3 : void far O(int 0 「 d ) lnitialize prinry 05 9 : W—outp ICR 1 ,OXD; / ・ Mfer Size ・ / / ・ Not nough Ä)ry S88 ・ / / ・ Counter ・ / 事 / / ・ t 叩 Counter ・ / / ・ t 叩 Cmnter ・ / 事 / / ・ t 叩師川 te 「・ / 2 : 」延ー 31a 冊 = 0 ・ 4 : 加 rn in 2 [ 11 : 語 t systn れ 1 0 : void far ResetSyst—Port 00 : 町 outp ( I 駅 [ 01 の : Ræet systæ B)rt 2 9 : void far ResetSyst•Port 1 ( ) 翡 1 : ー outp ( [ 1 ]. の : Ræet PIC for 1 4 : void far Reset 円 C—O(int nster,int 引 a 冊 ) 0 : int 店 = 。 tB ( PIU ーー 7 ・ 1 の ; t PIC for 2 470 : void far ResetPIC—l(int 盟 st.e 島 int & la 冊 ) 472 : int p; = ー i 。 p ( 円 C ー町保 7 lnitial S10-syst.e 朝 2 : - 1 SioInit(int % r 0. P 事 r 明 ) 4 : int ord ・ : if ( % 「 tl 社 0 [ % 「謝 0 ]. SioIn の printf("S10:AlræiY *. つ : 4 : 450 : ( 455 : 457 : 5 : 郷 7 : 471 476 4 : 8 : 相 1 : 495 : 1 : 2 : 繝 : 5 : 7 : 510 : 511 : 512 : 513 : 515 : 517 : 519 : (PortInfoCPortNo]. Rduffer = 4 % : if((char の乢 4 : れ I 0 「 0 . 4 : PortInfo 「 0 . 4 : PortInfo % 「 0 . SioParaæter 「 et n ( LS め : 事 / / ・ ra t ” / ・ If Alrady SIO 事 / -- R V. - 測駅 SIZE; 期 K. - S D - 別駅ー SI 四 ; EmbIe/DisabIe lnterrupt st 健「 t cmtroll 1 3 : void far S') 395 : if(sv) W-outp(IeR[0],1); 町 outp ( I [ の , の ; / ・ INT &Lble ・ / / ・ Reset INT 並 b 地・ / &LbIe/DisabIe lnterrupt Syst-—れ cmtroll 2 int 知ー i ー 31a 冊 ) 事 / / 事 INT b ・ / *. INT b ・ / 事 / 4 : void far S t10 「 tlnte な叩 t い e ー 1 ( 1 sv) W-outp(IeR[1],I); : if(sv) int far %tPIC-O(int ー i ー盟 & 島 INIT lnterrupt CmtroIIer 1 側 tp ( I 駅 [ 1 ]. の : t ff ( & ( 「 tlnfo [ 「 0 ]. ffe 「 Si ) を N ー R V ー駅ー SI 四 ) ) ) printf( ” SIO:Cannot get ff . 物つ ; 加 rn ー区・ 5 : if((char の ( れ I 0 [ % 「 0 ]. & 】 ffer = t ffe 「 ( & ( 「 tlnfo [ 「 0 ]. ffe 「 Si ). MIN-SEND-WFPQ-SIZE))) printf("SIO:Cannot ・ get ffe 「 . つ : 「 6 加 rn IS 区・ 514 : % れ lnfo [ 「 0 ]. R Buff & PortInfo[PortNo]. / 4 : 516 : 「 tl 0 [ 「 0 ]. R ffe 和 ffSi ( % 「 tl 0 [ % rt ]. RdufferSize ・ 3 ) / 4 : 518 : れ I 0 [ ん「 t ]. ff ize れ I 0 [ % 「 0 ]. / 4 ; 520 : 齏れInf0[%r盟0]. ( % れ I [ t ]. f Si 四事 3 ) / 4 ; 522 : れ I 0 「 0 . = 0 : 5 四 : PortInfo 「 t . R«:BufferTaiIPointer : 0 : 524 : PortInfo 「 0 . = 0 : 525 : PortInfo % 「 t . %MBufferTailPointer = 0 : 0 : in 昭 . 曲 : I 訂・ 531: i 叩「昭五 al = ( u ー 6 in 盟 50 [ 「謝。 ] : 2 : int x ( I 訂 - . & i 叩「 , & out 「 . 「 ) 5 : 「 tl 社 0 「 t 洳 . v lnte 「印 ff 協 = 側 tr %. ん : 110 C MAGAZINE 1 3 3

5. 月刊 C MAGAZINE 1993年3月号

三田典玄のランダムアクセス int int 60 : int int 62 : int 0 恤 r &niffer; / 本 Vecter m±r 65 : int InterruptVæterNo; 聞 : u—short / ・ For lnterrupt り 67 : u—short int v I 町 & ter : int v I Sla 冊 ; far *InitiaIize—Sys 「 t ) ( ) : / 本 PO 「 lnitialize ・ / void 71 : far 72 : void far *lnitialize 0 灯 73 : void far *lnitialize—lnterrup&ntroller)(); int far *Interrup&rviæRoutine)(); 75 : void / ・ Por finish ・ / far *Pinish-Syste—Port)( : 76 : void far *InterruptOßration)( ・ void far *Pinish—USM)(); 78 : void far *Pinish—Interrupt Cmt 「 01 地「 ) ( ) : void 79 : 80 : bntr 。 1 S m)(); 81 : void far t ) 0 ; 82 : int void far ・ keB 「 k ) ( ) ; void 87 : strwt SioPort KMINPO; ( 2 ) 圏 : #define MAX-SIO 91 : #define 0X03 3R1 92 : #define 0X03 D 1 : #define RI : nefine 第 1 03 : #define DIAI I 駅 1 03 覊 97 : #defiIE 1 0 3 : uefine RI 0x03PE 圏 : #define RI 1 : #define 0 3FA IIRI 101 : 102 : efine IßR2 0X02 1 : uefine DL12 104: #define 105 : 記 efine 駅 2 0X02 1 : D 靨 2 107 : #define IQ2 1 : #define 0X02 1 : 0X02 110 : #define 02 覊 I IR2 02 111 : #define 112 : / 事 i82 IMR り 円 C ー町保 0 1 113 : #define 114 : / 事 - SYSTÆ-CALIs り 115 : #defirE I れ一 0 1 ) #define nINT 0 ⅵ 0 3 ( 35 / ・ v ー加 0 ( 一面・・ / 116 : 117 : kiefine M—INT #defi1E INT 82 一町 ( 凹 sign / ・ i8250 lnterrupt N. 0. 118 : #define I こ 8250 ー chr)(0x0B / ・ i82 lnterrupt N. 。 . り 119 : 120 : 11 XO 121 : #define 0X13 / ・ X -0 取 ( 8 ・ / 122 : X 』取 0x1B / 事 & ・ / 1 四 : 124 : int ー tbl ロ = 125 : { 15 . 7 . 4. 1 , 以 6. 3 ) : 1 % : 127 : 1 囲 : 凹 si 0 r ⅲ 2 [ 2 ] = ( I れ一 82 ー PI , I 訂ー 8250 ー SÄD } : 129 : IßR1 靆 } : 130 : int LcR 2 131 : int DIL 2 DI ↓ 1 ゆ L12 132 : int RN 2 RI. 1 : int ThR 2 駅 1. 駅 2 134 : int DIM 2 D 1 ゆ 2 135 : int 1 2 I 駅 1. I 駅 2 1 : int McR 2 RI , 137 : int IßR 2 ISRI 靆 1 : int MsR 2 MSRI, 1 : int IiR 2 = IIR1,IIR2 140 : 期 X ー R 眈 V ー駅ー SI 141 : #define ・ Mfer ・ / ( ( u ー血 ) ( 20 ) 懸ー S D - 別駅ー SI 1 : #defitE / ・ . Buffer ・ / 144: MIN. _RECV MJPFQ_SIZE u—int 2 145 : uefine MIN-SEND 聞駅ー SI 四 u—int 1 囲 1 : 147 : C_N 1 : C_TS 1 朝 : #define ( ( 1 ( 側 1 の ) 1 印 : UefirE 151 : 152 : #define AB 0 0 1 : 記 RXENABLE REC PF 駅ー 10g 1 : 155 : s 5- pp 駅 . -N R ー川↓ 4 网 1 : #defirE 157 : 1 : #define CLI 1 : #define STI 160 : #define io-nit() WAIT 161 : 162 : rn void far rsintr_0 void 1 : extern void far rsintr 1 void 1 : void far tCo 「一 0 int 165 : void far tCo 「 1 int 1 聞 : void far %tUSm 0 int : tU 訂ユ int ; 167 : void far 1 : void far SystaPortInterruptEnabIe-O 169 : void far SystæPortInterr 叩 tEnable-1 ・ int far 170 : 0 int int 事 %tPIC1 int int 事・ 171 : int far 172 : void far ResetSystnPort 0 void 173 : void far R e tæPort. 1 void 174 : void far int, int 175 : void far ResetPIC_1 int, int 176 : void far R ” etU 訂 0(void); ResetUSAR l(void); 1 行 : void far &nbl&dinterrupt O(int 178 : void far Enabl&MInterrupt l(int 1 四 : void far O(int, int); 180 : void far CmtroILiIE—1(int. int); 181 : void far GetLineStatus-O void); 182 : int far 1 void); 1 圏 : int far 1 : void far Bræk_. 0 void 185 : void far void 1 : void far KakeBræk—O int 187 : void far keB 「 k. -1 int 1 圏 : PortInfo[MALS10] = ( 1 : RMINPO 1 . 191 : E. ( P の N Ⅲ 1 : 1 : 0. 0 , 1 : 195 : 0. 0 , 1 % : 0 , 1 : 0. (char の広 0 , 201 : 0 , 0. 202 : 203 : 0. 204: 0 , (char の広 205 : 0 , 207 : u—short 0 , 2 囲 . 0 , 210 : 0. Syste•PortInterruptEnable-0. 211 : tCo 凹 te 「一 0. 212 : 213 : 214 : 215 : rsintr_0, R e t10 れ -0 , 216 : b 面 ln 「 rupt ー 0. 217 : R 部 etU 府 0 , 218 : 219 : ResetPIC_0, 0 : 1 : Brak 0 , MakeBræk-0 2 : 255 : 257 : 259 : 0 : % 1 : 3 : #define S D - 一環 -. 佩 4 : #define R V - 一佩 5 : #define 則 : #define RWV-RTS-(X 80 8 : unim inpreg ・ % 9 : union RÆS outr ・ 270 : st ロ t 駅新 S 3 昭 : 272 : 1 Sint0 = 貅 E 273 : 1 Sint1 = FAISE ・ 274 : 275 : / ・”韓 276 : I/O hit Ptmctims 2 : 事 / : tpragn optinize( ”” .off) io-nit() 囲 1 : void 四 2 : ( 囲 4 : inp() outp() 響 i 山 it - を 四 1 : int W—inp(int p) 四 2 : ( 四 3 : int 面協 : 四 5 : WAIT; / 本 Por Sa&Buffer り ( P 肌の広 0 , 0. 0 , 0. 0. (char の広 0. 0. 0. 0 , 0 , (char の珥 0 , u—s 面 030 , 0 , SystaPortInterruptErnbIe—1. tCo ter ー 1 , int 「 -1. t10 れ一 1. b 地 ln 「 rupt ー 1 を se 圓 SA 訂ー 1 , ResetPIC_1, ( mt 「 0 比 irE ー 1 , t い neSta 加 3 ー 1. 0 算 10 三田典玄のランダムアクセス 109