21060 lines
433 KiB
Plaintext
Executable File
21060 lines
433 KiB
Plaintext
Executable File
SIBO 'C' Software Development Kit
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Version 2.30
|
||
|
||
|
||
March 1, 1999
|
||
|
||
|
||
(C) Copyright Psion PLC 1990-98
|
||
|
||
All rights reserved. This manual and the programs referred to herein are copyrighted works of Psion PLC,
|
||
London, England. Reproduction in whole or in part, including utilization in machines capable of
|
||
reproduction or retrieval, without express written permission of Psion PLC, is prohibited. Reverse
|
||
engineering is also prohibited.
|
||
|
||
The information in this document is subject to change without notice.
|
||
|
||
Psion and the Psion logo are registered trademarks, and Psion, Psion MC, Psion HC, Psion Series 3,
|
||
Psion Series 3s, Psion Series 3a, Psion Series 3c, Psion Siena and Psion Workabout are trademarks of
|
||
Psion PLC.
|
||
|
||
Intel 8086 and 80286 are registered trademarks of Intel Corporation. IBM, IBM XT and IBM AT are
|
||
registered trademarks of International Business Machines Corp. Microsoft and MS-DOS are registered
|
||
trademarks of Microsoft Corporation. Psion PLC acknowledges that some other names referred to are
|
||
registered trademarks.
|
||
|
||
|
||
CONTENTS
|
||
|
||
|
||
DTG OGuiC ts, isi eccci ss ce casisccctesecedeccsnccsstcsscodeccseecedesdecsdeccdececesssscedsccsnecstecdscedeccsssececedecedecessecestes Ld
|
||
|
||
|
||
SYSCEMM SEL VICES oi heh: suk veloeehs gcbedua vudewes saebeduh ods conte cebede pub coves cousvah edtbewstocebebenedtigweseeuhienonst
|
||
Single service:interrupts ::.43:8Ascniiao sss ob de adehl Adenine s Ag
|
||
Multi Service titerrupts's.esic.s3isstecstuts Seeeduveteossets Seeded sduvsesbaduesduysdeusteda dice dubsduectedsdyvadevednes dS
|
||
Gallin S COMVENHONS .i5.45iudssvcsasaciasetaaseeest dash svandasatea io cananthzestaasapeanaoasgestessanessaashosetaswetess
|
||
Documentation conventions
|
||
Include file epocdefs.inc
|
||
|
||
|
||
2 Segmented Memory Management ...............ccsscccsssssscsscsscssscsecssccsesssscscesssscssesssccscsssssssesssscssees DOL
|
||
|
||
|
||
Memory Segment naimes::i.ci:4cc.tistscssdaicesnigthosndshecetintiosnads ht eetdathesnnda beeetgatbosadaitiestdabas
|
||
Paras raps ns. cic; sh. chchcs cobs seeks dokcces Sees gua hacetcaes cous euch sdeewes cqunguske ocd ede Suvsgunbeces eoes Syuagunnecedetes boue
|
||
Permanent se@iments so: i.c508 Viste hab aihisien es Asians Aaehilen Sai ache
|
||
Directlyaccessin g: S6SiMeNts sai. et sakess aaches cessdieseeva deesecssduessscadeesecbideostetaceeedusadevssdyvedetaluneds
|
||
Size of available segmented MEMOTY ...........c ce eeseeeeseeesseecsseecesseeesseecsaeecscesseecesaeeesaeeesaeers
|
||
Creating a memory segment
|
||
Deleting a memory segment
|
||
Opening a memory segment %
|
||
ClosinS:a;memory Seement 5: .12:.3:5:45..1daisoeesacsvodendaiscsssactasseadaustestaacassendateaetaatassndaseasseaiay
|
||
Closing a locked or device SCQMENE........ eee eeseeeeseeeesneeesneecseecsseecesaeecsaeersaeeseneeeesaeeesaeers
|
||
Locking a MeMOFy SCYMENL........ eee eeeececeeseeceeeeseeececeeeeeeeseaeeecsesneeeceeeeeesseaeeeeeeseeeeeeaees
|
||
Unlocking a MeMOTY SCYMENL «ue eee eeeeceseeeeseeeseecseecseeceseecesaeecseaeessneeeetaeeeseeesaeers
|
||
Size‘of A MeEMOory SESMENE: s355:cisscsiszcssdalssesteseapesidsnscestegnapeahastsrestadsapeandgasoeedeass deusacenouetadase
|
||
Adjusting the size of a memory segment
|
||
Finding all s@ornents o.xisc3 4. oscek desedass doavices covudanscesvideatsazssveedata ds sadunacvas seach stbaaarete sade aobeaares
|
||
Copying to a MEMOTY SCYMENE ........ ee eeeeeeeeeceseeeeseeesseecseecscecsseecesaeessaeecseessseaeeesseeesaeers
|
||
Copying from a MEMOTY SEZMEN....... eee eeeeeseeesseeeeseeeceeecseeceseeeesaeecsaeessaeeseseeeesaeessaeers
|
||
Size OP RAM disk s:. cu ssisea shi neler ed adiaoki ded casi ne ole ciel
|
||
|
||
|
||
3 Heap Memory Management ...............ccccscccsscssscssscssecssscscecsscsscsssscssccssccsesssscssscsssscssessssssessssees OU
|
||
|
||
|
||
Dynamics:Of hedp mem Ory: i.5 ess.2¢ssco0s hes feist ss cog danheeevdsbestieatas, Hee easebalin fos chesdeystheed 3-1
|
||
Allocating heap MEMOrys: .sc..iisBesstsaticestiahassitascessataocsidaatgesbeedateuensealeatieostosungeaseatheestans 3-1
|
||
Re-allocating heap MeCMOTY.............seccesssecsssceesseeceseeeesseecsaeecseecsseesesseeesaeesseeseneeeeseeeenaes 3-2
|
||
Adjusting the size of heap MeEMOTY................secesecceseceeseeeesscecesceceseeceseeeesacecssnecsseeseseeeeners 3-2
|
||
Freeéms heap Memory x .2. 5:0. eck. codsdavssta davis coisteszdes Sbvke eedazeosdeu ubke fubadevsdon Stbbe peaduuaion aheaelo2es 3-3
|
||
Size’of a:heap, cells: scssstsiavicisseslascsadaseassea lace aadacieastesiaocandacdeasteaaoeaniaisoasteaiaoeasacboesteayse 3-3
|
||
Setting the heap: sranularity «nsec scadneciodtas ou nelendidshasio ied ost glibelsieveess 3-3
|
||
Size.of available heap Memory 25:52:35.5 fos: ase sbereedash aaedesdeaediesnd assdiadeendasiansyiaonseeths 3-3
|
||
|
||
|
||
4 Semaphore Management ..............cccssssccsscssscssccsecssccssscscesssscsessssccsccscscsssscsesssscsseessscssssscessess Ged
|
||
|
||
|
||
Creating a semaphores. :ci2issccanschasiehis itt eedatiosatdadcsaacstaneaneatieassboeadiodgdelesteoeaiguavenetas tees 4-1
|
||
Deleting a semaphore.............cecccceeesscceessnceeceeeneeecesceeceeeneeeceseeeceseeeeeeseaeeeeeseeeseneaeeeseeanees 4-1
|
||
Waiting on a Semaphore..........e.ccceseecccesssceeceeesseeeceeneeeeceeaeeeeseeeeecesnneeesseaeeeeeseaeeeeeenneeeeeeee 4-1
|
||
Sie tall SON Ce ees’ ivis 505 seh eek Sees ects aes ted saves eed deve ee does eat Fee teasoeks dubs Sealed te Geese thy 4-2
|
||
Signalling More than Once s....::ssctedsiesteaiateatlaeetesiscsatledsetensteetlidostasecentlaoeteaeiens 4-2
|
||
Signalling once without re-schedule......... eee eeseesscecsseecsseecesseessaeecsaeecseecsseecesaeeesaeeesaeers 4-2
|
||
|
||
|
||
March 1, 1999
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
5 Message Management ...............ccccccsssssssccsssccccsscceeccssssscsssceseccssscscecsseesccsssccsssessssssssscsssseeesssssees 5-1
|
||
Inter process COMMUNICATION ............:ceeeeeeeceeeeneeeeeeeeceeeeeeeeeeeeneececeeenaeeeseeeeeeeseaeeeseenneeeeeeas 5-1
|
||
Order of Message TECEPLION ice ciccciseeicveisetdccoigerdceeseenccevsdandeevedeaseesddaalesuedebdesuddesdeeidenisanecs 5-1
|
||
The message system and the I/O system .............cessccceeeessceceesceeeeeeeeecesseeeeessneeceseaeeeeseaees 5-2
|
||
Initializing the message SYSteM ............:cceeecseeessseceeeeeeeeeeeeeeeeeeeaeeeeeseaeeeeeenaeeeeseneeeeentaeeeees 5-2
|
||
Asynchronous message reception ...........::ccceeecceeesseceeeeeeeeceseeeecensaeeeceseaeeeeeeaeeeeensaeeeeseanees 5-2
|
||
Synchronous message reCeptiOn............csccceeeescccessseceeeeenceeeeeeeeeceenaeeecsseeeeeseeeecesteeeeeenees 5-3
|
||
Cancelling queued message reCeive ...........cceeccceeeesceceeenececeeeneeeeseaeeeeeseaeeecseeeeesesaeeeeeenees 5-3
|
||
Senin S MESSAGES... usdescesesesvetacsceuevas deveiuade ces scan cose dcanccvu cena dev deaacenvedaa Ooaucedascuccnaevandeneevandes 5-3
|
||
Sending and getting a reply asynchromouslLy ..............:::cccesecceeeeesceeeeeeneeeceeeneeeessnneeeeeeeeeess 5-4
|
||
Sending and waiting for a reply..........ececccceessccceceeeeeceeceenceceeseneeecesnneeecseeeeeeenaeeeeseneeeeeeeee 5-4
|
||
FTGCii SA MeSSAGe aia ass ree aeons eeags Saves See Uelet ash Sail eae asOutess caved exe sbuutads Cousleseedlabeds cust eesescteseuals 5-4
|
||
Requesting a signal from the SUpervisOL............:c::cccessseceeesenceeeeeeneeeeeeneeceeeeeeeeeseaeeeeeenees 5-5
|
||
Cancelling requested signal from the Supervisor .............cccesecceeesenceeeeeseeeeeeeneeeeeenneeeeeeaeees 5-5
|
||
Cancelling requested signal from the Supervisor by type ...........::::cceseesseceeeseeeeeeeteeeeeenees 5-6
|
||
|
||
6 Dynamic Library, Category and Object Management...............ccccsssccssssssccsscsecsssseessssceeeeees 6-1
|
||
Pabrary Names 5 iss scaisesescatsseusta heels tas itatienatlalieentaaectlaieenitataelbatiec ts tecatis teats tates 6-1
|
||
Loading a dymamic library............cecesccecessccceeesneeeeeseeeeecsenneeeeeeaeeeceenneeesesaeeeeeseneeeseenneeeeneas 6-1
|
||
Unloading a dynamic library ...........ccccccceeeeccceessncceeeesaeeeeeseneeeceeeeeceseaeeeeessneeeessneeeeeeneeeess 6-2
|
||
Banikanig 4 dyinarnie MaDrary cues sic: ese we cevs iuadevs ca vaces dana devs cana covtaiia tuvtalvecavhdin ofutteaeveest da ceaase 6-2
|
||
Getting a dynamic library handle ............eeeccceceeecceeeeneceeesneeeeeeseeeeeeeneeeeeenneecessneeeeeneeeeess 6-2
|
||
Getting a DYL handle by numbe’............... ce eeecccceseccceeeeneeeeeeeneeceeeneeeeeseaeeeeeseaeeessenneeeseees 6-3
|
||
Creating an object by mUMber ............ceecccceeesccecesneeeceseneeeceeeeeecessaeeeeesnaeeeeeseeeeeneaeeeeeenees 6-3
|
||
Creating an object by handle .0..........eeeecccceescccecssnececeesneeecesneecessaeeecessaeeecseneeeseseeeesenees 6-3
|
||
Destroyii ean, ObjECte: iceitazssssusdasesstislacoutaadosetes aosendarsncatealaasntaaoesigasaeundasoeateniagcandateee? 6-4
|
||
SemMGIMS a MESSAGE a5 5 coca se voctek Sesedes Sewsatehs gveanen cqusatetegenetancnonetenaunenen oeveemens dubecen puvedeensintett 6-4
|
||
Sending a superclass MeSSAage...........ccseccccesseceeessnececeeeeeeceeneececseeeeeeseaeeeeesneeeceeseeaeeeeseanees 6-4
|
||
Sending a direct MesSAGe ies vss ks se. seekeseese Na syen cubase ese based cuvtoyeceavasyun cova dyede cds Fyekdeveaneeces ieee 6-5
|
||
EMiter: a; SNE MESSAGE ssicccsssvasevuecasceekegesdaanecaacousad sag ootadaadecassuagennaaesdenssdvapeatesuaGayssaueseaseecatads 6-5
|
||
Open a multi library file... eee eeeeccceessceeceeneeeeeeeneeeceeneeeeesneeesseaeeeceeeaeeeensneeeeeneaeeeess 6-5
|
||
Loading a multiple dynamic library..............ccceeecscceeescceeeeeneceeeceseneeeeeseeeeeseaeeecesnnseeeseanees 6-6
|
||
Reclass an object by NUMDED ...............ceeeccceeesnceeeesneeeceeeneeecesneeeensaeeeessnaeeeesseeeeeneaeeeeneaaees 6-6
|
||
Reéclass‘anobject by Wandle v2.3: vssscsiassudetowsteslassentavsneataaiarcutasaverigsincecandanseearagiateardarsee cd 6-7
|
||
Copying data from a Cate QOry........escccceessccceeesnsceceeeeeeeeeseeeeeeeaeeeceseeeeeeeaeeeeseeaaaeeeseenneeeeeees 6-7
|
||
Enter a:control Tést0ns, toes. dete hathiacdets a Bdeoiatdenaci edo deed titi lt 6-7
|
||
Lea vitte a 'COntrol’ Te G1 OM )c225 esi ces Fees Beiet wes 08 hea 00aGa wes Syus Daete sec S aah ue (Seta eee 0a yen SeeS Ryka Ts danse 6-7
|
||
Returning from a method. ...........ccccceeesscceeeseeeeeencecceeeaeeeceseceecesseeecsenaeeeessneeeeesseeeesenees 6-8
|
||
|
||
7 Device Managemen ............ccsscscccsscsssccsscssccssscscesssccscessscscesssscscssssssessssscsesssscssesssssesssssesesessees 7-1
|
||
TIEVICETIAIMES 602. Aosed sets out te ooes oats arcutieds oobertiAdenetedeticne dea sciotedoteboveck eonttedecuavedscctetedomdssecoee 7-1
|
||
TJOVICE=ATI VETS o35 osteo ebes eee ce eae ea oe aio ok oe An oo Sls ON ot ies 7-1
|
||
Opening a physical device Ariver......... eee seesecceseecesceeseecseecseecsseesesaeeesaeessaeesseeesseeeesaes 7-1
|
||
Getting the PDD entry point... ee eeeeeesecsseeeeseeeesseecsaeecsscecseecesaeeesaeecsaeecseeseseeeesaes 7-2
|
||
Installing a device Ariver ...........ccceeceescceceesecceeesneeeceesneeeceeeeeceseaeeeeseeeeeeeeaeeeesseneeeesenneeeeeees 7-2
|
||
Holding all device Arivers............ccceesscccceescceeeencecceeseeeecseeeceeseaeeecesneeeeeseeeeeeenneeeseenneeeeeeae 7-2
|
||
Resuming all device Arivers.........e ee eeseesseecssceesseeceseeeesseecsseecscecsseecesseeesaeecsaeesseeseseeeenaes 7-3
|
||
Loading a logical device Criver wi... eee ceeeeeesseeesneecssceceseecesaeecsaeecsacecseecsseeeesaeessaeessneeeeee 7-3
|
||
Loading a physical device river .........e sc eeeceeeseeesneeceseecsseecesaeecsaeecsacecseecseeeeesaeessaeesseeeees 7-3
|
||
Deleting: a device driver. c.csss. coseeigeiydik ogcestegisdesh be pheek eenadi gies Hesaylesbedenaghdesupbeseeeyeeideges 7-3
|
||
Removing a device Ariver ............ccsscccceessceceeseceecesncecessaececessneecessaneeceseasesesuneesessaseeeseanees 7-4
|
||
Querying the number Of Units ..0........ ce eeecccceeecccecesnececessneeeceseeeceneaeeeeeseaeeeeeseeeeeeeaeeeeseaees 7-4
|
||
Finding all AG ViCesrs.3 2. ccccs cceseastc dovesntedsgotaue te sadetebesadaue dedaceh odes atseavevedes sdaselesscigentdgetesetlannises 7-4
|
||
Callinga device vector ....s:taiiiet seiideieesteiebe dete piestdivdesdetepies dade debehi pda deseideeneaanegnls 7-5
|
||
|
||
|
||
CONTENTS
|
||
|
||
|
||
8 Input Output Management ................ccccscccssssssccsscssecssscsecssscsseessscscecssssssssssscsesssscssesssscsssssscesoes 8-1
|
||
Devices anid HES fics ccieiy sioee eis tegs te sitea tie seen Sete sdata iig step ody scenadee sauce dey sdehe eset tevsene a ested 8-1
|
||
Sound ‘file format: states cain Peak pa la pin la ibaeiaobehed 8-1
|
||
ASYNCHrONOUS T/O so seb os San Soes oh do beeak aie 0aY, DSc Dae se I eh Nl oes aoa aa ote ee eh Po oak 8-2
|
||
Asynchronous I/O without error repOrting.........eeeeeeeseeeeseeseneeceseeeesaeecsneessaeessneeeesatessaeers 8-2
|
||
SVNCHLONOUS: LO sees su. osasiedes oxdgstescvepedesbes pbanbeonpeds betes asubees bode Gedepbunteen dedessduprantersdedes sdevauesered 8-3
|
||
Chainto root device ss..s:.cccsceinege sis abe nest edipaee antes ech paive died beeyaens oyeel begindenk epee easy 8-3
|
||
Chain, to‘superclass devices. a.tiec 58 cithediteet ah aided at as oh steel eb i a ee ema 8-4
|
||
Wait for I/O completion .0...... cee eeeeeeseecsscecsseeesseecesaeecsseecsseecseecsseecesaeeesaeessaeesseessneeeesaes 8-4
|
||
Wait for specific request to Complete ........... eee eeseeesseeceseecesceeesseecsaeecseeceseeeesaeessaeessaeeeens 8-4
|
||
Polling: for completion: .2..s:2 atee.i- Bytes hie agate belddoyiested bee depoeniann el egevienbeaadeiess 8-5
|
||
Signalling Completion .................:::csesecsesessoreresseesonenecsonevessenensenensetenseesnonersonevenseneneetenseess 8-5
|
||
Signalling completion by process ID ........eeseeesesescecsseeceseeeeseeeesseecsseesseeceeesesaesesaeessaeers 8-5
|
||
Signalling completion with no reschedule ............escceeccessseeesneeceneeeeseeeeesaeecsaeecsseeeeseeeesaes 8-5
|
||
Adding a handler: sic.e-ssc.g peeiteg.yotegigih teh voewncg geese vovead pees eye dagen Testo egapee eee ey 8-6
|
||
Remiovin & a Wan letsy cx 22 sce ccictiec sek suit cesitest shat octastonk sitter tyst cas ul earache tant sees 8-6
|
||
Enabling a handlets..2::s.vaiewli ncteientedi vinnie tau etal nas alaiewigsataucare. 8-6
|
||
Requestie sa: Feset sess a cess Sil, tar feg ales Rueevet vey dations seat gales Sug eestadeyodeneeerewateddvede Suupvaxtees: 8-7
|
||
Cancelling: a requested reset. .:.: s.vos.osa.pduet eisdelbegipaed Gade dedi plaid des esegapdaneedeyeldaeepiebenedees 8-7
|
||
OPpeNiN Sa GEVICE: wocczten 2. eheak Toeet oes it eet oe ER eek oO a ae at ce a en Sak 8-7
|
||
Closing a:dévices: sicistec hil ei navi ev a ee eee 8-8
|
||
Reading from a CeVICC...... eee eeseeceseecesseecseecseecsseeeesaeecsaeecsseecsseecesaeecsaeesseessneeeesatessaeers 8-8
|
||
Writing toa deVICE 2.205552 Gaye suesiytank epee aanvdonk Geipeekbeeap dees ath eaaedesd depeeldusaeoestdephibesnee eee 8-8
|
||
SEEKING OF: a GEVICE so es hos She the et oho cata See abot cats Siet ok abcd ast tant cos heteroatoms Gestetvint sae? 8-8
|
||
Mouse and keyboard 2:3 s.ve:.ates cava tales ee aith ian ceaieieieiiniausndgaaieicey 8-9
|
||
Adding an application handler ........ eee eeeseecsseeceseeeesseecsscecsseecsseecesaeecsaeecsaeesseeesseeeesaes 8-9
|
||
Removing an application handler ......... eee eeeeeseeesseeceseecsseecseeceseeeesaeeesaeecsaeesseeseseeeesaes 8-10
|
||
Enabling an application handler... eee esceeeseecsseeeeeeeesseesseeceseecesaeeesaeecsaeessneeesseeessaes 8-10
|
||
Getting theishift’states..:::..c4.c.css hs ties cel iin laren bk inn ainn linn nea 8-10
|
||
Wait for I/O completion no handlers 20.0.0... eeeeeseeescecsseecesseeesseecscesaeecsseeesseeeesaeeesneeeaee 8-10
|
||
Requesting a signal from the SUperViSOL...........:::ssccssecesseessseecsseecsseeceeeceseeessaeecsaeerseeenees 8-11
|
||
Cancelling requested signal from the Supervisor ............c:ccessssceceeseecsneecsseessteecneeesseeeesaes 8-11
|
||
Request signal on next half secondo... eeeeeeeseecseessneecseecseeceseeeesseesaeeesaeessaeeseneeeesaeen 8-11
|
||
Query the completion of IoNextHalfSecond ....... cee eeeeeseecsseeceseeeeseecsaeecseesaeessseeesseeeesaes 8-12
|
||
Playing back a sound file synChromousSly.............essesessseeeeseecsscecsseecneeceseeeesaeecsaeecseesnnees 8-12
|
||
Playing back a sound file asynChronousSly............esecseseceseecsseeesseeeesaeecseesneecsaeecseeeeseeeesaes 8-12
|
||
Cancelling playing back a sound file oo... eee eeeseeceecesseecseecsceceseeeeseeeseeeesaeecsaeesseeesnees 8-13
|
||
Recording sound to file synchronously ............cceseceseseeesseeeescessseeseecscecesaeeesaeecsaeesaeeesaeers 8-13
|
||
Recording sound to file asynChronously............cceecesssecesseessseecssceceseesseeceseeeesaeecsaeesseeeaeers 8-14
|
||
Cancelling recording sound to a file... eee eeeeesceseessseecseecsceceseeceeeceseeeesaeecsaeesseeesnees 8-14
|
||
Input Output Management update 0.0... eee eeeeeseeceeneeceeecsscecsseeeesaeecsaeesseecssaeeesaeessaeers 8-15
|
||
|
||
Asynchronous partial sound file replay .........ceeeeeceeeseeceneessseeceeeeeesseecsseecsaeeseseeeesaes 8-15
|
||
|
||
D File: Manageme nt sccccicecsescicecstccssecsasseosssessasesbaséosesencsosusenssocvsaddsoeebsedsonsbeddsondnsassseeensesoavonssseases 9-1
|
||
TRE ALE: SOR VEL, sas s2ich coset iss 522s Seve ta bos cck Fibs feist basen Big Pete Ses ovd Rana voevd ba Aes cvd Saeanetes 9-1
|
||
Connecting to the file‘serverssissieacstdss.cs.istsceatdsascastisioeatasssass testes atabasoeeleateaeataiaaselas eens 9-1
|
||
Execute-an amie tiles cscs aul sie Gulia ie A Be eels 9-1
|
||
Parse-a-file name is: ssthess deste Asvtitehivtins Anoisbe Ash. ns Aaphesichepions Aativascup cassislaamiers Aneaisins 9-2
|
||
Get Current Path ss sss. cers sieccck siunecudtauis seb saues cvssecbs dub sevbs rodbarie feb sanyesevechvededsteeesesetevesvescevesvecdes 9-2
|
||
Set current: Paths icecs.ssguscscadesesesscesssesseaseoohesascesseaisesbesasseredsassostesendsoddsavevets desssetdsassoata suey 9-3
|
||
Test Path: available si: 265. scchSsegesue ces seehs dckewus cess ceebosehesus Sesetues dele sea ravbevelosesevtacisl Seresbeveasaeh od 9-3
|
||
Deléting:a filer ditectOry...si.:sis,oah sinew alain oun danse ek Baaie A 9-3
|
||
Renaming a file:or directory. sic csss2h oxsevs thus Pesach ws eoes ch sstadeuseusacieosdubeeets buastbethessshackencudstanedy 9-4
|
||
Getting file or directory, Status: :i.:sic:.ce.iishspeciesi.cestestageatasisceteaiapeasensoesles at easaceionelaseseees 9-4
|
||
Setting file or GirectOry Status................:csesesseresesereneeteneeecsonerssevensetenseessonertsevensetenseees 9-4
|
||
Getting: device status. ic. s. levis syiekeseedastvsvdasiseedsaesbeascssadisesvaghuse ovsidessdvasdes usibereserdios se 9-5
|
||
Gettinig’ file System Status... :r03<scs2sv5 eet sess cath ave evb teks eetnebe vl Stans suspsbe delseebentestbe tel cavesenvsabbeds 9-5
|
||
Makarie aie w. directory 2..3caaccetis sass ntasscestastasund sates idecnsendavecestualaseanda toeeieaewestaieesteats 9-6
|
||
Opening a unique file Name: ss. 5 sich sso cess Gets ceke een cece hele denen cave cietb ewe esea eastoetnceeetence od 9-6
|
||
Attaching afile system's. 3.0 Asicss tah Msi also i sitions Miaginaddsees Baaensis sete apbaete cs 9-6
|
||
Detachinga filesystems: on nstietidin piss pisiens dusietiasis desis iisteackudivstin és 9-7
|
||
|
||
|
||
iii
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Get current path: Dy TD 5: 0szccisetesuscuva2vas fins tuys cuusaeveiesdeces fovsteustiagivi colptebstinstnes resadeesdnsteiees 9-7
|
||
Chan SeCireCtOry ss sslatssetesecdustaisesstea acsslasiotetes are eladedstag.ardnda motets aodeedatecatas wooed seed 9-7
|
||
Set mitial Path ci252ch. 655: ceshheistevescecsanels eoteswa resected, sokesuncesdareloactasee eslavehiesbestacgssersnsoeewees 9-8
|
||
Setfile: dates: ic103csevedaoie side tee soist eh tAsshibidiehasien here Aiphial chee As itisiteh ai 9-8
|
||
Local file system Chan ged iss.s0..05 As, cos vaescsves disb ses sck ceca Suvi cueschussusacten covetavesvendyussdeustobsatensvicd 9-8
|
||
Reading media information of a local AeVICE ..... eee eee eeeseeeseeeeseeeeseeeesaeessaeecseeeeesaeeesaeers 9-9
|
||
Reading a local device directly 0.0... eee eesecesseeesseecsscecsseeceseeeesseecsacecseeceseeeesaeessaeessaeeeee 9-9
|
||
10 Process Management...............cccscccssssssscsscssecssccscccsscssesssscscesssscseesssssesssscssesssscssssssscsessssessesens 10-1
|
||
The process ID and names..........eseeeeceeeseeceseeseeecsscecsceceseecesaeecsseecsaeecseessneesesaeeesaeeesaeers 10-1
|
||
Process SCH edule sx -secsten fo. AG cectvct sak caletows tice sah vat oct tncl ant aii oath hae a AON 10-1
|
||
Process controls ss tenth Gus haehs cavis aw ei eave rata yeaa are ates ene 10-2
|
||
Process ID and process table address .0..........sceesesesecsseeeeseeceseeeesaeecsacecseecsseesesaeessaeeesaeers 10-2
|
||
Terminate-and Killens cciccaittcyit aie aipiesd eve daaipieel Gayle tpi ande Pepi eeaes 10-2
|
||
Getting the current process ID... eee eeceesseecsseecssceceseeeesseeesaeecsseecseesesaesesaeessaeessneaeessaes 10-2
|
||
Getting a process ID by name... eee eeeeeeseeceseeessceceseceecsaeecsscecsseeeesaeeesaeecsaeesseeeetaeeesaes 10-3
|
||
Gettin ga PLOCESS: PLOLIEY:.. <s.c.cs.:cehscepssnsesteseetecepsdepeeveachocepadehenttaeubedepstegenbezaabeceyocetenteadsse 10-3
|
||
Setting: a Process Priority 2.o.235 soe caetevecgeyoesdusapdesssoesbegh pte. b eee yoesbesnnivel oyeabesnbdned divbesbecenaiee 10-3
|
||
Getting the OWNING PIOCESS .......... se eeeeceesseeesseecsseecssceceseecesaeeesaeecsaeecseeessaeeesaeeesaeesseeeeesaes 10-3
|
||
Creating-a Process essschiecese teste teesstaraiatcci sands eaten eng alesisoniinn anioaier al 10-4
|
||
Creatit 2a tasks sie, ocsncc vodecea esau cove sets clases votes ateagetg ates s vg adstla eg saetl aged aM pvauts od/odey aig rests 10-4
|
||
Resuming a process.s::.:.ys:daieiestetiyded gees gie de depts deta es baba eteoe eae ae 10-5
|
||
SuSpendin sa: PLOCESS: +9: st eee eh ee he Ae Se ee Re es 10-5
|
||
Killing a process; cs.ssein velit neil an indie aval ii eee iis 10-6
|
||
Re Sisterin Ss terimin ati O01 $2. ¢ see sels sees sceesshs sake beck ecepsdahovegaeshores te sueedeubeceystetenep raubsuyotes sate esehx 10-6
|
||
"Terminating a PLOCeSs sss: ccaece.eeuysceeedly teh becey case daigdes Decoyoews Qigial lesaydessueeneee be supoevsceysuicessnls 10-6
|
||
Paniickiti® a Process 2. cies ices. ois dautvet oo Celndeavtdict ote shct este tnet cts Calas catetectstnatent sitet ee aisles 6 10-7
|
||
Getting a process name by ID... eee eesecsseecssceceseecesaeeesseeecsseecesaeeesaeecsaeesseeeeteeeenaes 10-7
|
||
REMAIMIMG a PLOCESS sh osc 5h siageance tayo ces seg ounce ves aeat thy sfetevedbeesateg olds cant btet bens atta npstotedey ote tenes 10-7
|
||
Finding all processes isi.s5st ieee. teseeeid dapdestcdigdeldevrees tdi ides yiesd oydnebainda ne vonehdennes 10-7
|
||
Watching: all exats-....2 frit. ees al fa asec acetone aaetacnerst stn ets feteso uxt ann ebieteeer ost Sea btatem hetsa 10-8
|
||
Panicking the CUrTeNt PLOCeSS .........eeeeeeeeeesseeeseecscecsseecseeecesaeecsaeecsaeecseesseesesaeeesseeesaeers 10-8
|
||
Copying data from a process by ID ou... eeeseeesecsscecsseeceseecesaeecsseecsseecseeceneesesaeeesaeeesaeers 10-8
|
||
Copying strings from a process by ID ou... cee eeseeeseecsseecssceeeseeeesaeecsaeecseecsneecesaeessseeesaeers 10-9
|
||
Copying data to a process by ID ....... ee eee eeseecsseecssceceseeeesaeeesaeecsacecsseecssaeeesaeeesseeesseeeesaes 10-9
|
||
11 Date and Time Management.................cccssccccsssssscsscssccsscsceccsscsesssssscesssscscesssscssssssscsesssscsseens 11-1
|
||
Absolute ‘and: relative: times. ssi) ss ccus2h; sch seek seech eh asad cocks geuatea Syoe eso seb da ode beak cba otha 11-1
|
||
Waitie: toa Given tHe: ie. cdteash dias bikes sadecedas dosvdiacsedediansascnadiassetedaassvae biases caeties ssa beaees 11-1
|
||
Sleeping for tenths of a SeCON 00.0... eee eeeeeesseecesneeeceeesseeceaeecsseeceeeceeeesaeeesaeessaeesseeeeseeses 11-2
|
||
Sleeping for system COCK ticks ........eeseeescccsseceesececeeesseecseecseecsseeeeeeesaeeesaeessaeeseeeeeneeee 11-2
|
||
Getting the-Systern tare. /2.5¢ 5.) sicist secs sociabs Sodhec soagl enh aataash ees eh a aeadieadegl hae evshe, Sook ahaa 11-2
|
||
Setting, the system time. s.3ssi52.5 sets stisec Aptavieae A eedist aatdens Abstsohessaaisesdasdisiaaseien eties 11-2
|
||
Converting system time to day SeCONS......... ee eeseeesseeesseesseeceeecsseeceeecesaeeesaeecsaeesaeeesaeers 11-3
|
||
Converting day seconds to SysteM tiMe..........ceesceeeessseeesseeceseeeesseecsaecsaeecsaeeseeeessaeeesaeenaes 11-3
|
||
Converting day seconds to date... ee eeseceseecssceesseesceeesseecsaeecsaeecseeceecsseeeesaeeesaeessaeers 11-3
|
||
Converting date toiday seconds: v.0:...4 i s.iis sea fl asiieinh teislep hal teh phbosiies teh carhg 11-3
|
||
Numi ber:of days 1104:nOntlt 3 .2.eseces sis foes cabs2nsecba shes cossteeconsees aduescuy sdeuse obaduuteessubadeostebadensdupade 11-4
|
||
Week: day tiumber. ssi csisiecsstsiiceusdeviossscanccarsanttosssansecsianaanunansvocusenaawrenasouaneseaseteanionee 11-4
|
||
Naine OF day. isi tee.tcecksuattacseactotes ciate leneuckoteniuete Senanehoesuatesees sanchon suateroasenmetonueeneieseugneh otueeee 11-4
|
||
Name of months: :..ccsss hiss Mattes Aeiisss asteessdaoistatin Aseiesi aches Asusbe pion Aaotens are AS 11-4
|
||
Weel numbers <5 os: ses Sones cssteubs fel scevssestaths col stebscutt ie pebsevgscuys beret steuscedbaibesstsdeyerustataeasteveuees 11-5
|
||
Abbreviated: name:Of day s.ssci.sdsisvessgackesadalioeeristacaedaoestasacesadaiaosatactandedaseessancaseonda ieee. 11-5
|
||
Abbreviated nameof month's 055. sigecci Hh hsssd eelooes Sek oeed eshoet sid vel ede tiehea dl oan eiiebeedebedde 11-5
|
||
|
||
|
||
CONTENTS
|
||
|
||
|
||
12 Conversion Management ..............ccccscccssssssssscssescsscsecssscseessscssecssscscesssscsesssscsesssscsesssssseseseees 12-1
|
||
Unsigned integer to buffer... eee eceeeeccceeeenceeceseeeeeeeeeeeeeenaeeecseeeeeceeaeeeeeseaeeeeeseaeeeensaees 12-1
|
||
Unsigned long integer to buffer ............ ce ecceeecccceessccceceenceceeeeneeeceenaeeeceeeeeeeseaeeecesnaeeeeeeaaees 12-1
|
||
Tite ger to DUTer x12). sess cce esos eviveces etivecenivege cos sde dedeuivs vededtadeceneeieeeateda dodanie tounsotedeuunevadeeveeteg 12-1
|
||
Long integer to: buffers: iscccc.cisetcesedssdeaseisetecvvdes bedevisah ccavdcadcdevdcabedevdchdcgevddaa cavvecebeaedcvbesendess 12-2
|
||
Convert arguments to buffer ............ceeeeeccceeenceeceeneeeecesceeeeesaeeeceenneeecseeeeesseaeeeeeesaeeeeeeaees 12-2
|
||
String to unsigned Integer ........... ee eeeececeeseceeesenceeeeeeeeeeceeneeeeseeeeeeseeeeeceeeaeeeeseneeeeeneeeeess 12-2
|
||
String to unsigned long integer ..........e ce eeeecceeesnceeceeeeeeeceeeneeecesaeeeeeeeaeeeesenaeeeeseneeeesseaeeeess 12-2
|
||
String: tO INCE SER viscid eveeseceeeccatadsccee ceayd cdbesusdeveedaviesvesaedeseedardesussendeseiderd covidardesvidandcevecnbbens 12-3
|
||
String: to long ainte ger iy. ices seek ah eakeie hak ae eahatce dah GU evi hiek autotest desalted aeredee 12-3
|
||
Floating point number to buffer ............eecccceceesscceeesceeeeeneeeeeeeeeccesneeeesseeeeeeseaeeessenneeeeneas 12-4
|
||
String to Moats vecccess ceeeadiscaecavededaletaceletedeseincedsseiusedesniarecagslotedesbinrecssndetedepadncerenslenetevdans savy 12-5
|
||
|
||
13 Long Integer Managemen ................scsssssccsscsssecsscsecsssccessscssecssscscesssscsesssscssscssessssssssesesoees 13-1
|
||
Comparing two long integers ....... cece eeeesecsseeeeseeeeseeeesseeceecsaeecsaeessseecesaeeesaeeeaeessaeessaeers 13-1
|
||
Long iiteger multiplication: ::5::i.:ascsisscesi ca tissangasgsssteastiaovete sinter iditss abeiiaaettansstaeeee iat 13-1
|
||
Lone atite ser division’. iiss feussbissies hock Seesches See taocd bbe g ese Shed ited eesiota its Deus bebiecibii conus 13-1
|
||
Compare two unsigned long integers......... cee eeeeeeseeeesneeeseecseeceeeeessaeeesaeecsaeesseeeeseeeesaes 13-2
|
||
Unsigned long integer multiplication ..0..... eee eeeeseecsseeceeeeeeseeecsacecseeseseeeesaeessaeesseeeses 13-2
|
||
Unsigned long integer division ........... ee eeesecsseceseecesseecsseecsscecsseecesaeeesaeecsaeecsneeeesaeeesaeers 13-2
|
||
Unsigned long integer random numbet............. ee eeeeesseeesneeceseeceseeeesaeecsaeecsaeecssaeeesaeeesaeers 13-3
|
||
|
||
14 Floating Point Number Handling ..................ccsssccsscsseccsscscecssscseecsscscesssscssesssscsessssssessssesseeens 14-1
|
||
Comparing two Floats:.::cic2..333 avsvdesepcest iets iedipiesd dats hedepian deb aeyiewb agin ee leeeylenb ged 14-1
|
||
Multiplying two floats ccs aoc ce. elec esceunt ces eicide ce atid cee tewaeda tek sae taesenah Gavetanaedierathaateneeesuuvee 14-1
|
||
Dividing floats: c:3.cccccasectetiedessaricdevsatccievees cevestarcedeschnceuesda covsacaecenvednvcessceaa cenvedaveeseeedeoesea ces 14-1
|
||
Adding two Floats .0........::ccccesscceesssceceeeeeeceesnneeeceseececseeeeeesnaeeeceenaeeeeeeeeeeeseaeeeeeenaeeeeenanees 14-2
|
||
Subtracting Floatsin:. cscs: cg.yeeitusss tess caeyaeltessraestegiyeel behind giyheinesiaeauyebbegedebanyeniaeaeh 14-2
|
||
Nesating:aPloats.:2 iin seats thde aihacuieeted Gited dh Ghee GUM aeee ea lees 14-2
|
||
Convert Float to a signed LOM... eee eeseceeseccsseeceseecseecscecssceceseeeesseessaeecseessneaeeesaeeesaeers 14-2
|
||
Convert Float to unsigned 1Ong...........eesceescessseeceseceesseessseecseeceseeeesaeecsaeecseessneeeesaeessaeers 14-2
|
||
Convert Float to a signed integer... eee eeseeceseeceseeeesseecsseecseeceseeessaeeesaeecsaeecsseeeeseeeesaes 14-3
|
||
Convert Float to unsigned integer... eeeeseeesssecesseecsseecsseeceseeeesaeeesseessseesesaeeseaeeesaeers 14-3
|
||
Convert signed long to Float ........ceeceeseecsseecsseeceseecesseecseecseecsseeeesaeecsaeesseessseeeesaeessaeers 14-3
|
||
Convert signed integer to Float... ceeseeessesssecceseceesseecsseecseeceseeeesseeesseecseecsneeeesseeesaeees 14-3
|
||
Convert unsigned integer to Float.........e cc eesceeseccesccessneecseecsscecsseeeesaeecsaeesseessseeeesaeessaeees 14-3
|
||
|
||
15 Floating Point Function Interface.................ccsscccsscssscssscseecsscssecsssccessssssessssscesssscseesssssessssees 15-1
|
||
Aresine: Of afloat sstecetts iit ceadsteccstdaeecsatactcdatathccsatatecsteatecawtactecstaasioauatatisacheatoauatateaeates 15-1
|
||
Arctangent:of a float s:.sii ssf aiid aed io heii eu eter tooled iawn 15-1
|
||
Cosinetof a floatv.ia:scist aa bnii aa ddahi dani an A Aah as a aaatas anna suanies 15-1
|
||
Exponientiation ofa flodtin: 2.5 205.2cescebschusssiadevseutsdivaeetaducctutsciuases sdvestoipcesasuh sduespebackeseus steed 15-2
|
||
Zero fractional part-of-aPloats. ..:33:.s.ascstiveetiseszepia sores ssid deskdataoeetageandayicashonassaniatioastagiagess 15-2
|
||
Natural logarithm of a float... ee eee eesecssceceseeeeseeeesseecsaeecsseecsseecesaeeesaeecsaeeseeeseteeeesaes 15-2
|
||
Losarithin-of afloat iis. a seeihsicsisiiedep sie: Asedassdey dich avsphisscue des nvtde ssccae basi aertaaestebedepdasened 15-2
|
||
Modul o: of a: fl Oat ss ics sets itisces Sauce ceshiths Soniaete Cedaatbe feeaBene Sedhatbe Set sdeee Felacebedersdeneduiboubedunstebesesades 15-3
|
||
Power Of two: Floats’ sais siecssadastedeags acc sadach cdarcaieccvedackedatagecauadastedanaasncaradasedege acercarsoaeaatie’ 15-3
|
||
Float random numbe .............ccccceceeccceeeesceceeeeeeeeceeneececeeaceeeeenaeeeceesaeeeceeneeeeeseaeeeeeeneeeesenees 15-3
|
||
Site Of a FLO Ate As sev; dics bees dacese ds dass tiasvesetaged antes csasete Pode cteanounedageavetscaneetsdafosunoiassetedapssenaanss 15-3
|
||
Square: Toot:of-a: Moat. sree. eccossiekevbs He eskeb adie sevisdevesdbacius adaduectubschensbsduvctdve chvnsidadvocrsisdeerecteavk 15-4
|
||
‘Pani sent :of afloat. ts.: svspsenessateansesas sesdaptenicteseeesaasnteshetuahosssasntoss daustesnsin te pignad assuanee etree 15-4
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
16 Character Management ...............ccscsssccsscsssccsscscccsscssccsssccesssssseessscsesssscscessssseesssssesssscssesens 16-1
|
||
Character 18a: cit ie ecvsicyssccsats btn eae cxladoas tice aan eelet oad Lest ott aa ietpviems olede eee eited ites 16-1
|
||
Character is a hexadecimal digit... ee eesecsseceseecsseecsseecesaeeesseecseecsaeecsaeessseeeesaeeesaeesaes 16-1
|
||
GHaracter 1s printable sccscgesec sos geves ee gscetsaegaudeuet eves int ses fedstevesdean tet edd ocet eae ninh evuetesodetsteas intense 16-1
|
||
Character is alphabetic. ..c.3:2/ cist assis a de ee ea 16-1
|
||
Character is alphabetic or digit.........e cee seeesccseecsseeseseeceseecesaeecsseesaeecsaeecsaeeseseeessaesnaeessaes 16-2
|
||
Character: is Upper: case. jsscn.ai eine care berin ath as iia hehe. 16-2
|
||
Character. 18 lO Wer CASES v2: ob, eset edocs ee) ents tatedey sees snndedetedesaget sevdeserdent-deadedentp bake. devotee sstg nestle 16-2
|
||
Character 18: space s.ccrasicrsit aiteneayiins Qutdeis dank aereebniaghin sand hen epee agian Gaye 16-2
|
||
Character ds: punctuatlonis so) i680 .cs.sheectect cans beet otee ded ott dastote dndontteet ah aie di eet as Glade ad 16-2
|
||
Character is:sraphicsci.0.:iscrentei aitiar aside tistetae ea Guava alsa eaei ease vdasenrenee 16-3
|
||
Character is: COMO Me. pscecfa, odseetiyoce foe paused Pacet sat gstetededeeetateg stun acd btst ones ltteanepiathenp Muneeiees 16-3
|
||
Characters:to upper Cases. ttc taies tinting hana Pade heii and tomb atain bai atess 16-3
|
||
Characters 10 lOWer Casein aces siite bees cece ats ct oasis see e bith och Uauie coe sbdndees seenb ease chest oma iereensvantea 16-3
|
||
Characters to folded characters ...........cecesescsssseesseecsscecsseecesseessaeecsaeecsneecsseeeesaeessaeessaeeeees 16-3
|
||
|
||
17 Buffer Management ................cccccccsscsssccsscsscssscseccsscssesssscscessssssessescesesssscsssssssescssssscsessssseeeess 17-1
|
||
Copying: one buffer to:an other -0:5. cis, Mscbes.dcaesessdves tae ssehise dnp dene veeseaedeaphis duswieassnrdasn Ah 17-1
|
||
Swapping the contents of two buffers... ee eee eeeceesneeesneeeeneeeeseeeesaeecsaeessaeessnaeeesateesaeers 17-1
|
||
Comparing one buffer with another ........ eee eeeeseecssceesseeeesseeesseeceaeecseecesaeeesaeecsaeereneeeses 17-1
|
||
Comparing one buffer with another folded ....... eee eeeeceseeeeeneeseneeceseeeeseeeesaeessaeessaeeeees 17-2
|
||
Locating a character in a DUffer 0.0... eeeecceeesecceeeeneeeceeeneeeeesaceeeeseneeecesnneeeseeneeeeeneaeeeess 17-2
|
||
Locating a character in a buffer folded ............eecccceeeesccceeeeeceeeeenceeeeeeneeeceseneeeessneeeeeseneeeees 17-2
|
||
Finding a sub-buffer in a buffer oo... ee ee eceseeceneecsseeceseecesaeeesaeecsaeecsaeecsseesesaeeeseeesaeers 17-3
|
||
Finding a sub-buffer in a buffer folded... ee ee eeeeeeeesneeeeneecsneeceseeeesaeeesaeeesseeesseeeesaes 17-3
|
||
Matchins.a: wild card buffets. csssc.chises ositnssdasioss ost teste casbissoee teat cssecuspooneiedessaetenesenesay te 17-3
|
||
Matching a wild card buffer folded. ...........eeeecccceeeccceesnececeesneeeceeneeeeecessaeeeeeseaeeessenneeeenees 17-4
|
||
Justifyinie a buffer.:..i.cc3.scaticcetlsesessteaioccaedoviaesteaieteasiaiesetaaiee davasteestaaiacaomtarseentaaacaatanioess 17-4
|
||
|
||
18 String ManageMEent ................scccscccccccsscscccssccsecsscsecssscseecsscssesssssssesssscsssssssesesssscssesssscssesssoesees 18-1
|
||
Copying one string to Another .0..... eee eeeeeeeeeeesneecsncecsseeceseecesaeeesaeecsaeecseecseesesaeeesaeersaeers 18-1
|
||
Copying one string to another folded oo... elec eeseeceseceseeeeseeeesneecseecseecsneesesaeeeseeesaeers 18-1
|
||
Convertingastring to folded cosc.0. J: hs eset ede choice son nbtededh soest sana tabteskcotet seep igess chev saiaeeseeiee 18-1
|
||
Capitalising a string yaiiyeie dis atiindiaih av lidicibacni einai din alain 18-1
|
||
Comparing one string with another... eee seeeseceseeesseeceseeceseeesaeecsaeecsseecseeseeeeeseeeesaes 18-1
|
||
Comparing one string with another folded... eee eeeeesseeceseeeeseeeeecsseeeesaeecsneeeseeenee 18-2
|
||
Matching a Wild card String..........eeeeseccesseessseeesscecsseceseeceseeessaeecsaeecseeseesesaeeesaeesseesenees 18-2
|
||
Matching a wild card string folded 00.0... eee eeeeeecesneeeesecsseecsseecsseecseecesaeesesesaeeesaeessaeees 18-2
|
||
Locating a character in a String ........e se eesecsssecseecsseecsceescecesaeececesaeecsaeecsseesseecesaeeneeeesaes 18-3
|
||
Locating a character in a string folded... eee eee eeseeeneecsneecseeceseecesaeeneeeesaeessaeesseeesee 18-3
|
||
Locating a Character in TeVETSC......... ee eeeeeeseesseecscecseecesceceeeesaeeesaeecsaeecsaeeseeeeeeesseeeesaes 18-3
|
||
Locating a character in reverse folded ............esceessceeecesseeesseecseeceseeceeecssaeeesaeecsaeeeseeenee 18-3
|
||
Finding a substring 1 a String........ ee eeeeeeeceesseeceseecscecesecseececeeesaeecsaeecseesaeecseeseneeeesaes 18-4
|
||
Finding a substring in a string folded ....... eles eee eeseeesseeceeeeeesseeceeeceaeecsseeceeesesaeeesaeenaes 18-4
|
||
Weristh OF a Stra ooo. os secsch si oes Leds Sans hick cee te bands ob cash bo Valine ane nhs anh ote cat ga es anid ste aaaea cok eae 18-4
|
||
Validating a SysteM MAMEC.......... eee essecsscessncecsteeceseeeesseecsseecsseecseecesaeeesaeecsaeesseeseneeeesaes 18-5
|
||
|
||
19 General management ...............ccccccsscssscssscsseccsscsccsscccesssscscecessssescssssssessssescsssssessssssccssssssessess 19-1
|
||
VersiOn NUMDBELS 24.220 dschess Sakti eos hides elaewelpesedeendivs getaduascestduss deasdeascadedersvtohuateasies 19-1
|
||
Getting the operating system version NUMDBET ............. ce eeeeseseecsseeeeeceeeeeeeesseecsseeeesaeeesaeers 19-1
|
||
Getting the ROM version numbet...........eeeceeescesseecsseeesseeceseeeesaeecsaeecseecseaeeesaeecsaeessaeeese 19-1
|
||
Getting ‘the- System, ECD types: i :.si.cb kien Su esa a ese a eee eee 19-2
|
||
Getting the system cold start reasOM.........eeeeseeesecsseeesseeceseeeesaeecsaeecseecseeeeesaeessaeesseeenes 19-2
|
||
Getting the operating system data SCGMEMt........ eee eeeeeeeeeesneessneeceeceeesaeeeseeecsteeeeeaeessaeers 19-2
|
||
|
||
|
||
CONTENTS
|
||
|
||
|
||
Getting: the: country Gata: s3.0.iccs2ssefes iaees fos cdevedees dike neladues Sous tans tes sdbs fous euyscey etaie Sessenusdevatbeds 19-2
|
||
Setting the: country data x.i:.:cs.sistasesndsiscd. pea iaceandanseasteaiac aslosiedeleaineessiasdodetaaiae salethodehadatecs 19-2
|
||
Getting ‘the: O/Sdata::.si4. pie Sialic ed Sool eed Mic ed eae dt 19-3
|
||
Getting: errortext:. ashton soho daha hohe dase baat A 19-3
|
||
DUM y*SCLVICE: 2.5 ins evs sees she cousteess cba tus colsteesssDsahun pala chesecus daa fuyatewsods daa seeadhestevs danse 19-3
|
||
Generic-file name: Parsetic.sisiiccstisioesdaisoeatasiesgeiausiessiedosoutatbresiandostiaueaieaiaauasticasgies 19-3
|
||
Setting deferred modes3.nih hace Hale ae eee hd ee hk tia 19-4
|
||
Notify byitextrsdsctsu A siestsetaessAssdissdenciesh Asutessseseiss Asebias nusdisl a aeitapsentdson Aaadisisarisee Ane tasy 19-4
|
||
Notify: be error: tutm ber 2.3 oi: e2cssr5 iesies saves eau Sbeceh saves Pasha keseud ptuee eas tebested Stubereetcbesten Sieeea totes 19-5
|
||
Hooking the notify miter faces. sic. isdcsspeatacteadasboestes sec aaledouetassceeulahontdauseieasoenaaicaetlss 19-5
|
||
Unhooking the notify interface 0.0... eee eesceceseeceseeesseecsaeecsscecseecesaeessaeecsaeesseeeeteeeesaes 19-6
|
||
Getting systemran: SiZ65, isissicvssde is ueedies Aaziesodhavdens aide ptehi sed aghesdAcebepdaghusi aseiesss edits 19-6
|
||
Getting: the command line. :5.2.5:cces hes sdedvsscede Messed sdyestets deeneubsduesselackeseadstusesebadevacubsteessviss 19-6
|
||
Getting, the:sound Mags. s.s.cc5s1.Gisceiosettsuecetes ova tiashcaudeaastasaseasteais Beandoeaouet sais tesnadenouelasy tens 19-7
|
||
Setting the: Sound flags: ssi Astle GAG eis SA Le eee 19-7
|
||
Making sound with, the: piezo is: -..scscs cies Astin s sethens aavinesae dass Aandebs Abeta Aaohebe ert Antiane 19-7
|
||
Marking: ai process ‘a8 actives ssi. csssciesdeh sieve sessedesiel sivgessiteevasteussinbavhs ivisteyscssanieieacxesevsabe 19-7
|
||
Markin$\a process:as NOD-ACHVE:s::1<.sdssscestestassendayicesteaiasdiadte,tealoceaslorsoeslagiot eas luadovelagustens 19-8
|
||
Getting operating SYSteM teXt ........ eee eeeeseecesseecsscecsscecsseecesaeeesaeecsaeecsseeceeeessaeeesaeeesaeers 19-8
|
||
Getting notify. states: sisi Asis oaks ends doh hihi Baie eae ete 19-8
|
||
Setting notify state. vc. dvi nists ap ites dua tierios deietiaeien cassie awcvsnes 19-9
|
||
Getting the auto switch Off time... eee eeeeesseecsseessseceseecssceceseeeesaeecsaeecseecsaeesseeessaeeesaes 19-9
|
||
Setting the auto switch Off time 0.0... cee eeeeesecesseeceseeeeeecesaeeesaeecsacecsseecssecseesesaeeesaeeesaeers 19-9
|
||
Capturin § an interrupt: tis icdceass desdisedes he iissdiapdeseens Avapte so apdasich solgsbeasdagdeseteantiapseesdaaiel ee 19-9
|
||
Releasing an interrupt 35: chit esses toni da cessed tied Qevslesat abe ielsausea tale eusteussnzcbenet 19-10
|
||
Getting the lan suase code xs. ciiisss.isssecisdasdiedesetasinccegaiaesctessesiateaslowvodelan at eatleasebeatea teats 19-10
|
||
Gettin s:-Sumix texte ccsiscsttsisecil fest ea sok Socks dodeeed Sid ht ciel Severin Hier oe eke ak sesh ek ee sv 19-11
|
||
Getting the amicand’ pm. text). i.:s.si4 esis sida sicptedessdss iesccpsehisodhaphesd isedasodeap busi dpsntesssensdasted 19-11
|
||
Gettitig:the battery types sis... tet. hep tetisioks dusters delete hess cduscts veda dceeisieereiss 19-11
|
||
Setting the: battery type s.iss:.c2.t:cAocsses. sca. pdacseasdaasons sane ceasacedoueies sh Tausaievoselanetaseacenouelgauteds 19-11
|
||
Generating:4: CRE» c.cesieises tei tei seen hi ies oa a asa ogee So sees 19-12
|
||
Interrupt by number ‘4 siss¢ cet issssetiest Aiea Manion Aten Asti A hea Aerie Anes Asti At 19-12
|
||
Getting environment variable... cess eeeeeesneecssceceseeceseecesaeeesaeecsaeecseecsneecesaeeeseeesaeers 19-12
|
||
Setting environment variable... eee esecssceeeseeeesseecsaeecscecsseecesaeeesaeecseessseeeesaeeesaeers 19-12
|
||
Deleting environment variable ........... eee eeseesseccceseeesseecsseecseecsscecesaeeesaeecsaeessseeesteeeesaes 19-13
|
||
Fitidins: environment variable’: 25:55 sciss fide sedetedess desde sdsvtedios Avaeiaas caedios Aaetastdeaedige dese dass 19-13
|
||
Getting string environment Variable ............eseeseessseeesseeesseecsscecescecesaeeesaeecsacersneeesteeeesaes 19-14
|
||
Setting string environment variable... eee eeseeecesseeesneeceneeceseecesaeecsaeecseessseeeesaeeesaeers 19-14
|
||
Deleting string environment variable .0........ ec eeeeeeesceeeseeesneeceeeceececesaeeesaeecsaeesseeeeseeeesaes 19-14
|
||
Finding string environment variable.............eeeeseecesseeceneecsseecesceeesaeecsaeecseessneeeesaeeesaeers 19-14
|
||
Hooking the alarm interface ....... eee eeseeesecsseeesseeesseeeesseecsaeecseeesseecesaeeesaeessaeesseeeeseeeenaes 19-15
|
||
Unhooking the alarm interface ss:.:55.425,s:5.0-esdessodatessoteasiesdodeteaiersstdachosetaassesoaashedabeauio walls 19-15
|
||
Getting the pid of the alarm Server ......... cee eesceeseeceseeeeeseecseecscecsseecesaeecsaeecsaeesseeseseeeesaes 19-15
|
||
Resetting the auto switch off timer oo... cee eeeeeesseeesneeceneeecesaeecsaeecseeceeeeesaeessaeessneeeees 19-15
|
||
Controlling’ Of-EVEN ts. 6205: 25 seis os sSoush eas sh cus set estcns fish subs Haste aciiss ba Pass ewbs divs Das Pasevushust ved 19-16
|
||
Get state for auto-switch-off if mains PreSeNt......... eee eeeeeeeeneeceneeeeteeceeeeeesaeessaeersaeeeees 19-16
|
||
Enable/disable auto switch-off if mains Present ...........eeeeeeeeeeseeeeneeceseeeeeeeeeeaeecsaeeseneeeses 19-16
|
||
20 Database File Managementl................ccssccsssssssssscsseccsscsecssscscesssccsesssscssesssscssecssscscessssscseesssees 20-1
|
||
Fre Str tC ture gsisae gs cieeeey sisi cep hele y Sasa piss echs Soeb dag dsh dee ydive Sapte egh dead egapashblaiebeek depen aey 20-1
|
||
Butera 853 oe 2 42 coectae sek at cot tise och eabat od taeak Saha eh tet Sah ceo a tect deh Me ht a ai oh eat ee 20-2
|
||
Index Tablesssvacichtas. teva iateeicavai ales caval nel asiavainni auravginel anmeraieeieines 20-2
|
||
Bindi Ob le TECOrd go. sso ie fade tte carhtegetene eds tat tee adeete foeat ete gadoanegeeat Mi vadeatye peat tevalobereest ete 20-2
|
||
Number i6f records siz: c.s3cccgydest caeeeesbetigdasbeeesbes hadi dasd cay beebdi pus ete gaged Gad eepae eee 20-3
|
||
Opening @ database filé.isc¢.30.2 set an ee eee eis Se al eM oe ae 20-3
|
||
Closing-a database file,::..iinestinciiinivieh avi suite navel ein ie ieee: 20-4
|
||
Flushing a database file... eee eeseceseecssceceseecesseeesseecsseecesaeeesaeecsaeecsseecseesesaeessaeeesaeers 20-4
|
||
Trashing: a database file. i.:cs:2.sccne.ccaeycaitesspcestegeyseibeshdesdegiyeesbegieaesbgeyighnusipivel eeyleibisiydne ell 20-4
|
||
Copying :down:a' DBF record 08 aul shiteet te eed tie Se ccls tee ae inde ee te ail 20-5
|
||
Compressing a database file... eee eeeceesseseessneecscecsseecsscecesaecesaeecsaeecseeesneesesaeeesaeeesaeers 20-5
|
||
Copying a. databasetilesss st ssastecleocessecesantevevesseses estat etucetsascedeans athe edesbvepnietethressueeeprens the ets 20-5
|
||
Getting the:sizé.6f-a DBF..2:.:cc..:0.c:indiigsish ni iia piste iba liben i aeplnnien dies 20-6
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Reading a DBF extended header... ee eeseeeseecssceceseeeesseeesseecseecsseecssaeeesaeeessneeesseeeesaes 20-7
|
||
Writing:a. DBF extended! header ts:..2:c.scs.tsesatisecs denies teanesalanwsdsieaines alae ane stactoeetans 20-7
|
||
Reading a DBF descriptive record ..........eceesceseseecsscecssceeeseeecsaeecsseecseecsaeeesaeeesaeessneaeeenaes 20-7
|
||
Writing a. DBF descriptive Pecord : :...ies2ccsceselapbesat ta ssersp deasvastdasvovanbebeaeidaaveeaphestesriaabcasate 20-8
|
||
Getting the DBF version numDe?.............eeeceeseeeseessseecsseeceseeessaeecsacecseeseeeeesaeessaeessneeeees 20-8
|
||
Reading an absolute DBF record ...0..... ec eeeeeeeecceeneeesneecseecseeecesneecsacecsseesesaeeesaeessaeesseeeees 20-8
|
||
Reading and sensing an absolute DBF record 000.0... eee eeeeeeeseeesneeeececeeeeeseeeesaeessaeessneeeses 20-9
|
||
Read ithe: next. DBFTecord oss. sisptdsk os tonasccapdess oes basessesessdeap bbs} savdeseduaebisisuswieresoveast aed 20-9
|
||
Read the previous DBF record... eeeeessceesseesssceceseecsseecesaecesaeecsaeecsacecseeeesaeeesaeessaeers 20-9
|
||
Read the:first: DBE records :::ci.sgsisscsssasicsssdaiancenss cane andaceabasiarestdaiapeenas Apeskbascanbancaosendauenss 20-10
|
||
Read the last, DBE Tecord:y:).. ssi seis Sik aie hi eel cig ei ole asil elie Seloaates 20-10
|
||
Append ‘a DBE tecord: .. 3, sce resides ices astde dessa debieses tages as Natsetedalbsssbibbeete asi antares eee hte 20-10
|
||
Brasin ga DBF record 2:3 sctsiiovs ts fe.Seubtaiwsrits savieubstieseebaduescuistavssidashen calsteesssbsduanssssdeessevs Beets 20-11
|
||
Updating a,DBE Tecord ws.:s2ccsscsileseiawteusiisichisuee esis ats stn etatisanantsitatiaeeen ated 20-11
|
||
Binding BE f6COrd ss iiii ty cout csl shes Wien tasd ofsh ocho aed Seuss ies oekaki dod Pe ego bach 20-12
|
||
Sensing the current DBF record numbet............ceeeeeeseesseeesseeeeseeeesaeecsaeecsaeecsseeeesaeeesaeers 20-13
|
||
Counting the number of DBF records 0.0.0... eeseeesecsseeesseeeesceeesaeecsaeecsaeecsseesesaeeesaeeesaeers 20-13
|
||
Eindine: aDBF record by feldissasc.tsstccwteiieistsstaceladocstdnaaeatamodatissoeedateeaticasedateeds 20-13
|
||
21 Hardware Management ..............cccscccsssssscssscsesssscsscssssccessscssesssscssesssscsessscssccsessssesessssscseessoees 21-1
|
||
Switching: On the COMBO 1... foie, svesees lee edetevde seuss poanteaeseant seoyoret eves saateveyoees te steteeeeaesy tet 21-1
|
||
Switching off the CombOe.3::...2:.. eo staiieicnviaharin en iii densi lanianente 21-1
|
||
Switching onthe SSDsei0 niet AA BAe Rl ea 21-1
|
||
Switching off the SSDs: 2. sche nie sevhes elie eh ei evi wh aie eed eed. 21-1
|
||
Setting: bits Asic2 TESISter Lost .fc,ssus coyeths svie vaste dey odes steesaetevevs des sveysgntevadetil oveptartovegetesouepnast es 21-2
|
||
Clearing bits Asic2 resister 1 ii:..ccccyseggreestsindev cee yigsagey bobede pies Deesuaesbedaphestedeydenbedevecbdecs 21-2
|
||
Reading: Asic2 Tegister ] ai ti ieee se autodata deed odevinad dee ate Mano ato din tes ahetode ih 21-2
|
||
Writing Asic2 register] scsccccssiseccessesecesscceeceanceea ceanccas coandevedeanccosceandeavdvancdaecsaa deveduaurcesees 21-2
|
||
Settings its ASic2-TESIStEr Diorio fesrdevcs oxng sats vtetexe posts santas ietenksedessseydinbesupeeseeuepeedeeeseeuepeeeenant at 21-2
|
||
Clearing bits Asic2 resister 2 s.2:1.sce.dnraeieaeisten reste eed neds oissbeaanieeleddeebaeetds 21-3
|
||
Reading: ASic2 Tesister Qe asec cy sc. sect sane viata choad sons suhgesh sheet ogee sunguendovst eave sougess Gveteaeesttoab ate 21-3
|
||
Writing Asic2 resister:2:s:c.ves eh eee civ Rie nia os Rie ee Ri eines 21-3
|
||
Setting: bits Asic2 resister’ Soc sls, 5s0 ste poses esis santa desetenseepbdeseesedou sce sintesapedesbanp idutetscedetonsptent ys 21-3
|
||
Clearing bits Asic2 resistér:3:.s2c.csccydesteustcesuegiedesnedesecibaeoydesbenspiehbessedesbedipiaeleseydewbegeauibecs 21-3
|
||
Reading ASIC? Tesister.3 .i5.3 ces cactus sek ae onesies aah auton teal aed aut ati thetsh aid teeta wood aty 21-4
|
||
Writing Asic2 register 3\s:ciceieieias eaves Gi eaieie Aa oe inion Sia se liel data res oaies 21-4
|
||
Selecting. a:serialchammel’. so. .sessscledlodes si peandscevotes we dstate Avedsusce paints Miedesecepssage Ageteeeegniet sk 21-4
|
||
Sending a‘serial null frame. i..5:.2 scsevtegepist aendestegegdesd des beled abhesbedes beds poesb aden deeopoee inne 21-4
|
||
S Within G Off ..5 216k urs tives het eat det eh d het ited Retna hd hot ee itted ats 21-4
|
||
Exitin® to: DOS sivaiiesi seis evs near i i aval ei 21-5
|
||
Capturing the Combo subsystem ............s:ccssscessseecsscecsseeceseecesaeeesaeecsaeecseecsneecesaeessaeessaeers 21-5
|
||
Freeing the Combo Subsystem ............seeeecesseessneecsscecseeceseecesaeessaeecsaeecseecseesesaeessaeeesaeers 21-5
|
||
Grettitig a Channel sie ec lstce ooo aetnet 5k eb owas thoes canter Sask ctn Rindadis se cae cithouth tah cee cahebeats weeks 21-5
|
||
Freeing a: channel \e.i03 icnveste ioe rav asic ei ova Saou nerd wh asiseviihi Shiai al 21-6
|
||
Getting the power SUppLy type .........eeeeeeeesseessseecsncecsseecsseecesaeeesaeecsaeecsseesseesesaeeesatersaeers 21-6
|
||
Getting suppliés status...22.55.2cnce-tcsedeibvincestediedelbeuipdestiaey esbedipdasdedesovbeaipdae ceoviehbesvand he 21-6
|
||
Getting supplies Warnings ............ceeeceeeseeeeseecsseecscecseecsseecesaeeesaeecsaeecseecseesesaeessaeessneers 21-6
|
||
Changing the LCD contrast: :2s.tsscheai iis nren wai ar nianntesi avni iain oueieare. 21-6
|
||
Getting current LCD contrast .00.......ceeceesecessseeeeneecscecsseecsseecesaeeesaeecsaeesseeceeesesaeeesaeeesaeers 21-7
|
||
Setting: backlight: control v2.2. c.2.ccysvegi in esevoee gaye ae bdiphobenrel ao ananilenyaniene 21-7
|
||
Getting backlight comtroly 3 soe. ccteet ak ih ecevtiee ah dill emsiod ait eaiteiees aid aed se ai ens 21-7
|
||
Operating ‘the backlight j2.is:s..cs.ces sets ratenceh die ssi ees ceedsiene euneneianeet een tevesavee teen: 21-7
|
||
Scanning Statevor-all KEyS ej osacFevesecsedeeah caeut vey otesaeh epist tesedessde ppiotedapoteeeeegest teticeent 21-8
|
||
Switching on the combo in input MOdE.......... eee eeeeeesseeesneecsseeesseeeesaeeesaeecsaeecseeesteeeesaes 21-10
|
||
Getting additional power supply data........ ee eee eesccsseecesecceseeesseecsaeesseecsseesesaeeesaeeesaeess 21-10
|
||
Hardware Management update... eee eeeeeeseecsncessseecsseecesaeeesaeecsaeecseecseesesaeeesaeeesaeers 21-10
|
||
Reset the ‘battery Status. 4... cse.t.cc) secede scetevny scet sate deetecepaceseath bextedesecensntedabedepateesatessebes 21-10
|
||
Enable/disable reset on recharge...........eseceescesseecsseessseecsseeeeseeeesaeecsaeecscessneeesneeeesaes 21-10
|
||
Return battery information .............ccceeeccccecessneceeeeeneeecesnneeeeseneeeceseneeeceeeeeeesnaeeeeseaees 21-11
|
||
Relog the: SS Dsixcvveseisia naive Sieh hih Ganinnias cots nai ee atal 21-11
|
||
SETHE IR power LEVele., cscs. feces stapsswecveposntevegsisuc degen sees sateen ppiutedepsleteds pouet aie podtseverees 21-11
|
||
Sense the current tick COUN... eeeeseceseeceseessseeeeseeeesseecsseecseeseeeeesaeeesaeessaeesseeeee 21-11
|
||
|
||
|
||
viii
|
||
|
||
|
||
CONTENTS
|
||
|
||
|
||
Sense the expansion port state ........eeeeeeesssecesneessseecsseecsseeceseeessaeecsaeecsaeesseeesseeeesaes 21-12
|
||
Enable Honda connector power ............cccssscccesssceeeeeeceeeeseneeceseneeceeseaeeeceenaeeeseeneeeeeesae 21-12
|
||
Disable Honda connector power ............ccscccccesscceeeeenceeeesnneeceesneeeeeseeeeceeeeeeseeneeeeeeees 21-12
|
||
Appendix A Interrupt and Function numbeTs ...............sscsssccssssesssscsssecsssssessssscsssecssssessessssssones A-1
|
||
Writ OMUCHOM 2-55 fs seis: Sosa Teu sesh Avs cous Te bos in3 Thus Paks 2s Succes Dive Fasg te busoes dese euigte So cous esa fensteds fond eaeeeiaees A-1
|
||
Alphabetical list of fUNCtiONS ............ceeececeeeeeeeeeseeeeseeeceseaeeeceeaeeceseeeeceesaeeesseeeeeeseeeensnees A-2
|
||
Numerical list of fUNCtIONS «20.0... lee eeseecneesssceeeseeeeseeeesaeeceecsaeeceseecsseeceeeeesaeeseesesaeeesaeers A-14
|
||
Additional Interrupt and Function numbers..............:ccccccesesceeeenceeceeeceeeeeeeeeeeeeeeceenneeeenees A-27
|
||
Alphabetical list of extra fUNCtiOnss .............ccceeeccceeeescceeeseeeeeeseeeeeeeneeeeseeaeeeseenneeseeeeess A-27
|
||
Numerical list of extra fUNCtIONS....... eles eeeeeeesseeceeeseecseeceseeeesaeecseecsaeesseesstaeensaes A-27
|
||
Appendix B - Environment Variables ...............ccsscccsscssscsscssccsscecsssccesssscssesssscscesecsesssssseesssscsoes B-1
|
||
PIB ss tcisticiesdset Asis teks eshast iter oeet eisst Asie sashist Adv ashe anes dead aaote Aaveis ooaatsbsphe iba aie B-1
|
||
IMIS vies peti ove ets Fe gett etic coat ahi pautate ores teste naeitteoctenn datas Assad neeate sven Aeaartaatese B-1
|
||
Willdow: SERVER sc cssd5 taht seadetsseasdastasscadeeaseene heat daaabeasasthasthad eae eae nistebdeasd gs Socal esos B-1
|
||
NN {syd e) Bares area ee cer ere tere Pear are Pen eh sre i ete Deep none eee oe ere RE B-1
|
||
SWSCEND Se caties teenestertetees Aereeidntnes herein Ante Retr tlt toas Boots Litas! SANS L oe, B-2
|
||
WS 1B oeroceeact sess ote steveast favs scuvhctles dec vce Pace scuraeee nA stevsteveet ieheh d saeuscevasthe dha storms devas B-2
|
||
SWSaSDDh so titetosstcatantactucatosstas attests teatiataceenteosleceaea tate tee utats oad antacs B-2
|
||
$SWS_SF, $SWS_SF2 and $WS_SF4..0....cecceceescesceeceeeeseeeeeeeeeseeseceeeceesseeeeeeseeeeneeeeees B-3
|
||
FIWIM Gy is daciisdahm addin lhoh nase hinisidteia heii sien Ash sions Asineebeh ted dAotss B-3
|
||
IGN. gecs etre ces teh astcss ease h ost. ca Meseeet eects Pe steve wee ia ha speivtentadhussen teeters sissnets tee B-3
|
||
| DAD, Gainer a cent rrea creer rere aceecee erorerteceercee eorerertcrr cer orca cerca tere eer eee B-3
|
||
Ti Dee sees os coheeof hate ctate oe ot eee yo eas haart veut neat) tfact soot nereeast anc thet Sec uats oes oe shie va ceaa hse eu he B-3
|
||
Paina ss Ses oesi pentose sencceacovutessschavsiascasthsdeseaesiascvaasesdeaovans cass ideas sanvens ovstoeessesueiusoesetiespeaneies B-4
|
||
PED saree sitel Pesce ANSE A tees eth h.t Saas cok ANSE A Pays cuthathe nt Dass cuts Atea Sau. chk at Dns naa B-4
|
||
PGE: stecetes cctactatascataceuntastcsnas sccuatastoatcataceutamocergaesscuetawioseucateacunt aceantaassereatan cantante B-4
|
||
PG Sees ercvesichsteicee rs ccectitesccunen sect ee ance ce cect ars aveene neh tases athe oc tatt si abharct meet See ieee s B-4
|
||
| EAN WY epee seen ee eicter nen teeter Perera rar irene cern eerie cheer rarer tetera reer B-5
|
||
PSP sscesavtesiei ich ester, woreda shes cate F cons ta deen culets csests ihe neatede ceeds teen eetei ese Musi saeite oe tease tee B-5
|
||
PGP P sicz3tsieots ete teritirtrie tas iene tenes tei Malic bets ehes Salactnas ater te nha tslatat tata ian ssi teast ts de B-5
|
||
BGS Beets scoecer St Vaca oot ue areas tise c west orees bent teen ccna behets taceaer tose aaneneceenc bese aee et B-5
|
||
DG Zitsscs een het heres a tock Rte tras Bata Aa tet Rik ates’ Reeece kate Meno bate Nest B-5
|
||
JENS Lape prec Rene reser ir reer eter teerrre ree rer error are ercrer ees tape peter eat cape peters oerte ere errr re rer B-5
|
||
PSP Rech sistecsts ecstasicontatesctstee tates tistvcnateaact stata tate ctueatsestiatucta Medes tit B-5
|
||
Calculator appl cation sj ssh desc. cee odsdescves con ods deteven ene ele tovenee Housel weoea eoustehydemewaceeieng B-6
|
||
CSCALC@ stent teahancasih onan asa cA souiAsnaauncasuinens B-6
|
||
MS0MO to MS$9M9- «55... eestiieias das iesdise hs da jiadier ds daria Saasseideras Aare tee B-6
|
||
FIps:appl CatiOnss-cisseicestiatvoost iscsoestcaieteas se tusaste states tietupsataa ites tea ioeeateaeoosiatepeansagsoossiateoest B-6
|
||
DEW DG ese cete tes tt tate Ge ag Ot Caen a autres RUD Crecente oat ae a Ete B-6
|
||
World appliCatiOni:sdccicscoistisssdesctasosetiads ehssvanbaacdetoddesdvanddasdedoueba casa sahedesesdasduaasansseancizades B-7
|
||
NW SG sch Soret races cus oe Soe ce eet d cae real evades Devs sey abies Seva tata ses devs dey besa eve tevsdesadees RSUITS B-7
|
||
WSRixtoliscstcteteteisteatuts estes tue latatcatia tunes tse, eslaattete a testaataeles. ti stac teins costs B-7
|
||
Spell/ THESAuUrys. sis :sccss tesecevsscuevel sane coevsscseves seuacouss dovewss oesv be cevedeacsoetels svuacousyseceede suuesen seutens B-7
|
||
SPSDRV Gace Arsh A ciate Asati aiti a aisles tetat manana aan B-7
|
||
SPSOBM 2 tes. A ectitas do isit as Aetna hh oie tak B-7
|
||
WIPSSPEL pies stsitouscsccuctssoseisauencacss oul Usa tesa aaa aaa A oa B-7
|
||
Ad BAS Bs | Bhs Sonera caer pe eee ec ear pare See oe ee ey ee ea B-7
|
||
SHAax-ApplCatOnis Assas0h stiss Asstestsshisss Aestesieeatioss Avs teulasthins becsesia sides faetiein sehen heedessees B-8
|
||
| END, Geese eye ener eT eee eee ET CEE Tere eT eee TECIe ner ST Sop UTer ter cay epee Cerrar nee trr creep B-8
|
||
EG MMseccesccontecsscstcputatecctistetutetnastitvcnatsestitaaate tes tetua nats lnstistaat Be des ttt B-8
|
||
FG Pe as Sees eee ect ae eh Cnt Be veoh a EY set aed ets Re tite ty oie eet recat Sou caahares B-8
|
||
Email-applications: 9 ssi.:Assieidbevdies Mache bohardios Asptasshoeions Asi aaiaedse Mei taaiaaeten Aes nade B-8
|
||
MATESS? sc. traits Adarand easteeen Mie wens dase eer ee ee B-8
|
||
Work abouts: sic cstssiies,teaicsascessoestessatsasictvaseleseesavcichovediasne aicslheca huang asgausnestdane abastbocetenet B-9
|
||
SDS VE Reset ert Leet vaca Scoot atte Ned ct Uh Ste Sach eet ge aiid eae ae os Lat ae hat oltre Ne B-9
|
||
CHP Oise SA Ch tiesit sates causttans ts cacancousteane east enipua testes ic anicustiises serine eee aaa B-9
|
||
CSPA10. COPZ asics Abi fiecs cost HAGE sees cess aloe peeeseenatve td Siesta Het Sheets ed os ets B-9
|
||
COPE acces lat Mitac etitecstar ea tatnatiatac sts sstds aa tsna cinta aPstes tastae ta Mestes. tart B-9
|
||
COO arin atone neem ence MATE Ie B-9
|
||
|
||
|
||
CHAPTER 1
|
||
|
||
|
||
INTRODUCTION
|
||
|
||
|
||
This manual describes access at assembly language level to the services provided by the EPOC operating
|
||
system. Access to these services is also supplied by the C function calls described in the PLIB Reference
|
||
manual.
|
||
|
||
|
||
System services
|
||
|
||
|
||
All access to the services provided by the Epoc/Os is through the 80C86 software interrupt function INT
|
||
XX. There are two flavours of interrupt services as follows:
|
||
|
||
|
||
e Single service.
|
||
e = =Multi service.
|
||
|
||
|
||
The single service interrupts are provided for commonly used services and those services which need to be
|
||
executed with the least overhead.
|
||
|
||
|
||
Single service interrupts
|
||
|
||
|
||
These interrupts are invoked as follows:
|
||
INT XXH
|
||
|
||
|
||
where XX is the interrupt number in hexadecimal.
|
||
|
||
|
||
Multi service interrupts
|
||
|
||
|
||
These interrupts are invoked as follows:
|
||
|
||
|
||
MOV AH, ZZH
|
||
INT XXH
|
||
|
||
|
||
where XX is the interrupt number in hexadecimal and the ZZ is the function number of the service
|
||
required, also in hexadecimal.
|
||
|
||
|
||
It is worth remembering that all multi function interrupts will require the use of the AH register.
|
||
|
||
|
||
ee a
|
||
Calling conventions
|
||
|
||
|
||
Regardless of whether a service is through a single service interrupt or a multi service interrupt the same
|
||
calling conventions are obeyed by all services.
|
||
|
||
|
||
e All registers except AX are preserved, unless they contain return values. AX is always assumed
|
||
to be a scratch register by the services.
|
||
|
||
|
||
e If aservice can return an error then it will signify an error condition by setting the carry flag.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
e If a-service returns with the carry flag set then the error will be in the AL register, and any other
|
||
registers which would normally have contained the return results will be indeterminate unless
|
||
otherwise stated.
|
||
|
||
|
||
e = The error value returned in the AL register will be negative.
|
||
|
||
|
||
e¢ Under normal circumstances processes will execute with the DS,ES and SS registers all pointing
|
||
to the same segment. In this case the information regarding segment, register pairs in the
|
||
documentation is irrelevant. However if this is not the case then the documented segment,
|
||
register pairs must be obeyed.
|
||
|
||
|
||
e The services provide access to resources through handles, which are 16 bit integer values. All
|
||
valid handles are guaranteed to be positive, non-zero, and even in value.
|
||
|
||
|
||
e Handles are passed in the BX register wherever possible and return values are always in the AX
|
||
register.
|
||
|
||
|
||
e The state of the direction flag is preserved by services and can be in any state prior to calling the
|
||
service. The interrupt flag is preserved by all services and no service enables interrupts if they
|
||
were not already enabled before the call.
|
||
|
||
|
||
e If a service is called with an argument which is programmatically incorrect then the calling
|
||
process will be immediately terminated. Many services do not return an error. In these cases it is
|
||
foolhardy to rely on the setting of the carry flag, as it is indeterminate.
|
||
|
||
|
||
e Where a 32 bit value is required in a register pair the register pair will be shown as XX:YY. In
|
||
this case XX is the most significant word and YY the least significant word.
|
||
|
||
|
||
eee = ——————— |
|
||
Documentation conventions
|
||
|
||
|
||
In the following chapters, the documentation conventions are as follows:
|
||
e A shaded bar marks the start of the description of a service.
|
||
|
||
|
||
e Within the shaded bar and on the left is the name of the service. Single service interrupts are
|
||
indicated by being preceded by a bullet point.
|
||
|
||
|
||
e Within the shaded bar and on the left will be seen the I symbol. This is to indicate that the
|
||
service 1s available in Version 3 and upwards. These services are also supported on the HC but
|
||
may do nothing.
|
||
|
||
|
||
e Within the shaded bar and on the right is a short description of the service.
|
||
|
||
|
||
e After the shaded bar follows all the registers which are input to the service. If there are no input
|
||
registers this will be indicated by the word None.
|
||
|
||
|
||
e © After the input registers description will come the section on return values. If the service does not
|
||
return a value this will be indicated by RETURN: None. If it can return a value but not an error
|
||
condition then RETURN: will be followed by the output registers and a description of their
|
||
contents. If it can return a value and an error then RETURN: Carry clear will be followed by the
|
||
output registers and a description of their contents, and RETURN: Carry set followed by the error
|
||
returns.
|
||
|
||
|
||
e = After the return values will come a list of the panics which could be generated by the service. If
|
||
there are no panics then PANIC: None. will be shown on one line, otherwise the panic list will be
|
||
enumerated.
|
||
|
||
|
||
e After the PANIC section follows a description of the function of the service.
|
||
e Any constants, structures or macros which are in include files are shown in the mono typeface.
|
||
|
||
|
||
e Where a 32 bit value is required in a register pair the register pair will be shown as XX:YY. In
|
||
this case XX is the most significant word and YY the least significant word.
|
||
|
||
|
||
1 INTRODUCTION
|
||
|
||
|
||
Include file epocdefs.inc
|
||
|
||
|
||
This include file is provided to ease the task of coding in the JPI assembler. It contains the interrupt
|
||
numbers for all the services available in the operating system and equates for the offsets for many of the
|
||
commonly used structures.
|
||
|
||
|
||
For multi service interrupts the name of the service to place in the AH register is as recorded in this
|
||
documentation prefixed by Nm, and the name of the interrupt is XXXXManager, whereby XXXX is the
|
||
multi service group. Thus to call the prockill1 service (where Proc is XXXX):
|
||
|
||
|
||
mov ah, NmProcKill
|
||
int ProcManager
|
||
|
||
|
||
The single service interrupts are just called by the same name as in the documentation. Thus to call the
|
||
StringCopy service:
|
||
|
||
|
||
int StringCopy
|
||
|
||
|
||
CHAPTER 2
|
||
|
||
|
||
SEGMENTED MEMORY MANAGEMENT
|
||
|
||
|
||
Memory segment names
|
||
|
||
|
||
Segment names are zero terminated strings of up to eight characters followed by an optional period and
|
||
three further characters. Examples of valid names are as follows:
|
||
|
||
|
||
e NOTES
|
||
e NUMBERS.DAT
|
||
e DATASEG.01
|
||
|
||
|
||
Paragraphs
|
||
|
||
|
||
The size of memory segments is expressed in paragraphs.
|
||
|
||
|
||
A paragraph contains sixteen (16) bytes. Paragraphs are also used in setting the value of the 80C86
|
||
segment registers CS,DS,ES and SS.
|
||
|
||
|
||
The maximum amount of memory which can be addressed by the 80C86 is 10000H paragraphs, i.e. 1
|
||
Mbyte. Thus the highest addressed memory in the 80C86 is at paragraph FFFFH.
|
||
|
||
|
||
Permanent segments
|
||
|
||
|
||
Associated with every segment is an access count which allows EPOC to determine the number of
|
||
processes which have the segment open. As long as a segment's access count is non zero the segment
|
||
cannot be deleted from memory.
|
||
|
||
|
||
Creating or opening a segment will automatically increase the access count, while closing will decrease
|
||
the access count. In order to avoid a call to the segDelete service, the operating system will automatically
|
||
delete a segment when, after a call to segclose, the access count is zero. Thus create followed by close
|
||
will result in the segment being discarded after the call to close.
|
||
|
||
|
||
In order to generate a permanent segment in memory it must first be created and, while it is still open, i.e.
|
||
before the call to close, the segLock service must called. This simply increments the access count so that
|
||
after the close the access count will not be zero and hence the segment will not be discarded.
|
||
|
||
|
||
To remove a permanent segment, the segment must be opened and then a call to segunLock must be made.
|
||
This will decrement the access count so that when the close is requested the access count will fall to zero
|
||
and the segment will be discarded.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
a a ———EEEEEEEEe—s
|
||
Directly accessing segments
|
||
|
||
|
||
Although the segcopyTo and segcopyFrom Services are provided to allow access to memory segments it is
|
||
often necessary to manipulate the data in the segment directly. The following code fragment can be used
|
||
to gain access to a segment's base address.
|
||
|
||
|
||
GenDataSegment ; Get the o/s data space in ES
|
||
|
||
MOV BX, SegHandle ; Get the segment handle
|
||
|
||
MOV ES, ES: [BX] ; Get the base of the segment
|
||
peer ; Access the segment
|
||
|
||
Gist, ; Disable interrupts
|
||
|
||
PUSH DS 7 Save a copy of DS
|
||
|
||
POP ES ; Recover ES
|
||
|
||
STI ; Re-enable interrupts
|
||
|
||
|
||
Once the segment register is loaded then the operating system will keep it pointing to the right place even
|
||
if segments are moved around. If the segment is bigger than 64K then the base of the segment can be
|
||
added to in the following manner assuming ES has the segment base loaded.
|
||
|
||
|
||
CLI ; Disable interrupts
|
||
|
||
MOV AX, ES ; Get the value from ES
|
||
|
||
ADD AX, somevalue ; Adjust the base value
|
||
|
||
MOV ES, AX ; Put the new base back in ES
|
||
STI ; Re-enable interrupts
|
||
|
||
|
||
Of course DS can be used as well as ES.
|
||
|
||
|
||
In both of the above examples, interrupts must be disabled while the contents of the segment registers are
|
||
being changed, as a pre-emptive context switch may occur and the segment that ES was pointing to could
|
||
be moved.
|
||
|
||
|
||
SegFreeMemory Size of available segmented memory
|
||
None
|
||
|
||
RETURN:
|
||
AX Available segmented memory in paragraphs.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the amount, in paragraphs, of currently unused addressable segmented memory.
|
||
|
||
|
||
Since the memory in machines containing more than 512 kilobytes of RAM is bank-switched, this
|
||
function will never return a value larger than 32768 (corresponding to 512 kilobytes of RAM).
|
||
|
||
|
||
The value returned should be treated with some caution, as the amount of available memory, in a multi-
|
||
tasking environment, is a dynamic function of the memory requests of all the currently running processes.
|
||
|
||
|
||
SegCreate
|
||
|
||
|
||
2 SEGMENTED MEMORY MANAGEMENT
|
||
|
||
|
||
Create a memory segment
|
||
|
||
|
||
AL CreateSegment Low - allocate in low memory.
|
||
CreateSegmentHigh - allocate in high memory.
|
||
CreateSegmentDevice - allocate in device memory.
|
||
CreateSegment Locked - allocate in low memory but do not log
|
||
ownership of the segment.
|
||
ES:BX Pointer to the memory segment name.
|
||
CX Initial size of the memory segment in paragraphs.
|
||
RETURN: Carry clear
|
||
AX Memory segment handle.
|
||
RETURN: Carry set
|
||
NoMemoryErr Not enough memory to satisfy the request.
|
||
NoSegment sErr No memory segment handles are available.
|
||
ExistsErr A memory segment of the requested name already exists.
|
||
NameErr The requested name is invalid.
|
||
PANIC:
|
||
PanicSegl Requested size was negative.
|
||
PanicSeg2 AL was not one of CreateSegment Low, CreateSegmentHigh,
|
||
|
||
|
||
CreateSegmentDevice OF CreateSegment Locked.
|
||
|
||
|
||
Create a memory segment with the name and size requested. The memory segment created is not
|
||
initialised in any way and will contain random data.
|
||
|
||
|
||
The create service returns a handle to the created memory segment in the AX register. The returned
|
||
handle allows access to the contents of the segment using the segCopyTo and SegCopyFrom Services.
|
||
|
||
|
||
The memory segment is automatically opened after being created, and should be closed when no longer
|
||
required with segclose. If the process exits or is panicked, then the memory segment will be
|
||
automatically closed and if the resulting access count is zero, then it will be deleted by the Supervisor.
|
||
|
||
|
||
The initial size in CX must be positive, (i.e. in the range 0000h to 7fffh). No single memory segment may
|
||
be greater than 7fffh paragraphs in size. AL determines the method by which the service will attempt to
|
||
allocate the memory segment. The methods are as follows:
|
||
|
||
|
||
@ CreateSegmentHigh will result in the memory segment being created above all other currently
|
||
allocated memory segments. All other segments will not be moved in response to this request.
|
||
|
||
|
||
@ CreateSegmentLow is provided for future expansion and currently has the same effect as
|
||
|
||
|
||
CreateSegmentHigh.
|
||
|
||
|
||
CreateSegmentDevice will result in the memory segment being created between all other device
|
||
segments and the normal segments created using the above two parameters. This will result in all
|
||
devices being held while memory is moved and then resumed. All normal segments will be
|
||
moved up in memory to make room. This service is called by the File Server when loading
|
||
dynamic device drivers and should not be used by normal applications.
|
||
|
||
|
||
CreateSegment Locked 1s the same as CreateSegmentHigh with the exception that no process
|
||
owns the created segment. Like createSegmentDevice this parameter is used by various kernel
|
||
services in the operating system and should not be used by normal applications.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
SegDelete Delete a memory segment
|
||
|
||
|
||
ES:BX Pointer to the memory segment name.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
|
||
RETURN: = Carry set
|
||
NotExistsErr The requested memory segment does not exist.
|
||
InUseErr The requested memory segment is still in use.
|
||
NameErr The memory segment name is invalid.
|
||
|
||
|
||
PANIC: None
|
||
Delete the memory segment identified by the name pointed to by ES:BX.
|
||
|
||
|
||
If the specified memory segment is open to any other process, an InuseErr will be returned.
|
||
|
||
|
||
SegOpen Open a memory segment
|
||
ES:BX Pointer to the memory segment name.
|
||
|
||
RETURN: Carry clear
|
||
AX Memory segment handle.
|
||
|
||
RETURN: Carry set
|
||
NotExistsErr The requested memory segment does not exist.
|
||
AlreadyOpenErr The requested memory segment is already open to this process.
|
||
NameErr The memory segment name is invalid.
|
||
|
||
|
||
PANIC: None
|
||
Open the memory segment identified by the name pointed to by ES:BX.
|
||
|
||
|
||
The open service returns a handle to the opened memory segment in the AX register. The returned handle
|
||
allows access to the contents of the segment using the segcopyTo and segCopyFrom Services.
|
||
|
||
|
||
The Supervisor keeps track of which memory segments are opened by a process, and if a request is made
|
||
to open a memory segment which is already open, the error AlreadyOpenErr Will be returned. If the
|
||
process terminates before closing the segment, the Supervisor will close the segment on behalf of the
|
||
process.
|
||
|
||
|
||
There is no limit to the number of memory segments which may be opened by a process at any one time.
|
||
|
||
|
||
SegClose Close a memory segment
|
||
|
||
|
||
BX The memory segment handle to be closed.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
NotOpenErr The memory segment is not open to this process.
|
||
PANIC:
|
||
|
||
PanicSeg3 BX is not a valid memory segment handle.
|
||
|
||
|
||
Closes an open memory segment by its handle. The handle must be one returned from the segcreate or
|
||
SegOpen services. If the memory segment was not previously opened by the process, then the service will
|
||
return NotOpenErr.
|
||
|
||
|
||
2 SEGMENTED MEMORY MANAGEMENT
|
||
|
||
|
||
SegCloseLockedOrDevice Close a locked or device segment
|
||
BX The locked or device segment handle to be closed.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicSeg3 BX is not a valid memory segment handle.
|
||
|
||
|
||
Closes a locked or device memory segment by its handle.
|
||
|
||
|
||
This service is used by the operating system to manage segments which are not owned by any process, 1.e.
|
||
a permanent segment left locked or a device segment.
|
||
|
||
|
||
The difference between this service and the segClose service is that for segclose the segment must have
|
||
previously been opened with segcreate or SegOpen, whereas for this service the segment does not need to
|
||
be open. Thus, closing a segment which has not been opened will decrement the access count, making it
|
||
zero which will then delete the segment. i.e. this service is short hand for calling segopen, SegUnLock,
|
||
SegClose.
|
||
|
||
|
||
SegLock Lock a memory segment
|
||
BX The memory segment handle to be locked.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicSeg3 BX is not a valid memory segment handle.
|
||
|
||
|
||
Locks an open memory segment by its handle.
|
||
|
||
|
||
The handle must be one returned from the segcreate Or SegOpen Services. There is no limit to the number
|
||
of times this service may be called, but it must be balanced by an equal number of calls to the segunLock
|
||
service.
|
||
|
||
|
||
SegUnLock Unlock a memory segment
|
||
BX The memory segment handle to be unlocked.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicSeg3 BX is not a valid memory segment handle.
|
||
|
||
|
||
Unlocks an open memory segment by its handle.
|
||
|
||
|
||
The handle must be one returned from the segcreate Of SegOpen Services. There is no harm in unlocking
|
||
a segment which is already unlocked although, if this is done inadvertently, the segment could be deleted
|
||
by another process.
|
||
|
||
|
||
SegSize Size of a memory segment
|
||
BX The memory segment handle.
|
||
|
||
RETURN:
|
||
AX Memory segment size in paragraphs.
|
||
|
||
PANIC:
|
||
PanicSeg3 BX was not a valid memory segment handle.
|
||
|
||
|
||
Returns the size of an open memory segment.
|
||
|
||
|
||
The size returned is the size of the memory segment in paragraphs. The handle must be one returned from
|
||
the segCreate OF SegOpen Services.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
SegAdjustSize
|
||
|
||
|
||
Adjust the size of a memory segment
|
||
|
||
|
||
BX The memory segment handle.
|
||
|
||
CX The new memory segment size in paragraphs.
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
NoMemoryErr Not enough memory to satisfy the request.
|
||
PANIC:
|
||
|
||
PanicSegl Requested size was negative.
|
||
|
||
PanicSeg3 BX was not a valid memory segment handle.
|
||
|
||
|
||
Adjust the size of an open memory segment.
|
||
|
||
|
||
The handle must be one returned from the segcreate Or SegOpen Services. CX must be positive (i.e. in the
|
||
range 0000h to 7fffh) and represents the new size of the memory segment in paragraphs. Setting CX to
|
||
zero will discard all the memory allocated to the memory segment but will not delete the segment itself.
|
||
|
||
|
||
SegFind Find all segments
|
||
|
||
|
||
BX The find handle.
|
||
|
||
ES:DI Pointer to a wild card match string.
|
||
|
||
DS:SI Pointer to the buffer to receive the name of the found segment.
|
||
RETURN: Carry clear
|
||
|
||
AX The find handle for the next find.
|
||
RETURN: Carry set
|
||
|
||
NotExistsErr No more segments found.
|
||
PANIC:
|
||
|
||
PanicSeg3 BX was not a valid find handle.
|
||
|
||
|
||
Finds all the segments running which match the wild card string pointed to by DI.
|
||
|
||
|
||
The first time this service is called, BX should be set to zero; the first segment will be found. After a find,
|
||
this service returns the find handle in the AX register. The find handle must be supplied on the next call
|
||
to this service to find the next segment running.
|
||
|
||
|
||
No memory is used by this service and it can be abandoned at any time without taking any further action.
|
||
The wild card string must always be supplied in DI and should be the same between calls to this service.
|
||
The buffer pointed to by SI should be MaxNamersize+2 In size.
|
||
|
||
|
||
SegCopyTo Copy to a memory segment
|
||
|
||
|
||
BX The memory segment handle.
|
||
cx The number of bytes to copy.
|
||
DS:SI The source of the data, in the current process, to be copied.
|
||
DX:DI The target offset in the memory segment.
|
||
RETURN: None
|
||
PANIC:
|
||
PanicSeg3 BX was not a valid memory segment handle.
|
||
PanicSeg4 DX:DI + CX exceeded the memory segment size.
|
||
|
||
|
||
Copy data from the current process to an open memory segment.
|
||
|
||
|
||
The handle must be one returned from the segcreate Or SegOpen Services. CX bytes are copied from
|
||
DS:SI to the memory segment at offset DX:DI from the base of the memory segment. DX:DI is the offset
|
||
in the memory segment for the target of the copy, as a 32 bit integer, with DI as the least significant word
|
||
and DX as the most significant word. If DX:DI + CX is greater than the size of the memory segment, then
|
||
the process will be panicked.
|
||
|
||
|
||
While the copy is being effected no other process can access the memory segment.
|
||
|
||
|
||
2 SEGMENTED MEMORY MANAGEMENT
|
||
|
||
|
||
SegCopyFrom Copy from a memory segment
|
||
BX The memory segment handle.
|
||
cx The number of bytes to copy.
|
||
DS:SI The target of the data, in the current process, to receive the copied
|
||
data.
|
||
DX:DI The source offset in the memory segment.
|
||
RETURN: None
|
||
PANIC:
|
||
PanicSeg3 BX was not a valid memory segment handle.
|
||
PanicSeg4 DX:DI + CX exceeded the memory segment size.
|
||
|
||
|
||
Copy data to the current process from an open memory segment.
|
||
|
||
|
||
The handle must be one returned from the segcreate Or SegOpen Services. CX bytes are copied from offset
|
||
DX:DI in the memory segment to DS:SI in the current process. DX:DI is the offset in the memory
|
||
segment, for the source of the copy, as a 32 bit integer, with DI as the least significant word and DX as the
|
||
most significant word. If DX:DI + CX is greater than the size of the memory segment, then the process
|
||
will be panicked.
|
||
|
||
|
||
While the copy is being effected no other process can access the memory segment.
|
||
|
||
|
||
SegRamDiskUsed Size of RAM disk
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AX Size of the RAM disk in paragraphs.
|
||
PANIC: None
|
||
|
||
|
||
Returns the size, in paragraphs, of the RAM disk (LOC::M:).
|
||
|
||
|
||
On machines containing more than 512 kilobytes of RAM, the RAM disk will be created in an upper
|
||
bank. In this case, unless the RAM disk overflows into the addressable RAM, SegRamDiskUsed will
|
||
generally return zero.
|
||
|
||
|
||
The value returned should be treated with some caution as the size of the RAM disk in a multi-tasking
|
||
environment is a dynamic function of the requests of all the currently running processes.
|
||
|
||
|
||
CHAPTER 3
|
||
|
||
|
||
HEAP MEMORY MANAGEMENT
|
||
|
||
|
||
Dynamics of heap memory
|
||
|
||
|
||
When a process is created using the ProcCreate service, the process is allocated an initial heap size. It is
|
||
also possible, if required, not to have a heap at all by specifying an initial heap size of zero. A process is
|
||
guaranteed its initial heap on start up and from then on it will have to contend with all the other processes
|
||
in the system for memory.
|
||
|
||
|
||
Whenever the heap allocator runs out of memory, it will try and increase the size of the process’ data
|
||
segment in order to satisfy the memory request. The data segment is grown in fixed sizes dependent on a
|
||
parameter held for each individual process. This value is initialised on process creation with the value
|
||
HeapGrowByDefault. This value can be altered at any time by calling the HeapSetGranularity service.
|
||
|
||
|
||
Whenever the system runs out of segment memory it will try and compress the heap space of every
|
||
running process by determining whether there is a free cell at the end of the heap. If there is, then the data
|
||
segment will be shrunk, but only within the bounds of the initial heap size that the process was created
|
||
with. Thus the initial heap size will be maintained throughout the life of the process.
|
||
|
||
|
||
The maximum size of the heap is a function of the size of the stack, the size of the initialised and
|
||
uninitialised data areas and the largest size that the data segment can be grown. The maximum size for a
|
||
data segment is Offeh paragraphs. As an example consider a process that has 1K of stack, 4K of initialised
|
||
data and 5K of uninitialised data, then the maximum possible size of the heap would be, OffeOh-0400h-
|
||
1000h-1400h which is Ode70h bytes.
|
||
|
||
|
||
HeapAllocateCell Allocate heap memory
|
||
cx Size of the cell to be allocated in bytes.
|
||
RETURN: = Carry clear
|
||
AX Base of cell.
|
||
RETURN: Carry set
|
||
NoMemoryErr Not enough memory for the request.
|
||
PANIC:
|
||
PanicHeap2 Heap is not initialized.
|
||
|
||
|
||
Allocates a cell in the process' heap memory.
|
||
|
||
|
||
The cell will be at least the size requested in CX and can possibly be bigger. The cell will always start on
|
||
an even memory address and will have an even length. This service can result in the process’ data segment
|
||
growing in size.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
HeapReAllocateCell
|
||
|
||
|
||
BX
|
||
CX
|
||
|
||
RETURN: Carry clear
|
||
AX
|
||
|
||
RETURN: Carry set
|
||
NoMemoryErr
|
||
|
||
PANIC:
|
||
PanicHeap2
|
||
PanicHeap4
|
||
|
||
|
||
Re-allocate heap memory
|
||
|
||
|
||
The base of the cell to be re-allocated or zero.
|
||
|
||
|
||
The new size of the re-allocated cell in bytes.
|
||
Base of the re-allocated cell.
|
||
Not enough memory for the request.
|
||
|
||
|
||
Heap is not initialised.
|
||
|
||
|
||
The base of the cell is not in the heap memory area.
|
||
|
||
|
||
Re-allocates a cell in the process’ heap memory.
|
||
|
||
|
||
A previously allocated cell can be changed in size by calling this service. The cell can be made larger or
|
||
smaller. If the value in the BX register is zero then this service performs in exactly the same way as the
|
||
|
||
|
||
HeapAllocateCell service.
|
||
|
||
|
||
If a cell is being extended then the service will attempt to do so by using any free memory existing
|
||
immediately after the cell. If there is no free memory then the cell will be moved elsewhere and extended.
|
||
Thus the value returned in AX will often not be the same as that passed in the BX register. i.e. do not rely
|
||
on old copies of the cell base after a call to the HeapReAllocateCell service. The cell will be at least the
|
||
size requested in CX and can possibly be bigger. The cell will always start on an even memory address
|
||
|
||
|
||
and will have an even length.
|
||
|
||
|
||
Any changes to the cell always occur at the end of the cell. Thus if the cell is extended then it will be
|
||
extended at the end and the data currently in the cell will be untouched. If the cell is shrunk then the
|
||
shrink will be at the end of the cell and the data at the end of the cell will be lost. This service can result
|
||
in the process' data segment growing in size.
|
||
|
||
|
||
HeapAdjustCellSize
|
||
|
||
|
||
BX
|
||
cx
|
||
Dx
|
||
|
||
RETURN: Carry clear
|
||
AX
|
||
|
||
RETURN: Carry set
|
||
NoMemoryErr
|
||
|
||
PANIC:
|
||
PanicHeap2
|
||
PanicHeap3
|
||
PanicHeap4
|
||
|
||
|
||
Adjust the size of heap memory
|
||
|
||
|
||
Base of cell to be adjusted.
|
||
Adjustment to the size of the cell in bytes.
|
||
|
||
|
||
Offset in the cell to make the adjustment.
|
||
Base of cell after adjusting.
|
||
|
||
Not enough memory to satisfy the request.
|
||
Heap is not initialised.
|
||
|
||
|
||
Offset of adjust is greater than cell size.
|
||
|
||
|
||
The base of the cell is not in the heap memory area.
|
||
|
||
|
||
Adjust the size of the cell at BX, at an offset DX in the cell, by CX bytes.
|
||
|
||
|
||
The cell will be shrunk if CX is negative and grown if CX is positive. As this service can call the
|
||
HeapReAllocateCell service, the cell may be moved if it is being extended. Thus the value returned in
|
||
AX need not be the same as that passed in BX. Unlike the HeapReAllocateCell service BX may not be
|
||
zero, i.e. the cell must already be allocated. This service can result in the process' data segment growing in
|
||
|
||
|
||
size.
|
||
|
||
|
||
3 HEAP MEMORY MANAGEMENT
|
||
|
||
|
||
HeapFreeCell Free heap memory
|
||
BX Base of cell.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicHeap2 Heap is not allocated.
|
||
PanicHeap4 The base of the cell is not in the heap memory area.
|
||
|
||
|
||
Free the memory cell whose base is in the BX register. The value passed in BX must be as returned from
|
||
HeapAllocateCell, HeapReAllocateCell Of HeapAdjustCellSize.
|
||
|
||
|
||
HeapCellSize Size of a heap cell
|
||
BX Pointer to the base of cell.
|
||
RETURN:
|
||
AX Cell size in bytes.
|
||
PANIC:
|
||
PanicHeap2 Heap is not allocated.
|
||
PanicHeap4 The base of the cell is not in the heap memory area.
|
||
|
||
|
||
Returns the size of a cell allocated in heap memory. This size is guaranteed to be even.
|
||
|
||
|
||
HeapSetGranularity Set the heap granularity
|
||
BX The new granularity in paragraphs.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicHeap2 Heap is not allocated.
|
||
PanicHeap3 Attempt to set the granularity bigger than MaxHeapGrowBy.
|
||
|
||
|
||
Set the heap granularity parameter to the value in BX.
|
||
|
||
|
||
The maximum value for the heap granularity is MaxHeapGrowBy. Whenever the heap allocator runs out of
|
||
memory, it will try and increase the size of the process' data segment in order to satisfy the memory
|
||
request. The data segment is grown in fixed sizes dependent on a parameter held for each individual
|
||
process. This value is initialised on process creation with the value HeapGrowByDefault.
|
||
|
||
|
||
HeapFreeMemory Size of available heap memory
|
||
|
||
|
||
None
|
||
RETURN:
|
||
AX Number of bytes potentially available in the heap.
|
||
BX Address of the base of the heap memory.
|
||
PANIC:
|
||
PanicHeap2 Heap is not allocated.
|
||
Returns the size of potentially available heap memory and the address of the base of the heap memory.
|
||
|
||
|
||
The size returned in AX consists of the amount of free memory in the heap that is currently available plus
|
||
the amount by which the heap could be extended.
|
||
|
||
|
||
The value returned should be treated with some caution as the amount of available memory in a multi-
|
||
tasking environment is a dynamic function of the memory requests of all the currently running processes.
|
||
|
||
|
||
CHAPTER 4
|
||
|
||
|
||
SEMAPHORE MANAGEMENT
|
||
|
||
|
||
SemCreate Create a semaphore
|
||
BX Initial semaphore count.
|
||
RETURN: = Carry clear
|
||
AX Semaphore handle.
|
||
RETURN: Carry set
|
||
NoSemaphoreErr No semaphores are available.
|
||
PANIC:
|
||
PanicSem3 Requested initial count was negative.
|
||
|
||
|
||
Creates a semaphore, owned by the calling process, with an initial count as specified in BX.
|
||
|
||
|
||
A process should delete any owned semaphores before exiting but if it should exit abnormally or be
|
||
panicked then the Supervisor will automatically delete it on behalf of the process.
|
||
|
||
|
||
SemDelete Delete a semaphore
|
||
BX The semaphore handle.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicSem1 Invalid semaphore handle.
|
||
PanicSem2 Semaphore not allocated.
|
||
|
||
|
||
Deletes a semaphore identified by the handle passed in BX. The handle in BX should be the one returned
|
||
from the segcreate service. Any processes waiting on the semaphore are automatically signalled.
|
||
|
||
|
||
SemWait Wait on a semaphore
|
||
BX The semaphore handle.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicSem1 Invalid semaphore handle.
|
||
PanicSem2 Semaphore not allocated.
|
||
|
||
|
||
Waits for a semaphore to be signalled.
|
||
|
||
|
||
If the semaphore has a count greater than 0 then semwait will return immediately. If the semaphore has a
|
||
count of 0 or less then the process will wait on the semaphore queue until the semaphore is signalled.
|
||
More than one process can be waiting on a semaphore at a time, in which case the process that is released
|
||
from the queue is on a first wait, first release basis.
|
||
|
||
|
||
If the semaphore that is being waited on has been deleted because the owning process has explicitly
|
||
deleted it, exited or been panicked, then the waiting processes will be automatically released. There is no
|
||
way of determining that this has happened other than co-operation between the processes sharing the
|
||
semaphore.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
SemSignalOnce Signal once
|
||
BX The semaphore handle.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicSem1 Invalid semaphore handle.
|
||
PanicSem2 Semaphore not allocated.
|
||
|
||
|
||
Signals a semaphore once.
|
||
|
||
|
||
If the signalled semaphore has a count less than zero then the first process waiting on the semaphore will
|
||
be released and a re-schedule will take place. If the count is zero or positive then the count will just be
|
||
incremented.
|
||
|
||
|
||
SemSignalMany Signal more than once
|
||
BX The semaphore handle.
|
||
cx The number of signals.
|
||
RETURN: None
|
||
PANIC:
|
||
PanicSem1 Invalid semaphore handle.
|
||
PanicSem2 Semaphore not allocated.
|
||
PanicSem4 CX not greater than or equal to 1.
|
||
|
||
|
||
Signals a semaphore by the count in CX, which should never be negative.
|
||
|
||
|
||
If the signalled semaphore has a count less than zero then up to CX waiting processes will be released and
|
||
a re-schedule will take place. If the count is zero or positive then the count will just be incremented by the
|
||
value in CX.
|
||
|
||
|
||
SemSignalOnceNoReSched Signal once without re-schedule
|
||
BX The semaphore handle.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicSem1 Invalid semaphore handle.
|
||
PanicSem2 Semaphore not allocated.
|
||
|
||
|
||
Signals a semaphore once with no re-schedule.
|
||
|
||
|
||
If the signalled semaphore has a count less than zero then the first waiting process will be released.
|
||
However, unlike semsignalonce, a re-schedule will not take place. This guarantees that the call to this
|
||
service will return to the caller immediately. If the count is zero or positive then the count will just be
|
||
incremented.
|
||
|
||
|
||
If this service is used instead of semsignalOnce Of SemSignalMany then the next re-schedule will only
|
||
occur on the expiration of the next time slice. This may unnecessarily delay the signalled process. In order
|
||
to overcome this, a re-schedule can always be forced by calling the TimsleepForTicks service with a value
|
||
of 0.
|
||
|
||
|
||
CHAPTER 5
|
||
|
||
|
||
MESSAGE MANAGEMENT
|
||
|
||
|
||
Inter process communication
|
||
|
||
|
||
The messaging subsystem is a very important part of the operating system as it allows the high speed
|
||
passing of information between processes.
|
||
|
||
|
||
Any process can send a message to another process if the target process is prepared to receive messages.
|
||
However, a process can only receive messages if it has previously initialised the message system by calling
|
||
the MessInit service.
|
||
|
||
|
||
A message consists of the header as described in the structure MessEnt followed by a buffer whose length
|
||
is specified by the process receiving the message, when it calls the MessInit service. The sending process
|
||
has no control over how much data is sent to the receiving process.
|
||
|
||
|
||
When a process sends a message it just specifies a message type, which is a 16 bit integer, and the address
|
||
of a buffer. The receiving process will get the message and the following information
|
||
|
||
|
||
e The message type as specified by the sender.
|
||
e The process id of the sender.
|
||
e The first X bytes of data from the buffer where X is the number specified to the MessInit service.
|
||
|
||
|
||
The actual information content of message is defined by the receiver of the message and should be limited
|
||
to as small a number as possible. For example the file server and the supervisor are both communicated
|
||
with by messages where the number of bytes of information is 8.
|
||
|
||
|
||
It will often be necessary for processes to send more than the amount of information allowed for by the
|
||
receiving process in the message buffer. In this case all that is necessary is to send the address of the
|
||
buffer and the length of the data in the message.
|
||
|
||
|
||
The receiving process can then call the procCopyFromById and ProcCopyToById services to either copy
|
||
data to or from the sending process.
|
||
|
||
|
||
eee nee ee eee ee ey |
|
||
Order of message reception
|
||
|
||
|
||
When a process initialises the message system, a queue is created to hold received messages. The number
|
||
of entries which can be held in the queue is specified to the MessInit service.
|
||
|
||
|
||
Messages arriving are queued in arrival order and are normally removed in arrival order. However
|
||
messages sent by a process whose priority is greater than 0x80 will jump to the beginning of the queue.
|
||
|
||
|
||
When a process sends a message to another process, two outcomes are possible:
|
||
|
||
|
||
e There will be room in the target process' queue, in which case the message will be delivered and
|
||
the process will not wait.
|
||
|
||
|
||
e =There will be no room in the target process’ queue, in which case the process will wait until there
|
||
is room in the queue. As soon as there is room and the process gains a time slice, the message
|
||
will be delivered as previously.
|
||
|
||
|
||
5-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
The message system and the I/O system
|
||
|
||
|
||
The message system has been designed to follow the I/O system very closely; in particular both systems
|
||
share the following features:
|
||
|
||
|
||
e Asynchronous and Synchronous capability.
|
||
¢ Completion status words containing PendingErr while the request is still outstanding.
|
||
e Synchronisation through the tosignal, IoWaitForSignal, IoWaitForStatus Services.
|
||
|
||
|
||
This makes it possible to mix asynchronous messaging with asynchronous I/O.
|
||
|
||
|
||
Messlnit Initialise the message system
|
||
BL The number of messages allowed in the message queue.
|
||
BH The length of messages excluding the MessEnt structure.
|
||
RETURN: Carry clear
|
||
Success.
|
||
RETURN: Carry set
|
||
NoSemaphoreErr No free semaphores left.
|
||
NoMemoryErr Not enough memory to allocate the message queue.
|
||
PANIC:
|
||
PanicMess1 Messages are already initialized.
|
||
PanicHeap3 Invalid number of messages specified.
|
||
|
||
|
||
Initialises the message system.
|
||
|
||
|
||
BL messages are allowed for in the message queue. BH specifies the size of a message but excludes the
|
||
size of the MessEnt structure which is at the front of all messages.
|
||
|
||
|
||
The message queue is allocated in the process' heap memory and, as such, it is recommended that
|
||
processes which call this service should do so as early in their initialisation as possible. All messages are
|
||
the same size, and the size of the message queue can be calculated as follows:
|
||
|
||
|
||
BL * (BH + size of MessEnt) bytes.
|
||
|
||
|
||
In general, programs which are servers for all the other processes should allocate enough message entries
|
||
to ensure that there is room in the queue for every process to deliver a message. The constant
|
||
MaxProcesses contains the total number of processes which can be supported by the system. In practice
|
||
this can be reduced by four - for the NULL, Supervisor, File Server and Window Server processes.
|
||
|
||
|
||
MessReceiveAsynchronous Asynchronous message reception
|
||
|
||
|
||
DS:BX Pointer to a word to receive the address of the message received.
|
||
DS:DI Pointer to the status word.
|
||
RETURN: None
|
||
PANIC:
|
||
PanicMess2 Messages are not initialised.
|
||
PanicloPending Already waiting for a message.
|
||
|
||
|
||
Queues a request to receive a message and returns immediately.
|
||
|
||
|
||
If there are no messages waiting in the queue then the status word will contain pendingErr and the
|
||
process can wait for completion by calling the 1oWaitForSignal Of IoWaitForStatus services. If there is
|
||
a message waiting in the queue then the status word will contain the value nozrr, i.e. zero. The process
|
||
must still call either the towaitForSignal Or IoWaitForStatus services to balance the signal which is
|
||
sent on receiving a message.
|
||
|
||
|
||
5 MESSAGE MANAGEMENT
|
||
|
||
|
||
When the message has been received then the word pointed to by BX will contain the address of the
|
||
message. After the process has finished with the data in the message, the message should be returned to
|
||
the queue using the MessFree service. If messages are not freed then eventually the message queue will be
|
||
empty and any process sending a message will wait indefinitely.
|
||
|
||
|
||
MessReceiveWithWait Synchronous message reception
|
||
DS:BX Pointer to a word to receive the address of the message received.
|
||
RETURN: None
|
||
PANIC:
|
||
PanicMess2 Messages are not initialised.
|
||
PanicloPending Already waiting for a message.
|
||
|
||
|
||
Waits for a message to be received.
|
||
|
||
|
||
When the message has been received then the word pointed to by DS:BX will contain the address of the
|
||
message. After the process has finished with the data in the message, then the message should be returned
|
||
to the queue using the MessFree service. If messages are not freed then eventually the message queue will
|
||
be empty and any process sending a message will wait indefinitely.
|
||
|
||
|
||
MessReceiveCancel Cancel queued message receive
|
||
None
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicMess2 Messages are not initialised.
|
||
|
||
|
||
If a request to receive a message has been queued with the MessReceiveAsynchronous Service then the
|
||
request may be cancelled with the MessReceiveCancel service.
|
||
|
||
|
||
It is not considered an error to call this service if no request is outstanding. After this service has been
|
||
called, a signal will be delivered and the status word will be changed to cancelzrr. Note that this service
|
||
can not be called to cancel a request pending from the MessSendReceiveAsynchronous Service.
|
||
|
||
|
||
MessSend Send messages
|
||
BX The id of the process to receive the message.
|
||
CX The type of message.
|
||
SS:SI Pointer to the message buffer.
|
||
|
||
|
||
RETURN: Carry clear
|
||
Success.
|
||
RETURN: Carry set
|
||
NoReceiverErr The target process does not exist.
|
||
PANIC: None
|
||
Sends a message to the process whose id is specified in the BX register.
|
||
If the target process either does not exist or has not initialised messages, the service will return the
|
||
NoReceiverErr. The message, when it arrives, will have the field Messtype in the MessEnt structure set to
|
||
|
||
|
||
the value passed in the CX register. The rest of the message will be copied from the buffer pointed to by
|
||
SS:SI.
|
||
|
||
|
||
There is no need to specify the length of the data to be copied as it is not a function of the sending process
|
||
but a function of the receiving process. If the target process' message queue is full, the sending process
|
||
will be suspended until space becomes available in the queue.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
MessSendReceiveAsynchronous Send and get a reply async
|
||
BX The process id to receive the message.
|
||
cx The type of message.
|
||
DI Pointer to the status word.
|
||
SS:SI Pointer to the message data.
|
||
|
||
|
||
RETURN: Carry clear
|
||
Success.
|
||
RETURN: Carry set
|
||
NoReceiverErr The target process does not exist.
|
||
PANIC: None
|
||
Sends a message to a process and returns without waiting for the reply from that process.
|
||
The target process is as specified by the process id in BX, the message type is in CX and the message data
|
||
|
||
|
||
is pointed to by SS:SI. These parameters have the same meaning as for MessSend. The pointer to the
|
||
status word is specified by DI.
|
||
|
||
|
||
When the target process eventually frees the message then the reply will be returned in the status word
|
||
pointed to by DI and a signal will be sent to the sending process.
|
||
|
||
|
||
MessSendReceiveWithWait Send and wait for a reply
|
||
BX The process id to receive the message.
|
||
Cx The type of message.
|
||
SS:SI Pointer to the message data.
|
||
RETURN: Carry clear
|
||
AX The received data.
|
||
RETURN: Carry set
|
||
NoReceiverErr The target process does not exist.
|
||
Returned error Depends on the value returned by the target.
|
||
|
||
|
||
PANIC: None
|
||
Sends a message to a process and then waits for a reply from that process.
|
||
The target process is as specified by the process id in BX, the message type is in CX and the message data
|
||
|
||
|
||
is pointed to by SS:SI. These parameters have the same meaning as for Messsend. The target process
|
||
returns the reply when it frees the message it received with the MessFree service.
|
||
|
||
|
||
MessFree Freea message
|
||
DS:BX Pointer to message to be freed.
|
||
Cx The value to be returned to the sender of the message.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicMess2 Messages are not initialised.
|
||
|
||
|
||
Returns a received message to the message queue.
|
||
|
||
|
||
If messages are not returned to the message queue then in due course there will be no messages left in the
|
||
queue and all sending processes will be suspended and only the receiver will be left running (wondering
|
||
where everyone else has gone).
|
||
|
||
|
||
If a message was sent with just a MessSend then the return value in CX is ignored.
|
||
|
||
|
||
If a message was sent with MessSendReceiveWithWait Of MessSendReceiveAsynchronous then the value
|
||
in CX is the returned reply.
|
||
|
||
|
||
5 MESSAGE MANAGEMENT
|
||
|
||
|
||
MessSignal Request a signal from the Supervisor
|
||
BX The process id which will trigger the signal when it terminates.
|
||
CX The message type to be sent when the process terminates.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: Carry set
|
||
NotExistsErr The requested process does not exist.
|
||
PANIC:
|
||
PanicMess2 Messages are not initialised.
|
||
|
||
|
||
Notifies the supervisor to send a message of the type specified in CX to the process calling this service
|
||
when the process specified in BX exits or is panicked.
|
||
|
||
|
||
This service is very similar to loRequestReset in that it is a mechanism which allows processes and
|
||
servers, in particular, to perform valuable housekeeping when a process connected to a server terminates.
|
||
|
||
|
||
For example, when a process connects to the file server with the Filconnect service, the file server calls
|
||
this service to register an interest in the process making the connection. When the process terminates, the
|
||
file server will receive a message from the supervisor that the process has terminated and the server can
|
||
then free all the resources associated with that process.
|
||
|
||
|
||
When the process specified in BX terminates, a message will be sent from the supervisor with the type
|
||
requested in CX. The first word in the message buffer is the id of the terminating process and the second
|
||
word contains the exit code. The exit code is split into two bytes; the least significant byte has the actual
|
||
reason for the termination and the most significant byte has the type of exit. This can be one of:
|
||
|
||
|
||
@ KillExit - The process was killed or terminated; by convention, if the
|
||
least significant byte (i.e. the reason for the termination) was 0
|
||
then it was a non-error exit.
|
||
|
||
|
||
@ PanicExit - The process was panicked.
|
||
@ TaskPanicExit - A task in the process was panicked which caused the process
|
||
itself to be panicked.
|
||
|
||
|
||
Having registered an interest in a process with the supervisor, this interest can be cancelled by calling the
|
||
MessSignalCancel service. When the process terminates, a signal will not be sent by the supervisor.
|
||
|
||
|
||
The process must have messages initialised in order to request this service.
|
||
|
||
|
||
MessSignalCancel Cancel requested signal from Supervisor
|
||
|
||
|
||
BX The process id which will trigger the signal, when it terminates.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success.
|
||
RETURN: = Carry set
|
||
NotExistsErr The process has no signal request logged with the supervisor.
|
||
PANIC:
|
||
PanicMess2 Messages are not initialised.
|
||
|
||
|
||
Cancels a previously requested signal from the supervisor as set up by an earlier call to Messsignal.
|
||
BX contains the process id is as passed to an earlier call to Messsignal.
|
||
The process must have messages initialised in order to request this service.
|
||
|
||
|
||
This service is unsuitable for applications that have requested more than one signal for termination of the
|
||
same process. In this situation, the application should use MesssignalCance1x; this allows the message
|
||
type to be identified.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
?MessSignalCancelX Cancel signal from Supervisor by type
|
||
BX The process id which will trigger the signal when it terminates.
|
||
CX The message type to be sent when the process terminates.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success.
|
||
RETURN: = Carry set
|
||
NotExistsErr The process has no signal request logged with the supervisor.
|
||
PANIC:
|
||
PanicMess2 Messages are not initialised.
|
||
|
||
|
||
Cancels a previously requested signal from the supervisor.
|
||
|
||
|
||
The parameters to this function are exactly same as those to the MessSignal service which set up the
|
||
signal in the first place.
|
||
|
||
|
||
The process must have messages initialised in order to request this service.
|
||
|
||
|
||
This service must be used in preference to MessSignalCancel in cases where two or more MessSignal
|
||
requests are made with the same value of BX.
|
||
|
||
|
||
CHAPTER 6
|
||
DYNAMIC LIBRARY, CATEGORY AND OBJECT
|
||
|
||
|
||
MANAGEMENT
|
||
|
||
|
||
Library names
|
||
|
||
|
||
All dynamic libraries have two names by which they may be referenced.
|
||
e =©File name.
|
||
e = Internal name.
|
||
|
||
|
||
The file name of a dynamic library is just used to load the library into memory so that it can be used by
|
||
other processes. The default extension for dynamic libraries is DYL. The file name should be used to load
|
||
the library using the LibLoad Or LibLoadFile services.
|
||
|
||
|
||
Once loaded, a dynamic library publishes a name by which the library is known to the system. This name
|
||
just consists of the name and extension portion of the file name.
|
||
|
||
|
||
An image can also be a dynamic library as well as an image in which case if the image name is
|
||
NNNN.IMG or NNNN.APP the internal name published will be the name of the code segment, i.e.
|
||
|
||
|
||
NNNN.$SC.
|
||
|
||
|
||
LibLoad
|
||
|
||
|
||
ES: BX
|
||
|
||
|
||
CL
|
||
|
||
|
||
RETURN: = Carry clear
|
||
|
||
|
||
Load a dynamic library
|
||
|
||
|
||
Pointer to the dynamic library file name.
|
||
Zero - Don't link the library automatically.
|
||
|
||
|
||
Non Zero - Link the library after loading.
|
||
|
||
|
||
AX The dynamic library handle.
|
||
RETURN: Carry set
|
||
NameErr Invalid file name.
|
||
NotExistsErr Dynamic library file does not exist.
|
||
AlreadyOpenErr Dynamic library already loaded.
|
||
ImageErr File is not a valid dynamic library file.
|
||
PANIC:
|
||
PanicObj6 All external references in the library could not be resolved.
|
||
PanicFs1 Process not connected to the File Server.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Loads a dynamic library into memory for access by the other Lib services.
|
||
|
||
|
||
ES:BX points to a zero terminated file name which can be a full path name. If the dynamic library is
|
||
already in memory then it will be shared and the library will not be re-loaded. This service can also invoke
|
||
the LibLink service, depending on the value in CL. If CL is non-zero then the library will be linked after
|
||
loading. Clearly if the library is already linked then this will be skipped.
|
||
|
||
|
||
As long as the process keeps the dynamic library open, it will stay in memory. It is desirable that a process
|
||
should unload the library, using the LibunLoad service as soon as it has finished using it. This allows
|
||
memory to be freed for use by other processes.
|
||
|
||
|
||
If the process should panic or be killed before it can close the library, the supervisor will automatically
|
||
perform the unload. Note that the process must be connected to the file server before this service can be
|
||
called.
|
||
|
||
|
||
LibUnLoad Unload a dynamic library
|
||
|
||
|
||
BX Handle for the dynamic library.
|
||
RETURN: Carry clear
|
||
|
||
Success.
|
||
RETURN: Carry set
|
||
|
||
NotOpenErr Process does not have the library opened.
|
||
|
||
|
||
PANIC: None
|
||
Unloads a dynamic library from memory.
|
||
A loaded dynamic library can be shared by many processes; each time a process loads it, the library access
|
||
|
||
|
||
count is incremented. Unloading the library decreases the access count. If the access count is 0 after
|
||
unloading the dynamic library, it will be discarded from memory.
|
||
|
||
|
||
As dynamic libraries are in memory, it is important that programs unload a library as soon as they have
|
||
finished using it. If a program is terminated for any reason, then the supervisor will automatically call this
|
||
service for any library still loaded.
|
||
|
||
|
||
LibLink Link a dynamic library
|
||
|
||
|
||
BX Handle to the dynamic library.
|
||
RETURN: None
|
||
PANIC:
|
||
PanicObj6 All external references in the library could not be resolved.
|
||
|
||
|
||
Links a dynamic library which is already in memory.
|
||
|
||
|
||
If the library has already been linked because another process has already loaded and linked it then this
|
||
service just returns.
|
||
|
||
|
||
All external categories which are required to satisfy external references in the library to be linked must
|
||
already be in memory or on the ROM disk before this service is called, otherwise Panicob 6 will be
|
||
generated.
|
||
|
||
|
||
Programs, i.e. IMG files which contain a category must request this service to link themselves before any
|
||
classes can be accessed. In order to specify the SELF category, the handle BX must be 0. Normally the
|
||
handle will have been returned by LibLoad Of LibFind.
|
||
|
||
|
||
LibFind Get a dynamic library handle
|
||
|
||
|
||
ES:BX Pointer to the dynamic library internal name.
|
||
RETURN: Carry clear
|
||
|
||
AX The dynamic library handle.
|
||
RETURN: Carry set
|
||
|
||
NotExistsErr The dynamic library is not loaded into memory.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
6 DYNAMIC LIBRARY, CATEGORY AND OBJECT MANAGEMENT
|
||
|
||
|
||
Given the internal name of a dynamic library, this service will return a handle to that library. The library
|
||
must exist on the ROM disk or have been loaded by the program.
|
||
|
||
|
||
Having found a handle to a library, it can be used to create objects using the classes contained in that
|
||
library by invoking the LibcreateByHandle Service.
|
||
|
||
|
||
LibHandle Get a DYL handle by number
|
||
|
||
|
||
BX The number of the required external category.
|
||
RETURN:
|
||
AX The category handle.
|
||
PANIC:
|
||
PanicObj2 Number does not specify a valid external category.
|
||
PanicObj5 Attempt to get a handle before the SELF category has been linked.
|
||
|
||
|
||
When a category is generated, it may contain references to external categories. After calling the LibLink
|
||
service, these external references are resolved. In order to get a handle to these external categories, this
|
||
service may be called by using the number provided by the category compiler. This number will be defined
|
||
as CAT_... If this service is passed a value of 0 in BX, it will return 0 as the handle for the self category
|
||
is also 0.
|
||
|
||
|
||
This service is used by the Libcreate service.
|
||
|
||
|
||
LibCreate Create an object by category number
|
||
BX The number of the category.
|
||
CX The number of the class within the category.
|
||
RETURN: Carry clear
|
||
AX The object handle.
|
||
RETURN: Carry set
|
||
NoMemoryErr The object could not be created.
|
||
PANIC:
|
||
PanicObj2 Number does not specify a valid external category.
|
||
PanicOb33 Number does not specify a valid class.
|
||
PanicObj5 Attempt to get a handle before the SELF category has been linked.
|
||
|
||
|
||
Two components are always required to specify a class from which an object is to be created:
|
||
e The category handle.
|
||
e The class number.
|
||
|
||
|
||
This service converts the category number passed in BX to a handle by calling the LibHandle service and
|
||
then calling the LibcreateByHandle Service.
|
||
|
||
|
||
The category number can be 0, meaning the SELF category or the number of an external category as
|
||
created by the category compiler.
|
||
|
||
|
||
The class number in CX is as created by the category compiler. The handle to the object created is
|
||
returned in AX, if carry is clear. The only error which can occur is an out of memory condition. The
|
||
object's data will be initialised to zero by this service.
|
||
|
||
|
||
LibCreateByHandle Create an object by category handle
|
||
BX The handle of the category.
|
||
Cx The number of the class within the category.
|
||
RETURN: Carry clear
|
||
AX The object handle.
|
||
RETURN: Carry set
|
||
NoMemoryErr The object could not be created.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
PANIC:
|
||
PanicObj2 Number does not specify a valid external category.
|
||
PanicOb33 Number does not specify a valid class.
|
||
PanicObj5 Attempt to get a handle before the SELF category has been linked.
|
||
|
||
|
||
The category handle can be 0 to mean the SELF category, otherwise it must be a handle returned by
|
||
LibFind, LibLoad Of LibHandle.
|
||
|
||
|
||
The class number in CX is as created by the category compiler. The handle to the object created is
|
||
returned in AX, if carry is clear. The only error which can occur is an out of memory condition. The
|
||
object's data will be initialised to zero by this service.
|
||
|
||
|
||
LibDestroy Destroy an object
|
||
|
||
|
||
BX The handle of the object to be destroyed.
|
||
RETURN: None
|
||
PANIC: None
|
||
This service will de-allocate all the memory associated with an object including any compound objects.
|
||
|
||
|
||
This service is normally called by the root class in its DESTROY method. As this is the ultimate super
|
||
class, all objects are inherently able to destroy themselves.
|
||
|
||
|
||
e LibSend Send a message
|
||
BX The handle of the object to receive the message.
|
||
CL The message number to be sent.
|
||
DX Argument |
|
||
SI Argument 2
|
||
DI Argument 3
|
||
RETURN:
|
||
AX Whatever the method returns.
|
||
PANIC:
|
||
PanicOb3j0 No method prepared to handle the message number in CX.
|
||
|
||
|
||
This service will send a message to an object.
|
||
|
||
|
||
Any arguments to the method eventually invoked should be allocated to the registers DX,SI and DI in that
|
||
order. The search for a method starts in the class which was used to create the object.
|
||
|
||
|
||
e LibSendSuper Send a superclass message
|
||
BX The handle of the object to receive the message.
|
||
CL The message number to be sent.
|
||
DX Argument |
|
||
SI Argument 2
|
||
DI Argument 3
|
||
RETURN:
|
||
AX Whatever the method returns.
|
||
PANIC:
|
||
PanicOb3j0 No method prepared to handle the message number in CX.
|
||
|
||
|
||
This service will send a message to an object. Unlike Libsena, however, the search for a method starts in
|
||
the object's immediate superclass. This is the way in which inheritance works.
|
||
|
||
|
||
6 DYNAMIC LIBRARY, CATEGORY AND OBJECT MANAGEMENT
|
||
|
||
|
||
e LibSendExact Send a direct message
|
||
DS: [DatEClassHandle] The category handle.
|
||
DS: [DatEClassPtr] The class number.
|
||
BX The handle of the object to receive the message.
|
||
CL The message number to be sent.
|
||
DX Argument |
|
||
SI Argument 2
|
||
DI Argument 3
|
||
RETURN:
|
||
AX Whatever the object returns.
|
||
PANIC:
|
||
PanicOb3j0 No method prepared to handle the message number in CX.
|
||
|
||
|
||
This service will send a message to an object. Unlike Libsena, however, the search for the method starts
|
||
at the class specified in DS:[DatEClassHandle],DS:[DatEClassPtr].
|
||
|
||
|
||
e LibEnterSend Send message under protection of Enter
|
||
BX The handle of the object to receive the message.
|
||
CL The message number to be sent.
|
||
DX Argument |
|
||
SI Argument 2
|
||
DI Argument 3
|
||
RETURN:
|
||
AX Whatever the method returns or is passed to LibLeave.
|
||
PANIC:
|
||
PanicOb3j0 No method selected by CX.
|
||
|
||
|
||
This service will send a message to an object.
|
||
The first two arguments are mandatory; the other arguments depend on the method being selected.
|
||
|
||
|
||
The search for a method starts in the class which was used to create the object. Unlike Libsend the
|
||
method called is entered as if it had been called with LibEnter. Thus any LibLeave calls from the method
|
||
itself or any of the routines which it may call can be made to return to the caller of this service.
|
||
|
||
|
||
LibOpen Open a multi library file
|
||
|
||
|
||
ES:BX Pointer to the file name.
|
||
RETURN: Carry clear
|
||
|
||
AX The open multi library file handle.
|
||
RETURN: Carry Set
|
||
|
||
ImageErr Not a multi library file.
|
||
|
||
Error Any error that Filopen can give.
|
||
PANIC:
|
||
|
||
PanicFs1 Process not connected to the File Server.
|
||
|
||
|
||
This service opens a file which contains multiple libraries.
|
||
|
||
|
||
Most commonly this is an image file to which the multiple libraries have been added using the OsMake
|
||
tool.
|
||
|
||
|
||
The returned handle in AX can be used with LibLoadrile to load libraries. The handle is a normal file
|
||
handle as if the file had been opened with rilopen and, as such, when access to the file is no longer
|
||
required it can be closed with Fiiclose.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
LibLoadFile
|
||
|
||
|
||
BX
|
||
CH
|
||
|
||
|
||
CL
|
||
|
||
|
||
RETURN: Carry clear
|
||
Success.
|
||
RETURN: Carry set
|
||
AlreadyOpenErr
|
||
ImageErr
|
||
PANIC:
|
||
PanicObj6
|
||
|
||
|
||
PanicFs1l
|
||
|
||
|
||
Load a multiple dynamic library
|
||
|
||
|
||
Multiple library file handle.
|
||
The index of the library to be loaded.
|
||
Zero - Don't link the library automatically.
|
||
|
||
|
||
Non Zero - Link the library after loading.
|
||
|
||
|
||
Dynamic library already loaded.
|
||
File is not a valid dynamic library file.
|
||
|
||
|
||
All external references in the library could not be resolved.
|
||
|
||
|
||
Process not connected to the File Server.
|
||
|
||
|
||
Loads a dynamic library from an already opened multiple library file into memory for access by the other
|
||
|
||
|
||
library services.
|
||
|
||
|
||
The handle in BX must have been provided by the Libopen service. CH selects the library to be loaded
|
||
from the file in the order that libraries were added to the image originally. Thus 0 will load the first
|
||
library from the file, 1 the second and so on.
|
||
|
||
|
||
If the dynamic library is already in memory then it will be shared and the library will not be re-loaded.
|
||
This service can also invoke the LibLink service, depending on the value in CL. If CL is non zero then the
|
||
library will be linked after loading. Clearly if the library is already linked then this will be skipped.
|
||
|
||
|
||
As long as the process keeps the dynamic library open, it will stay in memory. It is desirable that a process
|
||
should unload the library, using LibUnLoad, as soon as it has finished with it so that the memory can be
|
||
used by other processes. If the process should panic or be killed before it can close the library, the
|
||
supervisor will automatically perform the unload.
|
||
|
||
|
||
Note that the process must be connected to the file server before this service can be called.
|
||
|
||
|
||
LibReClass
|
||
|
||
|
||
BX
|
||
|
||
CX
|
||
|
||
DI
|
||
RETURN: None
|
||
PANIC:
|
||
|
||
PanicObj2
|
||
|
||
PanicObj3
|
||
|
||
PanicObj5
|
||
|
||
|
||
Reclass an object by number
|
||
|
||
|
||
The number of the category.
|
||
The number of the class within the category.
|
||
|
||
|
||
Pointer to the object to be reclassed.
|
||
|
||
|
||
Number does not specify a valid external category.
|
||
Number does not specify a valid class.
|
||
|
||
|
||
Attempt to get a handle before the SELF category has been linked.
|
||
|
||
|
||
There are always two components to specifying a class in order to reclass an object.
|
||
|
||
|
||
e The category handle.
|
||
|
||
|
||
e §=The class number.
|
||
|
||
|
||
This service converts the category number passed in BX to a handle by calling the LibHandle service and
|
||
then calling the LibReClassByHandle service. The category number can be 0 meaning the SELF category
|
||
or the number of an external category as created by the category compiler. The class number in CX is as
|
||
|
||
|
||
created by the category compiler.
|
||
|
||
|
||
6 DYNAMIC LIBRARY, CATEGORY AND OBJECT MANAGEMENT
|
||
|
||
|
||
LibReClassByHandle Reclass an object by handle
|
||
|
||
|
||
BX The handle of the category.
|
||
Cx The number of the class within the category.
|
||
DI Pointer to the object to be reclassed.
|
||
RETURN: None
|
||
PANIC:
|
||
PanicObj2 Handle does not specify a valid external category.
|
||
PanicOb33 Number does not specify a valid class.
|
||
|
||
|
||
This service changes the class to which an object belongs to that specified by BX and CX.
|
||
|
||
|
||
It is up to the user to ensure that the new class that the object will belong to will behave appropriately. BX
|
||
must be the handle on an already loaded category. The class number in CX is as created by the category
|
||
compiler.
|
||
|
||
|
||
LibCopy Copy data from a category
|
||
|
||
|
||
BX The category number.
|
||
|
||
CX Number of bytes to copy.
|
||
|
||
DI Pointer to a buffer to receive the data.
|
||
|
||
SI Offset of the source in the category segment.
|
||
RETURN: None
|
||
PANIC:
|
||
|
||
PanicObj2 Number does not specify a valid external category.
|
||
|
||
|
||
This service will copy data from a category segment into the data segment of the current process. The
|
||
category is specified by the number in BX, which will be converted to a handle with LibHandie. The offset
|
||
in the category is specified by the value in SI.
|
||
|
||
|
||
e LibEnter Enter a control region
|
||
AX The routine to call.
|
||
BX Argument 1.
|
||
CX Argument 2.
|
||
DX Argument 3.
|
||
SI Argument 4.
|
||
DI Argument 5.
|
||
RETURN:
|
||
AX Whatever the routine called or is passed to the LibLeave service.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service will call a routine in a transparent fashion, while marking this call as entering a control
|
||
region. A subsequent call to the LibLeave service will immediately exit from this service. Control regions
|
||
can be nested.
|
||
|
||
|
||
e LibLeave Leave a control region
|
||
AX The value to return.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicEnterl No corresponding call to LibEnter.
|
||
|
||
|
||
This service can be called to exit from a control region.
|
||
|
||
|
||
The value in AX will be returned in AX to the original caller of the LibEnter service which set up the
|
||
control region.
|
||
|
||
|
||
All images must have a call to LibLeave at offset OxOC in the code segment of the image.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
e LibExitSend Return from a method
|
||
|
||
|
||
AX The value to return.
|
||
RETURN: None
|
||
PANIC: None
|
||
This service can be called to exit from a method.
|
||
Normally this routine is not called directly and is used by the C libraries to effect the exit from p_send()
|
||
|
||
|
||
etc. All images must have a call to the LibSendExit service at offset OxOC in the code segment of the
|
||
image.
|
||
|
||
|
||
CHAPTER 7
|
||
|
||
|
||
DEVICE MANAGEMENT
|
||
|
||
|
||
Device names
|
||
|
||
|
||
Device names are zero terminated strings made up in one of the following ways:
|
||
e 3characters followed by a colon
|
||
e 3characters, period and 3 characters followed by a colon
|
||
|
||
|
||
Examples of valid names are as follows:
|
||
|
||
|
||
e §6TTY:
|
||
e = TTY.ASS:
|
||
e = FIL:
|
||
|
||
|
||
|
|
||
Device drivers
|
||
|
||
|
||
There are two kinds of device drivers supported by Epoc/Os.
|
||
e LDD - logical device driver.
|
||
e PDD - physical device driver.
|
||
|
||
|
||
LDDs provide a consistent interface through the I/O services to application programs. Thus there is only
|
||
one RS232 LDD available which will handle all the RS232 devices in the system.
|
||
|
||
|
||
PDDs provide the interface by which LDDs access the hardware. Thus there can be a Psion custom RS232
|
||
PDD and a standard 16450 UART PDD in the system controlling very different hardware devices.
|
||
However because all access to the hardware is through the LDD and then to the PDD both devices will
|
||
behave in exactly the same way as far as application programs are concerned.
|
||
|
||
|
||
LDDs are opened using the Ioopen service, while PDDs are opened using the Devopenppp service. An
|
||
application should never try and access the hardware by opening a PDD directly.
|
||
|
||
|
||
LDDs all have three character names, i.e. TTY, PAR, while PDDs have a seven character name,
|
||
i.e. TTY.ASS, TTY.UAR, where the first part of the name represents the owning LDD.
|
||
|
||
|
||
DevOpenPDD Open a physical device driver
|
||
|
||
|
||
ES:BX Pointer to the PDD name.
|
||
RETURN: = Carry clear
|
||
AX Device handle
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
RETURN: Carry set
|
||
|
||
|
||
NotExistsErr The specified PDD does not exist.
|
||
|
||
Error Error returned by the device driver.
|
||
PANIC:
|
||
|
||
PanicLibl The named device driver was not a PDD.
|
||
|
||
|
||
Open the physical device driver identified by the name pointed to by ES:BX.
|
||
|
||
|
||
The device must already be installed either as a built in device driver or as a dynamic device driver. The
|
||
DevLoadppp service should be used to load a PDD device driver into memory if it is not already loaded.
|
||
The open service returns a device handle which can be used by the pevGetPpDAddress Service to get the
|
||
far address of the PDD strategy entry point.
|
||
|
||
|
||
The functions that can be performed by a PDD are documented on a per device driver basis.
|
||
|
||
|
||
DevGetPDDAddress Get the PDD entry point
|
||
|
||
|
||
BX The PDD device handle.
|
||
RETURN:
|
||
BX: AX The PDD entry point
|
||
PANIC:
|
||
PanicDevl The device handle is not for a PDD or is invalid.
|
||
|
||
|
||
This service returns the address of the PDD's entry point.
|
||
|
||
|
||
The PDD's device handle is passed in BX. The entry point is returned in the BX:AX registers, where BX
|
||
is the segment address and AX is the offset. This allows a far call to be made to the PDD. Opening the
|
||
PDD will return the device handle for the PDD. After a resume, the entry point of the PDD should be
|
||
re-loaded as the code may have moved.
|
||
|
||
|
||
Devinstall Install a device driver
|
||
BX LHDSeg.
|
||
CX LHDPtr.
|
||
Dx LDDSignature - LDD device type.
|
||
|
||
|
||
PDDSignature - PDD device type.
|
||
RETURN: Carry clear
|
||
Success.
|
||
RETURN: = Carry set
|
||
DeviceErr Not a valid device driver.
|
||
PANIC: None
|
||
|
||
|
||
This function is reserved for use by the operating system and should never be used by applications. It is
|
||
called automatically by the pevLoadipp and DevLoaappp services. After an LDD has been loaded its install
|
||
vector will be executed. This is not the case for a PDD.
|
||
|
||
|
||
DevHold Hold all device drivers
|
||
|
||
|
||
CL DevHoldNormal - Device memory is being moved.
|
||
DevHoldPowerDown - The machine is switching off.
|
||
|
||
|
||
DevHoldPowerFail - The machine is switching off after a power fail
|
||
condition has been detected.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This function will call all the LDDs in the system in turn to suspend all interrupt driven devices which are
|
||
currently active. They can subsequently be re-activated by calling the DevResume Service. It is strongly
|
||
recommended that this service is not called and that its use is restricted to the operating system. It is
|
||
called by the pevLoadLpp and DevLoadpPpp services.
|
||
|
||
|
||
7 DEVICE MANAGEMENT
|
||
|
||
|
||
DevResume Resume all device drivers
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This function will call all the LDDs in the system in turn to resume all interrupt driven devices which
|
||
were previously de-activated by DevuHo1d. It is strongly recommended that this service is not called and
|
||
that its use is restricted to the operating system. It is called by the DevLoadLpp and DevLoadPDD services.
|
||
|
||
|
||
DevLoadLDD Load a logical device driver
|
||
|
||
|
||
ES:BX Pointer to the name of a file containing the logical device driver.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
NotExistsErr Logical device driver file does not exist.
|
||
ImageErr Logical device driver file does not have the correct format for a
|
||
LDD.
|
||
PANIC:
|
||
PanicFs1 The process is not connected to the file server.
|
||
|
||
|
||
Load the logical device driver from the file identified by the name pointed to by ES:BX.
|
||
|
||
|
||
If no extension is given for the file name then a file extension of .LDD will be assumed. If a full path
|
||
name is not given then the current directory will be searched for the LDD file. After the LDD is loaded it
|
||
may then be accessed using the I/O services in the normal way.
|
||
|
||
|
||
DevLoadPDD Load a physical device driver
|
||
|
||
|
||
ES:BX Pointer to the name of a file containing the physical device driver.
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
NotExistsErr Physical device driver file does not exist.
|
||
|
||
ImageErr Physical device driver file does not have the correct format for a
|
||
|
||
PDD.
|
||
|
||
PANIC:
|
||
|
||
PanicFs1 The process is not connected to the file server.
|
||
|
||
|
||
Load the physical device driver from the file identified by the name pointed to by ES:BX.
|
||
|
||
|
||
If no extension is given for the file name then a file extension of .PDD will be assumed. If a full path
|
||
name is not given then the current directory will be searched for the PDD file. After the PDD is loaded it
|
||
may then be accessed using the I/O services in the normal way.
|
||
|
||
|
||
DevDelete Delete a device driver
|
||
ES:BX Pointer to the name of the device driver to be deleted.
|
||
Dx LDDSignature - LDD device type.
|
||
|
||
|
||
PDDSignature - PDD device type.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
|
||
RETURN: = Carry set
|
||
NotExistsErr The device driver is not currently loaded.
|
||
Not SupportedErr The device driver is a ROM device driver and cannot be deleted.
|
||
InUseErr The device driver is currently open and cannot be deleted.
|
||
Error number Error returned by the device driver.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
PANIC:
|
||
PanicFs1 The process is not connected to the file server.
|
||
Delete the requested device driver of the name pointed to by ES:BX.
|
||
The name here should be the same name which would be passed to the open services. Only device drivers
|
||
in RAM can be deleted by this service. DX specifies whether an LDD or a PDD is to be deleted. In both
|
||
|
||
|
||
cases the remove vector will be executed before the device is deleted from memory. Calling this service
|
||
will result in the DevHold and DevResume services being called.
|
||
|
||
|
||
DevRemove Remove a device driver
|
||
ES:BX Pointer to the name of the device driver to be removed.
|
||
Dx LDDSignature - LDD device type.
|
||
|
||
|
||
PDDSignature - PDD device type.
|
||
RETURN: = Carry clear
|
||
|
||
|
||
Success.
|
||
|
||
RETURN: = Carry set
|
||
NotExistsErr The device driver is not currently loaded.
|
||
Not SupportedErr The device driver is a ROM device driver and cannot be removed.
|
||
InUseErr The device driver is currently open and cannot be removed.
|
||
Error Error returned by the device driver.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Remove the requested device driver of the name pointed to by ES:BX.
|
||
|
||
|
||
The name here should be the same name which would be passed to the open services. Only device drivers
|
||
in RAM can be removed by this service. DX specifies whether an LDD or a PDD device is to be removed.
|
||
In both cases the remove vector will be executed before the device is deleted from memory. Calling this
|
||
service will result in the DevHold and DevResume services being called.
|
||
|
||
|
||
This service is used by the File Server to call the remove vector of a device driver before deleting it from
|
||
memory. This service is restricted and should not be used by normal programs. Use the pevDelete service
|
||
instead.
|
||
|
||
|
||
DevQueryUnits Query the number of units
|
||
ES:BX Pointer to the name of the device to be queried.
|
||
|
||
RETURN: Carry clear
|
||
AX The number of units supported by the device driver.
|
||
|
||
RETURN: Carry set
|
||
NotExistsErr Device driver not found.
|
||
|
||
|
||
PANIC: None
|
||
Queries the number of units supported by a device driver.
|
||
This service only applies to LDDs. If the device driver is found, the number of units supported is returned
|
||
|
||
|
||
in the AX register. A value of -1 implies an unlimited number of units. This is what is returned by the
|
||
FIL: device driver as it can open a large number of files.
|
||
|
||
|
||
DevFind Find all devices
|
||
BX The find handle.
|
||
Dx LDDSignature - LDD device type.
|
||
|
||
|
||
PDDSignature - PDD device type.
|
||
ES:DI Pointer to a wild card match string.
|
||
|
||
|
||
DS:SI Pointer to the buffer to receive the name of the found device.
|
||
|
||
|
||
7 DEVICE MANAGEMENT
|
||
|
||
|
||
RETURN: = Carry clear
|
||
|
||
|
||
AX The find handle for the next find.
|
||
RETURN: Carry set
|
||
|
||
NotExistsErr No more devices found.
|
||
PANIC:
|
||
|
||
PanicDevl Invalid device find handle.
|
||
|
||
|
||
Finds all the devices installed of the type specified by DX which match the wild card string pointed to by
|
||
ES:DI.
|
||
|
||
|
||
DX is either pppsignature to find PDD devices or Lppsignature to find LDD devices.
|
||
|
||
|
||
The device name written to DS:SI is a zero terminated string and MaxNameESize+2 bytes should be
|
||
allowed for in the buffer. The first time this service is called, BX should be set to zero; the first device will
|
||
be found. After a find, this service returns the find handle in the AX register. This find handle must be
|
||
supplied on subsequent calls to this service to find the next device installed.
|
||
|
||
|
||
No memory is used by this service and it can be abandoned at any time without taking any further action.
|
||
The wild card string must always be supplied in ES:DI, and should be the same between calls to this
|
||
service.
|
||
|
||
|
||
DevVector Call a device vector
|
||
CL The vector number to call.
|
||
CH Moved to AH before the device vector is called.
|
||
DI Device handle.
|
||
BX Argument 1.
|
||
DX Argument 2.
|
||
SI Argument 3.
|
||
RETURN: Carry clear
|
||
AX The result from the device driver.
|
||
RETURN: Carry set
|
||
AL The error from the device driver.
|
||
PANIC:
|
||
PanicLib2 The device did not support the vector in CL.
|
||
|
||
|
||
Given a handle to a device in DI, then the devices vector number in CL will be called. The value in CH is
|
||
transferred to AH and the values in BX,DX,SI are passed to the device driver untouched.
|
||
|
||
|
||
CHAPTER 8
|
||
|
||
|
||
INPUT OUTPUT MANAGEMENT
|
||
|
||
|
||
Devices and files
|
||
|
||
|
||
As far as the I/O services are concerned, devices and files are exactly the same. The documentation just
|
||
refers to devices, but wherever device is read, it may be interchanged for files.
|
||
|
||
|
||
Thus the roopen service is used to open devices such as the RS232 device driver and files such as
|
||
A:LETTERS.DOC.
|
||
|
||
|
||
-WVE Sound file format
|
||
|
||
|
||
Series 3a sound files contain a 32-byte header and a byte stream of digital sound. Such files normally have
|
||
a.wve extension. During playback the byte stream is sampled and played at 8000 bytes per second (12-bit
|
||
sound is converted to 8-bit using A-Law encoding).
|
||
|
||
|
||
In C, the file header is represented by the following struct (defined in epoc.h)
|
||
|
||
|
||
#define SignatureSize 16
|
||
#define ALawSignature "ALawSoundFile**"
|
||
|
||
|
||
typedef struct
|
||
{
|
||
TEXT Signature[SignatureSize];
|
||
UWORD Version;
|
||
ULONG Samples;
|
||
UWORD SilenceInTicks;
|
||
UWORD Repeats;
|
||
UWORD Spare[3];
|
||
} SndFile;
|
||
|
||
|
||
This header is written and read by the Series 3a sound services described below. The meanings of the
|
||
items in the sndFile struct are:
|
||
|
||
|
||
Signature
|
||
The 16-byte (including the zero terminator) string "ALawSoundFile**".
|
||
Version
|
||
|
||
|
||
The Series 3a sound file version number as a 4-digit hexadecimal number of the form XYYZ, where X is
|
||
the major release number, YY is the minor release number and Z is normally the hexadecimal digit F.
|
||
This is the same version format as used by Genversion, for example.
|
||
|
||
|
||
Samples
|
||
|
||
|
||
The number of bytes following the header. This must always be the size of the file less the 32 bytes for the
|
||
header. Dividing this by 8000 gives the duration of the sound in seconds.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
SilencelnTicks
|
||
|
||
|
||
The number of system ticks of silence appended to each repeat on playback (in practice, you get at least 2
|
||
ticks between repeats).
|
||
|
||
|
||
Repeats
|
||
|
||
The number of times to repeat the sound on playback (0 and 1 are the same).
|
||
Spare
|
||
|
||
Reserved for future use.
|
||
|
||
|
||
A system tick is a 1/32th of a second, equivalent to 250 samples.
|
||
|
||
|
||
loAsynchronous Asynchronous I/O
|
||
|
||
AL 1/O function number.
|
||
|
||
BX I/O handle.
|
||
|
||
DS:CX Pointer to argument 1.
|
||
|
||
DS:DX Pointer to argument 2.
|
||
|
||
DS:DI Pointer to status word.
|
||
RETURN: Carry clear
|
||
|
||
AX Result from the device driver.
|
||
RETURN: Carry set
|
||
|
||
Error Depends on the device driver.
|
||
PANIC:
|
||
|
||
PanicIol Invalid I/O channel.
|
||
|
||
PanicLibl Invalid library handle.
|
||
|
||
PanicLib2 Invalid library function number.
|
||
|
||
|
||
Request I/O services from device drivers.
|
||
|
||
|
||
The I/O is asynchronous, i.e. the call will return immediately even if the I/O request has not completed.
|
||
The value in AL can be one of the constants which start with the prefix toFunc. What functions are
|
||
supported by a channel depends on the device driver originally opened.
|
||
|
||
|
||
CX and DX are pointers to two parameters the meaning of which depends on the function being requested
|
||
and the device driver that is open on the channel. DI is a pointer to a word which will contain the I/O
|
||
completion status when the I/O completes. While the request is still being serviced this value will be
|
||
PendingErr.
|
||
|
||
|
||
If this service returns without an error then the device driver will always signal completion with one of the
|
||
IoSignal, IoSignalByPid Of IoSignalByPidNoReSched Services. Thus, when waiting for the I/O request
|
||
to complete, one of the loWaitForSignal OF IoWaitForStatus services should be requested, instead of
|
||
polling the status word.
|
||
|
||
|
||
loAsynchronousNoError Asynchronous I/O - no error reporting
|
||
|
||
|
||
AL I/O function number.
|
||
BX I/O handle.
|
||
|
||
DS:CX Pointer to argument 1.
|
||
DS:DX Pointer to argument 2.
|
||
DS:DI Pointer to status word.
|
||
|
||
|
||
RETURN: None
|
||
PANIC:
|
||
PanicIol
|
||
PanicLibl
|
||
|
||
|
||
PanicLib2
|
||
|
||
|
||
8 INPUT OUTPUT MANAGEMENT
|
||
|
||
|
||
Invalid I/O channel.
|
||
Invalid library handle.
|
||
Invalid library function number.
|
||
|
||
|
||
This is exactly the same service as ToAsynchronous except that errors in starting the I/O request, instead
|
||
of being reported by setting the carry flag, are reported by setting the status word and signalling.
|
||
|
||
|
||
This service is provided as a convenience routine since many applications find it easier to handle starting
|
||
errors as completion errors. In many cases there is no difference in the meaning for a given error and,
|
||
therefore, no difference in action to be performed.
|
||
|
||
|
||
loWithWait
|
||
|
||
|
||
AL
|
||
BX
|
||
DS:CX
|
||
DS:DX
|
||
|
||
RETURN: = Carry clear
|
||
AX
|
||
|
||
RETURN: Carry set
|
||
Error
|
||
|
||
PANIC:
|
||
PaniclIol
|
||
PanicLibl
|
||
|
||
|
||
PanicLib2
|
||
|
||
|
||
Synchronous I/O
|
||
|
||
|
||
1/O function number.
|
||
I/O handle.
|
||
|
||
Pointer to argument 1.
|
||
Pointer to argument 2.
|
||
|
||
|
||
Result from the device driver.
|
||
Depends on the device driver.
|
||
Invalid I/O channel.
|
||
|
||
|
||
Invalid library handle.
|
||
Invalid library function number.
|
||
|
||
|
||
Request I/O services from device drivers synchronously.
|
||
|
||
|
||
This service will return when the I/O request has completed. The value in AL can be one of the constants
|
||
which start with the prefix toFunc.
|
||
|
||
|
||
The functions supported by a channel depends on the device driver originally opened. CX and DX are
|
||
pointers to two parameters whose meaning depends on the function being requested and the device driver
|
||
that is open on the channel.
|
||
|
||
|
||
loRoot Chain to root device
|
||
DS:BX 1/O handle.
|
||
DS:SI Pointer to the request packet.
|
||
RETURN: Carry clear
|
||
AX Result from device driver.
|
||
RETURN: Carry set
|
||
IoInvalidErr 1/O function requested is not valid for this device.
|
||
PANIC:
|
||
Paniclo2 Application requested the device to panic.
|
||
|
||
|
||
If a root device driver does not support a particular I/O function then it should call this service (attached
|
||
device drivers should call the tosuper function).
|
||
|
||
|
||
DS:SI points to a structure of the type Rqznt. This service provides code which will respond to the
|
||
following function requests:
|
||
|
||
|
||
bd oFuncPanic
|
||
e oFuncClose
|
||
e oFuncCancel
|
||
e oFuncAttach
|
||
e oFuncDetach
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
If the function number requested is not one of the above, then this service will return the loInvalidErr.
|
||
This service should only be used by root device drivers.
|
||
|
||
|
||
loSuper Chain to superclass device
|
||
DS:BX 1/O handle.
|
||
DS:SI Pointer to the request packet.
|
||
RETURN: Carry clear
|
||
AX Result from device driver.
|
||
RETURN: Carry set
|
||
IoInvalidErr I/O function requested is not valid for this device.
|
||
Error Number Depends on the device driver.
|
||
PANIC:
|
||
PanicIol 1/O channel invalid.
|
||
|
||
|
||
Requests I/O service from the device driver attached next on the I/O channel.
|
||
|
||
|
||
This service allows an attached device driver to pass on I/O requests that the attached driver does not
|
||
understand to the superclass device driver.
|
||
|
||
|
||
DS:SI points to a structure of the type RqEnt. Note that the parameters are identical to those for the ToRoot
|
||
service as the last device in the chain (root device driver) will eventually pass on any unknown requests to
|
||
the ToRoot service. This service should only be used by attached device drivers.
|
||
|
||
|
||
loWaitForSignal Wait for I/O completion
|
||
|
||
|
||
None
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicIol Channel invalid.
|
||
PanicIo3 Handler invalid.
|
||
|
||
|
||
When an application wants to wait for any of the outstanding asynchronous I/O requests to complete, it
|
||
should call this service.
|
||
|
||
|
||
After this service returns, one of the status words associated with the outstanding I/O requests is
|
||
guaranteed to have changed from PendingErr to either a return result (i.e. 0 or positive) or another error.
|
||
Even though this routine has no parameters it can still panic; after the signal has been received, this
|
||
service will invoke any attached I/O handlers which have the ability to cause the process to be panicked.
|
||
|
||
|
||
If an application wants to poll the status words, it cannot just look at the values in the status words. It
|
||
must first give any handlers a chance to complete the I/O request. As a call to this service can suspend the
|
||
process until one of the I/O requests completes, it is better to call the Ioyield service which is guaranteed
|
||
to return after allowing the handlers to execute.
|
||
|
||
|
||
loWaitForStatus Wait for specific request to complete
|
||
DS:DI Pointer to status word of I/O request.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicIol Channel invalid.
|
||
PanicIo3 Handler invalid.
|
||
|
||
|
||
Waits for a specific I/O request to be completed.
|
||
|
||
|
||
As long as the status word pointed to by DI has the value pendingErr, this service will continue waiting.
|
||
As soon as the value changes then this service will return.
|
||
|
||
|
||
8 INPUT OUTPUT MANAGEMENT
|
||
|
||
|
||
loYield Poll for completion
|
||
None
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicIol Channel invalid.
|
||
PanicIo3 Handler invalid.
|
||
|
||
|
||
Update the status words of any I/O requests which may have completed.
|
||
|
||
|
||
If an application wants to poll the status words, it cannot just look at the values in the status words. It
|
||
must first give any handlers a chance to complete the I/O request. This service provides the mechanism to
|
||
do this without suspending the process.
|
||
|
||
|
||
loSignal Signal completion
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
Signals the completion of an outstanding asynchronous I/O request to the current process.
|
||
All calls to a device driver through the toAsynchronous service, which are started successfully are
|
||
|
||
|
||
balanced by a call to a signal service when they complete. Equally the application that requested the I/O
|
||
must balance this signal with a call to the towaitForSignal service.
|
||
|
||
|
||
loSignalByPid Signal completion by process ID
|
||
|
||
|
||
BX The process ID to be signalled.
|
||
RETURN: Carry clear
|
||
|
||
Success.
|
||
RETURN: = Carry set
|
||
|
||
NoExistsErr The process does not exist.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Signals the completion of an outstanding asynchronous I/O request to the process whose ID is in the BX
|
||
register.
|
||
|
||
|
||
All calls to a device driver through the toAsynchronous service which are started successfully are
|
||
balanced by a call to a signal service when they complete. Equally the application that requested the I/O
|
||
must balance this signal with a call to the towaitForSignal service.
|
||
|
||
|
||
This service should not be used by device drivers in the interrupt part of their code because the interrupt
|
||
service routine could be running under any process and a possible re-schedule that could occur would
|
||
cause a stack build up.
|
||
|
||
|
||
loSignalByPidNoReSched Signal completion, no reschedule
|
||
BX The process ID to be signalled.
|
||
|
||
RETURN: Carry clear
|
||
Success.
|
||
|
||
RETURN: = Carry set
|
||
NoExistsErr The process does not exist.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Signals the completion of an outstanding asynchronous I/O request to the process whose ID is in the BX
|
||
register.
|
||
|
||
|
||
If this service is used instead of toSignalByPid then the next re-schedule will only occur on the next time
|
||
slice expiry. This may unnecessarily delay the signalled process. In order to overcome this, a re-schedule
|
||
can always be forced by calling the TimsleepForTicks service with a value of 0.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
All calls to a device driver through the toAsynchronous service which are started successfully are
|
||
balanced by a call to a signal service when they complete. Equally the application that requested the I/O
|
||
must balance this signal with a call to the towaitForSignal service.
|
||
|
||
|
||
This service should only be used by device drivers in the interrupt part of their code because the interrupt
|
||
service routine could be running under any process and a re-schedule is to be avoided.
|
||
|
||
|
||
loAddHandler Add a handler
|
||
|
||
|
||
AL The vector number of the handler.
|
||
BX Identifying data to be passed to the handler.
|
||
DS, ES Must be pointing at the user process data space
|
||
RETURN: Carry clear
|
||
AX Handler handle.
|
||
RETURN: Carry set
|
||
IoAllocErr Not enough memory to add the handler.
|
||
|
||
|
||
PANIC: None
|
||
Adds a wait handler to the list of I/O handlers for that process.
|
||
|
||
|
||
Whenever the IowaitForSignal service receives a signal, it will call all the active handlers for the
|
||
process. The handler will be passed the channel handle passed in the BX register. When the handler is
|
||
added, it will initially be disabled and in order to activate it, the device driver should call
|
||
IoEnableHandler. Only device drivers should use this service.
|
||
|
||
|
||
loRemoveHandler Remove a handler
|
||
BX The handler handle.
|
||
DS, ES Must be pointing at the user process data space
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicIo3 Invalid handler handle.
|
||
|
||
|
||
Removes a previously added wait handler from the process' list of I/O handlers.
|
||
|
||
|
||
The handle in BX must be a handle returned from the toAddHandler service. Only device drivers should
|
||
use this service.
|
||
|
||
|
||
loEnableHandler Enable/Disable a handler
|
||
BX The handler handle.
|
||
CL 0 - To disable the handler.
|
||
1 - To enable the handler.
|
||
DS,ES Must be pointing at the user process data space
|
||
RETURN: None
|
||
PANIC:
|
||
PanicIo3 Invalid handler handle.
|
||
|
||
|
||
When a particular handler is first added to a list of handlers for a particular process, it is initially disabled.
|
||
Thus, any signals which arrive will not cause the handler to be called. In order to enable the handler, this
|
||
service must be called with CL set to 1. The handler indicates whether it wishes to remain enabled or be
|
||
disabled on exit (see the section on device handlers).
|
||
|
||
|
||
If asynchronous requests are cancelled, the handler may no longer be required to be called. The handler
|
||
can be disabled by setting CL to 0.
|
||
|
||
|
||
Devices should only keep their handlers enabled when they have outstanding requests to deal with; system
|
||
performance would be significantly degraded if all handlers were permanently enabled.
|
||
|
||
|
||
Only device drivers should use this service.
|
||
|
||
|
||
8 INPUT OUTPUT MANAGEMENT
|
||
|
||
|
||
loRequestReset Request a reset
|
||
BX Device handle.
|
||
cx Identifying data.
|
||
|
||
|
||
RETURN: None
|
||
|
||
PANIC: None
|
||
|
||
Request the Supervisor to log a reset request for a device driver.
|
||
|
||
When a channel is opened by a process, it is always possible that the process may be panicked or killed
|
||
|
||
|
||
before it has a chance to close the channel. If this were to happen without the device driver knowing about
|
||
it, the device would remain in use forever and the resource would be lost to the system.
|
||
|
||
|
||
This service provides a mechanism for device drivers to be notified when the process which has opened
|
||
the device has been terminated. It can then cleanup as necessary and mark itself no longer in use.
|
||
|
||
|
||
The value passed in BX should be the device handle. This is passed in register DX by the device manager
|
||
to the open and strategy vectors of a device driver. The value in CX is device dependent information to
|
||
allow multiple unit device drivers to determine which unit should be reset. If the device is just a single
|
||
unit device then it should place 0 in CX.
|
||
|
||
|
||
This service should only be called by device drivers.
|
||
|
||
|
||
loRequestResetCancel Cancel a requested reset
|
||
BX Device handle.
|
||
CX Identifying data.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Request the Supervisor to cancel a reset request for a device driver.
|
||
|
||
|
||
When a device is closed and the device driver has a reset request logged with the Supervisor, the
|
||
outstanding request must be cancelled as it is no longer valid.
|
||
|
||
|
||
The value in CX should always be exactly the same as the value passed to the toRequestReset Service,
|
||
even if the device driver is a single unit device.
|
||
|
||
|
||
This service should only be called by device drivers.
|
||
|
||
|
||
loOpen Open a device
|
||
ES:BX Pointer to the device name.
|
||
Cx Open mode.
|
||
Dx The I/O handle of an already opened device, if an attached driver is
|
||
being opened.
|
||
RETURN: Carry clear
|
||
AX I/O handle.
|
||
RETURN: Carry set
|
||
Error Depends on the device being opened.
|
||
|
||
|
||
PANIC: None
|
||
Open a device driver for I/O.
|
||
|
||
|
||
The name of the device is a zero terminated string. The open mode parameter in CX is device dependent
|
||
and the relevant device driver documentation should be consulted.
|
||
|
||
|
||
The open mode parameters for the filing system device driver are the constants starting with Mode. DX
|
||
need only be set if opening a device driver which is an attached driver, in which case DX must be the
|
||
handle of the already opened I/O channel to which the driver must be attached.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
loClose Close a device
|
||
BX I/O handle.
|
||
|
||
RETURN: Carry clear
|
||
AX Result from device driver.
|
||
|
||
RETURN: Carry set
|
||
Error Depends on the device being opened.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Close an open I/O channel.
|
||
|
||
|
||
A zero value can be passed in BX and the service will just do nothing. This is useful as it allows zero to
|
||
indicate a closed channel, especially in clean up situations.
|
||
|
||
|
||
loRead Read from a device
|
||
BX 1/O handle.
|
||
DS:CX Pointer to buffer to receive the read data.
|
||
Dx Number of bytes to read.
|
||
RETURN: Carry clear
|
||
AX Amount actually read.
|
||
RETURN: Carry set
|
||
Error Depends on the device being read.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Read data from the device.
|
||
|
||
|
||
The data read is written to the buffer pointed to by CX. Up to DX bytes will be read. The actual amount of
|
||
data read is also returned in the DX register. If no error occurs then AX will have the same value as DX.
|
||
If an error does occur then AL will have the error number and DX will contain the number of bytes read
|
||
before the error occurred.
|
||
|
||
|
||
loWrite Write to a device
|
||
BX I/O handle.
|
||
DS:CX Pointer to buffer to be written.
|
||
Dx Number of bytes to write.
|
||
RETURN: Carry clear
|
||
AX Result from device driver.
|
||
RETURN: Carry set
|
||
Error Depends on the device being written.
|
||
|
||
|
||
PANIC: None
|
||
Write data to the device.
|
||
|
||
|
||
DX bytes of data is written from the buffer pointed to by CX.
|
||
|
||
|
||
loSeek Seek on a device
|
||
BX I/O handle.
|
||
CX SeekFromStart
|
||
|
||
|
||
SeekFromEnd
|
||
SeekFromCurrent
|
||
SeekRecordSense
|
||
|
||
|
||
SeekRecordSet
|
||
|
||
|
||
SeekRewind
|
||
|
||
|
||
Dx Pointer to a double word containing the new position.
|
||
|
||
|
||
8 INPUT OUTPUT MANAGEMENT
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
AX Result from device driver.
|
||
RETURN: Carry set
|
||
Error Depends on the device being "seeked".
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Perform a seek on a device.
|
||
|
||
|
||
The type of seek to perform is as specified in the CX register and the new position is pointed to by the DX
|
||
register. In most cases the seek position is a double word.
|
||
|
||
|
||
loKeyAndMouseWithWait Mouse and keyboard
|
||
|
||
|
||
DS:BX Pointer to a KeyEnt structure.
|
||
RETURN: None
|
||
PANIC:
|
||
PaniclIo4 Another process is already waiting for an event.
|
||
|
||
|
||
Get the next keyboard or mouse event into the keyEnt structure pointed to by BX.
|
||
|
||
|
||
The system maintains a queue of up to 16 keyboard and mouse events in a buffer. If the buffer is not
|
||
empty when this service is requested then it will return immediately with the event data copied to the
|
||
structure at BX. If there is no event then the requesting task will be suspended until an event occurs.
|
||
|
||
|
||
Four events are possible and more than one can be returned per call. The events are as follows:
|
||
e Mouse valid. The mouse has been activated. (i.e. touched).
|
||
¢ Mouse moved. The mouse has moved.
|
||
e Mouse button state. The mouse button has changed state.
|
||
e Key valid. A key has been pressed.
|
||
|
||
|
||
Which event has occurred can be determined by consulting the keystate field in the returned structure.
|
||
This service can only be requested by a task and not a process. There is usually only one task in the
|
||
system, usually of the window server, which calls this service and then distributes the events to all other
|
||
processes.
|
||
|
||
|
||
loAddApplicationHandler Add an application handler
|
||
|
||
|
||
BX Identifying data to be passed to the handler.
|
||
|
||
cx Address of the application handler.
|
||
|
||
Dx Address of the application handler dispatcher.
|
||
|
||
DS, ES Must be pointing at the user process data space
|
||
RETURN: Carry clear
|
||
|
||
AX Handler handle.
|
||
RETURN: Carry set
|
||
|
||
IoAllocErr Not enough memory to add the handler.
|
||
|
||
|
||
PANIC: None.
|
||
Adds an application wait handler to the list of I/O handlers for that process.
|
||
|
||
|
||
Whenever the IowaitForSignal service receives a signal, it will call all the active handlers for the
|
||
process.
|
||
|
||
|
||
The channel handle in register BX will be passed to the application handler dispatcher in register AX
|
||
while the handler's address will be passed in register BX.
|
||
|
||
|
||
The dispatcher should execute a CALL BX to run the handler and then execute a RET FAR.
|
||
|
||
|
||
When the handler is added, it will initially be disabled; in order to activate it,
|
||
ToEnableApplicationHandler should be called.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
loRemoveApplicationHandler Remove an application handler
|
||
BX The handler handle.
|
||
DS, ES Must be pointing at the user process data space
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicIo3 Invalid handler handle.
|
||
|
||
|
||
Removes a previously added handler from the process' list of I/O handlers. The handle in BX must be a
|
||
handle returned from the toaddApplicationHandler Service.
|
||
|
||
|
||
loEnableApplicationHandler Enable/Disable application handler
|
||
|
||
|
||
BX The handler handle.
|
||
CL 0 - Disable the handler.
|
||
1 - Enable the handler.
|
||
DS,ES Must be pointing to the user process data space
|
||
RETURN: None
|
||
PANIC:
|
||
PanicIo3 Invalid handler handle.
|
||
|
||
|
||
When a particular handler is first added to the list of handlers for the process, it is initially disabled. Thus
|
||
any signals which arrive will not cause the handler to be called. In order to enable the handler, this service
|
||
must be called with CL set to 1.
|
||
|
||
|
||
The handler indicates whether it wishes to remain enabled or be disabled on exit (see the section on device
|
||
handlers). If asynchronous requests are cancelled, the handler may no longer be required to be called; the
|
||
handler can be disabled by setting CL to 0.
|
||
|
||
|
||
Handlers should only be enabled when they have outstanding requests to deal with as system performance
|
||
would be significantly degraded if all handlers were permanently enabled.
|
||
|
||
|
||
loShiftStates Get the shift states
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AX The current shift states.
|
||
PANIC: None
|
||
|
||
|
||
This service will return the current shift states.
|
||
|
||
|
||
It is valuable to enquire on the status of the CAPS lock and the NUM lock states when the system first
|
||
powers up.
|
||
|
||
|
||
loWaitForSignalNoHandler Wait for |/O completion no handlers
|
||
|
||
|
||
None
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicIol Channel invalid.
|
||
PanicIo3 Handler invalid.
|
||
|
||
|
||
This service is identical to towaitForSignal except that no handlers are allowed to run. This is valuable
|
||
for tasks which are waiting for a signal as the normal service would run the handlers belonging to the
|
||
parent process of the task, a bad mistake!
|
||
|
||
|
||
Recall that a task is a subsidiary process that shares the same data segment as the parent process; because
|
||
a task can never have a handler, there is never any problem in calling this service.
|
||
|
||
|
||
8 INPUT OUTPUT MANAGEMENT
|
||
|
||
|
||
loSignalKillAsynchronous Request signal from Supervisor
|
||
BX The process ID, which will trigger the signal, when it terminates.
|
||
DI The status word to be cleared on completion.
|
||
|
||
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: = Carry set
|
||
NotExistsErr The requested process does not exist.
|
||
PANIC: None
|
||
Notifies the supervisor to send a signal to the process calling this service when the process specified in BX
|
||
|
||
|
||
exits or is panicked.
|
||
|
||
|
||
This service is very similar to MessSignal in that it is a mechanism which allows processes to perform
|
||
valuable housekeeping when another process terminates.
|
||
|
||
|
||
When the process specified in BX terminates, a signal will be sent from the supervisor and the status word
|
||
will contain the reason code for termination.
|
||
|
||
|
||
Having registered an interest in a process with the supervisor, this interest may be cancelled by calling the
|
||
IoSignalKillCancel service. This stops the supervisor from sending a signal on termination of that
|
||
process.
|
||
|
||
|
||
loSignalKillCancel Cancel requested signal from Supervisor
|
||
|
||
|
||
BX The process ID which will trigger the signal, when it terminates.
|
||
RETURN: Carry clear
|
||
Success.
|
||
RETURN: = Carry set
|
||
NotExistsErr The process has no signal request logged with the supervisor.
|
||
PANIC: None
|
||
|
||
|
||
Cancels a previously requested signal from the supervisor. The status word will be updated to cancelzrr
|
||
and a signal will be sent from the supervisor.
|
||
|
||
|
||
loNextHalfSecond Request signal on next half second
|
||
|
||
|
||
None.
|
||
RETURN:
|
||
None.
|
||
PANIC:
|
||
None.
|
||
Requests a signal to be sent when the next exact half second expires.
|
||
|
||
|
||
Unlike other asynchronous requests there is no status word associated with this call as it is held internally
|
||
by the operating system.
|
||
|
||
|
||
Completion can be polled for in the normal way by calling 1oNextHalfSecondstatus which will return
|
||
either PendingErr, FailErr Or a positive non zero integer. PendingErr will be returned if the request has
|
||
not yet completed. railzrr is returned if the system time has changed or the machine has been switched
|
||
off. A positive non-zero integer represents the number of half seconds since the last request was
|
||
completed.
|
||
|
||
|
||
This service is NOT to be used by any applications; it is reserved for use by the window server to keep
|
||
itself synchronised with the system clock with the minimum system overhead.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
e loNextHalfSecondStatus Query completion of loNextHalfSecond
|
||
|
||
|
||
None.
|
||
RETURN:
|
||
AX The completion status.
|
||
PANIC:
|
||
None.
|
||
|
||
|
||
This function will return either PendingErr, FailErr Or a positive non-zero integer. PendingErr will be
|
||
returned if the request has not yet completed. raiizrr is returned if the system time has changed or the
|
||
machine has been switched off. A positive non-zero integer represents the number of half seconds since
|
||
the last request was completed.
|
||
|
||
|
||
This service is NOT to be used by any applications; it is reserved for use by the window server to keep
|
||
itself synchronised with the system clock with the minimum system overhead.
|
||
|
||
|
||
©loPlaySoundW Play back sound file synchronously
|
||
|
||
|
||
BX Pointer to the sound file name.
|
||
cx The duration in ticks or zero if supplied in the file.
|
||
Dx The sound volume to be used.
|
||
RETURN:
|
||
FailErr Sound is disabled.
|
||
Other errors File system errors in general.
|
||
|
||
|
||
PANIC: None
|
||
Play back a sound file synchronously.
|
||
|
||
|
||
The string at BX should be either the file specification of the sound file which is simply parsed with a
|
||
.wve extension or it should begin with a * character followed by just the name component of the sound
|
||
file.
|
||
|
||
|
||
If the string starts with a * character, the extension .wve is assumed and the service automatically hunts
|
||
ROM:: and the \wve directories of M:, A: and B: (in that order). Note that the Series 3a ROM:: sound files
|
||
have names sys$al01.wve, sys$al02.wve, etc.
|
||
|
||
|
||
CX specifies the duration in system ticks that the sound file will play. If the absolute value is shorter than
|
||
the natural duration of the sound file then playback will be truncated; if greater than the natural duration
|
||
then playback will be padded with trailing silence.
|
||
|
||
|
||
Note that the natural duration includes any trailing silence and the number of repeats that are specified in
|
||
the file header.
|
||
|
||
|
||
DX specifies the playback volume between 0 and 5 inclusive, with 0 the loudest. On the Series 3a there
|
||
are only 4 actual volume levels: (0,1), 2, 3, (4,5).
|
||
|
||
|
||
The format of the sound file header is described at the beginning of this chapter.
|
||
|
||
|
||
This service fails with railzrr if sound is disabled.
|
||
|
||
|
||
©loPlaySoundA Play back sound file asynchronously
|
||
BX Pointer to the sound file name.
|
||
cx The duration in ticks or zero if supplied in the file.
|
||
DX The sound volume to be used.
|
||
DI Pointer to the status word.
|
||
RETURN:
|
||
None.
|
||
|
||
|
||
PANIC: None
|
||
Play back a sound file asynchronously.
|
||
|
||
|
||
8 INPUT OUTPUT MANAGEMENT
|
||
|
||
|
||
The string at BX should be either the file specification of the sound file which is simply parsed with a
|
||
.wve extension or it should begin with a * character followed by just the name component of the sound
|
||
file. If the string starts with a * character, the extension .wve is assumed and the service automatically
|
||
hunts ROM:: and the \wve directories of M:, A: and B: (in that order). Note that the Series 3a ROM::
|
||
sound files have names sys$al01.wve, sys$al02.wve, etc.
|
||
|
||
|
||
CX specifies the duration in system ticks that the sound file will play. If the absolute value is shorter than
|
||
the natural duration of the sound file then playback will be truncated; if greater than the natural duration
|
||
then playback will be padded with trailing silence.
|
||
|
||
|
||
Note that the natural duration includes any trailing silence and the number of repeats that are specified in
|
||
the file header.
|
||
|
||
|
||
DX specifies the playback volume between 0 and 5 inclusive, with 0 the loudest. On the Series 3a there
|
||
are only 4 actual volume levels: (0,1), 2, 3, (4,5).
|
||
|
||
|
||
During playback the status word at DI contains pendingErr. On completion of playback, the status word
|
||
contains the completion status which will be zero if playback completed successfully or cancelzrr if
|
||
cancelled using IoPlaySoundCancel or a negative error number.
|
||
|
||
|
||
The format of the sound file header is described at the beginning of this chapter.
|
||
|
||
|
||
This service fails with error FailErr if sound is disabled.
|
||
|
||
|
||
©loPlaySoundCancel Cancel play back of sound file
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
None.
|
||
PANIC: None
|
||
|
||
|
||
Cancel playing back a sound that was initiated using 1oPlaySounda.
|
||
|
||
|
||
After a call to toplaySoundCancel, the completion status of toplaySounda will be cancelErr.
|
||
|
||
|
||
©loRecordSoundW Record sound to a file synchronously
|
||
BX Pointer to the sound file name.
|
||
CX Sound file length in 2048-byte units.
|
||
RETURN:
|
||
FailErr Sound is disabled.
|
||
VolumeErr Cannot record to a Flash SSD.
|
||
Other errors File system errors in general.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Record a sound to file synchronously.
|
||
|
||
|
||
The file may not be on a Flash SSD. The register BX points to a string containing the name of the sound
|
||
file. By default, the extension is .wve. Sound will be recorded to this file which will be replaced if it
|
||
already exists.
|
||
|
||
|
||
CX specifies the number of bytes to be recorded in 2048-byte units, excluding the 32 byte header. A value
|
||
of 4 (8K) in CX corresponds to approximately one second. Before recording starts, a file of length
|
||
32+cx*2048 bytes is created so this amount of space must exist on the disk.
|
||
|
||
|
||
The format of the sound file header is described at the beginning of this chapter.
|
||
|
||
|
||
This service fails with railerr if sound is disabled.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
©loRecordSoundA Record sound to a file asynchronously
|
||
BX Pointer to the sound file name.
|
||
cx Sound file length in 2048-byte units.
|
||
DI Pointer to the status word.
|
||
|
||
|
||
RETURN: None.
|
||
|
||
PANIC: None
|
||
|
||
Record a sound to file asynchronously.
|
||
|
||
The file may not be on a Flash SSD. The register BX points to a string containing the name of the sound
|
||
|
||
|
||
file. By default, the extension is .wve. Sound will be recorded to this file which will be replaced if it
|
||
already exists.
|
||
|
||
|
||
CX specifies the maximum number of bytes to be recorded in 2048-byte units, excluding the 32 byte
|
||
header. A value of 4 (8K) in CX corresponds to approximately one second. Before recording starts, a file
|
||
of length 32+cx*2048 bytes is created so this amount of space must exist on the disk.
|
||
|
||
|
||
During recording the status word at DI contains pendingErr. On completion, the status word contains the
|
||
completion status which will be zero if recording completed successfully, or cancelErr if cancelled using
|
||
IoRecordSoundCancel, or a negative error number.
|
||
|
||
|
||
The format of the sound file header is described at the beginning of this chapter.
|
||
|
||
|
||
This service fails with railzrr if sound is disabled and volumeErr on attempting to record to a Flash
|
||
SSD.
|
||
|
||
|
||
©loRecordSoundCancel Cancel recording sound to a file
|
||
|
||
|
||
None
|
||
RETURN: None.
|
||
PANIC: None
|
||
Cancel recording sound to a file that was initiated using ToRecordSounaa. The sound file is truncated to
|
||
the actual length that was recorded before cancellation.
|
||
|
||
|
||
After a call to toRecordSoundCancel, the completion status of toRecordSounda Will be cancelErr.
|
||
|
||
|
||
8 INPUT OUTPUT MANAGEMENT
|
||
|
||
|
||
Input Output Management update
|
||
|
||
|
||
The majority of the additional EPOC I/O management system services described in this section were
|
||
introduced for the Series 3c and Siena.
|
||
|
||
|
||
With the exception of the HC, all the services are, in principle, available on any machine that contains
|
||
EPOC version 3.90F or later. On an HC with a suitable version of EPOC, all the functions described in
|
||
this section should generate an =_GEN_NsuP error.
|
||
|
||
|
||
Some services require the presence of hardware that is not built into all machines in the SIBO range. If
|
||
the relevant hardware is not present on a particular machine, calling the service will either have no effect
|
||
or return an error of E_GEN_Nsup. The descriptions of such services contain a list of the machines on
|
||
which they are intended to be used.
|
||
|
||
|
||
loPlaySoundAO Asynchronous partial sound file replay
|
||
BX Pointer to full file specification
|
||
cx Required duration, in ticks
|
||
Dx Playback volume
|
||
DI Pointer to a status word
|
||
SI Offset, in ticks
|
||
RETURN:
|
||
DI Pointer to status word
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service is only available on Series 3c machines.
|
||
Play back a selected section of a sound file asynchronously.
|
||
|
||
|
||
The string at BX should be either the file specification of a sound file, which is simply parsed with a .wve
|
||
file extension, or it should begin with a * character, followed by just the name component of the sound
|
||
file.
|
||
|
||
|
||
If the string starts with a * character, the extension .wve is assumed and the service automatically hunts
|
||
ROM:: and the \wve directories of M:, A: and B: (in that order). Note that the Series 3a and Series 3c
|
||
ROM sound files have names sys$al01.wve, sys$al02.wve, etc.
|
||
|
||
|
||
DX specifies the playback volume, which should be in the range 0 to 5 inclusive, with 0 being the loudest.
|
||
There are only four actual sound levels: (0,1) 2, 3, (4,5).
|
||
|
||
|
||
SI specifies the offset, in ticks, from the start of the sound to the point at which replay will start.
|
||
|
||
|
||
CX specifies the duration in system ticks for which the sound will play. If this duration is less than the
|
||
remaining natural duration of the sound from the specified starting point, playback will be truncated to the
|
||
specified duration. If the specified duration exceeds the remaining natural duration of the sound then
|
||
playback will be padded with trailing silence.
|
||
|
||
|
||
Note that the natural duration includes any trailing silence and the number of repeats that are specified in
|
||
the file header
|
||
|
||
|
||
During playback the status word at DI contains pendingErr. On completion of playback, the status word
|
||
contains the completion status, which will be zero if playback completed successfully, cancelErr if
|
||
playback was cancelled by the use of toPlaySoundcancel, or a negative error number.
|
||
|
||
|
||
This service fails with railerr if sound is disabled.
|
||
|
||
|
||
CHAPTER 9
|
||
|
||
|
||
FILE MANAGEMENT
|
||
|
||
|
||
The file server
|
||
|
||
|
||
The file server is a separate process which runs whenever an application process needs to access any of the
|
||
filing systems.
|
||
|
||
|
||
The server program provides a mechanism to serialise access to the resources of the filing systems in the
|
||
same way as the window server serialises access to the screen, keyboard and mouse.
|
||
|
||
|
||
By default a process does not have any access to the filing system. If the process requires access, then it
|
||
must tell the file server program of its presence by using the Filconnect service. Once established, the
|
||
connection cannot be broken throughout the life of the process.
|
||
|
||
|
||
Many of the services such as DevopenPpp make requests to the file server and, as such, require that the
|
||
process has first made connection with the server. If the connection has not been made then the process
|
||
will be panicked.
|
||
|
||
|
||
FilConnect Connect to the file server
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
RETURN: None
|
||
PANIC:
|
||
|
||
PanicFilel Already connected to file server.
|
||
|
||
|
||
Connects the process to the file server.
|
||
|
||
|
||
Any process requiring access to the filing system must connect to the server by using this service before
|
||
calling any of the other services in the File manager or in the I/O manager.
|
||
|
||
|
||
It is only necessary to connect to the server once; the connection can be established at any time.
|
||
|
||
|
||
FilExecute Execute an image file
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
DS:DX If AL is non-zero then DX points to the status word.
|
||
|
||
ES:BX Pointer to the path name of the image file to be executed.
|
||
DS:CX Pointer to the command line argument.
|
||
|
||
DS:DI Pointer to a word to receive the handle of the executed process.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
|
||
RETURN: = Carry set
|
||
NameErr Invalid file name.
|
||
DeviceErr Invalid device specification.
|
||
ImageErr Invalid image file format.
|
||
NotExistErr Image file does not exist.
|
||
NoProcessErr No process slots available.
|
||
Others Various other I/O errors.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Creates a process in memory from the contents of the image file specified by the BX register.
|
||
|
||
|
||
The process created will have the same name as the name of the image file. Before the new process will
|
||
run, it must be resumed using the procResume service, passing it the handle as returned in the word
|
||
pointed to by the register DI. If a process of the same name as that of the file name is already running in
|
||
memory then the new process will share the code segment of the running process and only the data
|
||
segment of the new process will be loaded from the image file.
|
||
|
||
|
||
If CX is zero then no command line will be passed to the executed process. If CX is non-zero then it
|
||
should point to a byte counted command buffer. The address will be passed to the executed routine.
|
||
|
||
The buffer is byte counted so that binary data can be passed in the command line. The maximum length
|
||
of the command line is MaxcommandBuf fer bytes. The executed process will be given a command line
|
||
allocated in its heap which consists of the full path used to find the image file followed by the data
|
||
pointed to by CX.
|
||
|
||
|
||
FilParse Parse a file name
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Input file name string.
|
||
cx Related file specification string.
|
||
DI Pointer to a buffer to receive the parsed file name.
|
||
SI Pointer to a FullParseEnt buffer to receive the parse information
|
||
block.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: = Carry set
|
||
NameErr Invalid file name.
|
||
DeviceErr Invalid device specification.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
The parse service provides an equivalent service to that in PLIB.
|
||
|
||
|
||
This service requires that the process be connected to the file server. The current directory and device will
|
||
provide the defaults if a complete related file specification is not provided.
|
||
|
||
|
||
FilPathGet Get current path
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-Zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to buffer to receive the path.
|
||
|
||
RETURN: Carry clear
|
||
Success
|
||
|
||
|
||
9 FILE MANAGEMENT
|
||
|
||
|
||
RETURN: = Carry set
|
||
AL The error number.
|
||
PANIC: None
|
||
|
||
|
||
This service gets the current path of the process. This path is the default for all file services if no path is
|
||
specified.
|
||
|
||
|
||
FilPathSet Set current path
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
Non-zero - Asynchronous request.
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to the new path name.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
AL The error number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service sets the current path of the process. The path must be valid at the time of setting.
|
||
|
||
|
||
FilPathTest Test path available
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
Non-zero - Asynchronous request.
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to the path name to be tested.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: Carry set
|
||
AL The error number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service tests that the path referenced in register BX is available; in other words it checks that it
|
||
exists.
|
||
|
||
|
||
FilDelete Delete a file or directory
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
|
||
BX Pointer to the name of the file or directory to be deleted.
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
NameErr Invalid file name.
|
||
|
||
ExistsErr Directory is not empty.
|
||
|
||
LockedErr File or directory protected from delete.
|
||
|
||
NotExistsErr File or directory does not exist.
|
||
|
||
DirErr Invalid path specification.
|
||
|
||
|
||
PANIC: None
|
||
Delete the file whose name is pointed to by BX.
|
||
|
||
|
||
The name can specify a file or a directory. If a directory is specified then it must be empty before it can be
|
||
deleted.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
FilRename Rename a file or directory
|
||
AL Zero - Synchronous request.
|
||
Non-zero - Asynchronous request.
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to the old name of the file or directory to be renamed.
|
||
cx Pointer to the new name of the file or directory to be renamed.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: Carry set
|
||
NameErr Invalid file name.
|
||
ExistsErr New file or directory already exists.
|
||
NotExistsErr Old file or directory does not exist.
|
||
DirErr Invalid path specification.
|
||
DeviceErr Attempt to rename across devices.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Rename the file whose name is pointed to by BX to the name pointed to by CX. The name can specify a
|
||
file or a directory.
|
||
|
||
|
||
FilStatusGet Get file or directory status
|
||
AL Zero - Synchronous request.
|
||
Non-zero - Asynchronous request.
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to the name of the file or directory.
|
||
cx Pointer to a FileStatusEnt structure.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: Carry set
|
||
NameErr Invalid file name.
|
||
NotExistsErr File or directory does not exist.
|
||
DirErr Invalid path specification.
|
||
|
||
|
||
PANIC: None
|
||
Get the status of the file whose name is pointed to by BX. The name can specify a file or a directory.
|
||
|
||
|
||
The status information is written to a FileStatusEnt structure pointed to by CX. This structure is defined
|
||
as:
|
||
|
||
|
||
FileStatusEnt struc
|
||
|
||
|
||
FileVersionNo dw 2
|
||
FileAtt dw e
|
||
FileSize dd ?
|
||
FileModDate dd 2.
|
||
FileSpare db 4 dup (?)
|
||
|
||
|
||
FileStatusEnt ends
|
||
|
||
|
||
and is equivalent to the PLIB p_rnro struct.
|
||
|
||
|
||
FilStatusSet Set file or directory status
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to the name of the file or directory.
|
||
|
||
CX Mask of status bits to set.
|
||
|
||
DI Value of status bits.
|
||
|
||
|
||
9 FILE MANAGEMENT
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
|
||
RETURN: = Carry set
|
||
NameErr Invalid file name.
|
||
NotExistsErr File or directory does not exist.
|
||
DirErr Invalid path specification.
|
||
|
||
|
||
PANIC: None
|
||
Sets the status of the file whose name is pointed to by BX according to the bits set in CX and DI.
|
||
|
||
|
||
If a bit is set in the CX register the appropriate bit in DI will be used. The name can specify a file or a
|
||
directory. The bits correspond to the rileatt flags.
|
||
|
||
|
||
FilStatusDevice Get device status
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to the name of the device.
|
||
CX Pointer to a DeviceStatusEnt Structure.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
DeviceErr Invalid device name.
|
||
PANIC: None
|
||
|
||
|
||
Get the status of the device whose name is pointed to by BX and write this information into the
|
||
DeviceStatusEnt structure pointed to by CX. This structure is defined as:
|
||
|
||
|
||
DeviceStatusEnt struc
|
||
|
||
DeviceVersionNo dw ?
|
||
|
||
DeviceMediaType dw ?
|
||
|
||
DeviceIsRemovable dw ?
|
||
|
||
DeviceStatusSize dd ?
|
||
|
||
DeviceStatusFree dd ?
|
||
|
||
DeviceStatusName db MaxVolumeName dup _ (?)
|
||
DeviceBatteryState dw ?
|
||
|
||
DeviceSpare db 16 dup (?)
|
||
DeviceStatusEnt ends
|
||
|
||
|
||
where MaxVolumeName has the value 32. This structure is equivalent to the PLIB p_p1nro struct.
|
||
|
||
|
||
FilStatusSystem Get file system status
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to the name of the file system.
|
||
CX Pointer to a NodeStatusEnt structure.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
AL Error value.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Write the status of the file system whose name is pointed to by BX into the nodestatusEnt structure
|
||
pointed to by CX. This structure is defined as:
|
||
|
||
|
||
NodeStatusEnt struc
|
||
|
||
NodeVersionNo dw ?
|
||
NodeType dw ?
|
||
NodeSupportsFormat dw ?
|
||
NodeStatusSpare db 26 dup (?)
|
||
NodeStatusEnt ends
|
||
|
||
|
||
and is equivalent to the PLIB p_ninro struct.
|
||
|
||
|
||
FilMakeDirectory Make a new directory
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
Non-zero - Asynchronous request.
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to new directory name.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
|
||
RETURN: Carry set
|
||
ExistsErr Directory already exists.
|
||
DeviceErr Invalid device name.
|
||
NameErr Invalid path name.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Makes a new directory using the name pointed to by BX.
|
||
|
||
|
||
If the path to the directory does not exist then the full path will be made.
|
||
|
||
|
||
FilOpenUnique Open a unique file name
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
ES:BX Pointer to related file specification.
|
||
Cx Open mode.
|
||
RETURN: Carry clear
|
||
AX 1/O handle.
|
||
RETURN: Carry set
|
||
FailErr Failed to get a unique file name.
|
||
Errors Dependent on the filing system.
|
||
|
||
|
||
PANIC: None
|
||
|
||
Open a unique file name.
|
||
|
||
The related file name pointed to by BX is used only for its path in order to generate the unique file name.
|
||
If a unique file name is successfully opened then the name of the file is written back to the buffer pointed
|
||
|
||
|
||
to by BX. The open mode parameter in CX should only specify the format and access fields as the file
|
||
will always be opened with ModeCcreate and ModeUpdate.
|
||
|
||
|
||
FilSystemAttach Attach a file system
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
Non-zero - Asynchronous request.
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
|
||
|
||
BX Pointer to a file system PDD.
|
||
|
||
|
||
9 FILE MANAGEMENT
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
AL Error value.
|
||
|
||
|
||
PANIC: None
|
||
Attaches a file system PDD to the file server.
|
||
|
||
|
||
FilSystemDetach Detach a file system
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
Non-zero - Asynchronous request.
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to a file system name.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: Carry set
|
||
AL Error value.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Detaches a file system from the file server. The built in file systems cannot be detached.
|
||
|
||
|
||
FilPathGetByld Get current path by ID
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Process ID whose path is required.
|
||
cx Pointer to buffer to receive the path.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
AL The error number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service gets the current path of the process whose ID is specified in BX. The path is copied into the
|
||
buffer pointed to by CX.
|
||
|
||
|
||
FilChangeDirectory Change directory
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
|
||
BX Pointer to file or directory name string.
|
||
|
||
CX Pointer to buffer to receive the new file/dir name string.
|
||
|
||
DI Mode of changing directory.
|
||
|
||
SI Pointer to sub directory name if DI is FileChangeDirSubdir.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
AL The error number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
This service allows a path name to be manipulated. No assumptions about file names are made. The root,
|
||
parent or sub directory may be requested.
|
||
|
||
|
||
FilSetinitialPath Set initial path
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
Non-zero - Asynchronous request.
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to the new initial path name.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
AL The error number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service sets the initial path given to a process when it connects to the file server. This service has no
|
||
effect on processes already connected.
|
||
|
||
|
||
FilSetFileDate Set file date
|
||
|
||
|
||
AL Zero - Synchronous request.
|
||
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
|
||
Dx If AL is non-zero then DX points to the status word.
|
||
BX Pointer to the file path name.
|
||
DI:CX New file date in seconds.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: Carry set
|
||
AL The error number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Sets the time and date for a file. CX is the least significant word and DI is the most significant word of the
|
||
date and time in seconds.
|
||
|
||
|
||
FilLocChanged Local file system changed
|
||
BX The bit mask for the changed channels
|
||
|
||
RETURN:
|
||
AX The bit mask for any changed channels
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service reports on whether the local file system has changed since the last time it was called.
|
||
|
||
|
||
Because independent software routines may require this service, up to 15 channels are provided. Each
|
||
channel is a single bit in the register BX passed to this service and the corresponding bit in the result in
|
||
register AX. The bits available are 0-14, the top bit being unavailable to ensure that a negative error can
|
||
still be returned.
|
||
|
||
|
||
Bits 8-14 are reserved for system components and should not be used by any application. An application is
|
||
free to choose any other bit in the range 0-7. Normally bit 0 would be used.
|
||
|
||
|
||
BX is loaded with | and the function called. If 0 is returned then the file system has not changed. If 1 is
|
||
returned then it has changed. Note that the very first time this service is called, it is guaranteed to return
|
||
changed. If BX is loaded with 2 and the file system has changed then AX will return 2.
|
||
|
||
|
||
Change as far as the file system is concerned is anything which would cause directory information on the
|
||
file system to change but not alterations to an actual file. This service allows programs displaying file lists
|
||
to update them automatically if any changes occur (such as changing the SSD or deleting a file).
|
||
|
||
|
||
©FilLocDevice
|
||
|
||
|
||
AL
|
||
|
||
|
||
DX
|
||
BL
|
||
Cx
|
||
RETURN: Carry clear
|
||
Success.
|
||
RETURN: = Carry set
|
||
NotReadyErr
|
||
DeviceErr
|
||
|
||
|
||
NotSupportedErr
|
||
|
||
|
||
UnknownErr
|
||
|
||
|
||
PANIC: None.
|
||
|
||
|
||
9 FILE MANAGEMENT
|
||
|
||
|
||
Read media information of a local device
|
||
|
||
|
||
Zero - synchronous request.
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
If AL is non-zero then DX points to the status word.
|
||
The local device.
|
||
|
||
|
||
Pointer to a word to take the media type.
|
||
|
||
|
||
The device is not available.
|
||
The device BL is invalid.
|
||
|
||
|
||
No PDD exists which can
|
||
handle the device.
|
||
|
||
|
||
Read media information of a local device (that is, a device on LOC::) specified by BL. The value of BL
|
||
must be one of the ASCII characters 'M' or 'T' or lie in the range 'A' to 'H' inclusive where 'T' (Internal) is
|
||
|
||
|
||
an alias for 'M'.
|
||
|
||
|
||
Apart from two additional flags, the value written to the word at CX is the same as the value written to the
|
||
DeviceMediaType field of the pevicestatusEnt structure using the FilstatusDevice system service.
|
||
These two extra flags are Batteryvalid and BatteryGood defined in osloc.inc. If Batteryvalid 1s not set
|
||
then the device does not support battery measurement. If Batteryvalid is set, then BatteryGood will be
|
||
set if the voltage is good or clear if it is too low.
|
||
|
||
|
||
Note that the media does not have to be mountable for this service to work.
|
||
|
||
|
||
©FilLocReadPdd
|
||
|
||
|
||
AL
|
||
|
||
|
||
DX
|
||
|
||
|
||
RETURN: Carry clear
|
||
Success.
|
||
RETURN: = Carry set
|
||
|
||
|
||
OsErr
|
||
|
||
|
||
CorruptMediaErr
|
||
|
||
|
||
PANIC: None.
|
||
|
||
|
||
Read a local device directly
|
||
|
||
|
||
Zero - synchronous request.
|
||
|
||
Non-zero - Asynchronous request.
|
||
|
||
If AL is non-zero then DX points to the status word.
|
||
The local device.
|
||
|
||
Pointer to a double word SSD position.
|
||
|
||
Number of bytes to read.
|
||
|
||
Pointer to buffer to take the data read.
|
||
|
||
|
||
The medium is not mounted.
|
||
|
||
|
||
The specified position is greater than the size of the SSD.
|
||
|
||
|
||
Read data directly from a given offset on a local device (that is a device on LOC: :) into the buffer
|
||
|
||
|
||
provided.
|
||
|
||
|
||
BL specifies the device and must be one of the ASCII characters 'M' or 'T' or lie in the range 'A' to 'H'
|
||
inclusive where 'T' (Internal) is an alias for 'M'. CX points to a double word (4-byte) device offset. SI is the
|
||
number of bytes to be read into the buffer at DI. The data is read very efficiently as it is performed by a
|
||
direct access to the physical device driver (PDD).
|
||
|
||
|
||
The medium must have been mounted prior to using this service. To ensure that the medium is mounted,
|
||
make any normal device access (e.g. call service FilstatusDevice).
|
||
|
||
|
||
CHAPTER 10
|
||
|
||
|
||
PROCESS MANAGEMENT
|
||
|
||
|
||
The process ID and names
|
||
|
||
|
||
In this chapter the following terms are all used to mean the same thing:
|
||
e process handle.
|
||
e process ID.
|
||
e pid.
|
||
|
||
|
||
All processes in the system are known by their ID. Many of the services return the process ID but often
|
||
only the name of the process is known.
|
||
|
||
|
||
It is necessary to determine the ID of a process before services requiring an ID can be used. This can be
|
||
accomplished by calling the procIdByName service.
|
||
|
||
|
||
There is an additional complication due to the fact that multiple instances of the same program can be
|
||
running at any one time. The operating system overcomes this by giving each process a different number
|
||
as part of its name depending on which process control block that it occupies. Processes have names of up
|
||
to eight characters followed by a period, a $ and a two digit number.
|
||
|
||
|
||
If a program called sort is executed twice, the process names might be as follows:
|
||
e SORT.$07
|
||
e SORT.$11
|
||
|
||
|
||
Since a program cannot know in advance the number part of a process name, the ProcIdByName service
|
||
allows a wild card match string. Thus to find the process ID of the first sort process the string should be
|
||
"SORT.*". Of course, only the first process would be found. If it is required to find all the sort processes
|
||
the ProcFind service can be called repeatedly to enumerate all the matching processes.
|
||
|
||
|
||
Process scheduling
|
||
|
||
|
||
Epoc/Os is a time slice, multi-tasking operating system which schedules processes to run on the basis of
|
||
their priorities.
|
||
|
||
|
||
A fixed time slice is given after every re-schedule which will be used by the process until it is all used up
|
||
or the process gives up the CPU (e.g. when waiting for an I/O request to complete).
|
||
|
||
|
||
At any one time, only the highest priority process available to run will execute. All other lower priority
|
||
processes are effectively blocked until the higher priority process gives up the CPU.
|
||
|
||
|
||
If two or more processes share the highest priority, each process will be executed on a round robin basis,
|
||
for a time slice each.
|
||
|
||
|
||
If a higher priority process becomes available to run at any time, the lower priority process will be
|
||
pre-empted and it will lose its time slice.
|
||
|
||
|
||
Priorities are unsigned byte values in the range | to 255. The operating system reserves the values in the
|
||
range | to cPBMinPriority-l and cPBMaxPriority+l to 255. The supervisor runs at priority 248 while the
|
||
file server runs at priority 240.
|
||
|
||
|
||
It is worth noting that interrupts run at the same priority as the process that they interrupt.
|
||
|
||
|
||
10-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
i
|
||
Process control
|
||
|
||
|
||
Often it is necessary for a process to be concerned about the presence of other processes in the system. For
|
||
example, servers need to tidy up resources after processes which have connected to the server terminate
|
||
before releasing the resources they own.
|
||
|
||
|
||
The services MessSignal,IoSignalKillAsynchronous, MessSignalCancel and ToSignalKillCancel are
|
||
specially designed to help in tracking a process in the system.
|
||
|
||
|
||
If a process has logged on an interest in a process then it will receive a message or an I/O signal, when the
|
||
process terminates. The message or status word will contain the reason code for the process terminating.
|
||
|
||
|
||
Process ID and process table address
|
||
|
||
|
||
The process ID consists of two components in a 16 bit value.
|
||
|
||
|
||
The first component occupying the 4 most significant bits is a value in the range 0 - 7 which is allocated
|
||
by the operating system each time a process is created, and serves to uniquely identify the process.
|
||
|
||
|
||
The second component occupies the remaining 12 bits of the ID and is the offset in the operating system's
|
||
data segment of the process control table. There is a lot of valuable information available in the process
|
||
control table which can be retrieved using the GenGetOsData service. There is a mask declared PidMask
|
||
which will mask out the address portion from the ID, suitable for use as the address to retrieve the process
|
||
control data.
|
||
|
||
|
||
Terminate and Kill
|
||
|
||
|
||
There are two services which can be called to stop a process from running, ProcTerminate and Prockill.
|
||
|
||
|
||
In certain types of applications it may be necessary for some cleanup code to be executed before the
|
||
application actually exits. In these cases the process can register with the proconTerminate Service that it
|
||
should be sent a message in response to the procTerminate request. It is then up to the application to
|
||
detect the message, do the necessary cleanup code and then kill itself by calling prockill.
|
||
|
||
|
||
If a process is terminated with procTerminate and it has not registered a proconTerminate then the
|
||
operating system just calls prockill.
|
||
|
||
|
||
ProcKill will always destroy the application regardless of whether the application has registered a
|
||
message with the proconTerminate Service or not.
|
||
|
||
|
||
ProcTerminate is the recommended method of stopping a process as it allows any process which does
|
||
have cleanup code to execute the cleanup code on exit. If you are paranoid then a time out can be set up
|
||
after the ProcTerminate service and if the process has not terminated then the prockill service can be
|
||
called to definitely remove the process.
|
||
|
||
|
||
Procld Get the current process ID
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AX Current process handle.
|
||
PANIC: None
|
||
|
||
|
||
Returns the ID of the process which calls this service.
|
||
|
||
|
||
10-2
|
||
|
||
|
||
10 PROCESS MANAGEMENT
|
||
|
||
|
||
ProcldByName Get a process ID by name
|
||
ES:BX The process name.
|
||
|
||
RETURN: Carry clear
|
||
AX Process handle.
|
||
|
||
RETURN: Carry set
|
||
NotExistsErr The process does not exist.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the ID of a process corresponding to the name pointed to by BX. The name is a zero terminated
|
||
string which may contain wild cards.
|
||
|
||
|
||
ProcGetPriority Get a process priority
|
||
BX The process handle.
|
||
RETURN: Carry clear
|
||
AL Process priority.
|
||
RETURN: Carry set
|
||
NotExistErr The process does not exist.
|
||
PANIC:
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
Returns the priority of the process specified in BX. The priority is returned in register AL.
|
||
|
||
|
||
ProcSetPriority Set a process priority
|
||
BX The process handle.
|
||
AL The new priority.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success.
|
||
RETURN: = Carry set
|
||
|
||
RangeErr Priority was invalid.
|
||
|
||
NotExistErr The process does not exist.
|
||
|
||
FailErr Tried to set the priority of the null, supervisor or file server process.
|
||
PANIC:
|
||
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
Set the priority of the process specified in BX to the new priority value specified in register AL. The
|
||
priority in AL must lie between the limits cpBMinPriority and cpBMaxPriority inclusive. Calling this
|
||
service will cause a re-schedule. It is not possible to change the priority of the null, supervisor or file
|
||
server processes.
|
||
|
||
|
||
ProcGetOwner Get the owning process
|
||
BX The process handle.
|
||
RETURN: Carry clear
|
||
AX The owning process PID.
|
||
RETURN: Carry set
|
||
NotExistErr The process does not exist.
|
||
PANIC:
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
This service returns the PID of an owning process. The ID of the process whose owner is being sought, is
|
||
passed in register BX
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
The window server uses this service when a foreground process dies to determine which process should be
|
||
brought to foreground next. For example if the system launches a program and it exits, the system will
|
||
return to foreground. If the program, however, runs an OPL program which exits, the program will return
|
||
to foreground.
|
||
|
||
|
||
Note that the owning process need not be running. You can check this by calling something harmless,
|
||
such as ProcGetPriority on the returned PID in AX.
|
||
|
||
|
||
ProcCreate Create a process
|
||
ES:BX Pointer to the create process block.
|
||
|
||
RETURN: Carry clear
|
||
AX Process handle.
|
||
|
||
RETURN: Carry set
|
||
NameErr Not a valid process name.
|
||
ExistsErr A different process of the same name is already running.
|
||
NoProcessErr No more process slots.
|
||
ArgumentErr The size of data+stack+heap was greater than OxFFE paragraphs.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This is the basic create process service.
|
||
|
||
|
||
The information required to create a process is in the control block pointed to by BX. The control block
|
||
must have the structure cpBlock. The create service leaves the process suspended and procResume should
|
||
be called to start the process executing.
|
||
|
||
|
||
This service should not be called directly by an application. Instead, the higher level Filzxecute service
|
||
should be called; ri1zxecute will itself call this service at some point.
|
||
|
||
|
||
Because code segments can be shared and the key to shared code segments is the name of the process
|
||
running, it is important to ensure that two images which are different but which have the same name are
|
||
not run simultaneously. To this end a checksum of the code segment is remembered and if a request is
|
||
made to start a new process of the same name as one already running their checksums are compared. If
|
||
they are the same then the new process will share the already loaded code segment. If they are not then the
|
||
ExistsErr Will be returned. This error can also be returned from the FilExecute service.
|
||
|
||
|
||
ProcCreateTask Create a task
|
||
DS:BX Pointer to the task name.
|
||
CL Task priority.
|
||
SS:DI Pointer to top of stack in current process' data segment.
|
||
CS:SI Pointer to task code in the current process’ code segment.
|
||
RETURN: Carry clear
|
||
AX Process handle.
|
||
RETURN: Carry set
|
||
NameErr Not a valid process name.
|
||
NoProcessErr No more process slots.
|
||
PANIC:
|
||
PanicProc3 Task tried to create a task.
|
||
|
||
|
||
A task is a process just like any other process with the special property that it shares its data segment with
|
||
an owning process. Since it shares the data space of the owning process, it can clearly access all the data
|
||
belonging to the parent which makes communication with the parent very easy. Because it is still a
|
||
separate entity in its own right, it needs its own stack in the data space of the parent (which is passed in
|
||
DI). Clearly the parent and the task must co-operate closely when accessing the data in the data segment
|
||
or unpredictable results will occur.
|
||
|
||
|
||
10-4
|
||
|
||
|
||
10 PROCESS MANAGEMENT
|
||
|
||
|
||
Imagine a spreadsheet program which must often go away for long periods of time to re-calculate all the
|
||
formulae when a value is changed. While the re-calculation is being executed by the process it cannot be
|
||
looking for user input, so the program appears to go dead for a while. The traditional way to overcome
|
||
this problem is to poll the keyboard every now and then to see if there is some input requiring processing
|
||
and if there is, to abandon the re-calculation to process the new input. Using tasks, it is much easier just
|
||
to have a task to do the job of re-calculation. When the parent process needs the data re-calculating, it just
|
||
resumes the task, which will immediately start the re-calculation and then wait either for the task to finish
|
||
or for more input to arrive. When the task has completed its work it can simply suspend itself until needed
|
||
again. By having the task at a lower priority than the parent process, the re-calculation will always be
|
||
halted allowing the parent process to deal with fresh input.
|
||
|
||
|
||
A process can create as many tasks as it has stack space available and there are process slots free in the
|
||
system. Remember that a task is still a process. If a task is panicked then the parent process will be
|
||
panicked as well. If the parent process terminates, then the supervisor will arrange for all the tasks
|
||
belonging to it to be terminated as well. Task are initially given the priority as passed in CL, but the
|
||
priority may be changed at any time with the procSetPriority service. A task cannot have any heap
|
||
space since the parent process owns and controls the heap. Thus the parent must provide any space that
|
||
the task requires.
|
||
|
||
|
||
No services which use the heap allocator can be called. Thus a task cannot open an I/O channel; the
|
||
parent must open the channel on behalf of the task.
|
||
|
||
|
||
A good way to co-ordinate a task and its parent is to use a semaphore to lock the shared data. The
|
||
semaphore is created with a value of one. Before either parent or task accesses the data, the semaphore is
|
||
waited on with semwait. When the data is no longer required the semaphore is signalled with
|
||
SemSignalOnce.
|
||
|
||
|
||
ProcResume Resume a process
|
||
|
||
|
||
BX The process handle.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success.
|
||
RETURN: = Carry set
|
||
ArgumentErr The process is not currently suspended.
|
||
NotExistErr The process does not exist.
|
||
PANIC:
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
Resume a suspended process specified in BX.
|
||
|
||
|
||
ProcSuspend Suspend a process
|
||
|
||
|
||
BX The process handle.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success.
|
||
RETURN: Carry set
|
||
|
||
NotExistsErr The process does not exist.
|
||
|
||
FailErr Tried to suspend the null, supervisor or file server process.
|
||
PANIC:
|
||
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
Suspend the process specified in BX.
|
||
|
||
|
||
Processes which are on the ready queue or currently running (i.e. the calling process), will be suspended
|
||
immediately.
|
||
|
||
|
||
Attempting to suspend a process which is currently waiting on the semaphore or delta queues will cause
|
||
that process to be marked as requiring suspension. When it is eventually transferred to the ready queue, it
|
||
will be suspended immediately.
|
||
|
||
|
||
10-5
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Conversely, attempting to resume a process which is currently waiting on the semaphore or delta queues
|
||
and is marked as requiring suspension, will simply be unmarked.
|
||
|
||
|
||
It is not possible to suspend the null, supervisor or file server process.
|
||
|
||
|
||
A suspended process is resumed by calling the procResume Service.
|
||
|
||
|
||
Prockill Kill a process
|
||
AL The kill reason.
|
||
BX The process handle.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
NotExistsErr The process does not exist.
|
||
|
||
FailErr Tried to kill the null, supervisor or file server process.
|
||
PANIC:
|
||
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
Kill the process specified in BX.
|
||
|
||
|
||
Regardless of what state the process is in, it will be killed and the kill reason will be remembered as the
|
||
reason for death. It is recommended that the procTerminate service is called in preference to this service
|
||
as the terminate service will allow any processes which have cleanup code to execute this code, whereas
|
||
this service will just kill the process immediately.
|
||
|
||
|
||
ProcOnTerminate Register termination
|
||
BX The message to be sent when being terminated.
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicMess2 Messaging not initialised.
|
||
|
||
|
||
Register a message to be sent when termination of the process is requested with procTerminate.
|
||
|
||
|
||
Messaging must previously have been initialised with the MessInit service. Having registered an "on
|
||
termination" message, it can be cancelled later by registering the message 0. A process which registers an
|
||
"on termination" message is duty bound to respond to the message by eventually committing suicide by
|
||
calling the prockill service.
|
||
|
||
|
||
ProcTerminate Terminate a process
|
||
AL The terminate reason.
|
||
BX The process handle.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success.
|
||
RETURN: = Carry set
|
||
|
||
NotExistsErr The process does not exist.
|
||
|
||
FailErr Tried to terminate the null, supervisor or file server process.
|
||
PANIC:
|
||
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
Terminate the process specified in BX.
|
||
|
||
|
||
If the process has registered an "on terminate" message then it will be sent this message. If it has no "on
|
||
terminate" message registered then it will be killed. This is the recommended way to terminate processes.
|
||
|
||
|
||
10 - 6
|
||
|
||
|
||
10 PROCESS MANAGEMENT
|
||
|
||
|
||
ProcPanicByld Panic a process
|
||
AL The panic reason.
|
||
BX The process handle.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
NotExistsErr The process does not exist.
|
||
|
||
FailErr Tried to panic the null, supervisor or file server process.
|
||
PANIC:
|
||
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
Panic the process specified in BX.
|
||
|
||
|
||
Regardless of what state the process is in, it will be killed and the panic reason will be remembered.
|
||
|
||
|
||
ProcNameByld Get a process name by ID
|
||
BX The process handle.
|
||
ES:DI Pointer to the buffer to receive the name.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success.
|
||
RETURN: = Carry set
|
||
|
||
NotExistsErr The process does not exist.
|
||
PANIC:
|
||
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
Returns the name of the process specified by the ID in BX. The buffer should be large enough for
|
||
MaxNameESize bytes.
|
||
|
||
|
||
ProcRename Rename a process
|
||
BX The ID of the process to be renamed.
|
||
ES:DI Pointer to the new name for the process.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
NotExitsErr The process does not exist.
|
||
NameErr The new name was invalid.
|
||
FailErr Tried to rename the null, supervisor or file server process.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Rename the process whose ID is contained in BX to the new name pointed to by ES:DI. The new name
|
||
can be between | and 8 characters long and must be zero terminated. No check is made to ensure that the
|
||
new name is unique.
|
||
|
||
|
||
ProcFind Find all processes
|
||
BX The find handle.
|
||
ES:DI Pointer to a wild card match string.
|
||
DS:SI Pointer to the buffer to receive the name of the found process.
|
||
|
||
|
||
10-7
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
AX The find handle for the next find.
|
||
RETURN: Carry set
|
||
|
||
NotExistsErr No more processes found.
|
||
PANIC:
|
||
|
||
PanicProcl Invalid process ID.
|
||
|
||
|
||
Finds all the processes which match the wild card string pointed to by DI.
|
||
The first time this service is called, BX should be set to zero; the first process will be found.
|
||
|
||
|
||
After a find, this service returns the find handle in the AX register. The find handle must be supplied on
|
||
the next call to this service to find the next process. No memory is used by this service and it can be
|
||
abandoned at any time without taking any further action. The wild card string must always be supplied in
|
||
DI and should remain the same between calls to this service. The buffer to receive the name must be at
|
||
least MaxNameESize+2 bytes long.
|
||
|
||
|
||
ProcWatchaAllExits Watch all exits
|
||
|
||
|
||
BX The message number.
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
FailErr Watch all exits already activated.
|
||
PANIC: None
|
||
|
||
|
||
A process can arrange to be sent the message specified in BX whenever a process exits. Only one process
|
||
at a time can request this service and it is usually reserved for the SHELL so that it can monitor the exits
|
||
of all processes. Messaging must be initialised before this service can be invoked. Requesting a message
|
||
number 0 cancels this service. The body of the message, when it arrives, contains two words; the first
|
||
word is the ID of the exiting process and the second is the reason for the exit.
|
||
|
||
|
||
e ProcPanic Panic the current process
|
||
|
||
|
||
AL The panic reason.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Panic the current process for the reason specified in AL. This is suicide of some kind.
|
||
|
||
|
||
e ProcCopyFromByld Copy data from a process by ID
|
||
|
||
|
||
BX The process handle.
|
||
|
||
x The number of bytes to be copied.
|
||
|
||
ES:DI Pointer to the destination buffer in the current process.
|
||
|
||
SI The offset in the process, specified in BX, data segment from which
|
||
|
||
|
||
the data is to be copied.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: Carry set
|
||
ArgumentErr Process did not exist or SI+CX exceeded the segment size.
|
||
PANIC: None
|
||
|
||
|
||
Copies CX bytes of data from the buffer pointed to by SI within the data segment of the process specified
|
||
by BX to the buffer pointed to by DI. If CX is less than or equal to 64 then the data will be copied with
|
||
interrupts disabled.
|
||
|
||
|
||
10-8
|
||
|
||
|
||
10 PROCESS MANAGEMENT
|
||
|
||
|
||
e ProcindStringCopyFromByld Copy strings from process by ID
|
||
|
||
|
||
BX The process handle.
|
||
|
||
CX The maximum number of bytes to be copied.
|
||
|
||
ES:DI Pointer to the destination buffer in the current process.
|
||
|
||
SI The address of a pointer to a string in the processes (specified in
|
||
|
||
|
||
BX) data segment from which the string is to be copied.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: Carry set
|
||
ArgumentErr Process did not exist or SI+CX exceeded the segment size.
|
||
PANIC: None
|
||
|
||
|
||
Copies up to CX bytes of text to the buffer pointed to by DI; the source of the text string is in the data
|
||
segment of the process specified by BX and SI points to the pointer of the text string. If CX is less than or
|
||
equal to 64 then the data will be copied with interrupts disabled.
|
||
|
||
|
||
e ProcCopyToByld Copy data to a process by ID
|
||
|
||
|
||
BX The process handle.
|
||
cx The number of bytes to be copied.
|
||
DI The offset in the process, specified in BX, data segment to which
|
||
|
||
|
||
the data is to be copied.
|
||
|
||
|
||
DS:SI Pointer to the source buffer in the current process from which the
|
||
data is to be copied.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: Carry set
|
||
|
||
ArgumentErr Process did not exist or DI+CX exceeded the segment size.
|
||
PANIC: None
|
||
|
||
|
||
Copies CX bytes of data from the buffer pointed to by SI to the buffer pointed to by DI in the data segment
|
||
of the process specified by BX. If CX is less than or equal to 64 then the data will be copied with
|
||
interrupts disabled.
|
||
|
||
|
||
10-9
|
||
|
||
|
||
CHAPTER 11
|
||
|
||
|
||
DATE AND TIME MANAGEMENT
|
||
|
||
|
||
Absolute and relative times
|
||
|
||
|
||
The operating system has the concept of relative and absolute times and all services work in either relative
|
||
or absolute time.
|
||
|
||
|
||
Absolute time services always work in seconds where the seconds are in the same format as the system
|
||
time, i.e. they specify a real time in the future. If the operating system enters standby mode with an
|
||
absolute time event still pending then it will ensure that it will wake up in time to service the event. Thus,
|
||
if a process gets the system time, adds 24*60*60 to it and then waits absolutely until that time then the
|
||
operating system will ensure that it is running 24 hours later. Absolute times are unaffected by changing
|
||
the system time so that if the system time is advanced by | day then absolute times are not also advanced
|
||
by 1 day.
|
||
|
||
|
||
Relative time services work in tenths of a second or system ticks. Unlike absolute times, a relative time
|
||
means x units from now. Again, changing the system time will have no effect upon relative times. If a
|
||
relative time is set for 5 seconds and the system time is advanced by 1 hour, the relative time will still wait
|
||
for 5 seconds. Again, unlike absolute times, if the operating system enters standby mode, the time in
|
||
standby is not taken into account. If there is a relative time outstanding and the operating system enters
|
||
standby mode for 1 hour then the relative time will be 1 hour plus 5 seconds. This also means that the
|
||
operating system will not exit from standby mode to service relative time events.
|
||
|
||
|
||
TimWaitAbsolute Wait to a given time
|
||
|
||
|
||
CX:DX The time to wait till in seconds.
|
||
RETURN: = Carry clear
|
||
Success
|
||
RETURN: Carry set
|
||
ArgumentErr The value in CX:DX was in the past.
|
||
PANIC: None
|
||
Sleep the process calling this service until the system time given in CX:DX, where CX:DxX is a 32 bit
|
||
|
||
|
||
integer.
|
||
|
||
|
||
DX is the least significant word and CX is the most significant word. This is an absolute time service.
|
||
|
||
|
||
11-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
TimSleepForTenths Sleep for tenths of a second
|
||
|
||
|
||
CX:DX The time to sleep in tenths of a second.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
ArgumentErr The value in CX:DX was negative.
|
||
OverflowErr The value in CX:DX overflowed when converted to ticks.
|
||
|
||
|
||
PANIC: None
|
||
Sleep the process calling this service for CX:DX tenths of a second, where CX:DX is a 32 bit integer.
|
||
|
||
|
||
DX is the least significant word and CX is the most significant word. If sleep is requested for N tenths,
|
||
then the sleep is guaranteed to be between N and N+1 tenths.
|
||
|
||
|
||
This is a relative time service.
|
||
|
||
|
||
TimSleepForTicks Sleep for system clock ticks
|
||
|
||
|
||
CX:DX The time to sleep in system clock ticks.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: = Carry set
|
||
ArgumentErr The value in CX:DX was negative.
|
||
PANIC: None
|
||
Sleep the process calling this service for CX:DX system clock ticks where CX:DX is a 32 bit integer.
|
||
|
||
|
||
DX is the least significant word and CX is the most significant word. If sleep is requested for N tenths,
|
||
then the sleep is guaranteed to be between N and N+1 ticks.
|
||
|
||
|
||
On IBM compatible PCs, a clock tick occurs 18.2 times a second and on the SIBO hardware occurs 32
|
||
times a second.
|
||
|
||
|
||
A request to sleep for zero ticks is valid and will just force a re-schedule; the process calling this service
|
||
loses the remainder of its time slice if there are other processes at the same priority.
|
||
|
||
|
||
This is a relative time service.
|
||
|
||
|
||
TimGetSystemTime Get the system time
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AX: BX System time in seconds.
|
||
PANIC: None
|
||
|
||
|
||
Returns the system time in seconds.
|
||
|
||
|
||
The system time is stored as a 32 bit unsigned integer; the number of seconds since Ist. January 1970 at
|
||
00:00:00 (i.e. UNIX time). BX is the least significant word and AX is the most significant word.
|
||
|
||
|
||
TimSetSystemTime Set the system time
|
||
|
||
|
||
CX:DX The new system time.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Sets the system time to the new value passed in CX:DX.
|
||
|
||
|
||
The system time is stored as a 32 bit unsigned integer; the number of seconds since Ist. January 1970 at
|
||
00:00:00 (i.e. UNIX time). DX is the least significant word and CX is the most significant word.
|
||
|
||
|
||
11-2
|
||
|
||
|
||
11 DATE AND TIME MANAGEMENT
|
||
|
||
|
||
TimSystemTimeToDaySeconds Convert sys’ time to day secs
|
||
CX:DX The time to be converted in seconds.
|
||
DS:DI Pointer to a DyScEnt Structure.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Converts the system time to the number of days since 1970 and the number of remaining seconds.
|
||
|
||
|
||
DS:DI points to a pyscEnt structure which contains a long integer number of days and a long integer
|
||
number of seconds. DX is the least significant word and CX is the most significant word of the time to be
|
||
converted.
|
||
|
||
|
||
TimDaySecondsToSystemTime Convert day secs to system time
|
||
|
||
|
||
DS:SI Pointer to a DyScEnt structure.
|
||
RETURN: Carry clear
|
||
AX: BX System time.
|
||
RETURN: Carry set
|
||
ArgumentErr DyScSeconds greater than 24*60*60
|
||
OverflowErr Exceeded system time.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Convert a DyScEnt structure pointed to by DS:SI to system time.
|
||
|
||
|
||
BX is the least significant word and AX is the most significant word of the system time.
|
||
|
||
|
||
TimDaySecondsToDate Convert day seconds to date
|
||
DS:SI Pointer to a DyScEnt structure.
|
||
DS:DI Pointer to a DateEnt structure.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
|
||
RETURN: Carry set
|
||
ArgumentErr DyScSeconds greater than 24*60*60
|
||
OverflowErr Years out of range.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Converts the day seconds in the pyscEnt structure pointed to by DS:SI to date in the pateEnt structure
|
||
pointed to by DS:DI.
|
||
|
||
|
||
TimDateToDaySeconds Convert date to day seconds
|
||
DS:SI Pointer to a DateEnt structure.
|
||
DS:DI Pointer to a DyScEnt Structure.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
ArgumentErr Date is invalid.
|
||
PANIC: None
|
||
|
||
|
||
Converts the date in the pateEnt structure pointed to by DS:SI to day seconds in the pyscEnt structure
|
||
pointed to by DS:DI.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
TimDaysInMonth Number of days in a month
|
||
CH The month number, 0 to 11 (0 equals January).
|
||
CL The year number (0 equals 1900).
|
||
RETURN: Carry clear
|
||
AX Number of days in the month.
|
||
RETURN: Carry set
|
||
ArgumentErr Invalid month.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the number of days in a month corresponding to the month number passed in CH and the year
|
||
number passed in CL.
|
||
|
||
|
||
The value in AX will be in the range 28 to 31. If this service returns 29 for any year in CL and | in CH
|
||
then the year is a leap year (i.e. February with 29 days).
|
||
|
||
|
||
TimDayOfWeek Week day number
|
||
|
||
|
||
CX:DX The number of days since 1900.
|
||
RETURN:
|
||
AX The week day number, 0 = Monday.
|
||
|
||
|
||
PANIC: None
|
||
Returns the weekday number corresponding to the number of days since 1900 in CX:DX.
|
||
|
||
|
||
DX is the least significant word and CX is the most significant word. The value in AX will be in the
|
||
range 0 to 6, with 0 being Monday and 6 being Sunday.
|
||
|
||
|
||
TimNameOfDay Name of day
|
||
|
||
|
||
AL The day of week number, 0 to 6.
|
||
|
||
DS:BX Pointer to a buffer to receive the name of the day.
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
ArgumentErr The day of week number is not in the range 0 to 6.
|
||
PANIC: None
|
||
Returns the name of the day corresponding to the day of week number in AL.
|
||
|
||
|
||
The day name is returned as a zero terminated string in the buffer pointed to by DS:BX. The maximum
|
||
size of the string is 32 bytes. This is a language dependent service.
|
||
|
||
|
||
TimNameOfMonth Name of month
|
||
AL The month number, 0 to 11.
|
||
DS:BX Pointer to a buffer to receive the name of the month.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
ArgumentErr The month number is not in the range 0 to 11.
|
||
PANIC: None
|
||
|
||
|
||
Returns the name of the month corresponding to the month number in AL.
|
||
|
||
|
||
The month name is returned as a zero terminated string in the buffer pointed to by DS:BX. The maximum
|
||
size of the string is 32 bytes. This is a language dependent service.
|
||
|
||
|
||
11-4
|
||
|
||
|
||
11 DATE AND TIME MANAGEMENT
|
||
|
||
|
||
TimWeekNumber Week number
|
||
CX:DX The number of days since Jan 1 1900.
|
||
|
||
RETURN: Carry clear
|
||
AX The week number in the range 1-53.
|
||
|
||
RETURN: Carry set
|
||
ArgumentErr The number of days exceeds the year 2165.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the week number corresponding to the number of days since Jan 1 1900.
|
||
|
||
|
||
This service takes the value in cbataStartofweek in the country dependent data into account.
|
||
|
||
|
||
¢ TimNameOfDayAbb Abbreviated name of day
|
||
|
||
|
||
AL The day of week number, 0 to 6.
|
||
|
||
BX Pointer to a buffer to receive the name of the day.
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: Carry set
|
||
|
||
ArgumentErr The day of week number is not in the range 0 to 6.
|
||
PANIC: None
|
||
Returns the abbreviated name of the day corresponding to the day of week number in AL.
|
||
|
||
|
||
The day name is returned as a zero terminated string in the buffer pointed to by BX. This is a language
|
||
dependent service.
|
||
|
||
|
||
All month name abbreviations for a particular language have the same length and could be one, two or
|
||
three characters. The abbreviation will not exceed three characters in any language.
|
||
|
||
|
||
¢ TimNameOfMonthAbb Abbreviated name of month
|
||
AL The month number, 0 to 11.
|
||
BX Pointer to a buffer to receive the name of the month.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
ArgumentErr The month number is not in the range 0 to 11.
|
||
PANIC: None
|
||
|
||
|
||
Returns the abbreviation for the name of the month corresponding to the month number in AL.
|
||
|
||
|
||
The month name is returned as a zero terminated string in the buffer pointed to by BX. This is a language
|
||
dependent service.
|
||
|
||
|
||
All month name abbreviations for a particular language have the same length and could be one, two or
|
||
three characters. The abbreviation will not exceed three characters in any language.
|
||
|
||
|
||
11-5
|
||
|
||
|
||
CHAPTER 12
|
||
|
||
|
||
CONVERSION MANAGEMENT
|
||
|
||
|
||
ConvUnsignedintToBuffer Unsigned integer to buffer
|
||
BX The number to be converted.
|
||
cx The conversion radix.
|
||
ES:DI Pointer to buffer to receive the converted number.
|
||
RETURN:
|
||
AX The number of characters written to DI.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Converts an unsigned integer in BX to its corresponding digits in the buffer pointed to by DI using the
|
||
radix specified in CX, i.e. 2 for binary, 8 for octal, 10 for decimal and 16 for hexadecimal.
|
||
|
||
|
||
The number of characters written to the buffer at DI is returned in AX.
|
||
|
||
|
||
ConvUnsignedLongIntToBuffer Unsigned long integer to buffer
|
||
|
||
|
||
DX:BX The number to be converted.
|
||
|
||
fone The conversion radix.
|
||
|
||
ES:DI Pointer to buffer to receive the converted number.
|
||
RETURN:
|
||
|
||
AX The number of characters written to ES:DI.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Converts an unsigned long integer in DX:BX to its corresponding digits in the buffer pointed to by DI
|
||
using the radix specified in CX, i.e. 2 for binary, 8 for octal, 10 for decimal and 16 for hexadecimal.
|
||
|
||
|
||
BX is the least significant word and DX is the most significant word. The number of characters written to
|
||
the buffer at DI is returned in AX.
|
||
|
||
|
||
ConvintToBuffer Integer to buffer
|
||
BX The number to be converted.
|
||
ES:DI Pointer to buffer to receive the converted number.
|
||
|
||
RETURN:
|
||
AX The number of characters written to DI.
|
||
|
||
|
||
PANIC: None
|
||
Converts an integer in BX to its corresponding digits in the buffer pointed to by DI.
|
||
|
||
|
||
If BX is negative then the first character in the buffer will be a minus sign '-'. The conversion is performed
|
||
using a radix of 10. The number of characters written to the buffer at DI is returned in AX.
|
||
|
||
|
||
12-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
ConvLongIntToBuffer Long integer to buffer
|
||
DX:BX The number to be converted.
|
||
ES:DI Pointer to buffer to receive the converted number.
|
||
|
||
RETURN:
|
||
AX The number of characters written to DI.
|
||
|
||
|
||
PANIC: None
|
||
Converts a long integer in DX:BX to its corresponding digits in the buffer pointed to by DI.
|
||
If BX is negative then the first character in the buffer will be a minus sign '-'. The conversion is performed
|
||
|
||
|
||
using a radix of 10. BX is the least significant word and DX is the most significant word. The number of
|
||
characters written to the buffer at DI is returned in AX.
|
||
|
||
|
||
ConvArgumentsToBuffer Convert arguments to buffer
|
||
SS:BX Pointer to the argument list.
|
||
ES:DI Pointer to buffer to receive the converted arguments.
|
||
DS:SI Pointer to format control string.
|
||
RETURN:
|
||
AX The number of characters written to ES:DI.
|
||
|
||
|
||
PANIC: None
|
||
Converts the values in the list pointed to by BX into a buffer at DI.
|
||
The conversion is controlled by the format string pointed to by SI. This service is used by p_atob()in
|
||
|
||
|
||
PLIB. Note that the arguments in the list pointed to BX must be as if they were being passed on the stack
|
||
to a C function. i.e. only words and double words are allowed.
|
||
|
||
|
||
ConvStringToUnsignedint String to unsigned integer
|
||
cx Radix for conversion.
|
||
DS:SI Pointer to zero terminated string to be converted.
|
||
RETURN: Carry clear
|
||
AX Resultant unsigned integer.
|
||
SI Pointer to the first unused character in the string.
|
||
RETURN: Carry set
|
||
FailErr No valid digits in string.
|
||
OverflowErr Number too large for an unsigned integer.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Convert a zero terminated string to an unsigned integer using the radix specified in CX, i.e. 2 for binary,
|
||
8 for octal, 10 for decimal and 16 for hexadecimal. The conversion will stop at a character that is not valid
|
||
for the conversion radix.
|
||
|
||
|
||
If the string consists only of valid digits and the number does not overflow then SI will be returned
|
||
pointing to the terminating 0 otherwise SI will be pointing at the invalid digit.
|
||
|
||
|
||
ConvStringToUnsignedLongint String to unsigned long integer
|
||
|
||
|
||
cx Radix for conversion.
|
||
|
||
DS:SI Pointer to zero terminated string to be converted.
|
||
RETURN: Carry clear
|
||
|
||
AX:BX Resultant unsigned long integer.
|
||
|
||
SI Pointer to the first unused character in the string.
|
||
|
||
|
||
12-2
|
||
|
||
|
||
12 CONVERSION MANAGEMENT
|
||
|
||
|
||
RETURN: = Carry set
|
||
|
||
FailErr No valid digits in string.
|
||
|
||
OverflowErr Number too large for an unsigned long integer.
|
||
PANIC: None
|
||
|
||
|
||
Convert a zero terminated string to an unsigned long integer using the radix specified in CX, i.e. 2 for
|
||
binary, 8 for octal, 10 for decimal and 16 for hexadecimal. The conversion will stop at a character that is
|
||
not valid for the conversion radix.
|
||
|
||
|
||
If the string consists only of valid digits and the number does not overflow then SI will be returned
|
||
pointing to the terminating 0 otherwise SI will be pointing at the invalid digit. The result is returned in
|
||
BX:AX where BX is the least significant word and AX is the most significant word.
|
||
|
||
|
||
ConvStringTolnt String to integer
|
||
DS:SI Pointer to zero terminated string to be converted.
|
||
RETURN: Carry clear
|
||
AX Resultant integer.
|
||
SI Pointer to the first unused character in the string.
|
||
RETURN: Carry set
|
||
FailErr No valid digits in string.
|
||
OverflowErr Number too large for an integer.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Convert a zero terminated string to an integer using a radix of 10.
|
||
|
||
|
||
The string can begin with a minus character '-', in which case the integer will be negative or a plus
|
||
character '+', in which case the integer will be positive. The maximum positive value is 32767 and the
|
||
maximum negative value is -32768. The conversion will stop at a character that is invalid for a conversion
|
||
radix of 10.
|
||
|
||
|
||
If the string consists only of valid digits and the number does not overflow then SI will be returned
|
||
pointing to the terminating 0 otherwise SI will point to the invalid digit.
|
||
|
||
|
||
ConvStringToLongint String to long integer
|
||
DS:SI Pointer to zero terminated string to be converted.
|
||
RETURN: Carry clear
|
||
AX:BX Resultant long integer.
|
||
SI Pointer to the first unused character in the string.
|
||
RETURN: Carry set
|
||
FailErr No valid digits in string.
|
||
OverflowErr Number too large for a long integer.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Convert a zero terminated string to a long integer using a radix of 10.
|
||
|
||
|
||
The string can begin with a minus character '-', in which case the long integer will be negative or a plus
|
||
character '+', in which case the long integer will be positive. The maximum positive value is 4294967295
|
||
and the maximum negative value is -4294967295. The conversion will stop at a character that is invalid
|
||
for a conversion radix of 10.
|
||
|
||
|
||
If the string consists only of valid digits and the number does not overflow then SI will be returned
|
||
pointing to the terminating 0 otherwise SI will point to the invalid digit. The result is returned in BX:AX
|
||
where BX is the least significant word and AX is the most significant word.
|
||
|
||
|
||
12-3
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
ConvFloatToBuffer Floating point number to buffer
|
||
SI Pointer to the float to be converted.
|
||
DX Pointer to the format structure.
|
||
DI Pointer to buffer to receive the converted float.
|
||
RETURN: Carry clear
|
||
AX Length of converted string.
|
||
RETURN: Carry set
|
||
ArgumentErr Invalid float, or illegal [DX].ptobType.
|
||
FailErr Representation exceeds [DX].pt obwidth characters.
|
||
OverflowErr Float >>= 1E+100.
|
||
UnderflowErr Float << 1E-99.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Converts a double floating point number in [SI] to a printable ASCII zero terminated string pointed to by
|
||
DI using the supplied format specification. The format specification is contained in the ptobEnt structure
|
||
as defined in epocdefs.inc as:
|
||
|
||
|
||
Dtob struc ; dtob format string structure
|
||
DtobType db ? j conversion type
|
||
DtobWidth db
|
||
DtobNdec db
|
||
DtobPoint db
|
||
DtobTriad db
|
||
DtobTrilen db ; threshold for triad character use
|
||
DtobEnt ends
|
||
|
||
|
||
; width of representation in characters
|
||
; number of decimal places
|
||
|
||
; decimal point character
|
||
|
||
; triad separator character
|
||
|
||
|
||
VN VV Vy
|
||
|
||
|
||
Numbers may be represented in various formats by setting ptobType as follows:-
|
||
@ DtobTypeFixed, fixed point format.
|
||
@ DtobTypeExponent, exponent format.
|
||
@ DtobTypeGeneral, general format.
|
||
|
||
|
||
Integer format is obtained as a special case of fixed point format where the number of decimal places
|
||
required is zero. The parameter [DX].pt obwidth specifies the maximum number of characters allowed to
|
||
represent the number and there should be [DX].pt obwidth+1 bytes (the +1 is for the zero terminator)
|
||
reserved at DI. If the output exceeds this limit, railzrr is returned. Although numbers are normally
|
||
displayed right-aligned, convFloat ToBuffer makes no attempt to align the result in the buffer. Alignment
|
||
is quite different for monospaced and proportionally spaced character fonts and is best handled by post-
|
||
processing the output from convFloatToBuffer.
|
||
|
||
|
||
[DX].pt obwidth should be in the range | to 255 inclusive. The parameter [DX].ptobNdec specifies the
|
||
number of decimal digits following the decimal point when [DX].pDtobType 1S DtobTypeFixed OF
|
||
DtobTypeExponent. [DX].ptobNdec must be in the range 0 to FloatSignificantDigits (15 for IEEE
|
||
floating point format) inclusive. The parameter [DX].ptobPoint specifies the decimal point character
|
||
which separates the integer portion from the fractional portion and would normally be either a'.' or a',’ .
|
||
|
||
|
||
The parameter [DX].pt obTriad specifies the triad separator character which delimits groups of 3 digits in
|
||
the integer part of the fixed point representation and would normally be either ',’ or '.' or '' . The
|
||
insertion of triad separation characters is disabled if [DX].ptobTrilen is 0 and otherwise enabled when
|
||
the integer portion of the number contains greater than [DX].ptobTrilen digits. Normally one would use
|
||
[DX].ptobTrilen=1 to enable triad separation and [DX].ptobTrilen is 4 to conform to French
|
||
|
||
|
||
conventions for triad separator insertion.
|
||
|
||
|
||
In all cases, negative numbers are represented by the insertion of a leading '-' sign (positive numbers do
|
||
not have a leading '+' sign). This can easily be post-processed to obtain a bracketed representation of
|
||
negative numbers, if desired. There can never be more than FloatSignificantDigits(15 FOR IEEE
|
||
floating point format). Where there are less than FloatSignificantDigits, the number is rounded to the
|
||
number of significant digits displayed.
|
||
|
||
|
||
12-4
|
||
|
||
|
||
12 CONVERSION MANAGEMENT
|
||
|
||
|
||
The limitation to floats with magnitude between 1E-99 and 1E+100 results from the use of lookup tables
|
||
for speedily generating the results. Floating point numbers of magnitude smaller than 1E-99 can easily be
|
||
converted to 0 before calling this service. The detailed formatting details as a function of [DX].ptobtType
|
||
is as follows:
|
||
|
||
|
||
@ DtobTypeFixed - The number is represented with [DX].pt obNdec decimal places where
|
||
[DX].pt obNdec may be zero to represent an integer (in which case no decimal point character is
|
||
displayed). If the ASCII form exceeds [DX].pt opbwidth (usually due to the number being large
|
||
and having too many digits before the decimal point), railzrr is returned. A zero is displayed in
|
||
the form "0.000" where there are [DX].pt obNdec zeros following the decimal point or as just "0"
|
||
if [DX].DtobNdec is zero.
|
||
|
||
|
||
@ DtobTypeExponent - The number is represented in exponent notation with one non-zero digit
|
||
before the decimal point and [DX].pt obNdec digits beyond the decimal point followed by 'E', a
|
||
sign ('+' or '-') and the exponent as two digits (with leading zero if necessary). If [DX].ptobNdec
|
||
is zero, the number is rounded to one digit of precision and no decimal point is displayed. A zero
|
||
is displayed in the form "0.000E+00" where there are [DX].pt obNdec zeros following the decimal
|
||
point or as "OE+00" if [DX].ptobNdec is zero. Triad separation is not available and triad
|
||
separation parameters are ignored.
|
||
|
||
|
||
@ DtobTypeGeneral - converts either as fixed format (with no triad separator) or exponent format,
|
||
making best use of [DX].ptobwidth. Here, "making best use" is defined as showing the greater
|
||
number of significant digits and preferring fixed format when the number of significant digits
|
||
shown is the same. The number of decimal places is chosen as a function of [DX].ptobwidth and
|
||
the value of [DX].pt obNdec is ignored. A zero is displayed as just "0". Triad separation is not
|
||
available and triad separation parameters are ignored.
|
||
|
||
|
||
ConvStringToFloat String to float
|
||
|
||
|
||
SI address of pointer to text to convert
|
||
Dx Decimal point character
|
||
DI Pointer to double destination
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
FailErr Failed to recognise a number.
|
||
OverflowErr Number too large.
|
||
UnderflowErr Number less than 1E-99, 0 written to [DI].
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Scans the string for a number and writes the value as a double float to [DI]. If underflow occurs, zero is
|
||
written to [DI].
|
||
|
||
|
||
The supplied ASCTI string should take the form:
|
||
[+|-]<<int>.<fract>[E|e] [+|-]<<exp>>
|
||
Where:
|
||
|
||
|
||
e = The leading '+' sign may be omitted for positive numbers. <<int>> and <<fract>> are optional
|
||
but at least one should be present.
|
||
|
||
|
||
e Leading zeros in <int> are legal but have no effect.
|
||
e = Trailing zeros in <fract> are legal but have no effect.
|
||
|
||
|
||
e = There is no reasonable limit to the number of significant digits but digits which are beyond the
|
||
precision of the floating point representation will not be reflected in the mantissa of the number
|
||
which is produced.
|
||
|
||
|
||
e The exponent field which starts with and 'E' or 'e' is optional.
|
||
e = The leading '+' sign in the exponent field may be omitted for positive exponents.
|
||
|
||
|
||
e The resulting number should be in the range approximately 1e-99 to approximately 1e+99.
|
||
|
||
|
||
12-5
|
||
|
||
|
||
CHAPTER 13
|
||
|
||
|
||
LONG INTEGER MANAGEMENT
|
||
|
||
|
||
e LongintCompare Compare two long integers
|
||
AX: BX The left operand long integer.
|
||
CX:DX The right operand long integer.
|
||
RETURN:
|
||
Flags < 0 If AX:BX < CX:DX
|
||
Flags = 0 If AX:BX = CX:DX
|
||
Flags >> 0 If AX:BX > CX:DX
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Compares two long integers for equality. The flags are set in the same way as for a normal compare for
|
||
integers, i.e. CMP AX:BX, CX:DX.
|
||
|
||
|
||
Note that the flags are set so that only the signed tests can be performed, i.e. JLE,JL,JE,JNE,JG,JGE and
|
||
not the unsigned tests JB,JBE,JA,JAE.
|
||
|
||
|
||
All registers are preserved by this service.
|
||
|
||
|
||
e LongintMultiply Long integer multiplication
|
||
AX:BX The left operand long integer.
|
||
CX:DX The right operand long integer.
|
||
RETURN: = Carry clear
|
||
AX:BX Product.
|
||
RETURN: Carry set
|
||
OverflowErr AX:BX * CX:DX is bigger than 32 bits.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Multiply two long integers together. If the resultant product overflows then an error will be returned by
|
||
setting the carry flag.
|
||
|
||
|
||
If no error occurs, the flags will not be set for the result; carry will be clear.
|
||
|
||
|
||
e LongintDivide Long integer division
|
||
AX: BX The left operand long integer (dividend).
|
||
CX:DX The right operand long integer (divisor).
|
||
RETURN: = Carry clear
|
||
AX: BX The quotient.
|
||
CX:DX The remainder.
|
||
RETURN: Carry set
|
||
DivideByZeroErr CX:DX is zero.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
13-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Divide one long integer by another.
|
||
If CX:DX (i.e. the divisor), is zero then an error will be returned and the carry flag will be set.
|
||
If no error occurs, the flags will not be set for the result; carry will be clear.
|
||
|
||
|
||
The remainder will have the same sign as the dividend.
|
||
|
||
|
||
e LongUnsignedintCompare Compare 2 unsigned long integers
|
||
|
||
|
||
AX:BX The left operand unsigned long integer.
|
||
|
||
CX:DX The right operand unsigned long integer.
|
||
RETURN:
|
||
|
||
Flags << 0 If AX:BX < CX:DX
|
||
|
||
Flags = 0 If AX:BX = CX:DX
|
||
|
||
Flags > 0 If AX:BX > CX:DX
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Compares two unsigned long integers for equality.
|
||
The flags are set in the same way as for a normal compare for integers, i.e. CMP AX:BX, CX:DX.
|
||
|
||
|
||
Note that the flags are set so that only the unsigned tests can be performed, i.e. JBE,JB,JE,JNE,JA,JAE
|
||
and not the signed tests JL,JLE,JG,JGE.
|
||
|
||
|
||
All registers are preserved by this service.
|
||
|
||
|
||
e LongUnsignedintMultiply Unsigned long integer multiplication
|
||
|
||
|
||
AX:BX The left operand unsigned long integer.
|
||
CX:DX The right operand unsigned long integer.
|
||
RETURN: Carry clear
|
||
AX:BX Product.
|
||
RETURN: Carry set
|
||
OverflowErr AX:BX * CX:DX is bigger than 32 bits.
|
||
|
||
|
||
PANIC: None
|
||
Multiply two unsigned long integers together.
|
||
|
||
|
||
If the resultant product overflows, an error will be returned by setting the carry flag.
|
||
|
||
|
||
If no error occurs, the flags will not be set for the result; carry will be clear.
|
||
|
||
|
||
e LongUnsignedIntDivide Unsigned long integer division
|
||
AX:BX The left operand unsigned long integer (dividend).
|
||
CX:DX The right operand unsigned long integer (divisor).
|
||
RETURN: Carry clear
|
||
AX: BX The quotient.
|
||
CX:DX The remainder.
|
||
RETURN: Carry set
|
||
DivideByZeroErr CX:DX is zero.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Divide one unsigned long integer by another.
|
||
If CX:DX (i.e. the divisor), is zero then an error will be returned and the carry flag will be set.
|
||
|
||
|
||
If no error occurs, the flags will not be set for the result; carry will be clear.
|
||
|
||
|
||
13-2
|
||
|
||
|
||
13 LONG INTEGER MANAGEMENT
|
||
|
||
|
||
LongUnsignedintRandom Unsigned long integer random number
|
||
|
||
|
||
DS:BX Pointer to the unsigned long integer seed.
|
||
RETURN:
|
||
AX: BX The unsigned long integer random number.
|
||
|
||
|
||
PANIC: None
|
||
Return an unsigned long integer random number given the seed.
|
||
The 4 bytes pointed to by BX are used to generate the next random number which is returned in AX:BX
|
||
|
||
|
||
as well as being written back to the seed. The seed can start with any number required from which the
|
||
same sequence of random numbers will be generated.
|
||
|
||
|
||
CHAPTER 14
|
||
|
||
|
||
FLOATING POINT NUMBER HANDLING
|
||
|
||
|
||
e FloatCompare Compare two Floats
|
||
DI Pointer to left hand floating point operand.
|
||
SI Pointer to right hand floating point operand.
|
||
RETURN:
|
||
Z flag set if [DIJ=[S]].
|
||
S flag set if [DI]<<[S]].
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Compares the two floating point operands pointed to by SI and DI, setting the Z and the S flags as for
|
||
[DI]-[SI]. The Z flag is set if the operands are equal and the S flag is set if [DI] is less than [SI].
|
||
|
||
|
||
¢ FloatMultiply Multiply two floats
|
||
DI Pointer to left hand (and destination) floating point operand.
|
||
Si Pointer to right hand floating point operand.
|
||
RETURN: = Carry clear
|
||
[DI]
|
||
RETURN: Carry set
|
||
OverFlowError Product exponent overflowed.
|
||
|
||
|
||
PANIC: None
|
||
Multiplies the two floating point operands pointed to by SI and DI. Returns the product in [DI].
|
||
|
||
|
||
« FloatDivide Divide floats
|
||
DI Pointer to left hand (and destination) floating point operand.
|
||
SI Pointer to right hand floating point operand.
|
||
RETURN: = Carry clear
|
||
[DI]
|
||
RETURN: Carry set
|
||
OverFlowError Quotient exponent overflowed.
|
||
|
||
|
||
PANIC: None
|
||
Divides the operand at DI by the operand at SI and returns the quotient in [DI].
|
||
|
||
|
||
14-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
e FloatAdd Add two Floats
|
||
|
||
|
||
DI Pointer to left hand (and destination) floating point operand.
|
||
SI Pointer to right hand floating point operand.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry set
|
||
OverFlowError Sum exponent overflowed.
|
||
|
||
|
||
PANIC: None
|
||
Adds the two floating point operands pointed to by SI and DI. Returns the sum in [DI].
|
||
|
||
|
||
¢ FloatSubtract Subtract Floats
|
||
DI Pointer to left hand (and destination) floating point operand.
|
||
SI Pointer to right hand floating point operand.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: = Carry set
|
||
OverFlowError Sum exponent overflowed.
|
||
|
||
|
||
PANIC: None
|
||
Subtracts the operand at SI from the operand at DI and returns the difference in [DI].
|
||
|
||
|
||
e FloatNegate Negate a Floats
|
||
|
||
|
||
DI Pointer to floating point operand.
|
||
RETURN:
|
||
|
||
[DI]
|
||
PANIC: None
|
||
Negates the float at DI.
|
||
|
||
|
||
¢ FloatToLong Convert Float to a signed long
|
||
SI Pointer to float operand to be converted.
|
||
|
||
RETURN: Carry clear
|
||
AX:BX Long integer result.
|
||
|
||
RETURN: Carry set
|
||
ArgumentErr Float not in range [-2**31,2**31-1].
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Converts the floating point operand pointed to by SI to a 32 bit signed long integer in AX:BX with the
|
||
most significant word in AX.
|
||
|
||
|
||
¢ FloatTtoUnsignedLong Convert Float to unsigned long
|
||
SI Pointer to float operand to be converted.
|
||
|
||
RETURN: Carry clear
|
||
AX: BX Unsigned long integer result.
|
||
|
||
RETURN: Carry set
|
||
ArgumentErr Float not in range [-2*32+1,2**32-1].
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Converts the floating point operand pointed to by SI to a 32 bit unsigned integer in AX:BX with the most
|
||
significant word in AX. Note that the sign of the float is ignored.
|
||
|
||
|
||
14-2
|
||
|
||
|
||
14. FLOATING POINT NUMBER HANDLING
|
||
|
||
|
||
¢ FloatTolnt Convert Float to a signed integer
|
||
SI Pointer to float operand to be converted.
|
||
|
||
RETURN: Carry clear
|
||
AX unsigned integer result.
|
||
|
||
RETURN: Carry set
|
||
ArgumentErr Float not in range [-32768,32767].
|
||
|
||
|
||
PANIC: None
|
||
Converts the floating point operand pointed to by SI to a 16 bit signed integer in AX.
|
||
|
||
|
||
¢ FloatToUnsignedint Convert Float to unsigned integer
|
||
SI Pointer to float operand to be converted.
|
||
|
||
RETURN: Carry clear
|
||
AX Integer result.
|
||
|
||
RETURN: Carry set
|
||
ArgumentErr Float not in range [-65535,65535]
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Converts the floating point operand pointed to by SI to a 16 bit unsigned integer in AX. The sign of the
|
||
float is ignored.
|
||
|
||
|
||
¢ LongToFloat Convert signed long to Float
|
||
AX:BX Signed long to be converted.
|
||
DI Pointer to destination float.
|
||
|
||
RETURN:
|
||
[DI]
|
||
|
||
|
||
PANIC: None
|
||
Converts the signed 32 bit integer in AX:BX to a float at DI.
|
||
|
||
|
||
¢ IntToFloat Convert signed integer to Float
|
||
AX Signed integer to be converted.
|
||
DI Pointer to destination float.
|
||
|
||
RETURN:
|
||
[DI]
|
||
|
||
|
||
PANIC: None
|
||
Converts the signed 16 bit integer in AX to a float at DI.
|
||
|
||
|
||
¢ UnsignedIintToFloat Convert unsigned integer to Float
|
||
AX Unsigned integer to be converted.
|
||
DI Pointer to destination float.
|
||
|
||
RETURN:
|
||
[DI]
|
||
|
||
|
||
PANIC: None
|
||
Converts the unsigned 16 bit integer in AX to a float at DI.
|
||
|
||
|
||
CHAPTER 15
|
||
|
||
|
||
FLOATING POINT FUNCTION INTERFACE
|
||
|
||
|
||
FloatASin Arcsine of a float
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Calculates the Arcsine in radians of a double argument in [SI] returning the result in [DI]. [SI] is
|
||
preserved unless SI equals DI.
|
||
|
||
|
||
FloatATan Arctangent of a float
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN: = Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Calculates the Arctangent in radians of a double argument in [SI] returning the result in [DI]. [SI] is
|
||
preserved unless SI equals DI.
|
||
|
||
|
||
FloatCos Cosine of a float
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN: = Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float, or argument not in range.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Calculates the Cosine in radians of a double argument in [SI] returning the result in [DI]. [SI] is preserved
|
||
unless SI equals DI.
|
||
|
||
|
||
15-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
FloatExp Exponentiation of a float
|
||
|
||
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float.
|
||
PANIC: None
|
||
|
||
|
||
Calculates the exponentiation of a double argument in [SI] returning the result in [DI]. [SI] is preserved
|
||
unless SI equals DI.
|
||
|
||
|
||
Floatint Zero fractional part of a Float
|
||
|
||
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float.
|
||
PANIC: None
|
||
|
||
|
||
Removes the fractional part of the float in [SI] and returns the result as a float in [DI]. [SI] is preserved
|
||
unless SI equals DI.
|
||
|
||
|
||
FloatLn Natural logarithm of a float
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float, or argument not greater than zero.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Calculates the Natural Logarithm of a double argument in [SI] returning the result in [DI]. [ST] is
|
||
preserved unless SI equals DI.
|
||
|
||
|
||
FloatLog Logarithm of a float
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float, or argument not greater than zero.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Calculates the Logarithm of a double argument in [SI] returning the result in [DI]. [SI] is preserved unless
|
||
ST equals DI.
|
||
|
||
|
||
15 -2
|
||
|
||
|
||
15 FLOATING POINT FUNCTION INTERFACE
|
||
|
||
|
||
FloatMod Modulo of a float
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
Dx Pointer to floating point modulo value.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float.
|
||
OverflowErr Integer overflow.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Calculates [SI] modulo [DX] returning the result in [DI]. The calculation is [DI] = [ST] -
|
||
FloatInt({[S1]/[DX])*[DX]. [SI] and [DX] is preserved unless SI or DX equals DI.
|
||
|
||
|
||
FloatPow Power of two Floats
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point base.
|
||
Dx Pointer to floating point power.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float, 040, or [SI]<<0O with [DI] not integral.
|
||
OverflowErr Integer overflow.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Calculates [SI] raised to the power of [DI] returning the result in [DI]. [SI] and [DX] are preserved unless
|
||
SI or DI equals DI.
|
||
|
||
|
||
FloatRand Float random number
|
||
|
||
|
||
DI Pointer to destination floating point number.
|
||
SI Pointer to unsigned long integer seed.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
None
|
||
PANIC: None
|
||
|
||
|
||
Generates a pseudo random number using the unsigned long integer seed in [SI] and returns the result in
|
||
[DI]. [SI] is preserved unless SI equals DI.
|
||
|
||
|
||
FloatSin Sine of a Float
|
||
|
||
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN:
|
||
RETURN: Carry clear
|
||
|
||
[DI]
|
||
RETURN: Carry Set
|
||
|
||
ArgumentErr Invalid float, or argument not in range.
|
||
PANIC: None
|
||
|
||
|
||
Calculates the Sine in radians of a double argument in [SI] returning the result in [DI]. [SI] is preserved
|
||
unless SI equals DI.
|
||
|
||
|
||
15-3
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
FloatSqrt Square root of a float
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
ArgumentErr Invalid float or argument less than 0.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Calculates the square root of a double argument in [SI] returning the result in [DI]. [SI] is preserved
|
||
unless SI equals DI.
|
||
|
||
|
||
FloatTangent Tangent of a float
|
||
DI Pointer to destination floating point operand.
|
||
SI Pointer to floating point function argument.
|
||
RETURN: Carry clear
|
||
[DI]
|
||
RETURN: Carry Set
|
||
OverflowErr Input argument equals PI/2.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Calculates the Tangent in radians of a double argument in [SI] returning the result in [DI]. [ST] is
|
||
preserved unless SI equals DI.
|
||
|
||
|
||
15-4
|
||
|
||
|
||
CHAPTER 16
|
||
|
||
|
||
CHARACTER MANAGEMENT
|
||
|
||
|
||
¢ CharlsDigit Character is a digit
|
||
|
||
|
||
AL The character to be tested.
|
||
RETURN:
|
||
|
||
Z flag = 0 If character is a digit.
|
||
|
||
Z flag = 1 If character is not a digit.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is a digit. This is a language dependent
|
||
service.
|
||
|
||
|
||
e CharlsHexDigit Character is a hexadecimal digit
|
||
AL The character to be tested.
|
||
|
||
RETURN:
|
||
Z flag = 0 If character is a hexadecimal digit.
|
||
Z flag = 1 If character is not a hexadecimal digit.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is a hexadecimal digit. This is a language
|
||
dependent service.
|
||
|
||
|
||
¢ CharlsPrintable Character is printable
|
||
AL The character to be tested.
|
||
|
||
RETURN:
|
||
Z flag = 0 If character is printable.
|
||
Z flag = 1 If character is not printable.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is printable. This is a language dependent
|
||
service.
|
||
|
||
|
||
¢ CharlsAlphabetic Character is alphabetic
|
||
AL The character to be tested.
|
||
|
||
RETURN:
|
||
Z flag = 0 If character is alphabetic.
|
||
Z flag = 1 If character is not alphabetic.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is alphabetic. This is a language
|
||
dependent service.
|
||
|
||
|
||
16-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
¢ CharlsAlphaNumeric
|
||
|
||
|
||
AL
|
||
RETURN:
|
||
Z flag = 0
|
||
Z flag = 1
|
||
PANIC: None
|
||
|
||
|
||
Character is alphabetic or digit
|
||
|
||
|
||
The character to be tested.
|
||
|
||
|
||
If character is alphanumeric.
|
||
|
||
|
||
If character is not alphanumeric.
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is alphanumeric. This is a language
|
||
|
||
|
||
dependent service.
|
||
|
||
|
||
« CharlsUpperCase
|
||
|
||
|
||
AL
|
||
RETURN:
|
||
Z flag = 0
|
||
Z flag =1
|
||
PANIC: None
|
||
|
||
|
||
Character is upper case
|
||
|
||
|
||
The character to be tested.
|
||
|
||
|
||
If character is upper case.
|
||
|
||
|
||
If character is not upper case.
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is upper case. This is a language
|
||
|
||
|
||
dependent service.
|
||
|
||
|
||
e CharlsLowerCase
|
||
|
||
|
||
AL
|
||
RETURN:
|
||
Z flag = 0
|
||
Z flag = 1
|
||
PANIC: None
|
||
|
||
|
||
Character is lower case
|
||
|
||
|
||
The character to be tested.
|
||
|
||
|
||
If character is lower case.
|
||
|
||
|
||
If character is not lower case.
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is lower case. This is a language
|
||
|
||
|
||
dependent service.
|
||
|
||
|
||
« CharlsSpace
|
||
|
||
|
||
AL
|
||
RETURN:
|
||
Z flag = 0
|
||
Z flag = 1
|
||
PANIC: None
|
||
|
||
|
||
Character is space
|
||
|
||
|
||
The character to be tested.
|
||
|
||
|
||
If character is space.
|
||
|
||
|
||
If character is not space.
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is a space. This is a language dependent
|
||
|
||
|
||
service.
|
||
|
||
|
||
e CharlsPunctuation
|
||
|
||
|
||
AL
|
||
RETURN:
|
||
Z flag = 0
|
||
Z flag = 1
|
||
PANIC: None
|
||
|
||
|
||
Character is punctuation
|
||
|
||
|
||
The character to be tested.
|
||
|
||
|
||
If character is punctuation.
|
||
|
||
|
||
If character is not punctuation.
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is punctuation. This is a language
|
||
|
||
|
||
dependent service.
|
||
|
||
|
||
16-2
|
||
|
||
|
||
e CharlsGraphic
|
||
|
||
|
||
AL
|
||
RETURN:
|
||
Z flag = 0
|
||
Z flag = 1
|
||
PANIC: None
|
||
|
||
|
||
16 CHARACTER MANAGEMENT
|
||
|
||
|
||
Character is graphic
|
||
|
||
|
||
The character to be tested.
|
||
|
||
|
||
If character is graphic.
|
||
|
||
|
||
If character is not graphic.
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is graphic. This is a language dependent
|
||
|
||
|
||
service.
|
||
|
||
|
||
e CharlsControl
|
||
|
||
|
||
AL
|
||
RETURN:
|
||
Z flag = 0
|
||
Z flag = 1
|
||
PANIC: None
|
||
|
||
|
||
Character is control
|
||
|
||
|
||
The character to be tested.
|
||
|
||
|
||
If character is control.
|
||
|
||
|
||
If character is not control.
|
||
|
||
|
||
Returns the flags set depending on whether the character in AL is control. This is a language dependent
|
||
|
||
|
||
service.
|
||
|
||
|
||
¢ CharToUpperChar
|
||
|
||
|
||
AL
|
||
AH
|
||
|
||
RETURN:
|
||
AL
|
||
AH
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Characters to upper case
|
||
|
||
|
||
A character to be converted.
|
||
|
||
|
||
A character to be converted.
|
||
|
||
|
||
Converted to upper case.
|
||
|
||
|
||
Converted to upper case.
|
||
|
||
|
||
Converts the characters in AH and AL to upper case. This is a language dependent service.
|
||
|
||
|
||
e CharToLowerChar
|
||
|
||
|
||
AL
|
||
AH
|
||
|
||
RETURN:
|
||
AL
|
||
AH
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Characters to lower case
|
||
|
||
|
||
A character to be converted.
|
||
|
||
|
||
A character to be converted.
|
||
|
||
|
||
Converted to lower case.
|
||
|
||
|
||
Converted to lower case.
|
||
|
||
|
||
Converts the characters in AH and AL to lower case. This is a language dependent service.
|
||
|
||
|
||
e CharToFoldedChar
|
||
|
||
|
||
AL
|
||
AH
|
||
|
||
RETURN:
|
||
AL
|
||
AH
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Characters to folded characters
|
||
|
||
|
||
A character to be folded.
|
||
A character to be folded.
|
||
|
||
|
||
Folded.
|
||
Folded.
|
||
|
||
|
||
Folds the characters in AH and AL. This is a language dependent service.
|
||
|
||
|
||
CHAPTER 17
|
||
|
||
|
||
BUFFER MANAGEMENT
|
||
|
||
|
||
¢ BufferCopy Copy one buffer to another
|
||
DS:SI Pointer to source buffer.
|
||
ES:DI Pointer to target buffer.
|
||
CX Number of bytes to copy.
|
||
|
||
|
||
RETURN: None
|
||
|
||
PANIC: None
|
||
|
||
Copies CX bytes of data from the source buffer to the target buffer.
|
||
|
||
The service is optimised to perform the copy in words. If the target buffer pointer is greater than the
|
||
|
||
|
||
source buffer pointer, the copy will be done backwards so as to avoid the possibility of corrupting the
|
||
source buffer during the copy. In most cases it is better to use the REP MOVSW 80C86 instruction.
|
||
|
||
|
||
¢ BufferSwap Swap the contents of two buffers
|
||
DS:SI Pointer to one of the buffers.
|
||
ES:DI Pointer to the other buffer.
|
||
CX The number of bytes to swap.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Swap the contents of the two buffers pointed to by SI and DI. CX bytes of data will be swapped. This
|
||
service is optimised to use words.
|
||
|
||
|
||
¢ BufferCompare Compare one buffer with another
|
||
DS:SI Pointer to left operand buffer.
|
||
ES:DI Pointer to right operand buffer.
|
||
CX Number of bytes in the left operand.
|
||
BX Number of bytes in the right operand.
|
||
RETURN:
|
||
Flags < 0 If [SY] < [DI]
|
||
Flags = 0 If [SI] = [DI]
|
||
Flags > 0 If [SY] > [DI]
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Compares two buffers for equality. The flags are set in the same way as for a normal compare for integers,
|
||
i.e. CMP [DI], [SI] but only sets the flags such that the unsigned comparisons can be used. The signed
|
||
comparisons such as JAE etc. will lead to unpredictable results. This service makes the comparison
|
||
dependent on the case.
|
||
|
||
|
||
17-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
« BufferCompareFolded Compare a buffer with another folded
|
||
DS:SI Pointer to left operand buffer.
|
||
ES:DI Pointer to right operand buffer.
|
||
cx Number of bytes in the left operand.
|
||
BX Number of bytes in the right operand.
|
||
RETURN:
|
||
Flags < 0 If [SI] < [DI]
|
||
Flags = 0 If [SI] = [DI]
|
||
Flags > 0 If [SI] > [DI]
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Compares two buffers for equality. The flags are set in the same way as for a normal compare for integers,
|
||
i.e. CMP [DI], [SI] but only sets the flags such that the unsigned comparisons can be used. The signed
|
||
comparisons such as JAE etc. will lead to unpredictable results.
|
||
|
||
|
||
This service is case independent and is language dependent.
|
||
|
||
|
||
« BufferLocate Locate a character in a buffer
|
||
AH The character to be located.
|
||
DS:SI Pointer to the buffer to be searched.
|
||
cx The number of bytes in the buffer to be searched.
|
||
RETURN: Carry clear
|
||
AX Index of the character in the string.
|
||
RETURN: Carry set
|
||
AL undefined Character is not in the string.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Locates the character in AH in the buffer pointed to by SI. CX bytes of the buffer will searched. If the
|
||
character is located then the index into the buffer is returned in AX. The index of the first character in the
|
||
buffer is 0.
|
||
|
||
|
||
This service is case dependent.
|
||
|
||
|
||
« BufferLocateFolded Locate a character in a buffer folded
|
||
AH The character to be located.
|
||
DS:SI Pointer to the buffer to be searched.
|
||
CX The number of bytes in the buffer to be searched.
|
||
RETURN: Carry clear
|
||
AX Index of the character in the string.
|
||
RETURN: Carry set
|
||
AL undefined Character is not in the string.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Locates the character in AH in the buffer pointed to by SI. CX bytes of the buffer will searched. If the
|
||
character is located then the index into the buffer is returned in AX. The index of the first character in the
|
||
buffer is 0.
|
||
|
||
|
||
This service is case independent.
|
||
|
||
|
||
17-2
|
||
|
||
|
||
e BufferSubBuffer
|
||
|
||
|
||
DS:SI
|
||
ES:DI
|
||
cx
|
||
BX
|
||
|
||
RETURN: Carry clear
|
||
AX
|
||
|
||
RETURN: Carry set
|
||
AL undefined
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
17 BUFFER MANAGEMENT
|
||
|
||
|
||
Find a sub-buffer in a buffer
|
||
|
||
|
||
Pointer to the buffer to be searched.
|
||
|
||
Pointer to the buffer to be located.
|
||
|
||
The number of bytes in buffer being searched.
|
||
The number of bytes in sub-buffer.
|
||
|
||
|
||
Offset of the sub-buffer within the buffer.
|
||
|
||
|
||
Sub-buffer not found.
|
||
|
||
|
||
Locates a buffer as a sub-buffer within another buffer.
|
||
|
||
|
||
If the buffer pointed to by DI and of length BX is a sub-buffer of the buffer pointed to by SI and of length
|
||
CX, then the service returns the index of the first occurrence of the sub-buffer within the buffer pointed to
|
||
by SI and with the carry flag clear. The index of the first character in the buffer is 0. If the buffer is not a
|
||
sub-buffer, then the service returns the carry flag set.
|
||
|
||
|
||
This service is case dependent.
|
||
|
||
|
||
- BufferSubBufferFolded Find a sub-buffer in a buffer folded
|
||
|
||
|
||
DS:SI Pointer to the buffer to be searched.
|
||
|
||
ES:DI Pointer to the buffer to be located.
|
||
|
||
cx The number of bytes in buffer being searched.
|
||
|
||
BX The number of bytes in sub-buffer.
|
||
RETURN: Carry clear
|
||
|
||
AX Offset of the sub-buffer in the buffer.
|
||
|
||
|
||
RETURN: Carry set
|
||
AL undefined.
|
||
PANIC: None
|
||
|
||
|
||
Locates a buffer as a sub-buffer within another buffer.
|
||
|
||
|
||
Sub-buffer not found.
|
||
|
||
|
||
If the buffer pointed to by DI and of length BX is a sub-buffer of the buffer pointed to by SI and of length
|
||
CX, then the service returns the index of the first occurrence of the sub-buffer within the buffer pointed to
|
||
by SI, and with the carry flag clear. The index of the first character in the buffer is 0. If the buffer is not a
|
||
sub-buffer, then the service returns the carry flag set.
|
||
|
||
|
||
This service is case independent.
|
||
|
||
|
||
- BufferMatch Match a wild card buffer
|
||
|
||
|
||
DS:SI Pointer to the buffer to be searched.
|
||
|
||
CX Length of the buffer to be searched.
|
||
|
||
ES:DI Pointer to the wild card match buffer.
|
||
|
||
Dx Length of the match buffer.
|
||
RETURN: Carry clear
|
||
|
||
Match
|
||
|
||
|
||
RETURN: = Carry set
|
||
AL undefined
|
||
|
||
PANIC: None
|
||
|
||
Search a buffer for a match with the supplied wild card buffer.
|
||
|
||
|
||
No match.
|
||
|
||
|
||
17 -3
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
If the wild card buffer matches then the service will return with carry clear. If the wild card buffer does
|
||
not match then the service will return with carry set. The matchany character will match any set of
|
||
characters. The MatchSingle character will match any single character.
|
||
|
||
|
||
This service is case dependent.
|
||
|
||
|
||
- BufferMatchFolded Match a wild card buffer folded
|
||
|
||
|
||
DS:SI Pointer to the buffer to be searched.
|
||
cx Length of the buffer to be searched.
|
||
ES:DI Pointer to the wild card match buffer.
|
||
Dx Length of the match buffer.
|
||
RETURN: Carry clear
|
||
Match
|
||
RETURN: = Carry set
|
||
AL undefined No match.
|
||
|
||
|
||
PANIC: None
|
||
Search a buffer for a match with the supplied wild card buffer.
|
||
|
||
|
||
If the wild card buffer matches then the service will return with carry clear. If the wild card buffer does
|
||
not match then the service will return with carry set. The Matchany character will match any set of
|
||
characters. The MatchSingle character will match any single character.
|
||
|
||
|
||
This service is case independent.
|
||
|
||
|
||
- BufferJustify Justify a buffer
|
||
|
||
|
||
DS:SI Pointer to the buffer to be justified.
|
||
Cx Length of the buffer to be justified.
|
||
ES:DI Pointer to the target buffer.
|
||
BX Length of the target buffer.
|
||
DL JustifyLeft OF JustifyCentre Of JustifyRight.
|
||
DH The fill character.
|
||
RETURN:
|
||
AX Points to the character after the last byte copied to the target buffer.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Justifies a source buffer DS:SI of length CX into a target buffer ES:DI of length BX using the justification
|
||
method passed in DL and the fill character passed in DH. If BX is negative, then BX bytes are just copied
|
||
to the target buffer. If DL is not one of the 3 options then the left justified method will be used by default.
|
||
|
||
|
||
17-4
|
||
|
||
|
||
CHAPTER 18
|
||
|
||
|
||
STRING MANAGEMENT
|
||
|
||
|
||
¢ StringCopy Copy one string to another
|
||
DS:SI Pointer to source string.
|
||
ES:DI Pointer to target string.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
Copies the source string to the target string.
|
||
|
||
|
||
¢ StringCopyFolded Copy one string to another folded
|
||
DS:SI Pointer to source string.
|
||
ES:DI Pointer to target string.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
Copies the source string to the target string. Characters are folded as they are copied.
|
||
|
||
|
||
¢ StringConvertToFolded Convert a string to folded
|
||
|
||
|
||
DS:SI Pointer to string to be folded.
|
||
RETURN: None
|
||
PANIC: None
|
||
Converts the string pointed to by SI to folded.
|
||
|
||
|
||
¢ StringCapitalise Capitalise a string
|
||
|
||
|
||
DS:SI Pointer to string to be capitalised.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Converts the string pointed to by SI so that the first letter is uppercase and the remaining characters are
|
||
lowercase.
|
||
|
||
|
||
e StringCompare Compare one string with another
|
||
DS:SI Pointer to left operand string.
|
||
ES:DI Pointer to right operand string.
|
||
RETURN:
|
||
Flags < 0 If [SY] < [DI]
|
||
Flags = 0 If [SI] = [DI]
|
||
Flags > 0 If [ST] > [DI]
|
||
|
||
|
||
PANIC: None
|
||
Compares two strings for equality.
|
||
|
||
|
||
18-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
The flags are set in the same way as for a normal compare for integers, i.e. CMP [DI], [SI], but only sets
|
||
the flags such that the unsigned comparisons can be used. The signed comparisons such as JAE etc. will
|
||
lead to unpredictable results.
|
||
|
||
|
||
This service is case dependent.
|
||
|
||
|
||
¢ StringCompareFolded Compare a string with another folded
|
||
DS:SI Pointer to left operand string.
|
||
ES:DI Pointer to right operand string.
|
||
RETURN:
|
||
Flags < 0 If [SI] < [DI]
|
||
Flags = 0 If [ST] = [DI]
|
||
Flags > 0 If [ST] > [DI]
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Compares two strings for equality.
|
||
|
||
|
||
The flags are set in the same way as for a normal compare for integers, i.e. CMP [DI], [SI], but only sets
|
||
the flags such that the unsigned comparisons can be used. The signed comparisons such as JAE etc. will
|
||
lead to unpredictable results.
|
||
|
||
|
||
This service is case independent and language dependent.
|
||
|
||
|
||
¢ StringMatch Match a wild card string
|
||
|
||
|
||
DS:SI Pointer to the string to be searched.
|
||
ES:DI Pointer to the wild card match string.
|
||
RETURN: Carry clear
|
||
Match
|
||
RETURN: = Carry set
|
||
AL undefined No match.
|
||
PANIC: None
|
||
Search a string for a match with the supplied wild card string.
|
||
If the wild card string matches then the service will return with carry clear. If the wild card string does not
|
||
|
||
|
||
match then the service will return with carry set. The mat chany character will match any set of characters.
|
||
The matchSingle character will match any single character.
|
||
|
||
|
||
This service is case dependent.
|
||
|
||
|
||
¢ StringMatchFolded Match a wild card string folded
|
||
|
||
|
||
DS:SI Pointer to the string to be searched.
|
||
ES:DI Pointer to the wild card match string.
|
||
RETURN: Carry clear
|
||
Match
|
||
RETURN: = Carry set
|
||
AL undefined. No match.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Search a string for a match with the supplied wild card string.
|
||
|
||
|
||
If the wild card string matches then the service will return with carry clear. If the wild card string does not
|
||
match then the service will return with carry set. The mat chany character will match any set of characters.
|
||
The matchsingle character will match any single character.
|
||
|
||
|
||
This service is case independent.
|
||
|
||
|
||
18 -2
|
||
|
||
|
||
18 STRING MANAGEMENT
|
||
|
||
|
||
« StringLocate Locate a character in a string
|
||
AH The character to be located.
|
||
DS:SI Pointer to the string to be searched.
|
||
RETURN: Carry clear
|
||
AX Index of the character in the string.
|
||
RETURN: Carry set
|
||
AL undefined Character is not in the string.
|
||
|
||
|
||
PANIC: None
|
||
Locates the character in AH within the string pointed to by SI.
|
||
|
||
|
||
If the character is located then the index into the string is returned in AX. The index of the first character
|
||
in the string is 0.
|
||
|
||
|
||
This service is case dependent.
|
||
|
||
|
||
¢ StringLocateFolded Locate a character in a string folded
|
||
AH The character to be located.
|
||
DS:SI Pointer to the string to be searched.
|
||
RETURN: Carry clear
|
||
AX Index of the character in the string.
|
||
RETURN: Carry set
|
||
AL undefined Character is not in the string.
|
||
|
||
|
||
PANIC: None
|
||
Locates the character in AH within the string pointed to by SI.
|
||
|
||
|
||
If the character is located then the index into the string is returned in AX. The index of the first character
|
||
in the string is 0.
|
||
|
||
|
||
This service is case independent.
|
||
|
||
|
||
¢ StringLocatelnReverse Locate a character in reverse
|
||
AH The character to be located.
|
||
DS:SI Pointer to the string to be searched.
|
||
RETURN: Carry clear
|
||
AX Index of the character in the string.
|
||
RETURN: Carry set
|
||
AL undefined Character is not in the string.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Locates the character in AH within the string pointed to by SI in reverse order.
|
||
|
||
|
||
If the character is located then the index into the string is returned in AX. The index of the first character
|
||
in the string is 0.
|
||
|
||
|
||
This service is case dependent.
|
||
|
||
|
||
¢ StringLocatelnReverseFolded Locate char’ in reverse folded
|
||
AH The character to be located.
|
||
DS:SI Pointer to the string to be searched.
|
||
|
||
RETURN: Carry clear
|
||
AX Index of the character in the string.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
RETURN: Carry set
|
||
AL undefined Character is not in the string.
|
||
PANIC: None
|
||
|
||
|
||
Locates the character in AH within the string pointed to by SI in reverse order.
|
||
|
||
|
||
If the character is located then the index into the string is returned in AX. The index of the first character
|
||
in the string is 0.
|
||
|
||
|
||
This service is case independent.
|
||
|
||
|
||
¢ StringSubString Find a substring in a string
|
||
DS:SI Pointer to the string to be searched.
|
||
ES:DI Pointer to the string to be located.
|
||
RETURN: Carry clear
|
||
AX Offset of the substring in the string.
|
||
RETURN: Carry set
|
||
AL undefined Substring not found.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Locates a string as a substring within another string.
|
||
|
||
|
||
If the string pointed to by DI is a substring of the string pointed to by SI, then the service returns the index
|
||
of the first occurrence of the substring; the carry flag is clear. The index of the first character in the string
|
||
is 0.
|
||
|
||
|
||
If the string is not a substring, then the service returns with the carry flag set.
|
||
|
||
|
||
This service is case dependent.
|
||
|
||
|
||
¢ StringSubStringFolded Find a substring in a string folded
|
||
|
||
|
||
DS:SI Pointer to the string to be searched.
|
||
|
||
ES:DI Pointer to the string to be located.
|
||
RETURN: Carry clear
|
||
|
||
AX Offset of the substring in the string.
|
||
RETURN: Carry set
|
||
|
||
AL undefined Substring not found.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Locates a string as a substring within another string.
|
||
|
||
|
||
If the string pointed to by DI is a substring of the string pointed to by SI, then the service returns the index
|
||
of the first occurrence of the substring; the carry flag is clear. The index of the first character in the string
|
||
is 0.
|
||
|
||
|
||
If the string is not a substring, then the service returns with the carry flag set.
|
||
|
||
|
||
This service is case independent and language dependent.
|
||
|
||
|
||
¢ StringLength Length of a string
|
||
|
||
|
||
ES:DI Pointer to the string whose length is to be found.
|
||
RETURN:
|
||
AX The length of string.
|
||
|
||
|
||
PANIC: None
|
||
Returns the length of the string pointed to by DI excluding the terminating zero.
|
||
|
||
|
||
18-4
|
||
|
||
|
||
18 STRING MANAGEMENT
|
||
|
||
|
||
¢ StringValidateName Validate a system name
|
||
AL Maximum number of characters in the name allowed in the name.
|
||
AH Non 0 - An extension is valid.
|
||
|
||
|
||
0 - An extension is invalid.
|
||
ES:DI Pointer to the string to be validated.
|
||
RETURN: Carry clear
|
||
String is valid.
|
||
RETURN: = Carry set
|
||
NameErr String is not valid.
|
||
PANIC: None
|
||
Validates that the string at DI points to a valid system name.
|
||
|
||
|
||
An extension is only allowed if AH is non zero. AL specifies the number of characters that can be in the
|
||
name before the period.
|
||
|
||
|
||
The BNF for a valid name is as follows:
|
||
|
||
|
||
ANY := ALPHA | DIGIT | $ | _
|
||
NAME := ALPHA [ [ANY]*7 [. [ANY]*3 ]]
|
||
|
||
|
||
18-5
|
||
|
||
|
||
CHAPTER 19
|
||
|
||
|
||
GENERAL MANAGEMENT
|
||
|
||
|
||
Version numbers
|
||
|
||
|
||
A version number is a 16 bit integer. If the 16 bit integer is converted to 4 hex digits, i.e. XY YZ, then the
|
||
version is:
|
||
|
||
|
||
X.YYZ
|
||
|
||
|
||
where X is the major release number, YY is the minor release number and Z is the version type. The
|
||
version type may have three values.
|
||
|
||
|
||
e A- Alpha release.
|
||
e 6B - Beta release.
|
||
e F - Final release.
|
||
|
||
|
||
Thus a typical version number 0x100f would be 1.00F.
|
||
|
||
|
||
GenVersion Get the operating system version number
|
||
None
|
||
|
||
RETURN:
|
||
AX The operating system version number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the operating system version number as a 16 bit integer.
|
||
|
||
|
||
GenRomVersion Get the ROM version number
|
||
None
|
||
|
||
RETURN:
|
||
AX The ROM version number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the ROM version number.
|
||
|
||
|
||
The operating system is never released on its own and is always supplied with a number of files in its built
|
||
in ROM disk. The tool which builds the operating system together with the ROM disk allows a version
|
||
number to be specified. This service can be used to retrieve the version number so specified.
|
||
|
||
|
||
19-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
GenLcdType Get the system LCD type
|
||
|
||
|
||
None
|
||
RETURN:
|
||
AL The LCD type.
|
||
PANIC: None
|
||
Returns the system LCD type. The various types are defined in epocdefs.inc.
|
||
|
||
|
||
GenStartReason Get the system cold start reason
|
||
None
|
||
|
||
RETURN:
|
||
AL The cold start reason.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the system cold start reason. The operating system can perform a cold start for five reasons:
|
||
e Initialise; system RAM is invalid.
|
||
e Power fail; the system was forced to power down, but RAM is still valid.
|
||
e Reset; the user requested a reset, but RAM is still valid.
|
||
e =Kernel fault; a serious fault occurred while executing in the operating system kernel.
|
||
|
||
|
||
e New OSS restart; a new operating system has been programmed into the flash memory and a
|
||
restart has occurred.
|
||
|
||
|
||
The shell on first starting up should request the cold start reason and if it is not an initialise it should
|
||
inform the user of the reason for the cold start.
|
||
|
||
|
||
« GenDataSegment Get the operating system data segment
|
||
None
|
||
|
||
RETURN:
|
||
ES The operating system data segment.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the operating system's data segment address. This service is reserved for use by system utilities.
|
||
|
||
|
||
GenGetCountryData Get the country data
|
||
|
||
|
||
BX Pointer to a cDataEnt structure.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Returns the country dependent data currently installed. The operating system on start-up copies the
|
||
country dependent data from the configuration file into RAM so that the GensetcountryData can be
|
||
called to update the information.
|
||
|
||
|
||
GenSetCountryData Set the country data
|
||
|
||
|
||
ES:BX Pointer to a cDataEnt structure.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Sets the country dependent data. The source of the data is the cbat arnt structure pointed to by ES:BX.
|
||
|
||
|
||
19-2
|
||
|
||
|
||
19 GENERAL MANAGEMENT
|
||
|
||
|
||
GenGetOsData Get the O/S data
|
||
|
||
|
||
DI Pointer to a buffer to receive the data.
|
||
SI Offset in the operating system data space.
|
||
cx The number of bytes to be copied.
|
||
|
||
|
||
RETURN: None
|
||
|
||
PANIC: None
|
||
|
||
Copies data from the operating system's data space to the buffer provided.
|
||
|
||
All operating system handles are the actual address in the operating system data space of the appropriate
|
||
control entry. For example, the handle returned by the Filzxecute service is the address in the operating
|
||
|
||
|
||
system data space of the z_proc process control entry. By fetching this data, a program can determine
|
||
many things about the state of a process.
|
||
|
||
|
||
GenGetErrorText Get error text
|
||
AL The error number.
|
||
BX Pointer to a buffer to receive the error text.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Returns the text associated with an error number.
|
||
|
||
|
||
The buffer pointed to by BX must be MaxErrorTextsize in length. If AL is not negative or it contains an
|
||
error unknown to the operating system, then "Unknown error [-xx]" will be returned where xx is the
|
||
unknown error number.
|
||
|
||
|
||
This is a language dependent service.
|
||
|
||
|
||
e Dummy Dummy service
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service provides a means for generating a call to a known location in the operating system. It is used
|
||
mainly for debugging the operating system. The service itself does nothing at all.
|
||
|
||
|
||
GenParse Generic file name parser
|
||
|
||
|
||
BX Pointer to a GenParseEnt Structure.
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
NameErr Invalid name.
|
||
PANIC: None
|
||
|
||
|
||
This service provides a generic parse service which can be used to parse file names.
|
||
|
||
|
||
This service should not be confused with the rilparse service. FilParse Calls the file server which in
|
||
turn calls a file system to parse the file name and this will always be successful, assuming that the file
|
||
name obeys the naming rules for the target file system.
|
||
|
||
|
||
This service can only parse generic MSDOS like file names. The generic parser considers a file name to
|
||
consist of up to five components:
|
||
|
||
|
||
SystemName Drive Path Name Extension
|
||
A SystemName consists of a FileSystemName followed by two ':'s.
|
||
|
||
|
||
A Drive consists of a DriveName followed by DriveSeparator.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
A Path consists of a PathSeparator followed by zero or more DirectoryName PathSeparator pairs.
|
||
An Extension consists of an ExtensionSeparator followed by an ExtensionName.
|
||
|
||
|
||
The GenParseEnt structure allows a single character to be specified for each of the separators and the
|
||
maximum size for each of the four components. Note that the maximum size of a component includes any
|
||
separators. Note also that the SystemName separator of two ':'s cannot be specified.
|
||
|
||
|
||
For MSDOS filing systems, the values which should be loaded into the structure are as follows:
|
||
|
||
|
||
GenParseDeviceSeparator= ':'
|
||
GenParsePathSeparator= '\'
|
||
GenParseExtSeparator =
|
||
GenParseMaxDeviceSize= 2
|
||
|
||
GenParseMaxPathSize = 64
|
||
GenParseMaxNameSize = 8
|
||
|
||
|
||
vot
|
||
|
||
|
||
GenParseMaxExtSize = 4
|
||
|
||
|
||
The remaining fields of the structure specify pointers to three input names, a pointer to the output buffer
|
||
and a pointer to a FullParseEnt Structure.
|
||
|
||
|
||
Parsing is effected as follows. The three input strings are prioritised in the order
|
||
GenParseSourceNamePtr,GenParseRelatedNamePtr and GenParseDefaultsPtr. Each of these input
|
||
strings is parsed into its four components (some of which may be missing). The resulting string is built by
|
||
taking components from the first string. Any missing components are filled in from the second string
|
||
(where they exist). Any components still missing are filled in from the third string. Thus, if the "source"
|
||
string does not have a drive, but the "related" string does, then the resulting name will use the drive as
|
||
specified in the "related" string.
|
||
|
||
|
||
When the resulting string has been built, the size of each component is put into the FullParseEnt
|
||
structure.
|
||
|
||
|
||
Finally, the name and extension components are examined for the wild card characters '?' and '*' and, if
|
||
found, the parseWildName and ParseWildext flags are set appropriately in the
|
||
|
||
FullParseEnt .FullParseFlags field. If either parsewildName Of ParseWildExt is set then ParseWildAny
|
||
is also set.
|
||
|
||
|
||
GenDeferredMode Set deferred mode
|
||
|
||
|
||
AL 0 - Increment deferred mode.
|
||
Non 0 - Decrement deferred mode
|
||
RETURN: None
|
||
PANIC: None
|
||
This service only applies to the MC version of the operating system and can be used to defer some of the
|
||
|
||
|
||
work which is performed in the 32Hz. tick interrupt.
|
||
|
||
|
||
Calling the service with AL equal to zero will defer keyboard and mouse polling, parallel I/O polling and
|
||
the piezo sound system. This has the additional benefit of stopping the serial channel from being
|
||
temporarily diverted by the tick interrupt service routines. Normal operation can be resumed by calling
|
||
this service with AL set to a non zero value.
|
||
|
||
|
||
If the tick interrupt overhead must be reduced further then the anti-nesting flag can be incremented. This
|
||
is a byte at address 0438h in the operating system data space. While this flag is set, only the time is kept
|
||
up to date but be warned, pre-emptive multi tasking is disabled as are all timer services.
|
||
|
||
|
||
GenNotify Notify by text
|
||
|
||
|
||
BX Pointer to the first message.
|
||
|
||
cx Pointer to the second message or zero.
|
||
Dx Pointer to the first option or zero.
|
||
|
||
DI Pointer to the second option or zero.
|
||
SI Pointer to the third option or zero.
|
||
|
||
|
||
19-4
|
||
|
||
|
||
19 GENERAL MANAGEMENT
|
||
|
||
|
||
RETURN: Carry clear
|
||
AL 0 - First option chosen by the user.
|
||
1 - Second option chosen by the user
|
||
2 - Third option chosen by the user.
|
||
RETURN: Carry set
|
||
FailErr No notify process running.
|
||
PANIC: None
|
||
This service will send a message to the notification process and await the result from the notifier,
|
||
returning the result in AL. If a notifier is not currently running then railerr will be returned.
|
||
|
||
|
||
BX and CX specify two zero terminated text messages which will be displayed by the notifier process.
|
||
Each string can be up to MaxNot ifyTextSize in length including the zero terminator. CX can be
|
||
optionally zero, in which case the second message line will be blank.
|
||
|
||
|
||
DX, DI and SI specify up to three options which the user may select. The selected option is returned in AL
|
||
and will be 0 if the DX option is chosen, 1| if the DI option is chosen and 2 if the SI option is chosen. By
|
||
convention, if all the options are specified as 0 then this is the same as having DX point to an option of
|
||
"CONTINUE". Each option string can be up to MaxOptionTextSize in length including the zero
|
||
terminator. Finally if DI is 0 then SI should also be 0.
|
||
|
||
|
||
The presentation of the notifier depends on the process which has hooked the notify interface.
|
||
|
||
|
||
GenNotifyError Notify by error number
|
||
AL The error number to be notified.
|
||
BX Pointer to the first message.
|
||
Dx Pointer to the first option or zero.
|
||
DI Pointer to the second option or zero.
|
||
SI Pointer to the third option or zero.
|
||
RETURN: Carry clear
|
||
AL 0 - First option chosen by the user.
|
||
|
||
|
||
1 - Second option chosen by the user.
|
||
2 - Third option chosen by the user.
|
||
RETURN: Carry set
|
||
FailErr No notify process running.
|
||
PANIC: None
|
||
This service first calls GenGetErrorText using AL as the parameter and then calls the GenNot ify service
|
||
|
||
|
||
with CX pointing to the resultant error text, all other registers being the same.
|
||
|
||
|
||
Only error numbers catered for by the configuration file should be notified using this service. It is
|
||
reasonable to expect that all errors returned by the operating system can be notified with this service.
|
||
|
||
|
||
GenNotifyHook Hook the notify interface
|
||
|
||
|
||
BX The message number.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: = Carry set
|
||
FailErr Notify interface already hooked.
|
||
PANIC: None
|
||
This service allows a process to get a message in response to calls by all other processes to the GenNotify
|
||
|
||
|
||
and GenNotifyError Services.
|
||
|
||
|
||
The message will be delivered with the message number specified in BX and the message buffer will
|
||
contain 5 words. The 5 words will consist of the 5 parameters to the GenNotify service in the order BX,
|
||
CX, DX, DI and SI. Note that as 5 words need to be delivered, a process which hooks the notify interface
|
||
should initialise messaging using the MessInit service with a size of at least 10 in BL.
|
||
|
||
|
||
19-5
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
The text string pointed to by the 5 parameters can be fetched from the requesting process using the
|
||
ProcCopyFromBylId service. The result should be returned in CX when the MessFree service is called to
|
||
give the result of the notification.
|
||
|
||
|
||
A process which has hooked the notify interface should not call either the Gennot ify or the
|
||
GenNotifyError services as it would then try and send itself a message, resulting in a lock up situation. It
|
||
is probably wise for the process to disable file server notifies for itself by calling the GensetNotifystate
|
||
to off, as it might be waiting for a file request to complete when the file server sends a notify message,
|
||
resulting in lock up.
|
||
|
||
|
||
If the process which has hooked the notify interface either exits or is panicked, then the supervisor will
|
||
automatically free the interface so that another process can hook it.
|
||
|
||
|
||
GenNotifyUnHook Unhook the notify interface
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC:
|
||
PanicGenl Process does not have the interface hooked.
|
||
|
||
|
||
This service will release the notify interface provided the process calling this service already has the
|
||
interface hooked. If not, then the process will be panicked.
|
||
|
||
|
||
GenGetRamSizelnParas Get addressable system RAM size
|
||
None
|
||
|
||
RETURN:
|
||
AX Size of system ram in paragraphs.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the size, in paragraphs, of the currently addressable system RAM. On machines containing more
|
||
than 512 kilobytes of RAM, this is not the same as the total amount of RAM that is fitted in the machine.
|
||
|
||
|
||
GenGetCommandLine Get the command line
|
||
None
|
||
|
||
RETURN:
|
||
AX Pointer to the command line or 0.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns a pointer to the command line.
|
||
|
||
|
||
The command line is a memory cell in the heap and can be freed if required with HeaprreeCell.
|
||
Processes can also be started with no command line in which case this service will return 0.
|
||
|
||
|
||
The address of the command line is also stored in the global variable ps: [Dat acommandPtr]. If the
|
||
command line is freed then, for consistency, this global variable should be set to 0.
|
||
|
||
|
||
The structure of the command line is a zero terminated string which contains the full path name used to
|
||
start the process. This can be used to find other files associated with the process being run or to open the
|
||
image file in order to access either added files or added DYLs.
|
||
|
||
|
||
After the 0 of the zero terminated string is a leading byte string containing any arguments for the process.
|
||
The string is leading byte counted so that binary arguments can be passed to programs. If the rFilExecute
|
||
service 1s called with CX equal to 0 then no command line is passed. This should only be used to execute
|
||
programs with no heap, since they obviously have nowhere to store the command line. It is preferable to
|
||
have CX pointing to a string containing just the zero terminator.
|
||
|
||
|
||
19 -6
|
||
|
||
|
||
19 GENERAL MANAGEMENT
|
||
|
||
|
||
GenGetSoundFlags Get the sound flags
|
||
|
||
|
||
None
|
||
RETURN:
|
||
AX The sound flags.
|
||
PANIC: None
|
||
This service returns the current setting in the sound flags. The bits in the sound flags are as follows:
|
||
|
||
|
||
@® SoundKeyboardEnable - If set, will enable keyboard clicks.
|
||
|
||
® SoundBuzzerEnable - If set, will enable the piezo sound system.
|
||
@® SoundDeviceEnable - If set, will enable the SND: device driver.
|
||
@ SoundLoud - If set, will make the piezo sound louder.
|
||
|
||
® SoundDisable - If set, will disable all sound in the system.
|
||
|
||
|
||
GenSetSoundFlags Set the sound flags
|
||
|
||
|
||
BX The new sound flags.
|
||
RETURN: None
|
||
PANIC: None
|
||
This service sets the sound flags to the value in BX. The bits in the sound flags are as follows:
|
||
|
||
|
||
® SoundKeyboardEnable - If set, will enable keyboard clicks.
|
||
|
||
@ SoundBuzzerEnable - If set, will enable the piezo sound system.
|
||
|
||
@ SoundDeviceEnable - If set, will enable the SND: device driver.
|
||
|
||
@ SoundLoud - If set, will make the piezo sound louder.
|
||
|
||
® SoundDisable - If set, will disable all sound in the system.
|
||
|
||
GenSound Make sound with the piezo
|
||
|
||
BX The duration of the sound in ticks.
|
||
cx The pitch of the sound.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service will make a sound through the piezo for the duration specified in BX ticks and at the pitch
|
||
specified in CX. The pitch can be calculated as (512/CX) KHz. The piezo uses very little power and is an
|
||
easy way of generating sound, although it is quite soft. If greater sound complexity, or a louder sound is
|
||
required then the SND: device driver can be used.
|
||
|
||
|
||
Access to this service is controlled by a semaphore which has been pre-counted with 1. When service is
|
||
requested, the semaphore is waited on and when completed the sound request is run. The service then
|
||
returns to the process requesting the service. When the duration elapses, the semaphore is signalled,
|
||
allowing the next service request to be processed. The effect of the above, assuming the piezo is not
|
||
already in use, is that the first call to this service will complete immediately allowing the application to go
|
||
about its business, but subsequent calls will wait until the current request is completed. If multiple
|
||
processes make requests on this service, they are run on a first come first served basis.
|
||
|
||
|
||
GenMarkActive Mark a process as active
|
||
|
||
|
||
None
|
||
|
||
RETURN: None
|
||
|
||
PANIC: None
|
||
|
||
This service informs the operating system that the process invoking this service is to be considered active.
|
||
The operating system has the ability to auto switch off if no activity takes place within a certain length of
|
||
|
||
|
||
time. Activity is considered to be a context switch to a process which has been marked active, 1.e.
|
||
whenever the process executes, the timer controlling the auto switch off will be reset.
|
||
|
||
|
||
19-7
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
By default, all processes, when first created, are marked as active so that this service does not need to be
|
||
called unless the GenMarkNonAct ive service has been called.
|
||
|
||
|
||
GenMarkNonActive Mark a process as non-active
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service will inform the operating system that the process invoking this service is not to be considered
|
||
active.
|
||
|
||
|
||
The operating system has the ability to auto switch off if no activity takes place within a certain length of
|
||
time. Activity is considered to be a context switch to a process which has been marked active. Hence
|
||
marking a process as non-active will ensure that whenever the process executes, the timer controlling the
|
||
auto switch off will not be reset.
|
||
|
||
|
||
By default all processes, when first created, are marked as active so that this service must be called if the
|
||
process is not to be considered as active. All servers must mark themselves as non-active, since they only
|
||
execute when required by clients and the status of the client will determine activity or not. Thus if a client
|
||
of the file server is non-active and requests some file activity, it will not be considered as activity because
|
||
the file server is also marked as non-active. However if the client is active then by virtue of making the
|
||
request to the file server, the auto switch off timer will be reset.
|
||
|
||
|
||
If, for example, a program was left running displaying the time every second, by default, the machine
|
||
would never switch off as every second the process would execute resetting the auto switch off timer,
|
||
possibly not a desirable state of affairs. By marking the process as non-active then the activity of the
|
||
process would not reset the timer and the machine would be able to switch off.
|
||
|
||
|
||
GenGetText Get operating system text
|
||
AL The number of the text message to be retrieved.
|
||
ES:BX Pointer to the buffer to receive the text.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: Carry set
|
||
|
||
AL undefined Failed to find the message.
|
||
PANIC: None
|
||
|
||
|
||
This service will scan the operating system's built in configuration file for the text message associated
|
||
with the number in AL. This service is similar to GenGetErrorText when AL is negative but can also be
|
||
passed positive numbers. The text messages available depend entirely on the configuration file built into
|
||
the ROM with the operating system.
|
||
|
||
|
||
GenGetNotifyState Get notify state
|
||
|
||
|
||
None
|
||
RETURN:
|
||
AL The notify state.
|
||
PANIC: None
|
||
This service will get the current notify state for the process.
|
||
The file server, when it detects a problem which the user could possibly correct, will call the notifier
|
||
|
||
|
||
process to inform the user of the error and any action which must be performed (e.g. replacing an SSD
|
||
which had been accidentally removed before all files open on it were closed).
|
||
|
||
|
||
If the state is 0 then the file server will not call the notifier and will return the error directly. If the state is
|
||
1 then the notifier will be called.
|
||
|
||
|
||
Some applications are intended to work in an unattended fashion so that a request for user attention would
|
||
be to no avail. In this case, the state should be set to 0 so that the process itself can take any action
|
||
required. By default, processes have the state set to 1.
|
||
|
||
|
||
19-8
|
||
|
||
|
||
19 GENERAL MANAGEMENT
|
||
|
||
|
||
GenSetNotifyState Set notify state
|
||
|
||
|
||
AL The notify state.
|
||
RETURN: None
|
||
PANIC: None
|
||
This service will set the current notify state for the process.
|
||
The file server, when it detects a problem which the user could possibly correct, will call the notifier
|
||
|
||
|
||
process to inform the user of the error and any action which must be performed (e.g. replacing an SSD
|
||
which had been accidentally removed before all files open on it were closed).
|
||
|
||
|
||
If the state is 0 then the file server will not call the notifier and will return the error directly. If the state is
|
||
1 then the notifier will be called.
|
||
|
||
|
||
Some applications are intended to work in an unattended fashion so that a request for user attention would
|
||
be to no avail. In this case, the state should be set to 0 so that the process itself can take any action
|
||
required. By default, processes have the state set to 1.
|
||
|
||
|
||
GenGetAutoSwitchOffValue Get the auto switch off time
|
||
RETURN:
|
||
AX The auto switch off time in seconds.
|
||
|
||
|
||
PANIC: None
|
||
This service can be used to get the current auto switch off time.
|
||
The time, in seconds, is returned in AX. It represents the amount of time which must expire with no
|
||
|
||
|
||
activity before the machine will auto switch off. If the value is -1 then auto switch off is disabled. By
|
||
default, the auto switch off is set to 300 seconds.
|
||
|
||
|
||
GenSetAutoSwitchOffValue Set the auto switch off time
|
||
|
||
|
||
BX The auto switch off time in seconds.
|
||
RETURN: None
|
||
PANIC: None
|
||
This service can be used to set the auto switch off time.
|
||
The time, in seconds, is passed in BX. It represents the amount of time which must expire with no activity
|
||
|
||
|
||
before the machine will auto switch off. If the value is -1 then auto switch off is disabled. By default, the
|
||
auto switch off is set to 300 seconds.
|
||
|
||
|
||
GenSetRevector Capture an interrupt
|
||
AL The vector number.
|
||
CX:BX The segment and offset on the interrupt routine.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
The operating system hooks all interrupt vectors to itself and in the case of hardware interrupt vectors and
|
||
the special interrupt vectors, provides a shell interrupt service routine which will do all the right things to
|
||
satisfy the operating system rules.
|
||
|
||
|
||
This service allows a new interrupt service to be installed and should only be called by device drivers. As
|
||
the new interrupt service is being called by the operating service through a shell the following rules apply
|
||
to the interrupt service routine.
|
||
|
||
|
||
e All registers may be destroyed except BP,SP and SS.
|
||
e The routine should return with a far ret and not an iret.
|
||
|
||
|
||
e If a re-schedule is required, then it should return with carry set; if not then carry should be clear.
|
||
|
||
|
||
19-9
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
The interrupts which may be re-vectored in this way are specified by constants in epocdefs.inc and are as
|
||
follows:
|
||
|
||
|
||
@ HwIntORevector - Divide by zero interrupt.
|
||
@ HwInt1Revector - Single step interrupt.
|
||
|
||
@ HwInt2Revector - Nmi interrupt.
|
||
|
||
@ HwInt3Revector - Breakpoint interrupt.
|
||
|
||
|
||
@ HwInt4Revector - Bounds check interrupt.
|
||
|
||
|
||
e HwIrq0Revector - HwIrq7Revector - The 8 hardware interrupts.
|
||
|
||
|
||
Note that under no circumstances should the Nmi or Irq0 (the tick interrupt) interrupts be re-vectored.
|
||
|
||
|
||
GenResetRevector Release an interrupt
|
||
|
||
|
||
AL The vector number.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
If the GensetRevector service has been used by a device driver to capture an interrupt, the interrupt
|
||
should be released using this service when no longer required. This allows the operating system to point
|
||
the vector to an appropriate default routine. The value in AL should be the re-vector number which was
|
||
originally passed to GenSetRevector.
|
||
|
||
|
||
GenGetLanguageCode Get the language code
|
||
None
|
||
|
||
RETURN:
|
||
AX The language code.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service will return the language code for the configuration data built into the ROM with the
|
||
operating system.
|
||
|
||
|
||
Epoc is a configurable operating system and needs to be built with a configuration file using the
|
||
OSROM.EXE utility. Configuration files are language dependent and, as such, a language code is
|
||
included. The language code can be usefully used by applications which are multi-lingual to determine
|
||
which language to present. The language codes are as follows:
|
||
|
||
|
||
= Test
|
||
|
||
= English
|
||
= French
|
||
= German
|
||
= Spanish
|
||
= Italian
|
||
= Swedish
|
||
= Danish
|
||
= Norwegian
|
||
|
||
|
||
oMWAtInauw fF WNEFE OO
|
||
|
||
|
||
= Finnish
|
||
= American
|
||
|
||
= Swiss French
|
||
= Swiss German
|
||
= Portuguese
|
||
Turkish
|
||
Icelandic
|
||
|
||
|
||
= Russian
|
||
|
||
= Hungarian
|
||
|
||
= Dutch
|
||
|
||
9 = Belgian Flemish
|
||
|
||
|
||
AIHA BWNHEO
|
||
ll
|
||
|
||
|
||
20 = Australian
|
||
|
||
21 = New Zealand
|
||
|
||
22 = Austrian
|
||
|
||
23 = Belgian French
|
||
|
||
|
||
19 - 10
|
||
|
||
|
||
19 GENERAL MANAGEMENT
|
||
|
||
|
||
GenGetSuffixes Get suffix text
|
||
|
||
|
||
ES:BX Pointer to buffer to receive the suffix text.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service will copy the language dependent suffixes from the configuration file into the buffer pointed
|
||
to by ES:BX.
|
||
|
||
|
||
The suffixes are fixed length zero terminated strings with a maximum length of three bytes including the
|
||
zero terminator.
|
||
|
||
|
||
Suffixes follow numbers for the day of the month (for example, the st in Ist. September 1990). Hence
|
||
there are 31 suffixes so that ES:BX must point to a buffer of at least 31*3 bytes.
|
||
|
||
|
||
This is a language dependent service.
|
||
|
||
|
||
GenGetAmPmText Get the AM and PM text
|
||
|
||
|
||
AL Zero - Get AM text
|
||
Non zero - Get PM text.
|
||
ES:BX Pointer to buffer to receive the AM and PM text.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service will copy the language dependent "AM" and "PM" text from the configuration file into the
|
||
buffer pointed to by ES:BX.
|
||
|
||
|
||
The two text strings are fixed length zero terminated strings with a maximum length of three bytes
|
||
including the zero terminator. The "am" text is first, followed by the "pm" text. There are 2 strings of 3
|
||
bytes each so that ES:BX must point to a buffer of at least 6 bytes.
|
||
|
||
|
||
This is a language dependent service.
|
||
|
||
|
||
GenGetBatteryType Get the battery type
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AL The battery type.
|
||
PANIC: None
|
||
|
||
|
||
This service gets the current battery type.
|
||
|
||
|
||
By default, Epoc sets the battery type to BatteryUnknown. The battery types are declared in the header file
|
||
epocdefs.inc.
|
||
|
||
|
||
On machines whose hardware does not support the detection of the battery type, a meaningful result
|
||
depends on a prior call having been made to GenSetBatteryType.
|
||
|
||
|
||
GenSetBatteryType Set the battery type
|
||
|
||
|
||
AL The battery type.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service sets the current battery type. By default, Epoc sets the battery type to BatteryUnknown. The
|
||
battery types are declared in the header file epocdefs.inc.
|
||
|
||
|
||
Epoc needs to know about the various battery types because the levels at which low battery warning
|
||
messages are issued depends on the type.
|
||
|
||
|
||
If the battery type is BatteryUnknown then Epoc gives the same warning levels as for BatteryAlkaline.
|
||
|
||
|
||
A call to this function is not required on machines, such as the Workabout, whose hardware supports
|
||
detection of the battery type.
|
||
|
||
|
||
19-11
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
GenCrc Generate a CRC
|
||
cx The number of bytes in the buffer.
|
||
DX The current CRC.
|
||
DS:SI Pointer to the buffer to be CRC checked.
|
||
RETURN:
|
||
AX The updated CRC check.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service will generate a CRC polynomial checksum (X power 16 + X power 12 + X power 5 + 1, as
|
||
recommended by CCITT) from the buffer pointed to by DS:SI containing CX bytes. If the checksum is
|
||
being started then the value in DX should be passed as 0.
|
||
|
||
|
||
¢ GenintByNumber Interrupt by number
|
||
AL The interrupt number.
|
||
DS:SI Pointer to the input register values.
|
||
DS:DI Pointer to the output register values.
|
||
RETURN:
|
||
AX The flags register after the call.
|
||
PANIC:
|
||
|
||
|
||
Depends on the
|
||
interrupt called.
|
||
|
||
|
||
This service can be used to call any software interrupt and is provided to make calling the operating
|
||
system easier from high level languages.
|
||
|
||
|
||
The register values are stored sequentially as 6 words and represent the values for AX, BX, CX, DX, SI
|
||
and DI. BP is never needed by the operating system and so is not required. DS:SI and DS:DI can point to
|
||
the same memory location. The value returned is the flags register because although the carry flag is the
|
||
most important, some of the operating system routines also set the arithmetic flags. The carry flag is in bit
|
||
O of the returned result in AX.
|
||
|
||
|
||
GenEnvBufferGet Get environment variable
|
||
ES:DI Pointer to the environment variable name.
|
||
DL Length of environment variable name.
|
||
ES:SI Pointer to the buffer to receive the variable's value.
|
||
RETURN: Carry clear
|
||
AX The length of the data returned in ES:SI.
|
||
RETURN: Carry set
|
||
NotExistsErr No environment variable of the specified name exists.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service will locate an environment variable. The name of the variable is pointed to by ES:DI and has
|
||
a length of DL bytes.
|
||
|
||
|
||
The name may include wild cards, in which case the first matching name will be found. The value of the
|
||
environment variable is copied to ES:SI and the length of this data is returned in AX.
|
||
|
||
|
||
The maximum size of an environment variable's data is 255 bytes.
|
||
|
||
|
||
GenEnvBufferSet Set environment variable
|
||
ES:DI Pointer to the environment variable name.
|
||
DL Length of environment variable name.
|
||
ES:SI Pointer to the buffer containing the variable's data.
|
||
CL The length of the data as ES:SI.
|
||
|
||
|
||
19 - 12
|
||
|
||
|
||
19 GENERAL MANAGEMENT
|
||
|
||
|
||
RETURN: = Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
NoMemoryErr No space available to store environment variable.
|
||
FailErr Environment variable name contained wild cards.
|
||
PANIC:
|
||
PanicEnv0 DL exceeded MaxEnvNameSize
|
||
|
||
|
||
This service will either add or replace an environment variable. The name of the variable is pointed to by
|
||
ES:DI and has a length of DL bytes.
|
||
|
||
|
||
The name may not include wild cards nor exceed MaxEnvNameSize. The value of the environment variable
|
||
is pointed to by ES:SI and the length of the data to be copied is in CL. Since the data is a buffer of length
|
||
CL there is no restriction on what data may be placed in the buffer.
|
||
|
||
|
||
The maximum size of an environment variable's data is 255 bytes.
|
||
|
||
|
||
GenEnvBufferDelete Delete environment variable
|
||
ES:DI Pointer to the environment variable name.
|
||
DL Length of environment variable name.
|
||
|
||
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: = Carry set
|
||
NotExistsErr No environment variable of the specified name exists.
|
||
PANIC: None
|
||
This service will delete an environment variable. The name of the variable is pointed to by ES:DI and has
|
||
|
||
|
||
a length of DL bytes.
|
||
|
||
|
||
The name may include wild cards in which case the first matching name is deleted.
|
||
|
||
|
||
GenEnvBufferFind Find environment variable
|
||
BX The find handle.
|
||
ES:DI Pointer to the environment variable name.
|
||
DL Length of environment variable name.
|
||
ES:SI Pointer to the buffer to receive the variable's data.
|
||
RETURN: Carry clear
|
||
AX The next find handle.
|
||
RETURN: Carry set
|
||
EofErr No more matching environment variables.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service will find all occurrences of environment variables which match the supplied wild card name.
|
||
The wild card name is pointed to by ES:DI and has a length of DL.
|
||
|
||
|
||
A wild card of "*" will locate all environment variables. When this routine is first called, BX must contain
|
||
zero; on subsequent calls, it must contain the value returned in AX. The wild card match string must
|
||
remain the same on successive calls. zofErr is returned when there are no more matching names.
|
||
|
||
|
||
After a successful call, the buffer pointed to by ES:SI contains two leading byte strings. The first string
|
||
contains the name of the environment variable while the second string contains its value. The maximum
|
||
size of an environment variable's data is 255 bytes.
|
||
|
||
|
||
19 - 13
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
GenEnvStringGet Get string environment variable
|
||
ES:DI Pointer to the environment variable name string.
|
||
ES:SI Pointer to the buffer to receive the variable's value.
|
||
|
||
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: = Carry set
|
||
NotExistsErr No environment variable of the specified name exists.
|
||
PANIC: None
|
||
This service will locate an environment variable. The name of the variable is pointed to by ES:DI. The
|
||
|
||
|
||
name may include wild cards, in which case the first matching name will be found.
|
||
|
||
|
||
The value of the environment variable will be copied to ES:SI and will be zero terminated. Environment
|
||
variables should not include the byte 0 as this would terminate the string prematurely. The maximum
|
||
length of the string is 256 bytes including the terminating zero.
|
||
|
||
|
||
GenEnvStringSet Set string environment variable
|
||
ES:DI Pointer to the environment variable name.
|
||
ES:SI Pointer to the string containing the variable's data.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
NoMemoryErr No space available to store environment variable.
|
||
FailErr Environment variable name contained wild cards.
|
||
PANIC:
|
||
PanicEnv0 The name string exceeded MaxEnvNameSize
|
||
|
||
|
||
This service will either add or replace an environment variable. The name of the variable is pointed to by
|
||
ES:DI. The name may not include wild cards nor exceed MaxEnvNameSize.
|
||
|
||
|
||
The value of the environment variable is pointed to by the string at ES:SI. The maximum size of the string
|
||
should be limited to 255 bytes not including the zero terminator. Should the string be longer it will
|
||
truncated module 256.
|
||
|
||
|
||
GenEnvStringDelete Delete string environment variable
|
||
|
||
|
||
ES:DI Pointer to the environment variable name.
|
||
RETURN: Carry clear
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
|
||
NotExistsErr No environment variable of the specified name exists.
|
||
PANIC: None
|
||
|
||
|
||
This service will delete an environment variable. The name of the variable is pointed to by ES:DI. The
|
||
name may include wild cards in which case the first matching name is deleted.
|
||
|
||
|
||
GenEnvStringFind Find string environment variable
|
||
BX The find handle.
|
||
ES:DI Pointer to the environment variable name.
|
||
ES:SI Pointer to the buffer to receive the variable's name.
|
||
ES:CX Pointer to the buffer to receive the variable's data.
|
||
RETURN: Carry clear
|
||
AX The next find handle.
|
||
|
||
|
||
19-14
|
||
|
||
|
||
19 GENERAL MANAGEMENT
|
||
|
||
|
||
RETURN: Carry set
|
||
EofErr No more matching environment variables.
|
||
PANIC: None
|
||
This service will find all occurrences of environment variables which match the supplied wild card name.
|
||
|
||
|
||
The wild card name is pointed to by ES:DI. A wild card of "*" will locate all the environment variables.
|
||
|
||
|
||
When this routine is first called, BX must contain zero; on subsequent calls it must contain the value
|
||
returned in AX. The wild card match string must remain the same on successive calls. EofErr is returned
|
||
when there are no more matching names.
|
||
|
||
|
||
After a successful call, the buffer pointed to by ES:SI contains the name of the environment variable
|
||
which was found, as a zero terminated string. The maximum size of the name of an environment variable
|
||
iS MaxEnvNameSize.
|
||
|
||
|
||
The buffer pointed to by ES:CX contains the value of the environment variable which was found, as a zero
|
||
terminated string. The maximum size of the data is 256 bytes, including the zero terminator.
|
||
|
||
|
||
GenAlarmHook Hook the alarm interface
|
||
|
||
|
||
BX The message number.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: Carry set
|
||
FailErr Alarm interface already hooked.
|
||
PANIC: None
|
||
This service allows a process to capture the alarm interface built into the operating system. Having hooked
|
||
|
||
|
||
the alarm interface the ALM: device driver can be used to request alarms from the alarm server.
|
||
|
||
|
||
The availability of an alarm server and what it does, varies from machine to machine and the appropriate
|
||
documentation for the specific machine should be consulted.
|
||
|
||
|
||
GenAlarmUnHook Unhook the alarm interface
|
||
None
|
||
|
||
RETURN: None
|
||
|
||
PANIC:
|
||
PanicGenl Process does not have the interface hooked.
|
||
|
||
|
||
This service will release the Alarm interface if the process calling this service already has the interface
|
||
hooked. If it does not, the process will be panicked.
|
||
|
||
|
||
GenAlarmld Get the pid of the alarm server
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AX The alarm server pid.
|
||
PANIC: None
|
||
|
||
|
||
This service will return the ID of the alarm server. If the alarm interface is not currently hooked then this
|
||
service will return zero in AX.
|
||
|
||
|
||
GenTickle Reset the auto switch off timer
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service will reset the auto switch off timer to the value as specified to the last
|
||
GenSet Aut oSwitchOffValue. This routine is useful for processes which have called GenMarkNonAct ive
|
||
and require to "tickle" the auto switch off from time to time.
|
||
|
||
|
||
19 - 15
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
GenSetOnEvents Control on events
|
||
|
||
|
||
AL The find handle.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service controls whether the system will report on-events(for example, reporting to the window
|
||
server when the machine switches on). If AL is non-zero then on-events will be reported. If AL is zero,
|
||
they will not.
|
||
|
||
|
||
By default on-events are reported on Series 3 and Series 3a operating systems and not reported on other
|
||
versions.
|
||
|
||
|
||
©GenGetAutoMains Get state for auto-sw-off if mains present
|
||
RETURN:
|
||
|
||
|
||
AX The current auto-switch-off state for when mains is present.
|
||
PANIC: None
|
||
|
||
|
||
Returns a non-zero value in AX if auto-switch-off is disabled when mains is present, and zero if enabled.
|
||
|
||
|
||
©GenSetAutoMains Disable/enable auto-sw-off if mains present
|
||
|
||
|
||
AL Flag specifying whether to enable or disable.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Enable or disable auto-switch-off if mains is present. If AL is non-zero, auto-switch-off is disabled,
|
||
otherwise it is enabled.
|
||
|
||
|
||
By default auto-switch-off is enabled.
|
||
|
||
|
||
Even if enabled, the machine will not switch off when mains is absent if auto-switch-off has been stopped
|
||
by calling GensetAutoSwitchOffValue with value -1.
|
||
|
||
|
||
19 - 16
|
||
|
||
|
||
CHAPTER 20
|
||
|
||
|
||
DATABASE FILE MANAGEMENT
|
||
|
||
|
||
File structure
|
||
|
||
|
||
Database files (DBFs) start with a 22 byte header which contains the following information:
|
||
|
||
|
||
Offset in header Information
|
||
|
||
0 - 15 Zero terminated file signature.
|
||
|
||
16, 17 Version of DBF software used to produce the file.
|
||
18, 19 Offset from the start of the file to the first record.
|
||
20, 21 Minimum version of DBF software required.
|
||
|
||
|
||
Note that all 16 bytes of the file signature are used for verification, not just the zero terminated string.
|
||
Therefore it is recommended that all file signatures are padded with zeros to fill the 16 bytes.
|
||
|
||
|
||
See the Dbfversion service for the format of the version numbers.
|
||
|
||
|
||
The offset within the file of the first record is to allow additional information to be added to the header
|
||
(called the Extended Header). Note that the first record will always be a type 2 record - see below.
|
||
|
||
|
||
The data consists of records, each with a 2 byte header stored as a word. The high nibble of the most
|
||
significant byte (i.e. the 2nd byte in the record) gives the record's type. This can take the following values:
|
||
|
||
|
||
0 A deleted record.
|
||
|
||
1 A main record.
|
||
|
||
2 The Field Information Record.
|
||
|
||
3 The Descriptive Record.
|
||
|
||
4-7 Reserved for record types which won't be merged.
|
||
8 - 13 Reserved for record types which will be merged.
|
||
14 Reserved for voice entries.
|
||
|
||
15 Used internally (not to be used by applications).
|
||
|
||
|
||
Note that types 8 - 14 will be copied and merged by the pbfcopyFile service when DbfRecordTypeAl1l is
|
||
specified whereas record types 3 - 7 will only be copied if the target file is created, i.e. not if merging two
|
||
files.
|
||
|
||
|
||
The remaining 12 bits of the header word give the size of the record. However the maximum size of a
|
||
record is 4094 bytes, so that there is room in a 4096 byte buffer for the longest record including its header.
|
||
|
||
|
||
The Field Information Record is used to store the field structure used by the other records. There will
|
||
be exactly | Field Information Record per file and it will always be the first record in the file (any other
|
||
type 2 records will be ignored). Each byte in the record indicates the type of the corresponding field in the
|
||
records which follow, so the length of this record is the number of fields. The possible values for each byte
|
||
are:
|
||
|
||
|
||
0 Word
|
||
1 Long
|
||
|
||
|
||
20-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
2 Double
|
||
3 String
|
||
4 - 255 Reserved
|
||
|
||
|
||
The maximum length of this record is 32 bytes representing 32 fields.
|
||
|
||
|
||
The 22 byte header and the Field Information Record must be passed to the Dpbfopen service when a file
|
||
is created or replaced and will be returned by pbfopen when an existing file is opened.
|
||
|
||
|
||
Buffering
|
||
|
||
|
||
When a database file is opened, the address of a buffer must be provided which should be at least as large
|
||
as the maximum record size to be used. Thus, a buffer of 4096 bytes is guaranteed to open all database
|
||
files. This buffer will be used to read this many bytes worth of records from the File System at a time so as
|
||
to reduce the calls to the File System and vastly increase the speed of operation of most of the DBF
|
||
services.
|
||
|
||
|
||
If the buffer provided is smaller than 4096 and there are records which are longer than the buffer, an error
|
||
will be given when the file is opened.
|
||
|
||
|
||
Note that the read services simply return the offset of the record within the buffer. If the buffer needs to
|
||
be used by the application, e.g. for editing a record, the DpfcopyDown service should be called to copy the
|
||
current record to the start of the buffer and to signal that the buffer is invalid. The pbftrash service
|
||
simply marks the buffer as invalid. These two services will therefore cause the entire buffer to be read in
|
||
the next time a record is read, inevitably resulting in a loss of performance.
|
||
|
||
|
||
All DBF services may overwrite the buffer containing the current record apart from the following:
|
||
|
||
|
||
DbfFlush
|
||
DbfVersion
|
||
DbfAppend
|
||
DbfSense
|
||
Dbf£Count
|
||
|
||
|
||
which are guaranteed not to alter the buffer.
|
||
|
||
|
||
Index Table
|
||
|
||
|
||
In addition to buffering, a sparse index table consisting of a 4 byte address for every 16 records will be
|
||
constructed when the file is opened to increase the speed of random access to the file. As records are
|
||
added to the file, the table will also be appended. When a record is deleted, each pointer in the table after
|
||
the deleted record will be moved to the next record, so that they always point to every 16th record. Note
|
||
that the index table will reside in a different segment so as not to use up the application's space.
|
||
|
||
|
||
End of file record
|
||
|
||
|
||
When any of the record services attempt to read past the end of the file, zofzrr will be returned and the
|
||
current record number will be the number of the last record plus 1. Also, attempting to read before the
|
||
first record in the file, either with the DpfBackRead Service or the DbffrindRead Service searching
|
||
backwards will result in zofErr and the current record number will be zero (i.e. the first record if there is
|
||
one). However the offset in the buffer of the first/last record will not be returned, when £ofeErr is returned.
|
||
|
||
|
||
The "current record" is always given by the record number returned by the pbfsense service but if any
|
||
service gives EofErr, the current record will be the last record number plus | - this is called the end of
|
||
file record (unless the error is caused by going before the first record). When this is the case, any services
|
||
which work on the current record, e.g. DbfEraseRead, DbfUpdate, DbfFindRead searching forwards will
|
||
return EofErr. Similarly if there are no records in the file, ppfsense record will return 0 but the above
|
||
services will return EofErr.
|
||
|
||
|
||
20 DATABASE FILE MANAGEMENT
|
||
|
||
|
||
Number of records
|
||
|
||
|
||
The maximum number of records which can be present is 65534 and they are numbered from 0 to 65533.
|
||
An error will be given by the ppfappend service if an attempt is made to write more than 65534 records.
|
||
|
||
|
||
DbfOpen Open a database file
|
||
|
||
|
||
CL Type of record.
|
||
|
||
SI Pointer to the main buffer.
|
||
|
||
DI State.
|
||
|
||
Dx Length of the main buffer.
|
||
|
||
BX Points to a DbfopenkEnt Structure containing the remaining
|
||
parameters.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
DI State.
|
||
RETURN: Carry set
|
||
RecordErr There are records longer than buffer supplied or buffer length is
|
||
invalid.
|
||
InvalidFileErr The file is not a valid DBF file.
|
||
PANIC:
|
||
None
|
||
|
||
|
||
This service works in the same way as the standard file open service with the following features:
|
||
|
||
|
||
e The service can be called in a loop with DI equal to pbfstatestart the first time and then passed
|
||
as it is returned until it becomes ppbfstatestart again or alternatively if DI is passed as
|
||
Dbf£StateDisabled, the service will not return until it has finished.
|
||
|
||
|
||
Also DI can be passed as pbfst at eOpenNoIndex to disable the building of the index. This means
|
||
it will be faster to open, but only the following services can be used on a file opened this way:
|
||
DbfClose, DbfFlush, DbfTrash, DbfCopyDown, DbfCopyFile, DbfAbsRead, DbfAbsReadSense,
|
||
DbfNextRead, DbfBackRead, DbfFirstRead, DbfSense. Note that reading records non-sequentially
|
||
will be much slower than when the file is opened with index building. Calls to any other services
|
||
will produce unpredictable results.
|
||
|
||
|
||
e The pbfopenmode field of the ppfopenkEnt structure need not specify the file format. The DBF
|
||
file format will be assumed. If a file is created or replaced, modeUpdate must be specified since
|
||
the header is written to the file.
|
||
|
||
|
||
e The pbfopenHeader field of the ppfopenknt structure is a pointer to a 56 byte buffer. The header
|
||
consists of the 22 byte header described above followed immediately by the Field Information
|
||
Record as a type 2 record. The maximum length of the Field Information Record is 32, plus its
|
||
2 byte header = 34. Therefore the buffer must be 22 + 34 = 56 bytes. Even if an Extended Header
|
||
is required, no gap should be left in the header when creating a file and no gap will be returned
|
||
when opening an existing file. The file itself, however will contain a gap for the Extended
|
||
Header, the length of which can be calculated from the 'start of data’ field in the 22 byte header.
|
||
|
||
|
||
When opening an existing file, the header buffer must contain the file signature which will be
|
||
verified against the signature in the file and InvalidrileErr will be returned if it is not identical.
|
||
Note that all 16 bytes of the signature are always checked, not just the zero terminated string.
|
||
The remainder of the header buffer will be filled in. Note that the type 2 record is not verified to
|
||
be the same as the header and so need not be supplied.
|
||
|
||
|
||
When creating or replacing a file, the header buffer must contain all 56 bytes to be written to the
|
||
file as a header.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
In both the above cases, the minimum version number at offset 20 in the header will be checked
|
||
and InvalidFileErr returned if this DBF software cannot handle it. See the pbfversion service
|
||
for the format of the version numbers. Note that only the major version number is checked (i.e.
|
||
the most significant 4 bits only of the version number word. Also, the type 2 record is checked to
|
||
be valid and invalidFileErr returned if it is not.
|
||
|
||
|
||
e The main buffer at SI is used to read DX bytes worth of records at a time from the File System.
|
||
e CL specifies the type (0 - 14) of records to be accessed (it will usually be 1).
|
||
|
||
|
||
e A sparse index table consisting of a 4 byte address for every 16 records will be constructed when
|
||
the file is opened to increase the speed of random access to the file. This will reside in a separate
|
||
segment so as not to use any of the application's space.
|
||
|
||
|
||
Note that after opening the file, the current record number will be 0 (as returned by pbfsense) so that a
|
||
call to DbfNext Read would read record number | in the file and pbfEraseRead would erase record 0.
|
||
DbfFirstRead should be called to read record 0.
|
||
|
||
|
||
The length of buffer supplied must be in the range 512 to 16384. Any length outside this range will result
|
||
in RecordErr when the file is opened. The maximum length of a record is 4094 bytes, so there is always
|
||
room in a 4096 byte buffer for all records (including the 2 byte header).
|
||
|
||
|
||
DbfClose Close a database file
|
||
BX The DBF handle to be closed.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: Carry set
|
||
AL Error number.
|
||
PANIC:
|
||
PanicDbf1l BX is not a valid DBF handle.
|
||
|
||
|
||
Closes a database file.
|
||
|
||
|
||
The handle must be one returned from the ppfopen service.
|
||
|
||
|
||
DbfFlush Flush a database file
|
||
|
||
|
||
BX The DBF handle.
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: Carry set
|
||
AL Error number.
|
||
PANIC:
|
||
PanicDbf1 BX is not a valid DBF handle.
|
||
|
||
|
||
Flushes all buffers.
|
||
|
||
|
||
DbfTrash Trash a database file
|
||
|
||
|
||
BX The DBF handle.
|
||
RETURN: None
|
||
PANIC:
|
||
PanicDbf1 BX is not a valid DBF handle.
|
||
|
||
|
||
Signals that the main database file buffer is no longer valid, so that it can be used by an application. See
|
||
also the Db£fCopyDown Service.
|
||
|
||
|
||
20-4
|
||
|
||
|
||
20 DATABASE FILE MANAGEMENT
|
||
|
||
|
||
DbfCopyDown Copy down a DBF record
|
||
|
||
|
||
BX The DBF handle.
|
||
|
||
SI The offset into the main buffer of the record to copy down.
|
||
RETURN:
|
||
|
||
AX The length of the record copied down.
|
||
PANIC:
|
||
|
||
PanicDbfl BX is not a valid DBF handle.
|
||
|
||
PanicDbf2 SI is not a valid offset.
|
||
|
||
|
||
Copies a record at the given offset in the main buffer down to the start of the buffer and sets a flag to
|
||
signal that the buffer is no longer valid (i.e. there is no need to call ppbftrash). The length of the record is
|
||
read from the buffer and is returned by the service.
|
||
|
||
|
||
DbfCompress Compress a database file
|
||
BX The DBF handle.
|
||
DI State.
|
||
RETURN: Carry clear
|
||
DI State.
|
||
RETURN: Carry set
|
||
AL Error number
|
||
PANIC:
|
||
PanicDbf1 BX is not a valid DBF handle.
|
||
|
||
|
||
Recovers space used by deleted records provided the file is stored on a compressible media. If the media is
|
||
not compressible, this service will do nothing and will return carry clear.
|
||
|
||
|
||
After calling this service, the current record will be the end of file record (unless the media was not
|
||
compressible - in which case the current record is unchanged).
|
||
|
||
|
||
DI can be passed as pbfStateStart Or DbfStateDisabled. If it is passed as ppfstatestart, the service
|
||
|
||
|
||
must be called repeatedly until state becomes ppfstatestart again. If it is passed as ppfstateDisabled,
|
||
the service will not exit until it is finished.
|
||
|
||
|
||
DbfCopyFile Copy a database file
|
||
|
||
|
||
BX The DBF handle.
|
||
CL Record type to copy.
|
||
CH The direction of the copy (to or from the target file).
|
||
Dx Open mode for target file.
|
||
DI State.
|
||
SI Pointer to the target file name.
|
||
RETURN: Carry clear
|
||
DI State.
|
||
RETURN: Carry set
|
||
AL Error number.
|
||
PANIC:
|
||
PanicDbfl BX is not a valid DBF handle.
|
||
|
||
|
||
Copies records except deleted records from or to the open source file. This service will append records to
|
||
the end of an existing file if DX is Modeopen or ModeAppend. Note that ModeAppend will perform exactly
|
||
the same as ModeOpen. Copying with ModeUnique will copy the records to a unique file and return the
|
||
name in the buffer at SI, in exactly the same way as Dbfopen. Note that the source file can be opened with
|
||
index building disabled, i.e. with DI as ppfstateopenNoIndex with no loss in performance of the copy.
|
||
|
||
|
||
20-5
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
CL is used to specify the type of record to be copied. If ppfRecordTypeall is specified, all record types
|
||
will be copied. Note that when merging files (i.e. DX is Modeopen Of ModeAppend) with
|
||
DbfRecordTypeA11, only record types | and 8 - 14 will be copied across. Record types 2 - 7 will not be
|
||
copied. Record type 2 is the Field Information Record and record type 3 is the Descriptive Record
|
||
and types 4 - 7 are reserved for future use. Record types 2 - 7 will be copied if DX is Modecreate,
|
||
ModeReplace Of ModeUnique.
|
||
|
||
|
||
CH must be passed as pbfCopyFromHandle to copy from the open file to the named file or
|
||
Dbf£CopyToHandle to copy the other way. Note that in the latter case DX must obviously be passed as
|
||
Modeopen. Note that it is always slower using DpbfCopyToHandle because of the need to update the index
|
||
table for the open file.
|
||
|
||
|
||
The following procedure is used to implement the copy:
|
||
|
||
|
||
e The target file is opened in the mode specified. If copying to an existing file, the signatures of the
|
||
two files are verified and the r1r's are checked to be compatible. If copying to a new file, the
|
||
header (including the rrr) and any Extended Header are copied from the source file to the target
|
||
file.
|
||
|
||
|
||
e All records of the specified type are copied from the source file to the target file.
|
||
e = The target file is closed.
|
||
|
||
|
||
e = If any error occurs during the above procedure and the target file has been created by
|
||
Db£CopyFile, the target file will be deleted, if possible.
|
||
|
||
|
||
DI can be passed as DbfStateStart, DbfStateDisabled Of DbfStateCopyAbort:
|
||
e If it is passed as DbfstateDisabled the service will not exit
|
||
until it is finished.
|
||
|
||
|
||
e If it is passed as pbfstatestart the service must be called repeatedly until state becomes
|
||
DbfStateStart again. This parameter can be used to plot the progress of the copy, for example
|
||
by drawing a bar graph. DI will be incremented for every 'buffer size’ number of bytes that are
|
||
copied (approximately). Hence the scale of the graph can be calculated by dividing the size of the
|
||
file by the buffer size allocated. The graph plotting procedure must take account of the error in
|
||
the number of times required to call the service. A fudge factor of 2 should be added to calculate
|
||
how many times the service will be needed to be called.
|
||
|
||
|
||
e Di can be passed as DpbfstateCopyAbort to abort the copy which was started with
|
||
DbfStateStart.
|
||
|
||
|
||
Warning: using DbfCopyFile to merge files can result in a file with more than 65534 records of a
|
||
particular type in it. When this file is opened with the pbfopen service, only the first 65534 records will be
|
||
accessible. No error is given from the copy or the open.
|
||
|
||
|
||
DbfFileSize Get the size of a DBF
|
||
|
||
|
||
BX The DBF handle.
|
||
RETURN: Carry clear
|
||
|
||
DI:DX The file size in bytes.
|
||
RETURN: Carry set
|
||
|
||
AL Error number.
|
||
PANIC:
|
||
|
||
PanicDbfl BX is not a valid DBF handle.
|
||
|
||
|
||
Gets the size of an open database file.
|
||
|
||
|
||
20 - 6
|
||
|
||
|
||
DbfExtHeaderRead
|
||
|
||
|
||
AL
|
||
|
||
|
||
BX
|
||
ex
|
||
SI
|
||
|
||
RETURN: Carry clear
|
||
AX
|
||
|
||
RETURN: Carry set
|
||
EofErr
|
||
|
||
PANIC:
|
||
|
||
|
||
PanicDbf1
|
||
|
||
|
||
20 DATABASE FILE MANAGEMENT
|
||
|
||
|
||
Read a DBF extended header
|
||
|
||
|
||
0 to start
|
||
|
||
1 to continue.
|
||
|
||
The DBF handle.
|
||
|
||
The number of bytes to read.
|
||
|
||
The address of the buffer to receive the data.
|
||
|
||
|
||
The number of bytes actually read.
|
||
The end of the Extended Header has been reached.
|
||
|
||
|
||
BX is not a valid DBF handle.
|
||
|
||
|
||
Reads CX bytes from the Extended Header of a database file into the buffer supplied.
|
||
|
||
|
||
AL must be passed as 0 the first time and 1| to continue.
|
||
|
||
|
||
EofErr is returned when the end of the Extended Header is reached, otherwise the actual number of bytes
|
||
|
||
|
||
read is returned.
|
||
|
||
|
||
DbfExtHeaderWrite
|
||
|
||
|
||
AL
|
||
|
||
|
||
BX
|
||
CX
|
||
SI
|
||
|
||
RETURN: Carry clear
|
||
AX
|
||
|
||
RETURN: Carry set
|
||
EofErr
|
||
|
||
PANIC:
|
||
|
||
|
||
PanicDbf1
|
||
|
||
|
||
Write a DBF extended header
|
||
|
||
|
||
0 to start
|
||
|
||
1 to continue.
|
||
|
||
The DBF handle.
|
||
|
||
The number of bytes to write.
|
||
|
||
|
||
The address of the buffer containing the data to write.
|
||
The number of bytes actually written.
|
||
A write past the end of the Extended Header was attempted.
|
||
|
||
|
||
BX is not a valid DBF handle.
|
||
|
||
|
||
Writes the buffer supplied into the Extended Header of the file.
|
||
|
||
|
||
AL must be passed as 0 the first time and 1 to continue.
|
||
|
||
|
||
EofErr is returned when the end of the space allocated for the Extended Header is reached, otherwise the
|
||
actual number of bytes written is returned.
|
||
|
||
|
||
DbfDescRecordRead
|
||
|
||
|
||
BX
|
||
|
||
RETURN: Carry clear
|
||
AX
|
||
|
||
RETURN: Carry set
|
||
EofErr
|
||
|
||
PANIC:
|
||
|
||
|
||
PanicDbf1
|
||
|
||
|
||
Read a DBF descriptive record
|
||
The DBF handle.
|
||
|
||
|
||
The length of the Descriptive Record
|
||
There is no Descriptive Record in the file.
|
||
|
||
|
||
BX is not a valid DBF handle.
|
||
|
||
|
||
Reads the Descriptive Record into the main buffer at offset zero. If there is no Descriptive Record,
|
||
|
||
|
||
EofErr Will be returned.
|
||
|
||
|
||
20-7
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
DbfDescRecordWrite Write a DBF descriptive record
|
||
BX The DBF handle.
|
||
cx The length of the Descriptive Record to be written.
|
||
|
||
|
||
RETURN: Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
AL Error number.
|
||
PANIC:
|
||
PanicDbf1 BX is not a valid DBF handle.
|
||
|
||
|
||
Writes out a Descriptive Record. The record to be written must be stored at the start of the main buffer
|
||
as a DbfRecord Structure; there must be 2 bytes before the data starts where the record header will be
|
||
constructed. See pbfAppend.
|
||
|
||
|
||
Any existing Descriptive Record will be erased, in other words, there can be a maximum of one
|
||
Descriptive Record per file.
|
||
|
||
|
||
If CX is passed as zero, any existing Descriptive Record Will be erased and no new one will be written
|
||
out. If there is no Descriptive Record, no error is given.
|
||
|
||
|
||
DbfVersion Get the DBF version number
|
||
None
|
||
|
||
RETURN:
|
||
AX The DBF version number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Gets the version number of the DBF software. This will be in the form:
|
||
|
||
|
||
XYYF
|
||
where
|
||
|
||
x is the major version number (4 bits)
|
||
|
||
YY is the minor version number (8 bits)
|
||
|
||
F is the release type, either A,B or F for Alpha, Beta or Final
|
||
|
||
|
||
respectively (4 bits).
|
||
For example, if 110FH is returned, the DBF software version is 1.10F.
|
||
|
||
|
||
Note that only the major version number is used to determine whether or not the DBF file system can
|
||
handle a particular file.
|
||
|
||
|
||
DbfAbsRead Read an absolute DBF record
|
||
|
||
|
||
BX The DBF handle.
|
||
ex The absolute record number to be read.
|
||
RETURN: Carry clear
|
||
AX The length of the record read.
|
||
SI The offset in the main buffer of the record read.
|
||
RETURN: Carry set
|
||
EofErr The requested record number is greater than the number of records
|
||
in the file.
|
||
PANIC:
|
||
PanicDbfl BX is not a valid DBF handle.
|
||
|
||
|
||
This service will seek to the given record and read it. Records are read into the buffer (supplied when the
|
||
file was opened) and the record's offset within the buffer is returned in SI.
|
||
|
||
|
||
If the record number requested corresponds to a record beyond the last one, the error zofErr will be
|
||
returned, the current record will be the end of file record and SI will be invalid.
|
||
|
||
|
||
20-8
|
||
|
||
|
||
DbfAbsReadSense
|
||
|
||
|
||
BX
|
||
CX
|
||
|
||
RETURN: Carry clear
|
||
AX
|
||
SI
|
||
DI:DX
|
||
|
||
RETURN: Carry set
|
||
|
||
|
||
EofErr
|
||
|
||
|
||
PANIC:
|
||
|
||
|
||
PanicDbf1
|
||
|
||
|
||
20 DATABASE FILE MANAGEMENT
|
||
|
||
|
||
Read and sense an absolute DBF record
|
||
The DBF handle.
|
||
|
||
|
||
The absolute record number to be read.
|
||
The length of the record read.
|
||
The offset in the main buffer of the record read.
|
||
|
||
|
||
File position of start of record.
|
||
|
||
|
||
The requested record number is greater than the number of records
|
||
in the file.
|
||
|
||
|
||
BX is not a valid DBF handle.
|
||
|
||
|
||
Same as the pbfabsRead Service but also returns the file position of the start of the record.
|
||
|
||
|
||
DbfNextRead
|
||
|
||
|
||
BX
|
||
|
||
RETURN: Carry clear
|
||
AX
|
||
SI
|
||
|
||
RETURN: Carry set
|
||
EofErr
|
||
|
||
PANIC:
|
||
|
||
|
||
PanicDbf1
|
||
|
||
|
||
Read the next DBF record
|
||
The DBF handle.
|
||
|
||
|
||
The length of the record read.
|
||
|
||
|
||
The offset in the main buffer of the record read.
|
||
The current record was already the last record in the file.
|
||
|
||
|
||
BX is not a valid DBF handle.
|
||
|
||
|
||
Seeks to the next record and reads it. Records are read into the buffer (supplied when the file was opened)
|
||
and the record's offset within the buffer is returned in SI.
|
||
|
||
|
||
If the current record is already the last record in the file or there are no records of the current type in the
|
||
file, EofErr will be returned, the current record will be the end of file record and SI will be invalid.
|
||
|
||
|
||
DbfBackRead
|
||
|
||
|
||
BX
|
||
|
||
RETURN: Carry clear
|
||
AX
|
||
SI
|
||
|
||
RETURN: Carry set
|
||
EofErr
|
||
|
||
PANIC:
|
||
|
||
|
||
PanicDbf1
|
||
|
||
|
||
Read the previous DBF record
|
||
The DBF handle.
|
||
|
||
|
||
The length of the record read.
|
||
|
||
|
||
The offset in the main buffer of the record read.
|
||
The current record was already the first record in the file.
|
||
|
||
|
||
BX is not a valid DBF handle.
|
||
|
||
|
||
Seeks to the previous record and reads it. Records are read into the buffer provided when the file was
|
||
opened and the offset into this buffer of the record required is returned in SI.
|
||
|
||
|
||
If, on entry to the call, the current record is already the first record in the file or there are no records of the
|
||
current type in the file, Eofzrr will be returned, the current record will be 0 and SI will be invalid.
|
||
|
||
|
||
20-9
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
DbfFirstRead Read the first DBF record
|
||
|
||
|
||
BX The DBF handle.
|
||
RETURN: Carry clear
|
||
|
||
AX The length of the record read.
|
||
|
||
SI The offset in the main buffer of the record read.
|
||
RETURN: Carry set
|
||
|
||
EofErr There are no records in the file.
|
||
PANIC:
|
||
|
||
PanicDbf1 BX is not a valid DBF handle.
|
||
|
||
|
||
Seeks to the first record and reads it. Records are read into the buffer (supplied when the file was opened)
|
||
and the record's offset within the buffer is returned in SI.
|
||
|
||
|
||
If there are no records in the file of the current type, zoferr will be returned, and SI will be invalid.
|
||
|
||
|
||
DbfLastRead Read the last DBF record
|
||
|
||
|
||
BX The DBF handle.
|
||
RETURN: Carry clear
|
||
|
||
AX The length of the record read.
|
||
|
||
SI The offset in the main buffer of the record read.
|
||
RETURN: Carry set
|
||
|
||
EofErr There are no records in the file.
|
||
PANIC:
|
||
|
||
PanicDbf1l BX is not a valid DBF handle.
|
||
|
||
|
||
Seeks to the last record and reads it. Records are read into the buffer (supplied when the file was opened)
|
||
and the record's offset within the buffer is returned in SI.
|
||
|
||
|
||
If there are no records in the file of the current type, zofErr will be returned, and SI will be invalid.
|
||
|
||
|
||
DbfAppend Append a DBF record
|
||
|
||
|
||
BX The DBF handle.
|
||
CX The length of the record to be appended.
|
||
RETURN: Carry clear
|
||
Success
|
||
RETURN: = Carry set
|
||
OverFlowErr There are already 65534 records in the file.
|
||
RecordErr The total length of the record (including the 2 byte header) is
|
||
greater than the length of the main buffer.
|
||
PANIC:
|
||
PanicDbfl BX is not a valid DBF handle.
|
||
|
||
|
||
This service appends a record of the current type to the end of the file and makes this the current record.
|
||
|
||
|
||
The record to be written must be placed at the start of the main buffer as a pbfRecord structure which is
|
||
defined as:
|
||
|
||
|
||
typedef struct
|
||
{
|
||
UWORD header; /* Used for record header word */
|
||
UBYTE data[2]; /* Data to be written... * f
|
||
} DbfRecord;
|
||
|
||
|
||
The header word will be used to construct the header for the record so that it can be written in one.
|
||
|
||
|
||
CX is the length of the data only.
|
||
|
||
|
||
20 - 10
|
||
|
||
|
||
20 DATABASE FILE MANAGEMENT
|
||
|
||
|
||
DbfEraseRead Erase a DBF record
|
||
|
||
|
||
BX The DBF handle.
|
||
DI State.
|
||
RETURN: Carry clear
|
||
AX The length of the record read.
|
||
SI The offset in the main buffer of the record read.
|
||
DI State.
|
||
RETURN: Carry set
|
||
EofErr The current record is the end of file record.
|
||
PANIC:
|
||
PanicDbf1 BX is not a valid DBF handle.
|
||
|
||
|
||
Erases the current record and reads the next one.
|
||
|
||
|
||
A record is erased by overwriting its (4 bit) type to 0. The space used by the record can only be recovered
|
||
by calling ppfcompress. The file must be stored on a compressible medium.
|
||
|
||
|
||
If there are no records of the current type in the file or if the current record number is the last record plus
|
||
1, EofErr will be returned. If the current record is the last record in the file, it will be erased and zofErr
|
||
will be returned.
|
||
|
||
|
||
Note that pbfEraseRead may return EofErr in 2 different circumstances:
|
||
e If the current record is already the end of file record (or there are no records).
|
||
e If the current record is the last record.
|
||
|
||
|
||
In the first case, the service does nothing. In the second case, the last record is erased and the current
|
||
record becomes the end of file record. It is up to the application to deduce which of these cases has
|
||
occurred by checking whether the current record is the end of file record before calling the service
|
||
(using DbfSense and DbfCount) or by noting the decrease in the total number of records from pbfcount.
|
||
|
||
|
||
DI can be passed as pbfStateStart OF DbfStateDisabled. If it is passed as ppfstatestart, the service
|
||
must be called repeatedly until state becomes ppfstatestart again. If it is passed as ppfstateDisabled,
|
||
the service will not exit until it is finished.
|
||
|
||
|
||
DbfUpdate Update a DBF record
|
||
|
||
|
||
BX The DBF handle.
|
||
|
||
CX The length of the record to be written.
|
||
|
||
DI State.
|
||
RETURN: Carry clear
|
||
|
||
DI State.
|
||
RETURN: Carry set
|
||
|
||
EofErr The current record is the end of file record.
|
||
PANIC:
|
||
|
||
PanicDbf1 BX is not a valid DBF handle.
|
||
|
||
|
||
Erases the current record and appends the new one to the end of the file making this the new current
|
||
record. The new record to be appended will be taken from the beginning of the main buffer.
|
||
|
||
|
||
The main buffer must begin with a word where the record header will be built, followed by the record
|
||
itself.
|
||
|
||
|
||
CX is the length of the data only and does not include the word at the start.
|
||
Note that the current record will only be erased after the supplied record has been successfully appended.
|
||
|
||
|
||
If there are no records of the current type in the file or if the current record number is the last record plus
|
||
1, EofErr will be returned. If the current record is the last record in the file, it will be erased and £oferr
|
||
will be returned.
|
||
|
||
|
||
20 - 11
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
DI can be passed as pbfStateStart OF DbfStateDisabled. If it is passed as ppfstatestart, the service
|
||
must be called repeatedly until state becomes ppfstatestart again. If it is passed as ppbfstateDisabled,
|
||
the service will not exit until it is finished.
|
||
|
||
|
||
DbfFindRead Find a DBF record
|
||
|
||
|
||
AL The number of fields to search.
|
||
BX The DBF handle.
|
||
Cx The length of the buffer to match.
|
||
DL The maximum field length to match with.
|
||
DH The type and direction of the search.
|
||
DI State.
|
||
SI Pointer to the match buffer.
|
||
RETURN: Carry clear
|
||
AX The length of the record read.
|
||
DI State.
|
||
SI The offset in the main buffer of the record read.
|
||
RETURN: Carry set
|
||
EofErr No matching record was found.
|
||
PANIC:
|
||
PanicDbfl BX is not a valid DBF handle.
|
||
PanicDbf2 Parameters are invalid.
|
||
|
||
|
||
Matches the given wild-card string with the string components of each record starting at the current
|
||
record. If the current record is the end of file record, EofErr will be returned, unless DH specifies
|
||
DbfFindBackwards.
|
||
|
||
|
||
If a match is found, the record containing the match is made the current record and is read into the buffer;
|
||
the offset will be returned in SI.
|
||
|
||
|
||
AL specifies how many string fields are to be searched (the number of string fields in the Field
|
||
Information Record is now irrelevant). A value of DpfFindAllstrings must be used to specify continue
|
||
matching string fields until the end of the record is reached. The Field Information Record Is used to
|
||
specify the 'types' of the first 32 fields. After that, all fields are assumed to be strings until the end of the
|
||
record.
|
||
|
||
|
||
DL specifies the maximum length of a string field to be used in the match, i.e. longer strings are truncated
|
||
for matching purposes. 255 specifies no truncation.
|
||
|
||
|
||
DH is split into 2 halves.
|
||
The most significant nibble of DH specifies the type of match and must be one of the following:
|
||
|
||
|
||
DbfFindCaseIndependent Case independent match.
|
||
Dbf£fFindCaseDependent Case dependent match.
|
||
|
||
|
||
The least significant nibble of DH specifies the search direction and must be one of the following:
|
||
|
||
|
||
DbfFindForwards Search forwards from current record to next match.
|
||
DbfFindBackwards Search backwards from current record to previous match.
|
||
DbfFindFirst Search to first match in file.
|
||
|
||
DbfFindLast Search to last match in file.
|
||
|
||
|
||
If a match is not found, zoferr will be returned and SI will be invalid. The current record will then be the
|
||
first record if the search was backwards or the last record number plus one (the end of file record) if the
|
||
search was forwards.
|
||
|
||
|
||
The Field Information Record contains the record structure which is used to find the string components
|
||
of the record. This is always passed to pbfopen as part of the header when a file is created and is returned
|
||
when an existing file is opened.
|
||
|
||
|
||
DI can be passed as pbfStateStart OF DbfStateDisabled. If it is passed as ppfstatestart, the service
|
||
must be called repeatedly until state becomes ppfstatestart again. If it is passed as ppbfstateDisabled,
|
||
the service will not exit until it is finished.
|
||
|
||
|
||
20 - 12
|
||
|
||
|
||
20 DATABASE FILE MANAGEMENT
|
||
|
||
|
||
DbfSense Sense the current DBF record number
|
||
BX The DBF handle.
|
||
|
||
RETURN:
|
||
AX The current record number.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Sense the current record number. This will be the last record number plus 1 if an EofErr has just been
|
||
given (unless there are no records, in which case it will be 0).
|
||
|
||
|
||
DbfCount Count the number of DBF records
|
||
BX The DBF handle.
|
||
|
||
RETURN:
|
||
AX The number of records of the current type.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Returns the number of records in the file of the current type. It will not alter the current record number.
|
||
|
||
|
||
©DbfFindReadField Find a DBF record by field
|
||
|
||
|
||
AL The number of fields to search.
|
||
|
||
BX The DBF handle.
|
||
|
||
cx The length of the buffer to match.
|
||
|
||
DL The maximum field length to match with.
|
||
|
||
DH The type and direction of the search.
|
||
|
||
DI State.
|
||
|
||
SI Pointer to the match buffer.
|
||
|
||
DatEClassPtr The starting field from which to search (0 for first field)
|
||
RETURN: = Carry clear
|
||
|
||
AX The length of the record read.
|
||
|
||
DI State.
|
||
|
||
SI The offset in the main buffer of the record read.
|
||
RETURN: Carry set
|
||
|
||
EofErr No matching record was found.
|
||
PANIC:
|
||
|
||
PanicDbfl BX is not a valid DBF handle.
|
||
|
||
PanicDbf£2 Parameters are invalid.
|
||
|
||
|
||
Matches the given wild-card string with the string components of the specified fields in each record
|
||
starting at the current record. If the current record is the end of file record, FofErr will be returned
|
||
unless DH specifies pbfFindBackwards.
|
||
|
||
|
||
This service is the same as DbfFindRead except that DatEClassPtr specifies the starting field from which
|
||
the search starts (with 0 specifying the first field). For example, to search only the third, fourth and fifth
|
||
text fields, set patEClassPtr to 2 and AL to 3.
|
||
|
||
|
||
20 - 13
|
||
|
||
|
||
20 - 14
|
||
|
||
|
||
CHAPTER 21
|
||
|
||
|
||
HARDWARE MANAGEMENT
|
||
|
||
|
||
HwComboOn Switch on the combo
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
This service will switch on the combo hardware subsystem (CHS) if not already switched on.
|
||
Although the CHS has been enabled, it can be accessed either by an external expansion device or by
|
||
Asicl. If it is desired to access the CHS using Asicl then the SLDTX bit in the Asic! Control register
|
||
|
||
|
||
needs to be enabled as well. Before turning the CHS on, it is important to see if it is available for use by
|
||
calling the HwGet Combo service.
|
||
|
||
|
||
This service is equivalent to HwComboOnInput for all variants except Asic9 variants (Series 3a). On Asic9
|
||
variants HwComboOn puts the codec into output mode, while HwcComboonInput puts it into input mode.
|
||
|
||
|
||
HwComboOftf Switch off the combo
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service will switch off the combo hardware subsystem (CHS) if not already switched off.
|
||
|
||
|
||
HwPacksOn Switch on the SSDs
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
This service will switch on the SSD subsystem (SSDS) if not already switched on.
|
||
|
||
|
||
This service is provided for the built in SSD drivers and should not be called by any other drivers or
|
||
applications.
|
||
|
||
|
||
HwPacksOff Switch off the SSDs
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
This service will switch off the SSD subsystem (SSDS) if not already switched off.
|
||
|
||
|
||
This service is provided for the built in SSD drivers and should not be called by any other drivers or
|
||
applications.
|
||
|
||
|
||
21-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
HwSetA2Control1Bits Set bits Asic2 register 1
|
||
|
||
|
||
AL Mask of bits to be set.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to set bits in Asic2 control register 1.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
Each bit which is set in the mask will cause the corresponding bit in the control register to be set.
|
||
|
||
|
||
HwClearA2Control1 Bits Clear bits Asic2 register 1
|
||
|
||
|
||
AL Mask of bits to be cleared.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to clear bits in Asic2 control register 1.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
Each bit which is set in the mask will cause the corresponding bit in the control register to be cleared.
|
||
|
||
|
||
HwReadA2Control1 Read Asic2 register 1
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AL The value currently in control register 1.
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to read Asic2 control register 1.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
In effect, it returns the value in its up-to-date copy.
|
||
|
||
|
||
HwWriteA2Control1 Write Asic2 register 1
|
||
|
||
|
||
AL The new value to be written to control register 1.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to write to Asic2 control register 1.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
In effect, it updates the value in its up-to-date copy and then writes to the Asic2 register.
|
||
|
||
|
||
HwSetA2Control2Bits Set bits Asic2 register 2
|
||
|
||
|
||
AL Mask of bits to be set.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to set bits in Asic2 control register 2.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
Each bit set in the mask will cause the corresponding bit in the control register to be set.
|
||
|
||
|
||
21-2
|
||
|
||
|
||
21 HARDWARE MANAGEMENT
|
||
|
||
|
||
HwClearA2Control2Bits Clear bits Asic2 register 2
|
||
|
||
|
||
AL Mask of bits to be cleared.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to clear bits in Asic2 control register 2.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
Each bit set in the mask will cause the corresponding bit in the control register to be cleared.
|
||
|
||
|
||
HwReadA2Control2 Read Asic2 register 2
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AL The value currently in control register 2.
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to read Asic2 control register 2.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
In effect, it returns the value in its up-to-date copy.
|
||
|
||
|
||
HwWriteA2Control2 Write Asic2 register 2
|
||
|
||
|
||
AL The new value to be written to control register 2.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to write to Asic2 control register 2.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
In effect, it updates the value in its up-to-date copy and then writes to the Asic2 register.
|
||
|
||
|
||
HwSetA2Control3Bits Set bits Asic2 register 3
|
||
|
||
|
||
AL Mask of bits to be set.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to set bits in Asic2 control register 3.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
Each bit set in the mask will cause the corresponding bit in the control register to be set.
|
||
|
||
|
||
HwClearA2Control3Bits Clear bits Asic2 register 3
|
||
|
||
|
||
AL Mask of bits to be cleared.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to clear bits in Asic2 control register 3.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
Each bit set in the mask will cause the corresponding bit in the control register to be cleared.
|
||
|
||
|
||
21-3
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
HwReadA2Control3 Read Asic2 register 3
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AL The value currently in control register 3.
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to read Asic2 control register 3.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
In effect, it returns the value in its up-to-date copy.
|
||
|
||
|
||
HwWriteA2Control3 Write Asic2 register 3
|
||
|
||
|
||
AL The new value to be written to control register 3.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to write to Asic2 control register 3.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
In effect, it updates the value in its up-to-date copy and then writes to the Asic2 register.
|
||
|
||
|
||
HwSelectChannel Select a serial channel
|
||
AL The new channel to be selected.
|
||
|
||
RETURN:
|
||
AL The channel that was previously selected.
|
||
|
||
|
||
PANIC: None
|
||
This service will select which channel the serial controller in Asic2 will be connected to for subsequent
|
||
serial data transfers.
|
||
|
||
|
||
This service is necessary because the operating system cannot read directly from Asic2 and must keep its
|
||
own up-to-date copy of the register contents.
|
||
|
||
|
||
Interrupt service routines which use the serial controller must re-select the channel that was previously
|
||
selected. This can be achieved by saving the value returned in AL when this service is called, as it is the
|
||
currently selected channel.
|
||
|
||
|
||
HwNullFrame Send a serial null frame
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service is useful for sending a null frame to a serial channel. This is important in order to guarantee
|
||
that the controller and the slave device attached to the channel are synchronised.
|
||
|
||
|
||
HwSwitchOff Switch off
|
||
|
||
|
||
cx The number of quarter seconds to switch off for.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service may be called to switch off the machine. In fact, the machine is never truly switched off and
|
||
can wake up again in order to service an event in the future. The value in CX determines how many
|
||
quarters of a second must pass before the machine will wake up again. If the value in CX is less than or
|
||
equal to 8 then this service will do nothing.
|
||
|
||
|
||
21-4
|
||
|
||
|
||
21 HARDWARE MANAGEMENT
|
||
|
||
|
||
If an absolute timer is pending or a process is sleeping until an absolute time then the value in CX will be
|
||
adjusted to make sure that the machine wakes up in time to service the outstanding timer or to wake up
|
||
the process.
|
||
|
||
|
||
If the value in CX is OxFFFF then the machine will just switch off until an outstanding absolute time
|
||
event is ready to expire or until the user switches on the machine.
|
||
|
||
|
||
The IBM PC version of EPOC does not support this service; instead, the HwExit service can be called
|
||
which will return to DOS.
|
||
|
||
|
||
HwExit Exit to DOS
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service is only available on the IBM PC version of Epoc/Os and will exit from the operating system
|
||
and return to DOS.
|
||
|
||
|
||
HwGetCombo Capture the combo subsystem
|
||
|
||
|
||
None
|
||
RETURN: = Carry clear
|
||
Success
|
||
RETURN: Carry set
|
||
InUseErr The combo subsystem is already captured.
|
||
PANIC: None
|
||
This service acts as a gate to the combo subsystem so that two device drivers do not both try to access the
|
||
|
||
|
||
combo subsystem at the same time.
|
||
|
||
|
||
After capturing the combo subsystem, it must be released by calling the Hwrreecombo service when no
|
||
longer required
|
||
|
||
|
||
HwFreeCombo Free the combo subsystem
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service will free the combo subsystem after it has been captured with the HwGet combo service.
|
||
|
||
|
||
HwGetChannel Get a channel
|
||
|
||
|
||
AL The mask of the channels being captured.
|
||
RETURN: Carry clear
|
||
Success.
|
||
RETURN: = Carry set
|
||
InUseErr The channel is already captured.
|
||
PANIC: None
|
||
This service provides a gate to control access to the hardware interrupt service routines.
|
||
|
||
|
||
It is also a handy way of ensuring that two device drivers do not start talking to the same expansion port at
|
||
the same time, by getting the channel which is associated with that expansion port.
|
||
|
||
|
||
The strategy is to request the channel before trying to talk to the hardware. If the channel is allocated
|
||
successfully, then all is well and the driver can then talk to the expansion port. Whenever a driver has
|
||
captured a channel in this way it must free the channel when it is no longer required by calling the
|
||
HwFreeChannel Service.
|
||
|
||
|
||
21-5
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
HwFreeChannel Free a channel
|
||
|
||
|
||
AL The mask of the channels being freed.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service will free a channel after it has been captured with the HwGetChannel service.
|
||
|
||
|
||
HwGetPsuType Get the power supply type
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AL The power supply type.
|
||
PANIC: None
|
||
|
||
|
||
There are two power supply variants in the MC range of computers which use the EPOC operating
|
||
system. Consequently there are two version of the operating system due to the different power supply
|
||
handling code. Apart from this service, EPOC hides the differences between the two power supplies. The
|
||
REPRO software which will load a new operating system into the FLASH memory uses this service to
|
||
know which version of EPOC to load.
|
||
|
||
|
||
HwGetSupplyStatus Get supplies status
|
||
|
||
|
||
SS:BX Pointer to a SupplyEnt structure.
|
||
RETURN: None
|
||
PANIC: None
|
||
This service may be used to get the current status of the various supplies.
|
||
|
||
|
||
The value returned for the main battery and lithium batteries are in millivolts. The MainsPresent field
|
||
can be:
|
||
|
||
|
||
<0 mains status cannot be determined at the current
|
||
time (if the SSD doors are open)
|
||
|
||
|
||
0 mains is not present
|
||
1 mains is present
|
||
HwSupplyWarnings Get supplies warnings
|
||
SS:BX Pointer to a SupplyWarningsEnt Structure.
|
||
|
||
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service may be used to ask the operating system what the maximum value of the main and lithium
|
||
battery reading can be and what an appropriate warning level would be. The values in the structures are in
|
||
the same units as for the HwGet SupplyStatus, 1.e. millivolts.
|
||
|
||
|
||
This service will return different values depending on the battery type set with the censetBatteryType
|
||
service. If no battery type is set then the values for an alkaline battery will be returned.
|
||
|
||
|
||
HwLcdContrastDelta Change the LCD contrast
|
||
|
||
|
||
AL +ve to step contrast up.
|
||
-ve to step contrast down.
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to step the LCD contrast up or down depending on whether AL is positive or
|
||
negative.
|
||
|
||
|
||
21-6
|
||
|
||
|
||
21 HARDWARE MANAGEMENT
|
||
|
||
|
||
HwReadLcdContrast Get current LCD contrast
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AL The current contrast value.
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to get the current contrast setting.
|
||
|
||
|
||
HwSetBackLight Set backlight control
|
||
|
||
|
||
BX The new backlight control value.
|
||
RETURN: None
|
||
PANIC: None
|
||
This service can be used to set the backlight control.
|
||
|
||
|
||
The value in BX contains two values. The bottom 15 bits are a time-out in ticks (1/32nd of a second) to
|
||
switch off the backlight. If this value is zero then the backlight is not switched off automatically.
|
||
|
||
|
||
The top bit (i.e. the sign bit), is used to enable/disable the operating system from toggling the backlight
|
||
state on reception of the backlight key. Setting the bit will disable the operating system.
|
||
|
||
|
||
HwGetBackLight Get backlight control
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AX The backlight control value.
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to get the current backlight control value.
|
||
|
||
|
||
HwBackLight Operate the backlight
|
||
|
||
|
||
AL 0 - Switch off the backlight.
|
||
1 - Switch on the backlight.
|
||
2 - Toggle the backlight.
|
||
3 - Return the backlight state.
|
||
RETURN: Carry clear
|
||
AL The previous or current backlight state:
|
||
0 - backlight is/was off.
|
||
1 - backlight is/was on.
|
||
RETURN: Carry set
|
||
Not SupportedErr Machine does not support a backlight.
|
||
PANIC: None
|
||
|
||
|
||
This service can be used to perform the following functions:
|
||
e Switch the backlight on and off.
|
||
e =6Toggle the backlight state.
|
||
e Query the current backlight state.
|
||
|
||
|
||
A backlit version of the machine can be determined by checking for the Not supportErr being returned
|
||
with AL = 3 to query the backlight state.
|
||
|
||
|
||
21-7
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
©HwGetScanCodes Scan the state of all keys
|
||
|
||
|
||
BX Pointer to 10 word array to take the scan codes.
|
||
RETURN: Nothing.
|
||
PANIC: None
|
||
|
||
|
||
Writes values to the array at BX corresponding to the state of each key on the keyboard and to each
|
||
application button. A unique bit is set for each key being pressed when this service is called. If the key is
|
||
up then no bit is set.
|
||
|
||
|
||
On the Series 3a, eleven bits are valid in each of the first eight words and the Workabout uses nine bits in
|
||
each of the first eight words. On HC machines, eight bits in ten words are valid. This service is not
|
||
available on the MC400, MC200 and Series 3.
|
||
|
||
|
||
The set of scan codes is different for each machine's keyboard layout, but is fully determined by the
|
||
position of the key on each type of machine.
|
||
|
||
|
||
The following diagrams specify the scan code associated with each key on the different machines which
|
||
support this service. Each box represents a key. The first number in each box gives the element of the
|
||
array at BX used for that key (first element 0), and the second number gives the hexadecimal mask
|
||
which, when anped with that array element, gives a non-zero result if that key is down. For example, on a
|
||
Series 3a if the Control key is being pressed, element 2 of the array anped with hex 80 is non-zero.
|
||
|
||
|
||
Series 3a keyboard
|
||
|
||
|
||
HC alphabetic keyboard
|
||
|
||
|
||
0,080 6,040 7,040
|
||
|
||
|
||
Note that the scan code (0, 080) given for the On/Off key is that for Off. The scan codes for On
|
||
(8,080 - not shown in the above diagram) and Off (0, 080) are not normally received by application code.
|
||
|
||
|
||
21-8
|
||
|
||
|
||
21 HARDWARE MANAGEMENT
|
||
|
||
|
||
The Off scan code is received if the application captures the Off key (capture of this key by the HC
|
||
Command Shell must first be disabled - see the Command Shell chapter of the HC Programming Guide)
|
||
|
||
|
||
HC numeric keyboard
|
||
|
||
|
||
0,080 6,040 7,040
|
||
|
||
|
||
0,020 3,001 3,002 3,004 3,008 0,010
|
||
6,020 1,004 1,008 1,010 5,002 6,002
|
||
|
||
|
||
5,001 0,040 0,004 0,008
|
||
5,010 5,008 5,004 7,002
|
||
0,001
|
||
|
||
|
||
Note that the scan code given for the On/Off key (0, 080) is that for Off. The scan codes for On
|
||
|
||
(g,080 - not shown in the above diagram) and Off (0, 080) are not normally received by application code.
|
||
The Off scan code is received if the application captures the Off key (capture of this key by the HC
|
||
Command Shell must first be disabled - see the Command Shell chapter of the HC Programming Guide).
|
||
|
||
|
||
Workabout keyboard
|
||
|
||
|
||
C=
|
||
|
||
|
||
3,040 4,040 5,040] |6,040 oa
|
||
6.020 7,020 0,040 1,040 eS
|
||
2,020 3,020 4,020 5,020
|
||
6,010 7,010 0,020 1,020
|
||
2,010 3,010 4,010 5,010
|
||
(—
|
||
6, 008 7,008 0,010 1,010
|
||
NG
|
||
0,00 1,00 2,00 3,00 4,00 5,00
|
||
2,004 3,004 4,004 5,004 6,004 7,004
|
||
4,004 5,002 6, 002 7,002 0,004 1,004
|
||
0,00] 1,004 0,004 1,004 2,002 3,002
|
||
( >
|
||
2,001 4,00] 5,00]
|
||
S S
|
||
(— ay
|
||
3,001 6,00] 7,00]
|
||
X S
|
||
|
||
|
||
21-9
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Note that the scan code given for the On/Esc key (0,100) is the Escape scan code. The scan codes for On
|
||
(0, 080 - not shown in the above diagram) and Off (6, 020) are not normally received by application code.
|
||
The Off scan code is received if the application captures the Off key.
|
||
|
||
|
||
©HwComboOninput Switch on the combo in input mode
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service is equivalent to HwComboon for all variants except Asic9 variants (Series 3a). On Asic9
|
||
variants HwComboon turns on the codec and puts it into output mode. HwcomboOnInput also turns on the
|
||
codec but puts it into input mode.
|
||
|
||
|
||
©HwSupplyinfo Get additional power supply data
|
||
|
||
|
||
BX Pointer to supplyInfokEnt structure
|
||
RETURN: Nothing.
|
||
PANIC: None.
|
||
|
||
|
||
Write information concerning the various power supplies to the supplyInfokEnt structure at BX. This
|
||
information can be used to monitor battery and mains usage. Only Asic9 variants (Series 3a) return
|
||
meaningful data.
|
||
|
||
|
||
The supplyInfoknt structure is defined in epocsibo.inc.
|
||
|
||
|
||
Hardware Management update
|
||
|
||
|
||
The majority of the additional EPOC hardware management system services described in this section were
|
||
introduced for the Series 3c and Siena.
|
||
|
||
|
||
With the exception of the HC, all the services are, in principle, available on any machine that contains
|
||
EPOC version 3.90F or later. On an HC with a suitable version of EPOC, all the functions described in
|
||
this section should generate an =_GEN_NsuP error.
|
||
|
||
|
||
Some services require the presence of hardware that is not built into all machines in the SIBO range. If
|
||
the relevant hardware is not present on a particular machine, calling the service will either have no effect
|
||
or return an error of —_GEN_Nnsup. The descriptions of such services contain a list of the machines on
|
||
which they are intended to be used.
|
||
|
||
|
||
HwResetBatteryStatus Reset the battery status
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
Reset the battery status information. This service has the same effect as replacing the main batteries.
|
||
|
||
|
||
HwEnableAutoBatReset Enable/disable battery info reset
|
||
BX Enable/disable/query the status
|
||
|
||
RETURN:
|
||
AL The current auto battery reset status, if queried, otherwise none.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service is primarily intended for use on the Workabout.
|
||
Enable or disable an auto reset of the battery information when the battery is recharged in-place.
|
||
The value of BX should be 1 to enable, 0 to disable, or -1 to query the auto reset status.
|
||
|
||
|
||
If querying the status, a value of lor 0 is returned in AX, respectively meaning that auto reset is enabled
|
||
or disabled.
|
||
|
||
|
||
21-10
|
||
|
||
|
||
21 HARDWARE MANAGEMENT
|
||
|
||
|
||
HwGetBatData Return battery information
|
||
None
|
||
|
||
RETURN:
|
||
AX Pointer to battery information.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Return the address of the supplyInfoEnt battery information structure in the OS data segment.
|
||
The structure is defined as:
|
||
|
||
|
||
SupplyInfoEnt struc
|
||
|
||
|
||
SuMainBat Level db ?
|
||
SuMainBatStatus db ?
|
||
SuBackupBatLevel db ?
|
||
SuDcLevel db ?
|
||
SuWarningFlags dw ?
|
||
SuInsertionDate dd 2
|
||
SuTicksInUseBattery dd ?
|
||
SuTicksInUseDc dd ?
|
||
SuMilliampTicks dd ?
|
||
|
||
|
||
SupplyInfoEnt ends
|
||
|
||
|
||
This structure is equivalent to the PLIB &_suppLy_inro struct.
|
||
|
||
|
||
HwReLogPacks Relog the SSDs
|
||
|
||
|
||
None
|
||
|
||
|
||
RETURN: = Carry clear
|
||
|
||
|
||
Success
|
||
RETURN: = Carry set
|
||
AL Error number
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Relog the packs. This service has the same effect as opening and then closing the pack doors on a
|
||
Series 3a.
|
||
|
||
|
||
This service is supplied for internal use and is not intended to be called by application code.
|
||
|
||
|
||
HwSetiRPowerLevel Set the IR power level
|
||
BX Required power level
|
||
|
||
RETURN:
|
||
AX The previous IR power level
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
This service is only available on Series 3c and Siena machines.
|
||
Set the power level used to drive the IR device to be high or low.
|
||
BX should be passed as | to set the high power level, or 0 to set the low power level.
|
||
|
||
|
||
Return a value (0 for low and 1 for high) representing the IR power level as it was before the service was
|
||
called.
|
||
|
||
|
||
HwReturnTickCount Sense the current tick count
|
||
|
||
|
||
None
|
||
RETURN:
|
||
|
||
AX Tick count.
|
||
PANIC: None
|
||
|
||
|
||
Return, in AX, a value that is incremented on every tick (32 times per second).
|
||
|
||
|
||
21-11
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
HwReturnExpansionPortState Sense the expansion port state
|
||
|
||
|
||
None
|
||
|
||
RETURN:
|
||
AX Expansion port state.
|
||
BX At present, always zero.
|
||
|
||
|
||
PANIC: None
|
||
|
||
|
||
Return the type and current state of the expansion port:
|
||
|
||
|
||
The value of AL is non-zero if the pack doors are open. Additionally, on Series 3c machines, it is non zero
|
||
for a short period after something is plugged into, or removed from, the Honda connector.
|
||
|
||
|
||
AH contains one of the following values in its lower three bits:
|
||
|
||
|
||
0x00 Expansion port is Series 3/ Series 3a 6-pin
|
||
0x01 Expansion port is Workabout LIF
|
||
|
||
0x02 Expansion port is Siena Honda
|
||
|
||
0x03 Expansion port is Series 3c Honda
|
||
|
||
0x04 Expansion port is HC
|
||
|
||
|
||
In addition, the following value may be ored into AH:
|
||
|
||
|
||
0x80 The machine contains the Condor chip
|
||
|
||
|
||
HwExpansionOn Enable power to Honda connector
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service is only available on Series 3c machines.
|
||
Enable the supply of power to a peripheral device connected to the machine via the Honda connector.
|
||
|
||
|
||
This service is provided for the built-in SSD drivers and should not be called by any other drivers or
|
||
applications.
|
||
|
||
|
||
HwExpansionOff Disable power to Honda connector
|
||
|
||
|
||
None
|
||
RETURN: None
|
||
PANIC: None
|
||
|
||
|
||
This service is only available on Series 3c machines.
|
||
Disable the supply of power to a peripheral device connected to the machine via the Honda connector.
|
||
|
||
|
||
This service is provided for the built-in SSD drivers and should not be called by any other drivers or
|
||
applications.
|
||
|
||
|
||
21-12
|
||
|
||
|
||
APPENDIX A
|
||
|
||
|
||
INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
Introduction
|
||
|
||
|
||
Epoc system services are invoked using the INT nn 8086 instruction. There are two types of system
|
||
services.
|
||
|
||
|
||
e Single - which just do one function.
|
||
e = Multi - which do more than one function.
|
||
|
||
|
||
The multi service functions also require the AH register to be loaded with a value which selects the actual
|
||
function to be performed.
|
||
|
||
|
||
The following section lists the actual numbers associated with the system services and their function
|
||
numbers. In the listings, names starting with Nm are function numbers and should be placed in AH. All
|
||
names starting with Nm are made up of Nm followed by a number of name components. The first
|
||
component after Nm is the name of the interrupt to invoke. For example:
|
||
|
||
|
||
NmFilOpen, where Fil is the first name component uses FilManager.
|
||
|
||
|
||
NmHeapFreeCell, where Heap is the first name component uses HeapManager. NmDbfClose, where Dbf
|
||
is the first name component uses DbfManager.
|
||
|
||
|
||
MOV AH, NmFilOpen
|
||
INT FilManager
|
||
|
||
|
||
All names not starting with Nm are the names of the single and multi level interrupts.
|
||
|
||
|
||
In the documentation, functions are referred to by the name with the leading Nm missing. Thus SegOpen
|
||
can be called as follows:
|
||
|
||
|
||
MOV AH, NmSegOpen
|
||
INT SegManager
|
||
|
||
|
||
Single service interrupts are just referred to by their names. Thus StringLength is called as follows:
|
||
INT StringLength
|
||
As usual there are a few exceptions to this rule:
|
||
|
||
|
||
e NmLongUnsignedIntRandom is under INT GenManager. NmloOpen is under INT DevManager.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Alphabetical list of functions
|
||
|
||
|
||
CONVMANAGER
|
||
|
||
|
||
NMCONVARGUMENTSTOBUFFER
|
||
|
||
|
||
NMCONVFLOATTOBUFFER
|
||
|
||
|
||
NMCONVINTI
|
||
|
||
|
||
TOBUFFER
|
||
|
||
|
||
NMCONVLONGINI
|
||
|
||
|
||
NMCONVSTRI
|
||
|
||
|
||
NMCONVSTRI
|
||
|
||
|
||
NMCONVSTRI
|
||
|
||
|
||
NMCONVSTRI
|
||
|
||
|
||
NMCONVSTRI
|
||
|
||
|
||
NMCONVUNSI
|
||
|
||
|
||
NG1
|
||
|
||
|
||
NG1
|
||
|
||
|
||
NG1
|
||
|
||
|
||
NG1
|
||
|
||
|
||
[TTOBUFFER
|
||
|
||
|
||
TOF LOAT
|
||
|
||
|
||
TOINT
|
||
|
||
|
||
TOLONGINT
|
||
|
||
|
||
TOUNSIGNEDINT
|
||
|
||
|
||
NG1
|
||
|
||
|
||
TOUNS IGNEDLONGINT
|
||
|
||
|
||
GNEDINTTOBUFFER
|
||
|
||
|
||
NMCONVUNSI
|
||
|
||
|
||
DBFMANAGER
|
||
|
||
|
||
GNEDLONGINTTOBUFFER
|
||
|
||
|
||
NMDBFABSREAD
|
||
|
||
|
||
NMDBFABSREADSENSE
|
||
|
||
|
||
NMDBFAPPEND
|
||
|
||
|
||
NMDBFBACKREAD
|
||
|
||
|
||
NMDBFCLOSE
|
||
|
||
|
||
NMDBFCOMPRESS
|
||
|
||
|
||
NMDBFCOP YDOWN
|
||
|
||
|
||
NMDBFCOPYFILE
|
||
|
||
|
||
NMDBF COUNT
|
||
|
||
|
||
NMDBFDESCRECORDREAD
|
||
|
||
|
||
NMDBFDESCRECORDWRITE
|
||
|
||
|
||
NMDBFERASEREAD
|
||
|
||
|
||
NMDBFEXTHEADERREAD
|
||
|
||
|
||
NMDBFEXTHEADERWRITE
|
||
|
||
|
||
NMDBFFILESIZE
|
||
|
||
|
||
NMDBFF INDREAD
|
||
|
||
|
||
NMDBFF INDREADFIELD
|
||
|
||
|
||
NMDBFFIRSTREAD
|
||
|
||
|
||
NMDBFF LUSH
|
||
|
||
|
||
NMDBFLASTREAD
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
OO8AH
|
||
|
||
|
||
0004H
|
||
|
||
|
||
0009H
|
||
|
||
|
||
0002H
|
||
|
||
|
||
0003H
|
||
|
||
|
||
OOOAH
|
||
|
||
|
||
0007H
|
||
|
||
|
||
0008H
|
||
|
||
|
||
0005H
|
||
|
||
|
||
OO06H
|
||
|
||
|
||
OOOOH
|
||
|
||
|
||
0001H
|
||
|
||
|
||
OOD8H
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
DBFNEXTREAD
|
||
|
||
|
||
DBFOPEN
|
||
|
||
|
||
DBFSENSE
|
||
|
||
|
||
DBF TRASH
|
||
|
||
|
||
DBFUPDATE
|
||
|
||
|
||
DBFVERSION
|
||
|
||
|
||
DEVMANAGER
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
DEVDELETE
|
||
|
||
|
||
DEVF IND
|
||
|
||
|
||
DEVGETPDDADDRESS
|
||
|
||
|
||
DEVHOLD
|
||
|
||
|
||
DEVINSTALL
|
||
|
||
|
||
DEVLOADLDD
|
||
|
||
|
||
DEVLOADPDD
|
||
|
||
|
||
DEVOPENPDD
|
||
|
||
|
||
DEVQUERYUNITS
|
||
|
||
|
||
DEVREMOVE
|
||
|
||
|
||
DEVRESUME
|
||
|
||
|
||
DEVVECTOR
|
||
|
||
|
||
IOOPEN
|
||
|
||
|
||
FILMANAGER
|
||
|
||
|
||
NMF ILCHANGEDIRECTORY
|
||
|
||
|
||
NMF ILCONNECT
|
||
|
||
|
||
NMF ILDELETE
|
||
|
||
|
||
NMF ILEXECUTE
|
||
|
||
|
||
NMF ILLOCCHANGED
|
||
|
||
|
||
NMF ILLOCDEVICE
|
||
|
||
|
||
NMF ILLOCREADPDD
|
||
|
||
|
||
NMF ILMAKEDIRECTORY
|
||
|
||
|
||
NMF ILOPENUNIQUE
|
||
|
||
|
||
NMF ILPARSE
|
||
|
||
|
||
NMF ILPATHGET
|
||
|
||
|
||
NMF ILPATHGETBYID
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
OOODH
|
||
|
||
|
||
0000H
|
||
|
||
|
||
0015H
|
||
|
||
|
||
0003H
|
||
|
||
|
||
0013H
|
||
|
||
|
||
OOOAH
|
||
|
||
|
||
0085H
|
||
|
||
|
||
0087H
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
NMF ILPATHSET
|
||
|
||
|
||
NMFILPATHTEST
|
||
|
||
|
||
NMF I LRENAME
|
||
|
||
|
||
NMFILSETFILEDATE
|
||
|
||
|
||
NMFILSETINITIALPATH
|
||
|
||
|
||
NMFILSTATUSDEVICE
|
||
|
||
|
||
NMFILSTATUSGET
|
||
|
||
|
||
NMFILSTATUSSET
|
||
|
||
|
||
NMFILSTATUSSYSTEM
|
||
|
||
|
||
NMFILSYSTEMATTACH
|
||
|
||
|
||
NMFILSYSTEMDETACH
|
||
|
||
|
||
FLOATMANAGER
|
||
|
||
|
||
NMFLOATACOS
|
||
|
||
|
||
NMF LOATASIN
|
||
|
||
|
||
NMF LOATATAN
|
||
|
||
|
||
NMFLOATCOS
|
||
|
||
|
||
NMF LOATEXP
|
||
|
||
|
||
NMF LOATINT
|
||
|
||
|
||
NMF LOATLN
|
||
|
||
|
||
NMF LOATLOG
|
||
|
||
|
||
NMF LOATMOD
|
||
|
||
|
||
NMF LOATPOW
|
||
|
||
|
||
NMF LOATRAND
|
||
|
||
|
||
NMFLOATSIN
|
||
|
||
|
||
NMF LOATSQRT
|
||
|
||
|
||
NMF LOATTAN
|
||
|
||
|
||
GENMANAGER
|
||
|
||
|
||
NMGENALARMHOOK
|
||
|
||
|
||
NMGENALARMID
|
||
|
||
|
||
NMGENALARMUNHOOK
|
||
|
||
|
||
NMGENCRC
|
||
|
||
|
||
NMGENDEFERREDMODE
|
||
|
||
|
||
NMGENENVBUFFERDELETE
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
0004
|
||
|
||
|
||
0005H
|
||
|
||
|
||
0007
|
||
|
||
|
||
0013H
|
||
|
||
|
||
0012H
|
||
|
||
|
||
OO0A
|
||
|
||
|
||
0008
|
||
|
||
|
||
0009H
|
||
|
||
|
||
OOOBH
|
||
|
||
|
||
OOOE
|
||
|
||
|
||
OOOFH
|
||
|
||
|
||
008C
|
||
|
||
|
||
oO
|
||
|
||
fo}
|
||
|
||
fo}
|
||
|
||
as
|
||
r
|
||
|
||
|
||
oO
|
||
|
||
oO
|
||
|
||
oO
|
||
|
||
Ww
|
||
r
|
||
|
||
|
||
fo}
|
||
|
||
fo}
|
||
|
||
oO
|
||
|
||
ray
|
||
r
|
||
|
||
|
||
Le
|
||
|
||
fo}
|
||
|
||
oO
|
||
|
||
oO)
|
||
r
|
||
|
||
|
||
fo}
|
||
|
||
fo}
|
||
|
||
fo}
|
||
|
||
~
|
||
r
|
||
|
||
|
||
oO
|
||
|
||
fo}
|
||
|
||
oa
|
||
|
||
foo)
|
||
r
|
||
|
||
|
||
fo)
|
||
fo)
|
||
fo)
|
||
aa
|
||
"
|
||
|
||
|
||
0O8BH
|
||
|
||
|
||
002BH
|
||
|
||
|
||
002DH
|
||
|
||
|
||
002CH
|
||
|
||
|
||
0029H
|
||
|
||
|
||
0008H
|
||
|
||
|
||
0023H
|
||
|
||
|
||
NMGENENVBUFFERF IND
|
||
|
||
|
||
NMGENENVBUFFERGET
|
||
|
||
|
||
NMGENENVBUFFERSET
|
||
|
||
|
||
NMGENENVSTRINGDELETE
|
||
|
||
|
||
NMGENENVSTRINGF IND
|
||
|
||
|
||
NMGENENVSTRINGGET
|
||
|
||
|
||
NMGENENVSTRINGSET
|
||
|
||
|
||
NMGENGETAMPMTEXT
|
||
|
||
|
||
NMGENGETAUTOMAINS
|
||
|
||
|
||
NMGENGETAUTOSWITCHOFF VALUE
|
||
|
||
|
||
NMGENGETBATTERYTYPE
|
||
|
||
|
||
NMGENGETCOMMANDLINE
|
||
|
||
|
||
NMGENGETCOUNTRYDATA
|
||
|
||
|
||
NMGENGETERRORTEXT
|
||
|
||
|
||
NMGENGETLANGUAGECODE
|
||
|
||
|
||
NMGENGETNOTIFYSTATE
|
||
|
||
|
||
NMGENGETOSDATA
|
||
|
||
|
||
NMGENGETRAMSIZEINPARAS
|
||
|
||
|
||
NMGENGETSOUNDFLAGS
|
||
|
||
|
||
NMGENGETSUFFIXES
|
||
|
||
|
||
NMGENGETTEXT
|
||
|
||
|
||
NMGENLCDTYPE
|
||
|
||
|
||
NMGENMARKACTIVE
|
||
|
||
|
||
NMGENMARKNONACTIVE
|
||
|
||
|
||
NMGENMASKDECRYPT
|
||
|
||
|
||
NMGENMASKENCRYPT
|
||
|
||
|
||
NMGENMASKINIT
|
||
|
||
|
||
NMGENNOTIFY
|
||
|
||
|
||
NMGENNOTIFYERROR
|
||
|
||
|
||
NMGENNOTIFYHOOK
|
||
|
||
|
||
NMGENNOTIFYUNHOOK
|
||
|
||
|
||
NMGENPARSE
|
||
|
||
|
||
NMGENPASSWORDCONTROL
|
||
|
||
|
||
NMGENPASSWORDQUERY
|
||
|
||
|
||
NMGENPASSWORDSET
|
||
|
||
|
||
NMGENPASSWORDTEST
|
||
|
||
|
||
NMGENRESETREVECTOR
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
NMGENROMVERS ION
|
||
|
||
|
||
NMGENSET
|
||
|
||
|
||
NMGENSET
|
||
|
||
|
||
NMGENSET
|
||
|
||
|
||
NMGENSET
|
||
|
||
|
||
NMGENSET
|
||
|
||
|
||
NMGENSET
|
||
|
||
|
||
NMGENSET
|
||
|
||
|
||
NMGENSET
|
||
|
||
|
||
NMGENSET
|
||
|
||
|
||
TAUTOMAINS
|
||
|
||
|
||
TAUTOSWITCHOFF VALUE
|
||
|
||
|
||
[TBATTERYTYPE
|
||
|
||
|
||
[CONFIG
|
||
|
||
|
||
TCOUNTRYDATA
|
||
|
||
|
||
[NOTIFYSTATE
|
||
|
||
|
||
TONEVENTS
|
||
|
||
|
||
TREVECTOR
|
||
|
||
|
||
TSOUNDF LAGS
|
||
|
||
|
||
NMGENSOUND
|
||
|
||
|
||
NMGENSTARTREASON
|
||
|
||
|
||
NMGENTICKLE
|
||
|
||
|
||
NMGENVERSION
|
||
|
||
|
||
NMLONGUNSIGNEDINTRANDOM
|
||
|
||
|
||
HEAPMANAGER
|
||
|
||
|
||
NMHEAPADJUSTCELLSIZE
|
||
|
||
|
||
NMHEAPALLOCATECELL
|
||
|
||
|
||
NMHEAPCELLSIZE
|
||
|
||
|
||
NMHEAPFREECELL
|
||
|
||
|
||
NMHEAPFREEMEMORY
|
||
|
||
|
||
NMHEAPREALLOCATECELL
|
||
|
||
|
||
NMHEAPSETGRANULARITY
|
||
|
||
|
||
HWMANAGER
|
||
|
||
|
||
NMHWBACKLIGHT
|
||
|
||
|
||
NMHWCLEARA2CONTROLIBITS
|
||
|
||
|
||
NMHWCLEARA2CONTROL2BITS
|
||
|
||
|
||
NMHWCLEARA2CONTROL3BITS
|
||
|
||
|
||
NMHWCOMBOOFF
|
||
|
||
|
||
NMHWCOMBOON
|
||
|
||
|
||
NMHWCOMBOONINPUT
|
||
|
||
|
||
NMHWEXIT
|
||
|
||
|
||
NMHWFORCESUPPLYREADING
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
0081
|
||
|
||
|
||
OO8E
|
||
|
||
|
||
0020
|
||
|
||
|
||
0005
|
||
|
||
|
||
0009
|
||
|
||
|
||
000D
|
||
|
||
|
||
0001
|
||
|
||
|
||
0000
|
||
|
||
|
||
0021
|
||
|
||
|
||
0016
|
||
|
||
|
||
001D
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
H
|
||
|
||
|
||
WFREECHANNEL
|
||
|
||
|
||
WFREECOMBO
|
||
|
||
|
||
WGETBACKLIGHT
|
||
|
||
|
||
WGETCHANNEL
|
||
|
||
|
||
WGETCOMBO
|
||
|
||
|
||
WGETPSUTYPE
|
||
|
||
|
||
WGETSCANCODES
|
||
|
||
|
||
WGETSUPPLYSTATUS
|
||
|
||
|
||
WLCDCONTRASTDELTA
|
||
|
||
|
||
WNULLFRAME
|
||
|
||
|
||
WPACKSOFF
|
||
|
||
|
||
WPACKSON
|
||
|
||
|
||
WREADA2CONTROL1
|
||
|
||
|
||
WREADA2CONTROL2
|
||
|
||
|
||
WREADA2CONTROL3
|
||
|
||
|
||
WREADLCDCONTRAST
|
||
|
||
|
||
WSELECTCHANNEL
|
||
|
||
|
||
WSETA2CONTROLIBITS
|
||
|
||
|
||
WSETA2CONTROL2BITS
|
||
|
||
|
||
WSETA2CONTROL3BITS
|
||
|
||
|
||
WSETBACKLIGHT
|
||
|
||
|
||
WSUPPLYINFO
|
||
|
||
|
||
WSUPPLYWARNINGS
|
||
|
||
|
||
WSWITCHOFF
|
||
|
||
|
||
WWRITEA2CONTROL1
|
||
|
||
|
||
WWRITEA2CONTROL2
|
||
|
||
|
||
WWRITEA2CONTROL3
|
||
|
||
|
||
IOMANAGER
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM
|
||
|
||
|
||
NMI
|
||
|
||
|
||
OADDAPPLICATIONHANDLER
|
||
|
||
|
||
OADDHANDLER
|
||
|
||
|
||
IOASYNCHRONOUS
|
||
|
||
|
||
OASYNCHRONOUSNOERROR
|
||
|
||
|
||
OCLOSE
|
||
|
||
|
||
IOENABLEAPPLICATIONHANDLER
|
||
|
||
|
||
OENABLEHANDLER
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
OO1A
|
||
|
||
|
||
0018
|
||
|
||
|
||
0086
|
||
|
||
|
||
0015
|
||
|
||
|
||
000B
|
||
|
||
|
||
0000
|
||
|
||
|
||
0001
|
||
|
||
|
||
0010
|
||
|
||
|
||
0017
|
||
|
||
|
||
000D
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
OKEYANDMO
|
||
|
||
|
||
OKEYANDMO
|
||
|
||
|
||
ONEXTHALF
|
||
|
||
|
||
OPLAYSOUN
|
||
|
||
|
||
OPLAYSOUN
|
||
|
||
|
||
OPLAYSOUN
|
||
|
||
|
||
OREAD
|
||
|
||
|
||
ORECORDSO
|
||
|
||
|
||
ORECORDSO
|
||
|
||
|
||
ORECORDSO
|
||
|
||
|
||
OREMOVEAPPLICATIONHANDLER
|
||
|
||
|
||
USEASYNCHRONOUS
|
||
|
||
|
||
USEWITHWAIT
|
||
|
||
|
||
SECOND
|
||
|
||
|
||
DA
|
||
|
||
|
||
DCANCEL
|
||
|
||
|
||
DW
|
||
|
||
|
||
UNDA
|
||
|
||
|
||
UNDCANCEL
|
||
|
||
|
||
UNDW
|
||
|
||
|
||
OREMOVEHANDLER
|
||
|
||
|
||
OREQUESTRESET
|
||
|
||
|
||
OREQUESTRESETCANCEL
|
||
|
||
|
||
OROOT
|
||
|
||
|
||
OSEEK
|
||
|
||
|
||
OSHIFTSTATES
|
||
|
||
|
||
OSIGNAL
|
||
|
||
|
||
OSIGNALBYPID
|
||
|
||
|
||
OSIGNALBYP IDNORESCHED
|
||
|
||
|
||
OSIGNALKILLASYNCHRONOUS
|
||
|
||
|
||
OSIGNALKILLCANCEL
|
||
|
||
|
||
OSUPER
|
||
|
||
|
||
OWAITFORS
|
||
|
||
|
||
OWAITFORS
|
||
|
||
|
||
IGNAL
|
||
|
||
|
||
IGNALNOHANDLER
|
||
|
||
|
||
OWAITFORSTATUS
|
||
|
||
|
||
OWITHWAIT
|
||
|
||
|
||
OWRITE
|
||
|
||
|
||
OYIELD
|
||
|
||
|
||
IOSERMANAGER
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
OSERADDHANDLER
|
||
|
||
|
||
OSERATTACHONOPENCHAN
|
||
|
||
|
||
OSERCANCELALLSIGNALUSER
|
||
|
||
|
||
OSERCANCELIOREQUEST
|
||
|
||
|
||
OSERCHECKREADSI
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
001C
|
||
|
||
|
||
0014
|
||
|
||
|
||
OODE
|
||
|
||
|
||
0001
|
||
|
||
|
||
0O00D
|
||
|
||
|
||
0O01C
|
||
|
||
|
||
001B
|
||
|
||
|
||
0011
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
OSERCHECKWRITESI
|
||
|
||
|
||
OSERCLOSETIMERHANDLER
|
||
|
||
|
||
IOSERDETACHFREE
|
||
|
||
|
||
OSERFREE
|
||
|
||
|
||
OSERHANDLERSAVEERROR
|
||
|
||
|
||
IOSERONOPENCHAN
|
||
|
||
|
||
OSEROPEN
|
||
|
||
|
||
OSEROPENHANDLER
|
||
|
||
|
||
IOSEROPENT IMERHANDLER
|
||
|
||
|
||
OSERQUEUEREAD
|
||
|
||
|
||
OSERQUEUESUPER
|
||
|
||
|
||
OSERQUEUETIMER
|
||
|
||
|
||
OSERQUEUEWRITE
|
||
|
||
|
||
OSERREMOVEHANDLER
|
||
|
||
|
||
OSERSENSEONOPENCHAN
|
||
|
||
|
||
OSERSETHANDLER
|
||
|
||
|
||
OSERSIGNALCOMPLETE
|
||
|
||
|
||
OSERS IGNALCOMP LETEOK
|
||
|
||
|
||
OSERSIGNALUSER
|
||
|
||
|
||
OSERS IGNALUSERREAD
|
||
|
||
|
||
OSERS IGNALUSERREADOK
|
||
|
||
|
||
OSERSIGNALUSERWRITE
|
||
|
||
|
||
OSERSIGNALUSERWRITEOK
|
||
|
||
|
||
OSERSYNCWRITE
|
||
|
||
|
||
OSERTIMERCANCEL
|
||
|
||
|
||
OSERTIMERCLOSE
|
||
|
||
|
||
OSERTIMEROPEN
|
||
|
||
|
||
LIBMANAGER
|
||
|
||
|
||
NMLI
|
||
|
||
|
||
NMLI
|
||
|
||
|
||
NMLI
|
||
|
||
|
||
NMLI
|
||
|
||
|
||
BCOPY
|
||
|
||
|
||
BCREATE
|
||
|
||
|
||
IBCREATEBYHANDLE
|
||
|
||
|
||
IBDESTROY
|
||
|
||
|
||
IBFIND
|
||
|
||
|
||
BHANDLE
|
||
|
||
|
||
BLINK
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
0084
|
||
|
||
|
||
0008
|
||
|
||
|
||
0005
|
||
|
||
|
||
0006
|
||
|
||
|
||
0007
|
||
|
||
|
||
0003
|
||
|
||
|
||
0004
|
||
|
||
|
||
0002
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
NMLIBLOAD EQU OOOOH
|
||
NMLIBLOADFILE EQU OOOAH
|
||
NMLIBOPEN EQU 0009H
|
||
NMLIBRECLASS EQU OOOBH
|
||
NMLIBRECLASSBYHANDLE EQU OOOCH
|
||
NMLIBUNLOAD EQU 0001H
|
||
MES SMANAGER EQU 0083H
|
||
NMMESSFREE EQU 0007H
|
||
NMMESSINIT EQU OOOOH
|
||
NMMESSRECEIVEAS YNCHRONOUS EQU 0001H
|
||
NMMESSRECEIVECANCEL EQU 0003H
|
||
NMMESSRECEIVEWITHWAIT EQU 0002H
|
||
NMMESSSEND EQU 0004H
|
||
NMMESSSENDRECEIVEAS YNCHRONOUS EQU 0005H
|
||
NMMESSSENDRECEIVEWITHWAIT EQU OO006H
|
||
NMMESSSIGNAL EQU 0008H
|
||
NMMESSSIGNALCANCEL EQU 0009H
|
||
NMMESSSIGNALCANCELX EQU OOOAH
|
||
PROCMANAGER EQU 0088H
|
||
NMP ROCCREATE EQU 0004H
|
||
NMPROCCREATETASK EQU 0005H
|
||
NMPROCF IND EQU OOOBH
|
||
NMP ROCGETOWNER EQU 0010H
|
||
NMPROCGETPRIORITY EQU 0002H
|
||
NMPROCID EQU OOOOH
|
||
NMPROCIDBYNAME EQU 0001H
|
||
NMPROCKILL EQU 0008H
|
||
NMP ROCNAMEBY ID EQU OOOAH
|
||
NMPROCONTERMINATE EQU OOOEH
|
||
NMPROCPANICBYID EQU 0009H
|
||
NMP ROCRENAME EQU OOOCH
|
||
NMP ROCRESUME EQU OO006H
|
||
NMPROCSETPRIORITY EQU 0003H
|
||
|
||
|
||
A-10
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
NMP ROCSUSPEND EQU OOO07H
|
||
NMPROCTERMINATE EQU OOODH
|
||
NMPROCWATCHALLEXITS EQU OOOFH
|
||
SEGMANAGER EQU 0080H
|
||
NMSEGADJUSTSIZE EQU OO006H
|
||
NMSEGCLOSE EQU 0004H
|
||
NMSEGCLOSELOCKEDORDEVICE EQU OOODH
|
||
NMSEGCOP YFROM EQU 0009H
|
||
NMSEGCOPYTO EQU 0008H
|
||
NMSEGCREATE EQU 0001H
|
||
NMSEGDELETE EQU 0002H
|
||
NMSEGF IND EQU OO007H
|
||
NMSEGFREEMEMORY EQU OOOOH
|
||
NMSEGLOCK EQU OOOAH
|
||
NMSEGOPEN EQU 0003H
|
||
NMSEGRAMDISKUSED EQU OOOCH
|
||
NMSEGSIZE EQU 0005H
|
||
NMSEGUNLOCK EQU OOOBH
|
||
SEMMANAGER EQU 0082H
|
||
NMSEMCREATE EQU OO00H
|
||
NMSEMDELETE EQU 0001H
|
||
NMSEMS IGNALMANY EQU 0004H
|
||
NMSEMSIGNALONCE EQU 0003H
|
||
NMSEMS IGNALONCENORESCHED EQU 0005H
|
||
NMSEMWAIT EQU 0002H
|
||
TIMMANAGER EQU 0089H
|
||
NMTIMDATETODAYSECONDS EQU 0007H
|
||
NMT IMDAYOFWEEK EQU 0009H
|
||
NMTIMDAYSECONDSTODATE EQU OO06H
|
||
NMTIMDAYSECONDSTOSYSTEMTIME EQU 0005H
|
||
NMTIMDAYSINMONTH EQU 0008H
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
w
|
||
|
||
|
||
w
|
||
|
||
|
||
w
|
||
|
||
|
||
w
|
||
|
||
|
||
w
|
||
|
||
|
||
w
|
||
|
||
|
||
NMTIMGETSYSTEMTIME
|
||
|
||
|
||
NMT IMNAMEOFDAY
|
||
|
||
|
||
NMT IMNAMEOFDAYABB
|
||
|
||
|
||
NMT IMNAMEOFMONTH
|
||
|
||
|
||
NMT IMNAMEOFMONTHABB
|
||
|
||
|
||
NMTIMSETSYSTEMTIME
|
||
|
||
|
||
NMTIMSLEEPFORTENTHS
|
||
|
||
|
||
NMTIMSLEEPFORTICKS
|
||
|
||
|
||
NMTIMSYSTEMT IMETODAY SECONDS
|
||
|
||
|
||
NMTIMWAITABSOLUTE
|
||
|
||
|
||
NMT IMWEEKNUMBER
|
||
|
||
|
||
UFFERCOMPARE
|
||
|
||
|
||
UFFERCOMPAREFOLDED
|
||
|
||
|
||
UFFERCOPY
|
||
|
||
|
||
UFFERJUSTIFY
|
||
|
||
|
||
UFFERLOCATE
|
||
|
||
|
||
UFFERLOCATEFOLDED
|
||
|
||
|
||
UFFERMATCH
|
||
|
||
|
||
UFFERMATCHFOLDED
|
||
|
||
|
||
UFFERSUBBUFFER
|
||
|
||
|
||
UFFERSUBBUFFERFOLDED
|
||
|
||
|
||
UFFERSWAP
|
||
|
||
|
||
HARISALPHABETIC
|
||
|
||
|
||
HARISALPHANUMERIC
|
||
|
||
|
||
HARISCONTROL
|
||
|
||
|
||
HARISDIGIT
|
||
|
||
|
||
HARISGRAPHIC
|
||
|
||
|
||
HARISHEXDIGIT
|
||
|
||
|
||
HARISLOWERCASE
|
||
|
||
|
||
HARISPRINTABLE
|
||
|
||
|
||
HARISPUNCTUATION
|
||
|
||
|
||
HARISSPACE
|
||
|
||
|
||
HARISUPPERCASE
|
||
|
||
|
||
HARTOFOLDEDCHAR
|
||
|
||
|
||
HARTOLOWERCHAR
|
||
|
||
|
||
HARTOUPPERCHAR
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
DUMMY
|
||
|
||
|
||
F LOATADD
|
||
|
||
|
||
F LOATCOMPARE
|
||
|
||
|
||
FLOATDIVIDE
|
||
|
||
|
||
FLOATMULTIPLY
|
||
|
||
|
||
FLOATNEGATE
|
||
|
||
|
||
FLOATSUBTRACT
|
||
|
||
|
||
FLOATTOINT
|
||
|
||
|
||
F LOATTOLONG
|
||
|
||
|
||
FLOATTOUNSIGNEDINT
|
||
|
||
|
||
F LOATTOUNS IGNEDLONG
|
||
|
||
|
||
GENDATASEGMENT
|
||
|
||
|
||
GENINTBYNUMBER
|
||
|
||
|
||
NTTOFLOAT
|
||
|
||
|
||
OKEYANDMOUSESTATUS
|
||
|
||
|
||
ONEXTHALFSECONDSTATUS
|
||
|
||
|
||
LIBENTER
|
||
|
||
|
||
LIBENTERSEND
|
||
|
||
|
||
LIBLEAVE
|
||
|
||
|
||
LIBSEND
|
||
|
||
|
||
LIBSENDEXACT
|
||
|
||
|
||
LIBSENDEXIT
|
||
|
||
|
||
LIBSENDSUPER
|
||
|
||
|
||
LONGINTCOMPARE
|
||
|
||
|
||
LONGINTDIVIDE
|
||
|
||
|
||
LONGINTMULTIPLY
|
||
|
||
|
||
LONGTOF LOAT
|
||
|
||
|
||
LONGUNS IGNEDINTCOMPARE
|
||
|
||
|
||
LONGUNSIGNEDINTDIVIDE
|
||
|
||
|
||
LONGUNSIGNEDINTMULTIPLY
|
||
|
||
|
||
PROCCOPYFROMBYID
|
||
|
||
|
||
PROCCOPYTOBYID
|
||
|
||
|
||
PROCINDSTRINGCOPYFROMBYID
|
||
|
||
|
||
PROCPANIC
|
||
|
||
|
||
STRINGCAPITALISE
|
||
|
||
|
||
STRINGCOMPARE
|
||
|
||
|
||
STRINGCOMPAREFOLDED
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
OOCFH
|
||
|
||
|
||
OOBBH
|
||
|
||
|
||
OOBDH
|
||
|
||
|
||
OOBCH
|
||
|
||
|
||
OOCDH
|
||
|
||
|
||
OOBEH
|
||
|
||
|
||
OOCOH
|
||
|
||
|
||
OOBFH
|
||
|
||
|
||
0091H
|
||
|
||
|
||
0092H
|
||
|
||
|
||
OODCH
|
||
|
||
|
||
0090H
|
||
|
||
|
||
OODBH
|
||
|
||
|
||
OOAFH
|
||
|
||
|
||
OOBOH
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
STRINGCONVERTTOFOLDED
|
||
|
||
|
||
STRINGCOPY
|
||
|
||
|
||
STRINGCOPYFOLDED
|
||
|
||
|
||
STRINGLENGTH
|
||
|
||
|
||
STRINGLOCATE
|
||
|
||
|
||
STRINGLOCATEFOLDED
|
||
|
||
|
||
STRINGLOCATEINREVERSE
|
||
|
||
|
||
STRINGLOCATEINREVERSEFOLDED
|
||
|
||
|
||
STRINGMATCH
|
||
|
||
|
||
STRINGMATCHFOLDED
|
||
|
||
|
||
STRINGSUBSTRING EQU
|
||
|
||
|
||
STRINGSUBSTRINGFOLDED
|
||
|
||
|
||
STRINGVALIDATENAME
|
||
|
||
|
||
UNSIGNEDINTTOFLOAT
|
||
|
||
|
||
UNSIGNEDLONGTOFLOAT
|
||
|
||
|
||
WSERVFUNCTIONS EQU
|
||
|
||
|
||
WSERVOPCODES
|
||
|
||
|
||
Numerical list of functions
|
||
|
||
|
||
SEGMANAGER
|
||
|
||
|
||
NMSEGFREEMEMORY
|
||
NMSEGCREATE
|
||
NMSEGDELETE
|
||
NMSEGOPEN
|
||
NMSEGCLOSE
|
||
NMSEGSIZE
|
||
NMSEGADJUSTSIZE
|
||
NMSEGF IND
|
||
NMSEGCOPYTO
|
||
NMSEGCOP YFROM
|
||
NMSEGLOCK
|
||
NMSEGUNLOCK
|
||
NMSEGRAMDISKUSED
|
||
|
||
|
||
NMSEGCLOSELOCKEDORDEVICE
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
D6H
|
||
|
||
|
||
OOAEH
|
||
|
||
|
||
OOACH
|
||
|
||
|
||
OOADH
|
||
|
||
|
||
OOB9H
|
||
|
||
|
||
00B3H
|
||
|
||
|
||
OOB4H
|
||
|
||
|
||
OOB5H
|
||
|
||
|
||
OOB6H
|
||
|
||
|
||
0OB1H
|
||
|
||
|
||
OOB2H
|
||
|
||
|
||
OOB8H
|
||
|
||
|
||
OOBAH
|
||
|
||
|
||
OOCCH
|
||
|
||
|
||
OOCEH
|
||
|
||
|
||
008DH
|
||
|
||
|
||
0080H
|
||
|
||
|
||
0000H
|
||
|
||
|
||
0001H
|
||
|
||
|
||
0002H
|
||
|
||
|
||
0003H
|
||
|
||
|
||
0004H
|
||
|
||
|
||
0005H
|
||
|
||
|
||
OO06H
|
||
|
||
|
||
OO0O07H
|
||
|
||
|
||
0008H
|
||
|
||
|
||
0009H
|
||
|
||
|
||
OOOAH
|
||
|
||
|
||
OOOBH
|
||
|
||
|
||
OOOCH
|
||
|
||
|
||
OOODH
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
HEAPMANAGER EQU 0081H
|
||
NMHEAPALLOCATECELL EQU OOOOH
|
||
NMHEAPREALLOCATECELL EQU 0001H
|
||
NMHEAPADJUSTCELLSIZE EQU 0002H
|
||
NMHEAPFREECELL EQU 0003H
|
||
NMHEAPCELLSIZE EQU 0004H
|
||
NMHEAPSETGRANULARITY EQU 0005H
|
||
NMHEAPFREEMEMORY EQU OO06H
|
||
|
||
SEMMANAGER EQU 0082H
|
||
NMSEMCREATE EQU OOOOH
|
||
NMSEMDELETE EQU 0001H
|
||
NMSEMWAIT EQU 0002H
|
||
NMSEMS IGNALONCE EQU 0003H
|
||
NMSEMS IGNALMANY EQU 0004H
|
||
NMSEMS IGNALONCENORESCHED EQU 0005H
|
||
|
||
MES SMANAGER EQU 0083H
|
||
NMMESSINIT EQU OOOOH
|
||
NMMESSRECEIVEASYNCHRONOUS EQU 0001H
|
||
NMMESSRECEIVEWITHWAIT EQU 0002H
|
||
NMMESSRECEIVECANCEL EQU 0003H
|
||
NMMESSSEND EQU 0004H
|
||
NMMESSSENDRECEIVEASYNCHRONOUS EQU 0005H
|
||
NMMESSSENDRECEIVEWITHWAIT EQU OO06H
|
||
NMMESSFREE EQU 0007H
|
||
NMMESSSIGNAL EQU 0008H
|
||
NMMESSSIGNALCANCEL EQU 0009H
|
||
NMMESSSIGNALCANCELX EQU OOOAH
|
||
|
||
LIBMANAGER EQU 0084H
|
||
NMLIBLOAD EQU 0O00H
|
||
NMLIBUNLOAD EQU 0001H
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
NMLIBLINK
|
||
|
||
|
||
NMLIBF IND
|
||
|
||
|
||
NMLIBHANDLE
|
||
|
||
|
||
NMLIBCREATE
|
||
|
||
|
||
NMLIBCREATEBYHANDLE
|
||
|
||
|
||
NMLIBDESTROY
|
||
|
||
|
||
NMLIBCOPY
|
||
|
||
|
||
NMLIBOPEN
|
||
|
||
|
||
NMLIBLOADFILE
|
||
|
||
|
||
NMLIBRECLASS
|
||
|
||
|
||
NMLIBRECLASSBYHANDLE
|
||
|
||
|
||
DEVMANAGER
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
IOOPEN
|
||
|
||
|
||
DEVOPENPDD
|
||
|
||
|
||
DEVGETPDDADDRESS
|
||
|
||
|
||
DEVINSTALL
|
||
|
||
|
||
DEVHOLD
|
||
|
||
|
||
DEVRESUME
|
||
|
||
|
||
DEVLOADLDD
|
||
|
||
|
||
DEVLOADPDD
|
||
|
||
|
||
DEVDELETE
|
||
|
||
|
||
DEVQUERYUNITS
|
||
|
||
|
||
DEVF IND
|
||
|
||
|
||
DEVREMOVE
|
||
|
||
|
||
DEVVECTOR
|
||
|
||
|
||
IOMANAGER
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM
|
||
|
||
|
||
NMI
|
||
|
||
|
||
A- 16
|
||
|
||
|
||
OASYNCHRONOUS
|
||
|
||
|
||
OASYNCHRONOUSNOERROR
|
||
|
||
|
||
IOWITHWAIT
|
||
|
||
|
||
OROOT
|
||
|
||
|
||
OSUPER
|
||
|
||
|
||
IOWAITFORSIGNAL
|
||
|
||
|
||
OWAITFORSTATUS
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
0085H
|
||
|
||
|
||
OO000H
|
||
|
||
|
||
0001H
|
||
|
||
|
||
0002H
|
||
|
||
|
||
0003
|
||
|
||
|
||
0004
|
||
|
||
|
||
0005H
|
||
|
||
|
||
0006
|
||
|
||
|
||
0007
|
||
|
||
|
||
0008H
|
||
|
||
|
||
0009
|
||
|
||
|
||
OO0A
|
||
|
||
|
||
OOOBH
|
||
|
||
|
||
000C
|
||
|
||
|
||
0086H
|
||
|
||
|
||
0000
|
||
|
||
|
||
0001H
|
||
|
||
|
||
0002H
|
||
|
||
|
||
0003
|
||
|
||
|
||
0004H
|
||
|
||
|
||
0005
|
||
|
||
|
||
0006
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NMI
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
NM]
|
||
|
||
|
||
OYIELD
|
||
|
||
|
||
OSIGNAL
|
||
|
||
|
||
OSIGNALBYPID
|
||
|
||
|
||
OSIGNALBYP IDNORESCHED
|
||
|
||
|
||
OADDHANDLER
|
||
|
||
|
||
OREMOVEHANDLER
|
||
|
||
|
||
OENABLEHANDLER
|
||
|
||
|
||
OREQUESTRESET
|
||
|
||
|
||
OREQUESTRESETCANCEL
|
||
|
||
|
||
OCLOSE
|
||
|
||
|
||
OREAD
|
||
|
||
|
||
OWRITE
|
||
|
||
|
||
OSEEK
|
||
|
||
|
||
OKEYANDMOUSEWITHWAIT
|
||
|
||
|
||
OADDAPPLICATIONHANDLER
|
||
|
||
|
||
OREMOVEAPPLICATIONHANDLER
|
||
|
||
|
||
OENABLEAPPLICATIONHANDLER
|
||
|
||
|
||
OSHIFTSTATES
|
||
|
||
|
||
OWAITFORS IGNALNOHANDLER
|
||
|
||
|
||
OSIGNALKILLASYNCHRONOUS
|
||
|
||
|
||
OSIGNALKILLCANCEL
|
||
|
||
|
||
OKEYANDMOUSEAS YNCHRONOUS
|
||
|
||
|
||
ONEXTHALF SECOND
|
||
|
||
|
||
OPLAYSOUNDA
|
||
|
||
|
||
OPLAYSOUNDW
|
||
|
||
|
||
OPLAYSOUNDCANCEL
|
||
|
||
|
||
ORECORDSOUNDA
|
||
|
||
|
||
ORECORDSOUNDW
|
||
|
||
|
||
ORECORDSOUNDCANCEL
|
||
|
||
|
||
FILMANAGER
|
||
|
||
|
||
NMF ILCONNECT
|
||
|
||
|
||
NMF ILEXECUTE
|
||
|
||
|
||
NMF ILPARSE
|
||
|
||
|
||
NMF ILPATHGET
|
||
|
||
|
||
NMF ILPATHSET
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
0087
|
||
|
||
|
||
0000
|
||
|
||
|
||
0001
|
||
|
||
|
||
0002
|
||
|
||
|
||
0003
|
||
|
||
|
||
0004
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
NMFILPATHTEST EQU 0005H
|
||
NMF ILDELETE EQU OO006H
|
||
NMF I LRENAME EQU O007H
|
||
NMFILSTATUSGET EQU 0008H
|
||
NMFILSTATUSSET EQU 0009H
|
||
NMFILSTATUSDEVICE EQU OOOAH
|
||
NMFILSTATUSSYSTEM EQU OOOBH
|
||
NMF ILMAKEDIRECTORY EQU OOOCH
|
||
NMF ILOPENUNIQUE EQU OOODH
|
||
NMFILSYSTEMATTACH EQU OOOEH
|
||
NMFILSYSTEMDETACH EQU OOOFH
|
||
NMF ILPATHGETBYID EQU 0010H
|
||
NMF ILCHANGEDIRECTORY EQU 0011H
|
||
NMFILSETINITIALPATH EQU 0012H
|
||
NMFILSETFILEDATE EQU 0013H
|
||
NMF I LLOCCHANGED EQU 0014H
|
||
NMF ILLOCDEVICE EQU 0015H
|
||
NMF ILLOCREADPDD EQU 0016H
|
||
PROCMANAGER EQU 0088H
|
||
NMPROCID EQU 0O000H
|
||
NMPROCIDBYNAME EQU 0001H
|
||
NMPROCGETPRIORITY EQU 0002H
|
||
NMPROCSETPRIORITY EQU 0003H
|
||
NMP ROCCREATE EQU 0004H
|
||
NMP ROCCREATETASK EQU 0005H
|
||
NMP ROCRESUME EQU OO06H
|
||
NMP ROCSUSPEND EQU OO007H
|
||
NMPROCKILL EQU 0008H
|
||
NMPROCPANICBYID EQU 0009H
|
||
NMP ROCNAMEBY ID EQU OOOAH
|
||
NMPROCF IND EQU OOOBH
|
||
NMP ROCRENAME EQU OOOCH
|
||
NMPROCTERMINATE EQU OOODH
|
||
NMPROCONTERMINATE EQU OOOEH
|
||
NMPROCWATCHALLEXITS EQU OOOFH
|
||
NMP ROCGETOWNER EQU 0010H
|
||
|
||
|
||
A-18
|
||
|
||
|
||
TIMMANAGER
|
||
|
||
|
||
NMTIMSLEEPFORTENTHS
|
||
|
||
|
||
NMTIMSLEEPFORTICKS
|
||
|
||
|
||
NMTIMGETSYSTEMT IME
|
||
|
||
|
||
NMTIMSETSYSTEMTIME
|
||
|
||
|
||
NMTIMSYSTEMT IMETODAY SECONDS
|
||
|
||
|
||
NMTIMDAYSECONDS1
|
||
|
||
|
||
NMTIMDAYSECONDS1
|
||
|
||
|
||
TOSYSTEMTIME
|
||
|
||
|
||
TODATE
|
||
|
||
|
||
NMTIMDATETODAYSECONDS
|
||
|
||
|
||
NMTIMDAYSINMONTH
|
||
|
||
|
||
NMT IMDAYOFWEEK
|
||
|
||
|
||
NMT IMNAMEOFDAY
|
||
|
||
|
||
NMT IMNAMEOFMONTH
|
||
|
||
|
||
NMTIMWAITABSOLUTE
|
||
|
||
|
||
NMT IMWEEKNUMBER
|
||
|
||
|
||
NMT IMNAMEOFDAYABB
|
||
|
||
|
||
NMT IMNAMEOFMONTHABB
|
||
|
||
|
||
CONVMANAGER
|
||
|
||
|
||
NMCONVUNSIGNEDINTTOBUFFER
|
||
|
||
|
||
NMCONVUNSIGNEDLONGINTTOBUFFER
|
||
|
||
|
||
NMCONVINTTOBUFFER
|
||
|
||
|
||
NMCONVLONGINTTOBUFFER
|
||
|
||
|
||
NMCONVARGUMENTSTOBUFFER
|
||
|
||
|
||
NMCONVSTRINGTOUNSIGNEDINT
|
||
|
||
|
||
NMCONVSTRINGTOUNS IGNEDLONGINT
|
||
|
||
|
||
NMCONVSTRINGTOINT
|
||
|
||
|
||
NMCONVSTRINGTOLONGINT
|
||
|
||
|
||
NMCONVFLOATTOBUFFER
|
||
|
||
|
||
NMCONVSTRINGTOFLOAT
|
||
|
||
|
||
GENMANAGER
|
||
|
||
|
||
NMGENVERSION
|
||
|
||
|
||
NMGENLCDTYPE
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
0089H
|
||
|
||
|
||
0O000H
|
||
|
||
|
||
0001H
|
||
|
||
|
||
0002H
|
||
|
||
|
||
0003H
|
||
|
||
|
||
0004H
|
||
|
||
|
||
0005H
|
||
|
||
|
||
0006H
|
||
|
||
|
||
OO007H
|
||
|
||
|
||
0008H
|
||
|
||
|
||
0009H
|
||
|
||
|
||
OOOAH
|
||
|
||
|
||
OOOBH
|
||
|
||
|
||
O0O00CH
|
||
|
||
|
||
OOODH
|
||
|
||
|
||
OOOEH
|
||
|
||
|
||
OOOFH
|
||
|
||
|
||
OO8AH
|
||
|
||
|
||
OO8BH
|
||
|
||
|
||
0O000H
|
||
|
||
|
||
0001H
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
NMGENSTARTREASON
|
||
|
||
|
||
NMGENPARSE
|
||
|
||
|
||
NMLONGUNSIGNEDINTRANDOM
|
||
|
||
|
||
NMGENGETCOUNTRYDATA
|
||
|
||
|
||
NMGENGETERRORTEXT
|
||
|
||
|
||
NMGENGETOSDATA
|
||
|
||
|
||
NMGENDEFERREDMODE
|
||
|
||
|
||
NMGENNOTIFY
|
||
|
||
|
||
NMGENNOTIFYERROR
|
||
|
||
|
||
NMGENNOTIFYHOOK
|
||
|
||
|
||
NMGENNOTIFYUNHOOK
|
||
|
||
|
||
NMGENGETRAMSIZEINPARAS
|
||
|
||
|
||
NMGENGETCOMMANDLINE
|
||
|
||
|
||
NMGENGETSOUNDFLAGS
|
||
|
||
|
||
NMGENSETSOUNDFLAGS
|
||
|
||
|
||
NMGENSOUND
|
||
|
||
|
||
NMGENMARKACTIVE
|
||
|
||
|
||
NMGENMARKNONACT!I
|
||
|
||
|
||
NMGENGETTEXT
|
||
|
||
|
||
NMGENGETNOTIFYS1
|
||
|
||
|
||
NMGENSETNOTIFYS1
|
||
|
||
|
||
NMGENGETAUTOSWIT
|
||
|
||
|
||
NMGENSETAUTOSWIT
|
||
|
||
|
||
NMGENSETREVECTOR
|
||
|
||
|
||
VE
|
||
|
||
|
||
TATE
|
||
|
||
|
||
TATE
|
||
|
||
|
||
[CHOFF VALUE
|
||
|
||
|
||
[CHOFF VALUE
|
||
|
||
|
||
NMGENRESETREVEC1
|
||
|
||
|
||
TOR
|
||
|
||
|
||
NMGENGETLANGUAGECODE
|
||
|
||
|
||
NMGENGETSUFFIXES
|
||
|
||
|
||
NMGENGETAMPMTEXT
|
||
|
||
|
||
NMGENSETCOUNTRYDATA
|
||
|
||
|
||
NMGENGETBATTERYTYPE
|
||
|
||
|
||
NMGENSETBATTERYTYPE
|
||
|
||
|
||
NMGENENVBUFFERGET
|
||
|
||
|
||
NMGENENVBUFFERSET
|
||
|
||
|
||
NMGENENVBUFFERDELETE
|
||
|
||
|
||
NMGENENVBUFFERF IND
|
||
|
||
|
||
NMGENENVSTRINGGET
|
||
|
||
|
||
NMGENENVSTRINGSET
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
NMGENENVSTRINGDELETE EQU 0027H
|
||
NMGENENVSTRINGF IND EQU 0028H
|
||
NMGENCRC EQU 0029H
|
||
NMGENROMVERS ION EQU O002AH
|
||
NMGENALARMHOOK EQU 002BH
|
||
NMGENALARMUNHOOK EQU 002CH
|
||
NMGENALARMID EQU 002DH
|
||
NMGENPASSWORDSET EQU 002EH
|
||
NMGENPASSWORDTEST EQU O002FH
|
||
NMGENPASSWORDCONTROL EQU 0030H
|
||
NMGENPASSWORDQUERY EQU 0031H
|
||
NMGENTICKLE EQU 0032H
|
||
NMGENSETCONFIG EQU 0033H
|
||
NMGENMASKINIT EQU 0034H
|
||
NMGENMASKENCRYPT EQU 0035H
|
||
NMGENMASKDECRYPT EQU 0036H
|
||
NMGENSETONEVENTS EQU 0037H
|
||
NMGENGETAUTOMAINS EQU 0038H
|
||
NMGENSETAUTOMAINS EQU 0039H
|
||
FLOATMANAGER EQU 008CH
|
||
NMFLOATSIN EQU OO00H
|
||
NMF LOATCOS EQU 0001H
|
||
NMF LOATTAN EQU 0002H
|
||
NMF LOATASIN EQU 0003H
|
||
NMF LOATACOS EQU 0004H
|
||
NMF LOATATAN EQU 0005H
|
||
NMF LOATEXP EQU OO06H
|
||
NMF LOATLN EQU 0O007H
|
||
NMF LOATLOG EQU 0008H
|
||
NMF LOATSQRT EQU 0009H
|
||
NMF LOATPOW EQU OOOAH
|
||
NMF LOATRAND EQU OOOBH
|
||
NMF LOATMOD EQU OOOCH
|
||
NMF LOATINT EQU OOODH
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
WSERVOPCODES
|
||
|
||
|
||
HWMANAGER
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
NMH
|
||
|
||
|
||
WCOMBOON
|
||
|
||
|
||
WCOMBOOFF
|
||
|
||
|
||
WPACKSON
|
||
|
||
|
||
WPACKSOFF
|
||
|
||
|
||
WSETA2CONTROLIBITS
|
||
|
||
|
||
WCLEARA2CONTROLIBITS
|
||
|
||
|
||
WREADA2CONTROL1
|
||
|
||
|
||
WWRITEA2CONTROLI
|
||
|
||
|
||
WSETA2CONTROL2BITS
|
||
|
||
|
||
WCLEARA2CONTROL2BITS
|
||
|
||
|
||
WREADA2CONTROL2
|
||
|
||
|
||
WWRITEA2CONTROL2
|
||
|
||
|
||
WSETA2CONTROL3BITS
|
||
|
||
|
||
WCLEARA2CONTROL3BITS
|
||
|
||
|
||
WREADA2CONTROL3
|
||
|
||
|
||
WWRITEA2CONTROL3
|
||
|
||
|
||
WSELECTCHANNEL
|
||
|
||
|
||
WGETSUPPLYSTATUS
|
||
|
||
|
||
WLCDCONTRASTDELTA
|
||
|
||
|
||
WREADLCDCONTRAST
|
||
|
||
|
||
WSWITCHOFF
|
||
|
||
|
||
WNULLFRAME
|
||
|
||
|
||
WEXIT
|
||
|
||
|
||
WGETCOMBO
|
||
|
||
|
||
WFREECOMBO
|
||
|
||
|
||
WGETCHANNEL
|
||
|
||
|
||
WFREECHANNEL
|
||
|
||
|
||
WGETPSUTYPE
|
||
|
||
|
||
WSUPPLYWARNINGS
|
||
|
||
|
||
WFORCESUPPLYREADING
|
||
|
||
|
||
WGETBACKLIGHT
|
||
|
||
|
||
WSETBACKLIGHT
|
||
|
||
|
||
WBACKLIGHT
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
008D
|
||
|
||
|
||
OO8E
|
||
|
||
|
||
001D
|
||
|
||
|
||
OO1E
|
||
|
||
|
||
OO1F
|
||
|
||
|
||
NMHWCOMBOONINPUT
|
||
|
||
|
||
NMHWSUPPLYINFO
|
||
|
||
|
||
NMHWGETSCANCODES
|
||
|
||
|
||
GENDATASEGMENT
|
||
|
||
|
||
PROCPANIC
|
||
|
||
|
||
PROCCOPYFROMBYID
|
||
|
||
|
||
PROCCOPYTOBYID
|
||
|
||
|
||
CHARISDIGIT
|
||
|
||
|
||
CHARISHEXDIGIT
|
||
|
||
|
||
CHARISPRINTABLE
|
||
|
||
|
||
CHARISALPHABETIC
|
||
|
||
|
||
CHARISALPHANUMERIC
|
||
|
||
|
||
CHARISUPPERCASE
|
||
|
||
|
||
CHARISLOWERCASE
|
||
|
||
|
||
CHARISSPACE
|
||
|
||
|
||
CHARISPUNCTUATION
|
||
|
||
|
||
CHARISGRAPHIC
|
||
|
||
|
||
CHARISCONTROL
|
||
|
||
|
||
CHARTOUPPERCHAR
|
||
|
||
|
||
CHARTOLOWERCHAR
|
||
|
||
|
||
CHARTOFOLDEDCHAR
|
||
|
||
|
||
BUFFERCOPY
|
||
|
||
|
||
BUFFERSWAP
|
||
|
||
|
||
BUFFERCOMPARE
|
||
|
||
|
||
BUFFERCOMPAREFOLDED
|
||
|
||
|
||
BUFFERMATCH
|
||
|
||
|
||
BUFFERMATCHFOLDED
|
||
|
||
|
||
BUFFERLOCATE
|
||
|
||
|
||
BUFFERLOCATEFOLDED
|
||
|
||
|
||
BUFFERSUBBUFFER
|
||
|
||
|
||
w
|
||
|
||
|
||
UFFERSUBBUFFERFOLDED
|
||
|
||
|
||
w
|
||
|
||
|
||
UFFERJUSTIFY
|
||
|
||
|
||
STRINGCOPY
|
||
|
||
|
||
STRINGCOPYFOLDED
|
||
|
||
|
||
STRINGCONVERTTOFOLDED
|
||
|
||
|
||
STRINGCOMPARE
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
0021H
|
||
|
||
|
||
0022H
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
STRINGCOMPAREFOLDED
|
||
|
||
|
||
STRINGMATCH
|
||
|
||
|
||
STRINGMATCHFOLDED
|
||
|
||
|
||
STRINGLOCATE
|
||
|
||
|
||
STRINGLOCATEFOLDED
|
||
|
||
|
||
STRINGLOCATEINREVERSE
|
||
|
||
|
||
STRINGLOCATEINREVERSEFOLDED
|
||
|
||
|
||
STRINGSUBSTRING
|
||
|
||
|
||
STRINGSUBSTRINGFOLDED
|
||
|
||
|
||
STRINGLENGTH
|
||
|
||
|
||
STRINGVALIDATENAME
|
||
|
||
|
||
LONGINTCOMPARE
|
||
|
||
|
||
LONGINTMULTIPLY
|
||
|
||
|
||
LONGINTDIVIDE
|
||
|
||
|
||
LONGUNS IGNEDINTCOMPARE
|
||
|
||
|
||
LONGUNSIGNEDINTMULTIPLY
|
||
|
||
|
||
LONGUNSIGNEDINTDIVIDE
|
||
|
||
|
||
F LOATADD
|
||
|
||
|
||
7]
|
||
|
||
|
||
LOATSUBTRACT
|
||
|
||
|
||
7]
|
||
|
||
|
||
LOATMULTIPLY
|
||
|
||
|
||
7]
|
||
|
||
|
||
LOATDIVIDE
|
||
|
||
|
||
7]
|
||
|
||
|
||
LOATCOMPARE
|
||
|
||
|
||
7]
|
||
|
||
|
||
LOATNEGATE
|
||
|
||
|
||
7]
|
||
|
||
|
||
LOATTOINT
|
||
|
||
|
||
7]
|
||
|
||
|
||
LOATTOUNSIGNEDINT
|
||
|
||
|
||
7]
|
||
|
||
|
||
LOATTOLONG
|
||
|
||
|
||
7]
|
||
|
||
|
||
LOATTOUNS IGNEDLONG
|
||
|
||
|
||
NTTOFLOAT
|
||
|
||
|
||
UNS IGNEDINTTOFLOAT
|
||
|
||
|
||
LONGTOF LOAT
|
||
|
||
|
||
UNS IGNEDLONGTOFLOAT
|
||
|
||
|
||
LIBSEND
|
||
|
||
|
||
LIBSENDSUPER
|
||
|
||
|
||
LIBSENDEXACT
|
||
|
||
|
||
LIBENTER
|
||
|
||
|
||
LIBLEAVE
|
||
|
||
|
||
DUMMY
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
fo}
|
||
|
||
fo}
|
||
|
||
Q
|
||
|
||
ws
|
||
I
|
||
|
||
|
||
fo}
|
||
|
||
oO
|
||
|
||
a
|
||
|
||
ol
|
||
r
|
||
|
||
|
||
oO
|
||
|
||
oO
|
||
|
||
a
|
||
|
||
~
|
||
r
|
||
|
||
|
||
fo)
|
||
(>)
|
||
Q
|
||
aa
|
||
I
|
||
|
||
|
||
fo}
|
||
|
||
fo}
|
||
|
||
Q
|
||
|
||
iw)
|
||
i
|
||
|
||
|
||
OOCFH
|
||
|
||
|
||
GENINTBYNUMBER
|
||
|
||
|
||
WSERVFUNCTIONS
|
||
|
||
|
||
LIBSENDEXIT
|
||
|
||
|
||
DBFMANAGER
|
||
|
||
|
||
NMDBFOPEN
|
||
|
||
|
||
NMDBFCLOSE
|
||
|
||
|
||
NMDBFF LUSH
|
||
|
||
|
||
NMDBF TRASH
|
||
|
||
|
||
NMDBFCOP YDOWN
|
||
|
||
|
||
NMDBFCOMPRESS
|
||
|
||
|
||
NMDBFCOPYFILE
|
||
|
||
|
||
NMDBFFILESIZE
|
||
|
||
|
||
NMDBFEXTHEADERREAD
|
||
|
||
|
||
NMDBFEXTHEADERWRITE
|
||
|
||
|
||
NMDBFVERSION
|
||
|
||
|
||
NMDBFABSREADSENSE
|
||
|
||
|
||
NMDBFABSREAD
|
||
|
||
|
||
NMDBFNEXTREAD
|
||
|
||
|
||
NMDBFBACKREAD
|
||
|
||
|
||
NMDBFFIRSTREAD
|
||
|
||
|
||
NMDBFLASTREAD
|
||
|
||
|
||
NMDBFAPPEND
|
||
|
||
|
||
NMDBFERASEREAD
|
||
|
||
|
||
NMDBFUPDATE
|
||
|
||
|
||
NMDBFF INDREAD
|
||
|
||
|
||
NMDBF SENSE
|
||
|
||
|
||
NMDBF COUNT
|
||
|
||
|
||
NMDBFDESCRECORDREAD
|
||
|
||
|
||
NMDBFDESCRECORDWRITE
|
||
|
||
|
||
NMDBFF INDREADFIELD
|
||
|
||
|
||
LIBENTERSEND
|
||
|
||
|
||
IOKEYANDMOUSESTATUS
|
||
|
||
|
||
STRINGCAPITALISE
|
||
|
||
|
||
PROCINDSTRINGCOPYFROMBYID
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
0OD5
|
||
|
||
|
||
0O0D6
|
||
|
||
|
||
OOD7
|
||
|
||
|
||
00D8
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
IONEXTHALFSECONDSTATUS
|
||
|
||
|
||
IOSERMANAGER
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
NM
|
||
|
||
|
||
OSEROPEN
|
||
|
||
|
||
OSERADDHANDLER
|
||
|
||
|
||
OSERREMOVEHANDLER
|
||
|
||
|
||
OSERSETHANDLER
|
||
|
||
|
||
OSERHANDLERSAVEERROR
|
||
|
||
|
||
OSEROPENHANDLER
|
||
|
||
|
||
OSEROPENT IMERHANDLER
|
||
|
||
|
||
OSERFREE
|
||
|
||
|
||
OSERCLOSETIMERHANDLER
|
||
|
||
|
||
OSERDETACHFREE
|
||
|
||
|
||
OSERTIMEROPEN
|
||
|
||
|
||
OSERTIMERCANCEL
|
||
|
||
|
||
OSERTIMERCLOSE
|
||
|
||
|
||
OSERATTACHONOPENCHAN
|
||
|
||
|
||
OSERSENSEONOPENCHAN
|
||
|
||
|
||
OSERONOPENCHAN
|
||
|
||
|
||
OSERCHECKWRITESI
|
||
|
||
|
||
OSERCHECKREADSTI
|
||
|
||
|
||
OSERS IGNALUSERWRITEOK
|
||
|
||
|
||
OSERSIGNALUSERWRITE
|
||
|
||
|
||
OSERS IGNALUSERREADOK
|
||
|
||
|
||
OSERS IGNALUSERREAD
|
||
|
||
|
||
OSERS IGNALUSER
|
||
|
||
|
||
OSERQUEUEREAD
|
||
|
||
|
||
OSERQUEUEWRITE
|
||
|
||
|
||
OSERQUEUESUPER
|
||
|
||
|
||
OSERQUEUETIMER
|
||
|
||
|
||
OSERCANCELIOREQUEST
|
||
|
||
|
||
OSERCANCELALLSIGNALUSER
|
||
|
||
|
||
OSERS IGNALCOMP LETEOK
|
||
|
||
|
||
OSERSIGNALCOMPLETE
|
||
|
||
|
||
OSERSYNCWRITE
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
OODD
|
||
|
||
|
||
OODE
|
||
|
||
|
||
Additional Interrupt and Function numbers
|
||
|
||
|
||
A INTERRUPT AND FUNCTION NUMBERS
|
||
|
||
|
||
The majority of the additional EPOC system services functions described in this section were introduced
|
||
|
||
|
||
for the Series 3c and Siena.
|
||
|
||
|
||
With the exception of the HC, all the services are, in principle, available on any machine that contains
|
||
EPOC version 3.90F or later. On an HC with a suitable version of EPOC, all the functions described in
|
||
|
||
|
||
this section should generate an =E_GEN_NsuP error.
|
||
|
||
|
||
Some services require the presence of hardware that is not built into all machines in the SIBO range. If
|
||
the relevant hardware is not present on a particular machine, calling the service will either have no effect
|
||
|
||
|
||
or return an error of E_GEN_NSUP.
|
||
|
||
|
||
Alphabetical list of extra functions
|
||
|
||
|
||
HWMANAGER
|
||
|
||
|
||
NMHWENABLEAUTOBATRESET
|
||
NMHWEXPANSIONOFF
|
||
NMHWEXPANSIONON
|
||
NMHWGETBATDATA
|
||
NMHWRELOGPACKS
|
||
NMHWRESETBATTERYSTATUS
|
||
NMHWRETURNEXPANS IONPORTSTATE
|
||
NMHWRETURNTICKCOUNT
|
||
NMHWSETIRPOWERLEVEL
|
||
|
||
|
||
IOMANAGER
|
||
|
||
|
||
NMIOPLAYSOUNDAO
|
||
|
||
|
||
Numerical list of extra functions
|
||
|
||
|
||
IOMANAGER
|
||
|
||
|
||
NMIOPLAYSOUNDAO
|
||
|
||
|
||
HWMANAGER
|
||
|
||
|
||
NMHWRESETBATTERYSTATUS
|
||
NMHWENABLEAUTOBATRESET
|
||
NMHWGETBATDATA
|
||
NMHWRELOGPACKS
|
||
NMHWSETIRPOWERLEVEL
|
||
NMHWRETURNTICKCOUNT
|
||
NMHWRETURNEXPANSIONPORTSTATE
|
||
NMHWEXPANSIONON
|
||
NMHWEXPANSIONOFF
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
EQ
|
||
EQ
|
||
EQ
|
||
EQ
|
||
EQ
|
||
EQ
|
||
EQ
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
EQ
|
||
|
||
|
||
aq
|
||
|
||
|
||
GaGQaGQGGaGaaGAaaGG
|
||
|
||
|
||
GaGa aqqaqaaaqaaG
|
||
|
||
|
||
OO8EH
|
||
|
||
|
||
002bH
|
||
0033H
|
||
0032H
|
||
002cH
|
||
002eH
|
||
002aH
|
||
0031H
|
||
0030H
|
||
O02fH
|
||
|
||
|
||
0086H
|
||
|
||
|
||
0024H
|
||
|
||
|
||
0086H
|
||
|
||
|
||
0024H
|
||
|
||
|
||
008EH
|
||
|
||
|
||
002aH
|
||
002bH
|
||
002cH
|
||
002eH
|
||
OO2fH
|
||
0030H
|
||
0031H
|
||
0032H
|
||
|
||
|
||
0033H
|
||
|
||
|
||
APPENDIX B
|
||
|
||
|
||
ENVIRONMENT VARIABLES
|
||
|
||
|
||
This document is a beta version and is subject to change.
|
||
|
||
|
||
This chapter documents all environment variables that, at the time of writing, are created or read by
|
||
Psion’s software running on SIBO machines. Note that the names of all such environment variables
|
||
contain the ‘$’ character.
|
||
|
||
|
||
Environment variables survive a soft reset but are cleared on a hard reset. Some environment variables
|
||
will be restored to their default values, by being loaded from a ROM initialisation file, on a hard reset.
|
||
The set of environment variables that are restored in this way depends on both the machine type and the
|
||
machine’s localisation (language).
|
||
|
||
|
||
PLIB
|
||
|
||
|
||
EM$
|
||
|
||
|
||
This environment variable is used by the CLIB and PLIB startup modules. It contains a string that
|
||
specifies a search path for the 8087 emulator, sys$8087. Idd.
|
||
|
||
|
||
Window server
|
||
$WS_FL
|
||
|
||
|
||
On an HC with version 3.5 of the window server, and in all machines that use version 4 or later, the
|
||
initial value of the internal parameter that is set by wsystem is loaded from the sws_FL environment
|
||
variable when the window server starts.
|
||
|
||
|
||
After setting sws_r1 to the desired worp value, you must reset the HC by pressing the recessed reset button
|
||
to make the new value effective.
|
||
|
||
|
||
The wsystem flags parameter is made up by oring a number of bit fields of the form wsERV_FLAG_Xxx.
|
||
|
||
|
||
After a hard reset on an HC with version 3.5 of the window server, the sws_FL environment variable does
|
||
not exist (which is equivalent to it being zero).
|
||
|
||
|
||
The following example program sets the sws_FL environment variable:
|
||
|
||
|
||
#include <plib.h>
|
||
#include <wlib.h>
|
||
|
||
|
||
GLDEF_C INT main(VOID)
|
||
{
|
||
WORD flags;
|
||
|
||
|
||
flags=WSERV_FLAG_NO_NOTIFIER_REBOOT |WSERV_FLAG_HOOK_NOTIFIER
|
||
| WSERV, FLAG LOW_BATTERY. WARNINGS |WSERV_FLAG_HUNG_UP_SW;
|
||
|
||
return (p_setenviron("SWS_FL",6,&flags,2))j;
|
||
|
||
}
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
After running this program and resetting the HC, the window server will:
|
||
e provide the notifier service
|
||
e report low battery voltages
|
||
e present a hung-up status window if an application hangs
|
||
|
||
|
||
e report a process that terminates with a panic or with a negative reason number
|
||
|
||
|
||
$WS_FNTS
|
||
|
||
|
||
This environment variable contains a series of words, each of which contains the index of a font used by
|
||
the window server. The fonts are as follows:
|
||
|
||
|
||
e System font
|
||
|
||
e §=6Notifier/Alert font
|
||
|
||
e §=©Status Window font
|
||
|
||
e Symbols font used for the status window diamond symbol
|
||
e Medium 2 digital clock font
|
||
|
||
e Medium 2 date font
|
||
|
||
e =©Notifier/alert button font
|
||
|
||
|
||
e Small status window clock font
|
||
|
||
|
||
$WS_IF
|
||
|
||
|
||
On the HC, the font used for output that is not graphics context directed is determined by the sws_1F
|
||
("Internal Font") environment variable.
|
||
|
||
|
||
This should contain a worp binary value of 0 for ws_ront_Base, | for ws_FoNT_BASE+1, and so on. If you
|
||
change the value of sws_1Fr, you must reset the machine by pressing the recessed reset button to effect the
|
||
change.
|
||
|
||
|
||
The "factory" setting of sws_1F is 4 (which selects the S3 font).
|
||
|
||
|
||
$WS_SD
|
||
|
||
|
||
Pressing SHIFT-CTRL-PSION-S on an MC, S3, S3a, S3c, Siena or a Workabout saves the current screen to a
|
||
file called screen.pic in the current path of the window server. Any existing file of the same name is
|
||
replaced.
|
||
|
||
|
||
In practice, the current path of the window server on a SIBO machine is always LOC::M:\ (it is defined
|
||
when the window server process is started - well before you have any chance of influencing it).
|
||
|
||
|
||
However, if an environment variable with the name $WS_SD exists, the window server uses its value to
|
||
open the file to be created. For example, running the following program:
|
||
|
||
|
||
#include <p_std.h>
|
||
|
||
|
||
GLDEF_C INT main(VOID)
|
||
{
|
||
p_setenv ("SWS_SD", "B:\\SCREEN.PIC");
|
||
return (0);
|
||
|
||
|
||
}
|
||
|
||
|
||
subsequently causes the screen dump to be written to the root directory of the local B: drive.
|
||
|
||
|
||
If the save fails for any reason (such as disk full), the file is not produced and no notification of the failure
|
||
is given.
|
||
|
||
|
||
You can use this behaviour to disable the SHIFT-CTRL-PSION-S screen dump key by setting up sws_sp to
|
||
contain an illegal file specification. For example, just inserting the following line of code:
|
||
|
||
|
||
p_setenv("SWS_SD","");
|
||
|
||
|
||
disables the screen dump key.
|
||
|
||
|
||
B ENVIRONMENT VARIABLES
|
||
|
||
|
||
$WS_SF, $WS_SF2 and $WS_SF4
|
||
|
||
|
||
On the HC, the Siena and the Series 3, Series 3a and Series 3c, the system font is determined by the
|
||
$wWS_SF environment variable which should contain a worp binary value of 0 for ws_rFoNT_BASE, a WORD
|
||
binary value of | for ws_rontT_BasE+1, and so on. If you change the value of sws_sF, you must reset the
|
||
machine by pressing the recessed reset button to effect the change.
|
||
|
||
|
||
On the MC, the system font is determined in the same way, except that two alternative environment
|
||
variables are used; sws_sr2 and sws_sr4. If the screen has fewer than 300 lines (as on the MC200),
|
||
$ws_sF2 is used. Otherwise (as on the MC400), sws_sra is used.
|
||
|
||
|
||
The following program illustrates how the environment variable may be changed.
|
||
#include <p_std.h>
|
||
GLDEF_C INT main(VOID)
|
||
{
|
||
|
||
|
||
WORD flags;
|
||
|
||
|
||
flags=1; /* choose WS_FONT_BASE+1 */
|
||
return (p_setenviron("SWS_SF",6,&flags,2));
|
||
}
|
||
|
||
|
||
Changing the system font may have an adverse effect on existing applications.
|
||
|
||
|
||
HWIM
|
||
|
||
|
||
M$V
|
||
|
||
|
||
Evaluator format preferences, stored as an HWIM extTENDED_MEM_VALUES Structure. This environment
|
||
variable is read and written by the ws_eval_env method of the wssrv class. The default values are:
|
||
|
||
|
||
evalDegrees DEGREES_MODE
|
||
calcDegrees DEGREES_MODE
|
||
memVal.evalFormat P_DTOB_FIXED
|
||
memVal.evalDPlaces EVAL_DEFAULT_PLACES
|
||
memVal.calcFormat P_DTOB_GENERAL
|
||
memVal.calcDPlaces CALC_DEFAULT_PLACES
|
||
memVal.values[0] to 0.0
|
||
memVal.values[9]
|
||
|
||
|
||
D$X
|
||
|
||
|
||
Telephone dialling preferences, stored as a DIAL_ENvaR structure. The environment variable is read and
|
||
written by ws_dial_env method of the wszrv class. The normal default values are:
|
||
|
||
|
||
toneLengthTicks 8
|
||
delayLengthTicks 8
|
||
pauseLengthTicks 48
|
||
dialoutCode[] “9,”
|
||
|
||
|
||
These values may vary in non-English machines.
|
||
L$X
|
||
|
||
|
||
This environment variable is read by the Series 3c only, to provide a possible extra option for the ‘Use’
|
||
choice list of the System Screen’s ‘Communications’ dialog.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
If it exists, the environment variable should contain three leading byte counted items which are, in order:
|
||
e text for the extra option, which will be appended to the choice list
|
||
e the full file specification of the file to p_execc if the new option is selected
|
||
e any additional command line data
|
||
|
||
|
||
For example, to add an ‘IRcom’ option that, on selection, executes the file loc::m:\sys$irc.img, passing it
|
||
the command line “-P1”, the environment variable could be set (using an HC-style Command
|
||
Processor).by:
|
||
|
||
|
||
set LS$X=\05IRCom\13L0C: :M:\SYSS$IRC.IMG\03-P1
|
||
|
||
|
||
Additional command line options can be appended to any specified in the environment variable by use of
|
||
the ‘Extra parameters’ line in the System screen’s ‘Communications’ dialog.
|
||
|
||
|
||
ees]
|
||
Printing
|
||
P$D
|
||
|
||
|
||
The type of the port used for printing, held as a zero terminated character containing a single ASCTI digit.
|
||
The possible port types and their representations are:
|
||
|
||
|
||
PRINTER_PORT_PARALLEL ‘0’
|
||
PRINTER_PORT_SERIAL ‘Tl
|
||
PRINTER_PORT_FILE 2’
|
||
PRINTER_PORT_FAX ‘3’
|
||
|
||
|
||
The default value represents PRINTER_PORT_PARALLEL.
|
||
|
||
|
||
These environment variables are set/created by the pRINTER pr_set_port_type method, and got by the
|
||
PRINTER pr_port_data method, (see the FORM Reference manual).
|
||
|
||
|
||
P$F
|
||
|
||
|
||
The name of the print file, that is, the file to which printing is to be directed, held as a zero terminated
|
||
character string. The default print file name is p.lis.
|
||
|
||
|
||
This environment variable is set/created by the PRINTER pr_store_file method, and got by the pRINTER
|
||
pr_port_data method, (see the FORM Reference manual).
|
||
|
||
|
||
P$S
|
||
|
||
|
||
The characteristics of the serial port when it is used for printing, held as a p_srcuar structure. The default
|
||
values are:
|
||
|
||
|
||
tbaud P_BAUD_9600
|
||
|
||
rbaud P_BAUD_9600
|
||
|
||
frame P_DATA_8
|
||
|
||
parity 0)
|
||
|
||
hand P_OBEY_XOFF | P_OBEY_DSR|P_IGN_CTS
|
||
xoff 0x13
|
||
|
||
xon Ox1l1
|
||
|
||
flags 0
|
||
|
||
tmask 0
|
||
|
||
|
||
This environment variable is set/created by the PRINTER pr_store_srchar method, and got by the PRINTER
|
||
pr_port_data method, (see the FORM Reference manual).
|
||
|
||
|
||
B ENVIRONMENT VARIABLES
|
||
|
||
|
||
P$M
|
||
|
||
|
||
The specification of the current printer model, held as a zero terminated character string. The string
|
||
contains an ASCII digit, followed by the name of a printer driver (.wdr) file, where the digit specifies the
|
||
index number, starting from zero, of the particular model within the printer driver file. The default value
|
||
is “OBJ.WDR’” (the file bj.wdr is present in the ROM of all relevant machines and contains only one
|
||
model -that for the BJ-10e printer).
|
||
|
||
|
||
This environment variable is set/created by the PRINTER pr_set_mode1 method, and got by the pRINTER
|
||
pr_sense_model method, (see the FORM Reference manual).
|
||
|
||
|
||
P$P
|
||
|
||
|
||
This environment variable contains two bytes of data that specify the display preferences for print
|
||
preview. The first byte is an ASCII digit specifying the number of pages to display. This must be in the
|
||
range ‘1’ to ‘4’ inclusive. The second byte is also an ASCII digit, which may be ‘1’, indicating that
|
||
margins are to be visible during print preview, or ‘0’.
|
||
|
||
|
||
This environment variable is set/created by the prvvIEw wn_init method (see the XADD Reference
|
||
manual).
|
||
|
||
|
||
P$PP
|
||
|
||
|
||
The port used for parallel printing, specified as a single ASCII character, for example, ‘B’. This
|
||
environment variable should only be set on machines that have more than one port, such as the
|
||
Workabout. It is read if it exists, but is not created, by the pr_sense_port method of the printer class, in
|
||
the FORM library.
|
||
|
||
|
||
P$SP
|
||
|
||
|
||
The port used for serial printing, specified as a single ASCII character, for example, ‘A’. This
|
||
environment variable should only be set on machines that have more than one port, such as the
|
||
Workabout. It is read if it exists, but is not created, by the pr_sense_port method of the pRintER class, in
|
||
the FORM library.
|
||
|
||
|
||
P$Z
|
||
The paper size, stored as a single ASCII digit. It is normally ‘0’ (A4) or ‘4’ (Letter).
|
||
|
||
|
||
This environment variable is only used on the Siena and the Series 3c. It is not supported on Siena
|
||
machines with a version number of 4.20 and below.
|
||
|
||
|
||
PSIP
|
||
|
||
|
||
A single ASCII character, specifying the port letter for the IR printing device. This environment variable
|
||
is used on the Siena and the Series 3c only.
|
||
|
||
|
||
P$PX
|
||
|
||
|
||
This environment variable contains the device type and the serial characteristics for ‘Parallel’ printing. It
|
||
is used only on the Siena and the Series 3c, which communicate with the Parallel cable via a serial
|
||
interface.
|
||
|
||
|
||
The environment variable contains a one byte device type (0 is parallel) followed by a p_srcuar struct, as
|
||
defined in p_serial.h.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
Calculator application
|
||
C$CALC
|
||
|
||
|
||
This environment variable is used on the Siena and Series 3c machines only, to store Calculator display
|
||
preferences. It contains the following structure:
|
||
|
||
|
||
typedef struct
|
||
|
||
|
||
INT bitmapId;
|
||
|
||
|
||
INT currentView; /* store current Calc View */
|
||
|
||
INT statusWinSize; /* store status window size */
|
||
|
||
INT nDec; /* -l=off, or 0..4 fixed dec places */
|
||
INT Zoom; /* zoom setting for Advanced view */
|
||
|
||
|
||
DOUBLE memory;
|
||
}CR_CALC_ENV_INFO;
|
||
|
||
|
||
whose members have the following meanings:
|
||
BitmapId for internal use only
|
||
CurrentView 0=Desk view, 1=Advanced view
|
||
|
||
|
||
StatusWinSize one of the Window server flags: w_sTATUS_WINDOW_OFF, W_STATUS_WINDOW_SMALL,
|
||
or (Series 3c only) w_sTATUS_WINDOW_BIG
|
||
|
||
|
||
NDec used by the Desk view: values can be 0 to 4 inclusive, to specify the fixed number of
|
||
decimal places to display, or -1 to display a variable number of decimal places
|
||
|
||
|
||
Zoom used by the Advanced view to contain the ID of the font used in the current zoom
|
||
state. For the Siena, the allowed range of values is FonT_ID_swiss_s8 to
|
||
FONT_ID_SWISS_8+3 inclusive, and for the Series 3c the range is FONT_ID_SWISS_8
|
||
to FONT_ID_SwWIss_8+4 inclusive
|
||
|
||
|
||
Memory the current contents of the Desk view’s memory.
|
||
|
||
|
||
M$0MO0 to M$9M9
|
||
|
||
|
||
These environment variables contain the current values of the ten (Advanced view) calculator memories.
|
||
|
||
|
||
Note that the names of these environment variables are dependent on the names of the memories, as seen
|
||
from within the Calculator application. If, for example, memory M2 is renamed to “Memory2”, the
|
||
environment variable ms2m2 will be replaced by an environment variable with the name ms2mEmory2.
|
||
|
||
|
||
The name of each of these environment variables will never exceed eleven characters.
|
||
|
||
|
||
Tips application
|
||
|
||
TW$S
|
||
|
||
Contains permanent data for the Tips application. The data consists of a single byte containing two flags:
|
||
0x02 if set, the display of tips is enabled
|
||
|
||
|
||
0x04 if set, tips are displayed once per day, otherwise they are displayed whenever the
|
||
machine is turned on
|
||
|
||
|
||
B ENVIRONMENT VARIABLES
|
||
|
||
|
||
World application
|
||
|
||
Wsc
|
||
|
||
Contains the display preferences for the World application, as three worps:
|
||
clock type either wS_CLOCK_FORCE_ANALOG Of WS_CLOCK_FORCE_DIGITAL
|
||
map colour either TRUE for a grey map or Fa.se for a black map
|
||
|
||
|
||
distance units — one of wR_uNITS_MILES (0), WR_LUNITS_KILOMETERS (1) or WR_UNITS_NAUTICAL (2)
|
||
|
||
|
||
WS$R
|
||
|
||
|
||
This environment variable stores permanent data for the World database services. The content has three
|
||
elements:
|
||
|
||
|
||
e asignature for the world database file, including the file version,
|
||
e data specifying the home city,
|
||
|
||
|
||
e data specifying the default country, that is, the country to which telephone numbers are assumed
|
||
to belong if a particular country is not specified.
|
||
|
||
|
||
Spell/Thesaurus
|
||
SP$DRV
|
||
|
||
|
||
This environment variable identifies the drive that contains the Spellchecker’s global dictionary, as set
|
||
from the Spell application’s Install menu option. It contains a single ASCII character that may be ‘A’, ‘B’
|
||
or ‘M’.
|
||
|
||
|
||
SP$OPT
|
||
|
||
|
||
This environment variable stores the preferences settings from the Spell application as a series of flags,
|
||
stored in a single uworp. The contents affect the spellchecker and thesaurus (although not necessarily used
|
||
by both)
|
||
|
||
|
||
The content is an ored combination of the following set of values, selected by the user from the Spell
|
||
application’s Preferences menu option:
|
||
|
||
|
||
0x0100 if set, ignore words all in upper case
|
||
0x0200 if set, ignore words containing punctuation
|
||
0x0400 if set, ignore repeated words
|
||
|
||
0x0800 if set, ignore the case of repeated words
|
||
0x1000 if set, show the definitions window
|
||
WP$SPEL
|
||
|
||
|
||
This is used by all applications that may wish to access the Spellchecker. The content is a single byte with
|
||
a value of zero, but has no significance; the mere existence of the environment variable indicates that the
|
||
Spellchecker is currently installed.
|
||
|
||
|
||
WP$THES
|
||
|
||
|
||
This is used by all applications that may wish to access the Thesaurus. The content is a single byte with a
|
||
value of zero, but has no significance; the mere existence of the environment variable indicates that the
|
||
Thesaurus is currently installed.
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
———— ee re]
|
||
3Fax application
|
||
|
||
|
||
FSX
|
||
|
||
|
||
This environment variable contains two bytes of preferences.
|
||
|
||
|
||
The first byte contains one of the ASCII characters ‘M’, ‘A’ or ‘B’, representing the drive that is currently
|
||
used to store the application’s intermediate files.
|
||
|
||
|
||
The second byte contains a combination of the following flags:
|
||
|
||
|
||
0x01 if set, a new fax job is created on selection of ‘Print to fax’. Otherwise, the
|
||
document is simply processed to produce an intermediate file, for later
|
||
sending
|
||
|
||
0x02 if set, intermediate files are automatically deleted after they have been sent
|
||
|
||
F$XM
|
||
|
||
Contains the current 3Fax modem parameters.
|
||
|
||
F$XP
|
||
|
||
|
||
Stores power usage data for the 3Fax device. Contains the time on batteries and the time on mains.
|
||
|
||
|
||
Se ee ee eT)
|
||
Email applications
|
||
|
||
|
||
MAIL$ST
|
||
|
||
|
||
This environment variable is used, with some differences in content, by both the Corporate and the
|
||
Internet PsiMail applications. It is created by an email application whenever a mail session completes, to
|
||
contain data passed from the message transfer agent (MTA) to the mail client. It is not a permanent store
|
||
of data, as it is deleted and recreated every time the MTA starts.
|
||
|
||
|
||
A MAILSST environment variable created by the Corporate mail application will not disrupt the Internet
|
||
mail application, should it be run on the same machine, and vice versa.
|
||
|
||
|
||
The content for the Corporate application consists of a sequence of five uworns, in the following order:
|
||
e acount of the messages that were sent
|
||
e acount of the messages that were received
|
||
e acount of the messages that were not sent
|
||
e acount of the messages that are marked as read
|
||
e¢ a flag which, if set to TRUE, indicates that some messages were not received
|
||
The content for the Internet application consists of a sequence of eight uworps, in the following order:
|
||
e acount of the messages that were sent
|
||
e acount of the messages that were received
|
||
e acount of the messages that were not sent
|
||
e acount of the messages that are marked as read
|
||
e acount of messages that were deleted from the mail server
|
||
e the return code from the MTA
|
||
e the return code from the sending process (normally 0)
|
||
e the return code from the receiving process (normally 0)
|
||
|
||
|
||
As can be seen from the above lists, the first four items are common to both variants of MarLsst.
|
||
|
||
|
||
B ENVIRONMENT VARIABLES
|
||
|
||
|
||
Workabout
|
||
|
||
|
||
The following environment variables are used only on Workabout machines. See also pspp and pssp,
|
||
described in the Printing section of this chapter.
|
||
|
||
|
||
S$SVER
|
||
|
||
|
||
Contains a text string representing the Workabout Startup Shell version number, for example, “1.00F”.
|
||
|
||
|
||
C$P@
|
||
|
||
|
||
This environment variable is set when exiting from the Workabout command processor. It contains a
|
||
single ASCII character representing the current drive, with a default value of ‘M’.
|
||
|
||
|
||
C$PA to C$PZ
|
||
|
||
|
||
The environment variable cspa may be set when exiting from the Workabout command processor, to
|
||
contain a text string representing the current path on drive A. It is not set if the drive A path is to the root
|
||
directory.
|
||
|
||
|
||
Similar environment variables may be set for all other possible drives - cspg to cspz inclusive.
|
||
C$P£
|
||
|
||
|
||
This environment variable contains the parameters used by Link when accessed from the Workabout
|
||
System Screen and/or Command Processor.
|
||
|
||
|
||
C$P$
|
||
|
||
|
||
This environment variable is set following selection of the keyboard from the Command Processor or the
|
||
System Screen. It contains a single byte whose binary value is either 0 (Standard keyboard selected) or |
|
||
(Special keyboard selected).
|
||
|
||
|
||
INDEX
|
||
|
||
|
||
$WS_FL
|
||
|
||
environment variable, B-1
|
||
$WS_FNTS
|
||
|
||
environment variable, B-2
|
||
$WS_IF
|
||
|
||
environment variable, B-2
|
||
$WS_SD
|
||
|
||
environment variable, B-2
|
||
$WS_SF
|
||
|
||
environment variable, B-3
|
||
$WS_SF2
|
||
|
||
environment variable, B-3
|
||
$WS_SF4
|
||
|
||
environment variable, B-3
|
||
.wve files
|
||
|
||
sound file format, 8-1
|
||
active
|
||
|
||
marking a process, 19-7
|
||
|
||
unmarking a process, 19-8
|
||
add
|
||
|
||
two floats, 14-2
|
||
adjust
|
||
|
||
a heap memory cell size, 3-2
|
||
|
||
size of a memory segment, 2-6
|
||
alarm
|
||
|
||
getting the server pid, 19-15
|
||
|
||
hooking the interface, 19-15
|
||
|
||
unhooking the interface, 19-15
|
||
allocate
|
||
|
||
a heap memory cell, 3-1
|
||
|
||
re-allocating a heap memory cell, 3-2
|
||
am
|
||
|
||
getting the amtext, 19-11
|
||
append
|
||
|
||
a DBFrecord, 20-10
|
||
arcsine
|
||
|
||
float function, 15-1
|
||
arctangent
|
||
|
||
float function, 15-1
|
||
asynchronous
|
||
|
||
I/O, 8-2
|
||
|
||
1/O without error reporting, 8-2
|
||
|
||
message reception, 5-2
|
||
attach
|
||
|
||
a file system, 9-6
|
||
auto-switch-off
|
||
|
||
disable/enable if mains present, 19-16
|
||
|
||
get state if mains present, 19-16
|
||
|
||
processes and, 19-8
|
||
|
||
processes and, 19-7
|
||
|
||
resetting, 19-15
|
||
|
||
setting value, 19-9
|
||
|
||
|
||
Auto-switch-off
|
||
|
||
Getting value, 19-9
|
||
battery
|
||
|
||
enable/disable reset, 21-10
|
||
|
||
getting type, 19-11
|
||
|
||
reset the status, 21-10
|
||
|
||
return pointer to information, 21-11
|
||
|
||
setting type, 19-11
|
||
buffer
|
||
|
||
comparing, 17-1
|
||
|
||
comparing folded, 17-2
|
||
|
||
copying, 17-1
|
||
|
||
justifying, 17-4
|
||
|
||
locating, 17-2
|
||
|
||
locating folded, 17-2
|
||
|
||
subbuffer, 17-3
|
||
|
||
sub-buffer folded, 17-3
|
||
|
||
swapping, 17-1
|
||
|
||
wild card match, 17-3
|
||
|
||
wild card match folded, 17-4
|
||
BufferCompare
|
||
|
||
compare buffers service, 17-1
|
||
BufferCompareFolded
|
||
|
||
compare buffers folded service, 17-2
|
||
BufferCopy
|
||
|
||
copy buffer service, 17-1
|
||
BufferJustify
|
||
|
||
justify a buffer service, 17-4
|
||
BufferLocate
|
||
|
||
locate a character in buffer service, 17-2
|
||
BufferLocateFolded
|
||
|
||
|
||
locate a character in buffer folded service,
|
||
|
||
|
||
17-2
|
||
BufferMatch
|
||
|
||
match a wildcard buffer service, 17-3
|
||
BufferMatchFolded
|
||
|
||
|
||
match a wildcard buffer folded service, 17-4
|
||
|
||
|
||
BufferSubBuffer
|
||
|
||
|
||
find a sub-buffer in a buffer service, 17-3
|
||
|
||
|
||
BufferSubBufferFolded
|
||
|
||
|
||
find a sub-buffer in a buffer folded service,
|
||
|
||
|
||
17-3
|
||
BufferSwap
|
||
|
||
swap buffers service, 17-1
|
||
C$CALC
|
||
|
||
environment variable, B-6
|
||
C$P$
|
||
|
||
environment variable, B-9
|
||
C$P@
|
||
|
||
environment variable, B-9
|
||
C$PEL
|
||
|
||
environment variable, B-9
|
||
C$PA to C$PZ
|
||
|
||
environment variables, B-9
|
||
cancel
|
||
|
||
message receive, 5-3
|
||
|
||
playing back sound file, 8-13
|
||
|
||
recording sound to file, 8-14
|
||
|
||
signal from the supervisor, 5-5
|
||
|
||
signal from the supervisor by type, 5-6
|
||
|
||
signal from the supervisor I/O, 8-11
|
||
capitalising
|
||
|
||
a string, 18-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
category
|
||
|
||
copying data from, 6-7
|
||
change
|
||
|
||
size of a memory segment, 2-6
|
||
character
|
||
|
||
is a digit, 16-1
|
||
|
||
is a hexadecimal digit, 16-1
|
||
|
||
is alphabetic, 16-1
|
||
|
||
is alphabetic or digit, 16-2
|
||
|
||
is graphic, 16-3
|
||
|
||
is lowercase, 16-2
|
||
|
||
is printable, 16-1
|
||
|
||
is punctuation, 16-2
|
||
|
||
is space, 16-2
|
||
|
||
is uppercase, 16-2
|
||
|
||
to fold, 16-3
|
||
|
||
to uppercase, 16-3
|
||
Character
|
||
|
||
is control, 16-3
|
||
|
||
to lowercase, 16-3
|
||
CharIsAlpha
|
||
|
||
character is alphabetic service, 16-1
|
||
CharIsAlphaNumeric
|
||
|
||
character is alphabetic or digit service, 16-2
|
||
CharIsControl
|
||
|
||
character is control service, 16-3
|
||
|
||
|
||
CharIsDigit
|
||
|
||
character is a digit service, 16-1
|
||
CharIsGraphic
|
||
|
||
character is graphic service, 16-3
|
||
CharIsHexDigit
|
||
|
||
|
||
character is a hexadecimal digit service,
|
||
|
||
16-1
|
||
CharIsLowerCase
|
||
|
||
character is lowercase service, 16-2
|
||
CharIsPrintable
|
||
|
||
character is printable service, 16-1
|
||
CharIsPunctuation
|
||
|
||
character is punctuation service, 16-2
|
||
CharIsSpace
|
||
|
||
character is space service, 16-2
|
||
CharIsUpperCase
|
||
|
||
character is uppercase service, 16-2
|
||
CharToFoldedChar
|
||
|
||
character to fold service, 16-3
|
||
CharToLowerChar
|
||
|
||
character to lower service, 16-3
|
||
CharToUpperChar
|
||
|
||
character to upper service, 16-3
|
||
close
|
||
|
||
a database file, 20-4
|
||
|
||
afile, 8-8
|
||
|
||
a locked or device segment, 2-5
|
||
|
||
a memory segment, 2-4
|
||
|
||
an I/Odevice, 8-8
|
||
coldstart
|
||
|
||
getting the reason for, 19-2
|
||
command line
|
||
|
||
getting, 19-6
|
||
compare
|
||
|
||
two buffers, 17-1
|
||
|
||
two buffers case independent, 17-2
|
||
|
||
two floats, 14-1
|
||
|
||
two long integers, 13-1
|
||
|
||
|
||
two strings, 18-1
|
||
|
||
two strings case independent, 18-2
|
||
|
||
two unsigned long integers, 13-2
|
||
compress
|
||
|
||
a database file, 20-5
|
||
connect
|
||
|
||
to the file server, 9-1
|
||
ConvArgumentsToBuffer
|
||
|
||
convert arguments to buffer service, 12-2
|
||
conversion
|
||
|
||
arguments to buffer, 12-2
|
||
|
||
floating point number to buffer, 12-4
|
||
|
||
integer to buffer, 12-1
|
||
|
||
long integer to buffer, 12-2
|
||
|
||
string to floating point number, 12-5
|
||
|
||
string to integer, 12-3
|
||
|
||
string to long integer, 12-3
|
||
|
||
string to unsigned integer, 12-2
|
||
|
||
string to unsigned long integer, 12-2
|
||
|
||
unsigned integer to buffer, 12-1
|
||
|
||
unsigned long integer to buffer, 12-1
|
||
convert
|
||
|
||
a string to folded, 18-1
|
||
|
||
float to signed integer, 14-3
|
||
|
||
float to signed long, 14-2
|
||
|
||
float to unsigned integer, 14-3
|
||
|
||
float to unsigned long, 14-2
|
||
|
||
signed integer to float, 14-3
|
||
|
||
signed long to float, 14-3
|
||
|
||
unsigned integer to float, 14-3
|
||
ConvFloatToBuffer
|
||
|
||
convert floating point number to buffer
|
||
|
||
service, 12-4
|
||
ConvintToBuffer
|
||
|
||
convert integer to buffer service, 12-1
|
||
ConvLongIntToBuffer
|
||
|
||
convert long integer to buffer service, 12-2
|
||
ConvStringToFloat
|
||
|
||
convert string to floating point number,
|
||
|
||
12-5
|
||
ConvStringToInt
|
||
|
||
convert string to integer, 12-3
|
||
ConvStringToLongInt
|
||
|
||
convert string to long integer, 12-3
|
||
ConvStringToUnsignedInt
|
||
|
||
convert string to unsigned integer, 12-2
|
||
ConvStringToUnsignedLongInt
|
||
|
||
convert string to unsigned long integer,
|
||
|
||
12-2
|
||
ConvUnsignedIntToBuffer
|
||
|
||
convert unsigned integer to buffer service,
|
||
|
||
12-1
|
||
ConvUnsignedLongIntToBuffer
|
||
|
||
convert unsigned long integer to buffer
|
||
|
||
service, 12-1
|
||
copy
|
||
|
||
a buffer, 17-1
|
||
|
||
a database file, 20-5
|
||
|
||
a string, 18-1
|
||
|
||
a string folded, 18-1
|
||
|
||
copying down a DBF record, 20-5
|
||
|
||
data from a process, 10-8
|
||
|
||
data to a process, 10-9
|
||
|
||
from a category, 6-7
|
||
|
||
|
||
from a memory segment, 2-7
|
||
strings from a process, 10-9
|
||
to a memory segment, 2-6
|
||
cosine
|
||
float function, 15-1
|
||
count
|
||
the number of DBF records, 20-13
|
||
country data
|
||
getting, 19-2
|
||
setting, 19-2
|
||
CRC
|
||
generating, 19-12
|
||
create
|
||
a memory segment, 2-3
|
||
an object by handle, 6-3
|
||
an object by number, 6-3
|
||
a process, 10-4
|
||
a semaphore, 4-1
|
||
a task, 10-4
|
||
D$xX
|
||
environment variable, B-3
|
||
data segment
|
||
of the operating system, 19-2
|
||
Database file
|
||
appending a record, 20-10
|
||
closing, 20-4
|
||
compressing, 20-5
|
||
copying, 20-5
|
||
copying down a record, 20-5
|
||
counting the number of records, 20-13
|
||
Deleted records, 20-5
|
||
end of file, 20-2
|
||
erasing a record, 20-11
|
||
file buffering, 20-2
|
||
file structure, 20-1
|
||
finding a record, 20-12
|
||
finding a record by field, 20-13
|
||
flushing, 20-4
|
||
getting the size, 20-6
|
||
Getting the version number, 20-8
|
||
index table, 20-2
|
||
number of records, 20-3
|
||
opening, 20-3
|
||
reading an absolute record, 20-8
|
||
reading and sensing an absolute record,
|
||
20-9
|
||
reading the descriptive record, 20-7
|
||
reading the extended header, 20-7
|
||
reading the first record, 20-10
|
||
reading the last record, 20-10
|
||
reading the next record, 20-9
|
||
reading the previous record, 20-9
|
||
sensing the record number, 20-13
|
||
trashing the buffer, 20-4
|
||
updating a record, 20-11
|
||
writing the descriptive record, 20-8
|
||
Writing the extended header, 20-7
|
||
date
|
||
abbreviated name of day, 11-5
|
||
abbreviated name of month, 11-5
|
||
convert date to day seconds, 11-3
|
||
convert day seconds to date, 11-3
|
||
convert day seconds to system time, 11-3
|
||
|
||
|
||
INDEX
|
||
|
||
|
||
convert the system time to day seconds,
|
||
11-3
|
||
getting am and pm text, 19-11
|
||
getting suffixes, 19-11
|
||
getting the systemdate, 11-2
|
||
name of day, 11-4
|
||
name of month, 11-4
|
||
number of days in a month, 11-4
|
||
set file, 9-8
|
||
setting the system date, 11-2
|
||
weekday number, 11-4
|
||
day
|
||
abbreviated name of, 11-5
|
||
name of, 11-4
|
||
days
|
||
number of, 11-4
|
||
DbfAbsRead
|
||
reading an absolute DBF record service,
|
||
20-8
|
||
DbfAbsReadSense
|
||
reading and sensing an absolute DBF record
|
||
service, 20-9
|
||
DbfAppend
|
||
append a DBF record service, 20-10
|
||
DbfBackRead
|
||
read the previous DBF record service, 20-9
|
||
DbfClose
|
||
closing a database file service, 20-4
|
||
DbfCompress
|
||
compressing a database file service, 20-5
|
||
DbfCopyDown
|
||
copying down a DBF record service, 20-5
|
||
DbfCopyFile
|
||
copying a database file service, 20-5
|
||
DbfCount
|
||
count the number of DBF records service,
|
||
20-13
|
||
DbfDescRecordRead
|
||
reading a DBF descriptive record service,
|
||
20-7
|
||
DbfDescRecord Write
|
||
writing a DBF descriptive record service,
|
||
20-8
|
||
DbfEraseRead
|
||
erasing a DBF record service, 20-11
|
||
DbfExtHeaderRead
|
||
reading a DBF extended header service,
|
||
20-7
|
||
DbfExtHeaderWrite
|
||
writing a DBF extended header service,
|
||
20-7
|
||
DbfFileSize
|
||
getting the size of a database file service,
|
||
20-6
|
||
DbfFindRead
|
||
finding a DBF record service, 20-12
|
||
DbfFindReadField
|
||
finding a DBF recordbyfield service, 20-13
|
||
DbfFirstRead
|
||
read the first DBF record service, 20-10
|
||
DbfFlush
|
||
flushing a database file service, 20-4
|
||
DbfLastRead
|
||
read the last DBF record service, 20-10
|
||
|
||
|
||
iii
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
DbfNextRead
|
||
|
||
read the next DBF record service, 20-9
|
||
DbfOpen
|
||
|
||
opening a database file service, 20-3
|
||
DbfSense
|
||
|
||
sense the current DBF record number
|
||
|
||
service, 20-13
|
||
DbfTrash
|
||
|
||
trashing the DBF buffer service, 20-4
|
||
DbfUpdate
|
||
|
||
updating a DBF record service, 20-11
|
||
DbfVersion
|
||
|
||
getting the DBF version number service,
|
||
|
||
20-8
|
||
deferred mode
|
||
|
||
setting, 19-4
|
||
delete
|
||
|
||
a device driver, 7-3
|
||
|
||
a file or directory, 9-3
|
||
|
||
a memory segment, 2-4
|
||
|
||
a semaphore, 4-1
|
||
destroy
|
||
|
||
an object, 6-4
|
||
detach
|
||
|
||
a file system, 9-7
|
||
DevDelete
|
||
|
||
delete a device driver service, 7-3
|
||
DevFind
|
||
|
||
find all devices service, 7-4
|
||
DevGetPDDAddress
|
||
|
||
get PDD entry point service, 7-2
|
||
DevHold
|
||
|
||
hold all device drivers service, 7-2
|
||
devices
|
||
|
||
calling a vector, 7-5
|
||
|
||
delete a device driver, 7-3
|
||
|
||
drivers, 7-1
|
||
|
||
find all devices, 7-4
|
||
|
||
getting the PDD entry point, 7-2
|
||
|
||
hold all device drivers, 7-2
|
||
|
||
install a device driver, 7-2
|
||
|
||
load a logical device driver, 7-3
|
||
|
||
load a physical device driver, 7-3
|
||
|
||
names, 7-1
|
||
|
||
open a physical device driver, 7-1
|
||
|
||
query the number of units, 7-4
|
||
|
||
remove a device driver, 7-4
|
||
|
||
resume all device drivers, 7-3
|
||
devices and files
|
||
|
||
and I/O, 8-1
|
||
DevInstall
|
||
|
||
install a device driver service, 7-2
|
||
DevLoadLDD
|
||
|
||
load a logical device driver service, 7-3
|
||
DevLoadPDD
|
||
|
||
load a physical device driver service, 7-3
|
||
DevOpenPDD
|
||
|
||
open PDD service, 7-1
|
||
DevQueryUnits
|
||
|
||
query the number of units service, 7-4
|
||
DevRemove
|
||
|
||
remove a device driver service, 7-4
|
||
DevResume
|
||
|
||
resume all device drivers service, 7-3
|
||
|
||
|
||
DevVector
|
||
call a device vector, 7-5
|
||
directory
|
||
changing, 9-7
|
||
deleting, 9-3
|
||
getting status, 9-4
|
||
making, 9-6
|
||
renaming, 9-4
|
||
setting status, 9-4
|
||
display type
|
||
getting, 19-2
|
||
divide
|
||
floats, 14-1
|
||
two long integers, 13-1
|
||
two unsigned long integers, 13-2
|
||
dummy
|
||
call, 19-3
|
||
service, 19-3
|
||
DYL
|
||
getting a handle, 6-3
|
||
dynamic library
|
||
finding, 6-2
|
||
getting a handle, 6-3
|
||
linking, 6-2
|
||
loading, 6-1
|
||
loading multiple, 6-6
|
||
names, 6-1
|
||
unloading, 6-2
|
||
EM$
|
||
environment variable, B-1
|
||
endoffile
|
||
database file, 20-2
|
||
enter
|
||
a control region, 6-7
|
||
leaving from a control region, 6-7
|
||
environment variable
|
||
$WS_FL, B-1
|
||
$WS_FNTS, B-2
|
||
$WS_IF, B-2
|
||
$WS_SD, B-2
|
||
$WS_SF, B-3
|
||
$WS_SF2, B-3
|
||
$WS_SF4, B-3
|
||
C$CALC, B-6
|
||
C$P$, B-9
|
||
C$P@, B-9
|
||
C$PE£, B-9
|
||
C$PA to C$PZ, B-9
|
||
contents and names of all, B-1
|
||
D$X, B-3
|
||
deleting buffer, 19-13
|
||
deleting string, 19-14
|
||
EM$, B-1
|
||
F$X, B-8
|
||
F$XM, B-8
|
||
F$XP, B-8
|
||
finding buffer, 19-13
|
||
finding string, 19-14
|
||
getting buffer, 19-12
|
||
getting string, 19-14
|
||
L$X, B-3
|
||
M$0MO, B-6
|
||
M$1M1, B-6
|
||
M$2M2, B-6
|
||
|
||
|
||
MAILSST, B-8
|
||
|
||
|
||
names and contents of all, B-1
|
||
|
||
|
||
P$D, B-4
|
||
P$F, B-4
|
||
P$IP, B-5
|
||
P$M, B-5
|
||
|
||
|
||
S$SVER, B-9
|
||
|
||
setting buffer, 19-12
|
||
|
||
setting string, 19-14
|
||
|
||
SP$DRV, B-7
|
||
|
||
SP$OPT, B-7
|
||
|
||
TW$S, B-6
|
||
|
||
WSC, B-7
|
||
|
||
WSR, B-7
|
||
|
||
WPS$SPEL, B-7
|
||
|
||
WP$THES, B-7
|
||
Environment variable
|
||
|
||
Finding all, 19-13
|
||
epocsibo.inc
|
||
|
||
Include file, 21-10
|
||
erase
|
||
|
||
aDBFrecord, 20-11
|
||
error
|
||
|
||
notificationof, 19-5
|
||
errors
|
||
|
||
gettingthetext, 19-3
|
||
execute
|
||
|
||
animagefile, 9-1
|
||
exits
|
||
|
||
watchingall, 10-8
|
||
expansion port
|
||
|
||
sense state of, 21-12
|
||
exponentiation
|
||
|
||
floatfunction, 15-2
|
||
F$X
|
||
|
||
environment variable, B-8
|
||
F$XM
|
||
|
||
environment variable, B-8
|
||
F$XP
|
||
|
||
environment variable, B-8
|
||
FilChangeDirectory
|
||
|
||
|
||
change directory service, 9-7
|
||
|
||
|
||
FilConnect
|
||
|
||
|
||
file server connect service, 9-1
|
||
|
||
|
||
FilDelete
|
||
|
||
|
||
delete file or directory service, 9-3
|
||
|
||
|
||
filebuffering
|
||
|
||
database file, 20-2
|
||
filemanagement
|
||
|
||
attaching a file system, 9-6
|
||
|
||
|
||
INDEX
|
||
|
||
|
||
change directory, 9-7
|
||
|
||
connect to the file server, 9-1
|
||
|
||
deleting, 9-3
|
||
|
||
detaching a file system, 9-7
|
||
|
||
execute a program file, 9-1
|
||
|
||
get current path, 9-2
|
||
|
||
get current path by ID, 9-7
|
||
|
||
getting device status, 9-5
|
||
|
||
getting status, 9-4
|
||
|
||
getting system status, 9-5
|
||
|
||
local file system changed, 9-8
|
||
|
||
making a new directory, 9-6
|
||
|
||
parse a filename, 9-2
|
||
|
||
read a local device directly, 9-9
|
||
|
||
read media information of a local device,
|
||
|
||
9-9
|
||
|
||
renaming, 9-4
|
||
|
||
set current path, 9-3
|
||
|
||
set file date, 9-8
|
||
|
||
set initial path, 9-8
|
||
|
||
setting status, 9-4
|
||
|
||
test path available, 9-3
|
||
filename
|
||
|
||
generic parse, 19-3
|
||
fileserver
|
||
|
||
process, 9-1
|
||
filestructure
|
||
|
||
database file, 20-1
|
||
FilExecute
|
||
|
||
execute image file service, 9-1
|
||
FilLocChanged
|
||
|
||
report if the local file system has changed,
|
||
|
||
9-8
|
||
FilLocDevice
|
||
|
||
read media information of a local device,
|
||
|
||
9-9
|
||
FilLocReadPdd
|
||
|
||
read a local device directly, 9-9
|
||
FilMakeDirectory
|
||
|
||
make a new directory service, 9-6
|
||
FilOpenUnique
|
||
|
||
I/O open a unique filename service, 9-6
|
||
FilParse
|
||
|
||
parse filename service, 9-2
|
||
FilPathGet
|
||
|
||
get current path service, 9-2
|
||
FilPathGetByld
|
||
|
||
get current path by ID service, 9-7
|
||
FilPathSet
|
||
|
||
set current path service, 9-3
|
||
FilPathTest
|
||
|
||
test path available service, 9-3
|
||
FilRename
|
||
|
||
rename a file or directory service, 9-4
|
||
FilSetFileDate
|
||
|
||
set file date service, 9-8
|
||
FilSetInitialPath
|
||
|
||
set initial path service, 9-8
|
||
FilStatusDevice
|
||
|
||
get device status service, 9-5
|
||
FilStatusGet
|
||
|
||
get file or directory status service, 9-4
|
||
FilStatusSet
|
||
|
||
setfile or directory status service, 9-4
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
FilStatusSystem
|
||
get file system status, 9-5
|
||
FilSystemAttach
|
||
attach a file system service, 9-6
|
||
FilSystemDetach
|
||
detach a file system service, 9-7
|
||
find
|
||
a DBF record, 20-12
|
||
a DBF record by field, 20-13
|
||
a dynamic library, 6-2
|
||
all Devices, 7-4
|
||
all processes, 10-7
|
||
all segments, 2-6
|
||
float
|
||
adding, 14-2
|
||
arc sine function, 15-1
|
||
arc tangent function, 15-1
|
||
comparing, 14-1
|
||
conversion to a buffer, 12-4
|
||
converting signed integer to float, 14-3
|
||
converting signed long to float, 14-3
|
||
converting to signed integer, 14-3
|
||
converting to signed long, 14-2
|
||
converting to unsigned integer, 14-3
|
||
converting to unsigned long, 14-2
|
||
|
||
|
||
converting unsigned integer to float, 14-3
|
||
|
||
|
||
cosine function, 15-1
|
||
|
||
dividing, 14-1
|
||
|
||
exponentiation function, 15-2
|
||
logarithm function, 15-2
|
||
modulo function, 15-3
|
||
multiplying, 14-1
|
||
|
||
natural logarithm function, 15-2
|
||
negating, 14-2
|
||
|
||
power function, 15-3
|
||
|
||
random number function, 15-3
|
||
sine function, 15-3
|
||
|
||
square root function, 15-4
|
||
subtracting, 14-2
|
||
|
||
tangent function, 15-4
|
||
|
||
to integer, 15-2
|
||
|
||
|
||
FloatAdd
|
||
|
||
add floats service, 14-2
|
||
FloatASin
|
||
|
||
arc sine service, 15-1
|
||
FloatATan
|
||
|
||
arc tangent service, 15-1
|
||
FloatCompare
|
||
|
||
compare floats service, 14-1
|
||
FloatCos
|
||
|
||
cosine service, 15-1
|
||
FloatDivide
|
||
|
||
divide floats service, 14-1
|
||
FloatExp
|
||
|
||
exponentiation service, 15-2
|
||
FloatInt
|
||
|
||
integer service, 15-2
|
||
FloatLn
|
||
|
||
natural logarithm service, 15-2
|
||
FloatLog
|
||
|
||
logarithm service, 15-2
|
||
FloatMod
|
||
|
||
|
||
modulo service, 15-3
|
||
|
||
|
||
FloatMultiply
|
||
|
||
multiply floats service, 14-1
|
||
FloatNegate
|
||
|
||
negate floats service, 14-2
|
||
FloatPow
|
||
|
||
power service, 15-3
|
||
FloatRand
|
||
|
||
random number service, 15-3
|
||
FloatSin
|
||
|
||
sine service, 15-3
|
||
FloatSqrt
|
||
|
||
square root service, 15-4
|
||
FloatSubtract
|
||
|
||
subtract floats service, 14-2
|
||
FloatTangent
|
||
|
||
tangent service, 15-4
|
||
FloatToInt
|
||
|
||
|
||
convert float to signed integer service, 14-3
|
||
|
||
|
||
FloatToLong
|
||
convert float to long service, 14-2
|
||
FloatToUnsignedInt
|
||
|
||
|
||
convert float to unsigned integer service,
|
||
|
||
|
||
14-3
|
||
FloatToUnsignedLong
|
||
|
||
convert float to long service, 14-2
|
||
flush
|
||
|
||
a database file, 20-4
|
||
free
|
||
|
||
a heap memory cell, 3-3
|
||
|
||
a message, 5-4
|
||
GenAlarmHook
|
||
|
||
hook the alarm interface, 19-15
|
||
GenAlarmld
|
||
|
||
get the pid of the alarm server, 19-15
|
||
GenCrc
|
||
|
||
generate a CRC check, 19-12
|
||
|
||
|
||
GenDataSegment
|
||
|
||
operating system data segment, 19-2
|
||
GenDeferredMode
|
||
|
||
set deferred mode, 19-4
|
||
GenEnvBufferDelete
|
||
|
||
delete environment variable, 19-13
|
||
GenEnvBufferFind
|
||
|
||
find environment variable, 19-13
|
||
GenEnvBufferGet
|
||
|
||
get environment variable, 19-12
|
||
GenEnvBufferSet
|
||
|
||
set environment variable, 19-12
|
||
GenEnvStringDelete
|
||
|
||
delete environment variable, 19-14
|
||
GenEnvStringFind
|
||
|
||
find environment variable, 19-14
|
||
GenEnvStringGet
|
||
|
||
get environment variable, 19-14
|
||
GenEnvStringSet
|
||
|
||
set environment variable, 19-14
|
||
GenGetAmPmText
|
||
|
||
get the am and pm text, 19-11
|
||
GenGetAutoMains
|
||
|
||
|
||
get state for auto-switch-off if mains
|
||
|
||
present, 19-16
|
||
GenGetAutoSwitchOffValue
|
||
|
||
get the auto switch off value, 19-9
|
||
|
||
|
||
GenGetBatteryType
|
||
|
||
get the battery type, 19-11
|
||
GenGetCommandLine
|
||
|
||
get the command line, 19-6
|
||
GenGetCountryData
|
||
|
||
get country dependent data, 19-2
|
||
GenGetErrorText
|
||
|
||
get error text, 19-3
|
||
GenGetLanguageCode
|
||
|
||
get the language code, 19-10
|
||
GenGetNotifyState
|
||
|
||
get notify state, 19-8
|
||
GenGetOsData
|
||
|
||
get O/S data, 19-3
|
||
GenGetRamSizelInParas
|
||
|
||
get address able system RAM size, 19-6
|
||
GenGetSoundFlags
|
||
|
||
get the sound flags, 19-7
|
||
GenGetSuffixes
|
||
|
||
get suffix text, 19-11
|
||
GenGetText
|
||
|
||
get operating system text, 19-8
|
||
GenIntByNumber
|
||
|
||
interrupt by number, 19-12
|
||
GenLcdType
|
||
|
||
LCD type, 19-2
|
||
GenMarkActive
|
||
mark process as active, 19-7
|
||
GenMarkNonActive
|
||
mark process as non-active, 19-8
|
||
GenNotify
|
||
notification service, 19-4
|
||
GenNotifyError
|
||
notification of error, 19-5
|
||
GenNotifyHook
|
||
|
||
hook the notifier interface, 19-5
|
||
GenParse
|
||
|
||
generic parse, 19-3
|
||
|
||
|
||
GenResetRevector
|
||
|
||
release an interrupt, 19-10
|
||
GenRom Version
|
||
|
||
get the ROM version, 19-1
|
||
GenSetAutoMains
|
||
|
||
|
||
disable/enableauto-switch-off if mains
|
||
|
||
present, 19-16
|
||
GenSetAutoSwitchOffValue
|
||
|
||
set the auto switchoff time, 19-9
|
||
GenSetBatteryType
|
||
|
||
set the battery type, 19-11
|
||
GenSetCountryData
|
||
|
||
set country dependent data, 19-2
|
||
GenSetNotifyState
|
||
|
||
set notify state, 19-9
|
||
GenSetOnEvents
|
||
|
||
enable/disable on events, 19-16
|
||
GenSetRevector
|
||
|
||
capture an interrupt, 19-9
|
||
GenSetSoundFlags
|
||
|
||
set the sound flags, 19-7
|
||
GenSound
|
||
|
||
make a sound with the piezo, 19-7
|
||
GenStartReason
|
||
|
||
getting the system cold start reason, 19-2
|
||
|
||
|
||
INDEX
|
||
|
||
|
||
GenTickle
|
||
|
||
reset the autoswitch off timer, 19-15
|
||
GenUnAlarmHook
|
||
|
||
unhook the alarm interface, 19-15
|
||
GenUnNotifyHook
|
||
|
||
|
||
unhook the notifier interface, 19-6
|
||
GenVersion
|
||
operating system version number, 19-1
|
||
granularity
|
||
of the heap memory, 3-3
|
||
halfseconds
|
||
query completion, 8-12
|
||
signal on next half second, 8-11
|
||
handle
|
||
of a DYL, 6-3
|
||
of a dynamic library, 6-3
|
||
handler
|
||
adding, 8-6
|
||
adding an application, 8-9
|
||
enabling, 8-6
|
||
enabling an application, 8-10
|
||
removing, 8-6
|
||
removing an application, 8-10
|
||
hardware
|
||
capturing the combo subsystem, 21-5
|
||
changing the LCD contrast, 21-6
|
||
clearing bits in Asic2 register1, 21-2
|
||
clearing bits in Asic2 register2, 21-3
|
||
clearing bits in Asic2 register3, 21-3
|
||
enable/disable reset, 21-10
|
||
exiting toDOS, 21-5
|
||
expansion port sense state of, 21-12
|
||
freeing a channel, 21-6
|
||
freeing the combo subsystem, 21-5
|
||
get additional power supply data, 21-10
|
||
getting achannel, 21-5
|
||
getting backlight control, 21-7
|
||
getting current LCD contrast, 21-7
|
||
getting supplies status, 21-6
|
||
getting supplies warnings, 21-6
|
||
getting the power supply type, 21-6
|
||
Honda connector power disable, 21-12
|
||
Honda connector power enable, 21-12
|
||
infrared power level set, 21-11
|
||
operating the backlight, 21-7
|
||
reading Asic2 register2, 21-3
|
||
reading Asic2 register3, 21-4
|
||
reset the battery status, 21-10
|
||
return battery information, 21-11
|
||
scan state of all keys, 21-8
|
||
select serial channel, 21-4
|
||
sending a serial null frame, 21-4
|
||
setting backlight control, 21-7
|
||
setting bits in Asic2 register1, 21-2
|
||
setting bits in Asic2 register2, 21-2
|
||
setting bits in Asic2 register3, 21-3
|
||
SSDs relog, 21-11
|
||
switching off, 21-4
|
||
switching off the combo, 21-1
|
||
switching off the SSDs, 21-1
|
||
switching on the combo, 21-1
|
||
switching on the combo in input mode,
|
||
21-10
|
||
switching on the SSDs, 21-1
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
tick count sense current, 21-11
|
||
writing Asic2 register 1, 21-2
|
||
writing Asic2 register2, 21-3
|
||
writing Asic2 register3, 21-4
|
||
|
||
|
||
Hardware
|
||
|
||
Reading Asic2 register1, 21-2
|
||
HeapAdjustCellSize
|
||
|
||
adjust heap cellsize service, 3-2
|
||
HeapAllocateCell
|
||
|
||
allocate heap cell service, 3-1
|
||
HeapCellSize
|
||
|
||
size of heap memory cell, 3-3
|
||
HeapFreeCell
|
||
|
||
free a heap cell service, 3-3
|
||
HeapFreeMemory
|
||
|
||
|
||
size of available heap memory, 3-3
|
||
heap memory
|
||
|
||
dynamics, 3-1
|
||
HeapReAllocateCell
|
||
|
||
re-allocate heap cell service, 3-2
|
||
HeapSetGranularity
|
||
|
||
set heap grow by parameter service, 3-3
|
||
Honda connector
|
||
|
||
power disable, 21-12
|
||
|
||
power enable, 21-12
|
||
HwBackLight
|
||
|
||
operating the backlight, 21-7
|
||
HwClearA2Control1 Bits
|
||
|
||
clearing bits in Asic2 register 1, 21-2
|
||
HwClearA2Control2Bits
|
||
|
||
clearing bits in Asic2 register 2, 21-3
|
||
HwClearA2Control3Bits
|
||
|
||
clearing bits in Asic2 register 3, 21-3
|
||
HwComboOff
|
||
|
||
switch off the combo, 21-1
|
||
HwComboOn
|
||
|
||
switch on the combo, 21-1
|
||
HwComboOnInput
|
||
|
||
|
||
switch on the combo in input mode, 21-10
|
||
|
||
|
||
HwEnableAutoBatReset
|
||
|
||
enable/disable battery reset on recharge,
|
||
|
||
21-10
|
||
HwExit
|
||
|
||
exit the program, 21-5
|
||
HwExpansionOff
|
||
|
||
Honda connector power disable, 21-12
|
||
HwExpansionOn
|
||
|
||
Honda connector power enable, 21-12
|
||
HwFreeChannel
|
||
|
||
free a channel, 21-6
|
||
HwFreeCombo
|
||
|
||
free the combo, 21-5
|
||
HwGetBackLight
|
||
|
||
get backlight control, 21-7
|
||
HwGetBatData
|
||
|
||
return battery information, 21-11
|
||
HwGetChannel
|
||
|
||
get a channel, 21-5
|
||
HwGetCombo
|
||
|
||
capture the combo, 21-5
|
||
HwGetPsuType
|
||
|
||
get power supply type, 21-6
|
||
HwGetScanCodes
|
||
|
||
scan the state of all keys, 21-8
|
||
|
||
|
||
viii
|
||
|
||
|
||
HwGetSupplyStatus
|
||
|
||
get supplies status, 21-6
|
||
HwLcdContrastDelta
|
||
|
||
change the LCD contrast, 21-6
|
||
HwNullFrame
|
||
|
||
send a serial null frame, 21-4
|
||
HwPacksOff
|
||
|
||
switch off the SSDs, 21-1
|
||
HwPacksOn
|
||
|
||
switch on the SSDs, 21-1
|
||
HwReadA2Control1
|
||
|
||
read Asic2 register 1, 21-2
|
||
HwReadA2Control2
|
||
|
||
read Asic2 register 2, 21-3
|
||
HwReadA2Control3
|
||
|
||
read Asic2 register 3, 21-4
|
||
HwReadLcdContrast
|
||
|
||
read current contrast, 21-7
|
||
HwReLogPacks
|
||
|
||
relog the SSDs, 21-11
|
||
HwResetBatteryStatus
|
||
|
||
reset the battery status, 21-10
|
||
HwReturnExpansionPortState
|
||
|
||
expansion port sense state of, 21-12
|
||
|
||
|
||
HwReturnTickCount
|
||
|
||
tick count - sense current, 21-11
|
||
HwSelectChannel
|
||
|
||
select serial channel, 21-4
|
||
HwSetA2Control1 Bits
|
||
|
||
setting bits in Asic2 register 1, 21-2
|
||
HwSetA2Control2Bits
|
||
|
||
setting bits in Asic2 register 2, 21-2
|
||
HwSetA2Control3Bits
|
||
|
||
setting bits in Asic2 register 3, 21-3
|
||
HwSetBackLight
|
||
|
||
set backlight control, 21-7
|
||
HwsSetIRPowerLevel
|
||
|
||
Set the infrared power level, 21-11
|
||
HwSupplyInfo
|
||
|
||
get additional power supply data, 21-10
|
||
HwSupplyWarnings
|
||
|
||
get supplies warnings, 21-6
|
||
HwSwitchOff
|
||
|
||
switch off service, 21-4
|
||
HwWriteA2Control1
|
||
|
||
write Asic2 register 1, 21-2
|
||
HwWriteA2Control2
|
||
|
||
write Asic2 register 2, 21-3
|
||
HwWriteA2Control3
|
||
|
||
write Asic2 register 3, 21-4
|
||
V/O
|
||
|
||
|
||
adding a handler, 8-6
|
||
adding an application handler, 8-9
|
||
a synchronous, 8-2
|
||
|
||
|
||
a synchronous without error reporting, 8-2
|
||
|
||
|
||
cancel playing back a sound file, 8-13
|
||
cancel recording sound to a file, 8-14
|
||
cancel requested reset, 8-7
|
||
|
||
cancel request for a signal from the
|
||
supervisor, 8-11
|
||
|
||
chain to root device, 8-3
|
||
|
||
chain to super class device, 8-4
|
||
closing a device, 8-8
|
||
|
||
enabling a handler, 8-6
|
||
|
||
|
||
enabling an application handler, 8-10
|
||
getting the shift states, 8-10
|
||
keyboard and mouse, 8-9
|
||
opening a device, 8-7
|
||
opening a unique filename, 9-6
|
||
play back a sound file asynchronously, 8-12
|
||
play back a sound file synchronously, 8-12
|
||
polling for completion, 8-5
|
||
query the completion of IoNextHalfSecond,
|
||
8-12
|
||
reading from a device, 8-8
|
||
record sound to a file synchronously, 8-13
|
||
record sound to file asynchronously, 8-14
|
||
removing a handler, 8-6
|
||
removing an application handler, 8-10
|
||
request a signal the supervisor, 8-11
|
||
requesting reset, 8-7
|
||
request signal on next half second, 8-11
|
||
seeking on a device, 8-8
|
||
signalling completion, 8-5
|
||
signalling completion by pid with no
|
||
re-schedule, 8-5
|
||
signalling completion by process ID, 8-5
|
||
synchronous, 8-3
|
||
wait for completion, 8-4
|
||
wait for completion no handlers, 8-10
|
||
wait for specific completion, 8-4
|
||
writing to a device, 8-8
|
||
1/O system
|
||
messaging, 5-2
|
||
image
|
||
opening to access multiplelibraries, 6-5
|
||
include file
|
||
epocdefs.inc, 1-3
|
||
|
||
|
||
indextable
|
||
|
||
database file, 20-2
|
||
infrared
|
||
|
||
set power level, 21-11
|
||
initialize
|
||
|
||
the message system, 5-2
|
||
install
|
||
|
||
adevice driver, 7-2
|
||
int
|
||
|
||
by number, 19-12
|
||
integer
|
||
|
||
|
||
comparing longs, 13-1
|
||
comparing unsigned longs, 13-2
|
||
conversion to a buffer, 12-1
|
||
divide longs, 13-1
|
||
divide unsigned longs, 13-2
|
||
multiply longs, 13-1
|
||
multiply unsigned longs, 13-2
|
||
of a float, 15-2
|
||
unsigned conversion to a buffer, 12-1
|
||
unsigned long random number, 13-3
|
||
inter process communications
|
||
messaging, 5-1
|
||
interrupt
|
||
calling conventions, 1-1
|
||
capturing, 19-9
|
||
multi service, 1-1
|
||
releasing, 19-10
|
||
single service, 1-1
|
||
|
||
|
||
INDEX
|
||
|
||
|
||
interrupts
|
||
|
||
alphabetic listing, A-2
|
||
|
||
alphabetic listing - extra functions, A-27
|
||
|
||
function numbers, A-1
|
||
|
||
function numbers - extra functions, A-27
|
||
|
||
numerical listing, A-14
|
||
|
||
numerical listing - extra functions, A-27
|
||
|
||
using single or multi, A-1
|
||
ToAddHandler
|
||
|
||
I/O add handler service, 8-6
|
||
IoApplicationAddHandler
|
||
|
||
I/O add handler service, 8-9
|
||
ToAsynchronous
|
||
|
||
I/O asynchronous service, 8-2
|
||
ToAsynchronousNoError
|
||
|
||
I/O asynchronous without error reporting
|
||
|
||
service, 8-2
|
||
ToClose
|
||
|
||
I/O close a device service, 8-8
|
||
IoEnableApplicationHandler
|
||
|
||
1/O enable/disable application handler
|
||
|
||
service, 8-10
|
||
IoEnableHandler
|
||
|
||
I/O enable/disable handler, 8-6
|
||
IoKeyAndMouseWith Wait
|
||
|
||
get keyboard and mouse events service, 8-9
|
||
IoNextHalfSecond
|
||
|
||
request completion on the next half second,
|
||
|
||
8-11
|
||
ToNextHalfSecondStatus
|
||
|
||
query the completion of Io Next Half
|
||
|
||
Second, 8-12
|
||
IoOpen
|
||
|
||
I/O open a device service, 8-7
|
||
IoPlaySoundA
|
||
|
||
play back a sound file asynchronously, 8-12
|
||
IoPlaySoundCancel
|
||
|
||
cancel playing back a sound file, 8-13
|
||
ToPlaySoundW
|
||
|
||
play back a sound file synchronously, 8-12
|
||
ToRead
|
||
|
||
I/O read from a device service, 8-8
|
||
IoRecordSoundA
|
||
|
||
record sound to a file asynchronously, 8-14
|
||
IoRecordSoundCancel
|
||
|
||
cancel recording sound to a file, 8-14
|
||
IoRecordSoundW
|
||
|
||
record sound to a file synchronously, 8-13
|
||
ToRemoveApplicationHandler
|
||
|
||
I/O remove application handler service,
|
||
|
||
8-10
|
||
ToRequestReset
|
||
|
||
I/O request reset service, 8-7
|
||
IoRequestResetCancel
|
||
|
||
I/O cancel requested reset service, 8-7
|
||
ToRoot
|
||
|
||
I/O chain to root device service, 8-3
|
||
IoSeek
|
||
|
||
I/O seek to a new position, 8-8
|
||
ToShiftStates
|
||
|
||
I/O get shift states service, 8-10
|
||
ToSignal
|
||
|
||
I/O signal completion service, 8-5
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
IoSignalByPid
|
||
I/O signal completion by process ID service,
|
||
8-5
|
||
IoSignalByPidNoReSched
|
||
I/O signal completion by pid with no
|
||
reschedule service, 8-5
|
||
IoSignalKillAsynchronous
|
||
request signal from supervisor service, 8-11
|
||
IoSignalKillCancel
|
||
cancel signal kill from supervisor service,
|
||
8-11
|
||
IoSuper
|
||
I/O chain to super class device service, 8-4
|
||
ToWaitForSignal
|
||
I/O wait for completion service, 8-4
|
||
IoWaitForSignalNoHandler
|
||
1/O wait for completion with no handlers
|
||
service, 8-10
|
||
ToWaitForStatus
|
||
1/O wait for specific request to complete
|
||
service, 8-4
|
||
IoWithWait
|
||
I/O with wait service, 8-3
|
||
IoWrite
|
||
I/O write to a device service, 8-8
|
||
IoYield
|
||
I/O update status words service, 8-5
|
||
justify
|
||
a buffer, 17-4
|
||
keyboard
|
||
reading, 8-9
|
||
scanning state of all keys, 21-8
|
||
Keyboard
|
||
scan codes HC alphabetic, 21-8
|
||
scan codes HC numeric, 21-9
|
||
scan codes Series 3a, 21-8
|
||
scan codes Workabout, 21-9
|
||
kill
|
||
aprocess, 10-6
|
||
L$X
|
||
environment variable, B-3
|
||
languagecode
|
||
getting, 19-10
|
||
LCD
|
||
getting the type, 19-2
|
||
length
|
||
of a string, 18-4
|
||
LibCopy
|
||
copy data from a categories segment, 6-7
|
||
LibCreate
|
||
creating an object by number service, 6-3
|
||
LibCreateByHandle
|
||
creating an object by handle service, 6-3
|
||
LibDestroy
|
||
destroying an object service, 6-4
|
||
LibEnter
|
||
enter a control region, 6-7
|
||
LibEnterSend
|
||
send message with an enclosing Lib Enter,
|
||
6-5
|
||
LibExactSend
|
||
send message to a known class, 6-5
|
||
LibFind
|
||
dynamic library find service, 6-2
|
||
|
||
|
||
LibHandle
|
||
|
||
dynamic library get handle service, 6-3
|
||
LibLeave
|
||
|
||
exit from a control region, 6-7
|
||
LibLink
|
||
|
||
dynamic library link service, 6-2
|
||
LibLoad
|
||
|
||
dynamic library load service, 6-1
|
||
LibLoadFile
|
||
|
||
dynamic library load from multiple library
|
||
|
||
file, 6-6
|
||
LibOpen
|
||
|
||
open an image file containing multiple
|
||
|
||
libraries, 6-5
|
||
library
|
||
|
||
opening in an image, 6-5
|
||
library names
|
||
|
||
dynamic, 6-1
|
||
LibReClass()
|
||
|
||
reclassing an object by number, 6-6
|
||
LibReClassByHandle
|
||
|
||
reclassing an object by handle, 6-7
|
||
LibSend
|
||
|
||
send message to an object service, 6-4
|
||
LibSendExit
|
||
|
||
exit from a method, 6-8
|
||
LibSuperSend
|
||
|
||
send message to the objects superclass
|
||
|
||
service, 6-4
|
||
LibUnLoad
|
||
|
||
dynamic library unload service, 6-2
|
||
link
|
||
|
||
a dynamic library, 6-2
|
||
load
|
||
|
||
a dynamic library, 6-1
|
||
|
||
a logical device driver, 7-3
|
||
|
||
a multiple dynamic library, 6-6
|
||
|
||
a physical device driver, 7-3
|
||
locate
|
||
|
||
a character in a buffer, 17-2
|
||
|
||
a character in a buffer folded, 17-2
|
||
|
||
a character in a string, 18-3
|
||
|
||
a character in a string folded, 18-3
|
||
|
||
a character in a string in reverse, 18-3
|
||
|
||
a character in a string in reverse folded,
|
||
|
||
18-3
|
||
lock
|
||
|
||
a memory segment, 2-5
|
||
logarithm
|
||
|
||
float function, 15-2
|
||
LongIntCompare
|
||
|
||
compare long integers service, 13-1
|
||
LongIntDivide
|
||
|
||
long integer divide service, 13-1
|
||
longinteger
|
||
|
||
conversion to a buffer, 12-2
|
||
|
||
unsigned conversion to a buffer, 12-1
|
||
LongIntMultiply
|
||
|
||
long integer multiply service, 13-1
|
||
LongToFloat
|
||
|
||
convert signed long to float service, 14-3
|
||
LongUnsignedIntCompare
|
||
|
||
compare unsigned long integers service,
|
||
|
||
13-2
|
||
|
||
|
||
LongUnsignedIntDivide
|
||
unsigned long integer divide service, 13-2
|
||
LongUnsignedIntMultiply
|
||
long unsigned integer multiply service, 13-2
|
||
LongUnsignedIntRandom
|
||
unsigned long integer random number
|
||
service, 13-3
|
||
M$0OMO
|
||
environment variable, B-6
|
||
M$IMI
|
||
environment variable, B-6
|
||
M$2M2
|
||
environment variable, B-6
|
||
M$3M3
|
||
environment variable, B-6
|
||
M$4M4
|
||
environment variable, B-6
|
||
M$5M5
|
||
environment variable, B-6
|
||
M$6M6
|
||
environment variable, B-6
|
||
M$7M7
|
||
environment variable, B-6
|
||
M$8M8
|
||
environment variable, B-6
|
||
M$9M9
|
||
environment variable, B-6
|
||
M$V
|
||
environment variable, B-3
|
||
MAIL$ST
|
||
environment variable, B-8
|
||
mark
|
||
resetting the auto switch off timer, 19-15
|
||
match
|
||
a wildcard buffer, 17-3
|
||
a wildcard buffer folded, 17-4
|
||
a wildcard string, 18-2
|
||
a wildcard string folded, 18-2
|
||
media
|
||
read a local device directly, 9-9
|
||
read information of a local device, 9-9
|
||
memory
|
||
adjust heap memory size, 3-2
|
||
adjust the size of a memory segment, 2-6
|
||
allocate heap memory, 3-1
|
||
close a memory segment, 2-4
|
||
copy from a memory segment, 2-7
|
||
copy to a memory segment, 2-6
|
||
create a memory segment, 2-3
|
||
delete a memory segment, 2-4
|
||
find all segments, 2-6
|
||
free heap memory, 3-3
|
||
heap memory dynamics, 3-1
|
||
lock a memory segment, 2-5
|
||
open a memory segment, 2-4
|
||
paragraphs size of, 2-1
|
||
re-allocate heap memory, 3-2
|
||
segment directly accessing, 2-1
|
||
segment locking, 2-1
|
||
segment names, 2-1
|
||
setting the heap granularity, 3-3
|
||
size of available heap memory, 3-3
|
||
size of available segmented memory, 2-2
|
||
|
||
|
||
INDEX
|
||
|
||
|
||
size of addressable system ram, 19-6
|
||
size of a heap cell, 3-3
|
||
size of a memory segment, 2-5
|
||
size of RAM disk, 2-7
|
||
unlock a memory segment, 2-5
|
||
message
|
||
enter send, 6-5
|
||
sending to a known class, 6-5
|
||
sending to an object , 6-4
|
||
sending to an objects superclass, 6-4
|
||
message reception
|
||
order of, 5-1
|
||
message system
|
||
I/O system, 5-2
|
||
messages
|
||
asynchronous reception, 5-2
|
||
cancelling receive, 5-3
|
||
cancel request for a signal from the
|
||
supervisor, 5-5
|
||
cancel request for a signal from the
|
||
supervisor by type, 5-6
|
||
freeing, 5-4
|
||
initializing, 5-2
|
||
request a signal the supervisor, 5-5
|
||
sending, 5-3
|
||
sending and getting a reply asynchronously,
|
||
5-4
|
||
sending and waiting for a reply, 5-4
|
||
synchronous reception, 5-3
|
||
messaging
|
||
inter process communication, 5-1
|
||
MessFree
|
||
free message service, 5-4
|
||
MessInit
|
||
initialize messages service, 5-2
|
||
MessReceiveAsynchronous
|
||
receive message asynchronously, 5-2
|
||
MessReceiveCancel
|
||
cancel queued message receive service, 5-3
|
||
MessReceiveWith Wait
|
||
synchronous message reception, 5-3
|
||
MessSend
|
||
send message service, 5-3
|
||
MessSendReceiveAsynchronous
|
||
send message and get reply asynchronously
|
||
service, 5-4
|
||
MessSendReceiveWith Wait
|
||
send message and wait for reply service, 5-4
|
||
MessSignal
|
||
request signal from supervisor service, 5-5
|
||
MessSignalCancelX
|
||
cancel requested signal from Supervisor by
|
||
type service, 5-6
|
||
method
|
||
returning from a method, 6-8, 7-1
|
||
modulo
|
||
float function, 15-3
|
||
month
|
||
abbreviated name of, 11-5
|
||
name of, 11-4
|
||
number of days, 11-4
|
||
mouse
|
||
reading, 8-9
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
multiply
|
||
two floats, 14-1
|
||
two long integers, 13-1
|
||
two unsigned long integers, 13-2
|
||
name
|
||
validation, 18-5
|
||
names
|
||
device, 7-1
|
||
memory segments, 2-1
|
||
of processes by ID, 10-7
|
||
naturallogarithm
|
||
float function, 15-2
|
||
negate
|
||
floats, 14-2
|
||
notify
|
||
by error number, 19-5
|
||
by text messages, 19-4
|
||
getting state, 19-8
|
||
hooking the interface, 19-5
|
||
setting state, 19-9
|
||
unhooking the interface, 19-6
|
||
number
|
||
getting suffixes text, 19-11
|
||
of week, 11-5
|
||
number of records
|
||
database file, 20-3
|
||
object
|
||
creating by handle, 6-3
|
||
creating by number, 6-3
|
||
destroying, 6-4
|
||
enter a sent message, 6-5
|
||
reclassing by handle, 6-7
|
||
reclassing by number, 6-6
|
||
sending a message, 6-4
|
||
sending a message to a known class, 6-5
|
||
sending a super class message, 6-4
|
||
on events
|
||
receiving, 19-16
|
||
open
|
||
a database file, 20-3
|
||
afile, 8-7
|
||
a memory segment, 2-4
|
||
a multi library file, 6-5
|
||
an I/O device, 8-7
|
||
a physical device driver, 7-1
|
||
a unique filename, 9-6
|
||
operating system
|
||
data segment getting, 19-2
|
||
operating system
|
||
getting the data, 19-3
|
||
operating system text
|
||
getting, 19-8
|
||
owner
|
||
getting, 10-3
|
||
P$D
|
||
environment variable, B-4
|
||
P$F
|
||
environment variable, B-4
|
||
P$IP
|
||
environment variable, B-5
|
||
P$M
|
||
environment variable, B-5
|
||
P$P
|
||
environment variable, B-5
|
||
|
||
|
||
P$PP
|
||
|
||
environment variable, B-5
|
||
P$PX
|
||
|
||
environment variable, B-5
|
||
P$S
|
||
|
||
environment variable, B-4
|
||
P$SP
|
||
|
||
environment variable, B-5
|
||
P$Z
|
||
|
||
environment variable, B-5
|
||
panic
|
||
|
||
a process, 10-7
|
||
|
||
the current process, 10-8
|
||
paragraphs
|
||
|
||
size of memory segments, 2-1
|
||
parse
|
||
|
||
a filename, 9-2
|
||
|
||
generic filename, 19-3
|
||
path
|
||
|
||
get current, 9-2
|
||
|
||
get current by ID, 9-7
|
||
|
||
set current, 9-3
|
||
|
||
set initial, 9-8
|
||
|
||
test available, 9-3
|
||
PDD
|
||
|
||
physical device driver, 7-1
|
||
piezo
|
||
|
||
sound, 19-7
|
||
pm
|
||
|
||
getting the pm text, 19-11
|
||
polling
|
||
|
||
I/O status words, 8-5
|
||
power
|
||
|
||
float function, 15-3
|
||
power supply
|
||
|
||
getting additional data, 21-10
|
||
priority
|
||
|
||
getting, 10-3
|
||
|
||
setting, 10-3
|
||
ProcCopyFromByld
|
||
|
||
copy data from a process service, 10-8
|
||
ProcCopyToByld
|
||
|
||
copy data to a process service, 10-9
|
||
ProcCreate
|
||
|
||
create process service, 10-4
|
||
ProcCreateTask
|
||
|
||
create task service, 10-4
|
||
processes
|
||
|
||
controlling, 10-2
|
||
|
||
copying data from by ID, 10-8
|
||
|
||
copying data to by ID, 10-9
|
||
|
||
copying strings from by ID, 10-9
|
||
|
||
creating, 10-4
|
||
|
||
find all, 10-7
|
||
|
||
get an ID by name, 10-3
|
||
|
||
get name by ID, 10-7
|
||
|
||
get owner, 10-3
|
||
|
||
get priority, 10-3
|
||
|
||
get the current process ID, 10-2
|
||
|
||
ID and process table, 10-2
|
||
|
||
IDs and names, 10-1
|
||
|
||
killing, 10-6
|
||
|
||
panicking, 10-7
|
||
|
||
panicking current, 10-8
|
||
|
||
|
||
renaming, 10-7
|
||
|
||
resuming, 10-5
|
||
|
||
scheduling, 10-1
|
||
|
||
setpriority, 10-3
|
||
|
||
suspending, 10-5
|
||
|
||
terminate and kill, 10-2
|
||
|
||
terminating, 10-6
|
||
|
||
termination registration, 10-6
|
||
|
||
watching all exits, 10-8
|
||
ProcFind
|
||
|
||
find all processes service, 10-7
|
||
ProcGetOwner
|
||
|
||
get the PID of the owning process service,
|
||
|
||
10-3
|
||
ProcGetPriority
|
||
|
||
get process priority service, 10-3
|
||
ProclId
|
||
|
||
get current process ID service, 10-2
|
||
ProcIdByName
|
||
|
||
get process ID by name service, 10-3
|
||
ProcIndStringCopyFromByld
|
||
|
||
copy a string from a process service, 10-9
|
||
ProcKill
|
||
|
||
kill process service, 10-6
|
||
ProcNameByld
|
||
|
||
name of a process by ID service, 10-7
|
||
ProcOnTerminate
|
||
|
||
register termination service, 10-6
|
||
ProcPanic
|
||
|
||
panic current process service, 10-8
|
||
ProcPanicByld
|
||
|
||
panic process service, 10-7
|
||
ProcRename
|
||
|
||
rename a process service, 10-7
|
||
ProcResume
|
||
|
||
resume process service, 10-5
|
||
ProcSetPriority
|
||
|
||
set process priority service, 10-3
|
||
ProcSuspend
|
||
|
||
suspend process service, 10-5
|
||
ProcTerminate
|
||
|
||
terminate process service, 10-6
|
||
Proc WatchAIIExits
|
||
|
||
monitor exits service, 10-8
|
||
query
|
||
|
||
the number of units, 7-4
|
||
RAM disk
|
||
|
||
return size of, 2-7
|
||
random
|
||
|
||
float function, 15-3
|
||
|
||
unsigned long integer, 13-3
|
||
read
|
||
|
||
a DBF descriptive record, 20-7
|
||
|
||
a DBF extended header, 20-7
|
||
|
||
an absolute DBF record, 20-8
|
||
|
||
from a file, 8-8
|
||
|
||
from an I/O device, 8-8
|
||
|
||
the first DBF record, 20-10
|
||
|
||
the last DBF record, 20-10
|
||
|
||
the next DBF record, 20-9
|
||
|
||
the previous DBF record, 20-9
|
||
reclass
|
||
|
||
an object by handle, 6-7
|
||
|
||
an object by number, 6-6
|
||
|
||
|
||
INDEX
|
||
|
||
|
||
remove
|
||
|
||
a device driver, 7-4
|
||
rename
|
||
|
||
a file or directory, 9-4
|
||
|
||
a process, 10-7
|
||
reset
|
||
|
||
I/O cancel request, 8-7
|
||
|
||
I/O Request, 8-7
|
||
reset system
|
||
|
||
getting the reason for, 19-2
|
||
resume
|
||
|
||
a process, 10-5
|
||
re-vectors
|
||
|
||
capturing, 19-9
|
||
|
||
releasing, 19-10
|
||
S$SVER
|
||
|
||
environment variable, B-9
|
||
Scan codes
|
||
|
||
HC alphabetic, 21-8
|
||
|
||
HC numeric, 21-9
|
||
|
||
Series 3a, 21-8
|
||
|
||
Workabout, 21-9
|
||
seek
|
||
|
||
a file to a new position, 8-8
|
||
SegAdjustSize
|
||
|
||
adjust the size of a memory segment, 2-6
|
||
SegClose
|
||
|
||
close memory segment service, 2-4
|
||
SegCloseLockedOrDevice
|
||
|
||
close a locked or device segment, 2-5
|
||
SegCopyFrom
|
||
|
||
copy from memory segment service, 2-7
|
||
SegCopyTo
|
||
|
||
copyto memory segment service, 2-6
|
||
SegCreate
|
||
|
||
create memory segment service, 2-3
|
||
SegDelete
|
||
|
||
delete memory segment service, 2-4
|
||
SegFind
|
||
|
||
find all segments service, 2-6
|
||
SegFreeMemory
|
||
|
||
size of available segmented memory, 2-2
|
||
SegLock
|
||
|
||
lock memory segment service, 2-5
|
||
segment
|
||
|
||
change size of a memory segment, 2-6
|
||
|
||
close a memory segment, 2-4
|
||
|
||
close locked or device, 2-5
|
||
|
||
copy from a memory segment, 2-7
|
||
|
||
copy to a memory segment, 2-6
|
||
|
||
create a memory segment, 2-3
|
||
|
||
delete a memory segment, 2-4
|
||
|
||
directly accessing, 2-1
|
||
|
||
find all segments, 2-6
|
||
|
||
lock a memory segment, 2-5
|
||
|
||
locking, 2-1
|
||
|
||
names, 2-1
|
||
|
||
size of available segmented memory, 2-2
|
||
|
||
size of a memory segment, 2-5
|
||
|
||
unlock a memory segment, 2-5
|
||
SegOpen
|
||
|
||
open memory segment service, 2-4
|
||
SegRamDiskUsed
|
||
|
||
size of RAM disk service, 2-7
|
||
|
||
|
||
xiii
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
SegSize
|
||
|
||
size of memory segment service, 2-5
|
||
SegUnLock
|
||
|
||
unlock memory segment service, 2-5
|
||
semaphores
|
||
|
||
creating, 4-1
|
||
|
||
deleting, 4-1
|
||
|
||
signalling once without re-schedule, 4-2
|
||
|
||
signalling more than once, 4-2
|
||
|
||
signalling once, 4-2
|
||
|
||
waiting, 4-1
|
||
SemCreate
|
||
|
||
create semaphore service, 4-1
|
||
SemDelete
|
||
|
||
delete semaphore, 4-1
|
||
SemSignal
|
||
|
||
signal once service, 4-2
|
||
SemSignalMany
|
||
|
||
signal many service, 4-2
|
||
SemSignalOnceNoResched
|
||
|
||
signal once with no re-schedule, 4-2
|
||
SemWait
|
||
|
||
wait on semaphore service, 4-1
|
||
send
|
||
|
||
a message, 5-3
|
||
|
||
and get reply asynchronously, 5-4
|
||
|
||
and wait for reply, 5-4
|
||
sense
|
||
|
||
an absolute DBF record, 20-9
|
||
|
||
the current DBF record number, 20-13
|
||
shiftstates
|
||
|
||
Getting, 8-10
|
||
signal
|
||
|
||
a semaphore once without re-schedule, 4-2
|
||
|
||
a semaphore more than once, 4-2
|
||
|
||
a semaphore once, 4-2
|
||
|
||
from the supervisor, 5-5
|
||
|
||
from the supervisor I/O , 8-11
|
||
|
||
1/O completion, 8-5
|
||
|
||
1/O completion by pid with no re-schedule,
|
||
|
||
8-5
|
||
|
||
1/O completion by process ID, 8-5
|
||
SignedIntToFloat
|
||
|
||
convert signed integer to float service, 14-3
|
||
sine
|
||
|
||
float function, 15-3
|
||
size
|
||
|
||
a database file, 20-6
|
||
|
||
of addressable systemRAM, 19-6
|
||
|
||
of a memory segment, 2-5
|
||
|
||
of a string, 18-4
|
||
|
||
of systemram, 19-6
|
||
sleep
|
||
|
||
a process in system clock ticks, 11-2
|
||
|
||
a process in tenths of a second, 11-2
|
||
|
||
a process till a given time, 11-1
|
||
sound
|
||
|
||
cancel playing back file, 8-13
|
||
|
||
cancel recording to file, 8-14
|
||
|
||
getting the flags, 19-7
|
||
|
||
play back file (partial) asynchronously, 8-15
|
||
|
||
play back file asynchronously, 8-12
|
||
|
||
play back file synchronously, 8-12
|
||
|
||
record to file asynchronously, 8-14
|
||
|
||
|
||
record to file synchronously, 8-13
|
||
setting the flags, 19-7
|
||
using the piezo, 19-7
|
||
Sound
|
||
Pitch calculating, 19-7
|
||
Sound file names
|
||
Series 3a ROM, 8-12
|
||
sound files
|
||
format .wve files, 8-1
|
||
SP$DRV
|
||
environment variable, B-7
|
||
SP$OPT
|
||
environment variable, B-7
|
||
square root
|
||
float function, 15-4
|
||
SSD
|
||
relog, 21-11
|
||
status
|
||
of a device, 9-5
|
||
of a file or directory, 9-4
|
||
of a file system, 9-5
|
||
string
|
||
capitalising, 18-1
|
||
comparing, 18-1
|
||
comparing folded, 18-2
|
||
conversion to float, 12-5
|
||
conversion to folded, 18-1
|
||
conversion to integer, 12-3
|
||
conversion to long integer, 12-3
|
||
conversion to unsigned integer, 12-2
|
||
conversion to unsigned long integer, 12-2
|
||
copying, 18-1
|
||
copying folded, 18-1
|
||
length, 18-4
|
||
locating, 18-3
|
||
locating folded, 18-3
|
||
locating in reverse, 18-3
|
||
locating in reverse folded, 18-3
|
||
substring, 18-4
|
||
substring folded, 18-4
|
||
validate, 18-5
|
||
wildcard match, 18-2
|
||
wildcard match folded, 18-2
|
||
StringCapitalise
|
||
convert a string to have the first letter
|
||
uppercase and the rest lowercase service,
|
||
18-1
|
||
StringCompare
|
||
comparestrings service, 18-1
|
||
StringCompareFolded
|
||
compare strings folded service, 18-2
|
||
StringConvertToFolded
|
||
convert string to folded service, 18-1
|
||
StringCopy
|
||
copy string service, 18-1
|
||
StringCopyFolded
|
||
copy string folded service, 18-1
|
||
StringLength
|
||
length of string service, 18-4
|
||
StringLocate
|
||
locate a character in string service, 18-3
|
||
StringLocateFolded
|
||
locate a character in string folded service,
|
||
18-3
|
||
|
||
|
||
StringLocateInReverse
|
||
locate a character in a string in reverse
|
||
service, 18-3
|
||
StringLocateInReverseFolded
|
||
locate a character in string in reverse folded
|
||
service, 18-3
|
||
StringMatch
|
||
match a wild card string service, 18-2
|
||
StringMatchFolded
|
||
match a wild card string folded service,
|
||
18-2
|
||
StringSubString
|
||
find a substring in a string service, 18-4
|
||
StringSubStringFolded
|
||
find a substring in a string folded service,
|
||
18-4
|
||
String ValidateName
|
||
validate a system name, 18-5
|
||
structures
|
||
SupplyInfoEnt, 21-11
|
||
sub- buffer
|
||
in a buffer, 17-3
|
||
in a buffer folded, 17-3
|
||
substring
|
||
in a string, 18-4
|
||
in a string folded, 18-4
|
||
subtract
|
||
floats, 14-2
|
||
suffix
|
||
getting text, 19-11
|
||
SupplyInfoEnt
|
||
Data structure, 21-10
|
||
structure, 21-11
|
||
suspend
|
||
a process, 10-5
|
||
swap
|
||
two buffers, 17-1
|
||
switching off
|
||
disable/enable if mains present, 19-16
|
||
get state if mains present, 19-16
|
||
switching on
|
||
reporting, 19-16
|
||
synchronous
|
||
V/O , 8-3
|
||
message reception, 5-3
|
||
tangent
|
||
float function, 15-4
|
||
tasks
|
||
creating, 10-4
|
||
terminate
|
||
a process, 10-6
|
||
termination
|
||
registration, 10-6
|
||
text
|
||
getting operating system, 19-8
|
||
tick count
|
||
sense current, 21-11
|
||
tickle
|
||
resetting the autoswitch off timer, 19-15
|
||
TimDateToDaySeconds
|
||
convert date to day seconds service, 11-3
|
||
TimDayOfWeek
|
||
day of week service, 11-4
|
||
|
||
|
||
INDEX
|
||
|
||
|
||
TimDaySecondsToDate
|
||
convert day seconds to date service, 11-3
|
||
TimDaySecondsToSystemTime
|
||
convert day seconds to system time service,
|
||
11-3
|
||
TimDaysInMonth
|
||
days in month service, 11-4
|
||
time
|
||
convert date to day seconds, 11-3
|
||
convert day seconds to date, 11-3
|
||
convert day seconds to system time, 11-3
|
||
convert the system time to day seconds,
|
||
11-3
|
||
getting the system time, 11-2
|
||
setting the system time, 11-2
|
||
sleeping for system clock ticks, 11-2
|
||
sleeping for tenths of a second, 11-2
|
||
waiting till a given time, 11-1
|
||
|
||
|
||
times
|
||
|
||
absolute and relative, 11-1
|
||
TimGetSystemTime
|
||
|
||
get the system time service, 11-2
|
||
TimNameOfDay
|
||
|
||
name of day service, 11-4
|
||
TimNameOfDayAbb
|
||
|
||
abbreviated name of day service, 11-5
|
||
TimNameOfMonth
|
||
|
||
name of month service, 11-4
|
||
TimNameOfMonthAbb
|
||
|
||
abbreviated name of month service, 11-5
|
||
TimSetSystemTime
|
||
|
||
set the system time service, 11-2
|
||
TimSleepForTenths
|
||
|
||
sleep for tenths of a second service, 11-2
|
||
TimSleepForTicks
|
||
|
||
|
||
sleep for system clock ticks service, 11-2
|
||
TimSystemTimeToDaySeconds
|
||
convert the system time to day seconds
|
||
service, 11-3
|
||
TimWaitAbsolute
|
||
wait till a given time service, 11-1
|
||
TimWeekNumber
|
||
week number service, 11-5
|
||
trash
|
||
a DBF buffer, 20-4
|
||
TW$S
|
||
environment variable, B-6
|
||
unload
|
||
a dynamic library, 6-2
|
||
unlock
|
||
a memory segment, 2-5
|
||
UnsignedIntToFloat
|
||
convert unsigned integer to float service,
|
||
14-3
|
||
update
|
||
a DBF record, 20-11
|
||
validate
|
||
a string, 18-5
|
||
vectors
|
||
calling, 7-5
|
||
version
|
||
of the ROM, 19-1
|
||
operating system, 19-1
|
||
the DBF version number, 20-8
|
||
|
||
|
||
EPOC O/S SYSTEM SERVICES
|
||
|
||
|
||
W$C
|
||
environment variable, B-7
|
||
W$R
|
||
environment variable, B-7
|
||
wait
|
||
an I/O completion, 8-4
|
||
an I/O completion no handlers, 8-10
|
||
a process till a given time, 11-1
|
||
a specific I/O completion, 8-4
|
||
on a semaphore, 4-1
|
||
watch
|
||
all exits, 10-8
|
||
week
|
||
number, 11-5
|
||
wildcard
|
||
buffer match, 17-3
|
||
buffer match folded, 17-4
|
||
string match, 18-2
|
||
string match folded, 18-2
|
||
WP$SPEL
|
||
environment variable, B-7
|
||
WPS$THES
|
||
environment variable, B-7
|
||
write
|
||
a DBF descriptive record, 20-8
|
||
a DBF extended header, 20-7
|
||
to a file, 8-8
|
||
to an I/O device, 8-8
|
||
WVE sound files
|
||
format, 8-1
|
||
|
||
|