home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
cprog
/
spp.zip
/
SPPMAN.TXT
< prev
next >
Wrap
Text File
|
1992-01-21
|
33KB
|
1,268 lines
Serial++
Interrupt Driven Serial Ports for C++
from Cortlandt Technologies
Serial++ Version 1.0
by Cortlandt Technologies
P.O. Box 195
Pleasantville NY 10570
_______
____|__ | (R)
--| | |-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
-----| | |---------------------
|___|___| MEMBER
This program is produced by a member of the Association of
Shareware Professionals (ASP). ASP wants to make sure that the
shareware principle works for you. If you are unable to resolve a
shareware-related problem with an ASP member by contacting the
memberdirectly, ASP may be able to help. The ASP Ombudsman can
help you resolve a dispute or problem with an ASP member, but
does not provide technical support for members' products. Please
write to the ASP Ombudsman at 545 Grover Road, Muskegon, MI 49442
or send a CompuServe message via CompuServe Mail to ASP Ombudsman
70007,3536.
Copyright Notice:
Serial++ is Copyright (c) 1991 by Cortlandt Technologies. All
rights reserved.
This manual is Copyright (c) 1991 by Cortlandt Technologies. All
rights reserved.
Warranty Disclaimer
CORTLANDT TECHNOLOGIES MAKES NO WARRANTY OF ANY KIND, EXPRESSED
OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY WARRANTIES OF
MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
CORTLANDT TECHNOLOGIES DOES NOT ASSUME ANY LIABILITY FOR THE USE
OF THIS SOFTWARE BEYOND THE ORIGINAL PURCHASE PRICE OF THIS
SOFTWARE.
IN NO EVENT WILL CORTLANDT TECHNOLOGIES BE LIABLE TO YOU FOR ANY
ADDITIONAL DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR
OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING FROM THE USE
OF, OR INABILITY TO USE, THIS SOFTWARE AND ITS ACCOMPANYING
DOCUMENTATION, EVEN IF CORTLANDT TECHNOLOGIES, HAS BEEN ADVISED
OF THE POSSIBILITY OF SUCH DAMAGES.
Table of Contents
Introduction........................................4
Hardware/Software Requirements......................5
Installing Serial++.................................6
Installing .LIB Library Files.......................7
Installing .H Include Files.........................8
Using This Manual and Serial++......................10
Serial Ports...................................10
Break Trapping.................................13
Memory Models..................................13
Serial++ with Overlays.........................14
SerialPort Function Reference.......................14
constructor....................................14
destructor.....................................15
getBreakOff....................................16
getCommPort....................................17
getDataBits....................................17
getLSR.........................................18
getMSR.........................................19
getParity......................................20
getSpeed.......................................21
getStopBits....................................21
inbyte.........................................22
inmem..........................................23
instr..........................................24
isOwner........................................25
lineOK.........................................26
outbyte........................................27
outmem.........................................27
outstr.........................................28
sendBreak......................................28
setMCR.........................................29
unbyte.........................................30
constructor....................................31
destructor.....................................31
breakCt........................................32
isBreak........................................33
isCaptured.....................................34
isOwner........................................35
operator().....................................35
reset..........................................36
Serial++ is Shareware..........................38
Registration Information.......................38
Limited Distribution License...................39
Introduction
Serial++ is a library of small, safe, and efficient routines that
bring interrupt driven serial port support to your C++ programs.
It is compiled and linked with the Borland C++ compiler, and
supplied in the form of a set of ready to link object libraries.
The routines in Serial++ are as easy to use as file i/o in C, yet
give you complete access to the registers of the 8250 UART,
should you require it. They allow you to read characters from
and write characters to two serial ports simultaneously, in a
fashion very similar to stream i/o in C. Support for iostreams
as defined in C++ version 2.0 is not available as of this
release.
Implemented as C++ classes, the Serial++ library handles multiple
ports and multiple instantiations with ease. The SerialPort and
BreakTrap classes contain all the internal housekeeping necessary
to deal with multiple instances of the each class using a single
port. It is because of this feature that Serial++ lends itself
nicely to event driven applications.
Serial++ protects your applications from keyboard breaks,
(pressing the Control-Break or Control-C keys), to insure that
the necessary interrupt housekeeping is completed before
terminating,. This guarantees that premature closing of a
Serial++ application will not leave your system with invalid
service routine addresses hooked to the serial interrupts..
By default SerialPort will perform an orderly shutdown when a
break key is pressed, and exit to DOS. You can, however, specify
that keyboard breaks be handled in your own application code, in
which case SerialPort will continue to operate and ignore the
break. See the section on break trapping for details on how this
works.
You can also use the keyboard break handling in Serial++ by
itself. The BreakTrap class is entirely independent of the
SerialPort class.
Serial++ is linked into your C++ programs just like any other
library. There is absolutely no requirement for external TSR's -
- applications using Serial++ are completely self contained.
4
Hardware/Software Requirements
Serial++ may be used on any PC or PC-AT compatible computer,
running on an Intel(Tm) 8088, 8086, or 80x86 family processor or
compatible, that uses standard port addresses for COM1 and COM2.
It is worth mentioning that Serial++ assumes that your serial
port hardware makes use of the National Semiconductor 8250 UART
chip, or a clone of it. It is almost unheard of to find hardware
that uses anything else, so if you don't know what your serial
board uses, you're alright. Be aware of this issue though, if
you use some sort of exotic or proprietary serial boards in your
machine. When in doubt, try executing the demo program on your
target machine.
While Serial++ is unaffected by machine speed, and has been run
on machines operating at 4.77 to 33 MHz, it does expect to find
the serial ports and interrupt vector addresses at very specific
locations:
Device Base i/o Address Int. Vector Address
COM1: 0x03F8 0x000C
COM2 0x02F8 0x000B
Keyboard:
Ctrl-Brk n/a 0x0023
Ctrl-C n/a 0x001B
If you have difficulty getting the demo program to work, you
might want to consult the technical documentation that comes with
your computer to verify the addresses shown above.
Serial++ requires MS-DOS, version 2.11 or higher. [The library
has been tested and works with version 5.00]. Serial++ uses DOS
functions for saving, setting, and restoring interrupt service
routine addresses.
While it is running, Serial++ traps the interrupts mentioned in
the table above. Although it restores the addresses of the prior
service routines upon exit, while it is running Serial++ could
interfere with any TSR's that utilizes any of the listed
interrupts. Consult the documentation of any TSR's you use that
provide serial communications or respond to the Control-Break or
Control-C keys.
5
Installing Serial++
Serial++ is distributed as a self-extracting archive file,
SPP.EXE. The first step in installation is to copy this file
into a work directory and execute it by typing:
C:>spp
at the DOS command prompt. SPP will announce each file as it is
unpacked looking something like this:
. . .
READ.ME .
PACKING.LST .
SPPL.LIB .
BREAK.H .
SERIAL.H
SPPS.LIB .
. . .
After you have expanded SPP.EXE into its component files, you may
delete it from your install work directory, to save space.
The first file to check is READ.ME, which may contain updated
information about Serial++. You may also wish to examine the
contents of PACKING.LST, which lists every file in the package,
along with a brief description.
The files included in the Serial++ package fall into the
following groups:
> Library files, SPPx.LIB. There is one library file for each
memory model supported by Serial++.
> Include files, *.H. These are C++ source includes that
define the public interface of the classes that make up
Serial++.
> Demo related files, *.CPP, *.BAT, *.MAK, etc. These files
are included to provide you with some examples of how to
use Serial++. They include an executable demo program,
SPPDEMO.EXE, which is ready to run.
> Documentation, READ.ME, PACKING.LST, and the file that
contains this document, SPPMAN.TXT.
In order to begin using Serial++, you must place the library and
include files in a directory where the C++ compiler and linker
6
can
ting,. Thisright. B and linker
n your
k
Ps t e Borlak
DEMOing
s of thi
t place the library a
, hat make up
e spt files containsde files
hey iMAN.TXT machine. Whenntirely thibwitn that your seri LibrarompaplXT.tilizes anyhousekeeping is ition, READ.Ms usipanded SPP.w execannoums
i/o in C. rhing like this:
6 . . .
our cecannm
s e Dopd proma w execao e, i
s READ.ME,am to lre maibws o SPPSplXT.mmputer,
run
/o iur
EAD.Ms
he rs Rdeta*.Bthoug,
yary files, SPPx.bPSplXT. he faufromor each
pt. m
intoekeeping is it . . .. READ.ME .
Serial+F C++ cK, etc. These figoof a
anno EAD.Ms
ao annmde you wiizes any of the listse
ude
if ybyrt for iostreamsn C. r, TLINK.an execdoes expect to firont y
ao ins fine infor like this:
1+ us wiizes ani.Ms usng:
nded SPP.w execibranourclly containsde i/o in C. fashiy be us iostreams
compiler and linkerutorce ccllytse
u urrromor each
,
compiler and linkeles to ls ftlyta works usip usng: save sp e compiler and linke
save sp e
e to opei++
rt.
uter,
runect to firontopd pro. ng:
nded SPP.ibra following gro runect to h
ens thibwsng:
nded SPP.w execibrade i/o in C.
Ps t e Borlakone lzes ani.Msr
.
ed!or like this:
- ORioni like this:
2 py
(pressini.Ms uyou wiianded SPP.w execann Ps t e Borlakoprietaryressini.Ms ybyrs iostre S e to op contains nded SPP.s ope drutorce ccllytse
f ybyrt fo
e containsnntratinit . . .s,
n dou Brebiianded SPP: contains like this:
\BORLANDC\ compiler and linke
can
nle.
the
deangedrial++ self. s iostreanded SPP
can
naesse tF is ng:
nded SPP.w execibra following
Ps t e Borlakce Ba s R, to save ss: contains like this:
e i PYllow? \BORLANDC\ compiler and linkeeeeeeeeeeeeee( vec ,
Ke this
) contains like this:
e i DELllow? compiler and linkeeeeeeeee(ao ride
s
adyial+ i.M.) contains like this:
or like this:
- ORioni like this:
3+ us wiizes ani.Ms usng:i Thereor each
stredeangecann Ps t e Borlak
'sizes anyhse
ude
e to ope biiins fin. These are C+ing is it s e D y: contains like this:
s iostreIDEk
,re is a
usng: like this:
environmmput Opd promDr eachi.ME,atre you with some exam, SPPx.bPitnn break.ght wa
ude
wiianded SPP. orde compiler and linkede files
(pressini.M. wfin. lXT. runect to finmde ianded SPP.\ It i
,ed in ywizes anyhse
hing like this:
7 looking something like this:
de
ntai : contains like this:
\ ;\BORLAND\ ;... contains like this:
suxecao d inenvironmmput intoer t Serial+deangecbP
can
SerOpd promS f is ng:mmpu. contains like this:
I wort ly,cibrade Bre sCIN, wps the i like this:
a
s iostreamsao r to ial+deangec s usng:IDE like this:
ds the ial++ m, sC Agile,e y
th you with some exam, SPPx. (pressinypanded SPP.EXE ctedl usnou with some exam, SPPx.bPitnn break.ght zes anyhse
ude
e contains like this:
prefly t save sp e
sCCing
as it is
a
des de figur
> Libra you e d insaess it is
Slf. am P, *.Bb
sbyrthat yt fo
ntioL
can
a
c e tAs ,+deangat yt fo a
c thi
s o: contains like this:
-L\ ;\BORLANDC\ ;... contains like this:
ou Bre
.ert y
th you Ke hypot fe ccl PACKike this:
ressini.Ms nded SPP.suyou wiise
ude
e READ.ME .
Htation, RF C++ cK, etc. Thes Installte us iostreams
eandD.Msse
Itition, th some exampAD.Msa rettlle it erromlP. orn ressini.M,les,as ccllytsimila distributed aREAtegy ile f Itit.
rief de.EXE ekeeping is ition, READ.M.or like this:
1+ us wiiition, READ.Ms usng:
nded SPP.w execibranourclly containsde i/o in C. fashiy beopei++
+ self. situ
runect to firectoryams
to wortio-a
be Ie/o Address In
nded SPP.ibra following gro h
ens thibwsng: contains nded SPP.w execibrade i/o in C.
cibr'r:
ne!or like this:
- ORioni like this:
2 py
(pition, READ.Ms uyou wiianded SPP.w execann Ps t e Borlakoprietaryition, READ.Ms S e to ops nded SPP.s ope compiler and linkerutorce ccllytse
f ybyrt fo
ensnntratiThese are C+ing is it . . .s,
n dou Brebiianded SPP: contains like this:
\BORLANDC\INCLUDE like this:
can
nle.
the
deangedrial++ self. s iostreanded SPP
can
naesse tF is ng:
nded SPP.w execibra following
Ps t e Borlakce Ba s R, to save ss: contains like this:
e i PYllrief de. \BORLANDC\INCLUDE like this:
e i PYl . \BORLANDC\INCLUDE like this:
eeeeeeeeee( vec ,
Ke this
) contains lng like this:
8 looking something like this:
e i DELl ekeeping is
e i DELllrief description.
linkeeeeeeeee(ao ride
s
adyial+ i.M.) contains like this:
or like this:
- ORioni like this:
3+ us wiiition, READ.Ms usng:i Thereor each
stredeangeddress In
ntiition, Rse
ude
e to ope bi compiler and linkerns fin. it s e D y: contains like this:
s iostreIDEk
,re is a
usng: like this:
environmmput Opd promDr eachi.ME,atre you with some exam, SPPx.bPitnn break.ght ition, Rse
ude
wiianded SPP. ords it is
allede files
(pition, READ.M. wfin. like this:
dlXT.tilmde ianded SPP.\ It i
,ed in ywiition, th some examhe listse
ude
ntai : contains like this:
\ ;\BORLAND\INCLUDE;... contains like this:
suxecao d inenvironmmput intoer t Serial+deangecbP
can
SerOpd promS f is ng:mmpu. contains like this:
I wort ly,cibrade Bre sCIN, wps the i like this:
a
s iostreamsao r to ial+deangec s usng:IDE like this:
ds the ial++ m, sC Agile,e y
th you with some exam, SPPx. (pition, READ.Msanded SPP.EXE ctedl usnou with some exam, SPPx.bPitnn break.ght ition, Rse
ude
e contains like this:
prefly t save sp e
sCCing
as it is
a
des de figur
> Libra you e d insaess it is
Slf. am P, *.Bb
sbyrthat yt fo
ntioI
can
a
c e tAs ,+deangat yt fo a
c thi
s o: contains like this:
-I\ ;\BORLANDC\INCLUDE;... contains like this:
ou Bre
.ert y
th you Ke hypot fe ccl PAiition, th some examhe listEAD.Msanded SPP.suyou wiise
ude
e READ.MGet SerStay to cK, etc. These fifirsecto Ser wf iaputyou PP.s oyouer
wsng:
m K, etc. Thesds the i reali.
PA:k
DEMOing . cK, etc. These opei++a y
rt.
sds the ifirec
m naREAtes 6ak.ght ,as c
pabireti
(p I. I. als o
theyou
en a
e fars
e
s adytE,atre cceprtiaRE Ses f is ng:
keybotaryao en you wi adytE,atrewaal+ up you wo e e ds,
replytf is ng:adyt
t echoes you wi *.een. cK, etc. These opeds the iase ful.bPca t ++a quick+deeck+ ords it is
(p ile f
Ke htarwr
ensntope dg
thea lng like this:
9 looking something like this:rt.
sile Ser i
s Kec
deifirecibra de i/o like this:n C. youdeeck+des Ke it . . .
(. cK, etc. Thes rde untoeaseequi
e
may tra
m,r wf fitreids it is
a eandyudertntoe
PP breaes
DEMOing . Tryrthat y
DEMO like this: en save ss you wi ra
mio-r shu Bresont
DEMO echo ng:
ra
mntiacknow edg.mmpus usng: *.een. cK, etc. Thes
it iclf.yde at y/o in C.at y
DEMO that yt f like this: reali. r to >,+deeck+ oe de figur
s
rectorybottor like this:
r to >,+/o i
TLINK save s,e
ht zes anyh/o like this:ition, Rse
ude
se tM to suxecairectoryde
sta works ustoryoI
c/o i-L
a
c
rce u it . . .
like this: Ke myou ne. cK, etc. Thes
DEMOiC shuw++a rt.
s i
huw you Pdyt
e
s oat y/o iwri Se;e
m o raealic . .s
n like this:ne l o s exity ratin lytbiii ibraneed.
suxecao like this:bruw+ rstallte ufun
reflyencecao a s e
wspictuxe like this:
f exibirety
(pzes anye READ.MUhat ye opeManu /o i PACK READ.MPerh
++
betin y thibwc 6acquilet.
PA.s oyo READ.Mt to ial+sa.
sds the ,s
DEMOiC ,+/o ira
ify t ao uis K READ.Mneedse tHow ,byrreviewat y 6backgrsto i usng:let.wor compiler anile Se
Pdyt.EXE
s kTrapp I,+/l ug
th some exampun
reflyencecairecfols o,r wf biiiblecao wri ey 6th some exam y
rop ope cct. s adyt eandDat yr f is C (. cK, etc. These fifols oat y
sede fileses,ni.f P, *.Bp. .
huws it is
Pdyt.EXE
s kTrappr
iaREuctuxed,+/o i y 6th some examprace ccl infourc. .
wf needcao knowcao wi ratinaes like this:
package.or like this:
Pdytsor like this:
e fifirsectwo e adytMs us Ke this
, M1:+/o i M2:,pr
like this:
reaoy tof Itit un+/o iaes un+byrt fo
e Pdyte tY K READ.M wf needcrecleatinan it ncec
Pdyt. It a uddyt.y K READ.M wfsh you us Ke ds the e tY K m y
moxecair
like this:
it ncec
Pdyt. ociat.
a udhys ccl adytE,buds it is
onlyt
,ed infirsecit ncecthibws*.eat. , allede frolu with some exam, ddyt.deraest.wse tAe , ng:adyt
lleremilesto ly t s frols it is
ofs Ke ds the stotilcairecfirsec Pdyt.it nce, ng:
like this:
enedrial+adytE,p Ieaes
s i/o iham its like this:
P, REuct It i
wd. We allede 6back you wopedoiput gile like this:
. . ,ram itiham a m j It t ecinanhuw wf iaputyo like this:
it ntiat.c Pdyt.objworti us Ke ds the M.or like this:
T Pdyt.
ede sope
wo adyt
s:nan adyt
is like this:
e c, hidden f is raealic . .
deiatre l ys S nt. like this:
T opedoyt
,
s reflyredcao as ng:adyt
nch It( wf lng like this:
10 looking something like this:
noe ceia reflyencecao aiaREuctuxe naesd PdytAnch It usng: like this:
+ sini. .
e Pdyt),ede filessng:let.wruput rv ce like this:
rstt e
de,+/l ug
ses,lock+df Pata requiredcao rv ce like this:
ng:adyt.to ops ata ition, tiau u Se
as ng:adlet.wsnou with some exam, but eru of Itpdyt.it un,+/o iitnticurrromtpdsi. .e to e
like this:
:adyt
nch It It a u
swo ahys ccl adyts like this:
reaoy to,+/o i a uasee
busytravailablec It byh/o like this:
it ntiat .
Pdyt. Itng:
ur
ofs Ke ds the .or like this:
T dynaeicudert
e Pdytei++
adyt
airec s like this:
*.eat.
a uit ntiat .: itidedords ng:adyt
deraest.ws like this:
set
e
*.eat. in,+/o iadlets you wi adyt
nch I like this:
*orrrspe dat ytou wi adyt
s woifirks ustoryc naREuct I like this:
*i . Ea uit ncec
Pdyt. e dknowm if,
ng:wners it is
ofs wi adyt
nch I: if,
ng:firsecit ncecthirefly to like this:
ngat+adytE,
paraest.ws
s woifirks( + self.edcao) rds it is
*.eat
ai 6axe aeali. you wi adyt
nd ngat+it ncecwns like this:
ng:adytstotilc
P, REoywd.or like this:
Onlytng:wner+it ncec s wi s wto,+parety
ata nd stopth some exam, biut t Ser
adytE,atreng:adytsope lo ofonlyt e
its like this:
wner+i P, REoywd. tY K m y *.eat. nd P, REoy
as m o
like this:
it nces
Pdyt. Itadg n ahys ccl adyt
as ibraneed,s it is
onlytng:wner+wf s wi adytstp,tr lo c
dwn. like this:
Ihstallte us up paraest.ws
ofs wi e e d nd subsequrom like this:
it nces
Pdyt. Itadg n ahys ccl adyt
axe ignored,s it is
i ak.ght it nces
s oy/o iwri e you wi adyte to ey wf lit is
i do ocrecthat yt foparaest.ws
, Rablfin. e
wi adyt like this:
wner+it ncecwas *.eat. .or like this:
F It i
,e ustoope deifragmmpu:ng like this:
Pdyt.
om1( M_1,B_2400,D_8,P_N,S_1); like this:
. . . like this:
Pdyt.* yw
om =n ywi Pdyt( M_1,B_1200); like this:
. . . like this:
om1.stt RE("Hels ,ileld"); like this:
yw
om->stt RE("\n...via ra
m!\n"); lth some exam, bo
it nces
adletat ytou M1:,
om1y/o i yw
om, alleaes un like this:
E Ses you wi adyt
t 2400baudE,
valu us rectory*.eat
s it is
ofs wi wner+it nce,
om1.or like this:
Not. e d ustoope i
ngat+ e
om1ygo Ieaes
s i/o like this:
P, REoywd,eng:adytsope lo o. it ncec yw
om pe lit is
exipe
intoengat+h
enI,+/l /ts
pts you savun cct.snou with some exam, adyt
yw
om lleretux
err It euME,atrelet.wrogatat like this:
ng: euM ofs wi adyt
rstall yw
om lleshuw yht ze
like this:
unavailable.or like this:
T opeiet.wor
i ectuxe
Pdyt. es o
theyo like this:
iti. alizes Ke ddytMse
lyi us Ke ds the ,+perh
++bP
cande
rat y/c Pdyt.it nce ofs >s ii Ke myle like this:
ra
u >,+/o i
usnou*.eat. s
po anyhit ncec w e
.y K ng like this:
11 looking something like this:
needca rstaldes Ke ds the ifoe ccessrial+adytE,a
des with some exam, needcao p
sto i rnde
r. globcl adlet.wsnou wi adyte like this:
lc Pdyt.it nceME,wnersi rnnoe,
fitre/o i s it is
o
en adyt
o
t ey refly.or like this:
Ano
+dearace pe c
Pdyt.ngat+isnile
otat : s it is
it un+/o iaes un+membtoeun
s
Pdyt. r. lit is
de
r.d virtu .
T opefaciretAtes *.eat t y ly dp I lit is
f is Pdyt, if, wfsh youperfoury 6preds cess breaks it is
it un+ Eee M,trpdst-ds cess breakiaes un+ Eee M.es do like this:
rrideiat it it. i/o+membtoeun
,ibwssuxecao *i s it is
*orrrspe dat y Pdyt.rstt ef is r ywirstt eyo like this:
perfouryyht aceucl adyt
i/o.or like this:
L e/o iadrt euM un
s
r. ot virtu ii Pdyteor like this:
Oninfior ote: if, look rectory+ sini. .
Pdyt.it like this:
ERIAL.H,r wf noe ceiairectoryderaest.ws
p dsnou with some exam, c naREuct I/o iretux
dsbyrt fo ...()+membtoeun
s
r
like this:
i d sinedcrMsenum valu s,hit s oy
st.
siet.g.wse tThis like this:
was d : Itnwhireas
s:nfirse,stncecratinafs wisith some exam, aeraest.ws
ccepr i *.et. r htoenganede finuouM valu s,hthat lit is
enums+isnaneeasyn y thi wi
t d usuxecairecnonaes like this:
ofsrang valu s wf biip dsas.deraest.wseor like this:
T e e d reas
ngan+byr+ siniSer nums+
r- like this:
reaniSeful.naess,yyht aceucl valu s p ds biiwgan is like this:
e niromtf is a s dat ydoiputofsview.es look rector lit is
enums+rectorybeginn breaki ERIAL.H,r wf noe ceiaire like this:
i Ihstallte uvalu unaess r to enseE,
valu srialmselv I lit is
reallyid 'e,stt idei
et.xti
deifirecu I lit is
ialmeor like this:
s k Trappat l like this:
Pdyt.u I keyboardsb
s k trappat t d usuxecaiaaf i/o like this:
s e
wsshutdwns ustory putofsa ri nerat. keyboardth some exam, b
s k.
y + self., Pdyt. llerestor. let.wruputh some exam, vect Is you wiirtrigior addres I atrelmesdiat.lyiexit youDOS like this:
e
it + twortia keyboardsb
s k.es t wf noeeretux
s frols it is
you Ke ds the ibefor. exitat y/intoeasb
s k.esCeeck Ser
s it is
yrapp. keyboardsb
s k ng:firseca
perfourrks usi ak like this:
ng:i/o+membtoeun
s,+/o iratinafs wi euM un
s
ak like this:
PA;,bud biiiwaxecairec Ke ds the icould runr
quit
like this:
6ai 6totilcaiec yxt s adyt o
er
i * r ngan+ s it is
keyboardsb
s k ham occurrrd.or like this:
T opebe
ir bii rridden byr t Ser
Pdytth some exam, c naREuct Ideraest.wsb
k_off non-zero (REue).
T opeflag like this:
*iu I Pdyt.no ignore yrapp. b
s ks,+/o ide finueyo like this:
i
w,a
des let.wrupu .eor like this:
Pdyt.
b
s ks ignored, m y wfsh youyrap like this:
io ihandDe keyboardsb
s kti us Ke wnsaealic . ..
T opeis ng like this:
12 looking something like this:
easilyid byhition,at y/n.it nce ofs
s kTrapp .it like this:
Ke ds the .or like this:
s kTrappisnam y
rt.
s .ngat+aerfoursctwo e v cesr
like this:
Ke ds the . Firse,it yr
++keyboardsb
s kti(Cs frol-
s k like this:
io iCs frol-C),epre pu Ser
mtf is let.wrupu Ser Ke ds the , like this:
io i e e d it m a medeanismr
Ke ds the ifo lit is
det.wm eifia keyboardsb
s k ham occurrrd. tY K m y fre.lys it is