📄 readme.fasi
字号:
FAS/i is a special-purpose, unsupported version of FAS 2.08 forthose who need to have non-portable, but extended access to their tty driver.Reasons to use:1. You get cumulative statistics on such things as receievd andtransmitted characters, modem signals and device errors. As anexample of the information available, the ecu interactive 'fasi'command produces:base address: 0218 irq=3 device is 16550MSR=*CTS*DSR* MCR=*DTR*RTS*OUT2*LCR=*8db*1sb*NOPAR* IER=*RDAV*TBMT*LS*MS*recv ring cnt=0 xmit ring cnt=0 xmit fifo size=16characters received = 3097characters transmitted = 22407modem status events = 137overrun errors=0 framing errors=0 parity errors=0rings detected=0 breaks detected=0xmtr flow off XON/XOFF=0 RTS/CTS=31rcvr flow off XON/XOFF=0 RTS/CTS=0driver: 'FAS/i 2.08.0'space.c: 'FAS/i 2.08:{1,4,03f8-03ff,COM1},{8,3,0210-024f,DIGI-PC8}'2. There are no other reasons to use.Reasons NOT to use:1. It is not supported. It is released configured for one COM1 (irq 4)and one 8-port Digiboard PC-8. I will help with any issue that I can,but I will be very uninterested in answering questions like "How do Iget FAS/i to work with my PacificRim ModemBlaster 4800?"2. It is less efficient than FAS. Statistics take CPU cycles to accumulate.Also, Uwe has done an indescribably superb job of optimizing the driverfor efficiency. I have not analyzed the effect my changes have made tothe micromanagment of emitted code Uwe did, but it cannot have but harmed.3. The driver is non-standard. It barks in the face of most ofwhat I look for in well-produced software.4. Uwe will continue to work magic and this driver is unlikely toinherit it.5. FAS nor FAS/i appear to support DOS access to communicationsdevices through MERGE.Now, you say, why does that Tucker kid want to turn my tty driverinto a newt ("Well, [it] got better.")? Because it can be very usefulif you are developing asychronous communications systems. I findit very useful to know how many times CTS fluctuated during a testsession. Like the 'ecufriend,' it isn't for everyone, but if youneed it, there it is.>Message-Id: <m0jXaOF-0000ElC@geminix.in-berlin.de>>From: emory!geminix.in-berlin.de!gemini (Uwe Doering)>Subject: Re: [Request permission to distribute FAS 2.08 instrumented version]>To: wht@n4hgf.Mt-Park.GA.US (Warren Tucker)>Date: Mon, 29 Apr 91 17:43:51 MES>>Hello Warren,>>>...I am writing is to ask your permission ...>>to include with ecu a modified FAS 2.08 I am calling FAS/i (for>>instrumentation) so you can have access to statistics >> [some stuff deleted]>>You sent me the necessary patches some time ago. Since then I tried to>make up my mind about this issue. I decided now that I won't have the>patches in the official FAS release. There is a reason for that. I want>to keep FAS as clean as possible from the application program standpoint.>[some stuff deleted]>>You have my permission to release your special FAS version, but please>make it clear in the docs that _you_ do the support for it, and>that it is no official FAS release.>> Uwe>-- >Uwe Doering | INET : gemini@geminix.in-berlin.de>Berlin |---------------------------------------------------------------->Germany | UUCP : ...!unido!fub!geminix.in-berlin.de!geminiThe strength of my earlier comments is driven in part by Uwe's comments.I will be very disasppointed and red-faced if Uwe gets ONE query orrequest in regard to this hack. I will be similarly dismayed if hegets one comment pro or con about folding these features into theofficial FAS.This is a dead-end, special-purpose junkbox addition that just happensto be potentially useful.Now, with all that out of the way, here are a few useful tidbits:1. Configuration and installation are for the most part similar tothe standard FAS as of this writing.2. You will need to manually create a /usr/include/local directorybefore you begin any makes.3. The original FAS 2.08 functionality may be restored by turningoff #define FASI in several places.4. It has been used only on SCO.5. To use with ECU, you'll need to hack -DFASI_IN_USE into theecu Makefile. The other programs in ecu don't need to know about it.(Hint: ecufriends can make good use of the features.)6. If you turn on FAS/i support in ecu, you get the undocumentedfasi interactive and procedure commands and these %functions:Integer functions:%fasi defined for all ecu versions; returns 1 if FAS/i support included, else 0 if not. The other functions will cause procedure termination with undefined function errors "ifi %fasi==0".%msr MSR current value%lnerr accumulated FE+OE+PE count%ridet accumulated RI count%brdet accumulated BREAK countString functions:%msrtext MSR current value in string form for easier (less efficient) MSR inspecition. You can do something like $s20 = %msrtext ifi %instr($s20,'CTS') echo 'CTS present' ifi %instr($s0,'RING') echo 'We are receiving a RING this very instant')The returned string is one or more substrings separated by asterisks.So, you might get 'CTS*DSR*RING*'. The list of substrings, one for eachbit in the canonized 8250 MSR:dCTS delta CTS <---+dDSR delta DSR | you are unlikely to see thesedRI delta RI | since the driver catches interruptsdDCD delta DCD <----CTS DSR RING DCD 7. The fasiintf.c modules contains examples of each FAS/i-specificioctl. These are also the only 'documentation' ever likely to beproduced for them other than this list:FASIC_SIP get entire fas_info structFASIC_MSR get various registersFASIC_LCR FASIC_IER FASIC_MCR FASIC_DVR_IDENT get driver revisionFASIC_SPACE_IDENT get space.c revisionFASIC_RESET_STAT reset statistics8. This hacked 'release' is in the style of a purpose-specificdriver. If you have an SCO UNIX 3.2.x system with a standard COM1port and a Digiboard PC-8 on COM2, man are you in luck. Otherwise, while(!bored && !fed_up && !success) { adopt(); adapt(); improve(); } /* "... I always say." -- thanks to John Cleese */ exit(!success);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -